@tamagui/core 1.2.4 → 1.2.6

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 (606) hide show
  1. package/README.md +4 -0
  2. package/dist/cjs/hooks/usePlatformMethods.js +48 -0
  3. package/dist/cjs/hooks/usePlatformMethods.js.map +7 -0
  4. package/dist/cjs/index.js +151 -75
  5. package/dist/cjs/index.js.map +3 -3
  6. package/dist/cjs/{types.js → reactNativeTypes.js} +3 -3
  7. package/dist/cjs/reactNativeTypes.js.map +7 -0
  8. package/dist/esm/hooks/usePlatformMethods.js +24 -0
  9. package/dist/esm/hooks/usePlatformMethods.js.map +7 -0
  10. package/dist/esm/index.js +156 -71
  11. package/dist/esm/index.js.map +2 -2
  12. package/dist/esm/reactNativeTypes.js +1 -0
  13. package/dist/esm/{types-rnw.js.map → reactNativeTypes.js.map} +0 -0
  14. package/package.json +5 -11
  15. package/src/hooks/usePlatformMethods.ts +26 -0
  16. package/src/index.ts +214 -71
  17. package/src/reactNativeTypes.ts +104 -0
  18. package/types/hooks/usePlatformMethods.d.ts +3 -0
  19. package/types/hooks/usePlatformMethods.d.ts.map +1 -0
  20. package/types/index.d.ts +6 -54
  21. package/types/index.d.ts.map +1 -1
  22. package/types/reactNativeTypes.d.ts +26 -0
  23. package/types/reactNativeTypes.d.ts.map +1 -0
  24. package/dist/cjs/Tamagui.js +0 -77
  25. package/dist/cjs/Tamagui.js.map +0 -7
  26. package/dist/cjs/addTheme.js +0 -78
  27. package/dist/cjs/addTheme.js.map +0 -7
  28. package/dist/cjs/config.js +0 -91
  29. package/dist/cjs/config.js.map +0 -7
  30. package/dist/cjs/constants/constants.js +0 -49
  31. package/dist/cjs/constants/constants.js.map +0 -7
  32. package/dist/cjs/constants/isDevTools.js +0 -37
  33. package/dist/cjs/constants/isDevTools.js.map +0 -7
  34. package/dist/cjs/contexts/ButtonNestingContext.js +0 -30
  35. package/dist/cjs/contexts/ButtonNestingContext.js.map +0 -7
  36. package/dist/cjs/contexts/FontLanguageContext.js +0 -30
  37. package/dist/cjs/contexts/FontLanguageContext.js.map +0 -7
  38. package/dist/cjs/contexts/TextAncestorContext.js +0 -30
  39. package/dist/cjs/contexts/TextAncestorContext.js.map +0 -7
  40. package/dist/cjs/createComponent.js +0 -993
  41. package/dist/cjs/createComponent.js.map +0 -7
  42. package/dist/cjs/createFont.js +0 -69
  43. package/dist/cjs/createFont.js.map +0 -7
  44. package/dist/cjs/createFont.web.test.js +0 -125
  45. package/dist/cjs/createFont.web.test.js.map +0 -7
  46. package/dist/cjs/createShorthands.js +0 -31
  47. package/dist/cjs/createShorthands.js.map +0 -7
  48. package/dist/cjs/createTamagui.js +0 -206
  49. package/dist/cjs/createTamagui.js.map +0 -7
  50. package/dist/cjs/createTheme.js +0 -31
  51. package/dist/cjs/createTheme.js.map +0 -7
  52. package/dist/cjs/createTokens.js +0 -39
  53. package/dist/cjs/createTokens.js.map +0 -7
  54. package/dist/cjs/createTokens.web.test.js +0 -28
  55. package/dist/cjs/createTokens.web.test.js.map +0 -7
  56. package/dist/cjs/createVariable.js +0 -111
  57. package/dist/cjs/createVariable.js.map +0 -7
  58. package/dist/cjs/createVariable.web.test.js +0 -7
  59. package/dist/cjs/createVariable.web.test.js.map +0 -7
  60. package/dist/cjs/createVariables.js +0 -60
  61. package/dist/cjs/createVariables.js.map +0 -7
  62. package/dist/cjs/helpers/RNComponents.js +0 -40
  63. package/dist/cjs/helpers/RNComponents.js.map +0 -7
  64. package/dist/cjs/helpers/ThemeManager.js +0 -234
  65. package/dist/cjs/helpers/ThemeManager.js.map +0 -7
  66. package/dist/cjs/helpers/ThemeManager.test.js +0 -465
  67. package/dist/cjs/helpers/ThemeManager.test.js.map +0 -7
  68. package/dist/cjs/helpers/ThemeManagerContext.js +0 -30
  69. package/dist/cjs/helpers/ThemeManagerContext.js.map +0 -7
  70. package/dist/cjs/helpers/createMediaStyle.js +0 -67
  71. package/dist/cjs/helpers/createMediaStyle.js.map +0 -7
  72. package/dist/cjs/helpers/createPropMapper.js +0 -423
  73. package/dist/cjs/helpers/createPropMapper.js.map +0 -7
  74. package/dist/cjs/helpers/createProxy.js +0 -43
  75. package/dist/cjs/helpers/createProxy.js.map +0 -7
  76. package/dist/cjs/helpers/expandStyle.js +0 -95
  77. package/dist/cjs/helpers/expandStyle.js.map +0 -7
  78. package/dist/cjs/helpers/expandStyles.js +0 -116
  79. package/dist/cjs/helpers/expandStyles.js.map +0 -7
  80. package/dist/cjs/helpers/extendStaticConfig.js +0 -91
  81. package/dist/cjs/helpers/extendStaticConfig.js.map +0 -7
  82. package/dist/cjs/helpers/fixNativeShadow.js +0 -30
  83. package/dist/cjs/helpers/fixNativeShadow.js.map +0 -7
  84. package/dist/cjs/helpers/getAnimationDriver.js +0 -32
  85. package/dist/cjs/helpers/getAnimationDriver.js.map +0 -7
  86. package/dist/cjs/helpers/getExpandedShorthands.js +0 -40
  87. package/dist/cjs/helpers/getExpandedShorthands.js.map +0 -7
  88. package/dist/cjs/helpers/getFontLanguage.js +0 -29
  89. package/dist/cjs/helpers/getFontLanguage.js.map +0 -7
  90. package/dist/cjs/helpers/getSplitStyles.js +0 -848
  91. package/dist/cjs/helpers/getSplitStyles.js.map +0 -7
  92. package/dist/cjs/helpers/getStylesAtomic.js +0 -226
  93. package/dist/cjs/helpers/getStylesAtomic.js.map +0 -7
  94. package/dist/cjs/helpers/getStylesAtomic.native.js +0 -38
  95. package/dist/cjs/helpers/getStylesAtomic.native.js.map +0 -7
  96. package/dist/cjs/helpers/getThemeCSSRules.js +0 -110
  97. package/dist/cjs/helpers/getThemeCSSRules.js.map +0 -7
  98. package/dist/cjs/helpers/getThemeCSSRules.native.js +0 -31
  99. package/dist/cjs/helpers/getThemeCSSRules.native.js.map +0 -7
  100. package/dist/cjs/helpers/getVariantExtras.js +0 -92
  101. package/dist/cjs/helpers/getVariantExtras.js.map +0 -7
  102. package/dist/cjs/helpers/insertStyleRule.js +0 -218
  103. package/dist/cjs/helpers/insertStyleRule.js.map +0 -7
  104. package/dist/cjs/helpers/isObj.js +0 -29
  105. package/dist/cjs/helpers/isObj.js.map +0 -7
  106. package/dist/cjs/helpers/isTamaguiComponent.js +0 -32
  107. package/dist/cjs/helpers/isTamaguiComponent.js.map +0 -7
  108. package/dist/cjs/helpers/isTamaguiElement.js +0 -33
  109. package/dist/cjs/helpers/isTamaguiElement.js.map +0 -7
  110. package/dist/cjs/helpers/matchMedia.js +0 -42
  111. package/dist/cjs/helpers/matchMedia.js.map +0 -7
  112. package/dist/cjs/helpers/matchMedia.native.js +0 -48
  113. package/dist/cjs/helpers/matchMedia.native.js.map +0 -7
  114. package/dist/cjs/helpers/mergeProps.js +0 -54
  115. package/dist/cjs/helpers/mergeProps.js.map +0 -7
  116. package/dist/cjs/helpers/mergeTransform.js +0 -47
  117. package/dist/cjs/helpers/mergeTransform.js.map +0 -7
  118. package/dist/cjs/helpers/normalizeColor.js +0 -71
  119. package/dist/cjs/helpers/normalizeColor.js.map +0 -7
  120. package/dist/cjs/helpers/normalizeValueWithProperty.js +0 -138
  121. package/dist/cjs/helpers/normalizeValueWithProperty.js.map +0 -7
  122. package/dist/cjs/helpers/proxyThemeVariables.js +0 -40
  123. package/dist/cjs/helpers/proxyThemeVariables.js.map +0 -7
  124. package/dist/cjs/helpers/pseudoDescriptors.js +0 -53
  125. package/dist/cjs/helpers/pseudoDescriptors.js.map +0 -7
  126. package/dist/cjs/helpers/registerCSSVariable.js +0 -40
  127. package/dist/cjs/helpers/registerCSSVariable.js.map +0 -7
  128. package/dist/cjs/helpers/themeable.js +0 -62
  129. package/dist/cjs/helpers/themeable.js.map +0 -7
  130. package/dist/cjs/helpers/themes.js +0 -78
  131. package/dist/cjs/helpers/themes.js.map +0 -7
  132. package/dist/cjs/helpers/timer.js +0 -35
  133. package/dist/cjs/helpers/timer.js.map +0 -7
  134. package/dist/cjs/helpers/useShallowSetState.js +0 -59
  135. package/dist/cjs/helpers/useShallowSetState.js.map +0 -7
  136. package/dist/cjs/helpers/warnOnce.js +0 -38
  137. package/dist/cjs/helpers/warnOnce.js.map +0 -7
  138. package/dist/cjs/helpers/withStaticProperties.js +0 -32
  139. package/dist/cjs/helpers/withStaticProperties.js.map +0 -7
  140. package/dist/cjs/hooks/getThemeUnwrapped.js +0 -34
  141. package/dist/cjs/hooks/getThemeUnwrapped.js.map +0 -7
  142. package/dist/cjs/hooks/useId.js +0 -29
  143. package/dist/cjs/hooks/useId.js.map +0 -7
  144. package/dist/cjs/hooks/useIsTouchDevice.js +0 -33
  145. package/dist/cjs/hooks/useIsTouchDevice.js.map +0 -7
  146. package/dist/cjs/hooks/useMedia.js +0 -263
  147. package/dist/cjs/hooks/useMedia.js.map +0 -7
  148. package/dist/cjs/hooks/useSafeRef.js +0 -59
  149. package/dist/cjs/hooks/useSafeRef.js.map +0 -7
  150. package/dist/cjs/hooks/useServerHooks.js +0 -36
  151. package/dist/cjs/hooks/useServerHooks.js.map +0 -7
  152. package/dist/cjs/hooks/useStyle.js +0 -61
  153. package/dist/cjs/hooks/useStyle.js.map +0 -7
  154. package/dist/cjs/hooks/useTheme.js +0 -230
  155. package/dist/cjs/hooks/useTheme.js.map +0 -7
  156. package/dist/cjs/hooks/useThemeName.js +0 -52
  157. package/dist/cjs/hooks/useThemeName.js.map +0 -7
  158. package/dist/cjs/insertFont.js +0 -93
  159. package/dist/cjs/insertFont.js.map +0 -7
  160. package/dist/cjs/setupReactNative.js +0 -51
  161. package/dist/cjs/setupReactNative.js.map +0 -7
  162. package/dist/cjs/static.js +0 -20
  163. package/dist/cjs/static.js.map +0 -7
  164. package/dist/cjs/styled.js +0 -95
  165. package/dist/cjs/styled.js.map +0 -7
  166. package/dist/cjs/types-rnw.js +0 -17
  167. package/dist/cjs/types-rnw.js.map +0 -7
  168. package/dist/cjs/types.js.map +0 -7
  169. package/dist/cjs/updateTheme.js +0 -47
  170. package/dist/cjs/updateTheme.js.map +0 -7
  171. package/dist/cjs/views/FontLanguage.js +0 -41
  172. package/dist/cjs/views/FontLanguage.js.map +0 -7
  173. package/dist/cjs/views/FontLanguage.native.js +0 -35
  174. package/dist/cjs/views/FontLanguage.native.js.map +0 -7
  175. package/dist/cjs/views/FontLanguage.types.js +0 -17
  176. package/dist/cjs/views/FontLanguage.types.js.map +0 -7
  177. package/dist/cjs/views/Slot.js +0 -92
  178. package/dist/cjs/views/Slot.js.map +0 -7
  179. package/dist/cjs/views/Stack.js +0 -38
  180. package/dist/cjs/views/Stack.js.map +0 -7
  181. package/dist/cjs/views/Stack.web.test.js +0 -22
  182. package/dist/cjs/views/Stack.web.test.js.map +0 -7
  183. package/dist/cjs/views/TamaguiProvider.js +0 -90
  184. package/dist/cjs/views/TamaguiProvider.js.map +0 -7
  185. package/dist/cjs/views/Text.js +0 -94
  186. package/dist/cjs/views/Text.js.map +0 -7
  187. package/dist/cjs/views/Theme.js +0 -88
  188. package/dist/cjs/views/Theme.js.map +0 -7
  189. package/dist/cjs/views/ThemeProvider.js +0 -70
  190. package/dist/cjs/views/ThemeProvider.js.map +0 -7
  191. package/dist/esm/Tamagui.js +0 -41
  192. package/dist/esm/Tamagui.js.map +0 -7
  193. package/dist/esm/addTheme.js +0 -54
  194. package/dist/esm/addTheme.js.map +0 -7
  195. package/dist/esm/config.js +0 -58
  196. package/dist/esm/config.js.map +0 -7
  197. package/dist/esm/constants/constants.js +0 -22
  198. package/dist/esm/constants/constants.js.map +0 -7
  199. package/dist/esm/constants/isDevTools.js +0 -13
  200. package/dist/esm/constants/isDevTools.js.map +0 -7
  201. package/dist/esm/contexts/ButtonNestingContext.js +0 -6
  202. package/dist/esm/contexts/ButtonNestingContext.js.map +0 -7
  203. package/dist/esm/contexts/FontLanguageContext.js +0 -6
  204. package/dist/esm/contexts/FontLanguageContext.js.map +0 -7
  205. package/dist/esm/contexts/TextAncestorContext.js +0 -6
  206. package/dist/esm/contexts/TextAncestorContext.js.map +0 -7
  207. package/dist/esm/createComponent.js +0 -975
  208. package/dist/esm/createComponent.js.map +0 -7
  209. package/dist/esm/createFont.js +0 -45
  210. package/dist/esm/createFont.js.map +0 -7
  211. package/dist/esm/createFont.web.test.js +0 -124
  212. package/dist/esm/createFont.web.test.js.map +0 -7
  213. package/dist/esm/createShorthands.js +0 -7
  214. package/dist/esm/createShorthands.js.map +0 -7
  215. package/dist/esm/createTamagui.js +0 -190
  216. package/dist/esm/createTamagui.js.map +0 -7
  217. package/dist/esm/createTheme.js +0 -7
  218. package/dist/esm/createTheme.js.map +0 -7
  219. package/dist/esm/createTokens.js +0 -15
  220. package/dist/esm/createTokens.js.map +0 -7
  221. package/dist/esm/createTokens.web.test.js +0 -27
  222. package/dist/esm/createTokens.web.test.js.map +0 -7
  223. package/dist/esm/createVariable.js +0 -78
  224. package/dist/esm/createVariable.js.map +0 -7
  225. package/dist/esm/createVariable.web.test.js +0 -6
  226. package/dist/esm/createVariable.web.test.js.map +0 -7
  227. package/dist/esm/createVariables.js +0 -35
  228. package/dist/esm/createVariables.js.map +0 -7
  229. package/dist/esm/helpers/RNComponents.js +0 -16
  230. package/dist/esm/helpers/RNComponents.js.map +0 -7
  231. package/dist/esm/helpers/ThemeManager.js +0 -209
  232. package/dist/esm/helpers/ThemeManager.js.map +0 -7
  233. package/dist/esm/helpers/ThemeManager.test.js +0 -464
  234. package/dist/esm/helpers/ThemeManager.test.js.map +0 -7
  235. package/dist/esm/helpers/ThemeManagerContext.js +0 -6
  236. package/dist/esm/helpers/ThemeManagerContext.js.map +0 -7
  237. package/dist/esm/helpers/createMediaStyle.js +0 -42
  238. package/dist/esm/helpers/createMediaStyle.js.map +0 -7
  239. package/dist/esm/helpers/createPropMapper.js +0 -396
  240. package/dist/esm/helpers/createPropMapper.js.map +0 -7
  241. package/dist/esm/helpers/createProxy.js +0 -19
  242. package/dist/esm/helpers/createProxy.js.map +0 -7
  243. package/dist/esm/helpers/expandStyle.js +0 -71
  244. package/dist/esm/helpers/expandStyle.js.map +0 -7
  245. package/dist/esm/helpers/expandStyles.js +0 -90
  246. package/dist/esm/helpers/expandStyles.js.map +0 -7
  247. package/dist/esm/helpers/extendStaticConfig.js +0 -66
  248. package/dist/esm/helpers/extendStaticConfig.js.map +0 -7
  249. package/dist/esm/helpers/fixNativeShadow.js +0 -6
  250. package/dist/esm/helpers/fixNativeShadow.js.map +0 -7
  251. package/dist/esm/helpers/getAnimationDriver.js +0 -8
  252. package/dist/esm/helpers/getAnimationDriver.js.map +0 -7
  253. package/dist/esm/helpers/getExpandedShorthands.js +0 -16
  254. package/dist/esm/helpers/getExpandedShorthands.js.map +0 -7
  255. package/dist/esm/helpers/getFontLanguage.js +0 -5
  256. package/dist/esm/helpers/getFontLanguage.js.map +0 -7
  257. package/dist/esm/helpers/getSplitStyles.js +0 -847
  258. package/dist/esm/helpers/getSplitStyles.js.map +0 -7
  259. package/dist/esm/helpers/getStylesAtomic.js +0 -200
  260. package/dist/esm/helpers/getStylesAtomic.js.map +0 -7
  261. package/dist/esm/helpers/getStylesAtomic.native.js +0 -12
  262. package/dist/esm/helpers/getStylesAtomic.native.js.map +0 -7
  263. package/dist/esm/helpers/getThemeCSSRules.js +0 -86
  264. package/dist/esm/helpers/getThemeCSSRules.js.map +0 -7
  265. package/dist/esm/helpers/getThemeCSSRules.native.js +0 -7
  266. package/dist/esm/helpers/getThemeCSSRules.native.js.map +0 -7
  267. package/dist/esm/helpers/getVariantExtras.js +0 -67
  268. package/dist/esm/helpers/getVariantExtras.js.map +0 -7
  269. package/dist/esm/helpers/insertStyleRule.js +0 -186
  270. package/dist/esm/helpers/insertStyleRule.js.map +0 -7
  271. package/dist/esm/helpers/isObj.js +0 -5
  272. package/dist/esm/helpers/isObj.js.map +0 -7
  273. package/dist/esm/helpers/isTamaguiComponent.js +0 -8
  274. package/dist/esm/helpers/isTamaguiComponent.js.map +0 -7
  275. package/dist/esm/helpers/isTamaguiElement.js +0 -9
  276. package/dist/esm/helpers/isTamaguiElement.js.map +0 -7
  277. package/dist/esm/helpers/matchMedia.js +0 -17
  278. package/dist/esm/helpers/matchMedia.js.map +0 -7
  279. package/dist/esm/helpers/matchMedia.native.js +0 -23
  280. package/dist/esm/helpers/matchMedia.native.js.map +0 -7
  281. package/dist/esm/helpers/mergeProps.js +0 -30
  282. package/dist/esm/helpers/mergeProps.js.map +0 -7
  283. package/dist/esm/helpers/mergeTransform.js +0 -21
  284. package/dist/esm/helpers/mergeTransform.js.map +0 -7
  285. package/dist/esm/helpers/normalizeColor.js +0 -36
  286. package/dist/esm/helpers/normalizeColor.js.map +0 -7
  287. package/dist/esm/helpers/normalizeValueWithProperty.js +0 -113
  288. package/dist/esm/helpers/normalizeValueWithProperty.js.map +0 -7
  289. package/dist/esm/helpers/proxyThemeVariables.js +0 -16
  290. package/dist/esm/helpers/proxyThemeVariables.js.map +0 -7
  291. package/dist/esm/helpers/pseudoDescriptors.js +0 -29
  292. package/dist/esm/helpers/pseudoDescriptors.js.map +0 -7
  293. package/dist/esm/helpers/registerCSSVariable.js +0 -14
  294. package/dist/esm/helpers/registerCSSVariable.js.map +0 -7
  295. package/dist/esm/helpers/themeable.js +0 -28
  296. package/dist/esm/helpers/themeable.js.map +0 -7
  297. package/dist/esm/helpers/themes.js +0 -53
  298. package/dist/esm/helpers/themes.js.map +0 -7
  299. package/dist/esm/helpers/timer.js +0 -11
  300. package/dist/esm/helpers/timer.js.map +0 -7
  301. package/dist/esm/helpers/useShallowSetState.js +0 -35
  302. package/dist/esm/helpers/useShallowSetState.js.map +0 -7
  303. package/dist/esm/helpers/warnOnce.js +0 -14
  304. package/dist/esm/helpers/warnOnce.js.map +0 -7
  305. package/dist/esm/helpers/withStaticProperties.js +0 -8
  306. package/dist/esm/helpers/withStaticProperties.js.map +0 -7
  307. package/dist/esm/hooks/getThemeUnwrapped.js +0 -9
  308. package/dist/esm/hooks/getThemeUnwrapped.js.map +0 -7
  309. package/dist/esm/hooks/useId.js +0 -5
  310. package/dist/esm/hooks/useId.js.map +0 -7
  311. package/dist/esm/hooks/useIsTouchDevice.js +0 -9
  312. package/dist/esm/hooks/useIsTouchDevice.js.map +0 -7
  313. package/dist/esm/hooks/useMedia.js +0 -225
  314. package/dist/esm/hooks/useMedia.js.map +0 -7
  315. package/dist/esm/hooks/useSafeRef.js +0 -35
  316. package/dist/esm/hooks/useSafeRef.js.map +0 -7
  317. package/dist/esm/hooks/useServerHooks.js +0 -11
  318. package/dist/esm/hooks/useServerHooks.js.map +0 -7
  319. package/dist/esm/hooks/useStyle.js +0 -37
  320. package/dist/esm/hooks/useStyle.js.map +0 -7
  321. package/dist/esm/hooks/useTheme.js +0 -205
  322. package/dist/esm/hooks/useTheme.js.map +0 -7
  323. package/dist/esm/hooks/useThemeName.js +0 -28
  324. package/dist/esm/hooks/useThemeName.js.map +0 -7
  325. package/dist/esm/insertFont.js +0 -67
  326. package/dist/esm/insertFont.js.map +0 -7
  327. package/dist/esm/setupReactNative.js +0 -25
  328. package/dist/esm/setupReactNative.js.map +0 -7
  329. package/dist/esm/static.js +0 -3
  330. package/dist/esm/static.js.map +0 -7
  331. package/dist/esm/styled.js +0 -71
  332. package/dist/esm/styled.js.map +0 -7
  333. package/dist/esm/types-rnw.js +0 -1
  334. package/dist/esm/types.js +0 -1
  335. package/dist/esm/types.js.map +0 -7
  336. package/dist/esm/updateTheme.js +0 -23
  337. package/dist/esm/updateTheme.js.map +0 -7
  338. package/dist/esm/views/FontLanguage.js +0 -17
  339. package/dist/esm/views/FontLanguage.js.map +0 -7
  340. package/dist/esm/views/FontLanguage.native.js +0 -11
  341. package/dist/esm/views/FontLanguage.native.js.map +0 -7
  342. package/dist/esm/views/FontLanguage.types.js +0 -1
  343. package/dist/esm/views/FontLanguage.types.js.map +0 -7
  344. package/dist/esm/views/Slot.js +0 -71
  345. package/dist/esm/views/Slot.js.map +0 -7
  346. package/dist/esm/views/Stack.js +0 -14
  347. package/dist/esm/views/Stack.js.map +0 -7
  348. package/dist/esm/views/Stack.web.test.js +0 -21
  349. package/dist/esm/views/Stack.web.test.js.map +0 -7
  350. package/dist/esm/views/TamaguiProvider.js +0 -56
  351. package/dist/esm/views/TamaguiProvider.js.map +0 -7
  352. package/dist/esm/views/Text.js +0 -70
  353. package/dist/esm/views/Text.js.map +0 -7
  354. package/dist/esm/views/Theme.js +0 -63
  355. package/dist/esm/views/Theme.js.map +0 -7
  356. package/dist/esm/views/ThemeProvider.js +0 -45
  357. package/dist/esm/views/ThemeProvider.js.map +0 -7
  358. package/src/Tamagui.ts +0 -48
  359. package/src/__snapshots__/createTokens.test.ts.snap +0 -772
  360. package/src/__snapshots__/createTokens.web.test.tsx.snap +0 -772
  361. package/src/addTheme.ts +0 -65
  362. package/src/config.ts +0 -62
  363. package/src/constants/constants.ts +0 -17
  364. package/src/constants/isDevTools.ts +0 -12
  365. package/src/contexts/ButtonNestingContext.tsx +0 -3
  366. package/src/contexts/FontLanguageContext.tsx +0 -5
  367. package/src/contexts/TextAncestorContext.tsx +0 -3
  368. package/src/createComponent.tsx +0 -1293
  369. package/src/createFont.ts +0 -50
  370. package/src/createShorthands.ts +0 -7
  371. package/src/createTamagui.ts +0 -253
  372. package/src/createTheme.ts +0 -13
  373. package/src/createTokens.ts +0 -46
  374. package/src/createVariable.ts +0 -93
  375. package/src/createVariables.ts +0 -55
  376. package/src/helpers/RNComponents.tsx +0 -14
  377. package/src/helpers/ThemeManager.tsx +0 -285
  378. package/src/helpers/ThemeManagerContext.tsx +0 -5
  379. package/src/helpers/createMediaStyle.ts +0 -56
  380. package/src/helpers/createPropMapper.ts +0 -562
  381. package/src/helpers/createProxy.ts +0 -16
  382. package/src/helpers/expandStyle.ts +0 -82
  383. package/src/helpers/expandStyles.ts +0 -107
  384. package/src/helpers/extendStaticConfig.ts +0 -78
  385. package/src/helpers/fixNativeShadow.tsx +0 -2
  386. package/src/helpers/getAnimationDriver.tsx +0 -5
  387. package/src/helpers/getExpandedShorthands.ts +0 -17
  388. package/src/helpers/getFontLanguage.ts +0 -2
  389. package/src/helpers/getSplitStyles.tsx +0 -1137
  390. package/src/helpers/getStylesAtomic.native.ts +0 -8
  391. package/src/helpers/getStylesAtomic.ts +0 -274
  392. package/src/helpers/getThemeCSSRules.native.ts +0 -3
  393. package/src/helpers/getThemeCSSRules.ts +0 -120
  394. package/src/helpers/getVariantExtras.tsx +0 -85
  395. package/src/helpers/insertStyleRule.tsx +0 -220
  396. package/src/helpers/isObj.ts +0 -1
  397. package/src/helpers/isTamaguiComponent.tsx +0 -11
  398. package/src/helpers/isTamaguiElement.tsx +0 -15
  399. package/src/helpers/matchMedia.native.ts +0 -23
  400. package/src/helpers/matchMedia.ts +0 -16
  401. package/src/helpers/mergeProps.ts +0 -56
  402. package/src/helpers/mergeTransform.ts +0 -30
  403. package/src/helpers/normalizeColor.ts +0 -38
  404. package/src/helpers/normalizeValueWithProperty.ts +0 -129
  405. package/src/helpers/proxyThemeVariables.tsx +0 -15
  406. package/src/helpers/pseudoDescriptors.ts +0 -40
  407. package/src/helpers/registerCSSVariable.ts +0 -13
  408. package/src/helpers/themeable.tsx +0 -44
  409. package/src/helpers/themes.ts +0 -67
  410. package/src/helpers/timer.ts +0 -9
  411. package/src/helpers/useShallowSetState.tsx +0 -41
  412. package/src/helpers/warnOnce.tsx +0 -11
  413. package/src/helpers/withStaticProperties.tsx +0 -7
  414. package/src/hooks/getThemeUnwrapped.tsx +0 -5
  415. package/src/hooks/useId.tsx +0 -1
  416. package/src/hooks/useIsTouchDevice.tsx +0 -6
  417. package/src/hooks/useMedia.tsx +0 -298
  418. package/src/hooks/useSafeRef.ts +0 -45
  419. package/src/hooks/useServerHooks.tsx +0 -12
  420. package/src/hooks/useStyle.tsx +0 -49
  421. package/src/hooks/useTheme.tsx +0 -274
  422. package/src/hooks/useThemeName.tsx +0 -27
  423. package/src/insertFont.ts +0 -73
  424. package/src/setupReactNative.ts +0 -22
  425. package/src/static.ts +0 -5
  426. package/src/styled.tsx +0 -195
  427. package/src/types-rnw.tsx +0 -162
  428. package/src/types.tsx +0 -1405
  429. package/src/updateTheme.ts +0 -26
  430. package/src/views/FontLanguage.native.tsx +0 -12
  431. package/src/views/FontLanguage.tsx +0 -16
  432. package/src/views/FontLanguage.types.ts +0 -13
  433. package/src/views/Slot.tsx +0 -102
  434. package/src/views/Stack.tsx +0 -25
  435. package/src/views/TamaguiProvider.tsx +0 -65
  436. package/src/views/Text.tsx +0 -88
  437. package/src/views/Theme.tsx +0 -83
  438. package/src/views/ThemeProvider.tsx +0 -55
  439. package/types/Tamagui.d.ts +0 -30
  440. package/types/Tamagui.d.ts.map +0 -1
  441. package/types/addTheme.d.ts +0 -32
  442. package/types/addTheme.d.ts.map +0 -1
  443. package/types/config.d.ts +0 -49
  444. package/types/config.d.ts.map +0 -1
  445. package/types/constants/constants.d.ts +0 -21
  446. package/types/constants/constants.d.ts.map +0 -1
  447. package/types/constants/isDevTools.d.ts +0 -2
  448. package/types/constants/isDevTools.d.ts.map +0 -1
  449. package/types/contexts/ButtonNestingContext.d.ts +0 -3
  450. package/types/contexts/ButtonNestingContext.d.ts.map +0 -1
  451. package/types/contexts/FontLanguageContext.d.ts +0 -5
  452. package/types/contexts/FontLanguageContext.d.ts.map +0 -1
  453. package/types/contexts/TextAncestorContext.d.ts +0 -3
  454. package/types/contexts/TextAncestorContext.d.ts.map +0 -1
  455. package/types/createComponent.d.ts +0 -23
  456. package/types/createComponent.d.ts.map +0 -1
  457. package/types/createFont.d.ts +0 -3
  458. package/types/createFont.d.ts.map +0 -1
  459. package/types/createFont.web.test.d.ts +0 -2
  460. package/types/createFont.web.test.d.ts.map +0 -1
  461. package/types/createShorthands.d.ts +0 -3
  462. package/types/createShorthands.d.ts.map +0 -1
  463. package/types/createTamagui.d.ts +0 -3
  464. package/types/createTamagui.d.ts.map +0 -1
  465. package/types/createTheme.d.ts +0 -7
  466. package/types/createTheme.d.ts.map +0 -1
  467. package/types/createTokens.d.ts +0 -28
  468. package/types/createTokens.d.ts.map +0 -1
  469. package/types/createTokens.web.test.d.ts +0 -2
  470. package/types/createTokens.web.test.d.ts.map +0 -1
  471. package/types/createVariable.d.ts +0 -26
  472. package/types/createVariable.d.ts.map +0 -1
  473. package/types/createVariable.web.test.d.ts +0 -2
  474. package/types/createVariable.web.test.d.ts.map +0 -1
  475. package/types/createVariables.d.ts +0 -11
  476. package/types/createVariables.d.ts.map +0 -1
  477. package/types/helpers/RNComponents.d.ts +0 -2
  478. package/types/helpers/RNComponents.d.ts.map +0 -1
  479. package/types/helpers/ThemeManager.d.ts +0 -36
  480. package/types/helpers/ThemeManager.d.ts.map +0 -1
  481. package/types/helpers/ThemeManager.test.d.ts +0 -2
  482. package/types/helpers/ThemeManager.test.d.ts.map +0 -1
  483. package/types/helpers/ThemeManagerContext.d.ts +0 -4
  484. package/types/helpers/ThemeManagerContext.d.ts.map +0 -1
  485. package/types/helpers/createMediaStyle.d.ts +0 -6
  486. package/types/helpers/createMediaStyle.d.ts.map +0 -1
  487. package/types/helpers/createPropMapper.d.ts +0 -7
  488. package/types/helpers/createPropMapper.d.ts.map +0 -1
  489. package/types/helpers/createProxy.d.ts +0 -2
  490. package/types/helpers/createProxy.d.ts.map +0 -1
  491. package/types/helpers/expandStyle.d.ts +0 -6
  492. package/types/helpers/expandStyle.d.ts.map +0 -1
  493. package/types/helpers/expandStyles.d.ts +0 -26
  494. package/types/helpers/expandStyles.d.ts.map +0 -1
  495. package/types/helpers/extendStaticConfig.d.ts +0 -4
  496. package/types/helpers/extendStaticConfig.d.ts.map +0 -1
  497. package/types/helpers/fixNativeShadow.d.ts +0 -2
  498. package/types/helpers/fixNativeShadow.d.ts.map +0 -1
  499. package/types/helpers/getAnimationDriver.d.ts +0 -6
  500. package/types/helpers/getAnimationDriver.d.ts.map +0 -1
  501. package/types/helpers/getExpandedShorthands.d.ts +0 -3
  502. package/types/helpers/getExpandedShorthands.d.ts.map +0 -1
  503. package/types/helpers/getFontLanguage.d.ts +0 -2
  504. package/types/helpers/getFontLanguage.d.ts.map +0 -1
  505. package/types/helpers/getSplitStyles.d.ts +0 -43
  506. package/types/helpers/getSplitStyles.d.ts.map +0 -1
  507. package/types/helpers/getStylesAtomic.d.ts +0 -18
  508. package/types/helpers/getStylesAtomic.d.ts.map +0 -1
  509. package/types/helpers/getStylesAtomic.native.d.ts +0 -4
  510. package/types/helpers/getStylesAtomic.native.d.ts.map +0 -1
  511. package/types/helpers/getThemeCSSRules.d.ts +0 -8
  512. package/types/helpers/getThemeCSSRules.d.ts.map +0 -1
  513. package/types/helpers/getThemeCSSRules.native.d.ts +0 -2
  514. package/types/helpers/getThemeCSSRules.native.d.ts.map +0 -1
  515. package/types/helpers/getVariantExtras.d.ts +0 -5
  516. package/types/helpers/getVariantExtras.d.ts.map +0 -1
  517. package/types/helpers/insertStyleRule.d.ts +0 -13
  518. package/types/helpers/insertStyleRule.d.ts.map +0 -1
  519. package/types/helpers/isObj.d.ts +0 -2
  520. package/types/helpers/isObj.d.ts.map +0 -1
  521. package/types/helpers/isTamaguiComponent.d.ts +0 -5
  522. package/types/helpers/isTamaguiComponent.d.ts.map +0 -1
  523. package/types/helpers/isTamaguiElement.d.ts +0 -7
  524. package/types/helpers/isTamaguiElement.d.ts.map +0 -1
  525. package/types/helpers/matchMedia.d.ts +0 -6
  526. package/types/helpers/matchMedia.d.ts.map +0 -1
  527. package/types/helpers/matchMedia.native.d.ts +0 -4
  528. package/types/helpers/matchMedia.native.d.ts.map +0 -1
  529. package/types/helpers/mergeProps.d.ts +0 -17
  530. package/types/helpers/mergeProps.d.ts.map +0 -1
  531. package/types/helpers/mergeTransform.d.ts +0 -9
  532. package/types/helpers/mergeTransform.d.ts.map +0 -1
  533. package/types/helpers/normalizeColor.d.ts +0 -4
  534. package/types/helpers/normalizeColor.d.ts.map +0 -1
  535. package/types/helpers/normalizeValueWithProperty.d.ts +0 -7
  536. package/types/helpers/normalizeValueWithProperty.d.ts.map +0 -1
  537. package/types/helpers/proxyThemeVariables.d.ts +0 -2
  538. package/types/helpers/proxyThemeVariables.d.ts.map +0 -1
  539. package/types/helpers/pseudoDescriptors.d.ts +0 -10
  540. package/types/helpers/pseudoDescriptors.d.ts.map +0 -1
  541. package/types/helpers/registerCSSVariable.d.ts +0 -5
  542. package/types/helpers/registerCSSVariable.d.ts.map +0 -1
  543. package/types/helpers/themeable.d.ts +0 -12
  544. package/types/helpers/themeable.d.ts.map +0 -1
  545. package/types/helpers/themes.d.ts +0 -4
  546. package/types/helpers/themes.d.ts.map +0 -1
  547. package/types/helpers/timer.d.ts +0 -2
  548. package/types/helpers/timer.d.ts.map +0 -1
  549. package/types/helpers/useShallowSetState.d.ts +0 -5
  550. package/types/helpers/useShallowSetState.d.ts.map +0 -1
  551. package/types/helpers/warnOnce.d.ts +0 -2
  552. package/types/helpers/warnOnce.d.ts.map +0 -1
  553. package/types/helpers/withStaticProperties.d.ts +0 -2
  554. package/types/helpers/withStaticProperties.d.ts.map +0 -1
  555. package/types/hooks/getThemeUnwrapped.d.ts +0 -3
  556. package/types/hooks/getThemeUnwrapped.d.ts.map +0 -1
  557. package/types/hooks/useId.d.ts +0 -2
  558. package/types/hooks/useId.d.ts.map +0 -1
  559. package/types/hooks/useIsTouchDevice.d.ts +0 -2
  560. package/types/hooks/useIsTouchDevice.d.ts.map +0 -1
  561. package/types/hooks/useMedia.d.ts +0 -33
  562. package/types/hooks/useMedia.d.ts.map +0 -1
  563. package/types/hooks/useSafeRef.d.ts +0 -4
  564. package/types/hooks/useSafeRef.d.ts.map +0 -1
  565. package/types/hooks/useServerHooks.d.ts +0 -4
  566. package/types/hooks/useServerHooks.d.ts.map +0 -1
  567. package/types/hooks/useStyle.d.ts +0 -8
  568. package/types/hooks/useStyle.d.ts.map +0 -1
  569. package/types/hooks/useTheme.d.ts +0 -25
  570. package/types/hooks/useTheme.d.ts.map +0 -1
  571. package/types/hooks/useThemeName.d.ts +0 -5
  572. package/types/hooks/useThemeName.d.ts.map +0 -1
  573. package/types/insertFont.d.ts +0 -9
  574. package/types/insertFont.d.ts.map +0 -1
  575. package/types/setupReactNative.d.ts +0 -5
  576. package/types/setupReactNative.d.ts.map +0 -1
  577. package/types/static.d.ts +0 -3
  578. package/types/static.d.ts.map +0 -1
  579. package/types/styled.d.ts +0 -20
  580. package/types/styled.d.ts.map +0 -1
  581. package/types/types-rnw.d.ts +0 -74
  582. package/types/types-rnw.d.ts.map +0 -1
  583. package/types/types.d.ts +0 -673
  584. package/types/types.d.ts.map +0 -1
  585. package/types/updateTheme.d.ts +0 -30
  586. package/types/updateTheme.d.ts.map +0 -1
  587. package/types/views/FontLanguage.d.ts +0 -4
  588. package/types/views/FontLanguage.d.ts.map +0 -1
  589. package/types/views/FontLanguage.native.d.ts +0 -4
  590. package/types/views/FontLanguage.native.d.ts.map +0 -1
  591. package/types/views/FontLanguage.types.d.ts +0 -11
  592. package/types/views/FontLanguage.types.d.ts.map +0 -1
  593. package/types/views/Slot.d.ts +0 -11
  594. package/types/views/Slot.d.ts.map +0 -1
  595. package/types/views/Stack.d.ts +0 -4
  596. package/types/views/Stack.d.ts.map +0 -1
  597. package/types/views/Stack.web.test.d.ts +0 -2
  598. package/types/views/Stack.web.test.d.ts.map +0 -1
  599. package/types/views/TamaguiProvider.d.ts +0 -4
  600. package/types/views/TamaguiProvider.d.ts.map +0 -1
  601. package/types/views/Text.d.ts +0 -4
  602. package/types/views/Text.d.ts.map +0 -1
  603. package/types/views/Theme.d.ts +0 -8
  604. package/types/views/Theme.d.ts.map +0 -1
  605. package/types/views/ThemeProvider.d.ts +0 -12
  606. package/types/views/ThemeProvider.d.ts.map +0 -1
