@tamagui/core 1.0.1-beta.20 → 1.0.1-beta.201

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 (788) hide show
  1. package/dist/cjs/Tamagui.js +16 -12
  2. package/dist/cjs/Tamagui.js.map +2 -2
  3. package/dist/cjs/addTheme.js +80 -0
  4. package/dist/cjs/addTheme.js.map +7 -0
  5. package/dist/cjs/{conf.js → config.js} +34 -21
  6. package/dist/cjs/config.js.map +7 -0
  7. package/dist/cjs/constants/constants.js +17 -24
  8. package/dist/cjs/constants/constants.js.map +2 -2
  9. package/dist/cjs/{helpers/nativeGestureHandler.js → constants/isDevTools.js} +8 -8
  10. package/dist/cjs/constants/isDevTools.js.map +7 -0
  11. package/dist/cjs/constants/platform.js +32 -16
  12. package/dist/cjs/constants/platform.js.map +2 -2
  13. package/dist/cjs/constants/platform.native.js +62 -0
  14. package/dist/cjs/constants/platform.native.js.map +7 -0
  15. package/dist/cjs/contexts/ButtonInsideButtonContext.js +1 -0
  16. package/dist/cjs/contexts/ButtonInsideButtonContext.js.map +1 -1
  17. package/dist/cjs/contexts/FontLanguageContext.js +30 -0
  18. package/dist/cjs/contexts/FontLanguageContext.js.map +7 -0
  19. package/dist/cjs/contexts/TextAncestorContext.js +30 -0
  20. package/dist/cjs/contexts/TextAncestorContext.js.map +7 -0
  21. package/dist/cjs/{ThemeContext.js → contexts/ThemeContext.js} +1 -0
  22. package/dist/cjs/contexts/ThemeContext.js.map +7 -0
  23. package/dist/cjs/createComponent.js +878 -509
  24. package/dist/cjs/createComponent.js.map +3 -3
  25. package/dist/cjs/createFont.js +5 -8
  26. package/dist/cjs/createFont.js.map +2 -2
  27. package/dist/cjs/createShorthands.js +1 -2
  28. package/dist/cjs/createShorthands.js.map +2 -2
  29. package/dist/cjs/createTamagui.js +135 -184
  30. package/dist/cjs/createTamagui.js.map +3 -3
  31. package/dist/cjs/createTheme.js +4 -2
  32. package/dist/cjs/createTheme.js.map +2 -2
  33. package/dist/cjs/createTokens.js +5 -25
  34. package/dist/cjs/createTokens.js.map +2 -2
  35. package/dist/cjs/createVariable.js +51 -28
  36. package/dist/cjs/createVariable.js.map +2 -2
  37. package/dist/cjs/createVariables.js +52 -0
  38. package/dist/cjs/createVariables.js.map +7 -0
  39. package/dist/cjs/helpers/RNComponents.js +12 -11
  40. package/dist/cjs/helpers/RNComponents.js.map +2 -2
  41. package/dist/cjs/{ThemeManager.js → helpers/ThemeManager.js} +55 -60
  42. package/dist/cjs/helpers/ThemeManager.js.map +7 -0
  43. package/dist/cjs/helpers/areEqualSets.js +3 -3
  44. package/dist/cjs/helpers/areEqualSets.js.map +1 -1
  45. package/dist/cjs/helpers/assignNativePropsToWeb.js +188 -0
  46. package/dist/cjs/helpers/assignNativePropsToWeb.js.map +7 -0
  47. package/dist/cjs/helpers/assignNativePropsToWeb.native.js +30 -0
  48. package/dist/cjs/helpers/assignNativePropsToWeb.native.js.map +7 -0
  49. package/dist/cjs/helpers/cache.js +43 -0
  50. package/dist/cjs/helpers/cache.js.map +7 -0
  51. package/dist/cjs/helpers/calc.js +71 -0
  52. package/dist/cjs/helpers/calc.js.map +7 -0
  53. package/dist/cjs/helpers/createMediaStyle.js +26 -12
  54. package/dist/cjs/helpers/createMediaStyle.js.map +2 -2
  55. package/dist/cjs/helpers/createPropMapper.js +272 -122
  56. package/dist/cjs/helpers/createPropMapper.js.map +2 -2
  57. package/dist/cjs/helpers/createProxy.js +43 -0
  58. package/dist/cjs/helpers/createProxy.js.map +7 -0
  59. package/dist/cjs/helpers/expandStyle.js +90 -0
  60. package/dist/cjs/helpers/expandStyle.js.map +7 -0
  61. package/dist/cjs/helpers/expandStyles.js +115 -0
  62. package/dist/cjs/helpers/expandStyles.js.map +7 -0
  63. package/dist/cjs/helpers/extendStaticConfig.js +48 -37
  64. package/dist/cjs/helpers/extendStaticConfig.js.map +2 -2
  65. package/dist/cjs/helpers/fixNativeShadow.js +3 -3
  66. package/dist/cjs/helpers/fixNativeShadow.js.map +1 -1
  67. package/dist/cjs/helpers/getAnimationDriver.js +32 -0
  68. package/dist/cjs/helpers/getAnimationDriver.js.map +7 -0
  69. package/dist/cjs/helpers/getExpandedShorthands.js +4 -5
  70. package/dist/cjs/helpers/getExpandedShorthands.js.map +2 -2
  71. package/dist/cjs/helpers/{getTextSize.js → getFont.js} +22 -12
  72. package/dist/cjs/helpers/getFont.js.map +7 -0
  73. package/dist/cjs/helpers/getFontLanguage.js +29 -0
  74. package/dist/cjs/helpers/getFontLanguage.js.map +7 -0
  75. package/dist/cjs/helpers/getSize.js +19 -10
  76. package/dist/cjs/helpers/getSize.js.map +2 -2
  77. package/dist/cjs/helpers/getSplitStyles.js +516 -212
  78. package/dist/cjs/helpers/getSplitStyles.js.map +3 -3
  79. package/dist/cjs/helpers/getStackSize.js +46 -0
  80. package/dist/cjs/helpers/getStackSize.js.map +7 -0
  81. package/dist/cjs/helpers/getStylesAtomic.js +177 -131
  82. package/dist/cjs/helpers/getStylesAtomic.js.map +2 -2
  83. package/dist/cjs/helpers/getStylesAtomic.native.js +1 -2
  84. package/dist/cjs/helpers/getStylesAtomic.native.js.map +1 -1
  85. package/dist/cjs/helpers/getThemeCSSRules.js +103 -0
  86. package/dist/cjs/helpers/getThemeCSSRules.js.map +7 -0
  87. package/dist/cjs/{nativeGestureHandler.native.js → helpers/getThemeCSSRules.native.js} +18 -5
  88. package/dist/cjs/helpers/getThemeCSSRules.native.js.map +7 -0
  89. package/dist/cjs/helpers/getVariantExtras.js +89 -0
  90. package/dist/cjs/helpers/getVariantExtras.js.map +7 -0
  91. package/dist/cjs/helpers/insertStyleRule.js +90 -51
  92. package/dist/cjs/helpers/insertStyleRule.js.map +3 -3
  93. package/dist/cjs/helpers/isObj.js +2 -2
  94. package/dist/cjs/helpers/isObj.js.map +1 -1
  95. package/dist/cjs/helpers/isTamaguiComponent.js +37 -0
  96. package/dist/cjs/helpers/isTamaguiComponent.js.map +7 -0
  97. package/dist/cjs/helpers/isTamaguiElement.js +5 -5
  98. package/dist/cjs/helpers/isTamaguiElement.js.map +2 -2
  99. package/dist/cjs/helpers/matchMedia.js +7 -6
  100. package/dist/cjs/helpers/matchMedia.js.map +2 -2
  101. package/dist/cjs/helpers/matchMedia.native.js +6 -3
  102. package/dist/cjs/helpers/matchMedia.native.js.map +2 -2
  103. package/dist/cjs/helpers/mergeProps.js +54 -0
  104. package/dist/cjs/helpers/mergeProps.js.map +7 -0
  105. package/dist/cjs/helpers/mergeTransform.js +42 -0
  106. package/dist/cjs/helpers/mergeTransform.js.map +7 -0
  107. package/dist/cjs/helpers/normalizeColor.js +80 -0
  108. package/dist/cjs/helpers/normalizeColor.js.map +7 -0
  109. package/dist/cjs/helpers/normalizeValueWithProperty.js +123 -0
  110. package/dist/cjs/helpers/normalizeValueWithProperty.js.map +7 -0
  111. package/dist/cjs/helpers/proxyThemeVariables.js +4 -4
  112. package/dist/cjs/helpers/proxyThemeVariables.js.map +2 -2
  113. package/dist/cjs/helpers/pseudoDescriptors.js +42 -0
  114. package/dist/cjs/helpers/pseudoDescriptors.js.map +7 -0
  115. package/dist/cjs/helpers/registerCSSVariable.js +40 -0
  116. package/dist/cjs/helpers/registerCSSVariable.js.map +7 -0
  117. package/dist/cjs/helpers/{wrapThemeManagerContext.js → startTransition.js} +12 -15
  118. package/dist/cjs/helpers/startTransition.js.map +7 -0
  119. package/dist/cjs/helpers/themeable.js +17 -40
  120. package/dist/cjs/helpers/themeable.js.map +3 -3
  121. package/dist/cjs/helpers/themes.js +79 -0
  122. package/dist/cjs/helpers/themes.js.map +7 -0
  123. package/dist/cjs/helpers/useShallowSetState.js +44 -0
  124. package/dist/cjs/helpers/useShallowSetState.js.map +7 -0
  125. package/dist/cjs/helpers/validate.js +1 -122
  126. package/dist/cjs/helpers/validate.js.map +3 -3
  127. package/dist/cjs/helpers/withStaticProperties.js +3 -3
  128. package/dist/cjs/helpers/withStaticProperties.js.map +1 -1
  129. package/dist/cjs/hooks/getThemeUnwrapped.js +37 -0
  130. package/dist/cjs/hooks/getThemeUnwrapped.js.map +7 -0
  131. package/dist/cjs/hooks/useConstant.js +4 -2
  132. package/dist/cjs/hooks/useConstant.js.map +2 -2
  133. package/dist/cjs/hooks/useElementLayout.js +92 -0
  134. package/dist/cjs/hooks/useElementLayout.js.map +7 -0
  135. package/dist/cjs/hooks/useId.js +3 -33
  136. package/dist/cjs/hooks/useId.js.map +2 -2
  137. package/dist/cjs/hooks/useIsMounted.js +3 -4
  138. package/dist/cjs/hooks/useIsMounted.js.map +2 -2
  139. package/dist/cjs/hooks/useIsTouchDevice.js +6 -12
  140. package/dist/cjs/hooks/useIsTouchDevice.js.map +2 -2
  141. package/dist/cjs/hooks/useMedia.js +166 -123
  142. package/dist/cjs/hooks/useMedia.js.map +3 -3
  143. package/dist/cjs/hooks/usePressable.js +4 -18
  144. package/dist/cjs/hooks/usePressable.js.map +1 -1
  145. package/dist/cjs/hooks/useSafeRef.js +58 -0
  146. package/dist/cjs/hooks/useSafeRef.js.map +7 -0
  147. package/dist/cjs/hooks/useServerHooks.js +36 -0
  148. package/dist/cjs/hooks/useServerHooks.js.map +7 -0
  149. package/dist/cjs/hooks/useTheme.js +168 -134
  150. package/dist/cjs/hooks/useTheme.js.map +3 -3
  151. package/dist/cjs/hooks/useUnmountEffect.js +1 -2
  152. package/dist/cjs/hooks/useUnmountEffect.js.map +1 -1
  153. package/dist/cjs/index.js +49 -26
  154. package/dist/cjs/index.js.map +2 -2
  155. package/dist/cjs/inject-styles.js +40 -0
  156. package/dist/cjs/inject-styles.js.map +7 -0
  157. package/dist/cjs/injectStyles.js +40 -0
  158. package/dist/cjs/injectStyles.js.map +7 -0
  159. package/dist/cjs/insertFont.js +93 -0
  160. package/dist/cjs/insertFont.js.map +7 -0
  161. package/dist/cjs/react-native.js +22 -0
  162. package/dist/cjs/react-native.js.map +7 -0
  163. package/dist/cjs/setupReactNative.js +37 -0
  164. package/dist/cjs/setupReactNative.js.map +7 -0
  165. package/dist/cjs/static.js +2 -15
  166. package/dist/cjs/static.js.map +2 -2
  167. package/dist/cjs/styled.js +57 -51
  168. package/dist/cjs/styled.js.map +2 -2
  169. package/dist/cjs/types-rnw.js +1 -0
  170. package/dist/cjs/types-rnw.js.map +2 -2
  171. package/dist/cjs/types.js +1 -0
  172. package/dist/cjs/types.js.map +2 -2
  173. package/dist/cjs/updateTheme.js +47 -0
  174. package/dist/cjs/updateTheme.js.map +7 -0
  175. package/dist/cjs/vendor/Pressability.js +32 -0
  176. package/dist/cjs/vendor/Pressability.js.map +7 -0
  177. package/dist/cjs/vendor/Pressability.native.js +32 -0
  178. package/dist/cjs/vendor/Pressability.native.js.map +7 -0
  179. package/dist/cjs/views/FontLanguage.js +38 -0
  180. package/dist/cjs/views/FontLanguage.js.map +7 -0
  181. package/dist/cjs/views/FontLanguage.native.js +38 -0
  182. package/dist/cjs/views/FontLanguage.native.js.map +7 -0
  183. package/dist/cjs/{helpers/nativeGestureHandler.native.js → views/FontLanguage.types.js} +4 -5
  184. package/dist/cjs/views/FontLanguage.types.js.map +7 -0
  185. package/dist/cjs/views/Slot.js +64 -72
  186. package/dist/cjs/views/Slot.js.map +2 -2
  187. package/dist/cjs/views/Stack.js +4 -19
  188. package/dist/cjs/views/Stack.js.map +2 -2
  189. package/dist/cjs/views/TamaguiProvider.js +83 -0
  190. package/dist/cjs/views/TamaguiProvider.js.map +7 -0
  191. package/dist/cjs/views/Text.js +29 -29
  192. package/dist/cjs/views/Text.js.map +2 -2
  193. package/dist/cjs/views/Theme.js +43 -21
  194. package/dist/cjs/views/Theme.js.map +3 -3
  195. package/dist/cjs/views/ThemeInverse.js +25 -25
  196. package/dist/cjs/views/ThemeInverse.js.map +2 -2
  197. package/dist/cjs/views/ThemeProvider.js +35 -23
  198. package/dist/cjs/views/ThemeProvider.js.map +3 -3
  199. package/dist/cjs/views/ThemeReset.js +26 -20
  200. package/dist/cjs/views/ThemeReset.js.map +3 -3
  201. package/dist/esm/Tamagui.js +11 -12
  202. package/dist/esm/Tamagui.js.map +2 -2
  203. package/dist/esm/addTheme.js +56 -0
  204. package/dist/esm/addTheme.js.map +7 -0
  205. package/dist/esm/config.js +44 -0
  206. package/dist/esm/config.js.map +7 -0
  207. package/dist/esm/constants/constants.js +12 -8
  208. package/dist/esm/constants/constants.js.map +2 -2
  209. package/dist/esm/constants/isDevTools.js +5 -0
  210. package/dist/esm/constants/isDevTools.js.map +7 -0
  211. package/dist/esm/constants/platform.js +25 -12
  212. package/dist/esm/constants/platform.js.map +2 -2
  213. package/dist/esm/constants/platform.native.js +28 -0
  214. package/dist/esm/constants/platform.native.js.map +7 -0
  215. package/dist/esm/contexts/ButtonInsideButtonContext.js +0 -0
  216. package/dist/esm/contexts/ButtonInsideButtonContext.js.map +1 -1
  217. package/dist/esm/contexts/FontLanguageContext.js +6 -0
  218. package/dist/esm/contexts/FontLanguageContext.js.map +7 -0
  219. package/dist/esm/contexts/TextAncestorContext.js +6 -0
  220. package/dist/esm/contexts/TextAncestorContext.js.map +7 -0
  221. package/dist/esm/{ThemeContext.js → contexts/ThemeContext.js} +0 -0
  222. package/dist/esm/contexts/ThemeContext.js.map +7 -0
  223. package/dist/esm/createComponent.js +842 -415
  224. package/dist/esm/createComponent.js.map +3 -3
  225. package/dist/esm/createFont.js +4 -9
  226. package/dist/esm/createFont.js.map +2 -2
  227. package/dist/esm/createShorthands.js +0 -3
  228. package/dist/esm/createShorthands.js.map +2 -2
  229. package/dist/esm/createTamagui.js +134 -165
  230. package/dist/esm/createTamagui.js.map +3 -3
  231. package/dist/esm/createTheme.js +3 -3
  232. package/dist/esm/createTheme.js.map +2 -2
  233. package/dist/esm/createTokens.js +3 -24
  234. package/dist/esm/createTokens.js.map +2 -2
  235. package/dist/esm/createVariable.js +46 -26
  236. package/dist/esm/createVariable.js.map +2 -2
  237. package/dist/esm/createVariables.js +28 -0
  238. package/dist/esm/createVariables.js.map +7 -0
  239. package/dist/esm/helpers/RNComponents.js +11 -8
  240. package/dist/esm/helpers/RNComponents.js.map +2 -2
  241. package/dist/esm/{ThemeManager.js → helpers/ThemeManager.js} +54 -61
  242. package/dist/esm/helpers/ThemeManager.js.map +7 -0
  243. package/dist/esm/helpers/areEqualSets.js +2 -4
  244. package/dist/esm/helpers/areEqualSets.js.map +1 -1
  245. package/dist/esm/helpers/assignNativePropsToWeb.js +164 -0
  246. package/dist/esm/helpers/assignNativePropsToWeb.js.map +7 -0
  247. package/dist/esm/helpers/assignNativePropsToWeb.native.js +6 -0
  248. package/dist/esm/helpers/assignNativePropsToWeb.native.js.map +7 -0
  249. package/dist/esm/helpers/cache.js +18 -0
  250. package/dist/esm/helpers/cache.js.map +7 -0
  251. package/dist/esm/helpers/calc.js +47 -0
  252. package/dist/esm/helpers/calc.js.map +7 -0
  253. package/dist/esm/helpers/createMediaStyle.js +25 -13
  254. package/dist/esm/helpers/createMediaStyle.js.map +2 -2
  255. package/dist/esm/helpers/createPropMapper.js +267 -123
  256. package/dist/esm/helpers/createPropMapper.js.map +2 -2
  257. package/dist/esm/helpers/createProxy.js +19 -0
  258. package/dist/esm/helpers/createProxy.js.map +7 -0
  259. package/dist/esm/helpers/expandStyle.js +66 -0
  260. package/dist/esm/helpers/expandStyle.js.map +7 -0
  261. package/dist/esm/helpers/expandStyles.js +89 -0
  262. package/dist/esm/helpers/expandStyles.js.map +7 -0
  263. package/dist/esm/helpers/extendStaticConfig.js +34 -28
  264. package/dist/esm/helpers/extendStaticConfig.js.map +2 -2
  265. package/dist/esm/helpers/fixNativeShadow.js +2 -4
  266. package/dist/esm/helpers/fixNativeShadow.js.map +1 -1
  267. package/dist/esm/helpers/getAnimationDriver.js +8 -0
  268. package/dist/esm/helpers/getAnimationDriver.js.map +7 -0
  269. package/dist/esm/helpers/getExpandedShorthands.js +2 -5
  270. package/dist/esm/helpers/getExpandedShorthands.js.map +2 -2
  271. package/dist/esm/helpers/{getTextSize.js → getFont.js} +17 -9
  272. package/dist/esm/helpers/getFont.js.map +7 -0
  273. package/dist/esm/helpers/getFontLanguage.js +5 -0
  274. package/dist/esm/helpers/getFontLanguage.js.map +7 -0
  275. package/dist/esm/helpers/getSize.js +16 -10
  276. package/dist/esm/helpers/getSize.js.map +2 -2
  277. package/dist/esm/helpers/getSplitStyles.js +511 -196
  278. package/dist/esm/helpers/getSplitStyles.js.map +3 -3
  279. package/dist/esm/helpers/getStackSize.js +22 -0
  280. package/dist/esm/helpers/getStackSize.js.map +7 -0
  281. package/dist/esm/helpers/getStylesAtomic.js +174 -108
  282. package/dist/esm/helpers/getStylesAtomic.js.map +2 -2
  283. package/dist/esm/helpers/getStylesAtomic.native.js +0 -3
  284. package/dist/esm/helpers/getStylesAtomic.native.js.map +1 -1
  285. package/dist/esm/helpers/getThemeCSSRules.js +79 -0
  286. package/dist/esm/helpers/getThemeCSSRules.js.map +7 -0
  287. package/dist/esm/helpers/getThemeCSSRules.native.js +7 -0
  288. package/dist/esm/helpers/getThemeCSSRules.native.js.map +7 -0
  289. package/dist/esm/helpers/getVariantExtras.js +64 -0
  290. package/dist/esm/helpers/getVariantExtras.js.map +7 -0
  291. package/dist/esm/helpers/insertStyleRule.js +85 -49
  292. package/dist/esm/helpers/insertStyleRule.js.map +3 -3
  293. package/dist/esm/helpers/isObj.js +1 -3
  294. package/dist/esm/helpers/isObj.js.map +1 -1
  295. package/dist/esm/helpers/isTamaguiComponent.js +13 -0
  296. package/dist/esm/helpers/isTamaguiComponent.js.map +7 -0
  297. package/dist/esm/helpers/isTamaguiElement.js +4 -6
  298. package/dist/esm/helpers/isTamaguiElement.js.map +2 -2
  299. package/dist/esm/helpers/matchMedia.js +6 -7
  300. package/dist/esm/helpers/matchMedia.js.map +2 -2
  301. package/dist/esm/helpers/matchMedia.native.js +1 -3
  302. package/dist/esm/helpers/matchMedia.native.js.map +1 -1
  303. package/dist/esm/helpers/mergeProps.js +30 -0
  304. package/dist/esm/helpers/mergeProps.js.map +7 -0
  305. package/dist/esm/helpers/mergeTransform.js +17 -0
  306. package/dist/esm/helpers/mergeTransform.js.map +7 -0
  307. package/dist/esm/helpers/normalizeColor.js +49 -0
  308. package/dist/esm/helpers/normalizeColor.js.map +7 -0
  309. package/dist/esm/helpers/normalizeValueWithProperty.js +98 -0
  310. package/dist/esm/helpers/normalizeValueWithProperty.js.map +7 -0
  311. package/dist/esm/helpers/proxyThemeVariables.js +3 -5
  312. package/dist/esm/helpers/proxyThemeVariables.js.map +2 -2
  313. package/dist/esm/helpers/pseudoDescriptors.js +18 -0
  314. package/dist/esm/helpers/pseudoDescriptors.js.map +7 -0
  315. package/dist/esm/helpers/registerCSSVariable.js +14 -0
  316. package/dist/esm/helpers/registerCSSVariable.js.map +7 -0
  317. package/dist/esm/helpers/startTransition.js +6 -0
  318. package/dist/esm/helpers/startTransition.js.map +7 -0
  319. package/dist/esm/helpers/themeable.js +11 -9
  320. package/dist/esm/helpers/themeable.js.map +2 -2
  321. package/dist/esm/helpers/themes.js +54 -0
  322. package/dist/esm/helpers/themes.js.map +7 -0
  323. package/dist/esm/helpers/useShallowSetState.js +20 -0
  324. package/dist/esm/helpers/useShallowSetState.js.map +7 -0
  325. package/dist/esm/helpers/validate.js +0 -75
  326. package/dist/esm/helpers/validate.js.map +3 -3
  327. package/dist/esm/helpers/withStaticProperties.js +2 -4
  328. package/dist/esm/helpers/withStaticProperties.js.map +1 -1
  329. package/dist/esm/hooks/getThemeUnwrapped.js +12 -0
  330. package/dist/esm/hooks/getThemeUnwrapped.js.map +7 -0
  331. package/dist/esm/hooks/useConstant.js +4 -4
  332. package/dist/esm/hooks/useConstant.js.map +2 -2
  333. package/dist/esm/hooks/useElementLayout.js +66 -0
  334. package/dist/esm/hooks/useElementLayout.js.map +7 -0
  335. package/dist/esm/hooks/useId.js +1 -31
  336. package/dist/esm/hooks/useId.js.map +2 -2
  337. package/dist/esm/hooks/useIsMounted.js +1 -4
  338. package/dist/esm/hooks/useIsMounted.js.map +2 -2
  339. package/dist/esm/hooks/useIsTouchDevice.js +5 -13
  340. package/dist/esm/hooks/useIsTouchDevice.js.map +2 -2
  341. package/dist/esm/hooks/useMedia.js +159 -113
  342. package/dist/esm/hooks/useMedia.js.map +3 -3
  343. package/dist/esm/hooks/usePressable.js +2 -4
  344. package/dist/esm/hooks/usePressable.js.map +1 -1
  345. package/dist/esm/hooks/useSafeRef.js +34 -0
  346. package/dist/esm/hooks/useSafeRef.js.map +7 -0
  347. package/dist/esm/hooks/useServerHooks.js +11 -0
  348. package/dist/esm/hooks/useServerHooks.js.map +7 -0
  349. package/dist/esm/hooks/useTheme.js +161 -111
  350. package/dist/esm/hooks/useTheme.js.map +3 -3
  351. package/dist/esm/hooks/useUnmountEffect.js +0 -3
  352. package/dist/esm/hooks/useUnmountEffect.js.map +1 -1
  353. package/dist/esm/index.js +44 -18
  354. package/dist/esm/index.js.map +2 -2
  355. package/dist/esm/inject-styles.js +16 -0
  356. package/dist/esm/inject-styles.js.map +7 -0
  357. package/dist/esm/injectStyles.js +16 -0
  358. package/dist/esm/injectStyles.js.map +7 -0
  359. package/dist/esm/insertFont.js +67 -0
  360. package/dist/esm/insertFont.js.map +7 -0
  361. package/dist/esm/react-native.js +3 -0
  362. package/dist/esm/react-native.js.map +7 -0
  363. package/dist/esm/setupReactNative.js +12 -0
  364. package/dist/esm/setupReactNative.js.map +7 -0
  365. package/dist/esm/static.js +1 -15
  366. package/dist/esm/static.js.map +2 -2
  367. package/dist/esm/styled.js +50 -19
  368. package/dist/esm/styled.js.map +2 -2
  369. package/dist/esm/types-rnw.js +0 -0
  370. package/dist/esm/types-rnw.js.map +0 -0
  371. package/dist/esm/types.js +0 -0
  372. package/dist/esm/types.js.map +0 -0
  373. package/dist/esm/updateTheme.js +23 -0
  374. package/dist/esm/updateTheme.js.map +7 -0
  375. package/dist/esm/vendor/Pressability.js +7 -0
  376. package/dist/esm/vendor/Pressability.js.map +7 -0
  377. package/dist/esm/vendor/Pressability.native.js +7 -0
  378. package/dist/esm/vendor/Pressability.native.js.map +7 -0
  379. package/dist/esm/views/FontLanguage.js +14 -0
  380. package/dist/esm/views/FontLanguage.js.map +7 -0
  381. package/dist/esm/views/FontLanguage.native.js +14 -0
  382. package/dist/esm/views/FontLanguage.native.js.map +7 -0
  383. package/dist/esm/views/FontLanguage.types.js +1 -0
  384. package/dist/{cjs/defaultComponentState.js.map → esm/views/FontLanguage.types.js.map} +0 -0
  385. package/dist/esm/views/Slot.js +55 -37
  386. package/dist/esm/views/Slot.js.map +2 -2
  387. package/dist/esm/views/Stack.js +0 -0
  388. package/dist/esm/views/Stack.js.map +2 -2
  389. package/dist/esm/views/TamaguiProvider.js +53 -0
  390. package/dist/esm/views/TamaguiProvider.js.map +7 -0
  391. package/dist/esm/views/Text.js +14 -5
  392. package/dist/esm/views/Text.js.map +2 -2
  393. package/dist/esm/views/Theme.js +35 -19
  394. package/dist/esm/views/Theme.js.map +3 -3
  395. package/dist/esm/views/ThemeInverse.js +22 -20
  396. package/dist/esm/views/ThemeInverse.js.map +2 -2
  397. package/dist/esm/views/ThemeProvider.js +28 -21
  398. package/dist/esm/views/ThemeProvider.js.map +2 -2
  399. package/dist/esm/views/ThemeReset.js +21 -20
  400. package/dist/esm/views/ThemeReset.js.map +2 -2
  401. package/package.json +52 -16
  402. package/reset.css +25 -4
  403. package/src/Tamagui.ts +48 -0
  404. package/src/addTheme.ts +68 -0
  405. package/src/config.ts +44 -0
  406. package/src/constants/constants.ts +19 -0
  407. package/src/constants/isDevTools.ts +6 -0
  408. package/src/contexts/ButtonInsideButtonContext.tsx +3 -0
  409. package/src/contexts/FontLanguageContext.tsx +5 -0
  410. package/src/contexts/TextAncestorContext.tsx +3 -0
  411. package/src/contexts/ThemeContext.tsx +5 -0
  412. package/src/createComponent.tsx +1461 -0
  413. package/src/createFont.ts +29 -0
  414. package/src/createShorthands.ts +7 -0
  415. package/src/createTamagui.ts +226 -0
  416. package/src/createTheme.ts +13 -0
  417. package/src/createTokens.ts +35 -0
  418. package/src/createVariable.ts +83 -0
  419. package/src/createVariables.ts +42 -0
  420. package/src/helpers/RNComponents.tsx +14 -0
  421. package/src/helpers/ThemeManager.tsx +227 -0
  422. package/src/helpers/areEqualSets.tsx +9 -0
  423. package/src/helpers/assignNativePropsToWeb.native.tsx +1 -0
  424. package/src/helpers/cache.ts +18 -0
  425. package/src/helpers/createMediaStyle.ts +55 -0
  426. package/src/helpers/createPropMapper.ts +526 -0
  427. package/src/helpers/createProxy.ts +16 -0
  428. package/src/helpers/expandStyle.ts +81 -0
  429. package/src/helpers/expandStyles.ts +106 -0
  430. package/src/helpers/extendStaticConfig.ts +75 -0
  431. package/src/helpers/fixNativeShadow.tsx +2 -0
  432. package/src/helpers/getAnimationDriver.tsx +5 -0
  433. package/src/helpers/getExpandedShorthands.ts +15 -0
  434. package/src/helpers/getFontLanguage.ts +2 -0
  435. package/src/helpers/getSize.ts +22 -0
  436. package/src/helpers/getSplitStyles.tsx +856 -0
  437. package/src/helpers/getStylesAtomic.native.ts +3 -0
  438. package/src/helpers/getStylesAtomic.ts +272 -0
  439. package/src/helpers/getThemeCSSRules.native.ts +3 -0
  440. package/src/helpers/getThemeCSSRules.ts +105 -0
  441. package/src/helpers/getVariantExtras.tsx +85 -0
  442. package/src/helpers/insertStyleRule.tsx +158 -0
  443. package/src/helpers/isObj.ts +1 -0
  444. package/src/helpers/isTamaguiComponent.tsx +15 -0
  445. package/src/helpers/isTamaguiElement.tsx +12 -0
  446. package/src/helpers/matchMedia.native.ts +6 -0
  447. package/src/helpers/matchMedia.ts +17 -0
  448. package/src/helpers/mergeProps.ts +56 -0
  449. package/src/helpers/mergeTransform.ts +16 -0
  450. package/src/helpers/normalizeColor.ts +53 -0
  451. package/src/helpers/normalizeValueWithProperty.ts +110 -0
  452. package/src/helpers/proxyThemeVariables.tsx +15 -0
  453. package/src/helpers/pseudoDescriptors.ts +18 -0
  454. package/src/helpers/registerCSSVariable.ts +11 -0
  455. package/src/helpers/themeable.tsx +45 -0
  456. package/src/helpers/themes.ts +69 -0
  457. package/src/helpers/useShallowSetState.tsx +19 -0
  458. package/src/helpers/withStaticProperties.tsx +7 -0
  459. package/src/hooks/getThemeUnwrapped.tsx +7 -0
  460. package/src/hooks/useElementLayout.tsx +90 -0
  461. package/src/hooks/useId.tsx +1 -0
  462. package/src/hooks/useIsTouchDevice.tsx +6 -0
  463. package/src/hooks/useMedia.tsx +265 -0
  464. package/src/hooks/useSafeRef.ts +48 -0
  465. package/src/hooks/useServerHooks.tsx +12 -0
  466. package/src/hooks/useTheme.tsx +300 -0
  467. package/src/index.ts +74 -0
  468. package/src/inject-styles.ts +20 -0
  469. package/src/insertFont.ts +70 -0
  470. package/src/setupReactNative.ts +9 -0
  471. package/src/static.ts +5 -0
  472. package/src/styled.tsx +204 -0
  473. package/src/types-rnw.tsx +162 -0
  474. package/src/types.tsx +1324 -0
  475. package/src/updateTheme.ts +23 -0
  476. package/src/vendor/Pressability.native.tsx +3 -0
  477. package/src/vendor/Pressability.tsx +2 -0
  478. package/src/views/FontLanguage.native.tsx +10 -0
  479. package/src/views/FontLanguage.tsx +18 -0
  480. package/src/views/FontLanguage.types.ts +13 -0
  481. package/src/views/Slot.tsx +147 -0
  482. package/src/views/Stack.tsx +24 -0
  483. package/src/views/TamaguiProvider.tsx +56 -0
  484. package/src/views/Text.tsx +81 -0
  485. package/src/views/Theme.tsx +72 -0
  486. package/src/views/ThemeInverse.tsx +33 -0
  487. package/src/views/ThemeProvider.tsx +63 -0
  488. package/src/views/ThemeReset.tsx +43 -0
  489. package/types/Tamagui.d.ts +11 -11
  490. package/types/addTheme.d.ts +11 -0
  491. package/types/config.d.ts +47 -0
  492. package/types/constants/constants.d.ts +15 -4
  493. package/types/constants/isDevTools.d.ts +2 -0
  494. package/types/constants/platform.d.ts +7 -6
  495. package/types/constants/platform.native.d.ts +13 -0
  496. package/types/contexts/FontLanguageContext.d.ts +5 -0
  497. package/types/contexts/TextAncestorContext.d.ts +3 -0
  498. package/types/{ThemeContext.d.ts → contexts/ThemeContext.d.ts} +1 -1
  499. package/types/createComponent.d.ts +17 -15
  500. package/types/createShorthands.d.ts +2 -1
  501. package/types/createTamagui.d.ts +2 -17
  502. package/types/createTheme.d.ts +1 -1
  503. package/types/createTokens.d.ts +5 -6
  504. package/types/createVariable.d.ts +24 -12
  505. package/types/createVariables.d.ts +10 -0
  506. package/types/helpers/RNComponents.d.ts +1 -1
  507. package/types/helpers/ThemeManager.d.ts +45 -0
  508. package/types/helpers/assignNativePropsToWeb.d.ts +2 -0
  509. package/types/helpers/assignNativePropsToWeb.native.d.ts +2 -0
  510. package/types/helpers/cache.d.ts +12 -0
  511. package/types/helpers/calc.d.ts +1 -0
  512. package/types/helpers/createMediaStyle.d.ts +2 -4
  513. package/types/helpers/createPropMapper.d.ts +6 -3
  514. package/types/helpers/createProxy.d.ts +2 -0
  515. package/types/helpers/expandStyle.d.ts +6 -0
  516. package/types/helpers/expandStyles.d.ts +26 -0
  517. package/types/helpers/getAnimationDriver.d.ts +6 -0
  518. package/types/helpers/getFont.d.ts +3 -0
  519. package/types/helpers/getFontLanguage.d.ts +2 -0
  520. package/types/helpers/getSize.d.ts +3 -2
  521. package/types/helpers/getSplitStyles.d.ts +15 -12
  522. package/types/helpers/getStackSize.d.ts +8 -0
  523. package/types/helpers/getStylesAtomic.d.ts +14 -23
  524. package/types/helpers/getThemeCSSRules.d.ts +8 -0
  525. package/types/helpers/getThemeCSSRules.native.d.ts +2 -0
  526. package/types/helpers/getVariantExtras.d.ts +5 -0
  527. package/types/helpers/insertStyleRule.d.ts +8 -4
  528. package/types/helpers/isTamaguiComponent.d.ts +5 -0
  529. package/types/helpers/isTamaguiElement.d.ts +5 -1
  530. package/types/helpers/matchMedia.d.ts +1 -1
  531. package/types/helpers/mergeProps.d.ts +17 -0
  532. package/types/helpers/mergeTransform.d.ts +7 -0
  533. package/types/helpers/normalizeColor.d.ts +3 -0
  534. package/types/helpers/normalizeValueWithProperty.d.ts +7 -0
  535. package/types/helpers/pseudoDescriptors.d.ts +16 -0
  536. package/types/helpers/registerCSSVariable.d.ts +5 -0
  537. package/types/helpers/startTransition.d.ts +3 -0
  538. package/types/helpers/themes.d.ts +4 -0
  539. package/types/helpers/useShallowSetState.d.ts +3 -0
  540. package/types/helpers/validate.d.ts +0 -3
  541. package/types/hooks/getThemeUnwrapped.d.ts +3 -0
  542. package/types/hooks/useElementLayout.d.ts +27 -0
  543. package/types/hooks/useId.d.ts +1 -8
  544. package/types/hooks/useMedia.d.ts +22 -6
  545. package/types/hooks/useMedia.test.d.ts +1 -0
  546. package/types/hooks/usePressablePressResponder.d.ts +84 -0
  547. package/types/hooks/useSafeRef.d.ts +4 -0
  548. package/types/hooks/useServerHooks.d.ts +4 -0
  549. package/types/hooks/useTheme.d.ts +21 -31
  550. package/types/index.d.ts +25 -14
  551. package/types/inject-styles.d.ts +7 -0
  552. package/types/injectStyles.d.ts +7 -0
  553. package/types/insertFont.d.ts +9 -0
  554. package/types/react-native.d.ts +8 -0
  555. package/types/setupReactNative.d.ts +3 -0
  556. package/types/static.d.ts +1 -15
  557. package/types/styled.d.ts +7 -3
  558. package/types/types.d.ts +311 -106
  559. package/types/updateTheme.d.ts +9 -0
  560. package/types/vendor/Pressability.d.ts +3 -0
  561. package/types/vendor/Pressability.native.d.ts +3 -0
  562. package/types/views/AbsoluteFill.d.ts +5 -0
  563. package/types/views/AbsoluteFill.native.d.ts +3 -0
  564. package/types/views/FontLanguage.d.ts +4 -0
  565. package/types/views/FontLanguage.native.d.ts +4 -0
  566. package/types/views/FontLanguage.types.d.ts +11 -0
  567. package/types/views/Slot.d.ts +5 -4
  568. package/types/views/Stack.d.ts +1 -1
  569. package/types/views/TamaguiProvider.d.ts +4 -0
  570. package/types/views/Text.d.ts +1 -1
  571. package/types/views/Theme.d.ts +3 -9
  572. package/types/views/ThemeInverse.d.ts +4 -8
  573. package/types/views/ThemeProvider.d.ts +2 -1
  574. package/dist/cjs/ThemeContext.js.map +0 -7
  575. package/dist/cjs/ThemeManager.js.map +0 -7
  576. package/dist/cjs/conf.js.map +0 -7
  577. package/dist/cjs/constants/rnw.js +0 -46
  578. package/dist/cjs/constants/rnw.js.map +0 -7
  579. package/dist/cjs/defaultComponentState.js +0 -1
  580. package/dist/cjs/helpers/addStylesUsingClassname.js +0 -87
  581. package/dist/cjs/helpers/addStylesUsingClassname.js.map +0 -7
  582. package/dist/cjs/helpers/createShallowUpdate.js +0 -55
  583. package/dist/cjs/helpers/createShallowUpdate.js.map +0 -7
  584. package/dist/cjs/helpers/createTamaguiProvider.js +0 -93
  585. package/dist/cjs/helpers/createTamaguiProvider.js.map +0 -7
  586. package/dist/cjs/helpers/fixNativeShadow.native.js +0 -53
  587. package/dist/cjs/helpers/fixNativeShadow.native.js.map +0 -7
  588. package/dist/cjs/helpers/getButtonSize.js +0 -45
  589. package/dist/cjs/helpers/getButtonSize.js.map +0 -7
  590. package/dist/cjs/helpers/getTextSize.js.map +0 -7
  591. package/dist/cjs/helpers/nativeGestureHandler.js.map +0 -7
  592. package/dist/cjs/helpers/nativeGestureHandler.native.js.map +0 -7
  593. package/dist/cjs/helpers/wrapThemeManagerContext.js.map +0 -7
  594. package/dist/cjs/hooks/useFeatures.js +0 -228
  595. package/dist/cjs/hooks/useFeatures.js.map +0 -7
  596. package/dist/cjs/hooks/usePrevious.js +0 -1
  597. package/dist/cjs/hooks/usePrevious.js.map +0 -7
  598. package/dist/cjs/nativeGestureHandler.native.js.map +0 -7
  599. package/dist/cjs/views/TextAncestorContext.js +0 -45
  600. package/dist/cjs/views/TextAncestorContext.js.map +0 -7
  601. package/dist/esm/ThemeContext.js.map +0 -7
  602. package/dist/esm/ThemeManager.js.map +0 -7
  603. package/dist/esm/conf.js +0 -36
  604. package/dist/esm/conf.js.map +0 -7
  605. package/dist/esm/constants/rnw.js +0 -24
  606. package/dist/esm/constants/rnw.js.map +0 -7
  607. package/dist/esm/defaultComponentState.js +0 -1
  608. package/dist/esm/defaultComponentState.js.map +0 -7
  609. package/dist/esm/helpers/addStylesUsingClassname.js +0 -64
  610. package/dist/esm/helpers/addStylesUsingClassname.js.map +0 -7
  611. package/dist/esm/helpers/createShallowUpdate.js +0 -19
  612. package/dist/esm/helpers/createShallowUpdate.js.map +0 -7
  613. package/dist/esm/helpers/createTamaguiProvider.js +0 -40
  614. package/dist/esm/helpers/createTamaguiProvider.js.map +0 -7
  615. package/dist/esm/helpers/fixNativeShadow.native.js +0 -32
  616. package/dist/esm/helpers/fixNativeShadow.native.js.map +0 -7
  617. package/dist/esm/helpers/getButtonSize.js +0 -24
  618. package/dist/esm/helpers/getButtonSize.js.map +0 -7
  619. package/dist/esm/helpers/getTextSize.js.map +0 -7
  620. package/dist/esm/helpers/nativeGestureHandler.js +0 -7
  621. package/dist/esm/helpers/nativeGestureHandler.js.map +0 -7
  622. package/dist/esm/helpers/nativeGestureHandler.native.js +0 -2
  623. package/dist/esm/helpers/nativeGestureHandler.native.js.map +0 -7
  624. package/dist/esm/helpers/wrapThemeManagerContext.js +0 -14
  625. package/dist/esm/helpers/wrapThemeManagerContext.js.map +0 -7
  626. package/dist/esm/hooks/useFeatures.js +0 -173
  627. package/dist/esm/hooks/useFeatures.js.map +0 -7
  628. package/dist/esm/hooks/usePrevious.js +0 -1
  629. package/dist/esm/hooks/usePrevious.js.map +0 -7
  630. package/dist/esm/nativeGestureHandler.native.js +0 -2
  631. package/dist/esm/nativeGestureHandler.native.js.map +0 -7
  632. package/dist/esm/views/TextAncestorContext.js +0 -18
  633. package/dist/esm/views/TextAncestorContext.js.map +0 -7
  634. package/dist/jsx/Tamagui.js +0 -41
  635. package/dist/jsx/ThemeContext.js +0 -5
  636. package/dist/jsx/ThemeManager.js +0 -186
  637. package/dist/jsx/conf.js +0 -35
  638. package/dist/jsx/constants/constants.js +0 -17
  639. package/dist/jsx/constants/platform.js +0 -25
  640. package/dist/jsx/constants/rnw.js +0 -23
  641. package/dist/jsx/contexts/ButtonInsideButtonContext.js +0 -5
  642. package/dist/jsx/createComponent.js +0 -636
  643. package/dist/jsx/createFont.js +0 -27
  644. package/dist/jsx/createShorthands.js +0 -9
  645. package/dist/jsx/createTamagui.js +0 -201
  646. package/dist/jsx/createTheme.js +0 -6
  647. package/dist/jsx/createTokens.js +0 -28
  648. package/dist/jsx/createVariable.js +0 -48
  649. package/dist/jsx/defaultComponentState.js +0 -0
  650. package/dist/jsx/helpers/RNComponents.js +0 -11
  651. package/dist/jsx/helpers/addStylesUsingClassname.js +0 -63
  652. package/dist/jsx/helpers/areEqualSets.js +0 -15
  653. package/dist/jsx/helpers/createMediaStyle.js +0 -30
  654. package/dist/jsx/helpers/createPropMapper.js +0 -237
  655. package/dist/jsx/helpers/createShallowUpdate.js +0 -18
  656. package/dist/jsx/helpers/createTamaguiProvider.js +0 -34
  657. package/dist/jsx/helpers/extendStaticConfig.js +0 -61
  658. package/dist/jsx/helpers/fixNativeShadow.js +0 -7
  659. package/dist/jsx/helpers/fixNativeShadow.native.js +0 -31
  660. package/dist/jsx/helpers/getButtonSize.js +0 -23
  661. package/dist/jsx/helpers/getExpandedShorthands.js +0 -18
  662. package/dist/jsx/helpers/getSize.js +0 -12
  663. package/dist/jsx/helpers/getSplitStyles.js +0 -322
  664. package/dist/jsx/helpers/getStylesAtomic.js +0 -130
  665. package/dist/jsx/helpers/getStylesAtomic.native.js +0 -9
  666. package/dist/jsx/helpers/getTextSize.js +0 -33
  667. package/dist/jsx/helpers/insertStyleRule.js +0 -94
  668. package/dist/jsx/helpers/isObj.js +0 -6
  669. package/dist/jsx/helpers/isTamaguiElement.js +0 -10
  670. package/dist/jsx/helpers/matchMedia.js +0 -17
  671. package/dist/jsx/helpers/matchMedia.native.js +0 -8
  672. package/dist/jsx/helpers/nativeGestureHandler.js +0 -6
  673. package/dist/jsx/helpers/nativeGestureHandler.native.js +0 -1
  674. package/dist/jsx/helpers/proxyThemeVariables.js +0 -17
  675. package/dist/jsx/helpers/themeable.js +0 -24
  676. package/dist/jsx/helpers/validate.js +0 -75
  677. package/dist/jsx/helpers/withStaticProperties.js +0 -9
  678. package/dist/jsx/helpers/wrapThemeManagerContext.js +0 -10
  679. package/dist/jsx/hooks/useConstant.js +0 -14
  680. package/dist/jsx/hooks/useFeatures.js +0 -167
  681. package/dist/jsx/hooks/useId.js +0 -34
  682. package/dist/jsx/hooks/useIsMounted.js +0 -18
  683. package/dist/jsx/hooks/useIsTouchDevice.js +0 -16
  684. package/dist/jsx/hooks/useMedia.js +0 -158
  685. package/dist/jsx/hooks/usePressable.js +0 -13
  686. package/dist/jsx/hooks/usePrevious.js +0 -0
  687. package/dist/jsx/hooks/useTheme.js +0 -177
  688. package/dist/jsx/hooks/useUnmountEffect.js +0 -10
  689. package/dist/jsx/index.js +0 -54
  690. package/dist/jsx/nativeGestureHandler.native.js +0 -1
  691. package/dist/jsx/static.js +0 -16
  692. package/dist/jsx/styled.js +0 -47
  693. package/dist/jsx/types-rnw.js +0 -0
  694. package/dist/jsx/types.js +0 -0
  695. package/dist/jsx/views/Slot.js +0 -75
  696. package/dist/jsx/views/Stack.js +0 -12
  697. package/dist/jsx/views/Text.js +0 -56
  698. package/dist/jsx/views/TextAncestorContext.js +0 -15
  699. package/dist/jsx/views/Theme.js +0 -31
  700. package/dist/jsx/views/ThemeInverse.js +0 -27
  701. package/dist/jsx/views/ThemeProvider.js +0 -35
  702. package/dist/jsx/views/ThemeReset.js +0 -34
  703. package/types/Tamagui.d.ts.map +0 -1
  704. package/types/ThemeContext.d.ts.map +0 -1
  705. package/types/ThemeManager.d.ts +0 -49
  706. package/types/ThemeManager.d.ts.map +0 -1
  707. package/types/conf.d.ts +0 -27
  708. package/types/conf.d.ts.map +0 -1
  709. package/types/constants/constants.d.ts.map +0 -1
  710. package/types/constants/platform.d.ts.map +0 -1
  711. package/types/constants/rnw.d.ts +0 -2
  712. package/types/constants/rnw.d.ts.map +0 -1
  713. package/types/contexts/ButtonInsideButtonContext.d.ts.map +0 -1
  714. package/types/createComponent.d.ts.map +0 -1
  715. package/types/createFont.d.ts.map +0 -1
  716. package/types/createShorthands.d.ts.map +0 -1
  717. package/types/createTamagui.d.ts.map +0 -1
  718. package/types/createTheme.d.ts.map +0 -1
  719. package/types/createTokens.d.ts.map +0 -1
  720. package/types/createVariable.d.ts.map +0 -1
  721. package/types/defaultComponentState.d.ts +0 -1
  722. package/types/defaultComponentState.d.ts.map +0 -1
  723. package/types/helpers/RNComponents.d.ts.map +0 -1
  724. package/types/helpers/addStylesUsingClassname.d.ts +0 -3
  725. package/types/helpers/addStylesUsingClassname.d.ts.map +0 -1
  726. package/types/helpers/areEqualSets.d.ts.map +0 -1
  727. package/types/helpers/createMediaStyle.d.ts.map +0 -1
  728. package/types/helpers/createPropMapper.d.ts.map +0 -1
  729. package/types/helpers/createShallowUpdate.d.ts +0 -4
  730. package/types/helpers/createShallowUpdate.d.ts.map +0 -1
  731. package/types/helpers/createTamaguiProvider.d.ts +0 -7
  732. package/types/helpers/createTamaguiProvider.d.ts.map +0 -1
  733. package/types/helpers/extendStaticConfig.d.ts.map +0 -1
  734. package/types/helpers/fixNativeShadow.d.ts.map +0 -1
  735. package/types/helpers/fixNativeShadow.native.d.ts +0 -3
  736. package/types/helpers/fixNativeShadow.native.d.ts.map +0 -1
  737. package/types/helpers/getButtonSize.d.ts +0 -8
  738. package/types/helpers/getButtonSize.d.ts.map +0 -1
  739. package/types/helpers/getExpandedShorthands.d.ts.map +0 -1
  740. package/types/helpers/getSize.d.ts.map +0 -1
  741. package/types/helpers/getSplitStyles.d.ts.map +0 -1
  742. package/types/helpers/getStylesAtomic.d.ts.map +0 -1
  743. package/types/helpers/getStylesAtomic.native.d.ts.map +0 -1
  744. package/types/helpers/getTextSize.d.ts +0 -3
  745. package/types/helpers/getTextSize.d.ts.map +0 -1
  746. package/types/helpers/insertStyleRule.d.ts.map +0 -1
  747. package/types/helpers/isObj.d.ts.map +0 -1
  748. package/types/helpers/isTamaguiElement.d.ts.map +0 -1
  749. package/types/helpers/matchMedia.d.ts.map +0 -1
  750. package/types/helpers/matchMedia.native.d.ts.map +0 -1
  751. package/types/helpers/nativeGestureHandler.d.ts +0 -2
  752. package/types/helpers/nativeGestureHandler.d.ts.map +0 -1
  753. package/types/helpers/nativeGestureHandler.native.d.ts +0 -2
  754. package/types/helpers/nativeGestureHandler.native.d.ts.map +0 -1
  755. package/types/helpers/proxyThemeVariables.d.ts.map +0 -1
  756. package/types/helpers/themeable.d.ts.map +0 -1
  757. package/types/helpers/validate.d.ts.map +0 -1
  758. package/types/helpers/withStaticProperties.d.ts.map +0 -1
  759. package/types/helpers/wrapThemeManagerContext.d.ts +0 -3
  760. package/types/helpers/wrapThemeManagerContext.d.ts.map +0 -1
  761. package/types/hooks/useConstant.d.ts.map +0 -1
  762. package/types/hooks/useFeatures.d.ts +0 -18
  763. package/types/hooks/useFeatures.d.ts.map +0 -1
  764. package/types/hooks/useId.d.ts.map +0 -1
  765. package/types/hooks/useIsMounted.d.ts.map +0 -1
  766. package/types/hooks/useIsTouchDevice.d.ts.map +0 -1
  767. package/types/hooks/useMedia.d.ts.map +0 -1
  768. package/types/hooks/usePressable.d.ts.map +0 -1
  769. package/types/hooks/usePrevious.d.ts +0 -1
  770. package/types/hooks/usePrevious.d.ts.map +0 -1
  771. package/types/hooks/useTheme.d.ts.map +0 -1
  772. package/types/hooks/useUnmountEffect.d.ts.map +0 -1
  773. package/types/index.d.ts.map +0 -1
  774. package/types/nativeGestureHandler.native.d.ts +0 -2
  775. package/types/nativeGestureHandler.native.d.ts.map +0 -1
  776. package/types/static.d.ts.map +0 -1
  777. package/types/styled.d.ts.map +0 -1
  778. package/types/types-rnw.d.ts.map +0 -1
  779. package/types/types.d.ts.map +0 -1
  780. package/types/views/Slot.d.ts.map +0 -1
  781. package/types/views/Stack.d.ts.map +0 -1
  782. package/types/views/Text.d.ts.map +0 -1
  783. package/types/views/TextAncestorContext.d.ts +0 -5
  784. package/types/views/TextAncestorContext.d.ts.map +0 -1
  785. package/types/views/Theme.d.ts.map +0 -1
  786. package/types/views/ThemeInverse.d.ts.map +0 -1
  787. package/types/views/ThemeProvider.d.ts.map +0 -1
  788. package/types/views/ThemeReset.d.ts.map +0 -1
