@tamagui/core 1.0.0-alpha.38 → 1.0.0-alpha.39

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 (331) hide show
  1. package/dist/cjs/constants/constants.js +50 -0
  2. package/dist/cjs/constants/constants.js.map +7 -0
  3. package/dist/cjs/constants/platform.js +43 -0
  4. package/dist/cjs/constants/platform.js.map +7 -0
  5. package/dist/cjs/constants/pseudos.js +25 -0
  6. package/dist/cjs/constants/pseudos.js.map +7 -0
  7. package/dist/cjs/constants/rnw.js +28 -0
  8. package/dist/cjs/constants/rnw.js.map +7 -0
  9. package/dist/cjs/createComponent.js +529 -0
  10. package/dist/cjs/createComponent.js.map +7 -0
  11. package/dist/cjs/createFont.js +50 -0
  12. package/dist/cjs/createFont.js.map +7 -0
  13. package/dist/cjs/createShorthands.js +16 -0
  14. package/dist/cjs/createShorthands.js.map +7 -0
  15. package/dist/cjs/createTamagui.js +223 -0
  16. package/dist/cjs/createTamagui.js.map +7 -0
  17. package/dist/cjs/createTheme.js +13 -0
  18. package/dist/cjs/createTheme.js.map +7 -0
  19. package/dist/cjs/createTokens.js +55 -0
  20. package/dist/cjs/createTokens.js.map +7 -0
  21. package/dist/cjs/createVariable.js +47 -0
  22. package/dist/cjs/createVariable.js.map +7 -0
  23. package/dist/cjs/helpers/addStylesUsingClassname.js +79 -0
  24. package/dist/cjs/helpers/addStylesUsingClassname.js.map +7 -0
  25. package/dist/cjs/helpers/createMediaStyle.js +56 -0
  26. package/dist/cjs/helpers/createMediaStyle.js.map +7 -0
  27. package/dist/cjs/helpers/createPropMapper.js +197 -0
  28. package/dist/cjs/helpers/createPropMapper.js.map +7 -0
  29. package/dist/cjs/helpers/createTamaguiProvider.js +74 -0
  30. package/dist/cjs/helpers/createTamaguiProvider.js.map +7 -0
  31. package/dist/cjs/helpers/extendStaticConfig.js +82 -0
  32. package/dist/cjs/helpers/extendStaticConfig.js.map +7 -0
  33. package/dist/cjs/helpers/fixNativeShadow.js +14 -0
  34. package/dist/cjs/helpers/fixNativeShadow.js.map +7 -0
  35. package/dist/cjs/helpers/fixNativeShadow.native.js +40 -0
  36. package/dist/cjs/helpers/fixNativeShadow.native.js.map +7 -0
  37. package/dist/cjs/helpers/getSplitStyles.js +180 -0
  38. package/dist/cjs/helpers/getSplitStyles.js.map +7 -0
  39. package/dist/cjs/helpers/getStylesAtomic.js +117 -0
  40. package/dist/cjs/helpers/getStylesAtomic.js.map +7 -0
  41. package/dist/cjs/helpers/getStylesAtomic.native.js +16 -0
  42. package/dist/cjs/helpers/getStylesAtomic.native.js.map +7 -0
  43. package/dist/cjs/helpers/insertStyleRule.js +46 -0
  44. package/dist/cjs/helpers/insertStyleRule.js.map +7 -0
  45. package/dist/cjs/helpers/isObj.js +13 -0
  46. package/dist/cjs/helpers/isObj.js.map +7 -0
  47. package/dist/cjs/helpers/isTamaguiElement.js +33 -0
  48. package/dist/cjs/helpers/isTamaguiElement.js.map +7 -0
  49. package/dist/cjs/helpers/matchMedia.js +24 -0
  50. package/dist/cjs/helpers/matchMedia.js.map +7 -0
  51. package/dist/cjs/helpers/matchMedia.native.js +31 -0
  52. package/dist/cjs/helpers/matchMedia.native.js.map +7 -0
  53. package/dist/cjs/helpers/themeable.js +78 -0
  54. package/dist/cjs/helpers/themeable.js.map +7 -0
  55. package/dist/cjs/helpers/validate.js +82 -0
  56. package/dist/cjs/helpers/validate.js.map +7 -0
  57. package/dist/cjs/hooks/useConstant.js +37 -0
  58. package/dist/cjs/hooks/useConstant.js.map +7 -0
  59. package/dist/cjs/hooks/useFeatures.js +100 -0
  60. package/dist/cjs/hooks/useFeatures.js.map +7 -0
  61. package/dist/cjs/hooks/useMedia.js +207 -0
  62. package/dist/cjs/hooks/useMedia.js.map +7 -0
  63. package/dist/cjs/hooks/usePressable.js +50 -0
  64. package/dist/cjs/hooks/usePressable.js.map +7 -0
  65. package/dist/cjs/hooks/useTheme.js +118 -0
  66. package/dist/cjs/hooks/useTheme.js.map +7 -0
  67. package/dist/cjs/index.js +55 -0
  68. package/dist/cjs/index.js.map +7 -0
  69. package/dist/cjs/static/postProcessStyles.js +40 -0
  70. package/dist/cjs/static/postProcessStyles.js.map +7 -0
  71. package/dist/cjs/static.js +34 -0
  72. package/dist/cjs/static.js.map +7 -0
  73. package/dist/cjs/styled.js +72 -0
  74. package/dist/cjs/styled.js.map +7 -0
  75. package/dist/cjs/types.js +4 -0
  76. package/dist/cjs/types.js.map +7 -0
  77. package/dist/cjs/views/Animated.js +129 -0
  78. package/dist/cjs/views/Animated.js.map +7 -0
  79. package/dist/cjs/views/Stack.js +51 -0
  80. package/dist/cjs/views/Stack.js.map +7 -0
  81. package/dist/cjs/views/Text.js +93 -0
  82. package/dist/cjs/views/Text.js.map +7 -0
  83. package/dist/cjs/views/TextAncestorContext.js +40 -0
  84. package/dist/cjs/views/TextAncestorContext.js.map +7 -0
  85. package/dist/cjs/views/Theme.js +91 -0
  86. package/dist/cjs/views/Theme.js.map +7 -0
  87. package/dist/cjs/views/ThemeContext.js +29 -0
  88. package/dist/cjs/views/ThemeContext.js.map +7 -0
  89. package/dist/cjs/views/ThemeInverse.js +48 -0
  90. package/dist/cjs/views/ThemeInverse.js.map +7 -0
  91. package/dist/cjs/views/ThemeManagerContext.js +84 -0
  92. package/dist/cjs/views/ThemeManagerContext.js.map +7 -0
  93. package/dist/cjs/views/ThemeProvider.js +67 -0
  94. package/dist/cjs/views/ThemeProvider.js.map +7 -0
  95. package/dist/esm/constants/constants.js +14 -0
  96. package/dist/esm/constants/constants.js.map +7 -0
  97. package/dist/{constants → esm/constants}/platform.js +3 -2
  98. package/dist/esm/constants/platform.js.map +7 -0
  99. package/dist/esm/constants/pseudos.js +18 -0
  100. package/dist/esm/constants/pseudos.js.map +7 -0
  101. package/dist/esm/constants/rnw.js +22 -0
  102. package/dist/esm/constants/rnw.js.map +7 -0
  103. package/dist/esm/createComponent.js +465 -0
  104. package/dist/esm/createComponent.js.map +7 -0
  105. package/dist/esm/createFont.js +28 -0
  106. package/dist/esm/createFont.js.map +7 -0
  107. package/dist/{createShorthands.js → esm/createShorthands.js} +0 -0
  108. package/dist/esm/createShorthands.js.map +7 -0
  109. package/dist/esm/createTamagui.js +185 -0
  110. package/dist/esm/createTamagui.js.map +7 -0
  111. package/dist/esm/createTheme.js +7 -0
  112. package/dist/esm/createTheme.js.map +7 -0
  113. package/dist/{createTokens.js → esm/createTokens.js} +4 -0
  114. package/dist/esm/createTokens.js.map +7 -0
  115. package/dist/{createVariable.js → esm/createVariable.js} +6 -2
  116. package/dist/esm/createVariable.js.map +7 -0
  117. package/dist/esm/helpers/addStylesUsingClassname.js +57 -0
  118. package/dist/esm/helpers/addStylesUsingClassname.js.map +7 -0
  119. package/dist/{helpers → esm/helpers}/createMediaStyle.js +0 -0
  120. package/dist/{helpers → esm/helpers}/createMediaStyle.js.map +1 -1
  121. package/dist/esm/helpers/createPropMapper.js +162 -0
  122. package/dist/esm/helpers/createPropMapper.js.map +7 -0
  123. package/dist/{helpers → esm/helpers}/createTamaguiProvider.js +2 -20
  124. package/dist/esm/helpers/createTamaguiProvider.js.map +7 -0
  125. package/dist/esm/helpers/extendStaticConfig.js +60 -0
  126. package/dist/esm/helpers/extendStaticConfig.js.map +7 -0
  127. package/dist/esm/helpers/fixNativeShadow.js +8 -0
  128. package/dist/esm/helpers/fixNativeShadow.js.map +7 -0
  129. package/dist/esm/helpers/fixNativeShadow.native.js +34 -0
  130. package/dist/esm/helpers/fixNativeShadow.native.js.map +7 -0
  131. package/dist/{helpers → esm/helpers}/getSplitStyles.js +43 -40
  132. package/dist/esm/helpers/getSplitStyles.js.map +7 -0
  133. package/dist/esm/helpers/getStylesAtomic.js +84 -0
  134. package/dist/esm/helpers/getStylesAtomic.js.map +7 -0
  135. package/dist/esm/helpers/getStylesAtomic.native.js +10 -0
  136. package/dist/esm/helpers/getStylesAtomic.native.js.map +7 -0
  137. package/dist/{helpers → esm/helpers}/insertStyleRule.js +7 -0
  138. package/dist/esm/helpers/insertStyleRule.js.map +7 -0
  139. package/dist/esm/helpers/isObj.js +7 -0
  140. package/dist/esm/helpers/isObj.js.map +7 -0
  141. package/dist/esm/helpers/isTamaguiElement.js +11 -0
  142. package/dist/esm/helpers/isTamaguiElement.js.map +7 -0
  143. package/dist/{helpers → esm/helpers}/matchMedia.js +3 -0
  144. package/dist/esm/helpers/matchMedia.js.map +7 -0
  145. package/dist/{helpers → esm/helpers}/matchMedia.native.js +1 -0
  146. package/dist/{helpers → esm/helpers}/matchMedia.native.js.map +3 -3
  147. package/dist/{helpers → esm/helpers}/themeable.js +1 -1
  148. package/dist/{helpers → esm/helpers}/themeable.js.map +3 -3
  149. package/dist/esm/helpers/validate.js +60 -0
  150. package/dist/esm/helpers/validate.js.map +7 -0
  151. package/dist/{hooks → esm/hooks}/useConstant.js +0 -0
  152. package/dist/{hooks → esm/hooks}/useConstant.js.map +1 -1
  153. package/dist/{hooks → esm/hooks}/useFeatures.js +39 -51
  154. package/dist/esm/hooks/useFeatures.js.map +7 -0
  155. package/dist/{hooks → esm/hooks}/useMedia.js +20 -18
  156. package/dist/esm/hooks/useMedia.js.map +7 -0
  157. package/dist/{hooks → esm/hooks}/usePressable.js +2 -1
  158. package/dist/{hooks → esm/hooks}/usePressable.js.map +2 -2
  159. package/dist/{hooks → esm/hooks}/useTheme.js +28 -25
  160. package/dist/esm/hooks/useTheme.js.map +7 -0
  161. package/dist/{index.js → esm/index.js} +6 -4
  162. package/dist/esm/index.js.map +7 -0
  163. package/dist/{static → esm/static}/postProcessStyles.js +3 -3
  164. package/dist/esm/static/postProcessStyles.js.map +7 -0
  165. package/dist/{static.js → esm/static.js} +6 -1
  166. package/dist/esm/static.js.map +7 -0
  167. package/dist/esm/styled.js +21 -0
  168. package/dist/esm/styled.js.map +7 -0
  169. package/dist/{types.js → esm/types.js} +0 -0
  170. package/dist/{types.js.map → esm/types.js.map} +0 -0
  171. package/dist/{views → esm/views}/Animated.js +0 -0
  172. package/dist/{views → esm/views}/Animated.js.map +3 -3
  173. package/dist/{views → esm/views}/Stack.js +1 -1
  174. package/dist/esm/views/Stack.js.map +7 -0
  175. package/dist/esm/views/Text.js +60 -0
  176. package/dist/esm/views/Text.js.map +7 -0
  177. package/dist/esm/views/TextAncestorContext.js +18 -0
  178. package/dist/esm/views/TextAncestorContext.js.map +7 -0
  179. package/dist/{views → esm/views}/Theme.js +29 -23
  180. package/dist/esm/views/Theme.js.map +7 -0
  181. package/dist/{views → esm/views}/ThemeContext.js +0 -0
  182. package/dist/{views → esm/views}/ThemeContext.js.map +1 -1
  183. package/dist/{views → esm/views}/ThemeInverse.js +0 -1
  184. package/dist/{views → esm/views}/ThemeInverse.js.map +3 -3
  185. package/dist/{views → esm/views}/ThemeManagerContext.js +13 -6
  186. package/dist/esm/views/ThemeManagerContext.js.map +7 -0
  187. package/dist/{views → esm/views}/ThemeProvider.js +10 -10
  188. package/dist/esm/views/ThemeProvider.js.map +7 -0
  189. package/dist/jsx/constants/constants.js +13 -0
  190. package/dist/jsx/constants/platform.js +19 -0
  191. package/dist/jsx/constants/pseudos.js +17 -0
  192. package/dist/jsx/constants/rnw.js +21 -0
  193. package/dist/jsx/createComponent.js +459 -0
  194. package/dist/jsx/createFont.js +27 -0
  195. package/dist/jsx/createShorthands.js +9 -0
  196. package/dist/jsx/createTamagui.js +184 -0
  197. package/dist/jsx/createTheme.js +6 -0
  198. package/dist/jsx/createTokens.js +32 -0
  199. package/dist/jsx/createVariable.js +24 -0
  200. package/dist/jsx/helpers/addStylesUsingClassname.js +56 -0
  201. package/dist/jsx/helpers/createMediaStyle.js +33 -0
  202. package/dist/jsx/helpers/createPropMapper.js +161 -0
  203. package/dist/jsx/helpers/createTamaguiProvider.js +19 -0
  204. package/dist/jsx/helpers/extendStaticConfig.js +59 -0
  205. package/dist/jsx/helpers/fixNativeShadow.js +7 -0
  206. package/dist/jsx/helpers/fixNativeShadow.native.js +33 -0
  207. package/dist/jsx/helpers/getSplitStyles.js +149 -0
  208. package/dist/jsx/helpers/getStylesAtomic.js +83 -0
  209. package/dist/jsx/helpers/getStylesAtomic.native.js +9 -0
  210. package/dist/jsx/helpers/insertStyleRule.js +23 -0
  211. package/dist/jsx/helpers/isObj.js +6 -0
  212. package/dist/jsx/helpers/isTamaguiElement.js +10 -0
  213. package/dist/jsx/helpers/matchMedia.js +17 -0
  214. package/dist/jsx/helpers/matchMedia.native.js +8 -0
  215. package/dist/jsx/helpers/themeable.js +23 -0
  216. package/dist/jsx/helpers/validate.js +59 -0
  217. package/dist/jsx/hooks/useConstant.js +14 -0
  218. package/dist/jsx/hooks/useFeatures.js +57 -0
  219. package/dist/jsx/hooks/useMedia.js +174 -0
  220. package/dist/jsx/hooks/usePressable.js +13 -0
  221. package/dist/jsx/hooks/useTheme.js +96 -0
  222. package/dist/jsx/index.js +31 -0
  223. package/dist/jsx/static/postProcessStyles.js +17 -0
  224. package/dist/jsx/static.js +14 -0
  225. package/dist/jsx/styled.js +20 -0
  226. package/dist/jsx/types.js +0 -0
  227. package/dist/jsx/views/Animated.js +74 -0
  228. package/dist/jsx/views/Stack.js +11 -0
  229. package/dist/jsx/views/Text.js +59 -0
  230. package/dist/jsx/views/TextAncestorContext.js +15 -0
  231. package/dist/jsx/views/Theme.js +63 -0
  232. package/dist/jsx/views/ThemeContext.js +5 -0
  233. package/dist/jsx/views/ThemeInverse.js +22 -0
  234. package/dist/jsx/views/ThemeManagerContext.js +61 -0
  235. package/dist/jsx/views/ThemeProvider.js +39 -0
  236. package/package.json +6 -6
  237. package/types/constants/constants.d.ts.map +1 -0
  238. package/types/constants/platform.d.ts.map +1 -0
  239. package/types/constants/pseudos.d.ts.map +1 -0
  240. package/types/constants/rnw.d.ts.map +1 -0
  241. package/types/createComponent.d.ts.map +1 -0
  242. package/types/createFont.d.ts.map +1 -0
  243. package/types/createShorthands.d.ts.map +1 -0
  244. package/types/createTamagui.d.ts.map +1 -0
  245. package/types/createTheme.d.ts.map +1 -0
  246. package/types/createTokens.d.ts.map +1 -0
  247. package/types/createVariable.d.ts.map +1 -0
  248. package/types/helpers/addStylesUsingClassname.d.ts.map +1 -0
  249. package/types/helpers/createMediaStyle.d.ts.map +1 -0
  250. package/types/helpers/createPropMapper.d.ts.map +1 -0
  251. package/types/helpers/createTamaguiProvider.d.ts.map +1 -0
  252. package/types/helpers/extendStaticConfig.d.ts.map +1 -0
  253. package/types/helpers/fixNativeShadow.d.ts.map +1 -0
  254. package/types/helpers/fixNativeShadow.native.d.ts.map +1 -0
  255. package/types/helpers/getSplitStyles.d.ts.map +1 -0
  256. package/types/helpers/getStylesAtomic.d.ts.map +1 -0
  257. package/types/helpers/getStylesAtomic.native.d.ts.map +1 -0
  258. package/types/helpers/insertStyleRule.d.ts.map +1 -0
  259. package/types/helpers/isObj.d.ts.map +1 -0
  260. package/types/helpers/isTamaguiElement.d.ts.map +1 -0
  261. package/types/helpers/matchMedia.d.ts.map +1 -0
  262. package/types/helpers/matchMedia.native.d.ts.map +1 -0
  263. package/types/helpers/themeable.d.ts.map +1 -0
  264. package/types/helpers/validate.d.ts.map +1 -0
  265. package/types/hooks/useConstant.d.ts.map +1 -0
  266. package/types/hooks/useFeatures.d.ts.map +1 -0
  267. package/types/hooks/useMedia.d.ts.map +1 -0
  268. package/types/hooks/usePressable.d.ts.map +1 -0
  269. package/types/hooks/useTheme.d.ts.map +1 -0
  270. package/types/index.d.ts.map +1 -0
  271. package/types/static/postProcessStyles.d.ts.map +1 -0
  272. package/types/static.d.ts.map +1 -0
  273. package/types/styled.d.ts.map +1 -0
  274. package/types/types.d.ts.map +1 -0
  275. package/types/views/Animated.d.ts.map +1 -0
  276. package/types/views/Stack.d.ts.map +1 -0
  277. package/types/views/Text.d.ts.map +1 -0
  278. package/types/views/TextAncestorContext.d.ts.map +1 -0
  279. package/types/views/Theme.d.ts.map +1 -0
  280. package/types/views/ThemeContext.d.ts.map +1 -0
  281. package/types/views/ThemeInverse.d.ts.map +1 -0
  282. package/types/views/ThemeManagerContext.d.ts.map +1 -0
  283. package/types/views/ThemeProvider.d.ts.map +1 -0
  284. package/dist/constants/constants.js +0 -32
  285. package/dist/constants/constants.js.map +0 -7
  286. package/dist/constants/platform.js.map +0 -7
  287. package/dist/constants/rnw.js +0 -10
  288. package/dist/constants/rnw.js.map +0 -7
  289. package/dist/constants/styleConstants.js +0 -59
  290. package/dist/constants/styleConstants.js.map +0 -7
  291. package/dist/createComponent.js +0 -395
  292. package/dist/createComponent.js.map +0 -7
  293. package/dist/createShorthands.js.map +0 -7
  294. package/dist/createTamagui.js +0 -107
  295. package/dist/createTamagui.js.map +0 -7
  296. package/dist/createTokens.js.map +0 -7
  297. package/dist/createVariable.js.map +0 -7
  298. package/dist/helpers/addStylesUsingClassname.js +0 -28
  299. package/dist/helpers/addStylesUsingClassname.js.map +0 -7
  300. package/dist/helpers/createTamaguiProvider.js.map +0 -7
  301. package/dist/helpers/extendStaticConfig.js +0 -158
  302. package/dist/helpers/extendStaticConfig.js.map +0 -7
  303. package/dist/helpers/fixNativeShadow.js +0 -38
  304. package/dist/helpers/fixNativeShadow.js.map +0 -7
  305. package/dist/helpers/getSplitStyles.js.map +0 -7
  306. package/dist/helpers/insertStyleRule.js.map +0 -7
  307. package/dist/helpers/matchMedia.js.map +0 -7
  308. package/dist/helpers/setIfChanged.js +0 -17
  309. package/dist/helpers/setIfChanged.js.map +0 -7
  310. package/dist/hooks/useFeatures.js.map +0 -7
  311. package/dist/hooks/useForceUpdate.js +0 -28
  312. package/dist/hooks/useForceUpdate.js.map +0 -7
  313. package/dist/hooks/useMedia.js.map +0 -7
  314. package/dist/hooks/useTheme.js.map +0 -7
  315. package/dist/index.cjs +0 -1837
  316. package/dist/index.cjs.map +0 -7
  317. package/dist/index.js.map +0 -7
  318. package/dist/static/postProcessStyles.js.map +0 -7
  319. package/dist/static.js.map +0 -7
  320. package/dist/styled.js +0 -28
  321. package/dist/styled.js.map +0 -7
  322. package/dist/testtypes.js +0 -1
  323. package/dist/testtypes.js.map +0 -7
  324. package/dist/views/Stack.js.map +0 -7
  325. package/dist/views/Text.js +0 -36
  326. package/dist/views/Text.js.map +0 -7
  327. package/dist/views/TextAncestorContext.js +0 -18
  328. package/dist/views/TextAncestorContext.js.map +0 -7
  329. package/dist/views/Theme.js.map +0 -7
  330. package/dist/views/ThemeManagerContext.js.map +0 -7
  331. package/dist/views/ThemeProvider.js.map +0 -7
