@tamagui/core 1.0.0-beta.152 → 1.0.0-beta.17

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 (315) hide show
  1. package/README.md +1 -0
  2. package/dist/cjs/Tamagui.js +13 -1
  3. package/dist/cjs/Tamagui.js.map +2 -2
  4. package/dist/cjs/ThemeContext.js +4 -0
  5. package/dist/cjs/ThemeManager.js +30 -14
  6. package/dist/cjs/ThemeManager.js.map +2 -2
  7. package/dist/cjs/conf.js +10 -1
  8. package/dist/cjs/conf.js.map +2 -2
  9. package/dist/cjs/constants/constants.js +6 -0
  10. package/dist/cjs/constants/platform.js +15 -0
  11. package/dist/cjs/constants/platform.js.map +2 -2
  12. package/dist/cjs/constants/rnw.js +4 -0
  13. package/dist/cjs/contexts/ButtonInsideButtonContext.js +4 -0
  14. package/dist/cjs/createComponent.js +191 -113
  15. package/dist/cjs/createComponent.js.map +2 -2
  16. package/dist/cjs/createFont.js +4 -0
  17. package/dist/cjs/createShorthands.js +4 -0
  18. package/dist/cjs/createTamagui.js +48 -27
  19. package/dist/cjs/createTamagui.js.map +2 -2
  20. package/dist/cjs/createTheme.js +4 -0
  21. package/dist/cjs/createTokens.js +7 -6
  22. package/dist/cjs/createTokens.js.map +2 -2
  23. package/dist/cjs/createVariable.js +18 -2
  24. package/dist/cjs/createVariable.js.map +2 -2
  25. package/dist/cjs/helpers/RNComponents.js +4 -0
  26. package/dist/cjs/helpers/addStylesUsingClassname.js +8 -0
  27. package/dist/cjs/helpers/addStylesUsingClassname.js.map +2 -2
  28. package/dist/cjs/helpers/areEqualSets.js +4 -0
  29. package/dist/cjs/helpers/createMediaStyle.js +5 -2
  30. package/dist/cjs/helpers/createMediaStyle.js.map +2 -2
  31. package/dist/cjs/helpers/createPropMapper.js +53 -22
  32. package/dist/cjs/helpers/createPropMapper.js.map +2 -2
  33. package/dist/cjs/helpers/createShallowUpdate.js +4 -0
  34. package/dist/cjs/helpers/createTamaguiProvider.js +4 -0
  35. package/dist/cjs/helpers/extendStaticConfig.js +9 -6
  36. package/dist/cjs/helpers/extendStaticConfig.js.map +2 -2
  37. package/dist/cjs/helpers/fixNativeShadow.js +4 -0
  38. package/dist/cjs/helpers/fixNativeShadow.native.js +10 -9
  39. package/dist/cjs/helpers/fixNativeShadow.native.js.map +2 -2
  40. package/dist/cjs/helpers/getButtonSize.js +45 -0
  41. package/dist/cjs/helpers/getButtonSize.js.map +7 -0
  42. package/dist/cjs/helpers/getExpandedShorthands.js +4 -0
  43. package/dist/cjs/helpers/getSize.js +35 -0
  44. package/dist/cjs/helpers/getSize.js.map +7 -0
  45. package/dist/cjs/helpers/getSplitStyles.js +137 -55
  46. package/dist/cjs/helpers/getSplitStyles.js.map +2 -2
  47. package/dist/cjs/helpers/getStylesAtomic.js +20 -3
  48. package/dist/cjs/helpers/getStylesAtomic.js.map +2 -2
  49. package/dist/cjs/helpers/getStylesAtomic.native.js +4 -0
  50. package/dist/cjs/helpers/getTextSize.js +56 -0
  51. package/dist/cjs/helpers/getTextSize.js.map +7 -0
  52. package/dist/cjs/helpers/insertStyleRule.js +42 -27
  53. package/dist/cjs/helpers/insertStyleRule.js.map +2 -2
  54. package/dist/cjs/helpers/isObj.js +4 -0
  55. package/dist/cjs/helpers/isTamaguiElement.js +4 -0
  56. package/dist/cjs/helpers/matchMedia.js +4 -0
  57. package/dist/cjs/helpers/matchMedia.native.js +4 -0
  58. package/dist/cjs/{constants/pseudos.js → helpers/nativeGestureHandler.js} +11 -19
  59. package/dist/cjs/helpers/nativeGestureHandler.js.map +7 -0
  60. package/dist/cjs/helpers/nativeGestureHandler.native.js +18 -0
  61. package/dist/cjs/helpers/nativeGestureHandler.native.js.map +7 -0
  62. package/dist/cjs/helpers/proxyThemeVariables.js +40 -0
  63. package/dist/cjs/helpers/proxyThemeVariables.js.map +7 -0
  64. package/dist/cjs/helpers/themeable.js +7 -2
  65. package/dist/cjs/helpers/themeable.js.map +2 -2
  66. package/dist/cjs/helpers/validate.js +53 -11
  67. package/dist/cjs/helpers/validate.js.map +2 -2
  68. package/dist/cjs/helpers/withStaticProperties.js +4 -0
  69. package/dist/cjs/helpers/wrapThemeManagerContext.js +4 -0
  70. package/dist/cjs/hooks/useConstant.js +4 -0
  71. package/dist/cjs/hooks/useFeatures.js +4 -0
  72. package/dist/cjs/hooks/useId.js +59 -0
  73. package/dist/cjs/hooks/useId.js.map +7 -0
  74. package/dist/cjs/hooks/useIsMounted.js +4 -0
  75. package/dist/cjs/hooks/useIsTouchDevice.js +8 -4
  76. package/dist/cjs/hooks/useIsTouchDevice.js.map +2 -2
  77. package/dist/cjs/hooks/useMedia.js +14 -0
  78. package/dist/cjs/hooks/useMedia.js.map +2 -2
  79. package/dist/cjs/hooks/usePressable.js +4 -0
  80. package/dist/cjs/hooks/usePrevious.js +1 -0
  81. package/dist/cjs/{createShallowUpdate.js.map → hooks/usePrevious.js.map} +0 -0
  82. package/dist/cjs/hooks/useTheme.js +30 -16
  83. package/dist/cjs/hooks/useTheme.js.map +2 -2
  84. package/dist/cjs/hooks/useUnmountEffect.js +4 -0
  85. package/dist/cjs/index.js +24 -6
  86. package/dist/cjs/index.js.map +2 -2
  87. package/dist/cjs/nativeGestureHandler.native.js +18 -0
  88. package/dist/cjs/nativeGestureHandler.native.js.map +7 -0
  89. package/dist/cjs/static.js +3 -0
  90. package/dist/cjs/static.js.map +2 -2
  91. package/dist/cjs/styled.js +11 -5
  92. package/dist/cjs/styled.js.map +2 -2
  93. package/dist/cjs/types.js.map +1 -1
  94. package/dist/cjs/views/Slot.js +134 -0
  95. package/dist/cjs/views/Slot.js.map +7 -0
  96. package/dist/cjs/views/Stack.js +4 -0
  97. package/dist/cjs/views/Text.js +13 -14
  98. package/dist/cjs/views/Text.js.map +2 -2
  99. package/dist/cjs/views/TextAncestorContext.js +6 -0
  100. package/dist/cjs/views/Theme.js +7 -3
  101. package/dist/cjs/views/Theme.js.map +2 -2
  102. package/dist/cjs/views/ThemeInverse.js +10 -1
  103. package/dist/cjs/views/ThemeInverse.js.map +2 -2
  104. package/dist/cjs/views/ThemeProvider.js +6 -1
  105. package/dist/cjs/views/ThemeProvider.js.map +2 -2
  106. package/dist/cjs/views/ThemeReset.js +4 -0
  107. package/dist/esm/Tamagui.js +8 -2
  108. package/dist/esm/Tamagui.js.map +2 -2
  109. package/dist/esm/ThemeManager.js +21 -11
  110. package/dist/esm/ThemeManager.js.map +2 -2
  111. package/dist/esm/conf.js +0 -1
  112. package/dist/esm/conf.js.map +2 -2
  113. package/dist/esm/constants/platform.js +2 -0
  114. package/dist/esm/constants/platform.js.map +2 -2
  115. package/dist/esm/createComponent.js +187 -122
  116. package/dist/esm/createComponent.js.map +2 -2
  117. package/dist/esm/createTamagui.js +45 -28
  118. package/dist/esm/createTamagui.js.map +2 -2
  119. package/dist/esm/createTokens.js +2 -6
  120. package/dist/esm/createTokens.js.map +2 -2
  121. package/dist/esm/createVariable.js +8 -2
  122. package/dist/esm/createVariable.js.map +2 -2
  123. package/dist/esm/helpers/addStylesUsingClassname.js +4 -1
  124. package/dist/esm/helpers/addStylesUsingClassname.js.map +2 -2
  125. package/dist/esm/helpers/createMediaStyle.js +0 -2
  126. package/dist/esm/helpers/createMediaStyle.js.map +2 -2
  127. package/dist/esm/helpers/createPropMapper.js +50 -22
  128. package/dist/esm/helpers/createPropMapper.js.map +2 -2
  129. package/dist/esm/helpers/extendStaticConfig.js +9 -6
  130. package/dist/esm/helpers/extendStaticConfig.js.map +2 -2
  131. package/dist/esm/helpers/fixNativeShadow.native.js +7 -9
  132. package/dist/esm/helpers/fixNativeShadow.native.js.map +2 -2
  133. package/dist/esm/helpers/getButtonSize.js +24 -0
  134. package/dist/esm/helpers/getButtonSize.js.map +7 -0
  135. package/dist/esm/helpers/getSize.js +13 -0
  136. package/dist/esm/helpers/getSize.js.map +7 -0
  137. package/dist/esm/helpers/getSplitStyles.js +136 -57
  138. package/dist/esm/helpers/getSplitStyles.js.map +2 -2
  139. package/dist/esm/helpers/getStylesAtomic.js +15 -3
  140. package/dist/esm/helpers/getStylesAtomic.js.map +2 -2
  141. package/dist/esm/helpers/getTextSize.js +34 -0
  142. package/dist/esm/helpers/getTextSize.js.map +7 -0
  143. package/dist/esm/helpers/insertStyleRule.js +32 -27
  144. package/dist/esm/helpers/insertStyleRule.js.map +2 -2
  145. package/dist/esm/helpers/nativeGestureHandler.js +7 -0
  146. package/dist/esm/helpers/nativeGestureHandler.js.map +7 -0
  147. package/dist/esm/helpers/nativeGestureHandler.native.js +2 -0
  148. package/dist/esm/helpers/nativeGestureHandler.native.js.map +7 -0
  149. package/dist/esm/helpers/proxyThemeVariables.js +18 -0
  150. package/dist/esm/helpers/proxyThemeVariables.js.map +7 -0
  151. package/dist/esm/helpers/themeable.js +3 -2
  152. package/dist/esm/helpers/themeable.js.map +2 -2
  153. package/dist/esm/helpers/validate.js +24 -11
  154. package/dist/esm/helpers/validate.js.map +2 -2
  155. package/dist/esm/hooks/useId.js +35 -0
  156. package/dist/esm/hooks/useId.js.map +7 -0
  157. package/dist/esm/hooks/useIsTouchDevice.js +6 -6
  158. package/dist/esm/hooks/useIsTouchDevice.js.map +2 -2
  159. package/dist/esm/hooks/useMedia.js +3 -0
  160. package/dist/esm/hooks/useMedia.js.map +2 -2
  161. package/dist/esm/hooks/usePrevious.js +1 -0
  162. package/dist/esm/{createShallowUpdate.js.map → hooks/usePrevious.js.map} +0 -0
  163. package/dist/esm/hooks/useTheme.js +22 -16
  164. package/dist/esm/hooks/useTheme.js.map +2 -2
  165. package/dist/esm/index.js +13 -6
  166. package/dist/esm/index.js.map +2 -2
  167. package/dist/esm/nativeGestureHandler.native.js +2 -0
  168. package/dist/esm/nativeGestureHandler.native.js.map +7 -0
  169. package/dist/esm/static.js +3 -0
  170. package/dist/esm/static.js.map +2 -2
  171. package/dist/esm/styled.js +7 -5
  172. package/dist/esm/styled.js.map +2 -2
  173. package/dist/esm/views/Slot.js +82 -0
  174. package/dist/esm/views/Slot.js.map +7 -0
  175. package/dist/esm/views/Text.js +9 -14
  176. package/dist/esm/views/Text.js.map +2 -2
  177. package/dist/esm/views/Theme.js +3 -3
  178. package/dist/esm/views/Theme.js.map +2 -2
  179. package/dist/esm/views/ThemeInverse.js +6 -2
  180. package/dist/esm/views/ThemeInverse.js.map +2 -2
  181. package/dist/esm/views/ThemeProvider.js +2 -1
  182. package/dist/esm/views/ThemeProvider.js.map +2 -2
  183. package/dist/jsx/Tamagui.js +8 -2
  184. package/dist/jsx/ThemeManager.js +21 -11
  185. package/dist/jsx/conf.js +0 -1
  186. package/dist/jsx/constants/platform.js +2 -0
  187. package/dist/jsx/createComponent.js +173 -113
  188. package/dist/jsx/createTamagui.js +45 -28
  189. package/dist/jsx/createTokens.js +2 -6
  190. package/dist/jsx/createVariable.js +8 -2
  191. package/dist/jsx/helpers/addStylesUsingClassname.js +4 -1
  192. package/dist/jsx/helpers/createMediaStyle.js +0 -2
  193. package/dist/jsx/helpers/createPropMapper.js +50 -22
  194. package/dist/jsx/helpers/extendStaticConfig.js +9 -6
  195. package/dist/jsx/helpers/fixNativeShadow.native.js +7 -9
  196. package/dist/jsx/helpers/getButtonSize.js +23 -0
  197. package/dist/jsx/helpers/getSize.js +12 -0
  198. package/dist/jsx/helpers/getSplitStyles.js +136 -57
  199. package/dist/jsx/helpers/getStylesAtomic.js +15 -3
  200. package/dist/jsx/helpers/getTextSize.js +33 -0
  201. package/dist/jsx/helpers/insertStyleRule.js +32 -27
  202. package/dist/jsx/helpers/nativeGestureHandler.js +6 -0
  203. package/dist/jsx/helpers/nativeGestureHandler.native.js +1 -0
  204. package/dist/jsx/helpers/proxyThemeVariables.js +17 -0
  205. package/dist/jsx/helpers/themeable.js +3 -3
  206. package/dist/jsx/helpers/validate.js +24 -11
  207. package/dist/jsx/hooks/useId.js +34 -0
  208. package/dist/jsx/hooks/useIsTouchDevice.js +6 -6
  209. package/dist/jsx/hooks/useMedia.js +3 -0
  210. package/dist/jsx/{createShallowUpdate.js → hooks/usePrevious.js} +0 -0
  211. package/dist/jsx/hooks/useTheme.js +22 -16
  212. package/dist/jsx/index.js +13 -6
  213. package/dist/jsx/nativeGestureHandler.native.js +1 -0
  214. package/dist/jsx/static.js +3 -0
  215. package/dist/jsx/styled.js +7 -5
  216. package/dist/jsx/views/Slot.js +75 -0
  217. package/dist/jsx/views/Text.js +9 -14
  218. package/dist/jsx/views/Theme.js +4 -4
  219. package/dist/jsx/views/ThemeInverse.js +6 -1
  220. package/dist/jsx/views/ThemeProvider.js +2 -2
  221. package/package.json +8 -6
  222. package/types/Tamagui.d.ts +16 -1
  223. package/types/Tamagui.d.ts.map +1 -1
  224. package/types/ThemeManager.d.ts +3 -3
  225. package/types/ThemeManager.d.ts.map +1 -1
  226. package/types/conf.d.ts +2 -0
  227. package/types/conf.d.ts.map +1 -1
  228. package/types/constants/platform.d.ts +1 -0
  229. package/types/constants/platform.d.ts.map +1 -1
  230. package/types/createComponent.d.ts +3 -4
  231. package/types/createComponent.d.ts.map +1 -1
  232. package/types/createTamagui.d.ts +3 -1
  233. package/types/createTamagui.d.ts.map +1 -1
  234. package/types/createTokens.d.ts +0 -26
  235. package/types/createTokens.d.ts.map +1 -1
  236. package/types/createVariable.d.ts +1 -0
  237. package/types/createVariable.d.ts.map +1 -1
  238. package/types/helpers/addStylesUsingClassname.d.ts.map +1 -1
  239. package/types/helpers/createMediaStyle.d.ts.map +1 -1
  240. package/types/helpers/createPropMapper.d.ts +1 -1
  241. package/types/helpers/createPropMapper.d.ts.map +1 -1
  242. package/types/helpers/extendStaticConfig.d.ts +2 -2
  243. package/types/helpers/extendStaticConfig.d.ts.map +1 -1
  244. package/types/helpers/fixNativeShadow.native.d.ts +2 -1
  245. package/types/helpers/fixNativeShadow.native.d.ts.map +1 -1
  246. package/types/helpers/getButtonSize.d.ts +8 -0
  247. package/types/helpers/getButtonSize.d.ts.map +1 -0
  248. package/types/helpers/getSize.d.ts +3 -0
  249. package/types/helpers/getSize.d.ts.map +1 -0
  250. package/types/helpers/getSplitStyles.d.ts +14 -6
  251. package/types/helpers/getSplitStyles.d.ts.map +1 -1
  252. package/types/helpers/getStylesAtomic.d.ts.map +1 -1
  253. package/types/helpers/getTextSize.d.ts +3 -0
  254. package/types/helpers/getTextSize.d.ts.map +1 -0
  255. package/types/helpers/insertStyleRule.d.ts +2 -1
  256. package/types/helpers/insertStyleRule.d.ts.map +1 -1
  257. package/types/helpers/nativeGestureHandler.d.ts +2 -0
  258. package/types/helpers/nativeGestureHandler.d.ts.map +1 -0
  259. package/types/helpers/nativeGestureHandler.native.d.ts +2 -0
  260. package/types/helpers/nativeGestureHandler.native.d.ts.map +1 -0
  261. package/types/helpers/proxyThemeVariables.d.ts +2 -0
  262. package/types/helpers/proxyThemeVariables.d.ts.map +1 -0
  263. package/types/helpers/themeable.d.ts +3 -1
  264. package/types/helpers/themeable.d.ts.map +1 -1
  265. package/types/helpers/validate.d.ts.map +1 -1
  266. package/types/hooks/useId.d.ts +9 -0
  267. package/types/hooks/useId.d.ts.map +1 -0
  268. package/types/hooks/useMedia.d.ts +2 -6
  269. package/types/hooks/useMedia.d.ts.map +1 -1
  270. package/types/hooks/usePrevious.d.ts +1 -0
  271. package/types/hooks/usePrevious.d.ts.map +1 -0
  272. package/types/hooks/useTheme.d.ts +1 -1
  273. package/types/hooks/useTheme.d.ts.map +1 -1
  274. package/types/index.d.ts +11 -6
  275. package/types/index.d.ts.map +1 -1
  276. package/types/nativeGestureHandler.native.d.ts +2 -0
  277. package/types/nativeGestureHandler.native.d.ts.map +1 -0
  278. package/types/static.d.ts +3 -0
  279. package/types/static.d.ts.map +1 -1
  280. package/types/styled.d.ts +12 -3
  281. package/types/styled.d.ts.map +1 -1
  282. package/types/types.d.ts +86 -46
  283. package/types/types.d.ts.map +1 -1
  284. package/types/views/Slot.d.ts +9 -0
  285. package/types/views/Slot.d.ts.map +1 -0
  286. package/types/views/Text.d.ts.map +1 -1
  287. package/types/views/Theme.d.ts +1 -0
  288. package/types/views/Theme.d.ts.map +1 -1
  289. package/types/views/ThemeInverse.d.ts.map +1 -1
  290. package/types/views/ThemeProvider.d.ts +1 -0
  291. package/types/views/ThemeProvider.d.ts.map +1 -1
  292. package/LICENSE +0 -21
  293. package/dist/cjs/constants/pseudos.js.map +0 -7
  294. package/dist/cjs/createShallowUpdate.js +0 -1
  295. package/dist/cjs/devtools.js +0 -32
  296. package/dist/cjs/devtools.js.map +0 -7
  297. package/dist/cjs/spacedChildren.js +0 -86
  298. package/dist/cjs/spacedChildren.js.map +0 -7
  299. package/dist/cjs/tamagui-base.css +0 -8
  300. package/dist/cjs/tamagui-base.css.map +0 -7
  301. package/dist/esm/constants/pseudos.js +0 -18
  302. package/dist/esm/constants/pseudos.js.map +0 -7
  303. package/dist/esm/createShallowUpdate.js +0 -1
  304. package/dist/esm/devtools.js +0 -14
  305. package/dist/esm/devtools.js.map +0 -7
  306. package/dist/esm/spacedChildren.js +0 -52
  307. package/dist/esm/spacedChildren.js.map +0 -7
  308. package/dist/esm/tamagui-base.css +0 -8
  309. package/dist/esm/tamagui-base.css.map +0 -7
  310. package/dist/jsx/constants/pseudos.js +0 -17
  311. package/dist/jsx/devtools.js +0 -13
  312. package/dist/jsx/spacedChildren.js +0 -44
  313. package/dist/jsx/tamagui-base.css +0 -7
  314. package/types/spacedChildren.d.ts +0 -9
  315. package/types/spacedChildren.d.ts.map +0 -1