@@ -0,0 +1,66 @@
1
+ import { useIsomorphicLayoutEffect } from "@tamagui/constants";
2
+ import { getBoundingClientRect } from "@tamagui/react-native-use-responder-events";
3
+ import { useEvent } from "@tamagui/use-event";
4
+ const LayoutHandlers = /* @__PURE__ */ new WeakMap();
5
+ let resizeObserver = null;
6
+ if (typeof window !== "undefined" && "ResizeObserver" in window) {
7
+ resizeObserver = new ResizeObserver((entries) => {
8
+ for (const { target } of entries) {
9
+ const onLayout = LayoutHandlers.get(target);
10
+ if (typeof onLayout !== "function")
11
+ return;
12
+ measureLayout(target, null, (x, y, width, height, left, top) => {
13
+ onLayout({
14
+ nativeEvent: {
15
+ layout: { x, y, width, height, left, top },
16
+ target
17
+ },
18
+ timeStamp: Date.now()
19
+ });
20
+ });
21
+ }
22
+ });
23
+ }
24
+ const getRect = (node) => {
25
+ const rect = getBoundingClientRect(node);
26
+ if (!rect)
27
+ return;
28
+ const { x, y, top, left } = rect;
29
+ return { x, y, width: node.offsetWidth, height: node.offsetHeight, top, left };
30
+ };
31
+ const measureLayout = (node, relativeTo, callback) => {
32
+ const relativeNode = relativeTo || (node == null ? void 0 : node.parentNode);
33
+ if (relativeNode instanceof HTMLElement) {
34
+ setTimeout(() => {
35
+ const relativeRect = getBoundingClientRect(relativeNode);
36
+ const { height, left, top, width } = getRect(node);
37
+ const x = left - relativeRect.left;
38
+ const y = top - relativeRect.top;
39
+ callback(x, y, width, height, left, top);
40
+ }, 0);
41
+ }
42
+ };
43
+ const idFn = () => {
44
+ };
45
+ function useElementLayout(ref, onLayout) {
46
+ const hasLayoutEvent = !!onLayout;
47
+ const onLayoutEvent = useEvent(onLayout || idFn);
48
+ useIsomorphicLayoutEffect(() => {
49
+ if (!resizeObserver || !hasLayoutEvent)
50
+ return;
51
+ const node = ref.current;
52
+ if (!node)
53
+ return;
54
+ LayoutHandlers.set(node, onLayoutEvent);
55
+ resizeObserver.observe(node);
56
+ return () => {
57
+ resizeObserver == null ? void 0 : resizeObserver.unobserve(node);
58
+ };
59
+ }, [ref, hasLayoutEvent]);
60
+ }
61
+ export {
62
+ getRect,
63
+ measureLayout,
64
+ useElementLayout
65
+ };
66
+ //# sourceMappingURL=useElementLayout.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/hooks/useElementLayout.tsx"],
4
+ "sourcesContent": ["import { useIsomorphicLayoutEffect } from '@tamagui/constants'\nimport { getBoundingClientRect } from '@tamagui/react-native-use-responder-events'\nimport { useEvent } from '@tamagui/use-event'\nimport { RefObject } from 'react'\n\nconst LayoutHandlers = new WeakMap<Element, Function>()\n\nexport type LayoutValue = {\n x: number\n y: number\n width: number\n height: number\n left: number\n top: number\n}\n\nexport type LayoutEvent = {\n nativeEvent: {\n layout: LayoutValue\n target: any\n }\n timeStamp: number\n}\n\nlet resizeObserver: ResizeObserver | null = null\n\nif (typeof window !== 'undefined' && 'ResizeObserver' in window) {\n resizeObserver = new ResizeObserver((entries) => {\n for (const { target } of entries) {\n const onLayout = LayoutHandlers.get(target)\n if (typeof onLayout !== 'function') return\n measureLayout(target as HTMLElement, null, (x, y, width, height, left, top) => {\n onLayout({\n nativeEvent: {\n layout: { x, y, width, height, left, top },\n target,\n },\n timeStamp: Date.now(),\n })\n })\n }\n })\n}\n\nexport const getRect = (node: HTMLElement) => {\n const rect = getBoundingClientRect(node)\n if (!rect) return\n const { x, y, top, left } = rect\n return { x, y, width: node.offsetWidth, height: node.offsetHeight, top, left }\n}\n\nexport const measureLayout = (\n node: HTMLElement,\n relativeTo: HTMLElement | null,\n callback: Function\n) => {\n const relativeNode = relativeTo || node?.parentNode\n if (relativeNode instanceof HTMLElement) {\n setTimeout(() => {\n const relativeRect = getBoundingClientRect(relativeNode)!\n const { height, left, top, width } = getRect(node)!\n const x = left - relativeRect.left\n const y = top - relativeRect.top\n callback(x, y, width, height, left, top)\n }, 0)\n }\n}\n\nconst idFn = () => {}\n\nexport function useElementLayout(\n ref: RefObject<Element>,\n onLayout?: ((e: LayoutEvent) => void) | null\n) {\n const hasLayoutEvent = !!onLayout\n const onLayoutEvent = useEvent(onLayout || idFn)\n\n // Observing is done in a separate effect to avoid this effect running\n // when 'onLayout' changes.\n useIsomorphicLayoutEffect(() => {\n if (!resizeObserver || !hasLayoutEvent) return\n const node = ref.current\n if (!node) return\n LayoutHandlers.set(node, onLayoutEvent)\n resizeObserver.observe(node)\n return () => {\n resizeObserver?.unobserve(node)\n }\n }, [ref, hasLayoutEvent])\n}\n"],
5
+ "mappings": "AAAA,SAAS,iCAAiC;AAC1C,SAAS,6BAA6B;AACtC,SAAS,gBAAgB;AAGzB,MAAM,iBAAiB,oBAAI,QAA2B;AAmBtD,IAAI,iBAAwC;AAE5C,IAAI,OAAO,WAAW,eAAe,oBAAoB,QAAQ;AAC/D,mBAAiB,IAAI,eAAe,CAAC,YAAY;AAC/C,eAAW,EAAE,OAAO,KAAK,SAAS;AAChC,YAAM,WAAW,eAAe,IAAI,MAAM;AAC1C,UAAI,OAAO,aAAa;AAAY;AACpC,oBAAc,QAAuB,MAAM,CAAC,GAAG,GAAG,OAAO,QAAQ,MAAM,QAAQ;AAC7E,iBAAS;AAAA,UACP,aAAa;AAAA,YACX,QAAQ,EAAE,GAAG,GAAG,OAAO,QAAQ,MAAM,IAAI;AAAA,YACzC;AAAA,UACF;AAAA,UACA,WAAW,KAAK,IAAI;AAAA,QACtB,CAAC;AAAA,MACH,CAAC;AAAA,IACH;AAAA,EACF,CAAC;AACH;AAEO,MAAM,UAAU,CAAC,SAAsB;AAC5C,QAAM,OAAO,sBAAsB,IAAI;AACvC,MAAI,CAAC;AAAM;AACX,QAAM,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI;AAC5B,SAAO,EAAE,GAAG,GAAG,OAAO,KAAK,aAAa,QAAQ,KAAK,cAAc,KAAK,KAAK;AAC/E;AAEO,MAAM,gBAAgB,CAC3B,MACA,YACA,aACG;AACH,QAAM,eAAe,eAAc,6BAAM;AACzC,MAAI,wBAAwB,aAAa;AACvC,eAAW,MAAM;AACf,YAAM,eAAe,sBAAsB,YAAY;AACvD,YAAM,EAAE,QAAQ,MAAM,KAAK,MAAM,IAAI,QAAQ,IAAI;AACjD,YAAM,IAAI,OAAO,aAAa;AAC9B,YAAM,IAAI,MAAM,aAAa;AAC7B,eAAS,GAAG,GAAG,OAAO,QAAQ,MAAM,GAAG;AAAA,IACzC,GAAG,CAAC;AAAA,EACN;AACF;AAEA,MAAM,OAAO,MAAM;AAAC;AAEb,SAAS,iBACd,KACA,UACA;AACA,QAAM,iBAAiB,CAAC,CAAC;AACzB,QAAM,gBAAgB,SAAS,YAAY,IAAI;AAI/C,4BAA0B,MAAM;AAC9B,QAAI,CAAC,kBAAkB,CAAC;AAAgB;AACxC,UAAM,OAAO,IAAI;AACjB,QAAI,CAAC;AAAM;AACX,mBAAe,IAAI,MAAM,aAAa;AACtC,mBAAe,QAAQ,IAAI;AAC3B,WAAO,MAAM;AACX,uDAAgB,UAAU;AAAA,IAC5B;AAAA,EACF,GAAG,CAAC,KAAK,cAAc,CAAC;AAC1B;",
6
+ "names": []
7
+ }
@@ -1,34 +1,4 @@
1
- var __defProp = Object.defineProperty;
2
- var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
- import * as React from "react";
4
- import { useIsomorphicLayoutEffect } from "../constants/platform";
5
- let serverHandoffComplete = false;
6
- let id = 0;
7
- function genId() {
8
- return ++id;
9
- }
10
- __name(genId, "genId");
11
- function useId(providedId) {
12
- var _a;
13
- if (typeof React.useId === "function") {
14
- let id3 = React.useId(providedId);
15
- return providedId != null ? providedId : id3;
16
- }
17
- let initialId = providedId != null ? providedId : serverHandoffComplete ? genId() : null;
18
- let [id2, setId] = React.useState(initialId);
19
- useIsomorphicLayoutEffect(() => {
20
- if (id2 === null) {
21
- setId(genId());
22
- }
23
- }, []);
24
- React.useEffect(() => {
25
- if (serverHandoffComplete === false) {
26
- serverHandoffComplete = true;
27
- }
28
- }, []);
29
- return (_a = providedId != null ? providedId : id2) != null ? _a : void 0;
30
- }
31
- __name(useId, "useId");
1
+ import { useId } from "react";
32
2
  export {
33
3
  useId
34
4
  };
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/hooks/useId.tsx"],
4
- "sourcesContent": ["/*\n * Welcome to @reach/auto-id!\n\n * Let's see if we can make sense of why this hook exists and its\n * implementation.\n *\n * Some background:\n * 1. Accessibility APIs rely heavily on element IDs\n * 2. Requiring developers to put IDs on every element in Reach UI is both\n * cumbersome and error-prone\n * 3. With a component model, we can generate IDs for them!\n *\n * Solution 1: Generate random IDs.\n *\n * This works great as long as you don't server render your app. When React (in\n * the client) tries to reuse the markup from the server, the IDs won't match\n * and React will then recreate the entire DOM tree.\n *\n * Solution 2: Increment an integer\n *\n * This sounds great. Since we're rendering the exact same tree on the server\n * and client, we can increment a counter and get a deterministic result between\n * client and server. Also, JS integers can go up to nine-quadrillion. I'm\n * pretty sure the tab will be closed before an app never needs\n * 10 quadrillion IDs!\n *\n * Problem solved, right?\n *\n * Ah, but there's a catch! React's concurrent rendering makes this approach\n * non-deterministic. While the client and server will end up with the same\n * elements in the end, depending on suspense boundaries (and possibly some user\n * input during the initial render) the incrementing integers won't always match\n * up.\n *\n * Solution 3: Don't use IDs at all on the server; patch after first render.\n *\n * What we've done here is solution 2 with some tricks. With this approach, the\n * ID returned is an empty string on the first render. This way the server and\n * client have the same markup no matter how wild the concurrent rendering may\n * have gotten.\n *\n * After the render, we patch up the components with an incremented ID. This\n * causes a double render on any components with `useId`. Shouldn't be a problem\n * since the components using this hook should be small, and we're only updating\n * the ID attribute on the DOM, nothing big is happening.\n *\n * It doesn't have to be an incremented number, though--we could do generate\n * random strings instead, but incrementing a number is probably the cheapest\n * thing we can do.\n *\n * Additionally, we only do this patchup on the very first client render ever.\n * Any calls to `useId` that happen dynamically in the client will be\n * populated immediately with a value. So, we only get the double render after\n * server hydration and never again, SO BACK OFF ALRIGHT?\n */\n\nimport * as React from 'react'\n\nimport { useIsomorphicLayoutEffect } from '../constants/platform'\n\nlet serverHandoffComplete = false\nlet id = 0\nfunction genId() {\n return ++id\n}\n\n/* eslint-disable react-hooks/rules-of-hooks */\n\n/**\n * useId\n *\n * Autogenerate IDs to facilitate WAI-ARIA and server rendering.\n *\n * Note: The returned ID will initially be `null` and will update after a\n * component mounts. Users may need to supply their own ID if they need\n * consistent values for SSR.\n *\n * @see Docs https://reach.tech/auto-id\n */\nfunction useId(idFromProps: string): string\nfunction useId(idFromProps: number): number\nfunction useId(idFromProps: string | number): string | number\nfunction useId(idFromProps: string | undefined | null): string | undefined\nfunction useId(idFromProps: number | undefined | null): number | undefined\nfunction useId(idFromProps: string | number | undefined | null): string | number | undefined\nfunction useId(): string | undefined\n\nfunction useId(providedId?: number | string | undefined | null) {\n // TODO: Remove error flag when updating internal deps to React 18. None of\n // our tricks will play well with concurrent rendering anyway.\n // @ts-expect-error\n if (typeof React.useId === 'function') {\n // @ts-expect-error\n let id = React.useId(providedId)\n return providedId != null ? providedId : id\n }\n\n // If this instance isn't part of the initial render, we don't have to do the\n // double render/patch-up dance. We can just generate the ID and return it.\n let initialId = providedId ?? (serverHandoffComplete ? genId() : null)\n let [id, setId] = React.useState(initialId)\n\n useIsomorphicLayoutEffect(() => {\n if (id === null) {\n // Patch the ID after render. We do this in `useLayoutEffect` to avoid any\n // rendering flicker, though it'll make the first render slower (unlikely\n // to matter, but you're welcome to measure your app and let us know if\n // it's a problem).\n setId(genId())\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [])\n\n React.useEffect(() => {\n if (serverHandoffComplete === false) {\n // Flag all future uses of `useId` to skip the update dance. This is in\n // `useEffect` because it goes after `useLayoutEffect`, ensuring we don't\n // accidentally bail out of the patch-up dance prematurely.\n serverHandoffComplete = true\n }\n }, [])\n\n return providedId ?? id ?? undefined\n}\n\nexport { useId }\n"],
5
- "mappings": ";;AAwDA;AAEA;AAEA,IAAI,wBAAwB;AAC5B,IAAI,KAAK;AACT,iBAAiB;AACf,SAAO,EAAE;AACX;AAFS;AAyBT,eAAe,YAAiD;AAvFhE;AA2FE,MAAI,OAAO,MAAM,UAAU,YAAY;AAErC,QAAI,MAAK,MAAM,MAAM,UAAU;AAC/B,WAAO,cAAc,OAAO,aAAa;AAAA,EAC3C;AAIA,MAAI,YAAY,kCAAe,wBAAwB,MAAM,IAAI;AACjE,MAAI,CAAC,KAAI,SAAS,MAAM,SAAS,SAAS;AAE1C,4BAA0B,MAAM;AAC9B,QAAI,QAAO,MAAM;AAKf,YAAM,MAAM,CAAC;AAAA,IACf;AAAA,EAEF,GAAG,CAAC,CAAC;AAEL,QAAM,UAAU,MAAM;AACpB,QAAI,0BAA0B,OAAO;AAInC,8BAAwB;AAAA,IAC1B;AAAA,EACF,GAAG,CAAC,CAAC;AAEL,SAAO,wCAAc,QAAd,YAAoB;AAC7B;AApCS;",
4
+ "sourcesContent": ["export { useId } from 'react'\n"],
5
+ "mappings": "AAAA,SAAS,aAAa;",
6
6
  "names": []