@@ -1,67 +0,0 @@
1
- import { createVariable, isVariable } from '../createVariable'
2
- import { GetThemeUnwrapped } from '../hooks/getThemeUnwrapped'
3
- import { CreateTamaguiProps } from '../types'
4
-
5
- // mutates, freeze after
6
- // shared by createTamagui so extracted here
7
- export function ensureThemeVariable(theme: any, key: string) {
8
- const val = theme[key]
9
- const themeKey = key
10
- if (!isVariable(val)) {
11
- theme[key] = createVariable({
12
- key: themeKey,
13
- name: themeKey,
14
- val,
15
- })
16
- } else {
17
- if (val.name !== themeKey) {
18
- // rename to theme name
19
- theme[key] = createVariable({
20
- key: val.name,
21
- name: themeKey,
22
- val: val.val,
23
- })
24
- }
25
- }
26
- }
27
-
28
- export function proxyThemeToParents(
29
- themeName: string,
30
- theme: any,
31
- themes: CreateTamaguiProps['themes']
32
- ) {
33
- // we could test if this is better as just a straight object spread or fancier proxy
34
- const cur: string[] = []
35
- // if theme is dark_blue_alt1_Button
36
- // this will be the parent names in order: ['dark', 'dark_blue', 'dark_blue_alt1"]
37
- const parents = themeName
38
- .split('_')
39
- .slice(0, -1)
40
- .map((part) => {
41
- cur.push(part)
42
- return cur.join('_')
43
- })
44
-
45
- const len = parents.length
46
-
47
- // proxy fallback values to parent theme values
48
- return new Proxy(theme, {
49
- get(target, key) {
50
- if (key === GetThemeUnwrapped) {
51
- return theme
52
- }
53
- if (!len || Reflect.has(target, key)) {
54
- return Reflect.get(target, key)
55
- }
56
- // check parents
57
- for (let i = len - 1; i >= 0; i--) {
58
- const parent = themes[parents[i]]
59
- if (!parent) continue
60
- if (Reflect.has(parent, key)) {
61
- return Reflect.get(parent, key)
62
- }
63
- }
64
- return Reflect.get(target, key)
65
- },
66
- })
67
- }
@@ -1,9 +0,0 @@
1
- const timer = require('@tamagui/timer').timer()
2
-
3
- setTimeout(() => {
4
- timer.print()
5
- }, 2000)
6
-
7
- export const time = timer.start({
8
- quiet: true,
9
- })
@@ -1,41 +0,0 @@
1
- import React, { startTransition, useCallback } from 'react'
2
-
3
- import { DebugProp } from '../types'
4
- import { TamaguiComponentState } from '..'
5
-
6
- export function useShallowSetState<State extends TamaguiComponentState>(
7
- setter: React.Dispatch<React.SetStateAction<State>>,
8
- debug?: DebugProp,
9
- debugName?: string
10
- ) {
11
- return useCallback(
12
- (next: Partial<State>) => {
13
- const shouldTransition = Object.keys(next).every((k) =>
14
- transitionKeys.has(k as any)
15
- )
16
- const run = shouldTransition ? startTransition : (_) => _()
17
- run(() => {
18
- setter((prev) => {
19
- for (const key in next) {
20
- if (prev[key] !== next[key]) {
21
- if (process.env.NODE_ENV === 'development' && debug === 'verbose') {
22
- // eslint-disable-next-line no-console
23
- console.log(` ▲ setState ${debugName}`, next)
24
- }
25
- return { ...prev, ...next }
26
- }
27
- }
28
- return prev
29
- })
30
- })
31
- },
32
- [setter]
33
- )
34
- }
35
-
36
- const transitionKeys = new Set<keyof TamaguiComponentState>([
37
- 'press',
38
- 'pressIn',
39
- 'focus',
40
- 'unmounted',
41
- ])
@@ -1,11 +0,0 @@
1
- let hasWarned
2
-
3
- export function warnOnce(key: string, warning: string) {
4
- if (process.env.NODE_ENV === 'development') {
5
- hasWarned ??= {}
6
- if (!hasWarned[key]) {
7
- hasWarned[key] = true
8
- console.warn(warning)
9
- }
10
- }
11
- }
@@ -1,7 +0,0 @@
1
- export const withStaticProperties = function <A extends Function, B>(
2
- component: A,
3
- staticProps: B
4
- ): A & B {
5
- Object.assign(component, staticProps)
6
- return component as any
7
- }
@@ -1,5 +0,0 @@
1
- export const getThemeUnwrapped = (theme: any) => {
2
- return theme?.[GetThemeUnwrapped] || theme
3
- }
4
-
5
- export const GetThemeUnwrapped = Symbol()
@@ -1 +0,0 @@
1
- export { useId } from 'react'
@@ -1,6 +0,0 @@
1
- import { isTouchable, isWeb } from '@tamagui/constants'
2
- import { useDidFinishSSR } from '@tamagui/use-did-finish-ssr'
3
-
4
- export const useIsTouchDevice = () => {
5
- return !isWeb ? true : useDidFinishSSR() ? isTouchable : false
6
- }
@@ -1,298 +0,0 @@
1
- import { startTransition, useEffect, useMemo, useSyncExternalStore } from 'react'
2
-
3
- import { getConfig } from '../config'
4
- import { createProxy } from '../helpers/createProxy'
5
- import { matchMedia } from '../helpers/matchMedia'
6
- import {
7
- MediaQueries,
8
- MediaQueryKey,
9
- MediaQueryObject,
10
- MediaQueryState,
11
- TamaguiInternalConfig,
12
- } from '../types'
13
- import { useSafeRef } from './useSafeRef'
14
-
15
- export let mediaState: MediaQueryState =
16
- // development only safeguard
17
- process.env.NODE_ENV === 'development'
18
- ? createProxy(
19
- {},
20
- {
21
- get(target, key) {
22
- if (
23
- typeof key === 'string' &&
24
- key[0] === '$' &&
25
- // dont error on $$typeof
26
- key[1] !== '$'
27
- ) {
28
- throw new Error(`Access mediaState should not use "$": ${key}`)
29
- }
30
- return Reflect.get(target, key)
31
- },
32
- }
33
- )
34
- : ({} as any)
35
-
36
- export const mediaQueryConfig: MediaQueries = {}
37
- export const getMedia = () => mediaState
38
- export const mediaKeysWithAndWithout$ = new Set<string>()
39
-
40
- // for SSR capture it at time of startup
41
- let initState: MediaQueryState
42
- export const getInitialMediaState = () => {
43
- return (getConfig().disableSSR ? mediaState : initState) || {}
44
- }
45
-
46
- let mediaKeysOrdered: string[]
47
- export const getMediaKeyImportance = (key: string) => {
48
- if (process.env.NODE_ENV === 'development' && key[0] === '$') {
49
- throw new Error('use short key')
50
- }
51
- // + 2 because we set base usedKeys=1 in getSplitStyles and all media go above 1
52
- return mediaKeysOrdered.indexOf(key) + 2
53
- }
54
-
55
- const dispose = new Set<Function>()
56
-
57
- export const configureMedia = (config: TamaguiInternalConfig) => {
58
- const { media, mediaQueryDefaultActive } = config
59
- if (!media) return
60
- for (const key in media) {
61
- mediaState[key] = mediaQueryDefaultActive?.[key] || false
62
- mediaKeysWithAndWithout$.add(key)
63
- mediaKeysWithAndWithout$.add(`$${key}`)
64
- }
65
- Object.assign(mediaQueryConfig, media)
66
- initState = { ...mediaState }
67
- updateCurrentState()
68
- mediaKeysOrdered = Object.keys(media)
69
- if (config.disableSSR) {
70
- setupMediaListeners()
71
- }
72
- }
73
-
74
- function unlisten() {
75
- dispose.forEach((cb) => cb())
76
- dispose.clear()
77
- }
78
-
79
- /**
80
- * Note: This should *not* set the state on the first render!
81
- * Because to avoid hydration issues SSR must match the server
82
- * *and then* re-render with the actual media query state.
83
- */
84
- let configuredKey = ''
85
- function setupMediaListeners() {
86
- // avoid setting up more than once per config
87
- const nextKey = JSON.stringify(mediaQueryConfig)
88
- if (nextKey === configuredKey) return
89
- configuredKey = nextKey
90
-
91
- // hmr, undo existing before re-binding
92
- unlisten()
93
-
94
- for (const key in mediaQueryConfig) {
95
- const str = mediaObjectToString(mediaQueryConfig[key])
96
- const getMatch = () => matchMedia(str)
97
- const match = getMatch()
98
- if (!match) {
99
- throw new Error('⚠️ No match')
100
- }
101
- // react native needs these deprecated apis for now
102
- match.addListener(update)
103
- dispose.add(() => {
104
- match.removeListener(update)
105
- })
106
-
107
- update()
108
-
109
- function update() {
110
- const next = !!getMatch().matches
111
- if (next === mediaState[key]) return
112
- mediaState = { ...mediaState, [key]: next }
113
- updateCurrentState()
114
- }
115
- }
116
- }
117
-
118
- export function useMediaListeners(config: TamaguiInternalConfig) {
119
- if (config.disableSSR) return
120
- useEffect(() => {
121
- setupMediaListeners()
122
- }, [])
123
- }
124
-
125
- const listeners = new Set<any>()
126
- let flushing = false
127
- function updateCurrentState() {
128
- if (flushing) return
129
- flushing = true
130
- Promise.resolve().then(() => {
131
- flushing = false
132
- startTransition(() => {
133
- listeners.forEach((cb) => cb(mediaState))
134
- })
135
- })
136
- }
137
-
138
- type MediaKeysState = {
139
- [key: string]: any
140
- }
141
-
142
- type UseMediaState = {
143
- [key in MediaQueryKey]: boolean
144
- }
145
-
146
- type UpdateState = {
147
- enabled: boolean
148
- keys: MediaQueryKey[]
149
- }
150
-
151
- const shouldUpdate = new WeakMap<any, UpdateState>()
152
-
153
- export function setMediaShouldUpdate(ref: any, props: UpdateState) {
154
- return shouldUpdate.set(ref, props)
155
- }
156
-
157
- type UseMediaInternalState = {
158
- prev: MediaKeysState
159
- touched?: Set<string>
160
- }
161
-
162
- function subscribe(subscriber: any) {
163
- listeners.add(subscriber)
164
- return () => listeners.delete(subscriber)
165
- }
166
-
167
- export function useMedia(uid?: any, debug?: any): UseMediaState {
168
- const internal = useSafeRef<UseMediaInternalState>(undefined as any)
169
- if (!internal.current) {
170
- internal.current = {
171
- prev: initState,
172
- }
173
- }
174
- const state = useSyncExternalStore<MediaQueryState>(
175
- subscribe,
176
- () => {
177
- const { touched, prev } = internal.current
178
- const componentState = uid ? shouldUpdate.get(uid) : undefined
179
- if (componentState?.enabled === false) {
180
- return prev
181
- }
182
-
183
- const testKeys =
184
- componentState?.keys ??
185
- ((!componentState || componentState.enabled) && touched ? [...touched] : null)
186
-
187
- const hasntUpdated = testKeys?.every((key) => mediaState[key] === prev[key])
188
- if (hasntUpdated) {
189
- return prev
190
- }
191
-
192
- internal.current.prev = mediaState
193
- return mediaState
194
- },
195
- () => initState
196
- )
197
-
198
- return useMemo(() => {
199
- return new Proxy(state, {
200
- get(_, key) {
201
- if (typeof key === 'string') {
202
- internal.current.touched ||= new Set()
203
- internal.current.touched.add(key)
204
- }
205
- return Reflect.get(state, key)
206
- },
207
- })
208
- }, [state])
209
- }
210
-
211
- /**
212
- * Useful for more complex components that need access to the currently active props,
213
- * accounting for the currently active media queries.
214
- *
215
- * Use sparingly, it will loop props and trigger re-render on all media queries.
216
- *
217
- * */
218
- export function useMediaPropsActive<A extends Object>(
219
- props: A
220
- ): {
221
- // remove all media
222
- [Key in keyof A extends `$${string}` ? never : keyof A]?: A[Key]
223
- } {
224
- const media = useMedia()
225
-
226
- return useMemo(() => {
227
- const next = {} as A
228
- const importancesUsed = {}
229
- const propNames = Object.keys(props)
230
-
231
- for (let i = propNames.length - 1; i >= 0; i--) {
232
- const key = propNames[i]
233
- const val = props[key]
234
- if (key[0] === '$') {
235
- const mediaKey = key.slice(1)
236
- if (!media[mediaKey]) continue
237
- if (val && typeof val === 'object') {
238
- const subKeys = Object.keys(val)
239
- for (let j = subKeys.length; j--; j >= 0) {
240
- const subKey = subKeys[j]
241
- mergeMediaByImportance(next, mediaKey, subKey, val[subKey], importancesUsed)
242
- }
243
- }
244
- } else {
245
- mergeMediaByImportance(next, '', key, val, importancesUsed)
246
- }
247
- }
248
-
249
- return next
250
- }, [media, props])
251
- }
252
-
253
- export const getMediaImportanceIfMoreImportant = (
254
- mediaKey: string,
255
- key: string,
256
- importancesUsed: Record<string, number>
257
- ) => {
258
- const importance = getMediaKeyImportance(mediaKey)
259
- return !importancesUsed[key] || importance > importancesUsed[key] ? importance : null
260
- }
261
-
262
- export function mergeMediaByImportance(
263
- onto: Record<string, any>,
264
- mediaKey: string,
265
- key: string,
266
- value: any,
267
- importancesUsed: Record<string, number>
268
- ) {
269
- const importance = getMediaImportanceIfMoreImportant(mediaKey, key, importancesUsed)
270
- if (importance === null) {
271
- return false
272
- }
273
- importancesUsed[key] = importance
274
- onto[key] = value
275
- return true
276
- }
277
-
278
- function camelToHyphen(str: string) {
279
- return str.replace(/[A-Z]/g, (m) => `-${m.toLowerCase()}`).toLowerCase()
280
- }
281
-
282
- export function mediaObjectToString(query: string | MediaQueryObject) {
283
- if (typeof query === 'string') {
284
- return query
285
- }
286
- return Object.entries(query)
287
- .map(([feature, value]) => {
288
- feature = camelToHyphen(feature)
289
- if (typeof value === 'string') {
290
- return `(${feature}: ${value})`
291
- }
292
- if (typeof value === 'number' && /[height|width]$/.test(feature)) {
293
- value = `${value}px`
294
- }
295
- return `(${feature}: ${value})`
296
- })
297
- .join(' and ')
298
- }
@@ -1,45 +0,0 @@
1
- import { useIsomorphicLayoutEffect } from '@tamagui/constants'
2
- import { useRef } from 'react'
3
-
4
- // dai-shi 🙏
5
- // https://dev.to/uhyo_/a-concurrent-mode-safe-version-of-useref-1325
6
- // probably can live without it though to save a bit of b
7
-
8
- type Raw<T> = {
9
- hold: boolean
10
- next: T
11
- cur: T
12
- ref: { current: T }
13
- }
14
-
15
- export const useSafeRef = <T>(initialValue: T) => {
16
- const rawRef = useRef<Raw<T>>()
17
- if (!rawRef.current) {
18
- rawRef.current = {
19
- hold: true,
20
- next: initialValue,
21
- cur: initialValue,
22
- ref: {
23
- get current() {
24
- return raw.hold ? raw.cur : raw.next
25
- },
26
- set current(v) {
27
- if (!raw.hold) {
28
- raw.next = v
29
- }
30
- raw.cur = v
31
- },
32
- },
33
- }
34
- }
35
-
36
- const raw: Raw<T> = rawRef.current
37
- raw.hold = true
38
- raw.cur = raw.next
39
- useIsomorphicLayoutEffect(() => {
40
- raw.hold = false
41
- raw.next = raw.cur
42
- })
43
-
44
- return raw.ref
45
- }
@@ -1,12 +0,0 @@
1
- import { isRSC } from '@tamagui/constants'
2
- import { useRef, useState } from 'react'
3
-
4
- export const useServerState = isRSC
5
- ? (((val: any) => [val, idFn]) as unknown as typeof useState)
6
- : useState
7
-
8
- export const useServerRef = isRSC
9
- ? (((val: any) => ({ current: val })) as unknown as typeof useRef)
10
- : useRef
11
-
12
- const idFn = () => {}
@@ -1,49 +0,0 @@
1
- import { isRSC, isWeb } from '@tamagui/constants'
2
- import { useContext } from 'react'
3
-
4
- import { FontLanguageContext } from '../contexts/FontLanguageContext'
5
- import { TextAncestorContext } from '../contexts/TextAncestorContext'
6
- import { useSplitStyles } from '../helpers/getSplitStyles'
7
- import {
8
- DebugProp,
9
- GetProps,
10
- SplitStyleState,
11
- TamaguiComponent,
12
- TextNonStyleProps,
13
- } from '../types'
14
- import { useMedia } from './useMedia'
15
- import { useTheme } from './useTheme'
16
-
17
- export function useStyle<
18
- Component extends TamaguiComponent,
19
- StyleProps = Omit<GetProps<Component>, keyof TextNonStyleProps>
20
- >(
21
- base: Component,
22
- style: StyleProps,
23
- options?: Partial<SplitStyleState> & { debug?: DebugProp }
24
- ) {
25
- const isText = base.staticConfig.isText
26
- const hasTextAncestor = !!(isWeb && isText ? useContext(TextAncestorContext) : false)
27
- const languageContext = isRSC ? null : useContext(FontLanguageContext)
28
- const theme = useTheme()
29
- const media = useMedia()
30
- const out = useSplitStyles(
31
- style as any,
32
- base.staticConfig,
33
- theme,
34
- {
35
- ...(options as any),
36
- mediaState: media,
37
- hasTextAncestor,
38
- resolveVariablesAs: 'auto',
39
- },
40
- null,
41
- languageContext || undefined,
42
- isText ? 'span' : 'div',
43
- options?.debug
44
- )
45
- return {
46
- style: Object.keys(out.style).length ? out.style : null,
47
- classNames: out.classNames,
48
- }
49
- }