package/dist/esm/index.js CHANGED
@@ -8,36 +8,43 @@ import { createTokens } from "./createTokens";
8
8
  export * from "./createVariable";
9
9
  export * from "./styled";
10
10
  export * from "./types";
11
+ import { RNWTextProps, RNWViewProps } from "./types-rnw";
11
12
  import { getHasConfigured, getConfig, getThemes, getTokens, onConfiguredOnce } from "./conf";
12
13
  export * from "./constants/constants";
13
14
  export * from "./constants/platform";
14
15
  export * from "./constants/rnw";
16
+ export * from "./helpers/getButtonSize";
15
17
  export * from "./helpers/getExpandedShorthands";
18
+ export * from "./helpers/getSize";
16
19
  export * from "./helpers/getSplitStyles";
17
20
  export * from "./helpers/getStylesAtomic";
21
+ export * from "./helpers/getTextSize";
18
22
  export * from "./helpers/isObj";
19
23
  export * from "./helpers/isTamaguiElement";
20
24
  export * from "./helpers/matchMedia";
21
25
  export * from "./helpers/themeable";
22
26
  export * from "./helpers/withStaticProperties";
23
27
  export * from "./contexts/ButtonInsideButtonContext";
24
- export * from "./hooks/useIsTouchDevice";
25
28
  export * from "./hooks/useConstant";
26
- export * from "./hooks/usePressable";
29
+ export * from "./hooks/useId";
30
+ export * from "./hooks/useIsMounted";
31
+ export * from "./hooks/useIsTouchDevice";
27
32
  export * from "./hooks/useMedia";
33
+ export * from "./hooks/usePressable";
28
34
  export * from "./hooks/useTheme";
29
- export * from "./hooks/useIsMounted";
30
35
  export * from "./hooks/useUnmountEffect";