7
7
  }
@@ -1,6 +1,4 @@
1
- var __defProp = Object.defineProperty;
2
- var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
- import { useIsomorphicLayoutEffect } from "@tamagui/core";
1
+ import { useIsomorphicLayoutEffect } from "@tamagui/constants";
4
2
  import { useRef } from "react";
5
3
  function useIsMounted() {
6
4
  const isMounted = useRef(false);
@@ -12,7 +10,6 @@ function useIsMounted() {
12
10
  }, []);
13
11
  return isMounted;
14
12
  }
15
- __name(useIsMounted, "useIsMounted");
16
13
  export {
17
14
  useIsMounted
18
15
  };
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/hooks/useIsMounted.ts"],
4
- "sourcesContent": ["import { useIsomorphicLayoutEffect } from '@tamagui/core'\nimport { useRef } from 'react'\n\nexport function useIsMounted() {\n const isMounted = useRef(false)\n\n useIsomorphicLayoutEffect(() => {\n isMounted.current = true\n\n return () => {\n isMounted.current = false\n }\n }, [])\n\n return isMounted\n}\n"],
5
- "mappings": ";;AAAA;AACA;AAEO,wBAAwB;AAC7B,QAAM,YAAY,OAAO,KAAK;AAE9B,4BAA0B,MAAM;AAC9B,cAAU,UAAU;AAEpB,WAAO,MAAM;AACX,gBAAU,UAAU;AAAA,IACtB;AAAA,EACF,GAAG,CAAC,CAAC;AAEL,SAAO;AACT;AAZgB;",
4
+ "sourcesContent": ["import { useIsomorphicLayoutEffect } from '@tamagui/constants'\nimport { useRef } from 'react'\n\nexport function useIsMounted() {\n const isMounted = useRef(false)\n\n useIsomorphicLayoutEffect(() => {\n isMounted.current = true\n\n return () => {\n isMounted.current = false\n }\n }, [])\n\n return isMounted\n}\n"],
5
+ "mappings": "AAAA,SAAS,iCAAiC;AAC1C,SAAS,cAAc;AAEhB,SAAS,eAAe;AAC7B,QAAM,YAAY,OAAO,KAAK;AAE9B,4BAA0B,MAAM;AAC9B,cAAU,UAAU;AAEpB,WAAO,MAAM;AACX,gBAAU,UAAU;AAAA,IACtB;AAAA,EACF,GAAG,CAAC,CAAC;AAEL,SAAO;AACT;",
6
6
  "names": []