package/dist/index.cjs DELETED
@@ -1,1837 +0,0 @@
1
- var __create = Object.create;
2
- var __defProp = Object.defineProperty;
3
- var __defProps = Object.defineProperties;
4
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
- var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
6
- var __getOwnPropNames = Object.getOwnPropertyNames;
7
- var __getOwnPropSymbols = Object.getOwnPropertySymbols;
8
- var __getProtoOf = Object.getPrototypeOf;
9
- var __hasOwnProp = Object.prototype.hasOwnProperty;
10
- var __propIsEnum = Object.prototype.propertyIsEnumerable;
11
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
12
- var __spreadValues = (a, b) => {
13
- for (var prop in b || (b = {}))
14
- if (__hasOwnProp.call(b, prop))
15
- __defNormalProp(a, prop, b[prop]);
16
- if (__getOwnPropSymbols)
17
- for (var prop of __getOwnPropSymbols(b)) {
18
- if (__propIsEnum.call(b, prop))
19
- __defNormalProp(a, prop, b[prop]);
20
- }
21
- return a;
22
- };
23
- var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
24
- var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
25
- var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
26
- var __objRest = (source, exclude) => {
27
- var target = {};
28
- for (var prop in source)
29
- if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
30
- target[prop] = source[prop];
31
- if (source != null && __getOwnPropSymbols)
32
- for (var prop of __getOwnPropSymbols(source)) {
33
- if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
34
- target[prop] = source[prop];
35
- }
36
- return target;
37
- };
38
- var __export = (target, all) => {
39
- __markAsModule(target);
40
- for (var name in all)
41
- __defProp(target, name, { get: all[name], enumerable: true });
42
- };
43
- var __reExport = (target, module2, desc) => {
44
- if (module2 && typeof module2 === "object" || typeof module2 === "function") {
45
- for (let key of __getOwnPropNames(module2))
46
- if (!__hasOwnProp.call(target, key) && key !== "default")
47
- __defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable });
48
- }
49
- return target;
50
- };
51
- var __toModule = (module2) => {
52
- return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", module2 && module2.__esModule && "default" in module2 ? { get: () => module2.default, enumerable: true } : { value: module2, enumerable: true })), module2);
53
- };
54
-
55
- // src/index.ts
56
- __export(exports, {
57
- AnimatedStack: () => AnimatedStack,
58
- GET_DEFAULT_THEME: () => GET_DEFAULT_THEME,
59
- Spacer: () => Spacer,
60
- Stack: () => Stack,
61
- Text: () => Text2,
62
- TextAncestorContext: () => TextAncestorContext,
63
- TextAncestorProvider: () => TextAncestorProvider,
64
- Theme: () => Theme,
65
- ThemeInverse: () => ThemeInverse,
66
- ThemeProvider: () => ThemeProvider,
67
- Variable: () => Variable,
68
- addMediaQueryListener: () => addMediaQueryListener,
69
- configureMedia: () => configureMedia,
70
- createComponent: () => createComponent,
71
- createShorthands: () => createShorthands,
72
- createTamagui: () => createTamagui,
73
- createTokens: () => createTokens,
74
- createVariable: () => createVariable,
75
- cssText: () => cssText,
76
- cssTextStyles: () => cssTextStyles,
77
- disabledStyle: () => disabledStyle,
78
- extendStaticConfig: () => extendStaticConfig,
79
- getHasConfigured: () => getHasConfigured,
80
- getMedia: () => getMedia,
81
- getTamaguiConfig: () => getTamaguiConfig,
82
- getThemeParentClassName: () => getThemeParentClassName,
83
- isChrome: () => isChrome,
84
- isSSR: () => isSSR,
85
- isTouchDevice: () => isTouchDevice,
86
- isVariable: () => isVariable,
87
- isWeb: () => isWeb,
88
- isWebIOS: () => isWebIOS,
89
- matchMedia: () => matchMedia,
90
- mediaObjectToString: () => mediaObjectToString,
91
- mediaQueryConfig: () => mediaQueryConfig,
92
- mediaState: () => mediaState,
93
- mouseUps: () => mouseUps,
94
- onConfiguredOnce: () => onConfiguredOnce,
95
- parseStaticConfig: () => parseStaticConfig,
96
- removeMediaQueryListener: () => removeMediaQueryListener,
97
- rnw: () => rnw,
98
- setIfChanged: () => setIfChanged,
99
- setThemeInversions: () => setThemeInversions,
100
- spacedChildren: () => spacedChildren,
101
- stackDefaultStyles: () => stackDefaultStyles,
102
- styled: () => styled,
103
- supportsTouchWeb: () => supportsTouchWeb,
104
- textStyles: () => textStyles,
105
- themeable: () => themeable,
106
- useConstant: () => useConstant,
107
- useDefaultThemeName: () => useDefaultThemeName,
108
- useForceUpdate: () => useForceUpdate,
109
- useIsomorphicLayoutEffect: () => useIsomorphicLayoutEffect,
110
- useMedia: () => useMedia,
111
- useTheme: () => useTheme,
112
- useThemeName: () => useThemeName,
113
- validStylesText: () => validStylesText,
114
- viewStyles: () => viewStyles,
115
- webOnlySpecificStyleKeys: () => webOnlySpecificStyleKeys
116
- });
117
-
118
- // src/createComponent.tsx
119
- var import_helpers4 = __toModule(require("@tamagui/helpers"));
120
- var import_react11 = __toModule(require("react"));
121
- var import_react_native5 = __toModule(require("react-native"));
122
-
123
- // src/constants/constants.ts
124
- var import_helpers = __toModule(require("@tamagui/helpers"));
125
-
126
- // src/constants/platform.ts
127
- var import_react = __toModule(require("react"));
128
- var import_react_native = __toModule(require("react-native"));
129
- var isWeb = process.env.TARGET !== "native" || import_react_native.Platform.OS === "web";
130
- var isSSR = isWeb && typeof window === "undefined";
131
- var useIsomorphicLayoutEffect = isSSR ? import_react.useEffect : import_react.useLayoutEffect;
132
- var isWebIOS = isWeb && typeof window !== "undefined" && (/iPad|iPhone|iPod/.test(navigator.platform) || navigator.platform === "MacIntel" && navigator.maxTouchPoints > 1) && !window["MSStream"];
133
- var isChrome = typeof navigator !== "undefined" && /Chrome/.test(navigator.userAgent || "");
134
- var supportsTouchWeb = typeof window !== "undefined" && "ontouchstart" in window;
135
- var isTouchDevice = !isWeb || supportsTouchWeb;
136
-
137
- // src/constants/constants.ts
138
- var webOnlySpecificStyleKeys = {
139
- userSelect: true,
140
- textOverflow: true,
141
- whiteSpace: true,
142
- wordWrap: true,
143
- selectable: true,
144
- cursor: true
145
- };
146
- var validStylesText = __spreadValues(__spreadValues(__spreadValues({}, import_helpers.validStyles), import_helpers.stylePropsTextOnly), isWeb && __spreadValues({}, webOnlySpecificStyleKeys));
147
- var stackDefaultStyles = __spreadValues({
148
- alignItems: "stretch",
149
- flexShrink: 0
150
- }, isWeb && {
151
- display: "flex",
152
- flexBasis: "auto",
153
- boxSizing: "border-box"
154
- });
155
-
156
- // src/constants/rnw.tsx
157
- var loadRNW = process.env.IS_STATIC !== "is_static" && isWeb;
158
- var interopRequire = /* @__PURE__ */ __name((src) => "default" in src ? src.default : src, "interopRequire");
159
- var rnw = loadRNW ? interopRequire(require("react-native-web").TamaguiExports) : null;
160
-
161
- // src/constants/styleConstants.tsx
162
- var import_react_native2 = __toModule(require("react-native"));
163
- var cssTextStyles = {
164
- text: {
165
- display: isWeb ? "inline" : "flex",
166
- boxSizing: "border-box",
167
- fontFamily: "System",
168
- whiteSpace: "pre-wrap",
169
- wordWrap: "break-word"
170
- },
171
- textHasAncestor: {
172
- color: "inherit",
173
- font: "inherit",
174
- whiteSpace: "inherit"
175
- },
176
- textOneLine: {
177
- maxWidth: "100%",
178
- overflow: "hidden",
179
- textOverflow: "ellipsis",
180
- whiteSpace: "nowrap"
181
- },
182
- textMultiLine: {
183
- display: "-webkit-box",
184
- maxWidth: "100%",
185
- overflow: "hidden",
186
- textOverflow: "ellipsis",
187
- WebkitBoxOrient: "vertical"
188
- }
189
- };
190
- var _a;
191
- var cssText = isWeb ? (_a = rnw) == null ? void 0 : _a.css.create(cssTextStyles) : {};
192
- var disabledStyle = {
193
- pointerEvents: "none",
194
- userSelect: "none"
195
- };
196
- var viewStyles = import_react_native2.StyleSheet.create({
197
- inline: isWeb ? {
198
- display: "inline-flex"
199
- } : {}
200
- });
201
- var textStyles = isWeb ? import_react_native2.StyleSheet.create({
202
- notSelectable: {
203
- userSelect: "none"
204
- },
205
- selectable: {
206
- userSelect: "text"
207
- },
208
- pressable: {
209
- cursor: "pointer"
210
- }
211
- }) : {};
212
-
213
- // src/createVariable.ts
214
- var Variable = class {
215
- constructor({ val, name }) {
216
- this.val = typeof val === "string" ? val : `${val}px`;
217
- this.name = name;
218
- this.variable = `var(--${name})`;
219
- }
220
- };
221
- __name(Variable, "Variable");
222
- var createVariable = /* @__PURE__ */ __name((props) => new Variable(props), "createVariable");
223
- function isVariable(v) {
224
- return v instanceof Variable;
225
- }
226
- __name(isVariable, "isVariable");
227
-
228
- // src/helpers/createTamaguiProvider.tsx
229
- var import_overlays = __toModule(require("@react-native-aria/overlays"));
230
- var React4 = __toModule(require("react"));
231
- var import_react_native3 = __toModule(require("react-native"));
232
- var import_react_native_safe_area_context = __toModule(require("react-native-safe-area-context"));
233
-
234
- // src/views/TextAncestorContext.tsx
235
- var import_react2 = __toModule(require("react"));
236
- var _a2;
237
- var TextAncestorContext = (_a2 = rnw) == null ? void 0 : _a2.TextAncestorContext;
238
- var TextAncestorProvider = /* @__PURE__ */ __name((props) => {
239
- if (TextAncestorContext) {
240
- return /* @__PURE__ */ import_react2.default.createElement(TextAncestorContext.Provider, {
241
- value: false
242
- }, props.children);
243
- }
244
- return props.children;
245
- }, "TextAncestorProvider");
246
-
247
- // src/views/ThemeProvider.tsx
248
- var import_react7 = __toModule(require("react"));
249
-
250
- // src/views/Theme.tsx
251
- var import_react6 = __toModule(require("react"));
252
-
253
- // src/hooks/useConstant.tsx
254
- var import_react3 = __toModule(require("react"));
255
- function useConstant(fn) {
256
- const ref = (0, import_react3.useRef)();
257
- if (!ref.current) {
258
- ref.current = { v: fn() };
259
- }
260
- return ref.current.v;
261
- }
262
- __name(useConstant, "useConstant");
263
-
264
- // src/views/ThemeContext.tsx
265
- var import_react4 = __toModule(require("react"));
266
- var ThemeContext = (0, import_react4.createContext)(null);
267
-
268
- // src/views/ThemeManagerContext.tsx
269
- var import_react5 = __toModule(require("react"));
270
- var ThemeManager = class {
271
- constructor() {
272
- this.name = "light";
273
- this.keys = new Map();
274
- this.listeners = new Map();
275
- this.callbacks = new Set();
276
- this.theme = null;
277
- }
278
- setActiveTheme(name, theme) {
279
- if (name === this.name)
280
- return;
281
- this.name = name;
282
- this.theme = theme;
283
- this.update();
284
- }
285
- track(uuid, keys) {
286
- if (!this.name)
287
- return;
288
- this.keys.set(uuid, keys);
289
- }
290
- update() {
291
- var _a4;
292
- if (!this.name) {
293
- this.keys.clear();
294
- }
295
- for (const [uuid, keys] of this.keys.entries()) {
296
- if (keys.size) {
297
- (_a4 = this.listeners.get(uuid)) == null ? void 0 : _a4();
298
- }
299
- }
300
- this.callbacks.forEach((cb) => cb(this.name));
301
- }
302
- onChangeTheme(cb) {
303
- this.callbacks.add(cb);
304
- return () => {
305
- this.callbacks.delete(cb);
306
- };
307
- }
308
- onUpdate(uuid, cb) {
309
- this.listeners.set(uuid, cb);
310
- return () => {
311
- this.listeners.delete(uuid);
312
- this.keys.delete(uuid);
313
- };
314
- }
315
- };
316
- __name(ThemeManager, "ThemeManager");
317
- var ThemeManagerContext = (0, import_react5.createContext)(new ThemeManager());
318
-
319
- // src/views/Theme.tsx
320
- var Theme = /* @__PURE__ */ __name((props) => {
321
- var _a4;
322
- const parent = (0, import_react6.useContext)(ThemeManagerContext);
323
- const themes = (0, import_react6.useContext)(ThemeContext);
324
- const [parentName, setParentName] = (0, import_react6.useState)(parent.name || "light");
325
- const { name, theme } = getTheme(props.name, parentName, themes);
326
- const themeManager = useConstant(() => {
327
- const manager = new ThemeManager();
328
- if (name) {
329
- manager.setActiveTheme(name, themes[name]);
330
- }
331
- return manager;
332
- });
333
- useIsomorphicLayoutEffect(() => {
334
- themeManager.setActiveTheme(name, theme);
335
- return parent.onChangeTheme((next) => {
336
- if (next) {
337
- themeManager.setActiveTheme(next, themes[next]);
338
- setParentName(next);
339
- }
340
- });
341
- }, [themes, name]);
342
- if (!name) {
343
- return props.children;
344
- }
345
- const contents = themeManager ? /* @__PURE__ */ import_react6.default.createElement(ThemeManagerContext.Provider, {
346
- value: themeManager
347
- }, props.children) : props.children;
348
- if (isWeb) {
349
- if (props.disableThemeClass) {
350
- return contents;
351
- }
352
- return /* @__PURE__ */ import_react6.default.createElement("div", {
353
- className: getThemeParentClassName(name),
354
- style: { display: "contents", color: (_a4 = themes[name]) == null ? void 0 : _a4["color"] }
355
- }, contents);
356
- }
357
- return contents;
358
- }, "Theme");
359
- function getTheme(name, parentName, themes) {
360
- let fullName = name || parentName || "";
361
- let nextTheme = themes[fullName];
362
- if (name && !nextTheme) {
363
- const themeSchemeName = `${fullName}-${parentName}`;
364
- if (themes[themeSchemeName]) {
365
- fullName = themeSchemeName;
366
- nextTheme = themes[themeSchemeName];
367
- }
368
- }
369
- return { name: fullName, theme: nextTheme };
370
- }
371
- __name(getTheme, "getTheme");
372
-
373
- // src/views/ThemeProvider.tsx
374
- var GET_DEFAULT_THEME = "___TGUI";
375
- var ThemeProvider = /* @__PURE__ */ __name((props) => {
376
- if (!getHasConfigured()) {
377
- throw new Error(`Missing configureThemes() call, add to your root file`);
378
- }
379
- useIsomorphicLayoutEffect(() => {
380
- if (props.disableRootThemeClass) {
381
- return;
382
- }
383
- if (typeof document !== "undefined") {
384
- const cns = getThemeParentClassName(`${props.defaultTheme}`).split(" ");
385
- cns.forEach((cn) => document.body.classList.add(cn));
386
- return () => {
387
- cns.forEach((cn) => document.body.classList.remove(cn));
388
- };
389
- }
390
- }, []);
391
- return /* @__PURE__ */ import_react7.default.createElement(ThemeContext.Provider, {
392
- value: (0, import_react7.useMemo)(() => {
393
- console.log("wut are", props.themes);
394
- return new Proxy(props.themes, {
395
- get(target, key) {
396
- if (key === GET_DEFAULT_THEME)
397
- return props.defaultTheme;
398
- return Reflect.get(target, key);
399
- }
400
- });
401
- }, [props.themes])
402
- }, /* @__PURE__ */ import_react7.default.createElement(Theme, {
403
- name: props.defaultTheme,
404
- disableThemeClass: props.disableRootThemeClass
405
- }, props.children));
406
- }, "ThemeProvider");
407
-
408
- // src/helpers/createTamaguiProvider.tsx
409
- function createTamaguiProvider(themeProps) {
410
- let defaultMetrics = null;
411
- return /* @__PURE__ */ __name(function TamaguiProvider(_a4) {
412
- var _b2 = _a4, {
413
- initialWindowMetrics,
414
- fallback,
415
- children
416
- } = _b2, themePropsProvider = __objRest(_b2, [
417
- "initialWindowMetrics",
418
- "fallback",
419
- "children"
420
- ]);
421
- if (!initialWindowMetrics && !defaultMetrics) {
422
- defaultMetrics = import_react_native3.Platform.select({
423
- web: {
424
- frame: { x: 0, y: 0, width: 0, height: 0 },
425
- insets: { top: 0, left: 0, right: 0, bottom: 0 }
426
- },
427
- default: import_react_native_safe_area_context.initialWindowMetrics
428
- });
429
- }
430
- return /* @__PURE__ */ React4.createElement(TextAncestorProvider, null, /* @__PURE__ */ React4.createElement(import_overlays.OverlayProvider, null, /* @__PURE__ */ React4.createElement(import_react_native_safe_area_context.SafeAreaProvider, {
431
- initialMetrics: initialWindowMetrics ?? defaultMetrics
432
- }, /* @__PURE__ */ React4.createElement(ThemeProvider, __spreadValues(__spreadValues({}, themeProps), themePropsProvider), /* @__PURE__ */ React4.createElement(React4.Suspense, {
433
- fallback: fallback || null
434
- }, children)))));
435
- }, "TamaguiProvider");
436
- }
437
- __name(createTamaguiProvider, "createTamaguiProvider");
438
-
439
- // src/hooks/useMedia.tsx
440
- var import_react9 = __toModule(require("react"));
441
-
442
- // src/helpers/matchMedia.ts
443
- var matchMedia = typeof window !== "undefined" && window.matchMedia || /* @__PURE__ */ __name(function matchMediaFallback(query) {
444
- return {
445
- addListener() {
446
- },
447
- removeListener() {
448
- },
449
- matches: false
450
- };
451
- }, "matchMediaFallback");
452
-
453
- // src/hooks/useForceUpdate.tsx
454
- var import_react8 = __toModule(require("react"));
455
- function useForceUpdate() {
456
- const setState = (0, import_react8.useState)(0)[1];
457
- const internal = (0, import_react8.useRef)();
458
- if (!internal.current) {
459
- internal.current = {
460
- isMounted: true,
461
- update: () => {
462
- if (internal.current.isMounted) {
463
- setState(Math.random());
464
- }
465
- }
466
- };
467
- }
468
- (0, import_react8.useEffect)(() => {
469
- return () => {
470
- internal.current.isMounted = false;
471
- };
472
- }, []);
473
- return internal.current.update;
474
- }
475
- __name(useForceUpdate, "useForceUpdate");
476
-
477
- // src/hooks/useMedia.tsx
478
- var mediaState = {};
479
- var mediaQueryListeners = {};
480
- var addMediaQueryListener = /* @__PURE__ */ __name((key, cb) => {
481
- mediaQueryListeners[key] = mediaQueryListeners[key] || new Set();
482
- mediaQueryListeners[key].add(cb);
483
- }, "addMediaQueryListener");
484
- var removeMediaQueryListener = /* @__PURE__ */ __name((key, cb) => {
485
- mediaQueryListeners[key].delete(cb);
486
- }, "removeMediaQueryListener");
487
- var hasConfigured = false;
488
- var mediaQueryConfigObject = null;
489
- var mediaQueryConfig = new Proxy({}, {
490
- get(target, key) {
491
- if (!mediaQueryConfigObject) {
492
- throw new Error(`Be sure to run configureMedia before accessing mediaQueryConfig`);
493
- }
494
- return Reflect.get(mediaQueryConfigObject, key);
495
- },
496
- ownKeys() {
497
- if (!mediaQueryConfigObject) {
498
- throw new Error(`Be sure to run configureMedia before accessing mediaQueryConfig`);
499
- }
500
- return Object.keys(mediaQueryConfigObject);
501
- },
502
- getOwnPropertyDescriptor() {
503
- return {
504
- enumerable: true,
505
- configurable: true
506
- };
507
- }
508
- });
509
- var getMedia = /* @__PURE__ */ __name(() => {
510
- if (!hasConfigured) {
511
- throw new Error(`not configured yet`);
512
- }
513
- return mediaState;
514
- }, "getMedia");
515
- var configureMedia = /* @__PURE__ */ __name(({
516
- queries,
517
- defaultActive = ["sm", "xs"]
518
- } = {}) => {
519
- if (hasConfigured) {
520
- console.warn(`Already configured mediaQueries once (you may have called getMedia() before configureMedia())`);
521
- return;
522
- }
523
- hasConfigured = true;
524
- if (queries)
525
- mediaQueryConfigObject = queries;
526
- for (const key in queries) {
527
- const str = mediaObjectToString(queries[key]);
528
- try {
529
- const getMatch = /* @__PURE__ */ __name(() => matchMedia(str), "getMatch");
530
- const match = getMatch();
531
- if (!match || typeof match.addListener !== "function") {
532
- throw new Error("\u26A0\uFE0F No match (seeing this in RN sometimes)");
533
- }
534
- mediaState[key] = !!match.matches;
535
- match.addListener(() => {
536
- const next = !!getMatch().matches;
537
- if (next === mediaState[key])
538
- return;
539
- mediaState[key] = next;
540
- const listeners = mediaQueryListeners[key];
541
- if (listeners == null ? void 0 : listeners.size) {
542
- for (const cb of [...listeners]) {
543
- cb();
544
- }
545
- }
546
- });
547
- } catch (err) {
548
- console.error("Error running media query", str, err.message, err.stack);
549
- const isDefaultActive = (defaultActive == null ? void 0 : defaultActive.includes(key)) ?? true;
550
- mediaState[key] = isDefaultActive;
551
- }
552
- }
553
- }, "configureMedia");
554
- var useMedia = /* @__PURE__ */ __name(() => {
555
- const forceUpdate = useForceUpdate();
556
- const state = (0, import_react9.useRef)();
557
- if (!state.current) {
558
- state.current = {
559
- selections: {},
560
- nextSelections: {},
561
- isUnmounted: false,
562
- isRendering: true
563
- };
564
- }
565
- state.current.isRendering = true;
566
- useIsomorphicLayoutEffect(() => {
567
- const st = state.current;
568
- st.isRendering = false;
569
- for (const key in st.selections) {
570
- if (!(key in st.nextSelections)) {
571
- removeMediaQueryListener(key, forceUpdate);
572
- }
573
- }
574
- for (const key in st.nextSelections) {
575
- if (!(key in st.selections)) {
576
- addMediaQueryListener(key, forceUpdate);
577
- }
578
- }
579
- });
580
- useIsomorphicLayoutEffect(() => {
581
- return () => {
582
- const st = state.current;
583
- st.isUnmounted = true;
584
- const allKeys = __spreadValues(__spreadValues({}, st.selections), st.nextSelections);
585
- for (const key in allKeys) {
586
- removeMediaQueryListener(key, forceUpdate);
587
- }
588
- };
589
- }, []);
590
- return useConstant(() => {
591
- const st = state.current;
592
- return new Proxy(mediaState, {
593
- get(target, key) {
594
- if (!(key in mediaState)) {
595
- return Reflect.get(target, key);
596
- }
597
- if (!st.isUnmounted) {
598
- if (st.isRendering) {
599
- st.nextSelections[key] = true;
600
- }
601
- }
602
- if (key in mediaState) {
603
- return mediaState[key];
604
- }
605
- return Reflect.get(mediaState, key);
606
- }
607
- });
608
- });
609
- }, "useMedia");
610
- function camelToHyphen(str) {
611
- return str.replace(/[A-Z]/g, (m) => `-${m.toLowerCase()}`).toLowerCase();
612
- }
613
- __name(camelToHyphen, "camelToHyphen");
614
- function mediaObjectToString(query) {
615
- if (typeof query === "string") {
616
- return query;
617
- }
618
- return Object.entries(query).map(([feature, value]) => {
619
- feature = camelToHyphen(feature);
620
- if (typeof value === "string") {
621
- return `(${feature}: ${value})`;
622
- }
623
- if (typeof value === "number" && /[height|width]$/.test(feature)) {
624
- value = `${value}px`;
625
- }
626
- return `(${feature}: ${value})`;
627
- }).join(" and ");
628
- }
629
- __name(mediaObjectToString, "mediaObjectToString");
630
-
631
- // src/createTamagui.ts
632
- var conf;
633
- var getHasConfigured = /* @__PURE__ */ __name(() => !!conf, "getHasConfigured");
634
- var getTamaguiConfig = /* @__PURE__ */ __name(() => conf, "getTamaguiConfig");
635
- var configListeners = new Set();
636
- var onConfiguredOnce = /* @__PURE__ */ __name((cb) => {
637
- if (conf) {
638
- cb(conf);
639
- } else {
640
- configListeners.add(cb);
641
- }
642
- }, "onConfiguredOnce");
643
- var THEME_CLASS_PREFIX = `theme--`;
644
- function createTamagui(config) {
645
- if (conf) {
646
- throw new Error(`#000 createTamagui called twice`);
647
- }
648
- configureMedia({
649
- queries: config.media,
650
- defaultActive: config.mediaQueryDefaultActive
651
- });
652
- const themeConfig = (() => {
653
- let cssRules = [];
654
- let tokenRule = `html {`;
655
- const varsByValue = new Map();
656
- for (const key in config.tokens) {
657
- for (const skey in config.tokens[key]) {
658
- const v = config.tokens[key][skey];
659
- varsByValue[v.val] = v;
660
- tokenRule += `--${v.name}:${typeof v.val === "number" ? `${v.val}px` : v.val};`;
661
- }
662
- }
663
- cssRules.push(`${tokenRule}
664
- }`);
665
- for (const themeName in config.themes) {
666
- const theme = config.themes[themeName];
667
- let vars = "";
668
- for (const themeKey in theme) {
669
- const val = theme[themeKey];
670
- const getVariableCSS = /* @__PURE__ */ __name((inv) => {
671
- const v = varsByValue[inv] ?? inv;
672
- return isVariable(v) ? `--${themeKey}:var(--${v.name});` : `--${themeKey}:${v};`;
673
- }, "getVariableCSS");
674
- vars += getVariableCSS(val);
675
- if (!isVariable(val)) {
676
- theme[themeKey] = createVariable({
677
- name: themeKey,
678
- val
679
- });
680
- }
681
- }
682
- cssRules.push(`.${THEME_CLASS_PREFIX}${themeName} {
683
- ${vars}
684
- }`);
685
- }
686
- Object.freeze(cssRules);
687
- return {
688
- cssRules,
689
- css: cssRules.join("\n")
690
- };
691
- })();
692
- const tokensParsed = {};
693
- for (const key in config.tokens) {
694
- tokensParsed[key] = {};
695
- for (const skey in config.tokens[key]) {
696
- tokensParsed[key][`$${skey}`] = config.tokens[key][skey];
697
- }
698
- }
699
- const themeParsed = {};
700
- const firstKey = Object.keys(config.themes)[0];
701
- for (const key in config.themes[firstKey]) {
702
- themeParsed[`$${key}`] = config.themes[firstKey][key];
703
- }
704
- const next = __spreadProps(__spreadValues({}, config), {
705
- TamaguiProvider: createTamaguiProvider(__spreadValues({
706
- defaultTheme: "light"
707
- }, config)),
708
- themeConfig,
709
- themeParsed,
710
- tokensParsed
711
- });
712
- conf = next;
713
- if (configListeners.size) {
714
- configListeners.forEach((cb) => cb(next));
715
- configListeners.clear();
716
- }
717
- return next;
718
- }
719
- __name(createTamagui, "createTamagui");
720
- function getThemeParentClassName(themeName) {
721
- return `theme-parent ${themeName ? `${THEME_CLASS_PREFIX}${themeName}` : ""}`;
722
- }
723
- __name(getThemeParentClassName, "getThemeParentClassName");
724
-
725
- // src/helpers/addStylesUsingClassname.tsx
726
- var import_helpers2 = __toModule(require("@tamagui/helpers"));
727
-
728
- // src/helpers/insertStyleRule.tsx
729
- function insertStyleRule(rule) {
730
- if (typeof window === "undefined") {
731
- return;
732
- }
733
- const sheet = window.document.styleSheets[0];
734
- if (!sheet) {
735
- return;
736
- }
737
- sheet.insertRule(rule, sheet.cssRules.length);
738
- }
739
- __name(insertStyleRule, "insertStyleRule");
740
-
741
- // src/helpers/addStylesUsingClassname.tsx
742
- var added = {};
743
- function addStylesUsingClassname(styles) {
744
- let className = "";
745
- for (const style of styles.flat()) {
746
- if (!style)
747
- continue;
748
- for (const { identifier, rules } of (0, import_helpers2.getStylesAtomic)(style)) {
749
- className += ` ${identifier}`;
750
- if (added[identifier]) {
751
- continue;
752
- }
753
- added[identifier] = true;
754
- for (const rule of rules) {
755
- insertStyleRule(rule);
756
- }
757
- }
758
- }
759
- return className;
760
- }
761
- __name(addStylesUsingClassname, "addStylesUsingClassname");
762
-
763
- // src/helpers/extendStaticConfig.ts
764
- function extendStaticConfig(Component, config = {}) {
765
- if (process.env.TARGET === "client") {
766
- return null;
767
- }
768
- const a = Component;
769
- if (!a.staticConfig) {
770
- a.staticConfig = {};
771
- }
772
- return parseStaticConfig({
773
- variants: config.variants,
774
- isText: config.isText || a.staticConfig.isText || false,
775
- neverFlatten: config.neverFlatten ?? a.staticConfig.neverFlatten,
776
- ensureOverriddenProp: config.ensureOverriddenProp ?? a.staticConfig.ensureOverriddenProp,
777
- validStyles: __spreadValues(__spreadValues({}, a.staticConfig.validStyles), config.validStyles),
778
- validPropsExtra: __spreadValues(__spreadValues({}, a.staticConfig.validPropsExtra), config.validPropsExtra),
779
- defaultProps: __spreadValues(__spreadValues({}, a.staticConfig.defaultProps), config.defaultProps)
780
- });
781
- }
782
- __name(extendStaticConfig, "extendStaticConfig");
783
- function parseStaticConfig(c) {
784
- const variants = c.variants;
785
- let variantsParsed;
786
- return __spreadProps(__spreadValues({}, c), {
787
- parsed: true,
788
- propMapper(key, value, theme) {
789
- const conf2 = getTamaguiConfig();
790
- if (!conf2) {
791
- console.trace("err");
792
- return;
793
- }
794
- if (variants && !variantsParsed) {
795
- variantsParsed = parseVariants(variants, conf2);
796
- }
797
- const variant = variantsParsed == null ? void 0 : variantsParsed[key];
798
- if (variant) {
799
- const tokenKey = typeof value === "string" && value[0] === "$" ? value.slice(1) : value;
800
- const val = variant[tokenKey] ?? value;
801
- if (typeof val !== "undefined") {
802
- if (typeof val === "function") {
803
- const res = val(tokenKey, conf2);
804
- if (res) {
805
- for (const key2 in res) {
806
- const finalKey = conf2.shorthands[key2] || key2;
807
- if (key2 !== finalKey) {
808
- delete res[key2];
809
- }
810
- const resVal = isVariable(res[key2]) ? res[key2].variable : res[key2];
811
- const finalValue = resVal[0] === "$" ? getToken(finalKey, resVal, conf2) : value;
812
- console.log("dun", finalKey, finalValue);
813
- res[finalKey] = finalValue;
814
- }
815
- }
816
- console.warn("no res", res);
817
- return res;
818
- }
819
- console.warn("this should probably just be an obj", val);
820
- return val;
821
- }
822
- }
823
- let shouldReturn = false;
824
- if (conf2.shorthands[key]) {
825
- shouldReturn = true;
826
- key = conf2.shorthands[key];
827
- }
828
- if (value && value[0] === "$") {
829
- shouldReturn = true;
830
- value = getToken(key, value, conf2);
831
- }
832
- if (shouldReturn) {
833
- return {
834
- [key]: value
835
- };
836
- }
837
- }
838
- });
839
- }
840
- __name(parseStaticConfig, "parseStaticConfig");
841
- var getToken = /* @__PURE__ */ __name((key, value, { tokensParsed, themeParsed }) => {
842
- var _a4;
843
- if (themeParsed[value]) {
844
- return themeParsed[value].variable;
845
- }
846
- for (const cat in tokenCategories) {
847
- if (tokenCategories[cat][key]) {
848
- const res = tokensParsed[cat][value];
849
- if (res) {
850
- return res.variable;
851
- } else {
852
- return themeParsed[value].variable;
853
- }
854
- }
855
- }
856
- return ((_a4 = tokensParsed.space[key]) == null ? void 0 : _a4[value].variable) ?? value;
857
- }, "getToken");
858
- var tokenCategories = {
859
- size: {
860
- width: true,
861
- height: true,
862
- minWidth: true,
863
- minHeight: true,
864
- maxWidth: true,
865
- maxHeight: true
866
- },
867
- font: {
868
- fontFamily: true
869
- },
870
- fontSize: {
871
- fontSize: true
872
- },
873
- lineHeight: {
874
- lineHeight: true
875
- },
876
- color: {
877
- color: true,
878
- backgroundColor: true,
879
- borderColor: true,
880
- borderBottomColor: true,
881
- borderTopColor: true,
882
- borderLeftColor: true,
883
- borderRightColor: true
884
- }
885
- };
886
- function parseVariants(variants, conf2) {
887
- return Object.keys(variants).reduce((acc, key) => {
888
- acc[key] = Object.keys(variants[key]).reduce((vacc, vkey) => {
889
- if (vkey.startsWith("...")) {
890
- const tokenKey = vkey.slice(3);
891
- const tokens = conf2.tokens[tokenKey];
892
- for (const tkey in tokens) {
893
- vacc[tkey] = variants[key][vkey];
894
- }
895
- } else {
896
- vacc[vkey] = variants[key][vkey];
897
- }
898
- return vacc;
899
- }, {});
900
- return acc;
901
- }, {});
902
- }
903
- __name(parseVariants, "parseVariants");
904
-
905
- // src/helpers/getSplitStyles.tsx
906
- var import_helpers3 = __toModule(require("@tamagui/helpers"));
907
-
908
- // src/helpers/createMediaStyle.ts
909
- var MEDIA_SEP = "_";
910
- var createMediaStyle = /* @__PURE__ */ __name(({ identifier, rules }, mediaKey, mediaQueries, negate, importance = 0) => {
911
- const mediaKeys = Object.keys(mediaQueries);
912
- const mediaKeyPrecendence = mediaKeys.reduce((acc, cur, i) => {
913
- acc[cur] = new Array(importance + 1).fill(":root").join("");
914
- return acc;
915
- }, {});
916
- const negKey = negate ? "0" : "";
917
- const ogPrefix = identifier.slice(0, identifier.indexOf("-") + 1);
918
- const nextIdentifier = `${identifier.replace(ogPrefix, `${ogPrefix}${MEDIA_SEP}${mediaKey}${negKey}${MEDIA_SEP}`)}`;
919
- const screenStr = negate ? "not all" : "screen";
920
- const mediaSelector = mediaObjectToString(mediaQueries[mediaKey]);
921
- const mediaQuery = `${screenStr} and ${mediaSelector}`;
922
- const precendencePrefix = mediaKeyPrecendence[mediaKey];
923
- const styleInner = rules[0].replace(identifier, nextIdentifier);
924
- let styleRule = "";
925
- if (styleInner.includes("@media")) {
926
- styleRule = styleInner.replace("{", ` and ${mediaQuery} {`);
927
- } else {
928
- styleRule = `@media ${mediaQuery} { ${precendencePrefix} ${styleInner} }`;
929
- }
930
- return {
931
- styleRule,
932
- identifier: nextIdentifier
933
- };
934
- }, "createMediaStyle");
935
-
936
- // src/helpers/fixNativeShadow.tsx
937
- var defaultShadowOffset = {
938
- width: 0,
939
- height: 0
940
- };
941
- var matchRgba = /rgba\(\s*([\d\.]{1,})\s*,\s*([\d\.]{1,})\s*,\s*([\d\.]{1,})\s*,\s*([\d\.]{1,})\s*\)$/;
942
- function fixNativeShadow(props, merge = false) {
943
- let res = merge ? props : {};
944
- if (props.shadowColor) {
945
- res.shadowColor = props.shadowColor;
946
- if (!("shadowOffset" in props)) {
947
- res.shadowOffset = defaultShadowOffset;
948
- }
949
- if (!("shadowOpacity" in props)) {
950
- res.shadowOpacity = 1;
951
- const color = String(res.shadowColor).trim();
952
- if (color[0] === "r" && color[3] === "a") {
953
- const [_, r, g, b, a] = color.match(matchRgba) ?? [];
954
- if (typeof a !== "string") {
955
- console.warn("non valid rgba", color);
956
- return props;
957
- }
958
- res.shadowColor = `rgb(${r},${g},${b})`;
959
- res.shadowOpacity = +a;
960
- } else {
961
- res.shadowOpacity = 1;
962
- }
963
- }
964
- }
965
- return res;
966
- }
967
- __name(fixNativeShadow, "fixNativeShadow");
968
-
969
- // src/helpers/getSplitStyles.tsx
970
- var getSplitStyles = /* @__PURE__ */ __name((props, staticConfig, internalConfig) => {
971
- const validStyleProps = staticConfig.isText ? import_helpers3.stylePropsText : import_helpers3.validStyles;
972
- const viewProps = {};
973
- const style = [];
974
- let psuedos = null;
975
- let cur = null;
976
- let classNames = null;
977
- for (const keyInit in props) {
978
- const valInit = props[keyInit];
979
- if (keyInit[0] === "$") {
980
- const mediaKey = keyInit.slice(1);
981
- if (!mediaQueryConfig[mediaKey]) {
982
- viewProps[keyInit] = valInit;
983
- continue;
984
- }
985
- const mediaProps = __spreadValues(__spreadValues({}, props), valInit);
986
- const mediaStyle = getSubStyle(valInit, mediaProps, staticConfig, internalConfig);
987
- const mediaStyles = (0, import_helpers3.getStylesAtomic)(mediaStyle);
988
- for (const style2 of mediaStyles) {
989
- const out2 = createMediaStyle(style2, mediaKey, mediaQueryConfig);
990
- classNames = classNames || [];
991
- classNames.push(out2.identifier);
992
- insertStyleRule(out2.styleRule);
993
- if (process.env.NODE_ENV === "development") {
994
- if (props["debug"])
995
- console.log("mediaProp", style2.identifier, out2, mediaProps, mediaStyle, mediaStyles);
996
- }
997
- }
998
- continue;
999
- }
1000
- const isPseudo = keyInit === "hoverStyle" || keyInit === "pressStyle" || keyInit === "focusStyle";
1001
- if (isPseudo) {
1002
- if (!valInit)
1003
- continue;
1004
- psuedos = psuedos || {};
1005
- psuedos[keyInit] = getSubStyle(valInit, props, staticConfig, internalConfig);
1006
- continue;
1007
- }
1008
- const out = staticConfig.propMapper(keyInit, valInit, props);
1009
- const expanded = out === true || !out ? [[keyInit, valInit]] : Object.entries(out);
1010
- for (const [key, val] of expanded) {
1011
- const keyFirstChar = key[0];
1012
- if (key === "style" || keyFirstChar === "_" && key.startsWith("_style")) {
1013
- if (cur) {
1014
- fixNativeShadow(cur, true);
1015
- style.push(cur);
1016
- cur = null;
1017
- }
1018
- fixNativeShadow(val, true);
1019
- style.push(val);
1020
- continue;
1021
- }
1022
- if (key === "flex") {
1023
- cur = cur || {};
1024
- Object.assign(cur, {
1025
- flexGrow: val,
1026
- flexShrink: 1
1027
- });
1028
- continue;
1029
- }
1030
- if (!isWeb && key === "pointerEvents") {
1031
- viewProps[key] = val;
1032
- continue;
1033
- }
1034
- if (validStyleProps[key]) {
1035
- if (key in import_helpers3.stylePropsTransform) {
1036
- cur = cur || {};
1037
- mergeTransform(cur, key, val);
1038
- continue;
1039
- }
1040
- cur = cur || {};
1041
- cur[key] = val;
1042
- continue;
1043
- }
1044
- if (!blacklistProps[key]) {
1045
- viewProps[key] = val;
1046
- }
1047
- }
1048
- }
1049
- if (cur) {
1050
- fixNativeShadow(cur, true);
1051
- style.push(cur);
1052
- }
1053
- if (process.env.NODE_ENV === "development") {
1054
- if (props["debug"]) {
1055
- console.log(" style debug:", { props, viewProps, style }, getMedia());
1056
- }
1057
- }
1058
- return {
1059
- viewProps,
1060
- style,
1061
- psuedos,
1062
- classNames
1063
- };
1064
- }, "getSplitStyles");
1065
- var getSubStyle = /* @__PURE__ */ __name((styleIn, props, staticConfig, internalConfig) => {
1066
- const styleOut = {};
1067
- for (const key in styleIn) {
1068
- const val = styleIn[key];
1069
- const out = staticConfig.propMapper(key, val, props);
1070
- const expanded = out === true || !out ? [[key, val]] : Object.entries(out);
1071
- for (const [skey, sval] of expanded) {
1072
- if (skey in import_helpers3.stylePropsTransform) {
1073
- mergeTransform(styleOut, skey, sval);
1074
- } else {
1075
- styleOut[skey] = sval;
1076
- }
1077
- }
1078
- }
1079
- fixNativeShadow(styleOut, true);
1080
- return styleOut;
1081
- }, "getSubStyle");
1082
- var blacklistProps = __spreadValues(__spreadValues({
1083
- debug: true,
1084
- onPress: true,
1085
- spacing: true,
1086
- hitSlop: true
1087
- }, import_helpers3.validStyles), import_helpers3.stylePropsText);
1088
- var mapTransformKeys = {
1089
- x: "translateX",
1090
- y: "translateY"
1091
- };
1092
- var mergeTransform = /* @__PURE__ */ __name((obj, key, val) => {
1093
- const transform = obj.transform ? Array.isArray(obj.transform) ? obj.transform : [obj.transform] : [];
1094
- transform.push({ [mapTransformKeys[key] || key]: val });
1095
- obj.transform = transform;
1096
- }, "mergeTransform");
1097
-
1098
- // src/helpers/setIfChanged.tsx
1099
- var import_fast_compare = __toModule(require("@dish/fast-compare"));
1100
- var setIfChanged = /* @__PURE__ */ __name((setter, next) => {
1101
- setter((prev) => {
1102
- console.log("should test if this is the right way to check, merge objects??");
1103
- const n = __spreadValues(__spreadValues({}, prev), next);
1104
- if ((0, import_fast_compare.isEqual)(prev, n)) {
1105
- return prev;
1106
- }
1107
- return n;
1108
- });
1109
- }, "setIfChanged");
1110
-
1111
- // src/hooks/useFeatures.tsx
1112
- var import_react10 = __toModule(require("react"));
1113
- var createDefinition = /* @__PURE__ */ __name(({ Component, propNames }) => ({
1114
- isEnabled: (props) => propNames.some((name) => !!props[name]),
1115
- Component
1116
- }), "createDefinition");
1117
- var mediaQueryPropNames = [
1118
- "$xs",
1119
- "$sm",
1120
- "$md",
1121
- "$lg",
1122
- "$xl",
1123
- "$xxl",
1124
- "$pointerCoarse",
1125
- "$hoverNone",
1126
- "$tall",
1127
- "$short",
1128
- "$gtSm",
1129
- "$notXs",
1130
- "$gtMd",
1131
- "$gtLg"
1132
- ];
1133
- var featureDefinitions = {
1134
- measureLayout: createDefinition({
1135
- Component: (props) => {
1136
- console.log("measure", props);
1137
- return null;
1138
- },
1139
- propNames: ["onLayout"]
1140
- }),
1141
- mediaQuery: createDefinition({
1142
- Component: (props) => {
1143
- if (isWeb) {
1144
- return;
1145
- }
1146
- const keys = mediaQueryPropNames.flatMap((x) => x in props ? x.slice(1) : []);
1147
- useIsomorphicLayoutEffect(() => {
1148
- for (const key of keys) {
1149
- addMediaQueryListener(key, props._utils.forceUpdate);
1150
- }
1151
- return () => {
1152
- for (const key of keys) {
1153
- removeMediaQueryListener(key, props._utils.forceUpdate);
1154
- }
1155
- };
1156
- }, [keys.join(",")]);
1157
- return null;
1158
- },
1159
- propNames: mediaQueryPropNames
1160
- })
1161
- };
1162
- var featureNames = Object.keys(featureDefinitions);
1163
- var numFeatures = featureNames.length;
1164
- var useFeatures = /* @__PURE__ */ __name((props, utils) => {
1165
- const features = [];
1166
- for (let i = 0; i < numFeatures; i++) {
1167
- const name = featureNames[i];
1168
- const { isEnabled, Component } = featureDefinitions[name];
1169
- if (isEnabled(props) && Component) {
1170
- features.push(/* @__PURE__ */ import_react10.default.createElement(Component, __spreadProps(__spreadValues({
1171
- key: name
1172
- }, props), {
1173
- _utils: utils
1174
- })));
1175
- }
1176
- }
1177
- return features;
1178
- }, "useFeatures");
1179
-
1180
- // src/hooks/usePressable.tsx
1181
- var import_react_native4 = __toModule(require("react-native"));
1182
- var _a3, _b;
1183
- var getPressable = (_b = (_a3 = import_react_native4.Pressable) == null ? void 0 : _a3["type"]) == null ? void 0 : _b["render"];
1184
- var usePressable = /* @__PURE__ */ __name((props) => {
1185
- const out = getPressable(props);
1186
- const _a4 = out.props, { children, style } = _a4, pressableProps = __objRest(_a4, ["children", "style"]);
1187
- return [pressableProps, style];
1188
- }, "usePressable");
1189
-
1190
- // src/createComponent.tsx
1191
- var mouseUps = new Set();
1192
- if (typeof document !== "undefined") {
1193
- document.addEventListener("mouseup", () => {
1194
- mouseUps.forEach((x) => x());
1195
- mouseUps.clear();
1196
- });
1197
- }
1198
- function createComponent(configIn) {
1199
- let staticConfig;
1200
- if ("parsed" in configIn) {
1201
- staticConfig = configIn;
1202
- } else {
1203
- staticConfig = parseStaticConfig(configIn);
1204
- }
1205
- const { defaultProps, Component, validStyles: validStyles3, isText } = staticConfig;
1206
- const validStyleProps = validStyles3 ?? import_helpers4.stylePropsView;
1207
- let splitDefaults;
1208
- let tamaguiConfig;
1209
- let defaultsClassName = "";
1210
- onConfiguredOnce((conf2) => {
1211
- tamaguiConfig = conf2;
1212
- splitDefaults = getSplitStyles(defaultProps, staticConfig, conf2);
1213
- if (splitDefaults.classNames) {
1214
- defaultsClassName += splitDefaults.classNames + " ";
1215
- }
1216
- if (splitDefaults.style) {
1217
- defaultsClassName += addStylesUsingClassname([splitDefaults.style]);
1218
- }
1219
- });
1220
- const component = (0, import_react11.forwardRef)((props, forwardedRef) => {
1221
- const {
1222
- tag,
1223
- hitSlop,
1224
- children,
1225
- pointerEvents,
1226
- onPress,
1227
- onPressIn,
1228
- onPressOut,
1229
- onHoverIn,
1230
- onHoverOut,
1231
- spacing,
1232
- disabled,
1233
- onMouseEnter,
1234
- onMouseLeave,
1235
- hrefAttrs,
1236
- onMoveShouldSetResponder,
1237
- onMoveShouldSetResponderCapture,
1238
- onResponderEnd,
1239
- onResponderGrant,
1240
- onResponderMove,
1241
- onResponderReject,
1242
- onResponderRelease,
1243
- onResponderStart,
1244
- onResponderTerminate,
1245
- onResponderTerminationRequest,
1246
- onScrollShouldSetResponder,
1247
- onScrollShouldSetResponderCapture,
1248
- onSelectionChangeShouldSetResponder,
1249
- onSelectionChangeShouldSetResponderCapture,
1250
- onStartShouldSetResponder,
1251
- onStartShouldSetResponderCapture,
1252
- onMouseDown,
1253
- onClick,
1254
- onLayout
1255
- } = props;
1256
- const forceUpdate = useForceUpdate();
1257
- const features = useFeatures(props, { forceUpdate });
1258
- const manager = (0, import_react11.useContext)(ThemeManagerContext);
1259
- const [state, set_] = (0, import_react11.useState)(() => ({
1260
- hover: false,
1261
- press: false,
1262
- pressIn: false,
1263
- theme: manager.name
1264
- }));
1265
- const set = setIfChanged.bind(null, set_);
1266
- if (process.env.NODE_ENV !== "production" && !isText && isWeb) {
1267
- import_react11.Children.toArray(props.children).forEach((item) => {
1268
- if (typeof item === "string") {
1269
- console.error(`Unexpected text node: ${item}. A text node cannot be a child of a <View>.`);
1270
- }
1271
- });
1272
- }
1273
- const hasTextAncestor = (0, import_react11.useContext)(TextAncestorContext);
1274
- const hostRef = (0, import_react11.useRef)(null);
1275
- if (isWeb) {
1276
- rnw.useResponderEvents(hostRef, {
1277
- onMoveShouldSetResponder,
1278
- onMoveShouldSetResponderCapture,
1279
- onResponderEnd,
1280
- onResponderGrant,
1281
- onResponderMove,
1282
- onResponderReject,
1283
- onResponderRelease,
1284
- onResponderStart,
1285
- onResponderTerminate,
1286
- onResponderTerminationRequest,
1287
- onScrollShouldSetResponder,
1288
- onScrollShouldSetResponderCapture,
1289
- onSelectionChangeShouldSetResponder,
1290
- onSelectionChangeShouldSetResponderCapture,
1291
- onStartShouldSetResponder,
1292
- onStartShouldSetResponderCapture
1293
- });
1294
- }
1295
- const isTracking = (0, import_react11.useRef)(false);
1296
- const { viewProps, psuedos, style, classNames } = getSplitStyles(props, staticConfig, tamaguiConfig);
1297
- const internal = (0, import_react11.useRef)();
1298
- if (!internal.current) {
1299
- internal.current = {
1300
- isMounted: true
1301
- };
1302
- }
1303
- (0, import_react11.useEffect)(() => {
1304
- internal.current.isMounted = true;
1305
- const dispose = manager == null ? void 0 : manager.onChangeTheme((name) => {
1306
- if (isTracking.current) {
1307
- set({ theme: name });
1308
- }
1309
- });
1310
- return () => {
1311
- dispose();
1312
- mouseUps.delete(unPress);
1313
- isTracking.current = false;
1314
- internal.current.isMounted = false;
1315
- };
1316
- }, [manager]);
1317
- const element = isWeb ? !Component || typeof Component === "string" ? tag || Component : Component : Component;
1318
- const ReactView = !isWeb ? import_react_native5.View : element || (hasTextAncestor ? "span" : "div");
1319
- const ReactText = !isWeb ? Text : element || "span";
1320
- const ViewComponent = isText ? ReactText : ReactView;
1321
- const numberOfLines = props["numberOfLines"];
1322
- const selectable = props["selectable"];
1323
- const styles = [
1324
- hasTextAncestor ? viewStyles.inline : null,
1325
- ...isWeb && isText ? [
1326
- numberOfLines != null && numberOfLines > 1 && { WebkitLineClamp: numberOfLines },
1327
- selectable === true && textStyles.selectable,
1328
- selectable === false && textStyles.notSelectable,
1329
- onPress && textStyles.pressable
1330
- ] : [],
1331
- style,
1332
- !isTouchDevice && !disabled && psuedos && state.hover ? psuedos.hoverStyle || null : null,
1333
- !disabled && psuedos && state.press ? psuedos.pressStyle || null : null,
1334
- disabled ? disabledStyle : null
1335
- ];
1336
- const stylesClassNames = addStylesUsingClassname(styles);
1337
- const classList = staticConfig.isText ? [
1338
- defaultsClassName,
1339
- hasTextAncestor === true && cssText.textHasAncestor,
1340
- numberOfLines === 1 && cssText.textOneLine,
1341
- numberOfLines != null && numberOfLines > 1 && cssText.textMultiLine,
1342
- props.className,
1343
- classNames,
1344
- stylesClassNames
1345
- ] : [defaultsClassName, props.className, classNames, stylesClassNames];
1346
- const supportedProps = viewProps;
1347
- if (isWeb) {
1348
- const classListFlat = classList.flat().filter(Boolean).join(" ");
1349
- const className = (0, import_helpers4.concatClassName)(classListFlat);
1350
- if (process.env.NODE_ENV === "development") {
1351
- if (props["debug"]) {
1352
- console.log("className", { styles, stylesClassNames, classList, classListFlat, className });
1353
- }
1354
- }
1355
- supportedProps.className = className;
1356
- } else {
1357
- supportedProps.style = classList;
1358
- }
1359
- if (pointerEvents) {
1360
- supportedProps.pointerEvents = pointerEvents;
1361
- }
1362
- if (isWeb) {
1363
- const platformMethodsRef = rnw.usePlatformMethods(supportedProps);
1364
- const setRef = rnw.useMergeRefs(hostRef, platformMethodsRef, forwardedRef);
1365
- supportedProps.ref = setRef;
1366
- if (props.href != null && hrefAttrs != null) {
1367
- const { download, rel, target } = hrefAttrs;
1368
- if (download != null) {
1369
- supportedProps.download = download;
1370
- }
1371
- if (rel != null) {
1372
- supportedProps.rel = rel;
1373
- }
1374
- if (typeof target === "string") {
1375
- supportedProps.target = target.charAt(0) !== "_" ? "_" + target : target;
1376
- }
1377
- }
1378
- } else {
1379
- if (forwardedRef) {
1380
- supportedProps.ref = forwardedRef;
1381
- }
1382
- }
1383
- const createEl = import_react11.createElement;
1384
- const attachPress = !!(psuedos && psuedos.pressStyle || onPress || onPressOut || onPressIn);
1385
- const attachHover = isWeb && !isTouchDevice && !!(psuedos && psuedos.hoverStyle || onHoverIn || onHoverOut || onMouseEnter || onMouseLeave);
1386
- const shouldAttach = internal.current.hasEverHadEvents || attachPress || attachHover || "pressStyle" in props || "onPress" in props || "onPressIn" in props || "onPressOut" in props || isWeb && ("hoverStyle" in props || "onHoverIn" in props || "onHoverOut" in props || "onMouseEnter" in props || "onMouseLeave" in props);
1387
- if (shouldAttach) {
1388
- internal.current.hasEverHadEvents = true;
1389
- }
1390
- const unPress = (0, import_react11.useCallback)(() => {
1391
- if (!internal.current.isMounted)
1392
- return;
1393
- set({
1394
- press: false,
1395
- pressIn: false
1396
- });
1397
- }, []);
1398
- const events = shouldAttach ? __spreadProps(__spreadValues(__spreadValues({}, !isWeb && {
1399
- onPressOut: (e) => {
1400
- unPress();
1401
- onPressOut == null ? void 0 : onPressOut(e);
1402
- }
1403
- }), isWeb && !isTouchDevice && {
1404
- onMouseEnter: attachHover || attachPress ? (e) => {
1405
- let next = {};
1406
- if (attachHover) {
1407
- next.hover = true;
1408
- }
1409
- if (state.pressIn) {
1410
- next.press = true;
1411
- }
1412
- if (Object.keys(next).length) {
1413
- set(next);
1414
- }
1415
- onHoverIn == null ? void 0 : onHoverIn(e);
1416
- onMouseEnter == null ? void 0 : onMouseEnter(e);
1417
- } : void 0,
1418
- onMouseLeave: attachHover || attachPress ? (e) => {
1419
- let next = {};
1420
- mouseUps.add(unPress);
1421
- if (attachHover) {
1422
- next.hover = false;
1423
- }
1424
- if (state.pressIn) {
1425
- next.press = false;
1426
- next.pressIn = false;
1427
- }
1428
- if (Object.keys(next).length) {
1429
- set(next);
1430
- }
1431
- onHoverOut == null ? void 0 : onHoverOut(e);
1432
- onMouseLeave == null ? void 0 : onMouseLeave(e);
1433
- } : void 0
1434
- }), {
1435
- onMouseDown: attachPress ? (e) => {
1436
- set({
1437
- press: true,
1438
- pressIn: true
1439
- });
1440
- onPressIn == null ? void 0 : onPressIn(e);
1441
- onMouseDown == null ? void 0 : onMouseDown(e);
1442
- } : onPressIn,
1443
- onClick: attachPress ? (e) => {
1444
- e.preventDefault();
1445
- unPress();
1446
- onPressOut == null ? void 0 : onPressOut(e);
1447
- onPress == null ? void 0 : onPress(e);
1448
- onClick == null ? void 0 : onClick(e);
1449
- } : onPressOut
1450
- }) : null;
1451
- if (events) {
1452
- if (typeof ViewComponent !== "string") {
1453
- const [pressProps] = usePressable({
1454
- disabled,
1455
- hitSlop,
1456
- onPressIn: events.onMouseDown,
1457
- onPressOut: events.onPressOut,
1458
- onPress
1459
- });
1460
- Object.assign(supportedProps, pressProps);
1461
- } else {
1462
- Object.assign(supportedProps, events);
1463
- }
1464
- }
1465
- const spacedChildrenEl = spacedChildren({
1466
- children,
1467
- spacing,
1468
- flexDirection: props.flexDirection || (defaultProps == null ? void 0 : defaultProps.flexDirection)
1469
- });
1470
- let content = createEl(ViewComponent, supportedProps, spacedChildrenEl);
1471
- const shouldWrapTextAncestor = isWeb && staticConfig.isText && !hasTextAncestor;
1472
- if (shouldWrapTextAncestor) {
1473
- content = (0, import_react11.createElement)(TextAncestorContext.Provider, { value: true }, content);
1474
- }
1475
- if (process.env.NODE_ENV === "development") {
1476
- if (props["debug"]) {
1477
- supportedProps["debug"] = true;
1478
- console.log(" \u{1F351} props in: ", props);
1479
- console.log(" \u{1F351} props out: ", supportedProps);
1480
- console.log(" \u{1F351} other: ", { ViewComponent, viewProps, styles, psuedos, createEl, content, spacedChildrenEl, staticConfig, splitDefaults, tamaguiConfig });
1481
- }
1482
- }
1483
- return /* @__PURE__ */ import_react11.default.createElement(import_react11.default.Fragment, null, features, content);
1484
- });
1485
- const config = __spreadProps(__spreadValues({
1486
- validStyles: validStyleProps
1487
- }, staticConfig), {
1488
- validPropsExtra: __spreadProps(__spreadValues({}, staticConfig.validPropsExtra), {
1489
- disabled: true,
1490
- fullscreen: true
1491
- })
1492
- });
1493
- component["staticConfig"] = config;
1494
- return component;
1495
- }
1496
- __name(createComponent, "createComponent");
1497
- var Spacer = createComponent({
1498
- defaultProps: stackDefaultStyles,
1499
- variants: {
1500
- size: {
1501
- "...size": (size, { tokens }) => {
1502
- return {
1503
- width: tokens.size[size] ?? size,
1504
- height: tokens.size[size] ?? size
1505
- };
1506
- }
1507
- },
1508
- direction: {
1509
- horizontal: {
1510
- height: 0
1511
- },
1512
- vertical: {
1513
- width: 0
1514
- }
1515
- }
1516
- }
1517
- });
1518
- function spacedChildren({
1519
- children,
1520
- spacing,
1521
- flexDirection
1522
- }) {
1523
- if (!spacing) {
1524
- return children;
1525
- }
1526
- const next = [];
1527
- const childrenList = import_react11.Children.toArray(children);
1528
- const len = childrenList.length;
1529
- if (len === 1) {
1530
- return children;
1531
- }
1532
- const spacer = /* @__PURE__ */ import_react11.default.createElement(Spacer, {
1533
- direction: flexDirection === "row" || flexDirection === "row-reverse" ? "horizontal" : "vertical",
1534
- size: spacing
1535
- });
1536
- for (const [index, child] of childrenList.entries()) {
1537
- next.push(child);
1538
- if (index === len - 1) {
1539
- break;
1540
- }
1541
- const key = `${(child == null ? void 0 : child["key"]) ?? index}`;
1542
- next.push((0, import_react11.createElement)(import_react11.Fragment, { key: key + "_spacer" }, spacer));
1543
- }
1544
- return next;
1545
- }
1546
- __name(spacedChildren, "spacedChildren");
1547
-
1548
- // src/createShorthands.ts
1549
- function createShorthands(shorthands) {
1550
- return Object.freeze(shorthands);
1551
- }
1552
- __name(createShorthands, "createShorthands");
1553
-
1554
- // src/createTokens.ts
1555
- function createTokens(tokens) {
1556
- return setupTokens(tokens);
1557
- }
1558
- __name(createTokens, "createTokens");
1559
- function setupTokens(tokens) {
1560
- return mapTokensToVariables(tokens);
1561
- }
1562
- __name(setupTokens, "setupTokens");
1563
- var mapTokensToVariables = /* @__PURE__ */ __name((tokens, parentPath = "") => {
1564
- const res = {};
1565
- for (const key in tokens) {
1566
- const val = tokens[key];
1567
- const name = parentPath ? `${parentPath}-${key}` : key;
1568
- if (val && typeof val === "object") {
1569
- res[key] = mapTokensToVariables(tokens[key], name);
1570
- } else {
1571
- res[key] = createVariable({ val, name });
1572
- }
1573
- }
1574
- return res;
1575
- }, "mapTokensToVariables");
1576
-
1577
- // src/views/Stack.tsx
1578
- var Stack = createComponent({
1579
- defaultProps: __spreadProps(__spreadValues({}, stackDefaultStyles), {
1580
- flexDirection: "row"
1581
- })
1582
- });
1583
-
1584
- // src/views/Text.tsx
1585
- var Text2 = createComponent({
1586
- isText: true,
1587
- defaultProps: cssTextStyles.text,
1588
- variants: {
1589
- selectable: {
1590
- true: {
1591
- userSelect: "text"
1592
- }
1593
- },
1594
- ellipse: {
1595
- true: isWeb ? {
1596
- display: "inline-block",
1597
- maxWidth: "100%",
1598
- whiteSpace: "nowrap",
1599
- overflow: "hidden",
1600
- textOverflow: "ellipsis"
1601
- } : {
1602
- numberOfLines: 1,
1603
- lineBreakMode: "clip"
1604
- }
1605
- }
1606
- },
1607
- deoptProps: new Set(isWeb ? [""] : ["ellipse"]),
1608
- validPropsExtra: {
1609
- textUnderlineOffset: true
1610
- },
1611
- validStyles: validStylesText
1612
- });
1613
-
1614
- // src/styled.ts
1615
- function styled(Component, _a4) {
1616
- var _b2 = _a4, {
1617
- variants
1618
- } = _b2, defaultProps = __objRest(_b2, [
1619
- "variants"
1620
- ]);
1621
- const staticConfig = Component == null ? void 0 : Component["staticConfig"];
1622
- const ParentComponent = staticConfig ? staticConfig.isText ? Text2 : Stack : Component;
1623
- const config = extendStaticConfig(ParentComponent, {
1624
- variants,
1625
- defaultProps
1626
- });
1627
- const component = createComponent(config);
1628
- Object.defineProperty(component, "name", {
1629
- value: `styled(${typeof Component === "string" ? Component : Component.constructor.name})`,
1630
- writable: false
1631
- });
1632
- return component;
1633
- }
1634
- __name(styled, "styled");
1635
-
1636
- // src/helpers/themeable.tsx
1637
- var import_react14 = __toModule(require("react"));
1638
-
1639
- // src/views/ThemeInverse.tsx
1640
- var import_react13 = __toModule(require("react"));
1641
-
1642
- // src/hooks/useTheme.tsx
1643
- var import_fast_compare2 = __toModule(require("@dish/fast-compare"));
1644
- var import_react12 = __toModule(require("react"));
1645
- var useThemeName = /* @__PURE__ */ __name(() => {
1646
- const parent = (0, import_react12.useContext)(ThemeManagerContext);
1647
- const [name, setName] = (0, import_react12.useState)(parent.name);
1648
- (0, import_react12.useEffect)(() => {
1649
- return parent.onChangeTheme((next) => {
1650
- setName((prev) => {
1651
- if (prev === next)
1652
- return prev;
1653
- return next;
1654
- });
1655
- });
1656
- }, [parent]);
1657
- return name || "light";
1658
- }, "useThemeName");
1659
- var useDefaultThemeName = /* @__PURE__ */ __name(() => {
1660
- return (0, import_react12.useContext)(ThemeContext)[GET_DEFAULT_THEME];
1661
- }, "useDefaultThemeName");
1662
- var useTheme = /* @__PURE__ */ __name(() => {
1663
- const forceUpdate = useForceUpdate();
1664
- const manager = (0, import_react12.useContext)(ThemeManagerContext);
1665
- const themes = (0, import_react12.useContext)(ThemeContext);
1666
- const state = (0, import_react12.useRef)();
1667
- if (!state.current) {
1668
- state.current = {
1669
- uuid: {},
1670
- keys: new Set(),
1671
- isRendering: true
1672
- };
1673
- }
1674
- state.current.isRendering = true;
1675
- useIsomorphicLayoutEffect(() => {
1676
- const st = state.current;
1677
- st.isRendering = false;
1678
- if (!(0, import_fast_compare2.isEqual)(st.keys, manager.keys.get(st.uuid))) {
1679
- manager.track(st.uuid, st.keys);
1680
- }
1681
- });
1682
- (0, import_react12.useEffect)(() => {
1683
- return manager.onUpdate(state.current.uuid, forceUpdate);
1684
- }, []);
1685
- const theme = (manager.name ? themes[manager.name] : themes.light) ?? themes.light;
1686
- return (0, import_react12.useMemo)(() => {
1687
- return new Proxy(theme, {
1688
- get(_, key) {
1689
- const name = manager.name;
1690
- if (!name) {
1691
- return Reflect.get(_, key);
1692
- }
1693
- let activeTheme = themes[name];
1694
- if (!activeTheme) {
1695
- console.error("No theme by name", name, "only:", themes, "keeping current theme");
1696
- activeTheme = theme;
1697
- }
1698
- const val = activeTheme[key];
1699
- if (process.env.NODE_ENV === "development") {
1700
- if (typeof val === "undefined") {
1701
- if (typeof key === "string") {
1702
- try {
1703
- if (!activeTheme) {
1704
- throw new Error(`No theme! ${name} in ${Object.keys(themes)}`);
1705
- }
1706
- if (!val) {
1707
- throw new Error(`No theme value "${String(key)}" in: ${Object.keys(activeTheme)}`);
1708
- }
1709
- } catch (err) {
1710
- console.error(err.message, err.stack);
1711
- }
1712
- }
1713
- }
1714
- return Reflect.get(_, key);
1715
- }
1716
- if (state.current.isRendering) {
1717
- state.current.keys.add(key);
1718
- }
1719
- return val;
1720
- }
1721
- });
1722
- }, []);
1723
- }, "useTheme");
1724
-
1725
- // src/views/ThemeInverse.tsx
1726
- var inversions = {
1727
- light: "dark",
1728
- dark: "light"
1729
- };
1730
- function setThemeInversions(next) {
1731
- inversions = next;
1732
- }
1733
- __name(setThemeInversions, "setThemeInversions");
1734
- var ThemeInverse = /* @__PURE__ */ __name((props) => {
1735
- const themeName = useThemeName();
1736
- const defaultTheme = useDefaultThemeName();
1737
- const name = inversions[themeName] || inversions[defaultTheme] || null;
1738
- console.log("todo fixme invert", { themeName, defaultTheme, next: name });
1739
- return /* @__PURE__ */ import_react13.default.createElement(Theme, {
1740
- name
1741
- }, props.children);
1742
- }, "ThemeInverse");
1743
-
1744
- // src/helpers/themeable.tsx
1745
- var themeable = /* @__PURE__ */ __name(function graphql(component) {
1746
- const withThemeComponent = (0, import_react14.forwardRef)(/* @__PURE__ */ __name(function WithTheme(_a4, ref) {
1747
- var _b2 = _a4, { themeInverse } = _b2, rest = __objRest(_b2, ["themeInverse"]);
1748
- const el = import_react14.default.createElement(component, __spreadProps(__spreadValues({}, rest), { ref }));
1749
- if (themeInverse) {
1750
- return /* @__PURE__ */ import_react14.default.createElement(ThemeInverse, null, el);
1751
- }
1752
- if (rest.theme) {
1753
- return /* @__PURE__ */ import_react14.default.createElement(Theme, {
1754
- name: rest.theme || null
1755
- }, el);
1756
- }
1757
- return el;
1758
- }, "WithTheme"));
1759
- const withTheme = withThemeComponent;
1760
- withTheme.displayName = `Themed(${(component == null ? void 0 : component.displayName) || (component == null ? void 0 : component.name) || "Anonymous"})`;
1761
- return withTheme;
1762
- }, "graphql");
1763
-
1764
- // src/views/Animated.tsx
1765
- var import_react15 = __toModule(require("react"));
1766
- var import_react_native6 = __toModule(require("react-native"));
1767
- var defaultAnimation = {
1768
- from: {
1769
- opacity: 0,
1770
- translateY: 12
1771
- },
1772
- to: {
1773
- opacity: 1,
1774
- translateY: 0
1775
- }
1776
- };
1777
- var styleKeys = {
1778
- opacity: true,
1779
- backgroundColor: true,
1780
- borderColor: true
1781
- };
1782
- var AnimatedStack = /* @__PURE__ */ __name((_a4) => {
1783
- var _b2 = _a4, {
1784
- animateState = "in",
1785
- animation = defaultAnimation,
1786
- velocity = 6,
1787
- children,
1788
- animated
1789
- } = _b2, props = __objRest(_b2, [
1790
- "animateState",
1791
- "animation",
1792
- "velocity",
1793
- "children",
1794
- "animated"
1795
- ]);
1796
- const driver = useConstant(() => {
1797
- return new import_react_native6.Animated.Value(0);
1798
- });
1799
- const animatedProps = (0, import_react15.useMemo)(() => {
1800
- if (!animated) {
1801
- return null;
1802
- }
1803
- const styleProps = {};
1804
- const transform = [];
1805
- for (const key in animation.from) {
1806
- const fromVal = animation.from[key];
1807
- const toVal = animation.to[key];
1808
- const interpolatedVal = driver.interpolate({
1809
- inputRange: [0, 1],
1810
- outputRange: [fromVal, toVal]
1811
- });
1812
- if (styleKeys[key]) {
1813
- styleProps[key] = interpolatedVal;
1814
- } else {
1815
- transform.push({
1816
- [key]: interpolatedVal
1817
- });
1818
- }
1819
- }
1820
- return __spreadValues({ transform }, styleProps);
1821
- }, [animated, animateState]);
1822
- useIsomorphicLayoutEffect(() => {
1823
- if (!animated) {
1824
- return;
1825
- }
1826
- import_react_native6.Animated.spring(driver, {
1827
- useNativeDriver: true,
1828
- velocity,
1829
- toValue: animateState === "in" ? 1 : 0
1830
- }).start();
1831
- }, [animated, animateState]);
1832
- const childrenMemo = (0, import_react15.useMemo)(() => children, [children]);
1833
- return /* @__PURE__ */ import_react15.default.createElement(Stack, __spreadValues(__spreadValues({
1834
- animated
1835
- }, props), animatedProps), childrenMemo);
1836
- }, "AnimatedStack");
1837
- //# sourceMappingURL=index.cjs.map