31
- export * from "@tamagui/use-force-update";
32
36
  export * from "./views/Stack";
33
37
  export * from "./views/Text";
38
+ export * from "./views/TextAncestorContext";
34
39
  export * from "./views/Theme";
35
- export * from "./views/ThemeReset";
36
40
  export * from "./views/ThemeInverse";
37
41
  export * from "./views/ThemeProvider";
38
- export * from "./views/TextAncestorContext";
42
+ export * from "./views/ThemeReset";
43
+ export * from "@tamagui/use-force-update";
39
44
  export * from "@tamagui/helpers";
40
45
  export {
46
+ RNWTextProps,
47
+ RNWViewProps,
41
48
  createTokens,
42
49
  getConfig,
43
50
  getHasConfigured,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/index.ts"],
4
- "sourcesContent": ["export * from './Tamagui'\nexport * from './createComponent'\nexport * from './createShorthands'\nexport * from './createTheme'\nexport * from './createTamagui'\nexport * from './createFont'\nexport { createTokens } from './createTokens'\nexport * from './createVariable'\nexport * from './styled'\nexport * from './types'\nexport { getHasConfigured, getConfig, getThemes, getTokens, onConfiguredOnce } from './conf'\n\nexport * from './constants/constants'\nexport * from './constants/platform'\nexport * from './constants/rnw'\n\nexport * from './helpers/getExpandedShorthands'\nexport * from './helpers/getSplitStyles'\nexport * from './helpers/getStylesAtomic'\nexport * from './helpers/isObj'\nexport * from './helpers/isTamaguiElement'\nexport * from './helpers/matchMedia'\nexport * from './helpers/themeable'\nexport * from './helpers/withStaticProperties'\n\nexport * from './contexts/ButtonInsideButtonContext'\n\nexport * from './hooks/useIsTouchDevice'\nexport * from './hooks/useConstant'\nexport * from './hooks/usePressable'\nexport * from './hooks/useMedia'\nexport * from './hooks/useTheme'\nexport * from './hooks/useIsMounted'\nexport * from './hooks/useUnmountEffect'\nexport * from '@tamagui/use-force-update'\n\nexport * from './views/Stack'\nexport * from './views/Text'\nexport * from './views/Theme'\nexport * from './views/ThemeReset'\nexport * from './views/ThemeInverse'\nexport * from './views/ThemeProvider'\nexport * from './views/TextAncestorContext'\n\nexport * from '@tamagui/helpers'\n"],
5
- "mappings": "AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;",
4
+ "sourcesContent": ["export * from './Tamagui'\nexport * from './createComponent'\nexport * from './createShorthands'\nexport * from './createTheme'\nexport * from './createTamagui'\nexport * from './createFont'\nexport { createTokens } from './createTokens'\nexport * from './createVariable'\nexport * from './styled'\nexport * from './types'\n// for type portability\nexport { RNWTextProps, RNWViewProps } from './types-rnw'\nexport { getHasConfigured, getConfig, getThemes, getTokens, onConfiguredOnce } from './conf'\n\nexport * from './constants/constants'\nexport * from './constants/platform'\nexport * from './constants/rnw'\n\nexport * from './helpers/getButtonSize'\nexport * from './helpers/getExpandedShorthands'\nexport * from './helpers/getSize'\nexport * from './helpers/getSplitStyles'\nexport * from './helpers/getStylesAtomic'\nexport * from './helpers/getTextSize'\nexport * from './helpers/isObj'\nexport * from './helpers/isTamaguiElement'\nexport * from './helpers/matchMedia'\nexport * from './helpers/themeable'\nexport * from './helpers/withStaticProperties'\n\nexport * from './contexts/ButtonInsideButtonContext'\n\nexport * from './hooks/useConstant'\nexport * from './hooks/useId'\nexport * from './hooks/useIsMounted'\nexport * from './hooks/useIsTouchDevice'\nexport * from './hooks/useMedia'\nexport * from './hooks/usePressable'\nexport * from './hooks/useTheme'\nexport * from './hooks/useUnmountEffect'\n\nexport * from './views/Stack'\nexport * from './views/Text'\nexport * from './views/TextAncestorContext'\nexport * from './views/Theme'\nexport * from './views/ThemeInverse'\nexport * from './views/ThemeProvider'\nexport * from './views/ThemeReset'\n\nexport * from '@tamagui/use-force-update'\nexport * from '@tamagui/helpers'\n"],
5
+ "mappings": "AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;",
6
6
  "names": []
7
7
  }
@@ -0,0 +1,2 @@
1
+ export * from "react-native-gesture-handler";
2
+ //# sourceMappingURL=nativeGestureHandler.native.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/nativeGestureHandler.native.ts"],
4
+ "sourcesContent": ["export * from 'react-native-gesture-handler'\n"],
5
+ "mappings": "AAAA;",
6
+ "names": []
7
+ }
@@ -3,12 +3,15 @@ export * from "./createComponent";
3
3
  export * from "./createFont";
4
4
  export * from "./createTokens";
5
5
  export * from "./createTamagui";
6
+ export * from "./createVariable";
6
7
  export * from "./constants/constants";
7
8
  export * from "./hooks/useMedia";
8
9
  export * from "./hooks/useTheme";
9
10
  export * from "./helpers/isObj";
10
11
  export * from "./helpers/getStylesAtomic";
12
+ export * from "./helpers/proxyThemeVariables";
11
13
  export * from "./helpers/getSplitStyles";
12
14
  export * from "@tamagui/helpers";
13
15
  export * from "./constants/rnw";
16
+ export * from "./types";
14
17
  //# sourceMappingURL=static.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/static.ts"],
4
- "sourcesContent": ["// only stuff that gets extracted or needed by tamagui-static\n\nexport * from './styled'\nexport * from './createComponent'\nexport * from './createFont'\nexport * from './createTokens'\nexport * from './createTamagui'\nexport * from './constants/constants'\n\nexport * from './hooks/useMedia'\nexport * from './hooks/useTheme'\n\nexport * from './helpers/isObj'\nexport * from './helpers/getStylesAtomic'\nexport * from './helpers/getSplitStyles'\nexport * from '@tamagui/helpers'\n\nexport * from './constants/rnw'\n"],
5
- "mappings": "AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAEA;",
4
+ "sourcesContent": ["// only stuff that gets extracted or needed by tamagui-static\n\nexport * from './styled'\nexport * from './createComponent'\nexport * from './createFont'\nexport * from './createTokens'\nexport * from './createTamagui'\nexport * from './createVariable'\nexport * from './constants/constants'\n\nexport * from './hooks/useMedia'\nexport * from './hooks/useTheme'\n\nexport * from './helpers/isObj'\nexport * from './helpers/getStylesAtomic'\nexport * from './helpers/proxyThemeVariables'\nexport * from './helpers/getSplitStyles'\nexport * from '@tamagui/helpers'\n\nexport * from './constants/rnw'\n\nexport * from './types'\n"],
5
+ "mappings": "AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AAEA;",
6
6
  "names": []
7
7
  }
@@ -2,18 +2,19 @@ var __defProp = Object.defineProperty;
2
2
  var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
3
  import { Image, Text, TextInput } from "react-native";
4
4
  import { createComponent } from "./createComponent";
5
- import { extendStaticConfig } from "./helpers/extendStaticConfig";
6
5
  import { RNComponents } from "./helpers/RNComponents";