7
7
  }
@@ -1,16 +1,8 @@
1
- var __defProp = Object.defineProperty;
2
- var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
- import { useState } from "react";
4
- import { isTouchDevice, useIsomorphicLayoutEffect } from "../constants/platform";
5
- const useIsTouchDevice = /* @__PURE__ */ __name(() => {
6
- const [touchOnly, setTouchOnly] = useState(false);
7
- useIsomorphicLayoutEffect(() => {
8
- if (isTouchDevice) {
9
- setTouchOnly(true);
10
- }
11
- }, []);
12
- return touchOnly;
13
- }, "useIsTouchDevice");
1
+ import { isTouchable, isWeb } from "@tamagui/constants";
2
+ import { useDidFinishSSR } from "@tamagui/use-did-finish-ssr";
3
+ const useIsTouchDevice = () => {
4
+ return !isWeb ? true : useDidFinishSSR() ? isTouchable : false;
5
+ };
14
6
  export {
15
7
  useIsTouchDevice
16
8
  };
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/hooks/useIsTouchDevice.tsx"],
4
- "sourcesContent": ["import { useState } from 'react'\n\nimport { isTouchDevice, useIsomorphicLayoutEffect } from '../constants/platform'\n\n// ssr friendly\n\nexport const useIsTouchDevice = () => {\n const [touchOnly, setTouchOnly] = useState(false)\n\n useIsomorphicLayoutEffect(() => {\n if (isTouchDevice) {\n setTouchOnly(true)\n }\n }, [])\n\n return touchOnly\n}\n"],
5
- "mappings": ";;AAAA;AAEA;AAIO,MAAM,mBAAmB,6BAAM;AACpC,QAAM,CAAC,WAAW,gBAAgB,SAAS,KAAK;AAEhD,4BAA0B,MAAM;AAC9B,QAAI,eAAe;AACjB,mBAAa,IAAI;AAAA,IACnB;AAAA,EACF,GAAG,CAAC,CAAC;AAEL,SAAO;AACT,GAVgC;",
4
+ "sourcesContent": ["import { isTouchable, isWeb } from '@tamagui/constants'\nimport { useDidFinishSSR } from '@tamagui/use-did-finish-ssr'\n\nexport const useIsTouchDevice = () => {\n return !isWeb ? true : useDidFinishSSR() ? isTouchable : false\n}\n"],
5
+ "mappings": "AAAA,SAAS,aAAa,aAAa;AACnC,SAAS,uBAAuB;AAEzB,MAAM,mBAAmB,MAAM;AACpC,SAAO,CAAC,QAAQ,OAAO,gBAAgB,IAAI,cAAc;AAC3D;",
6
6
  "names": []