7
6
  function styled(Component, options, staticExtractionOptions) {
8
7
  const staticConfigProps = (() => {
8
+ var _a;
9
9
  if (options) {
10
10
  const { variants, name, defaultVariants, ...defaultProps } = options;
11
11
  if (defaultVariants) {
12
12
  Object.assign(defaultProps, defaultVariants);
13
13
  }
14
- const isReactNativeWeb = RNComponents.has(Component);
14
+ const isReactNativeWeb = "staticConfig" in Component ? Component.staticConfig.isReactNativeWeb : RNComponents.has(Component);
15
+ const reactNativeWebComponent = isReactNativeWeb ? ((_a = Component["staticConfig"]) == null ? void 0 : _a.reactNativeWebComponent) || Component : null;
15
16
  const isTamagui = !isReactNativeWeb && "staticConfig" in Component;
16
- const Comp = Component;
17
+ const Comp = reactNativeWebComponent || Component;
17
18
  const isImage = !!(defaultProps.isImage || (!isTamagui ? Comp === Image : false));
18
19
  const isInput = !!(defaultProps.isInput || (!isTamagui ? Comp === TextInput : false));
19
20
  const isText = !!(defaultProps.isText || (!isTamagui ? isInput || Comp === Text : false));
@@ -25,8 +26,10 @@ function styled(Component, options, staticExtractionOptions) {
25
26
  isTamagui,
26
27
  variants,
27
28
  defaultProps,
29
+ defaultVariants,
28
30
  componentName: name,
29
31
  isReactNativeWeb,
32
+ reactNativeWebComponent,
30
33
  isInput,
31
34
  isText,
32
35
  isImage
@@ -35,8 +38,7 @@ function styled(Component, options, staticExtractionOptions) {
35
38
  }
36
39
  return {};
37
40
  })();
38
- const config = extendStaticConfig(Component, staticConfigProps);
39
- const component = createComponent(config);
41
+ const component = createComponent(staticConfigProps, Component);
40
42
  return component;
41
43
  }
42
44
  __name(styled, "styled");
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/styled.tsx"],
4
- "sourcesContent": ["import { Image, Text, TextInput } from 'react-native'\n\nimport { createComponent } from './createComponent'\nimport { extendStaticConfig } from './helpers/extendStaticConfig'\nimport { RNComponents } from './helpers/RNComponents'\nimport {\n GetProps,\n GetVariantProps,\n GetVariantValues,\n MediaProps,\n PseudoProps,\n StaticConfig,\n StylableComponent,\n TamaguiComponent,\n VariantDefinitions,\n VariantSpreadFunction,\n} from './types'\n\nexport function styled<\n ParentComponent extends StylableComponent,\n // = VariantDefinitions<GetProps<ParentComponent>> gives type inference to variants: { true: { ... } }\n // but causes \"Type instantiation is excessively deep and possibly infinite.\"...\n Variants extends VariantDefinitions<ParentComponent> | symbol =\n | VariantDefinitions<ParentComponent>\n | symbol\n>(\n Component: ParentComponent,\n // this should be Partial<GetProps<ParentComponent>> but causes excessively deep type issues\n options?: GetProps<ParentComponent> & {\n name?: string\n variants?: Variants | undefined\n defaultVariants?: Variants extends Object ? GetVariantProps<Variants> : never\n },\n staticExtractionOptions?: StaticConfig\n) {\n const staticConfigProps = (() => {\n if (options) {\n const { variants, name, defaultVariants, ...defaultProps } = options\n if (defaultVariants) {\n Object.assign(defaultProps, defaultVariants)\n }\n const isReactNativeWeb = RNComponents.has(Component)\n const isTamagui = !isReactNativeWeb && 'staticConfig' in Component\n const Comp = Component as any\n const isImage = !!(defaultProps.isImage || (!isTamagui ? Comp === Image : false))\n const isInput = !!(defaultProps.isInput || (!isTamagui ? Comp === TextInput : false))\n const isText = !!(defaultProps.isText || (!isTamagui ? isInput || Comp === Text : false))\n const conf: StaticConfig = {\n ...staticExtractionOptions,\n ...(!isTamagui && {\n Component: Comp,\n }),\n isTamagui,\n // this type gets messed up by options?: Partial<GetProps<ParentComponent>> above\n // take away the Partial<> and it's fine\n variants,\n defaultProps,\n componentName: name,\n isReactNativeWeb,\n isInput,\n isText,\n isImage,\n }\n return conf\n }\n return {}\n })()\n const config = extendStaticConfig(Component, staticConfigProps)\n const component = createComponent(config!) // error is good here its on init\n\n // get parent props without pseudos and medias so we can rebuild both with new variants\n type ParentPropsBase = ParentComponent extends TamaguiComponent<any, any, infer P>\n ? P\n : GetProps<ParentComponent>\n type ParentVariants = ParentComponent extends TamaguiComponent<any, any, any, infer V>\n ? V\n : Object\n\n type OurVariants = Variants extends symbol\n ? {}\n : {\n [Key in keyof Variants]?: Variants[Key] extends VariantSpreadFunction<any, infer Val>\n ? Val\n : GetVariantValues<keyof Variants[Key]>\n }\n\n type VariantProps = Omit<ParentVariants, keyof OurVariants> & OurVariants\n type OurPropsBase = ParentPropsBase & VariantProps\n\n type Props = Variants extends void | symbol\n ? GetProps<ParentComponent>\n : // start with base props\n OurPropsBase &\n // add in media (+ pseudos nested)\n MediaProps<Partial<OurPropsBase>> &\n // add in pseudos\n PseudoProps<Partial<OurPropsBase>>\n\n return component as TamaguiComponent<\n Props,\n // TODO infer ref\n any,\n ParentPropsBase,\n ParentVariants & OurVariants\n >\n}\n\n// test types:\n\n// export const SizableText = styled(Stack, {\n// name: 'SizableText',\n// backgroundColor: 'red',\n// variants: {\n// size: {\n// '...fontSize': (val, { props }) => {\n// return {\n// backgroundColor: '',\n// }\n// },\n// },\n// },\n// })\n// export const Heading = styled(SizableText, {\n// tag: 'span',\n// name: 'Heading',\n// accessibilityRole: 'header',\n// size: '$8',\n// margin: 0,\n// })\n// export const Paragraph = styled(SizableText, {\n// tag: 'p',\n// margin: 10,\n// variants: {\n// another: {\n// true: {},\n// },\n// },\n// })\n// export const Paragraph2 = styled(Paragraph, {\n// tag: 'p',\n// variants: {\n// another: {\n// '...color': (val) => ({\n// backgroundColor: 'red',\n// }),\n// },\n// },\n// })\n// const a = <SizableText size=\"$10\" />\n// const b = <Paragraph size=\"$10\" another />\n// const c = <Paragraph2 size=\"$10\" another=\"aliceblue\" />\n// export const SizableText2 = styled(SizableText, {\n// })\n// const xx = <SizableText2 abc />\n// export const Paragraph = styled(SizableText, {\n// name: 'Paragraph',\n// })\n// export const Heading = styled(Paragraph, {\n// tag: 'span',\n// margin: 0,\n// })\n// export const H2 = styled(Heading, {\n// name: 'H2',\n// })\n// const x = <H2 color=\"red\" />\n"],
5
- "mappings": ";;AAAA;AAEA;AACA;AACA;AAcO,gBAQL,WAEA,SAKA,yBACA;AACA,QAAM,oBAAqB,OAAM;AAC/B,QAAI,SAAS;AACX,YAAM,EAAE,UAAU,MAAM,oBAAoB,iBAAiB;AAC7D,UAAI,iBAAiB;AACnB,eAAO,OAAO,cAAc,eAAe;AAAA,MAC7C;AACA,YAAM,mBAAmB,aAAa,IAAI,SAAS;AACnD,YAAM,YAAY,CAAC,oBAAoB,kBAAkB;AACzD,YAAM,OAAO;AACb,YAAM,UAAU,CAAC,CAAE,cAAa,WAAY,EAAC,YAAY,SAAS,QAAQ;AAC1E,YAAM,UAAU,CAAC,CAAE,cAAa,WAAY,EAAC,YAAY,SAAS,YAAY;AAC9E,YAAM,SAAS,CAAC,CAAE,cAAa,UAAW,EAAC,YAAY,WAAW,SAAS,OAAO;AAClF,YAAM,OAAqB;AAAA,WACtB;AAAA,WACC,CAAC,aAAa;AAAA,UAChB,WAAW;AAAA,QACb;AAAA,QACA;AAAA,QAGA;AAAA,QACA;AAAA,QACA,eAAe;AAAA,QACf;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AACA,aAAO;AAAA,IACT;AACA,WAAO,CAAC;AAAA,EACV,GAAG;AACH,QAAM,SAAS,mBAAmB,WAAW,iBAAiB;AAC9D,QAAM,YAAY,gBAAgB,MAAO;AA8BzC,SAAO;AAOT;AAvFgB;",
4
+ "sourcesContent": ["import { Image, Text, TextInput } from 'react-native'\n\nimport { createComponent } from './createComponent'\nimport { RNComponents } from './helpers/RNComponents'\nimport {\n GetProps,\n GetVariantValues,\n MediaProps,\n PseudoProps,\n StaticConfig,\n StylableComponent,\n TamaguiComponent,\n VariantDefinitions,\n VariantSpreadFunction,\n} from './types'\n\n// TODO may be able to use this in the options?: arg below directly\nexport type StyledOptions<ParentComponent extends StylableComponent> = GetProps<ParentComponent> & {\n name?: string\n variants?: VariantDefinitions<ParentComponent> | undefined\n defaultVariants?: { [key: string]: any }\n}\n\nexport function styled<\n ParentComponent extends StylableComponent,\n Variants extends VariantDefinitions<ParentComponent> | symbol =\n | VariantDefinitions<ParentComponent>\n | symbol\n>(\n Component: ParentComponent,\n // this should be Partial<GetProps<ParentComponent>> but causes excessively deep type issues\n options?: GetProps<ParentComponent> & {\n name?: string\n variants?: Variants | undefined\n // thought i had this typed, but can't get it linked\n defaultVariants?: { [key: string]: any }\n },\n staticExtractionOptions?: Partial<StaticConfig>\n) {\n const staticConfigProps = (() => {\n if (options) {\n const { variants, name, defaultVariants, ...defaultProps } = options\n if (defaultVariants) {\n Object.assign(defaultProps, defaultVariants)\n }\n const isReactNativeWeb =\n 'staticConfig' in Component\n ? Component.staticConfig.isReactNativeWeb\n : RNComponents.has(Component)\n const reactNativeWebComponent = isReactNativeWeb\n ? Component['staticConfig']?.reactNativeWebComponent || Component\n : null\n const isTamagui = !isReactNativeWeb && 'staticConfig' in Component\n const Comp = reactNativeWebComponent || (Component as any)\n const isImage = !!(defaultProps.isImage || (!isTamagui ? Comp === Image : false))\n const isInput = !!(defaultProps.isInput || (!isTamagui ? Comp === TextInput : false))\n const isText = !!(defaultProps.isText || (!isTamagui ? isInput || Comp === Text : false))\n const conf: Partial<StaticConfig> = {\n ...staticExtractionOptions,\n ...(!isTamagui && {\n Component: Comp,\n }),\n isTamagui,\n // this type gets messed up by options?: Partial<GetProps<ParentComponent>> above\n // take away the Partial<> and it's fine\n variants,\n defaultProps,\n defaultVariants,\n componentName: name,\n isReactNativeWeb,\n // for nesting multiple levels of rnw styled() need keep use the OG component\n reactNativeWebComponent,\n isInput,\n isText,\n isImage,\n }\n\n return conf\n }\n return {}\n })()\n\n const component = createComponent(staticConfigProps, Component)\n\n // get parent props without pseudos and medias so we can rebuild both with new variants\n type ParentPropsBase = ParentComponent extends TamaguiComponent<any, any, infer P>\n ? P\n : GetProps<ParentComponent>\n type ParentVariants = ParentComponent extends TamaguiComponent<any, any, any, infer V> ? V : {}\n\n type OurVariants = Variants extends symbol\n ? {}\n : {\n [Key in keyof Variants]?: Variants[Key] extends VariantSpreadFunction<any, infer Val>\n ? Val\n : GetVariantValues<keyof Variants[Key]>\n }\n\n type VariantProps = Omit<ParentVariants, keyof OurVariants> & OurVariants\n type OurPropsBase = ParentPropsBase & VariantProps\n\n type Props = Variants extends void | symbol\n ? GetProps<ParentComponent>\n : // start with base props\n OurPropsBase &\n // add in media (+ pseudos nested)\n MediaProps<Partial<OurPropsBase>> &\n // add in pseudos\n PseudoProps<Partial<OurPropsBase>>\n\n return component as TamaguiComponent<\n Props,\n // TODO infer ref\n any,\n ParentPropsBase,\n ParentVariants & OurVariants\n >\n}\n\n// test types:\n// // variants\n// export const XStack = styled(Stack, {\n// flexDirection: 'row',\n// name: 'XStack',\n// variants: {\n// fullscreen: {\n// true: {},\n// },\n// elevation: {\n// '...size': (val) => ({}),\n// },\n// },\n// })\n// const InBetween = styled(XStack, {})\n// type INBVariants = typeof InBetween extends TamaguiComponent<any, any, any, infer Variants> ? Variants: never\n// const SwitchFrame = styled(InBetween, {\n// name: 'Switch',\n// tag: 'button',\n// borderRadius: 100,\n// borderWidth: 0,\n// variants: {\n// name: {\n// true: {\n// backgroundColor: 'aliceblue'\n// },\n// // 1: {\n\n// // },\n// // ':number': (val) => {\n// // return {}\n// // },\n// // \"...fontSize\": (val) => {\n// // return {}\n// // },\n// // \"...color\": (val) => {\n// // return {}\n// // }\n// }\n// },\n// defaultVariants: {\n// size: '$4',\n// },\n// })\n// const x = <XStack fullscreen />\n// const y = <XStack fullscreen />\n// const z = <SwitchFrame fullscreen name />\n\n// depth:\n// export const SizableText = styled(Stack, {\n// name: 'SizableText',\n// backgroundColor: 'red',\n// variants: {\n// size: {\n// '...fontSize': (val, { props }) => {\n// return {\n// backgroundColor: '',\n// }\n// },\n// },\n// },\n// })\n// export const Heading = styled(SizableText, {\n// tag: 'span',\n// name: 'Heading',\n// accessibilityRole: 'header',\n// size: '$8',\n// margin: 0,\n// })\n// export const Paragraph = styled(SizableText, {\n// tag: 'p',\n// margin: 10,\n// variants: {\n// another: {\n// true: {},\n// },\n// },\n// })\n// export const Paragraph2 = styled(Paragraph, {\n// tag: 'p',\n// variants: {\n// another: {\n// '...color': (val) => ({\n// backgroundColor: 'red',\n// }),\n// },\n// },\n// })\n// const a = <SizableText size=\"$10\" />\n// const b = <Paragraph size=\"$10\" another />\n// const c = <Paragraph2 size=\"$10\" another=\"aliceblue\" />\n// export const SizableText2 = styled(SizableText, {\n// })\n// const xx = <SizableText2 abc />\n// export const Paragraph = styled(SizableText, {\n// name: 'Paragraph',\n// })\n// export const Heading = styled(Paragraph, {\n// tag: 'span',\n// margin: 0,\n// })\n// export const H2 = styled(Heading, {\n// name: 'H2',\n// })\n// const x = <H2 color=\"red\" />\n"],
5
+ "mappings": ";;AAAA;AAEA;AACA;AAoBO,gBAML,WAEA,SAMA,yBACA;AACA,QAAM,oBAAqB,OAAM;AAvCnC;AAwCI,QAAI,SAAS;AACX,YAAM,EAAE,UAAU,MAAM,oBAAoB,iBAAiB;AAC7D,UAAI,iBAAiB;AACnB,eAAO,OAAO,cAAc,eAAe;AAAA,MAC7C;AACA,YAAM,mBACJ,kBAAkB,YACd,UAAU,aAAa,mBACvB,aAAa,IAAI,SAAS;AAChC,YAAM,0BAA0B,mBAC5B,iBAAU,oBAAV,mBAA2B,4BAA2B,YACtD;AACJ,YAAM,YAAY,CAAC,oBAAoB,kBAAkB;AACzD,YAAM,OAAO,2BAA4B;AACzC,YAAM,UAAU,CAAC,CAAE,cAAa,WAAY,EAAC,YAAY,SAAS,QAAQ;AAC1E,YAAM,UAAU,CAAC,CAAE,cAAa,WAAY,EAAC,YAAY,SAAS,YAAY;AAC9E,YAAM,SAAS,CAAC,CAAE,cAAa,UAAW,EAAC,YAAY,WAAW,SAAS,OAAO;AAClF,YAAM,OAA8B;AAAA,WAC/B;AAAA,WACC,CAAC,aAAa;AAAA,UAChB,WAAW;AAAA,QACb;AAAA,QACA;AAAA,QAGA;AAAA,QACA;AAAA,QACA;AAAA,QACA,eAAe;AAAA,QACf;AAAA,QAEA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAEA,aAAO;AAAA,IACT;AACA,WAAO,CAAC;AAAA,EACV,GAAG;AAEH,QAAM,YAAY,gBAAgB,mBAAmB,SAAS;AA4B9D,SAAO;AAOT;AA9FgB;",
6
6
  "names": []
7
7
  }
@@ -0,0 +1,82 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
+ import { composeRefs } from "@tamagui/compose-refs";
4
+ import * as React from "react";
5
+ const Slot = React.forwardRef((props, forwardedRef) => {
6
+ const { children, ...slotProps } = props;
7
+ if (React.Children.toArray(children).some(isSlottable)) {
8
+ return /* @__PURE__ */ React.createElement(React.Fragment, null, React.Children.map(children, (child) => {
9
+ return isSlottable(child) ? /* @__PURE__ */ React.createElement(SlotClone, {
10
+ ...slotProps,
11
+ ref: forwardedRef
12
+ }, child.props.children) : child;
13
+ }));
14
+ }
15
+ return /* @__PURE__ */ React.createElement(SlotClone, {
16
+ ...slotProps,
17
+ ref: forwardedRef
18
+ }, children);
19
+ });
20
+ Slot.displayName = "Slot";
21
+ const SlotClone = React.forwardRef((props, forwardedRef) => {
22
+ const { children, ...slotProps } = props;
23
+ if (React.isValidElement(children)) {
24
+ return React.cloneElement(children, {
25
+ ...mergeProps(children, slotProps),
26
+ ref: composeRefs(forwardedRef, children.ref)
27
+ });
28
+ }
29
+ return React.Children.count(children) > 1 ? React.Children.only(null) : null;
30
+ });
31
+ SlotClone.displayName = "SlotClone";
32
+ const Slottable = /* @__PURE__ */ __name(({ children }) => {
33
+ return /* @__PURE__ */ React.createElement(React.Fragment, null, children);
34
+ }, "Slottable");
35
+ function isSlottable(child) {
36
+ return React.isValidElement(child);
37
+ }
38
+ __name(isSlottable, "isSlottable");
39
+ const pressMap = {
40
+ onPress: "onClick",
41
+ onPressOut: "onMouseOut",
42
+ onPressIn: "onMouseIn"
43
+ };
44
+ function mergeProps(child, slotProps) {
45
+ const childProps = child.props;
46
+ const overrideProps = { ...childProps };
47
+ const isHTMLChild = typeof child.type === "string";
48
+ if (isHTMLChild) {
49
+ for (const key in pressMap) {
50
+ if (key in slotProps) {
51
+ slotProps[pressMap[key]] = slotProps[key];
52
+ delete slotProps[key];
53
+ }
54
+ }
55
+ }
56
+ for (let propName in childProps) {
57
+ const slotPropValue = slotProps[propName];
58
+ const childPropValue = childProps[propName];
59
+ if (isHTMLChild && pressMap[propName]) {
60
+ propName = pressMap[propName];
61
+ delete overrideProps[propName];
62
+ }
63
+ const isHandler = /^on[A-Z]/.test(propName);
64
+ if (isHandler) {
65
+ overrideProps[propName] = (...args) => {
66
+ childPropValue == null ? void 0 : childPropValue(...args);
67
+ slotPropValue == null ? void 0 : slotPropValue(...args);
68
+ };
69
+ } else if (propName === "style") {
70
+ overrideProps[propName] = { ...slotPropValue, ...childPropValue };
71
+ } else if (propName === "className") {
72
+ overrideProps[propName] = [slotPropValue, childPropValue].filter(Boolean).join(" ");
73
+ }
74
+ }
75
+ return { ...slotProps, ...overrideProps };
76
+ }
77
+ __name(mergeProps, "mergeProps");
78
+ export {
79
+ Slot,
80
+ Slottable
81
+ };
82
+ //# sourceMappingURL=Slot.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/views/Slot.tsx"],
4
+ "sourcesContent": ["// via radix\n\nimport { composeRefs } from '@tamagui/compose-refs'\nimport * as React from 'react'\n\n/* -------------------------------------------------------------------------------------------------\n * Slot\n * -----------------------------------------------------------------------------------------------*/\n\nexport type SlotProps = {\n children?: React.ReactNode\n}\n\nexport const Slot = React.forwardRef<HTMLElement, SlotProps>((props, forwardedRef) => {\n const { children, ...slotProps } = props\n\n if (React.Children.toArray(children).some(isSlottable)) {\n return (\n <>\n {React.Children.map(children, (child) => {\n return isSlottable(child) ? (\n <SlotClone {...slotProps} ref={forwardedRef}>\n {child.props.children}\n </SlotClone>\n ) : (\n child\n )\n })}\n </>\n )\n }\n\n return (\n <SlotClone {...slotProps} ref={forwardedRef}>\n {children}\n </SlotClone>\n )\n})\n\nSlot.displayName = 'Slot'\n\n/* -------------------------------------------------------------------------------------------------\n * SlotClone\n * -----------------------------------------------------------------------------------------------*/\n\ninterface SlotCloneProps {\n children: React.ReactNode\n}\n\nconst SlotClone = React.forwardRef<any, SlotCloneProps>((props, forwardedRef) => {\n const { children, ...slotProps } = props\n\n if (React.isValidElement(children)) {\n return React.cloneElement(children, {\n ...mergeProps(children, slotProps),\n ref: composeRefs(forwardedRef, (children as any).ref),\n })\n }\n\n return React.Children.count(children) > 1 ? React.Children.only(null) : null\n})\n\nSlotClone.displayName = 'SlotClone'\n\n/* -------------------------------------------------------------------------------------------------\n * Slottable\n * -----------------------------------------------------------------------------------------------*/\n\nexport const Slottable = ({ children }: { children: React.ReactNode }) => {\n return <>{children}</>\n}\n\n/* ---------------------------------------------------------------------------------------------- */\n\ntype AnyProps = Record<string, any>\n\nfunction isSlottable(child: React.ReactNode): child is React.ReactElement {\n return React.isValidElement(child)\n}\n\nconst pressMap = {\n onPress: 'onClick',\n onPressOut: 'onMouseOut',\n onPressIn: 'onMouseIn',\n}\n\nfunction mergeProps(child: any, slotProps: AnyProps) {\n const childProps = child.props\n\n // all child props should override\n const overrideProps = { ...childProps }\n\n const isHTMLChild = typeof child.type === 'string'\n\n if (isHTMLChild) {\n for (const key in pressMap) {\n if (key in slotProps) {\n slotProps[pressMap[key]] = slotProps[key]\n delete slotProps[key]\n }\n }\n }\n\n for (let propName in childProps) {\n const slotPropValue = slotProps[propName]\n const childPropValue = childProps[propName]\n\n if (isHTMLChild && pressMap[propName]) {\n propName = pressMap[propName]\n delete overrideProps[propName]\n }\n\n const isHandler = /^on[A-Z]/.test(propName)\n // if it's a handler, modify the override by composing the base handler\n if (isHandler) {\n overrideProps[propName] = (...args: unknown[]) => {\n childPropValue?.(...args)\n slotPropValue?.(...args)\n }\n }\n // if it's `style`, we merge them\n else if (propName === 'style') {\n overrideProps[propName] = { ...slotPropValue, ...childPropValue }\n } else if (propName === 'className') {\n overrideProps[propName] = [slotPropValue, childPropValue].filter(Boolean).join(' ')\n }\n }\n\n return { ...slotProps, ...overrideProps }\n}\n"],
5
+ "mappings": ";;AAEA;AACA;AAUO,MAAM,OAAO,MAAM,WAAmC,CAAC,OAAO,iBAAiB;AACpF,QAAM,EAAE,aAAa,cAAc;AAEnC,MAAI,MAAM,SAAS,QAAQ,QAAQ,EAAE,KAAK,WAAW,GAAG;AACtD,WACE,0DACG,MAAM,SAAS,IAAI,UAAU,CAAC,UAAU;AACvC,aAAO,YAAY,KAAK,IACtB,oCAAC;AAAA,WAAc;AAAA,QAAW,KAAK;AAAA,SAC5B,MAAM,MAAM,QACf,IAEA;AAAA,IAEJ,CAAC,CACH;AAAA,EAEJ;AAEA,SACE,oCAAC;AAAA,OAAc;AAAA,IAAW,KAAK;AAAA,KAC5B,QACH;AAEJ,CAAC;AAED,KAAK,cAAc;AAUnB,MAAM,YAAY,MAAM,WAAgC,CAAC,OAAO,iBAAiB;AAC/E,QAAM,EAAE,aAAa,cAAc;AAEnC,MAAI,MAAM,eAAe,QAAQ,GAAG;AAClC,WAAO,MAAM,aAAa,UAAU;AAAA,SAC/B,WAAW,UAAU,SAAS;AAAA,MACjC,KAAK,YAAY,cAAe,SAAiB,GAAG;AAAA,IACtD,CAAC;AAAA,EACH;AAEA,SAAO,MAAM,SAAS,MAAM,QAAQ,IAAI,IAAI,MAAM,SAAS,KAAK,IAAI,IAAI;AAC1E,CAAC;AAED,UAAU,cAAc;AAMjB,MAAM,YAAY,wBAAC,EAAE,eAA8C;AACxE,SAAO,0DAAG,QAAS;AACrB,GAFyB;AAQzB,qBAAqB,OAAqD;AACxE,SAAO,MAAM,eAAe,KAAK;AACnC;AAFS;AAIT,MAAM,WAAW;AAAA,EACf,SAAS;AAAA,EACT,YAAY;AAAA,EACZ,WAAW;AACb;AAEA,oBAAoB,OAAY,WAAqB;AACnD,QAAM,aAAa,MAAM;AAGzB,QAAM,gBAAgB,KAAK,WAAW;AAEtC,QAAM,cAAc,OAAO,MAAM,SAAS;AAE1C,MAAI,aAAa;AACf,eAAW,OAAO,UAAU;AAC1B,UAAI,OAAO,WAAW;AACpB,kBAAU,SAAS,QAAQ,UAAU;AACrC,eAAO,UAAU;AAAA,MACnB;AAAA,IACF;AAAA,EACF;AAEA,WAAS,YAAY,YAAY;AAC/B,UAAM,gBAAgB,UAAU;AAChC,UAAM,iBAAiB,WAAW;AAElC,QAAI,eAAe,SAAS,WAAW;AACrC,iBAAW,SAAS;AACpB,aAAO,cAAc;AAAA,IACvB;AAEA,UAAM,YAAY,WAAW,KAAK,QAAQ;AAE1C,QAAI,WAAW;AACb,oBAAc,YAAY,IAAI,SAAoB;AAChD,yDAAiB,GAAG;AACpB,uDAAgB,GAAG;AAAA,MACrB;AAAA,IACF,WAES,aAAa,SAAS;AAC7B,oBAAc,YAAY,KAAK,kBAAkB,eAAe;AAAA,IAClE,WAAW,aAAa,aAAa;AACnC,oBAAc,YAAY,CAAC,eAAe,cAAc,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAAA,IACpF;AAAA,EACF;AAEA,SAAO,KAAK,cAAc,cAAc;AAC1C;AA3CS;",
6
+ "names": []
7
+ }
@@ -11,15 +11,18 @@ const Text = createComponent({
11
11
  componentName: "Text",
12
12
  isText: true,
13
13
  defaultProps: {
14
- display: isWeb ? "inline" : "flex",
15
- boxSizing: "border-box",
14
+ display: "flex",
16
15
  fontFamily: "System",
17
- wordWrap: "break-word"
16
+ ...isWeb && {
17
+ display: "inline",
18
+ boxSizing: "border-box",
19
+ wordWrap: "break-word"
20
+ }
18
21
  },
19
22
  variants: {
20
23
  numberOfLines: {
21
- 1: ellipseStyle,
22
- ":number": (lines) => lines > 1 ? { WebkitLineClamp: 1 } : null
24
+ 1: isWeb ? ellipseStyle : { numberOfLines: 1 },
25
+ ":number": (numberOfLines) => isWeb ? numberOfLines >= 1 ? { WebkitLineClamp: numberOfLines } : null : { numberOfLines }
23
26
  },
24
27
  selectable: {
25
28
  true: {
@@ -45,15 +48,7 @@ const Text = createComponent({
45
48
  deoptProps: new Set(isWeb ? [] : ["ellipse"]),
46
49
  validStyles: {
47
50
  ...validStyles,
48
- ...stylePropsTextOnly,
49
- ...isWeb && {
50
- userSelect: true,
51
- textOverflow: true,
52
- whiteSpace: true,
53
- wordWrap: true,
54
- selectable: true,
55
- cursor: true
56
- }
51
+ ...stylePropsTextOnly
57
52
  }
58
53
  });
59
54
  export {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/views/Text.tsx"],
4
- "sourcesContent": ["import { stylePropsTextOnly, validStyles } from '@tamagui/helpers'\nimport { Text as TextView } from 'react-native'\n\nimport { isWeb } from '../constants/platform'\nimport { createComponent } from '../createComponent'\nimport { TextProps, TextPropsBase } from '../types'\n\nconst ellipseStyle = {\n maxWidth: '100%',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n}\n\nexport const Text = createComponent<TextProps, TextView, TextPropsBase>({\n componentName: 'Text',\n isText: true,\n defaultProps: {\n display: isWeb ? 'inline' : 'flex',\n boxSizing: 'border-box',\n fontFamily: 'System',\n wordWrap: 'break-word',\n },\n variants: {\n numberOfLines: {\n 1: ellipseStyle,\n // TODO imply fn, test 1, could do types `>1` `<2`\n ':number': (lines) => (lines > 1 ? { WebkitLineClamp: 1 } : null),\n },\n\n selectable: {\n true: {\n userSelect: 'text',\n cursor: 'text',\n },\n false: {\n userSelect: 'none',\n },\n },\n\n pressable: {\n true: {\n cursor: 'pointer',\n },\n },\n\n ellipse: {\n true: isWeb\n ? ellipseStyle\n : {\n numberOfLines: 1,\n lineBreakMode: 'clip',\n },\n },\n },\n deoptProps: new Set(isWeb ? [] : ['ellipse']),\n validStyles: {\n ...validStyles,\n ...stylePropsTextOnly,\n ...(isWeb && {\n userSelect: true,\n textOverflow: true,\n whiteSpace: true,\n wordWrap: true,\n selectable: true,\n cursor: true,\n }),\n },\n})\n"],
5
- "mappings": "AAAA;AAGA;AACA;AAGA,MAAM,eAAe;AAAA,EACnB,UAAU;AAAA,EACV,UAAU;AAAA,EACV,cAAc;AAAA,EACd,YAAY;AACd;AAEO,MAAM,OAAO,gBAAoD;AAAA,EACtE,eAAe;AAAA,EACf,QAAQ;AAAA,EACR,cAAc;AAAA,IACZ,SAAS,QAAQ,WAAW;AAAA,IAC5B,WAAW;AAAA,IACX,YAAY;AAAA,IACZ,UAAU;AAAA,EACZ;AAAA,EACA,UAAU;AAAA,IACR,eAAe;AAAA,MACb,GAAG;AAAA,MAEH,WAAW,CAAC,UAAW,QAAQ,IAAI,EAAE,iBAAiB,EAAE,IAAI;AAAA,IAC9D;AAAA,IAEA,YAAY;AAAA,MACV,MAAM;AAAA,QACJ,YAAY;AAAA,QACZ,QAAQ;AAAA,MACV;AAAA,MACA,OAAO;AAAA,QACL,YAAY;AAAA,MACd;AAAA,IACF;AAAA,IAEA,WAAW;AAAA,MACT,MAAM;AAAA,QACJ,QAAQ;AAAA,MACV;AAAA,IACF;AAAA,IAEA,SAAS;AAAA,MACP,MAAM,QACF,eACA;AAAA,QACE,eAAe;AAAA,QACf,eAAe;AAAA,MACjB;AAAA,IACN;AAAA,EACF;AAAA,EACA,YAAY,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC;AAAA,EAC5C,aAAa;AAAA,OACR;AAAA,OACA;AAAA,OACC,SAAS;AAAA,MACX,YAAY;AAAA,MACZ,cAAc;AAAA,MACd,YAAY;AAAA,MACZ,UAAU;AAAA,MACV,YAAY;AAAA,MACZ,QAAQ;AAAA,IACV;AAAA,EACF;AACF,CAAC;",
4
+ "sourcesContent": ["import { stylePropsTextOnly, validStyles } from '@tamagui/helpers'\nimport { Text as TextView } from 'react-native'\n\nimport { isWeb } from '../constants/platform'\nimport { createComponent } from '../createComponent'\nimport { TextProps, TextPropsBase } from '../types'\n\nconst ellipseStyle = {\n maxWidth: '100%',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n}\n\nexport const Text = createComponent<TextProps, TextView, TextPropsBase>({\n componentName: 'Text',\n isText: true,\n\n defaultProps: {\n display: 'flex',\n fontFamily: 'System',\n ...(isWeb && {\n display: 'inline',\n boxSizing: 'border-box',\n wordWrap: 'break-word',\n }),\n },\n\n variants: {\n numberOfLines: {\n 1: isWeb ? ellipseStyle : { numberOfLines: 1 },\n\n ':number': (numberOfLines) =>\n isWeb\n ? numberOfLines >= 1\n ? { WebkitLineClamp: numberOfLines }\n : null\n : { numberOfLines },\n },\n\n selectable: {\n true: {\n userSelect: 'text',\n cursor: 'text',\n },\n false: {\n userSelect: 'none',\n },\n },\n\n pressable: {\n true: {\n cursor: 'pointer',\n },\n },\n\n ellipse: {\n true: isWeb\n ? ellipseStyle\n : {\n numberOfLines: 1,\n lineBreakMode: 'clip',\n },\n },\n },\n\n deoptProps: new Set(isWeb ? [] : ['ellipse']),\n\n validStyles: {\n ...validStyles,\n ...stylePropsTextOnly,\n },\n})\n"],
5
+ "mappings": "AAAA;AAGA;AACA;AAGA,MAAM,eAAe;AAAA,EACnB,UAAU;AAAA,EACV,UAAU;AAAA,EACV,cAAc;AAAA,EACd,YAAY;AACd;AAEO,MAAM,OAAO,gBAAoD;AAAA,EACtE,eAAe;AAAA,EACf,QAAQ;AAAA,EAER,cAAc;AAAA,IACZ,SAAS;AAAA,IACT,YAAY;AAAA,OACR,SAAS;AAAA,MACX,SAAS;AAAA,MACT,WAAW;AAAA,MACX,UAAU;AAAA,IACZ;AAAA,EACF;AAAA,EAEA,UAAU;AAAA,IACR,eAAe;AAAA,MACb,GAAG,QAAQ,eAAe,EAAE,eAAe,EAAE;AAAA,MAE7C,WAAW,CAAC,kBACV,QACI,iBAAiB,IACf,EAAE,iBAAiB,cAAc,IACjC,OACF,EAAE,cAAc;AAAA,IACxB;AAAA,IAEA,YAAY;AAAA,MACV,MAAM;AAAA,QACJ,YAAY;AAAA,QACZ,QAAQ;AAAA,MACV;AAAA,MACA,OAAO;AAAA,QACL,YAAY;AAAA,MACd;AAAA,IACF;AAAA,IAEA,WAAW;AAAA,MACT,MAAM;AAAA,QACJ,QAAQ;AAAA,MACV;AAAA,IACF;AAAA,IAEA,SAAS;AAAA,MACP,MAAM,QACF,eACA;AAAA,QACE,eAAe;AAAA,QACf,eAAe;AAAA,MACjB;AAAA,IACN;AAAA,EACF;AAAA,EAEA,YAAY,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC;AAAA,EAE5C,aAAa;AAAA,OACR;AAAA,OACA;AAAA,EACL;AACF,CAAC;",
6
6
  "names": []
7
7
  }
@@ -3,11 +3,11 @@ var __name = (target, value) => __defProp(target, "name", { value, configurable:
3
3
  import React, { memo, useMemo } from "react";
4
4
  import { isWeb } from "../constants/platform";
5
5
  import { wrapThemeManagerContext } from "../helpers/wrapThemeManagerContext";
6
- import { useChangeThemeEffect } from "../static";
6
+ import { useChangeThemeEffect } from "../hooks/useTheme";
7
7
  React["createElement"];
8
8
  const Theme = memo(/* @__PURE__ */ __name(function Theme2(props) {
9
9
  var _a, _b;
10
- const { name, theme, themeManager, themes, className } = useChangeThemeEffect(props.name, void 0, props);
10
+ const { name, theme, themeManager, themes, className } = useChangeThemeEffect(props.name, props.componentName, props);
11
11
  if (!themes || !name || !theme) {
12
12
  if (name && !theme && process.env.NODE_ENV === "development") {
13
13
  console.warn(`No theme found by name ${name}`);
@@ -16,7 +16,7 @@ const Theme = memo(/* @__PURE__ */ __name(function Theme2(props) {
16
16
  }
17
17
  const contents = useMemo(() => wrapThemeManagerContext(props.children, themeManager), [props.children, themeManager]);
18
18
  if (isWeb) {
19
- return /* @__PURE__ */ React.createElement("div", {
19
+ return /* @__PURE__ */ React.createElement("span", {
20
20
  className: [
21
21
  `tui_Theme`,
22
22
  ...!props.disableThemeClass ? [props.className, className].filter(Boolean) : []
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/views/Theme.tsx"],
4
- "sourcesContent": ["import React, { memo, useMemo } from 'react'\n\nimport { isWeb } from '../constants/platform'\nimport { wrapThemeManagerContext } from '../helpers/wrapThemeManagerContext'\nimport { useChangeThemeEffect } from '../static'\nimport { ThemeName } from '../types'\n\n// bugfix esbuild strips react jsx: 'preserve'\nReact['createElement']\n\nexport type ThemeProps = {\n className?: string\n disableThemeClass?: boolean\n name: Exclude<ThemeName, number> | null\n children?: any\n debug?: boolean\n}\n\nexport const Theme = memo(function Theme(props: ThemeProps) {\n const { name, theme, themeManager, themes, className } = useChangeThemeEffect(\n props.name,\n undefined,\n props\n )\n\n if (!themes || !name || !theme) {\n if (name && !theme && process.env.NODE_ENV === 'development') {\n console.warn(`No theme found by name ${name}`)\n }\n return props.children\n }\n\n // memo here, changing theme without re-rendering all children is a critical optimization\n // may require some effort of end user to memoize but without this memo they'd have no option\n const contents = useMemo(\n () => wrapThemeManagerContext(props.children, themeManager),\n [props.children, themeManager]\n )\n\n if (isWeb) {\n return (\n <div\n className={[\n `tui_Theme`,\n ...(!props.disableThemeClass ? [props.className, className].filter(Boolean) : []),\n ].join(' ')}\n style={{\n display: 'contents',\n // in order to provide currentColor, set color by default\n color: themes[name]?.color?.toString(),\n }}\n >\n {contents}\n </div>\n )\n }\n\n return contents\n})\n"],
5
- "mappings": ";;AAAA;AAEA;AACA;AACA;AAIA,MAAM;AAUC,MAAM,QAAQ,KAAK,uCAAe,OAAmB;AAlB5D;AAmBE,QAAM,EAAE,MAAM,OAAO,cAAc,QAAQ,cAAc,qBACvD,MAAM,MACN,QACA,KACF;AAEA,MAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO;AAC9B,QAAI,QAAQ,CAAC,SAAS,QAAQ,IAAI,aAAa,eAAe;AAC5D,cAAQ,KAAK,0BAA0B,MAAM;AAAA,IAC/C;AACA,WAAO,MAAM;AAAA,EACf;AAIA,QAAM,WAAW,QACf,MAAM,wBAAwB,MAAM,UAAU,YAAY,GAC1D,CAAC,MAAM,UAAU,YAAY,CAC/B;AAEA,MAAI,OAAO;AACT,WACE,oCAAC;AAAA,MACC,WAAW;AAAA,QACT;AAAA,QACA,GAAI,CAAC,MAAM,oBAAoB,CAAC,MAAM,WAAW,SAAS,EAAE,OAAO,OAAO,IAAI,CAAC;AAAA,MACjF,EAAE,KAAK,GAAG;AAAA,MACV,OAAO;AAAA,QACL,SAAS;AAAA,QAET,OAAO,mBAAO,UAAP,mBAAc,UAAd,mBAAqB;AAAA,MAC9B;AAAA,OAEC,QACH;AAAA,EAEJ;AAEA,SAAO;AACT,GAxC0B,QAwCzB;",
4
+ "sourcesContent": ["import React, { memo, useMemo } from 'react'\n\nimport { isWeb } from '../constants/platform'\nimport { wrapThemeManagerContext } from '../helpers/wrapThemeManagerContext'\nimport { useChangeThemeEffect } from '../hooks/useTheme'\nimport { ThemeName } from '../types'\n\n// bugfix esbuild strips react jsx: 'preserve'\nReact['createElement']\n\nexport type ThemeProps = {\n className?: string\n disableThemeClass?: boolean\n name: Exclude<ThemeName, number> | null\n componentName?: string\n children?: any\n debug?: boolean\n}\n\nexport const Theme = memo(function Theme(props: ThemeProps) {\n const { name, theme, themeManager, themes, className } = useChangeThemeEffect(\n props.name,\n props.componentName,\n props\n )\n\n if (!themes || !name || !theme) {\n if (name && !theme && process.env.NODE_ENV === 'development') {\n console.warn(`No theme found by name ${name}`)\n }\n return props.children\n }\n\n // memo here, changing theme without re-rendering all children is a critical optimization\n // may require some effort of end user to memoize but without this memo they'd have no option\n const contents = useMemo(\n () => wrapThemeManagerContext(props.children, themeManager),\n [props.children, themeManager]\n )\n\n if (isWeb) {\n return (\n <span\n className={[\n `tui_Theme`,\n ...(!props.disableThemeClass ? [props.className, className].filter(Boolean) : []),\n ].join(' ')}\n style={{\n display: 'contents',\n // in order to provide currentColor, set color by default\n color: themes[name]?.color?.toString(),\n }}\n >\n {contents}\n </span>\n )\n }\n\n return contents\n})\n"],
5
+ "mappings": ";;AAAA;AAEA;AACA;AACA;AAIA,MAAM;AAWC,MAAM,QAAQ,KAAK,uCAAe,OAAmB;AAnB5D;AAoBE,QAAM,EAAE,MAAM,OAAO,cAAc,QAAQ,cAAc,qBACvD,MAAM,MACN,MAAM,eACN,KACF;AAEA,MAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO;AAC9B,QAAI,QAAQ,CAAC,SAAS,QAAQ,IAAI,aAAa,eAAe;AAC5D,cAAQ,KAAK,0BAA0B,MAAM;AAAA,IAC/C;AACA,WAAO,MAAM;AAAA,EACf;AAIA,QAAM,WAAW,QACf,MAAM,wBAAwB,MAAM,UAAU,YAAY,GAC1D,CAAC,MAAM,UAAU,YAAY,CAC/B;AAEA,MAAI,OAAO;AACT,WACE,oCAAC;AAAA,MACC,WAAW;AAAA,QACT;AAAA,QACA,GAAI,CAAC,MAAM,oBAAoB,CAAC,MAAM,WAAW,SAAS,EAAE,OAAO,OAAO,IAAI,CAAC;AAAA,MACjF,EAAE,KAAK,GAAG;AAAA,MACV,OAAO;AAAA,QACL,SAAS;AAAA,QAET,OAAO,mBAAO,UAAP,mBAAc,UAAd,mBAAqB;AAAA,MAC9B;AAAA,OAEC,QACH;AAAA,EAEJ;AAEA,SAAO;AACT,GAxC0B,QAwCzB;",
6
6
  "names": []
7
7
  }
@@ -1,6 +1,7 @@
1
1
  var __defProp = Object.defineProperty;
2
2
  var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
- import React from "react";
3
+ import React, { useState } from "react";
4
+ import { useIsomorphicLayoutEffect } from "../constants/platform";
4
5
  import { useDefaultThemeName, useThemeName } from "../hooks/useTheme";
5
6
  import { Theme } from "./Theme";
6
7
  let inversions = {
@@ -14,7 +15,10 @@ __name(setThemeInversions, "setThemeInversions");
14
15
  const ThemeInverse = /* @__PURE__ */ __name((props) => {
15
16
  const themeName = useThemeName();
16
17
  const defaultTheme = useDefaultThemeName();
17
- const name = inversions[themeName] || inversions[defaultTheme || ""] || null;
18
+ const [name, setName] = useState(null);
19
+ useIsomorphicLayoutEffect(() => {
20
+ setName(inversions[themeName] || inversions[defaultTheme || ""] || null);
21
+ }, [defaultTheme, themeName]);
18
22
  return /* @__PURE__ */ React.createElement(Theme, {
19
23
  name
20
24
  }, props.children);
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/views/ThemeInverse.tsx"],
4
- "sourcesContent": ["import React from 'react'\n\nimport { useDefaultThemeName, useThemeName } from '../hooks/useTheme'\nimport { Theme } from './Theme'\n\ntype StringRecord = { [key: string]: string }\n\nlet inversions: StringRecord = {\n light: 'dark',\n dark: 'light',\n}\n\nexport function setThemeInversions(next: StringRecord) {\n inversions = next\n}\n\nexport const ThemeInverse = (props: { children: any }) => {\n const themeName = useThemeName()\n const defaultTheme = useDefaultThemeName()\n const name = inversions[themeName] || inversions[defaultTheme || ''] || null\n return <Theme name={name}>{props.children}</Theme>\n}\n"],
5
- "mappings": ";;AAAA;AAEA;AACA;AAIA,IAAI,aAA2B;AAAA,EAC7B,OAAO;AAAA,EACP,MAAM;AACR;AAEO,4BAA4B,MAAoB;AACrD,eAAa;AACf;AAFgB;AAIT,MAAM,eAAe,wBAAC,UAA6B;AACxD,QAAM,YAAY,aAAa;AAC/B,QAAM,eAAe,oBAAoB;AACzC,QAAM,OAAO,WAAW,cAAc,WAAW,gBAAgB,OAAO;AACxE,SAAO,oCAAC;AAAA,IAAM;AAAA,KAAa,MAAM,QAAS;AAC5C,GAL4B;",
4
+ "sourcesContent": ["import React, { useState } from 'react'\n\nimport { useIsomorphicLayoutEffect } from '../constants/platform'\nimport { useDefaultThemeName, useThemeName } from '../hooks/useTheme'\nimport { Theme } from './Theme'\n\ntype StringRecord = { [key: string]: string }\n\nlet inversions: StringRecord = {\n light: 'dark',\n dark: 'light',\n}\n\nexport function setThemeInversions(next: StringRecord) {\n inversions = next\n}\n\nexport const ThemeInverse = (props: { children: any }) => {\n const themeName = useThemeName()\n const defaultTheme = useDefaultThemeName()\n const [name, setName] = useState<null | string>(null)\n\n // ssr\n useIsomorphicLayoutEffect(() => {\n setName(inversions[themeName] || inversions[defaultTheme || ''] || null)\n }, [defaultTheme, themeName])\n\n return <Theme name={name}>{props.children}</Theme>\n}\n"],
5
+ "mappings": ";;AAAA;AAEA;AACA;AACA;AAIA,IAAI,aAA2B;AAAA,EAC7B,OAAO;AAAA,EACP,MAAM;AACR;AAEO,4BAA4B,MAAoB;AACrD,eAAa;AACf;AAFgB;AAIT,MAAM,eAAe,wBAAC,UAA6B;AACxD,QAAM,YAAY,aAAa;AAC/B,QAAM,eAAe,oBAAoB;AACzC,QAAM,CAAC,MAAM,WAAW,SAAwB,IAAI;AAGpD,4BAA0B,MAAM;AAC9B,YAAQ,WAAW,cAAc,WAAW,gBAAgB,OAAO,IAAI;AAAA,EACzE,GAAG,CAAC,cAAc,SAAS,CAAC;AAE5B,SAAO,oCAAC;AAAA,IAAM;AAAA,KAAa,MAAM,QAAS;AAC5C,GAX4B;",
6
6
  "names": []
7
7
  }
@@ -20,7 +20,7 @@ const ThemeProvider = /* @__PURE__ */ __name((props) => {
20
20
  return () => {
21
21
  document.body.classList.remove(cn);
22
22
  };
23
- }, []);
23
+ }, [props.disableRootThemeClass]);
24
24
  }
25
25
  const themeContext = useMemo(() => {
26
26
  return {
@@ -31,6 +31,7 @@ const ThemeProvider = /* @__PURE__ */ __name((props) => {
31
31
  return /* @__PURE__ */ React.createElement(ThemeContext.Provider, {
32
32
  value: themeContext
33
33
  }, /* @__PURE__ */ React.createElement(Theme, {
34
+ className: props.className,
34
35
  name: props.defaultTheme,
35
36
  disableThemeClass: props.disableRootThemeClass
36
37
  }, props.children));
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/views/ThemeProvider.tsx"],
4
- "sourcesContent": ["import React, { useLayoutEffect, useMemo } from 'react'\n\nimport { getHasConfigured } from '../conf'\nimport { THEME_CLASSNAME_PREFIX } from '../constants/constants'\nimport { ThemeContext } from '../ThemeContext'\nimport { Theme } from './Theme'\n\n// bugfix esbuild strips react jsx: 'preserve'\nReact['createElement']\n\nexport type ThemeProviderProps = {\n themes: any\n defaultTheme: string\n disableRootThemeClass?: boolean\n children?: any\n}\n\nexport const ThemeProvider = (props: ThemeProviderProps) => {\n if (!getHasConfigured()) {\n throw new Error(`Missing configureThemes() call, add to your root file`)\n }\n\n // ensure theme is attached to root body node as well to work with modals by default\n if (typeof document !== 'undefined') {\n useLayoutEffect(() => {\n if (props.disableRootThemeClass) {\n return\n }\n const cn = `${THEME_CLASSNAME_PREFIX}${props.defaultTheme}`\n document.body.classList.add(cn)\n return () => {\n document.body.classList.remove(cn)\n }\n }, [])\n }\n\n const themeContext = useMemo(() => {\n return {\n themes: props.themes,\n defaultTheme: props.defaultTheme,\n }\n }, [props.themes])\n\n return (\n <ThemeContext.Provider value={themeContext}>\n <Theme name={props.defaultTheme} disableThemeClass={props.disableRootThemeClass}>\n {props.children}\n </Theme>\n </ThemeContext.Provider>\n )\n}\n"],
5
- "mappings": ";;AAAA;AAEA;AACA;AACA;AACA;AAGA,MAAM;AASC,MAAM,gBAAgB,wBAAC,UAA8B;AAC1D,MAAI,CAAC,iBAAiB,GAAG;AACvB,UAAM,IAAI,MAAM,uDAAuD;AAAA,EACzE;AAGA,MAAI,OAAO,aAAa,aAAa;AACnC,oBAAgB,MAAM;AACpB,UAAI,MAAM,uBAAuB;AAC/B;AAAA,MACF;AACA,YAAM,KAAK,GAAG,yBAAyB,MAAM;AAC7C,eAAS,KAAK,UAAU,IAAI,EAAE;AAC9B,aAAO,MAAM;AACX,iBAAS,KAAK,UAAU,OAAO,EAAE;AAAA,MACnC;AAAA,IACF,GAAG,CAAC,CAAC;AAAA,EACP;AAEA,QAAM,eAAe,QAAQ,MAAM;AACjC,WAAO;AAAA,MACL,QAAQ,MAAM;AAAA,MACd,cAAc,MAAM;AAAA,IACtB;AAAA,EACF,GAAG,CAAC,MAAM,MAAM,CAAC;AAEjB,SACE,oCAAC,aAAa,UAAb;AAAA,IAAsB,OAAO;AAAA,KAC5B,oCAAC;AAAA,IAAM,MAAM,MAAM;AAAA,IAAc,mBAAmB,MAAM;AAAA,KACvD,MAAM,QACT,CACF;AAEJ,GAjC6B;",
4
+ "sourcesContent": ["import React, { useLayoutEffect, useMemo } from 'react'\n\nimport { getHasConfigured } from '../conf'\nimport { THEME_CLASSNAME_PREFIX } from '../constants/constants'\nimport { ThemeContext } from '../ThemeContext'\nimport { Theme } from './Theme'\n\n// bugfix esbuild strips react jsx: 'preserve'\nReact['createElement']\n\nexport type ThemeProviderProps = {\n className?: string\n themes: any\n defaultTheme: string\n disableRootThemeClass?: boolean\n children?: any\n}\n\nexport const ThemeProvider = (props: ThemeProviderProps) => {\n if (!getHasConfigured()) {\n throw new Error(`Missing configureThemes() call, add to your root file`)\n }\n\n // ensure theme is attached to root body node as well to work with modals by default\n if (typeof document !== 'undefined') {\n useLayoutEffect(() => {\n if (props.disableRootThemeClass) {\n return\n }\n const cn = `${THEME_CLASSNAME_PREFIX}${props.defaultTheme}`\n document.body.classList.add(cn)\n return () => {\n document.body.classList.remove(cn)\n }\n }, [props.disableRootThemeClass])\n }\n\n const themeContext = useMemo(() => {\n return {\n themes: props.themes,\n defaultTheme: props.defaultTheme,\n }\n }, [props.themes])\n\n return (\n <ThemeContext.Provider value={themeContext}>\n <Theme\n className={props.className}\n name={props.defaultTheme}\n disableThemeClass={props.disableRootThemeClass}\n >\n {props.children}\n </Theme>\n </ThemeContext.Provider>\n )\n}\n"],
5
+ "mappings": ";;AAAA;AAEA;AACA;AACA;AACA;AAGA,MAAM;AAUC,MAAM,gBAAgB,wBAAC,UAA8B;AAC1D,MAAI,CAAC,iBAAiB,GAAG;AACvB,UAAM,IAAI,MAAM,uDAAuD;AAAA,EACzE;AAGA,MAAI,OAAO,aAAa,aAAa;AACnC,oBAAgB,MAAM;AACpB,UAAI,MAAM,uBAAuB;AAC/B;AAAA,MACF;AACA,YAAM,KAAK,GAAG,yBAAyB,MAAM;AAC7C,eAAS,KAAK,UAAU,IAAI,EAAE;AAC9B,aAAO,MAAM;AACX,iBAAS,KAAK,UAAU,OAAO,EAAE;AAAA,MACnC;AAAA,IACF,GAAG,CAAC,MAAM,qBAAqB,CAAC;AAAA,EAClC;AAEA,QAAM,eAAe,QAAQ,MAAM;AACjC,WAAO;AAAA,MACL,QAAQ,MAAM;AAAA,MACd,cAAc,MAAM;AAAA,IACtB;AAAA,EACF,GAAG,CAAC,MAAM,MAAM,CAAC;AAEjB,SACE,oCAAC,aAAa,UAAb;AAAA,IAAsB,OAAO;AAAA,KAC5B,oCAAC;AAAA,IACC,WAAW,MAAM;AAAA,IACjB,MAAM,MAAM;AAAA,IACZ,mBAAmB,MAAM;AAAA,KAExB,MAAM,QACT,CACF;AAEJ,GArC6B;",
6
6
  "names": []
7
7
  }
@@ -1,14 +1,20 @@
1
1
  var __defProp = Object.defineProperty;
2
2
  var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
3
  import * as Helpers from "@tamagui/helpers";
4
+ import { getConfig } from "./conf";
4
5
  import { rnw } from "./constants/rnw";
5
- import { getAllSelectors, getAllTransforms } from "./helpers/insertStyleRule";
6
+ import { getAllSelectors, getAllTransforms, getInsertedRules } from "./helpers/insertStyleRule";
6
7
  class TamaguiManager {
7
8
  constructor() {
8
- this.config = null;
9
9
  this.rnw = rnw;
10
10
  this.Helpers = Helpers;
11
11
  }
12
+ get config() {
13
+ return getConfig();
14
+ }
15
+ get insertedRules() {
16
+ return getInsertedRules();
17
+ }
12
18
  get allSelectors() {
13
19
  return getAllSelectors();
14
20
  }
@@ -16,9 +16,9 @@ var __privateMethod = (obj, member, method) => {
16
16
  var _getClassName, getClassName_fn;
17
17
  import { createContext } from "react";
18
18
  import { getThemes } from "./conf";
19
- import { THEME_CLASSNAME_PREFIX, THEME_NAME_SEPARATOR } from "./static";
19
+ import { THEME_CLASSNAME_PREFIX, THEME_NAME_SEPARATOR } from "./constants/constants";
20
20
  class ThemeManager {
21
- constructor(name = null, theme = null, parentManager = null) {
21
+ constructor(name = "", theme = null, parentManager = null) {
22
22
  this.name = name;
23
23
  this.theme = theme;
24
24
  this.parentManager = parentManager;
@@ -76,7 +76,7 @@ class ThemeManager {
76
76
  return false;
77
77
  }
78
78
  this.className = className || null;
79
- this.name = name || null;
79
+ this.name = name || "";
80
80
  this.theme = theme;
81
81
  this.notifyListeners();
82
82
  return true;
@@ -85,10 +85,14 @@ class ThemeManager {
85
85
  const { themes = getThemes(), name, componentName } = opts;
86
86
  if (!name) {
87
87
  if (componentName) {
88
- const name2 = `${this.name}_${componentName}`;
89
- const theme2 = themes[name2];
90
- if (theme2) {
91
- return { name: name2, theme: theme2, className: __privateMethod(this, _getClassName, getClassName_fn).call(this, name2) };
88
+ const names = [
89
+ `${this.name}_${componentName}`,
90
+ `${withoutComponentName(this.name)}_${componentName}`
91
+ ];
92
+ for (const name2 of names) {
93
+ if (name2 in themes) {
94
+ return { name: name2, theme: themes[name2], className: __privateMethod(this, _getClassName, getClassName_fn).call(this, name2) };
95
+ }
92
96
  }
93
97
  }
94
98
  return {
@@ -113,9 +117,14 @@ class ThemeManager {
113
117
  parentName = parentName.slice(0, parentName.lastIndexOf(THEME_NAME_SEPARATOR));
114
118
  }
115
119
  if (componentName) {
116
- const componentThemeName = `${nextName}_${componentName}`;
117
- if (componentThemeName in themes) {
118
- nextName = componentThemeName;
120
+ const names = [
121
+ `${nextName}_${componentName}`,
122
+ `${withoutComponentName(nextName)}_${componentName}`
123
+ ];
124
+ for (const name2 of names) {
125
+ if (name2 in themes) {
126
+ nextName = name2;
127
+ }
119
128
  }
120
129
  }
121
130
  let theme = themes[nextName];
@@ -123,7 +132,7 @@ class ThemeManager {
123
132
  theme = themes[`light_${nextName}`];
124
133
  }
125
134
  if (process.env.NODE_ENV === "development" && props && props["debug"]) {
126
- console.log("getNextTheme", { opts, nextName, parentName }, this);
135
+ console.log("getNextTheme", { name: opts.name, nextName, parentName });
127
136
  }
128
137
  return {
129
138
  name: nextName,
@@ -169,6 +178,7 @@ getClassName_fn = /* @__PURE__ */ __name(function(name) {
169
178
  }, "#getClassName");
170
179
  const ThemeManagerContext = createContext(null);
171
180
  const emptyManager = new ThemeManager();
181
+ const withoutComponentName = /* @__PURE__ */ __name((name) => name.replace(/\_[A-Z][a-z]+$/, ""), "withoutComponentName");
172
182
  export {
173
183
  ThemeManager,
174
184
  ThemeManagerContext,
package/dist/jsx/conf.js CHANGED
@@ -21,7 +21,6 @@ const onConfiguredOnce = /* @__PURE__ */ __name((cb) => {
21
21
  configListeners.add(cb);
22
22
  }
23
23
  if (!globalThis["Tamagui"]) {
24
- Tamagui.config = conf;
25
24
  globalThis["Tamagui"] = Tamagui;
26
25
  }
27
26
  }, "onConfiguredOnce");
@@ -5,6 +5,7 @@ const isAndroid = ((_a = Platform) == null ? void 0 : _a.OS) === "android";
5
5
  const isIOS = ((_b = Platform) == null ? void 0 : _b.OS) === "ios";
6
6
  const isWeb = process.env.TAMAGUI_TARGET !== "native" && (process.env.TAMAGUI_TARGET === "web" || ((_c = Platform) == null ? void 0 : _c.OS) === "web");
7
7
  const isSSR = isWeb && typeof window === "undefined";
8
+ const isClient = isWeb && typeof window !== "undefined";
8
9
  const useIsomorphicLayoutEffect = isSSR ? useEffect : useLayoutEffect;
9
10
  const isChrome = typeof navigator !== "undefined" && /Chrome/.test(navigator.userAgent || "");
10
11
  const supportsTouchWeb = typeof window !== "undefined" && "ontouchstart" in window;
@@ -13,6 +14,7 @@ const isWebIOS = isWeb && typeof navigator !== "undefined" && (/iPad|iPhone|iPod
13
14
  export {
14
15
  isAndroid,
15
16
  isChrome,
17
+ isClient,
16
18
  isIOS,
17
19
  isSSR,
18
20
  isTouchDevice,