7
7
  }
@@ -1,135 +1,177 @@
1
- var __defProp = Object.defineProperty;
2
- var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
- import { useForceUpdate } from "@tamagui/use-force-update";
4
- import { useRef } from "react";
5
- import { useIsomorphicLayoutEffect } from "../constants/platform";
1
+ import { useIsomorphicLayoutEffect } from "@tamagui/constants";
2
+ import { useEffect, useMemo, useState } from "react";
3
+ import { getConfig } from "../config";
4
+ import { createProxy } from "../helpers/createProxy";
6
5
  import { matchMedia } from "../helpers/matchMedia";
7
- import { useConstant } from "./useConstant";
8
- const mediaState = {};
9
- const mediaQueryListeners = {};
10
- const addMediaQueryListener = /* @__PURE__ */ __name((key, cb) => {
11
- mediaQueryListeners[key] = mediaQueryListeners[key] || /* @__PURE__ */ new Set();
12
- mediaQueryListeners[key].add(cb);
13
- }, "addMediaQueryListener");
14
- const removeMediaQueryListener = /* @__PURE__ */ __name((key, cb) => {
6
+ import { useSafeRef } from "./useSafeRef";
7
+ const mediaState = process.env.NODE_ENV === "development" ? createProxy(
8
+ {},
9
+ {
10
+ get(target, key) {
11
+ if (typeof key === "string" && key[0] === "$" && key[1] !== "$") {
12
+ throw new Error(`Access mediaState should not use "$": ${key}`);
13
+ }
14
+ return Reflect.get(target, key);
15
+ }
16
+ }
17
+ ) : {};
18
+ const listeners = {};
19
+ function addMediaQueryListener(key, cb) {
20
+ if (process.env.NODE_ENV === "development" && key[0] === "$") {
21
+ console.warn(`Warning, listening to media queries shouldn't use the "$" prefix`);
22
+ }
23
+ listeners[key] = listeners[key] || /* @__PURE__ */ new Set();
24
+ listeners[key].add(cb);
25
+ return () => removeMediaQueryListener(key, cb);
26
+ }
27
+ function removeMediaQueryListener(key, cb) {
15
28
  var _a;
16
- (_a = mediaQueryListeners[key]) == null ? void 0 : _a.delete(cb);
17
- }, "removeMediaQueryListener");
18
- let hasConfigured = false;
29
+ (_a = listeners[key]) == null ? void 0 : _a.delete(cb);
30
+ }
19
31
  const mediaQueryConfig = {};
20
- const getMedia = /* @__PURE__ */ __name(() => {
32
+ const getMedia = () => {
21
33
  return mediaState;
22
- }, "getMedia");
23
- const configureMedia = /* @__PURE__ */ __name(({
24
- queries,
25
- defaultActive = ["sm", "xs"]
26
- } = {}) => {
27
- var _a;
28
- if (hasConfigured) {
29
- console.warn(`Already configured mediaQueries once (you may have called getMedia() before configureMedia())`);
34
+ };
35
+ let curState;
36
+ let initState;
37
+ const getInitialMediaState = () => {
38
+ return (getConfig().disableSSR ? curState : initState) || {};
39
+ };
40
+ let mediaKeysOrdered;
41
+ const getMediaKeyImportance = (key) => mediaKeysOrdered.indexOf(key[0] === "$" ? key.slice(1) : key) + 2;
42
+ const dispose = /* @__PURE__ */ new Set();
43
+ const configureMedia = (config) => {
44
+ const { media, mediaQueryDefaultActive } = config;
45
+ if (!media)
46
+ return;
47
+ for (const key in media) {
48
+ mediaState[key] = (mediaQueryDefaultActive == null ? void 0 : mediaQueryDefaultActive[key]) || false;
30
49
  }
31
- if (queries) {
32
- Object.assign(mediaQueryConfig, queries);
33
- hasConfigured = true;
50
+ Object.assign(mediaQueryConfig, media);
51
+ curState = { ...mediaState };
52
+ initState = curState;
53
+ mediaKeysOrdered = Object.keys(media);
54
+ if (config.disableSSR) {
55
+ setupMediaListeners();
34
56
  }
35
- for (const key in queries) {
36
- const str = mediaObjectToString(queries[key]);
37
- const propKey = `$${key}`;
38
- try {
39
- let update = function() {
40
- const next = !!getMatch().matches;
41
- if (next === mediaState[propKey])
42
- return;
43
- mediaState[propKey] = next;
44
- const listeners = mediaQueryListeners[propKey];
45
- if (listeners == null ? void 0 : listeners.size) {
46
- for (const cb of [...listeners]) {
47
- cb();
48
- }
49
- }
50
- };
51
- __name(update, "update");
52
- const getMatch = /* @__PURE__ */ __name(() => matchMedia(str), "getMatch");
53
- const match = getMatch();
54
- if (!match || typeof match.addListener !== "function") {
55
- throw new Error("\u26A0\uFE0F No match (seeing this in RN sometimes)");
57
+ };
58
+ function unlisten() {
59
+ dispose.forEach((cb) => cb());
60
+ dispose.clear();
61
+ }
62
+ let configuredKey = "";
63
+ function setupMediaListeners() {
64
+ const nextKey = JSON.stringify(mediaQueryConfig);
65
+ if (nextKey === configuredKey) {
66
+ return;
67
+ }
68
+ configuredKey = nextKey;
69
+ unlisten();
70
+ for (const key in mediaQueryConfig) {
71
+ let update2 = function() {
72
+ const next = !!getMatch().matches;
73
+ if (next === mediaState[key])
74
+ return;
75
+ mediaState[key] = next;
76
+ curState = { ...mediaState };
77
+ const cur = listeners[key];
78
+ if (cur == null ? void 0 : cur.size) {
79
+ cur.forEach((cb) => cb(next));
56
80
  }
57
- mediaState[propKey] = !!match.matches;
58
- match.addListener(update);
59
- update();
60
- } catch (err) {
61
- console.error("Error running media query", str, err.message, err.stack);
62
- const isDefaultActive = (_a = defaultActive == null ? void 0 : defaultActive.includes(key)) != null ? _a : true;
63
- mediaState[propKey] = isDefaultActive;
81
+ };
82
+ var update = update2;
83
+ const str = mediaObjectToString(mediaQueryConfig[key]);
84
+ const getMatch = () => matchMedia(str);
85
+ const match = getMatch();
86
+ if (!match) {
87
+ throw new Error("\u26A0\uFE0F No match");
64
88
  }
89
+ match.addListener(update2);
90
+ dispose.add(() => match.removeListener(update2));
91
+ update2();
65
92
  }
66
- }, "configureMedia");
67
- const useMedia = /* @__PURE__ */ __name(() => {
68
- const forceUpdate = useForceUpdate();
69
- const state = useRef();
70
- if (!state.current) {
71
- state.current = {
72
- selections: {},
73
- nextSelections: {},
74
- isUnmounted: false,
75
- isRendering: true
76
- };
93
+ }
94
+ function useMediaListeners(config) {
95
+ if (config.disableSSR)
96
+ return;
97
+ useEffect(() => {
98
+ setupMediaListeners();
99
+ return unlisten;
100
+ }, []);
101
+ }
102
+ function useMedia() {
103
+ const keys = useSafeRef({});
104
+ const [state, setState] = useState(() => getMediaState(initState || {}, keys));
105
+ function updateState() {
106
+ setState((prev) => {
107
+ for (const key in keys.current) {
108
+ if (prev[key] !== mediaState[key]) {
109
+ return getMediaState({ ...mediaState }, keys);
110
+ }
111
+ }
112
+ return prev;
113
+ });
77
114
  }
78
- state.current.isRendering = true;
79
115
  useIsomorphicLayoutEffect(() => {
80
- const st = state.current;
81
- st.isRendering = false;
82
- for (const key in st.selections) {
83
- if (!(key in st.nextSelections)) {
84
- removeMediaQueryListener(key, forceUpdate);
85
- }
86
- }
87
- for (const key in st.nextSelections) {
88
- if (!(key in st.selections)) {
89
- addMediaQueryListener(key, forceUpdate);
116
+ updateState();
117
+ const disposers = Object.keys(keys.current).map(
118
+ (key) => addMediaQueryListener(key, updateState)
119
+ );
120
+ return () => {
121
+ disposers.forEach((cb) => cb());
122
+ };
123
+ }, [keys.current]);
124
+ return state;
125
+ }
126
+ function getMediaState(state, keys) {
127
+ return new Proxy(state, {
128
+ get(_, key) {
129
+ if (!keys.current[key]) {
130
+ keys.current[key] = true;
90
131
  }
132
+ return Reflect.get(state, key);
91
133
  }
92
134
  });
93
- useIsomorphicLayoutEffect(() => {
94
- return () => {
95
- const st = state.current;
96
- st.isUnmounted = true;
97
- const allKeys = {
98
- ...st.selections,
99
- ...st.nextSelections
100
- };
101
- for (const key in allKeys) {
102
- removeMediaQueryListener(key, forceUpdate);
103
- }
104
- };
105
- }, []);
106
- return useConstant(() => {
107
- const st = state.current;
108
- return new Proxy(mediaState, {
109
- get(target, key) {
110
- if (key[0] !== "$") {
111
- key = `$${key}`;
112
- }
113
- if (!(key in mediaState)) {
114
- return Reflect.get(target, key);
135
+ }
136
+ function useMediaPropsActive(props) {
137
+ const media = useMedia();
138
+ return useMemo(() => {
139
+ const next = {};
140
+ const importancesUsed = {};
141
+ const propNames = Object.keys(props);
142
+ for (let i = propNames.length - 1; i >= 0; i--) {
143
+ const key = propNames[i];
144
+ const val = props[key];
145
+ if (key[0] === "$") {
146
+ if (!media[key.slice(1)]) {
147
+ continue;
115
148
  }
116
- if (!st.isUnmounted) {
117
- if (st.isRendering) {
118
- st.nextSelections[key] = true;
149
+ if (val && typeof val === "object") {
150
+ const subKeys = Object.keys(val);
151
+ for (let j = subKeys.length; j--; j >= 0) {
152
+ const subKey = subKeys[j];
153
+ mergeMediaByImportance(next, subKey, val[subKey], importancesUsed);
119
154
  }
120
155
  }
121
- if (key in mediaState) {
122
- return mediaState[key];
123
- }
124
- return Reflect.get(mediaState, key);
156
+ } else {
157
+ mergeMediaByImportance(next, key, val, importancesUsed);
125
158
  }
126
- });
127
- });
128
- }, "useMedia");
159
+ }
160
+ return next;
161
+ }, [media, props]);
162
+ }
163
+ function mergeMediaByImportance(onto, key, value, importancesUsed) {
164
+ const importance = getMediaKeyImportance(key);
165
+ if (importancesUsed[key] > importance) {
166
+ return false;
167
+ }
168
+ importancesUsed[key] = importance;
169
+ onto[key] = value;
170
+ return true;
171
+ }
129
172
  function camelToHyphen(str) {
130
173
  return str.replace(/[A-Z]/g, (m) => `-${m.toLowerCase()}`).toLowerCase();
131
174
  }
132
- __name(camelToHyphen, "camelToHyphen");
133
175
  function mediaObjectToString(query) {
134
176
  if (typeof query === "string") {
135
177
  return query;
@@ -145,15 +187,19 @@ function mediaObjectToString(query) {
145
187
  return `(${feature}: ${value})`;
146
188
  }).join(" and ");
147
189
  }
148
- __name(mediaObjectToString, "mediaObjectToString");
149
190
  export {
150
191
  addMediaQueryListener,
151
192
  configureMedia,
193
+ getInitialMediaState,
152
194
  getMedia,
195
+ getMediaKeyImportance,
153
196
  mediaObjectToString,
154
197
  mediaQueryConfig,
155
198
  mediaState,
199
+ mergeMediaByImportance,
156
200
  removeMediaQueryListener,
157
- useMedia
201
+ useMedia,
202
+ useMediaListeners,
203
+ useMediaPropsActive
158
204
  };
159
205
  //# sourceMappingURL=useMedia.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/hooks/useMedia.tsx"],
4
- "sourcesContent": ["import { useForceUpdate } from '@tamagui/use-force-update'\nimport { useRef } from 'react'\n\nimport { useIsomorphicLayoutEffect } from '../constants/platform'\nimport { matchMedia } from '../helpers/matchMedia'\nimport {\n ConfigureMediaQueryOptions,\n MediaQueries,\n MediaQueryKey,\n MediaQueryObject,\n MediaQueryState,\n} from '../types'\nimport { useConstant } from './useConstant'\n\nexport const mediaState: MediaQueryState = {} as any\nconst mediaQueryListeners: { [key: string]: Set<Function> } = {}\n\nexport const addMediaQueryListener = (key: string, cb: any) => {\n mediaQueryListeners[key] = mediaQueryListeners[key] || new Set()\n mediaQueryListeners[key].add(cb)\n}\n\nexport const removeMediaQueryListener = (key: string, cb: any) => {\n mediaQueryListeners[key]?.delete(cb)\n}\n\nlet hasConfigured = false\nexport const mediaQueryConfig: MediaQueries = {}\n\nexport const getMedia = () => {\n return mediaState\n}\n\nexport const configureMedia = ({\n queries,\n defaultActive = ['sm', 'xs'],\n}: ConfigureMediaQueryOptions = {}) => {\n if (hasConfigured) {\n console.warn(\n `Already configured mediaQueries once (you may have called getMedia() before configureMedia())`\n )\n }\n\n if (queries) {\n Object.assign(mediaQueryConfig, queries)\n hasConfigured = true\n }\n\n // setup\n for (const key in queries) {\n const str = mediaObjectToString(queries[key])\n const propKey = `$${key}`\n try {\n const getMatch = () => matchMedia(str)\n const match = getMatch()\n if (!match || typeof match.addListener !== 'function') {\n // caught below\n throw new Error('\u26A0\uFE0F No match (seeing this in RN sometimes)')\n }\n mediaState[propKey] = !!match.matches\n match.addListener(update)\n\n function update() {\n const next = !!getMatch().matches\n if (next === mediaState[propKey]) return\n mediaState[propKey] = next\n const listeners = mediaQueryListeners[propKey]\n if (listeners?.size) {\n for (const cb of [...listeners]) {\n cb()\n }\n }\n }\n\n update()\n } catch (err: any) {\n console.error('Error running media query', str, err.message, err.stack)\n const isDefaultActive = defaultActive?.includes(key as any) ?? true\n mediaState[propKey] = isDefaultActive\n }\n }\n}\n\ntype UseMediaState = {\n selections: { [key: string]: boolean }\n nextSelections: { [key: string]: boolean }\n isRendering: boolean\n isUnmounted: boolean\n}\n\nexport const useMedia = () => {\n const forceUpdate = useForceUpdate()\n const state = useRef() as React.MutableRefObject<UseMediaState>\n if (!state.current) {\n state.current = {\n selections: {},\n nextSelections: {},\n isUnmounted: false,\n isRendering: true,\n }\n }\n state.current.isRendering = true\n\n // track usage\n useIsomorphicLayoutEffect(() => {\n const st = state.current\n st.isRendering = false\n // delete old\n for (const key in st.selections) {\n if (!(key in st.nextSelections)) {\n removeMediaQueryListener(key, forceUpdate)\n }\n }\n // add new\n for (const key in st.nextSelections) {\n if (!(key in st.selections)) {\n addMediaQueryListener(key, forceUpdate)\n }\n }\n })\n\n // unmount\n useIsomorphicLayoutEffect(() => {\n return () => {\n const st = state.current\n st.isUnmounted = true\n const allKeys = {\n ...st.selections,\n ...st.nextSelections,\n }\n for (const key in allKeys) {\n removeMediaQueryListener(key, forceUpdate)\n }\n }\n }, [])\n\n return useConstant(() => {\n const st = state.current\n return new Proxy(\n mediaState as {\n [key in MediaQueryKey]: boolean\n },\n {\n get(target, key: string) {\n if (key[0] !== '$') {\n key = `$${key}`\n }\n if (!(key in mediaState)) {\n return Reflect.get(target, key)\n }\n if (!st.isUnmounted) {\n if (st.isRendering) {\n st.nextSelections[key] = true\n }\n }\n if (key in mediaState) {\n return mediaState[key]\n }\n return Reflect.get(mediaState, key)\n },\n }\n )\n })\n}\n\nfunction camelToHyphen(str: string) {\n return str.replace(/[A-Z]/g, (m) => `-${m.toLowerCase()}`).toLowerCase()\n}\n\nexport function mediaObjectToString(query: string | MediaQueryObject) {\n if (typeof query === 'string') {\n return query\n }\n return Object.entries(query)\n .map(([feature, value]) => {\n feature = camelToHyphen(feature)\n if (typeof value === 'string') {\n return `(${feature}: ${value})`\n }\n if (typeof value === 'number' && /[height|width]$/.test(feature)) {\n value = `${value}px`\n }\n return `(${feature}: ${value})`\n })\n .join(' and ')\n}\n"],
5
- "mappings": "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",
6
- "names": []
4
+ "sourcesContent": ["import { useIsomorphicLayoutEffect } from '@tamagui/constants'\nimport { MutableRefObject, useEffect, useMemo, useState } from 'react'\n\nimport { getConfig } from '../config'\nimport { createProxy } from '../helpers/createProxy'\nimport { matchMedia } from '../helpers/matchMedia'\nimport {\n MediaQueries,\n MediaQueryKey,\n MediaQueryObject,\n MediaQueryState,\n TamaguiInternalConfig,\n} from '../types'\nimport { useSafeRef } from './useSafeRef'\n\nexport const mediaState: MediaQueryState =\n // development time safeguard\n process.env.NODE_ENV === 'development'\n ? createProxy(\n {},\n {\n get(target, key) {\n if (\n typeof key === 'string' &&\n key[0] === '$' &&\n // dont error on $$typeof\n key[1] !== '$'\n ) {\n throw new Error(`Access mediaState should not use \"$\": ${key}`)\n }\n return Reflect.get(target, key)\n },\n }\n )\n : ({} as any)\n\ntype MediaListener = (next: boolean) => void\n\nconst listeners: { [key: string]: Set<MediaListener> } = {}\n\nexport function addMediaQueryListener(key: MediaQueryKey, cb: MediaListener) {\n if (process.env.NODE_ENV === 'development' && key[0] === '$') {\n // eslint-disable-next-line no-console\n console.warn(`Warning, listening to media queries shouldn't use the \"$\" prefix`)\n }\n listeners[key] = listeners[key] || new Set()\n listeners[key].add(cb)\n return () => removeMediaQueryListener(key, cb)\n}\n\nexport function removeMediaQueryListener(key: MediaQueryKey, cb: MediaListener) {\n listeners[key]?.delete(cb)\n}\n\nexport const mediaQueryConfig: MediaQueries = {}\n\nexport const getMedia = () => {\n return mediaState\n}\n\n// for SSR capture it at time of startup\nlet curState: MediaQueryState\nlet initState: MediaQueryState\nexport const getInitialMediaState = () => {\n return (getConfig().disableSSR ? curState : initState) || {}\n}\n\nlet mediaKeysOrdered: string[]\nexport const getMediaKeyImportance = (key: string) =>\n // + 2 because we set base usedKeys=1 in getSplitStyles and all media go above 1\n mediaKeysOrdered.indexOf(key[0] === '$' ? key.slice(1) : key) + 2\n\nconst dispose = new Set<Function>()\n\nexport const configureMedia = (config: TamaguiInternalConfig) => {\n const { media, mediaQueryDefaultActive } = config\n if (!media) return\n for (const key in media) {\n mediaState[key] = mediaQueryDefaultActive?.[key] || false\n }\n Object.assign(mediaQueryConfig, media)\n curState = { ...mediaState }\n initState = curState\n mediaKeysOrdered = Object.keys(media)\n if (config.disableSSR) {\n setupMediaListeners()\n }\n}\n\nfunction unlisten() {\n dispose.forEach((cb) => cb())\n dispose.clear()\n}\n\n/**\n * Note: This should *not* set the state on the first render!\n * Because to avoid hydration issues SSR must match the server\n * *and then* re-render with the actual media query state.\n */\nlet configuredKey = ''\nfunction setupMediaListeners() {\n // avoid setting up more than once per config\n const nextKey = JSON.stringify(mediaQueryConfig)\n if (nextKey === configuredKey) {\n return\n }\n configuredKey = nextKey\n\n // hmr, undo existing before re-binding\n unlisten()\n\n for (const key in mediaQueryConfig) {\n const str = mediaObjectToString(mediaQueryConfig[key])\n const getMatch = () => matchMedia(str)\n const match = getMatch()\n if (!match) {\n throw new Error('\u26A0\uFE0F No match')\n }\n // react native needs these deprecated apis for now\n match.addListener(update)\n dispose.add(() => match.removeListener(update))\n\n update()\n\n function update() {\n const next = !!getMatch().matches\n if (next === mediaState[key]) return\n mediaState[key] = next\n curState = { ...mediaState }\n const cur = listeners[key]\n if (cur?.size) {\n cur.forEach((cb) => cb(next))\n }\n }\n }\n}\n\nexport function useMediaListeners(config: TamaguiInternalConfig) {\n if (config.disableSSR) return\n useEffect(() => {\n setupMediaListeners()\n return unlisten\n }, [])\n}\n\nexport function useMedia(): {\n [key in MediaQueryKey]: boolean\n} {\n const keys = useSafeRef({} as Record<string, boolean>)\n const [state, setState] = useState<MediaQueryState>(() => getMediaState(initState || {}, keys))\n\n function updateState() {\n setState((prev) => {\n for (const key in keys.current) {\n if (prev[key] !== mediaState[key]) {\n return getMediaState({ ...mediaState }, keys)\n }\n }\n return prev\n })\n }\n\n useIsomorphicLayoutEffect(() => {\n updateState()\n const disposers = Object.keys(keys.current).map((key) =>\n addMediaQueryListener(key, updateState)\n )\n return () => {\n disposers.forEach((cb) => cb())\n }\n }, [keys.current])\n\n return state\n}\n\nfunction getMediaState(state: MediaQueryState, keys: MutableRefObject<Record<string, boolean>>) {\n return new Proxy(state, {\n get(_, key: string) {\n if (!keys.current[key]) {\n keys.current[key] = true\n }\n return Reflect.get(state, key)\n },\n })\n}\n\n/**\n * Useful for more complex components that need access to the currently active props,\n * accounting for the currently active media queries.\n *\n * Use sparingly, is will loop props and trigger re-render on all media queries.\n *\n * */\nexport function useMediaPropsActive<A extends Object>(\n props: A\n): {\n // remove all media\n [Key in keyof A extends `$${string}` ? never : keyof A]?: A[Key]\n} {\n const media = useMedia()\n\n return useMemo(() => {\n const next = {} as A\n const importancesUsed = {}\n const propNames = Object.keys(props)\n\n for (let i = propNames.length - 1; i >= 0; i--) {\n const key = propNames[i]\n const val = props[key]\n if (key[0] === '$') {\n if (!media[key.slice(1)]) {\n continue\n }\n if (val && typeof val === 'object') {\n const subKeys = Object.keys(val)\n for (let j = subKeys.length; j--; j >= 0) {\n const subKey = subKeys[j]\n mergeMediaByImportance(next, subKey, val[subKey], importancesUsed)\n }\n }\n } else {\n mergeMediaByImportance(next, key, val, importancesUsed)\n }\n }\n\n return next\n }, [media, props])\n}\n\nexport function mergeMediaByImportance(\n onto: Record<string, any>,\n key: string,\n value: any,\n importancesUsed: Record<string, number>\n) {\n const importance = getMediaKeyImportance(key)\n if (importancesUsed[key] > importance) {\n return false\n }\n importancesUsed[key] = importance\n onto[key] = value\n return true\n}\n\nfunction camelToHyphen(str: string) {\n return str.replace(/[A-Z]/g, (m) => `-${m.toLowerCase()}`).toLowerCase()\n}\n\nexport function mediaObjectToString(query: string | MediaQueryObject) {\n if (typeof query === 'string') {\n return query\n }\n return Object.entries(query)\n .map(([feature, value]) => {\n feature = camelToHyphen(feature)\n if (typeof value === 'string') {\n return `(${feature}: ${value})`\n }\n if (typeof value === 'number' && /[height|width]$/.test(feature)) {\n value = `${value}px`\n }\n return `(${feature}: ${value})`\n })\n .join(' and ')\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["update"]
7
7
  }
@@ -1,13 +1,11 @@
1
- var __defProp = Object.defineProperty;
2
- var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
1
  var _a, _b;
4
2
  import { Pressable } from "react-native";
5
3
  const getPressable = (_b = (_a = Pressable) == null ? void 0 : _a["type"]) == null ? void 0 : _b["render"];
6
- const usePressable = /* @__PURE__ */ __name((props) => {
4
+ const usePressable = (props) => {
7
5
  const out = getPressable(props);
8
6
  const { children, style, ...pressableProps } = out.props;
9
7
  return [pressableProps, style];
10
- }, "usePressable");
8
+ };
11
9
  export {
12
10
  usePressable
13
11
  };
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../src/hooks/usePressable.tsx"],
4
4
  "sourcesContent": ["import { Pressable, PressableProps } from 'react-native'\n\nconst getPressable = Pressable?.['type']?.['render']\n\nexport const usePressable = (props: PressableProps) => {\n const out = getPressable(props)\n const { children, style, ...pressableProps } = out.props\n return [pressableProps, style] as const\n}\n"],
5
- "mappings": ";;AAAA;AAAA;AAEA,MAAM,eAAe,6CAAY,YAAZ,mBAAsB;AAEpC,MAAM,eAAe,wBAAC,UAA0B;AACrD,QAAM,MAAM,aAAa,KAAK;AAC9B,QAAM,EAAE,UAAU,UAAU,mBAAmB,IAAI;AACnD,SAAO,CAAC,gBAAgB,KAAK;AAC/B,GAJ4B;",
5
+ "mappings": "AAAA;AAAA,SAAS,iBAAiC;AAE1C,MAAM,gBAAe,4CAAY,YAAZ,mBAAsB;AAEpC,MAAM,eAAe,CAAC,UAA0B;AACrD,QAAM,MAAM,aAAa,KAAK;AAC9B,QAAM,EAAE,UAAU,UAAU,eAAe,IAAI,IAAI;AACnD,SAAO,CAAC,gBAAgB,KAAK;AAC/B;",
6
6
  "names": []
7
7
  }