@tamagui/static 1.61.2 → 1.62.0

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 (290) hide show
  1. package/dist/cjs/constants.js +8 -19
  2. package/dist/cjs/constants.js.map +1 -1
  3. package/dist/cjs/constants.native.js +43 -0
  4. package/dist/cjs/constants.native.js.map +6 -0
  5. package/dist/cjs/extractor/accessSafe.js +8 -14
  6. package/dist/cjs/extractor/accessSafe.js.map +1 -1
  7. package/dist/cjs/extractor/accessSafe.native.js +52 -0
  8. package/dist/cjs/extractor/accessSafe.native.js.map +6 -0
  9. package/dist/cjs/extractor/babelParse.js +9 -17
  10. package/dist/cjs/extractor/babelParse.js.map +1 -1
  11. package/dist/cjs/extractor/babelParse.native.js +65 -0
  12. package/dist/cjs/extractor/babelParse.native.js.map +6 -0
  13. package/dist/cjs/extractor/buildClassName.js +44 -67
  14. package/dist/cjs/extractor/buildClassName.js.map +1 -1
  15. package/dist/cjs/extractor/buildClassName.native.js +78 -0
  16. package/dist/cjs/extractor/buildClassName.native.js.map +6 -0
  17. package/dist/cjs/extractor/bundle.js +44 -79
  18. package/dist/cjs/extractor/bundle.js.map +1 -1
  19. package/dist/cjs/extractor/bundle.native.js +118 -0
  20. package/dist/cjs/extractor/bundle.native.js.map +6 -0
  21. package/dist/cjs/extractor/bundleConfig.js +107 -204
  22. package/dist/cjs/extractor/bundleConfig.js.map +1 -1
  23. package/dist/cjs/extractor/bundleConfig.native.js +316 -0
  24. package/dist/cjs/extractor/bundleConfig.native.js.map +6 -0
  25. package/dist/cjs/extractor/createEvaluator.js +13 -41
  26. package/dist/cjs/extractor/createEvaluator.js.map +1 -1
  27. package/dist/cjs/extractor/createEvaluator.native.js +60 -0
  28. package/dist/cjs/extractor/createEvaluator.native.js.map +6 -0
  29. package/dist/cjs/extractor/createExtractor.js +497 -1128
  30. package/dist/cjs/extractor/createExtractor.js.map +2 -2
  31. package/dist/cjs/extractor/createExtractor.native.js +1067 -0
  32. package/dist/cjs/extractor/createExtractor.native.js.map +6 -0
  33. package/dist/cjs/extractor/ensureImportingConcat.js +12 -23
  34. package/dist/cjs/extractor/ensureImportingConcat.js.map +1 -1
  35. package/dist/cjs/extractor/ensureImportingConcat.native.js +55 -0
  36. package/dist/cjs/extractor/ensureImportingConcat.native.js.map +6 -0
  37. package/dist/cjs/extractor/esbuildAliasPlugin.js +40 -0
  38. package/dist/cjs/extractor/esbuildAliasPlugin.js.map +6 -0
  39. package/dist/cjs/extractor/esbuildAliasPlugin.native.js +41 -0
  40. package/dist/cjs/extractor/esbuildAliasPlugin.native.js.map +6 -0
  41. package/dist/cjs/extractor/evaluateAstNode.js +67 -95
  42. package/dist/cjs/extractor/evaluateAstNode.js.map +1 -1
  43. package/dist/cjs/extractor/evaluateAstNode.native.js +104 -0
  44. package/dist/cjs/extractor/evaluateAstNode.native.js.map +6 -0
  45. package/dist/cjs/extractor/extractHelpers.js +43 -123
  46. package/dist/cjs/extractor/extractHelpers.js.map +1 -1
  47. package/dist/cjs/extractor/extractHelpers.native.js +131 -0
  48. package/dist/cjs/extractor/extractHelpers.native.js.map +6 -0
  49. package/dist/cjs/extractor/extractMediaStyle.js +42 -110
  50. package/dist/cjs/extractor/extractMediaStyle.js.map +1 -1
  51. package/dist/cjs/extractor/extractMediaStyle.native.js +127 -0
  52. package/dist/cjs/extractor/extractMediaStyle.native.js.map +6 -0
  53. package/dist/cjs/extractor/extractToClassNames.js +134 -254
  54. package/dist/cjs/extractor/extractToClassNames.js.map +1 -1
  55. package/dist/cjs/extractor/extractToClassNames.native.js +304 -0
  56. package/dist/cjs/extractor/extractToClassNames.native.js.map +6 -0
  57. package/dist/cjs/extractor/findTopmostFunction.js +9 -17
  58. package/dist/cjs/extractor/findTopmostFunction.js.map +1 -1
  59. package/dist/cjs/extractor/findTopmostFunction.native.js +37 -0
  60. package/dist/cjs/extractor/findTopmostFunction.native.js.map +6 -0
  61. package/dist/cjs/extractor/generateTamaguiStudioConfig.js +34 -78
  62. package/dist/cjs/extractor/generateTamaguiStudioConfig.js.map +1 -1
  63. package/dist/cjs/extractor/generateTamaguiStudioConfig.native.js +120 -0
  64. package/dist/cjs/extractor/generateTamaguiStudioConfig.native.js.map +6 -0
  65. package/dist/cjs/extractor/generatedUid.js +14 -28
  66. package/dist/cjs/extractor/generatedUid.js.map +1 -1
  67. package/dist/cjs/extractor/generatedUid.native.js +47 -0
  68. package/dist/cjs/extractor/generatedUid.native.js.map +6 -0
  69. package/dist/cjs/extractor/getPrefixLogs.js +6 -10
  70. package/dist/cjs/extractor/getPrefixLogs.js.map +1 -1
  71. package/dist/cjs/extractor/getPrefixLogs.native.js +29 -0
  72. package/dist/cjs/extractor/getPrefixLogs.native.js.map +6 -0
  73. package/dist/cjs/extractor/getPropValueFromAttributes.js +21 -42
  74. package/dist/cjs/extractor/getPropValueFromAttributes.js.map +1 -1
  75. package/dist/cjs/extractor/getPropValueFromAttributes.native.js +70 -0
  76. package/dist/cjs/extractor/getPropValueFromAttributes.native.js.map +6 -0
  77. package/dist/cjs/extractor/getSourceModule.js +23 -57
  78. package/dist/cjs/extractor/getSourceModule.js.map +1 -1
  79. package/dist/cjs/extractor/getSourceModule.native.js +71 -0
  80. package/dist/cjs/extractor/getSourceModule.native.js.map +6 -0
  81. package/dist/cjs/extractor/getStaticBindingsForScope.js +42 -116
  82. package/dist/cjs/extractor/getStaticBindingsForScope.js.map +1 -1
  83. package/dist/cjs/extractor/getStaticBindingsForScope.native.js +153 -0
  84. package/dist/cjs/extractor/getStaticBindingsForScope.native.js.map +6 -0
  85. package/dist/cjs/extractor/getTamaguiConfigPathFromOptionsConfig.js +6 -13
  86. package/dist/cjs/extractor/getTamaguiConfigPathFromOptionsConfig.js.map +1 -1
  87. package/dist/cjs/extractor/getTamaguiConfigPathFromOptionsConfig.native.js +29 -0
  88. package/dist/cjs/extractor/getTamaguiConfigPathFromOptionsConfig.native.js.map +6 -0
  89. package/dist/cjs/extractor/hoistClassNames.js +16 -30
  90. package/dist/cjs/extractor/hoistClassNames.js.map +1 -1
  91. package/dist/cjs/extractor/hoistClassNames.native.js +66 -0
  92. package/dist/cjs/extractor/hoistClassNames.native.js.map +6 -0
  93. package/dist/cjs/extractor/literalToAst.js +32 -53
  94. package/dist/cjs/extractor/literalToAst.js.map +1 -1
  95. package/dist/cjs/extractor/literalToAst.native.js +96 -0
  96. package/dist/cjs/extractor/literalToAst.native.js.map +6 -0
  97. package/dist/cjs/extractor/loadFile.js +4 -11
  98. package/dist/cjs/extractor/loadFile.js.map +1 -1
  99. package/dist/cjs/extractor/loadFile.native.js +15 -0
  100. package/dist/cjs/extractor/loadFile.native.js.map +6 -0
  101. package/dist/cjs/extractor/loadTamagui.js +76 -147
  102. package/dist/cjs/extractor/loadTamagui.js.map +1 -1
  103. package/dist/cjs/extractor/loadTamagui.native.js +240 -0
  104. package/dist/cjs/extractor/loadTamagui.native.js.map +6 -0
  105. package/dist/cjs/extractor/logLines.js +12 -22
  106. package/dist/cjs/extractor/logLines.js.map +1 -1
  107. package/dist/cjs/extractor/logLines.native.js +35 -0
  108. package/dist/cjs/extractor/logLines.native.js.map +6 -0
  109. package/dist/cjs/extractor/normalizeTernaries.js +27 -54
  110. package/dist/cjs/extractor/normalizeTernaries.js.map +1 -1
  111. package/dist/cjs/extractor/normalizeTernaries.native.js +64 -0
  112. package/dist/cjs/extractor/normalizeTernaries.native.js.map +6 -0
  113. package/dist/cjs/extractor/propsToFontFamilyCache.js +6 -11
  114. package/dist/cjs/extractor/propsToFontFamilyCache.js.map +1 -1
  115. package/dist/cjs/extractor/propsToFontFamilyCache.native.js +41 -0
  116. package/dist/cjs/extractor/propsToFontFamilyCache.native.js.map +6 -0
  117. package/dist/cjs/extractor/removeUnusedHooks.js +25 -56
  118. package/dist/cjs/extractor/removeUnusedHooks.js.map +1 -1
  119. package/dist/cjs/extractor/removeUnusedHooks.native.js +80 -0
  120. package/dist/cjs/extractor/removeUnusedHooks.native.js.map +6 -0
  121. package/dist/cjs/extractor/timer.js +9 -20
  122. package/dist/cjs/extractor/timer.js.map +1 -1
  123. package/dist/cjs/extractor/timer.native.js +43 -0
  124. package/dist/cjs/extractor/timer.native.js.map +6 -0
  125. package/dist/cjs/extractor/validHTMLAttributes.js +51 -55
  126. package/dist/cjs/extractor/validHTMLAttributes.js.map +1 -1
  127. package/dist/cjs/extractor/validHTMLAttributes.native.js +73 -0
  128. package/dist/cjs/extractor/validHTMLAttributes.native.js.map +6 -0
  129. package/dist/cjs/getPragmaOptions.js +12 -38
  130. package/dist/cjs/getPragmaOptions.js.map +1 -1
  131. package/dist/cjs/getPragmaOptions.native.js +43 -0
  132. package/dist/cjs/getPragmaOptions.native.js.map +6 -0
  133. package/dist/cjs/helpers/memoize.js +10 -19
  134. package/dist/cjs/helpers/memoize.js.map +1 -1
  135. package/dist/cjs/helpers/memoize.native.js +38 -0
  136. package/dist/cjs/helpers/memoize.native.js.map +6 -0
  137. package/dist/cjs/helpers/requireTamaguiCore.js +29 -0
  138. package/dist/cjs/helpers/requireTamaguiCore.js.map +6 -0
  139. package/dist/cjs/helpers/requireTamaguiCore.native.js +30 -0
  140. package/dist/cjs/helpers/requireTamaguiCore.native.js.map +6 -0
  141. package/dist/cjs/index.js +7 -35
  142. package/dist/cjs/index.js.map +1 -1
  143. package/dist/cjs/index.native.js +21 -0
  144. package/dist/cjs/index.native.js.map +6 -0
  145. package/dist/cjs/registerRequire.js +93 -0
  146. package/dist/cjs/registerRequire.js.map +6 -0
  147. package/dist/cjs/registerRequire.native.js +94 -0
  148. package/dist/cjs/registerRequire.native.js.map +6 -0
  149. package/dist/cjs/setup.js +2 -0
  150. package/dist/cjs/setup.js.map +6 -0
  151. package/dist/cjs/setup.native.js +3 -0
  152. package/dist/cjs/setup.native.js.map +6 -0
  153. package/dist/cjs/static.js +41 -0
  154. package/dist/cjs/static.js.map +6 -0
  155. package/dist/cjs/static.native.js +42 -0
  156. package/dist/cjs/static.native.js.map +6 -0
  157. package/dist/cjs/types.js +3 -6
  158. package/dist/cjs/types.js.map +1 -1
  159. package/dist/cjs/types.native.js +15 -0
  160. package/dist/cjs/types.native.js.map +6 -0
  161. package/dist/cjs/webpackPlugin.js +5 -9
  162. package/dist/cjs/webpackPlugin.js.map +1 -1
  163. package/dist/cjs/webpackPlugin.native.js +32 -0
  164. package/dist/cjs/webpackPlugin.native.js.map +6 -0
  165. package/dist/esm/constants.js +1 -6
  166. package/dist/esm/constants.js.map +1 -1
  167. package/dist/esm/extractor/accessSafe.js +1 -1
  168. package/dist/esm/extractor/accessSafe.js.map +1 -1
  169. package/dist/esm/extractor/babelParse.js +2 -4
  170. package/dist/esm/extractor/babelParse.js.map +1 -1
  171. package/dist/esm/extractor/buildClassName.js +37 -54
  172. package/dist/esm/extractor/buildClassName.js.map +1 -1
  173. package/dist/esm/extractor/bundle.js +36 -60
  174. package/dist/esm/extractor/bundle.js.map +1 -1
  175. package/dist/esm/extractor/bundleConfig.js +100 -180
  176. package/dist/esm/extractor/bundleConfig.js.map +1 -1
  177. package/dist/esm/extractor/createEvaluator.js +5 -22
  178. package/dist/esm/extractor/createEvaluator.js.map +1 -1
  179. package/dist/esm/extractor/createExtractor.js +484 -1098
  180. package/dist/esm/extractor/createExtractor.js.map +2 -2
  181. package/dist/esm/extractor/ensureImportingConcat.js +5 -10
  182. package/dist/esm/extractor/ensureImportingConcat.js.map +1 -1
  183. package/dist/esm/extractor/esbuildAliasPlugin.js +20 -0
  184. package/dist/esm/extractor/esbuildAliasPlugin.js.map +6 -0
  185. package/dist/esm/extractor/evaluateAstNode.js +60 -82
  186. package/dist/esm/extractor/evaluateAstNode.js.map +1 -1
  187. package/dist/esm/extractor/extractHelpers.js +35 -105
  188. package/dist/esm/extractor/extractHelpers.js.map +1 -1
  189. package/dist/esm/extractor/extractMediaStyle.js +35 -97
  190. package/dist/esm/extractor/extractMediaStyle.js.map +1 -1
  191. package/dist/esm/extractor/extractToClassNames.js +126 -224
  192. package/dist/esm/extractor/extractToClassNames.js.map +1 -1
  193. package/dist/esm/extractor/findTopmostFunction.js +4 -8
  194. package/dist/esm/extractor/findTopmostFunction.js.map +1 -1
  195. package/dist/esm/extractor/generateTamaguiStudioConfig.js +25 -59
  196. package/dist/esm/extractor/generateTamaguiStudioConfig.js.map +1 -1
  197. package/dist/esm/extractor/generatedUid.js +7 -15
  198. package/dist/esm/extractor/generatedUid.js.map +1 -1
  199. package/dist/esm/extractor/getPrefixLogs.js +1 -1
  200. package/dist/esm/extractor/getPrefixLogs.js.map +1 -1
  201. package/dist/esm/extractor/getPropValueFromAttributes.js +13 -26
  202. package/dist/esm/extractor/getPropValueFromAttributes.js.map +1 -1
  203. package/dist/esm/extractor/getSourceModule.js +16 -44
  204. package/dist/esm/extractor/getSourceModule.js.map +1 -1
  205. package/dist/esm/extractor/getStaticBindingsForScope.js +34 -98
  206. package/dist/esm/extractor/getStaticBindingsForScope.js.map +1 -1
  207. package/dist/esm/extractor/getTamaguiConfigPathFromOptionsConfig.js +1 -4
  208. package/dist/esm/extractor/getTamaguiConfigPathFromOptionsConfig.js.map +1 -1
  209. package/dist/esm/extractor/hoistClassNames.js +9 -17
  210. package/dist/esm/extractor/hoistClassNames.js.map +1 -1
  211. package/dist/esm/extractor/literalToAst.js +25 -40
  212. package/dist/esm/extractor/literalToAst.js.map +1 -1
  213. package/dist/esm/extractor/loadFile.js +4 -10
  214. package/dist/esm/extractor/loadFile.js.map +1 -1
  215. package/dist/esm/extractor/loadTamagui.js +69 -124
  216. package/dist/esm/extractor/loadTamagui.js.map +1 -1
  217. package/dist/esm/extractor/logLines.js +7 -13
  218. package/dist/esm/extractor/logLines.js.map +1 -1
  219. package/dist/esm/extractor/normalizeTernaries.js +19 -38
  220. package/dist/esm/extractor/normalizeTernaries.js.map +1 -1
  221. package/dist/esm/extractor/propsToFontFamilyCache.js +1 -2
  222. package/dist/esm/extractor/propsToFontFamilyCache.js.map +1 -1
  223. package/dist/esm/extractor/removeUnusedHooks.js +18 -43
  224. package/dist/esm/extractor/removeUnusedHooks.js.map +1 -1
  225. package/dist/esm/extractor/timer.js +4 -11
  226. package/dist/esm/extractor/timer.js.map +1 -1
  227. package/dist/esm/extractor/validHTMLAttributes.js +46 -46
  228. package/dist/esm/getPragmaOptions.js +7 -29
  229. package/dist/esm/getPragmaOptions.js.map +1 -1
  230. package/dist/esm/helpers/memoize.js +5 -10
  231. package/dist/esm/helpers/memoize.js.map +1 -1
  232. package/dist/esm/helpers/requireTamaguiCore.js +9 -0
  233. package/dist/esm/helpers/requireTamaguiCore.js.map +6 -0
  234. package/dist/esm/index.js +2 -14
  235. package/dist/esm/index.js.map +1 -1
  236. package/dist/esm/registerRequire.js +73 -0
  237. package/dist/esm/registerRequire.js.map +6 -0
  238. package/dist/esm/setup.js +2 -0
  239. package/dist/esm/setup.js.map +6 -0
  240. package/dist/esm/static.js +15 -0
  241. package/dist/esm/static.js.map +6 -0
  242. package/package.json +15 -15
  243. package/src/extractor/bundle.ts +12 -10
  244. package/src/extractor/bundleConfig.ts +25 -20
  245. package/src/extractor/createEvaluator.ts +0 -16
  246. package/src/extractor/createExtractor.ts +12 -9
  247. package/src/extractor/esbuildAliasPlugin.ts +40 -0
  248. package/src/extractor/extractMediaStyle.ts +3 -5
  249. package/src/extractor/extractToClassNames.ts +2 -1
  250. package/src/extractor/generateTamaguiStudioConfig.ts +3 -1
  251. package/src/extractor/loadTamagui.ts +26 -22
  252. package/src/helpers/requireTamaguiCore.ts +13 -0
  253. package/src/index.ts +2 -9
  254. package/src/registerRequire.ts +156 -0
  255. package/src/setup.ts +1 -0
  256. package/src/static.ts +9 -0
  257. package/src/types.ts +3 -1
  258. package/types/extractor/bundle.d.ts +2 -2
  259. package/types/extractor/bundle.d.ts.map +1 -1
  260. package/types/extractor/bundleConfig.d.ts.map +1 -1
  261. package/types/extractor/createEvaluator.d.ts.map +1 -1
  262. package/types/extractor/createExtractor.d.ts +1 -1
  263. package/types/extractor/createExtractor.d.ts.map +1 -1
  264. package/types/extractor/esbuildAliasPlugin.d.ts +18 -0
  265. package/types/extractor/esbuildAliasPlugin.d.ts.map +1 -0
  266. package/types/extractor/extractMediaStyle.d.ts +1 -1
  267. package/types/extractor/extractMediaStyle.d.ts.map +1 -1
  268. package/types/extractor/extractToClassNames.d.ts.map +1 -1
  269. package/types/extractor/generateTamaguiStudioConfig.d.ts.map +1 -1
  270. package/types/extractor/loadTamagui.d.ts +2 -2
  271. package/types/extractor/loadTamagui.d.ts.map +1 -1
  272. package/types/helpers/requireTamaguiCore.d.ts +3 -0
  273. package/types/helpers/requireTamaguiCore.d.ts.map +1 -0
  274. package/types/index.d.ts +2 -9
  275. package/types/index.d.ts.map +1 -1
  276. package/types/registerRequire.d.ts +7 -0
  277. package/types/registerRequire.d.ts.map +1 -0
  278. package/types/setup.d.ts +2 -0
  279. package/types/setup.d.ts.map +1 -0
  280. package/types/static.d.ts +10 -0
  281. package/types/static.d.ts.map +1 -0
  282. package/types/types.d.ts +2 -1
  283. package/types/types.d.ts.map +1 -1
  284. package/dist/cjs/require.js +0 -125
  285. package/dist/cjs/require.js.map +0 -6
  286. package/dist/esm/require.js +0 -100
  287. package/dist/esm/require.js.map +0 -6
  288. package/src/require.ts +0 -150
  289. package/types/require.d.ts +0 -3
  290. package/types/require.d.ts.map +0 -1
@@ -1,16 +1,9 @@
1
1
  import { basename, relative } from "path";
2
2
  import traverse from "@babel/traverse";
3
3
  import * as t from "@babel/types";
4
- import {
5
- expandStylesAndRemoveNullishValues,
6
- getSplitStyles,
7
- mediaQueryConfig,
8
- propMapper,
9
- proxyThemeVariables,
10
- pseudoDescriptors
11
- } from "@tamagui/core-node";
12
4
  import { createDOMProps } from "react-native-web-internals";
13
5
  import { FAILED_EVAL } from "../constants";
6
+ import { requireTamaguiCore } from "../helpers/requireTamaguiCore";
14
7
  import { createEvaluator, createSafeEvaluator } from "./createEvaluator";
15
8
  import { evaluateAstNode } from "./evaluateAstNode";
16
9
  import {
@@ -34,63 +27,46 @@ import { removeUnusedHooks } from "./removeUnusedHooks";
34
27
  import { timer } from "./timer";
35
28
  import { validHTMLAttributes } from "./validHTMLAttributes";
36
29
  const UNTOUCHED_PROPS = {
37
- key: true,
38
- style: true,
39
- className: true
40
- };
41
- const INLINE_EXTRACTABLE = {
30
+ key: !0,
31
+ style: !0,
32
+ className: !0
33
+ }, INLINE_EXTRACTABLE = {
42
34
  ref: "ref",
43
35
  key: "key",
44
- ...process.env.TAMAGUI_TARGET === "web" && {
45
- onPress: "onClick",
46
- onHoverIn: "onMouseEnter",
47
- onHoverOut: "onMouseLeave",
48
- onPressIn: "onMouseDown",
49
- onPressOut: "onMouseUp"
50
- }
51
- };
52
- const validHooks = {
53
- useMedia: true,
54
- useTheme: true
55
- };
56
- const createTernary = (x) => x;
57
- let hasLoggedBaseInfo = false;
36
+ onPress: "onClick",
37
+ onHoverIn: "onMouseEnter",
38
+ onHoverOut: "onMouseLeave",
39
+ onPressIn: "onMouseDown",
40
+ onPressOut: "onMouseUp"
41
+ }, validHooks = {
42
+ useMedia: !0,
43
+ useTheme: !0
44
+ }, createTernary = (x) => x;
45
+ let hasLoggedBaseInfo = !1;
58
46
  function isFullyDisabled(props) {
59
47
  return props.disableExtraction && props.disableDebugAttr;
60
48
  }
61
49
  function createExtractor({ logger = console } = { logger: console }) {
62
- if (!process.env.TAMAGUI_TARGET) {
63
- console.warn('\u26A0\uFE0F Please set process.env.TAMAGUI_TARGET to either "web" or "native"');
64
- process.exit(1);
65
- }
66
50
  const componentState = {
67
- focus: false,
68
- hover: false,
69
- unmounted: true,
70
- press: false,
71
- pressIn: false
72
- };
73
- const styleProps = {
74
- resolveVariablesAs: process.env.TAMAGUI_TARGET === "native" ? "value" : "variable",
75
- noClassNames: false,
76
- isAnimated: false
77
- };
78
- const shouldAddDebugProp = (
51
+ focus: !1,
52
+ hover: !1,
53
+ unmounted: !0,
54
+ press: !1,
55
+ pressIn: !1
56
+ }, styleProps = {
57
+ resolveVariablesAs: "variable",
58
+ noClassNames: !1,
59
+ isAnimated: !1
60
+ }, shouldAddDebugProp = (
79
61
  // really basic disable this for next.js because it messes with ssr
80
- !process.env.npm_package_dependencies_next && process.env.TAMAGUI_TARGET !== "native" && process.env.IDENTIFY_TAGS !== "false" && (process.env.NODE_ENV === "development" || process.env.DEBUG || process.env.IDENTIFY_TAGS)
62
+ !process.env.npm_package_dependencies_next && !0 && process.env.IDENTIFY_TAGS !== "false" && (process.env.NODE_ENV === "development" || process.env.DEBUG || process.env.IDENTIFY_TAGS)
81
63
  );
82
64
  let projectInfo = null;
83
65
  function loadSync(props) {
84
- if (isFullyDisabled(props)) {
85
- return null;
86
- }
87
- return projectInfo ||= loadTamaguiSync(props);
66
+ return isFullyDisabled(props) ? null : projectInfo ||= loadTamaguiSync(props);
88
67
  }
89
68
  async function load(props) {
90
- if (isFullyDisabled(props)) {
91
- return null;
92
- }
93
- return projectInfo ||= await loadTamagui(props);
69
+ return isFullyDisabled(props) ? null : projectInfo ||= await loadTamagui(props);
94
70
  }
95
71
  return {
96
72
  options: {
@@ -100,7 +76,7 @@ function createExtractor({ logger = console } = { logger: console }) {
100
76
  loadTamagui: load,
101
77
  loadTamaguiSync: loadSync,
102
78
  getTamagui() {
103
- return projectInfo == null ? void 0 : projectInfo.tamaguiConfig;
79
+ return projectInfo?.tamaguiConfig;
104
80
  },
105
81
  parseSync: (f, props) => {
106
82
  const projectInfo2 = loadSync(props);
@@ -112,11 +88,10 @@ function createExtractor({ logger = console } = { logger: console }) {
112
88
  }
113
89
  };
114
90
  function parseWithConfig({ components, tamaguiConfig }, fileOrPath, options) {
115
- var _a;
116
91
  const {
117
92
  config = "tamagui.config.ts",
118
93
  importsWhitelist = ["constants.js"],
119
- evaluateVars = true,
94
+ evaluateVars = !0,
120
95
  sourcePath = "",
121
96
  onExtractTag,
122
97
  onStyleRule,
@@ -128,183 +103,111 @@ function createExtractor({ logger = console } = { logger: console }) {
128
103
  disableDebugAttr,
129
104
  disableExtractFoundComponents,
130
105
  includeExtensions = [".ts", ".tsx", ".jsx"],
131
- extractStyledDefinitions = false,
106
+ extractStyledDefinitions = !1,
132
107
  prefixLogs,
133
108
  excludeProps,
134
109
  target,
135
110
  ...restProps
136
- } = options;
137
- let shouldPrintDebug = options.shouldPrintDebug || false;
138
- if (disable === true || Array.isArray(disable) && disable.includes(sourcePath)) {
111
+ } = options, {
112
+ expandStylesAndRemoveNullishValues,
113
+ getSplitStyles,
114
+ mediaQueryConfig,
115
+ propMapper,
116
+ proxyThemeVariables,
117
+ pseudoDescriptors
118
+ } = requireTamaguiCore(target === "html" ? "web" : "native");
119
+ let shouldPrintDebug = options.shouldPrintDebug || !1;
120
+ if (disable === !0 || Array.isArray(disable) && disable.includes(sourcePath))
139
121
  return null;
140
- }
141
- if (!isFullyDisabled(options)) {
142
- if (!components) {
143
- throw new Error(`Must provide components`);
144
- }
145
- }
146
- if (sourcePath && includeExtensions && !includeExtensions.some((ext) => sourcePath.endsWith(ext))) {
147
- if (shouldPrintDebug) {
148
- logger.info(
149
- `Ignoring file due to includeExtensions: ${sourcePath}, includeExtensions: ${includeExtensions.join(
150
- ", "
151
- )}`
152
- );
153
- }
154
- return null;
155
- }
122
+ if (!isFullyDisabled(options) && !components)
123
+ throw new Error("Must provide components");
124
+ if (sourcePath && includeExtensions && !includeExtensions.some((ext) => sourcePath.endsWith(ext)))
125
+ return shouldPrintDebug && logger.info(
126
+ `Ignoring file due to includeExtensions: ${sourcePath}, includeExtensions: ${includeExtensions.join(
127
+ ", "
128
+ )}`
129
+ ), null;
156
130
  function isValidStyleKey(name, staticConfig) {
157
- var _a2, _b, _c;
158
- if (!projectInfo) {
159
- throw new Error(`Tamagui extractor not loaded yet`);
160
- }
161
- if (target === "native" && name[0] === "$" && mediaQueryConfig[name.slice(1)]) {
162
- return false;
163
- }
164
- return !!(((_a2 = staticConfig.validStyles) == null ? void 0 : _a2[name]) || pseudoDescriptors[name] || // dont disable variants or else you lose many things flattening
165
- ((_b = staticConfig.variants) == null ? void 0 : _b[name]) || ((_c = projectInfo == null ? void 0 : projectInfo.tamaguiConfig) == null ? void 0 : _c.shorthands[name]) || (name[0] === "$" ? !!mediaQueryConfig[name.slice(1)] : false));
131
+ if (!projectInfo)
132
+ throw new Error("Tamagui extractor not loaded yet");
133
+ return target === "native" && name[0] === "$" && mediaQueryConfig[name.slice(1)] ? !1 : !!(staticConfig.validStyles?.[name] || pseudoDescriptors[name] || // dont disable variants or else you lose many things flattening
134
+ staticConfig.variants?.[name] || projectInfo?.tamaguiConfig?.shorthands[name] || name[0] === "$" && mediaQueryConfig[name.slice(1)]);
166
135
  }
167
- const isTargetingHTML = target === "html";
168
- const ogDebug = shouldPrintDebug;
169
- const tm = timer();
170
- const propsWithFileInfo = {
136
+ const isTargetingHTML = target === "html", ogDebug = shouldPrintDebug, tm = timer(), propsWithFileInfo = {
171
137
  ...options,
172
138
  sourcePath,
173
139
  allLoadedComponents: components ? [...components] : []
174
140
  };
175
- if (!hasLoggedBaseInfo) {
176
- hasLoggedBaseInfo = true;
177
- if (shouldPrintDebug) {
178
- logger.info(
179
- [
180
- "loaded components:",
181
- propsWithFileInfo.allLoadedComponents.map((comp) => Object.keys(comp.nameToInfo).join(", ")).join(", ")
182
- ].join(" ")
183
- );
184
- }
185
- if ((_a = process.env.DEBUG) == null ? void 0 : _a.startsWith("tamagui")) {
186
- logger.info(
187
- [
188
- "loaded:",
189
- JSON.stringify(propsWithFileInfo.allLoadedComponents, null, 2)
190
- ].join("\n")
191
- );
192
- }
193
- }
194
- tm.mark("load-tamagui", !!shouldPrintDebug);
195
- if (!isFullyDisabled(options)) {
196
- if (!(tamaguiConfig == null ? void 0 : tamaguiConfig.themes)) {
197
- console.error(
198
- `\u26D4\uFE0F Error: Missing "themes" in your tamagui.config file, this may be due to duplicated dependency versions. Try out https://github.com/bmish/check-dependency-version-consistency to see if there are mis-matches, or search your lockfile.`
199
- );
200
- console.log(` Got config:`, tamaguiConfig);
201
- process.exit(0);
202
- }
203
- }
204
- const firstThemeName = Object.keys((tamaguiConfig == null ? void 0 : tamaguiConfig.themes) || {})[0];
205
- const firstTheme = (tamaguiConfig == null ? void 0 : tamaguiConfig.themes[firstThemeName]) || {};
206
- if (!firstTheme || typeof firstTheme !== "object") {
207
- console.error(`Missing theme, an error occurred when importing your config`);
208
- console.log(`Got config:`, tamaguiConfig);
209
- console.log(`Looking for theme:`, firstThemeName);
210
- process.exit(0);
211
- }
212
- const proxiedTheme = proxyThemeVariables(firstTheme);
213
- const themeAccessListeners = /* @__PURE__ */ new Set();
214
- const defaultTheme = new Proxy(proxiedTheme, {
141
+ hasLoggedBaseInfo || (hasLoggedBaseInfo = !0, shouldPrintDebug && logger.info(
142
+ [
143
+ "loaded components:",
144
+ propsWithFileInfo.allLoadedComponents.map((comp) => Object.keys(comp.nameToInfo).join(", ")).join(", ")
145
+ ].join(" ")
146
+ ), process.env.DEBUG?.startsWith("tamagui") && logger.info(
147
+ [
148
+ "loaded:",
149
+ JSON.stringify(propsWithFileInfo.allLoadedComponents, null, 2)
150
+ ].join(`
151
+ `)
152
+ )), tm.mark("load-tamagui", !!shouldPrintDebug), isFullyDisabled(options) || tamaguiConfig?.themes || (console.error(
153
+ '\u26D4\uFE0F Error: Missing "themes" in your tamagui.config file, this may be due to duplicated dependency versions. Try out https://github.com/bmish/check-dependency-version-consistency to see if there are mis-matches, or search your lockfile.'
154
+ ), console.log(" Got config:", tamaguiConfig), process.exit(0));
155
+ const firstThemeName = Object.keys(tamaguiConfig?.themes || {})[0], firstTheme = tamaguiConfig?.themes[firstThemeName] || {};
156
+ (!firstTheme || typeof firstTheme != "object") && (console.error("Missing theme, an error occurred when importing your config"), console.log("Got config:", tamaguiConfig), console.log("Looking for theme:", firstThemeName), process.exit(0));
157
+ const proxiedTheme = proxyThemeVariables(firstTheme), themeAccessListeners = /* @__PURE__ */ new Set(), defaultTheme = new Proxy(proxiedTheme, {
215
158
  get(target2, key) {
216
- if (Reflect.has(target2, key)) {
217
- themeAccessListeners.forEach((cb) => cb(String(key)));
218
- }
219
- return Reflect.get(target2, key);
220
- }
221
- });
222
- const body = fileOrPath.type === "Program" ? fileOrPath.get("body") : fileOrPath.program.body;
223
- if (!isFullyDisabled(options)) {
224
- if (Object.keys(components || []).length === 0) {
225
- console.warn(
226
- `Warning: Tamagui didn't find any valid components (DEBUG=tamagui for more)`
227
- );
228
- if (process.env.DEBUG === "tamagui") {
229
- console.log(`components`, Object.keys(components || []), components);
230
- }
159
+ return Reflect.has(target2, key) && themeAccessListeners.forEach((cb) => cb(String(key))), Reflect.get(target2, key);
231
160
  }
232
- }
233
- if (shouldPrintDebug === "verbose") {
234
- logger.info(
235
- `allLoadedComponent modules ${propsWithFileInfo.allLoadedComponents.map((k) => k.moduleName).join(", ")}`
236
- );
237
- }
238
- let doesUseValidImport = false;
239
- let hasImportedTheme = false;
161
+ }), body = fileOrPath.type === "Program" ? fileOrPath.get("body") : fileOrPath.program.body;
162
+ isFullyDisabled(options) || Object.keys(components || []).length === 0 && (console.warn(
163
+ "Warning: Tamagui didn't find any valid components (DEBUG=tamagui for more)"
164
+ ), process.env.DEBUG === "tamagui" && console.log("components", Object.keys(components || []), components)), shouldPrintDebug === "verbose" && logger.info(
165
+ `allLoadedComponent modules ${propsWithFileInfo.allLoadedComponents.map((k) => k.moduleName).join(", ")}`
166
+ );
167
+ let doesUseValidImport = !1, hasImportedTheme = !1;
240
168
  const importDeclarations = [];
241
169
  for (const bodyPath of body) {
242
170
  if (bodyPath.type !== "ImportDeclaration")
243
171
  continue;
244
- const node = "node" in bodyPath ? bodyPath.node : bodyPath;
245
- const moduleName = node.source.value;
246
- const valid = isValidImport(propsWithFileInfo, moduleName);
247
- if (valid) {
248
- importDeclarations.push(node);
249
- }
250
- if (extractStyledDefinitions) {
251
- if (valid) {
252
- if (node.specifiers.some((specifier) => specifier.local.name === "styled")) {
253
- doesUseValidImport = true;
254
- break;
255
- }
256
- }
172
+ const node = "node" in bodyPath ? bodyPath.node : bodyPath, moduleName = node.source.value, valid = isValidImport(propsWithFileInfo, moduleName);
173
+ if (valid && importDeclarations.push(node), extractStyledDefinitions && valid && node.specifiers.some((specifier) => specifier.local.name === "styled")) {
174
+ doesUseValidImport = !0;
175
+ break;
257
176
  }
258
177
  if (valid) {
259
- const names = node.specifiers.map((specifier) => specifier.local.name);
260
- const isValidComponent = names.some(
261
- (name) => Boolean(isValidImport(propsWithFileInfo, moduleName, name) || validHooks[name])
178
+ const names = node.specifiers.map((specifier) => specifier.local.name), isValidComponent = names.some(
179
+ (name) => !!(isValidImport(propsWithFileInfo, moduleName, name) || validHooks[name])
262
180
  );
263
- if (shouldPrintDebug === "verbose") {
264
- logger.info(
265
- ` - import ${isValidComponent ? "\u2705" : "\u21E3"} - ${names.join(
266
- ", "
267
- )} from '${moduleName}' - (valid: ${JSON.stringify(
268
- getValidComponentsPaths(propsWithFileInfo)
269
- )})`
270
- );
271
- }
272
- if (isValidComponent) {
273
- doesUseValidImport = true;
181
+ if (shouldPrintDebug === "verbose" && logger.info(
182
+ ` - import ${isValidComponent ? "\u2705" : "\u21E3"} - ${names.join(
183
+ ", "
184
+ )} from '${moduleName}' - (valid: ${JSON.stringify(
185
+ getValidComponentsPaths(propsWithFileInfo)
186
+ )})`
187
+ ), isValidComponent) {
188
+ doesUseValidImport = !0;
274
189
  break;
275
190
  }
276
191
  }
277
192
  }
278
- if (shouldPrintDebug) {
279
- logger.info(
280
- `${JSON.stringify({ doesUseValidImport, hasImportedTheme }, null, 2)}
193
+ if (shouldPrintDebug && logger.info(
194
+ `${JSON.stringify({ doesUseValidImport, hasImportedTheme }, null, 2)}
281
195
  `
282
- );
283
- }
284
- if (!doesUseValidImport) {
196
+ ), !doesUseValidImport)
285
197
  return null;
286
- }
287
198
  function getValidImportedComponent(componentName) {
288
199
  const importDeclaration = importDeclarations.find(
289
200
  (dec) => dec.specifiers.some((spec) => spec.local.name === componentName)
290
201
  );
291
- if (!importDeclaration) {
292
- return null;
293
- }
294
- return getValidImport(
202
+ return importDeclaration ? getValidImport(
295
203
  propsWithFileInfo,
296
204
  importDeclaration.source.value,
297
205
  componentName
298
- );
206
+ ) : null;
299
207
  }
300
208
  tm.mark("import-check", !!shouldPrintDebug);
301
- let couldntParse = false;
302
- const modifiedComponents = /* @__PURE__ */ new Set();
303
- const bindingCache = {};
304
- const callTraverse = (a) => {
305
- return fileOrPath.type === "File" ? traverse(fileOrPath, a) : fileOrPath.traverse(a);
306
- };
307
- const shouldDisableExtraction = disableExtraction === true || Array.isArray(disableExtraction) && disableExtraction.includes(sourcePath);
209
+ let couldntParse = !1;
210
+ const modifiedComponents = /* @__PURE__ */ new Set(), bindingCache = {}, callTraverse = (a) => fileOrPath.type === "File" ? traverse(fileOrPath, a) : fileOrPath.traverse(a), shouldDisableExtraction = disableExtraction === !0 || Array.isArray(disableExtraction) && disableExtraction.includes(sourcePath);
308
211
  let programPath = null;
309
212
  const res = {
310
213
  styled: 0,
@@ -313,7 +216,7 @@ function createExtractor({ logger = console } = { logger: console }) {
313
216
  modified: 0,
314
217
  found: 0
315
218
  };
316
- callTraverse({
219
+ if (callTraverse({
317
220
  // @ts-ignore
318
221
  Program: {
319
222
  enter(path) {
@@ -322,28 +225,17 @@ function createExtractor({ logger = console } = { logger: console }) {
322
225
  },
323
226
  // styled() calls
324
227
  CallExpression(path) {
325
- var _a2;
326
- if (disable || shouldDisableExtraction || extractStyledDefinitions === false) {
228
+ if (disable || shouldDisableExtraction || extractStyledDefinitions === !1 || !t.isIdentifier(path.node.callee) || path.node.callee.name !== "styled")
327
229
  return;
328
- }
329
- if (!t.isIdentifier(path.node.callee) || path.node.callee.name !== "styled") {
230
+ const variableName = t.isVariableDeclarator(path.parent) && t.isIdentifier(path.parent.id) ? path.parent.id.name : "unknown", parentNode = path.node.arguments[0];
231
+ if (!t.isIdentifier(parentNode))
330
232
  return;
331
- }
332
- const variableName = t.isVariableDeclarator(path.parent) && t.isIdentifier(path.parent.id) ? path.parent.id.name : "unknown";
333
- const parentNode = path.node.arguments[0];
334
- if (!t.isIdentifier(parentNode)) {
233
+ const parentName = parentNode.name, definition = path.node.arguments[1];
234
+ if (!parentName || !definition || !t.isObjectExpression(definition))
335
235
  return;
336
- }
337
- const parentName = parentNode.name;
338
- const definition = path.node.arguments[1];
339
- if (!parentName || !definition || !t.isObjectExpression(definition)) {
340
- return;
341
- }
342
236
  const Component = getValidImportedComponent(parentName);
343
237
  if (!Component) {
344
- if (shouldPrintDebug) {
345
- logger.info(` No component found`);
346
- }
238
+ shouldPrintDebug && logger.info(" No component found");
347
239
  return;
348
240
  }
349
241
  const componentSkipProps = /* @__PURE__ */ new Set([
@@ -359,37 +251,28 @@ function createExtractor({ logger = console } = { logger: console }) {
359
251
  "focusStyle",
360
252
  "hoverStyle",
361
253
  "pressStyle"
362
- ]);
363
- const skipped = /* @__PURE__ */ new Set();
364
- const styles = {};
365
- const staticNamespace = getStaticBindingsForScope(
254
+ ]), skipped = /* @__PURE__ */ new Set(), styles = {}, staticNamespace = getStaticBindingsForScope(
366
255
  path.scope,
367
256
  importsWhitelist,
368
257
  sourcePath,
369
258
  bindingCache,
370
259
  shouldPrintDebug
371
- );
372
- const attemptEval = !evaluateVars ? evaluateAstNode : createEvaluator({
260
+ ), attemptEval = evaluateVars ? createEvaluator({
373
261
  props: propsWithFileInfo,
374
262
  staticNamespace,
375
263
  sourcePath,
376
264
  shouldPrintDebug
377
- });
378
- const attemptEvalSafe = createSafeEvaluator(attemptEval);
265
+ }) : evaluateAstNode, attemptEvalSafe = createSafeEvaluator(attemptEval);
379
266
  for (const property of definition.properties) {
380
267
  if (!t.isObjectProperty(property) || !t.isIdentifier(property.key) || !isValidStyleKey(property.key.name, Component.staticConfig) || // TODO make pseudos and variants work
381
268
  // skip pseudos
382
269
  pseudoDescriptors[property.key.name] || // skip variants
383
- ((_a2 = Component.staticConfig.variants) == null ? void 0 : _a2[property.key.name]) || componentSkipProps.has(property.key.name)) {
270
+ Component.staticConfig.variants?.[property.key.name] || componentSkipProps.has(property.key.name)) {
384
271
  skipped.add(property);
385
272
  continue;
386
273
  }
387
274
  const out2 = attemptEvalSafe(property.value);
388
- if (out2 === FAILED_EVAL) {
389
- skipped.add(property);
390
- } else {
391
- styles[property.key.name] = out2;
392
- }
275
+ out2 === FAILED_EVAL ? skipped.add(property) : styles[property.key.name] = out2;
393
276
  }
394
277
  const out = getSplitStyles(
395
278
  styles,
@@ -402,134 +285,82 @@ function createExtractor({ logger = console } = { logger: console }) {
402
285
  void 0,
403
286
  void 0,
404
287
  shouldPrintDebug
405
- );
406
- const classNames = {
288
+ ), classNames = {
407
289
  ...out.classNames
408
290
  };
409
- if (shouldPrintDebug) {
410
- logger.info(
411
- [
412
- `Extracted styled(${variableName})
291
+ if (shouldPrintDebug && logger.info(
292
+ [
293
+ `Extracted styled(${variableName})
413
294
  `,
414
- JSON.stringify(styles, null, 2),
415
- "\n classNames:",
416
- JSON.stringify(classNames, null, 2),
417
- "\n rulesToInsert:",
418
- out.rulesToInsert.flatMap((rule) => rule.rules).join("\n")
419
- ].join(" ")
420
- );
421
- }
422
- definition.properties = definition.properties.map((prop) => {
423
- if (skipped.has(prop) || !t.isObjectProperty(prop) || !t.isIdentifier(prop.key)) {
295
+ JSON.stringify(styles, null, 2),
296
+ `
297
+ classNames:`,
298
+ JSON.stringify(classNames, null, 2),
299
+ `
300
+ rulesToInsert:`,
301
+ out.rulesToInsert.flatMap((rule) => rule.rules).join(`
302
+ `)
303
+ ].join(" ")
304
+ ), definition.properties = definition.properties.map((prop) => {
305
+ if (skipped.has(prop) || !t.isObjectProperty(prop) || !t.isIdentifier(prop.key))
424
306
  return prop;
425
- }
426
- const key = prop.key.name;
427
- const value = classNames[key];
428
- if (value) {
429
- return t.objectProperty(t.stringLiteral(key), t.stringLiteral(value));
430
- }
431
- return prop;
432
- });
433
- if (out.rulesToInsert) {
434
- for (const { identifier, rules } of out.rulesToInsert) {
435
- onStyleRule == null ? void 0 : onStyleRule(identifier, rules);
436
- }
437
- }
438
- res.styled++;
439
- if (shouldPrintDebug) {
440
- logger.info(`Extracted styled(${variableName})`);
441
- }
307
+ const key = prop.key.name, value = classNames[key];
308
+ return value ? t.objectProperty(t.stringLiteral(key), t.stringLiteral(value)) : prop;
309
+ }), out.rulesToInsert)
310
+ for (const { identifier, rules } of out.rulesToInsert)
311
+ onStyleRule?.(identifier, rules);
312
+ res.styled++, shouldPrintDebug && logger.info(`Extracted styled(${variableName})`);
442
313
  },
443
314
  JSXElement(traversePath) {
444
- var _a2;
445
315
  tm.mark("jsx-element", !!shouldPrintDebug);
446
- const node = traversePath.node.openingElement;
447
- const ogAttributes = node.attributes.map((attr) => ({ ...attr }));
448
- const componentName = findComponentName(traversePath.scope);
449
- const closingElement = traversePath.node.closingElement;
450
- if (t.isJSXMemberExpression(closingElement == null ? void 0 : closingElement.name) || !t.isJSXIdentifier(node.name)) {
316
+ const node = traversePath.node.openingElement, ogAttributes = node.attributes.map((attr) => ({ ...attr })), componentName = findComponentName(traversePath.scope), closingElement = traversePath.node.closingElement;
317
+ if (t.isJSXMemberExpression(closingElement?.name) || !t.isJSXIdentifier(node.name))
451
318
  return;
452
- }
453
319
  const binding = traversePath.scope.getBinding(node.name.name);
454
320
  let modulePath = "";
455
321
  if (binding) {
456
322
  if (!t.isImportDeclaration(binding.path.parent)) {
457
- if (shouldPrintDebug) {
458
- logger.info(` - Binding not import declaration, skip`);
459
- }
323
+ shouldPrintDebug && logger.info(" - Binding not import declaration, skip");
460
324
  return;
461
325
  }
462
- modulePath = binding.path.parent.source.value;
463
- if (!isValidImport(propsWithFileInfo, modulePath, binding.identifier.name)) {
464
- if (shouldPrintDebug) {
465
- logger.info(
466
- ` - Binding for ${componentName} not internal import or from components ${binding.identifier.name} in ${modulePath}`
467
- );
468
- }
326
+ if (modulePath = binding.path.parent.source.value, !isValidImport(propsWithFileInfo, modulePath, binding.identifier.name)) {
327
+ shouldPrintDebug && logger.info(
328
+ ` - Binding for ${componentName} not internal import or from components ${binding.identifier.name} in ${modulePath}`
329
+ );
469
330
  return;
470
331
  }
471
332
  }
472
333
  const component = getValidComponent(propsWithFileInfo, modulePath, node.name.name);
473
334
  if (!component || !component.staticConfig) {
474
- if (shouldPrintDebug) {
475
- logger.info(` - No Tamagui conf on this: ${node.name.name}`);
476
- }
335
+ shouldPrintDebug && logger.info(` - No Tamagui conf on this: ${node.name.name}`);
477
336
  return;
478
337
  }
479
338
  const originalNodeName = node.name.name;
480
339
  res.found++;
481
- const filePath = `./${relative(process.cwd(), sourcePath)}`;
482
- const lineNumbers = node.loc ? node.loc.start.line + (node.loc.start.line !== node.loc.end.line ? `-${node.loc.end.line}` : "") : "";
483
- const codePosition = `${filePath}:${lineNumbers}`;
484
- const debugPropValue = node.attributes.filter(
340
+ const filePath = `./${relative(process.cwd(), sourcePath)}`, lineNumbers = node.loc ? node.loc.start.line + (node.loc.start.line !== node.loc.end.line ? `-${node.loc.end.line}` : "") : "", codePosition = `${filePath}:${lineNumbers}`, debugPropValue = node.attributes.filter(
485
341
  (n) => t.isJSXAttribute(n) && t.isJSXIdentifier(n.name) && n.name.name === "debug"
486
- ).map((n) => {
487
- if (n.value === null)
488
- return true;
489
- if (t.isStringLiteral(n.value))
490
- return n.value.value;
491
- return false;
492
- })[0];
493
- if (debugPropValue) {
494
- shouldPrintDebug = debugPropValue;
495
- }
496
- if (shouldPrintDebug) {
497
- logger.info("\n");
498
- logger.info(
499
- `\x1B[33m%s\x1B[0m ${componentName} | ${codePosition} -------------------`
500
- );
501
- logger.info(["\x1B[1m", "\x1B[32m", `<${originalNodeName} />`, disableDebugAttr ? "" : "\u{1F41B}"].join(" "));
502
- }
503
- if (shouldAddDebugProp && !disableDebugAttr) {
504
- res.modified++;
505
- node.attributes.unshift(
506
- t.jsxAttribute(t.jsxIdentifier("data-is"), t.stringLiteral(node.name.name))
507
- );
508
- if (componentName) {
509
- node.attributes.unshift(
510
- t.jsxAttribute(t.jsxIdentifier("data-in"), t.stringLiteral(componentName))
511
- );
512
- }
513
- node.attributes.unshift(
514
- t.jsxAttribute(
515
- t.jsxIdentifier("data-at"),
516
- t.stringLiteral(`${basename(filePath)}:${lineNumbers}`)
517
- )
518
- );
519
- }
520
- if (shouldDisableExtraction) {
521
- if (shouldPrintDebug === "verbose") {
522
- console.log(` Extraction disabled`);
523
- }
342
+ ).map((n) => n.value === null ? !0 : t.isStringLiteral(n.value) ? n.value.value : !1)[0];
343
+ if (debugPropValue && (shouldPrintDebug = debugPropValue), shouldPrintDebug && (logger.info(`
344
+ `), logger.info(
345
+ `\x1B[33m%s\x1B[0m ${componentName} | ${codePosition} -------------------`
346
+ ), logger.info(["\x1B[1m", "\x1B[32m", `<${originalNodeName} />`, disableDebugAttr ? "" : "\u{1F41B}"].join(" "))), shouldAddDebugProp && !disableDebugAttr && (res.modified++, node.attributes.unshift(
347
+ t.jsxAttribute(t.jsxIdentifier("data-is"), t.stringLiteral(node.name.name))
348
+ ), componentName && node.attributes.unshift(
349
+ t.jsxAttribute(t.jsxIdentifier("data-in"), t.stringLiteral(componentName))
350
+ ), node.attributes.unshift(
351
+ t.jsxAttribute(
352
+ t.jsxIdentifier("data-at"),
353
+ t.stringLiteral(`${basename(filePath)}:${lineNumbers}`)
354
+ )
355
+ )), shouldDisableExtraction) {
356
+ shouldPrintDebug === "verbose" && console.log(" Extraction disabled");
524
357
  return;
525
358
  }
526
359
  try {
527
- let evaluateAttribute2 = function(path) {
528
- const attribute = path.node;
529
- const attr = { type: "attr", value: attribute };
360
+ let evaluateAttribute = function(path) {
361
+ const attribute = path.node, attr = { type: "attr", value: attribute };
530
362
  if (t.isJSXSpreadAttribute(attribute)) {
531
- const arg = attribute.argument;
532
- const conditional = t.isConditionalExpression(arg) ? (
363
+ const arg = attribute.argument, conditional = t.isConditionalExpression(arg) ? (
533
364
  // <YStack {...isSmall ? { color: 'red } : { color: 'blue }}
534
365
  [arg.test, arg.consequent, arg.alternate]
535
366
  ) : t.isLogicalExpression(arg) && arg.operator === "&&" ? (
@@ -539,16 +370,10 @@ function createExtractor({ logger = console } = { logger: console }) {
539
370
  if (conditional) {
540
371
  const [test, alt, cons] = conditional;
541
372
  if (!test)
542
- throw new Error(`no test`);
543
- if ([alt, cons].some((side) => side && !isStaticObject2(side))) {
544
- if (shouldPrintDebug) {
545
- logger.info(`not extractable ${alt} ${cons}`);
546
- }
547
- return attr;
548
- }
549
- return [
550
- ...createTernariesFromObjectProperties2(test, alt) || [],
551
- ...cons && createTernariesFromObjectProperties2(
373
+ throw new Error("no test");
374
+ return [alt, cons].some((side) => side && !isStaticObject(side)) ? (shouldPrintDebug && logger.info(`not extractable ${alt} ${cons}`), attr) : [
375
+ ...createTernariesFromObjectProperties(test, alt) || [],
376
+ ...cons && createTernariesFromObjectProperties(
552
377
  t.unaryExpression("!", test),
553
378
  cons
554
379
  ) || []
@@ -558,209 +383,92 @@ function createExtractor({ logger = console } = { logger: console }) {
558
383
  }));
559
384
  }
560
385
  }
561
- if (t.isJSXSpreadAttribute(attribute) || !attribute.name || typeof attribute.name.name !== "string") {
562
- if (shouldPrintDebug) {
563
- logger.info(" ! inlining, spread attr");
564
- }
565
- inlined.set(`${Math.random()}`, "spread");
566
- return attr;
567
- }
386
+ if (t.isJSXSpreadAttribute(attribute) || !attribute.name || typeof attribute.name.name != "string")
387
+ return shouldPrintDebug && logger.info(" ! inlining, spread attr"), inlined.set(`${Math.random()}`, "spread"), attr;
568
388
  const name = attribute.name.name;
569
- if (excludeProps == null ? void 0 : excludeProps.has(name)) {
570
- if (shouldPrintDebug) {
571
- logger.info([" excluding prop", name].join(" "));
572
- }
573
- return null;
574
- }
575
- if (inlineProps.has(name)) {
576
- inlined.set(name, name);
577
- if (shouldPrintDebug) {
578
- logger.info([" ! inlining, inline prop", name].join(" "));
579
- }
580
- return attr;
581
- }
582
- if (deoptProps.has(name)) {
583
- shouldDeopt = true;
584
- inlined.set(name, name);
585
- if (shouldPrintDebug) {
586
- logger.info([" ! inlining, deopted prop", name].join(" "));
587
- }
389
+ if (excludeProps?.has(name))
390
+ return shouldPrintDebug && logger.info([" excluding prop", name].join(" ")), null;
391
+ if (inlineProps.has(name))
392
+ return inlined.set(name, name), shouldPrintDebug && logger.info([" ! inlining, inline prop", name].join(" ")), attr;
393
+ if (deoptProps.has(name))
394
+ return shouldDeopt = !0, inlined.set(name, name), shouldPrintDebug && logger.info([" ! inlining, deopted prop", name].join(" ")), attr;
395
+ if (UNTOUCHED_PROPS[name])
588
396
  return attr;
589
- }
590
- if (UNTOUCHED_PROPS[name]) {
591
- return attr;
592
- }
593
- if (INLINE_EXTRACTABLE[name]) {
594
- inlined.set(name, INLINE_EXTRACTABLE[name]);
397
+ if (INLINE_EXTRACTABLE[name])
398
+ return inlined.set(name, INLINE_EXTRACTABLE[name]), attr;
399
+ if (name.startsWith("data-"))
595
400
  return attr;
596
- }
597
- if (name.startsWith("data-")) {
598
- return attr;
599
- }
600
- if (name[0] === "$" && t.isJSXExpressionContainer(attribute == null ? void 0 : attribute.value)) {
401
+ if (name[0] === "$" && t.isJSXExpressionContainer(attribute?.value)) {
601
402
  const shortname = name.slice(1);
602
403
  if (mediaQueryConfig[shortname]) {
603
- if (target === "native") {
604
- shouldDeopt = true;
605
- }
606
- if (disableExtractInlineMedia) {
404
+ if (target === "native" && (shouldDeopt = !0), disableExtractInlineMedia)
607
405
  return attr;
608
- }
609
406
  const expression = attribute.value.expression;
610
407
  if (!t.isJSXEmptyExpression(expression)) {
611
- const ternaries2 = createTernariesFromObjectProperties2(
408
+ const ternaries2 = createTernariesFromObjectProperties(
612
409
  t.stringLiteral(shortname),
613
410
  expression,
614
411
  {
615
412
  inlineMediaQuery: shortname
616
413
  }
617
414
  );
618
- if (ternaries2) {
415
+ if (ternaries2)
619
416
  return ternaries2.map((value2) => ({
620
417
  type: "ternary",
621
418
  value: value2
622
419
  }));
623
- }
624
420
  }
625
421
  }
626
422
  }
627
- const [value, valuePath] = (() => {
628
- if (t.isJSXExpressionContainer(attribute == null ? void 0 : attribute.value)) {
629
- return [attribute.value.expression, path.get("value")];
630
- } else {
631
- return [attribute.value, path.get("value")];
632
- }
633
- })();
634
- const remove = () => {
423
+ const [value, valuePath] = (() => t.isJSXExpressionContainer(attribute?.value) ? [attribute.value.expression, path.get("value")] : [attribute.value, path.get("value")])(), remove = () => {
635
424
  Array.isArray(valuePath) ? valuePath.map((p) => p.remove()) : valuePath.remove();
636
425
  };
637
- if (name === "ref") {
638
- if (shouldPrintDebug) {
639
- logger.info([" ! inlining, ref", name].join(" "));
640
- }
641
- inlined.set("ref", "ref");
642
- return attr;
643
- }
644
- if (name === "tag") {
426
+ if (name === "ref")
427
+ return shouldPrintDebug && logger.info([" ! inlining, ref", name].join(" ")), inlined.set("ref", "ref"), attr;
428
+ if (name === "tag")
645
429
  return {
646
430
  type: "attr",
647
431
  value: path.node
648
432
  };
649
- }
650
- if (disableExtractVariables === true) {
651
- if (value) {
652
- if (value.type === "StringLiteral" && value.value[0] === "$") {
653
- if (shouldPrintDebug) {
654
- logger.info(
655
- [
656
- ` ! inlining, native disable extract: ${name} =`,
657
- value.value
658
- ].join(" ")
659
- );
660
- }
661
- inlined.set(name, true);
662
- return attr;
663
- }
664
- }
665
- }
666
- if (name === "theme") {
667
- inlined.set("theme", attr.value);
668
- return attr;
669
- }
433
+ if (disableExtractVariables === !0 && value && value.type === "StringLiteral" && value.value[0] === "$")
434
+ return shouldPrintDebug && logger.info(
435
+ [
436
+ ` ! inlining, native disable extract: ${name} =`,
437
+ value.value
438
+ ].join(" ")
439
+ ), inlined.set(name, !0), attr;
440
+ if (name === "theme")
441
+ return inlined.set("theme", attr.value), attr;
670
442
  const styleValue = attemptEvalSafe(value);
671
443
  if (!variants[name] && !isValidStyleKey(name, staticConfig)) {
672
- let keys = [name];
673
- let out = null;
674
- out = propMapper(name, styleValue, propMapperStyleState);
675
- if (out) {
676
- if (!Array.isArray(out)) {
677
- logger.warn(`Error expected array but got`, out);
678
- couldntParse = true;
679
- shouldDeopt = true;
680
- } else {
681
- out = Object.fromEntries(out);
682
- keys = Object.keys(out);
683
- }
684
- }
685
- if (out) {
686
- if (isTargetingHTML) {
687
- out = createDOMProps(isTextView ? "span" : "div", out);
688
- delete out.className;
689
- }
690
- keys = Object.keys(out);
691
- }
692
- let didInline = false;
444
+ let keys = [name], out = null;
445
+ out = propMapper(name, styleValue, propMapperStyleState), out && (Array.isArray(out) ? (out = Object.fromEntries(out), keys = Object.keys(out)) : (logger.warn("Error expected array but got", out), couldntParse = !0, shouldDeopt = !0)), out && (isTargetingHTML && (out = createDOMProps(isTextView ? "span" : "div", out), delete out.className), keys = Object.keys(out));
446
+ let didInline = !1;
693
447
  const attributes = keys.map((key) => {
694
448
  const val = out[key];
695
- const isStyle = isValidStyleKey(key, staticConfig);
696
- if (isStyle) {
697
- return {
698
- type: "style",
699
- value: { [key]: styleValue },
700
- name: key,
701
- attr: path.node
702
- };
703
- }
704
- if (validHTMLAttributes[key] || key.startsWith("aria-") || key.startsWith("data-") || // this is debug stuff added by vite / new jsx transform
705
- key === "__source" || key === "__self") {
706
- return attr;
707
- }
708
- if (shouldPrintDebug) {
709
- logger.info(" ! inlining, non-static " + key);
710
- }
711
- didInline = true;
712
- inlined.set(key, val);
713
- return val;
714
- });
715
- if (didInline) {
716
- if (shouldPrintDebug) {
717
- logger.info(` bailing flattening due to attributes ${attributes}`);
718
- }
719
- return attr;
720
- }
721
- return attributes;
722
- }
723
- if (styleValue !== FAILED_EVAL) {
724
- if (inlineWhenUnflattened.has(name)) {
725
- inlineWhenUnflattenedOGVals[name] = { styleValue, attr };
726
- }
727
- if (isValidStyleKey(name, staticConfig)) {
728
- if (shouldPrintDebug) {
729
- logger.info(` style: ${name} = ${styleValue}`);
730
- }
731
- if (!(name in defaultProps)) {
732
- if (!hasSetOptimized) {
733
- res.optimized++;
734
- hasSetOptimized = true;
735
- }
736
- }
737
- return {
449
+ return isValidStyleKey(key, staticConfig) ? {
738
450
  type: "style",
739
- value: { [name]: styleValue },
740
- name,
451
+ value: { [key]: styleValue },
452
+ name: key,
741
453
  attr: path.node
742
- };
743
- } else {
744
- if (variants[name]) {
745
- variantValues.set(name, styleValue);
746
- }
747
- inlined.set(name, true);
748
- return attr;
749
- }
454
+ } : validHTMLAttributes[key] || key.startsWith("aria-") || key.startsWith("data-") || // this is debug stuff added by vite / new jsx transform
455
+ key === "__source" || key === "__self" ? attr : (shouldPrintDebug && logger.info(" ! inlining, non-static " + key), didInline = !0, inlined.set(key, val), val);
456
+ });
457
+ return didInline ? (shouldPrintDebug && logger.info(` bailing flattening due to attributes ${attributes}`), attr) : attributes;
750
458
  }
459
+ if (styleValue !== FAILED_EVAL)
460
+ return inlineWhenUnflattened.has(name) && (inlineWhenUnflattenedOGVals[name] = { styleValue, attr }), isValidStyleKey(name, staticConfig) ? (shouldPrintDebug && logger.info(` style: ${name} = ${styleValue}`), name in defaultProps || hasSetOptimized || (res.optimized++, hasSetOptimized = !0), {
461
+ type: "style",
462
+ value: { [name]: styleValue },
463
+ name,
464
+ attr: path.node
465
+ }) : (variants[name] && variantValues.set(name, styleValue), inlined.set(name, !0), attr);
751
466
  if (t.isBinaryExpression(value)) {
752
- if (shouldPrintDebug) {
753
- logger.info(` binary expression ${name} = ${value}`);
754
- }
755
- const { operator, left, right } = value;
756
- const lVal = attemptEvalSafe(left);
757
- const rVal = attemptEvalSafe(right);
758
- if (shouldPrintDebug) {
759
- logger.info(
760
- ` evalBinaryExpression lVal ${String(lVal)}, rVal ${String(rVal)}`
761
- );
762
- }
763
- if (lVal !== FAILED_EVAL && t.isConditionalExpression(right)) {
467
+ shouldPrintDebug && logger.info(` binary expression ${name} = ${value}`);
468
+ const { operator, left, right } = value, lVal = attemptEvalSafe(left), rVal = attemptEvalSafe(right);
469
+ if (shouldPrintDebug && logger.info(
470
+ ` evalBinaryExpression lVal ${String(lVal)}, rVal ${String(rVal)}`
471
+ ), lVal !== FAILED_EVAL && t.isConditionalExpression(right)) {
764
472
  const ternary = addBinaryConditional(operator, left, right);
765
473
  if (ternary)
766
474
  return ternary;
@@ -770,43 +478,23 @@ function createExtractor({ logger = console } = { logger: console }) {
770
478
  if (ternary)
771
479
  return ternary;
772
480
  }
773
- if (shouldPrintDebug) {
774
- logger.info(` evalBinaryExpression cant extract`);
775
- }
776
- inlined.set(name, true);
777
- return attr;
481
+ return shouldPrintDebug && logger.info(" evalBinaryExpression cant extract"), inlined.set(name, !0), attr;
778
482
  }
779
483
  const staticConditional = getStaticConditional(value);
780
- if (staticConditional) {
781
- if (shouldPrintDebug === "verbose") {
782
- logger.info(` static conditional ${name} ${value}`);
783
- }
784
- return { type: "ternary", value: staticConditional };
785
- }
484
+ if (staticConditional)
485
+ return shouldPrintDebug === "verbose" && logger.info(` static conditional ${name} ${value}`), { type: "ternary", value: staticConditional };
786
486
  const staticLogical = getStaticLogical(value);
787
- if (staticLogical) {
788
- if (shouldPrintDebug === "verbose") {
789
- logger.info(` static ternary ${name} = ${value}`);
790
- }
791
- return { type: "ternary", value: staticLogical };
792
- }
793
- inlined.set(name, true);
794
- if (shouldPrintDebug) {
795
- logger.info(` ! inline no match ${name} ${value}`);
796
- }
797
- return attr;
487
+ if (staticLogical)
488
+ return shouldPrintDebug === "verbose" && logger.info(` static ternary ${name} = ${value}`), { type: "ternary", value: staticLogical };
489
+ return inlined.set(name, !0), shouldPrintDebug && logger.info(` ! inline no match ${name} ${value}`), attr;
798
490
  function addBinaryConditional(operator, staticExpr, cond) {
799
491
  if (getStaticConditional(cond)) {
800
492
  const alt = attemptEval(
801
493
  t.binaryExpression(operator, staticExpr, cond.alternate)
802
- );
803
- const cons = attemptEval(
494
+ ), cons = attemptEval(
804
495
  t.binaryExpression(operator, staticExpr, cond.consequent)
805
496
  );
806
- if (shouldPrintDebug) {
807
- logger.info([" binaryConditional", cond.test, cons, alt].join(" "));
808
- }
809
- return {
497
+ return shouldPrintDebug && logger.info([" binaryConditional", cond.test, cons, alt].join(" ")), {
810
498
  type: "ternary",
811
499
  value: {
812
500
  test: cond.test,
@@ -819,10 +507,9 @@ function createExtractor({ logger = console } = { logger: console }) {
819
507
  return null;
820
508
  }
821
509
  function getStaticConditional(value2) {
822
- if (t.isConditionalExpression(value2)) {
510
+ if (t.isConditionalExpression(value2))
823
511
  try {
824
- const aVal = attemptEval(value2.alternate);
825
- const cVal = attemptEval(value2.consequent);
512
+ const aVal = attemptEval(value2.alternate), cVal = attemptEval(value2.consequent);
826
513
  if (shouldPrintDebug) {
827
514
  const type = value2.test.type;
828
515
  logger.info([" static ternary", type, cVal, aVal].join(" "));
@@ -834,89 +521,61 @@ function createExtractor({ logger = console } = { logger: console }) {
834
521
  alternate: { [name]: aVal }
835
522
  };
836
523
  } catch (err) {
837
- if (shouldPrintDebug) {
838
- logger.info([" cant eval ternary", err.message].join(" "));
839
- }
524
+ shouldPrintDebug && logger.info([" cant eval ternary", err.message].join(" "));
840
525
  }
841
- }
842
526
  return null;
843
527
  }
844
528
  function getStaticLogical(value2) {
845
- if (t.isLogicalExpression(value2)) {
846
- if (value2.operator === "&&") {
847
- try {
848
- const val = attemptEval(value2.right);
849
- if (shouldPrintDebug) {
850
- logger.info([" staticLogical", value2.left, name, val].join(" "));
851
- }
852
- return {
853
- test: value2.left,
854
- remove,
855
- consequent: { [name]: val },
856
- alternate: null
857
- };
858
- } catch (err) {
859
- if (shouldPrintDebug) {
860
- logger.info([" cant static eval logical", err].join(" "));
861
- }
862
- }
529
+ if (t.isLogicalExpression(value2) && value2.operator === "&&")
530
+ try {
531
+ const val = attemptEval(value2.right);
532
+ return shouldPrintDebug && logger.info([" staticLogical", value2.left, name, val].join(" ")), {
533
+ test: value2.left,
534
+ remove,
535
+ consequent: { [name]: val },
536
+ alternate: null
537
+ };
538
+ } catch (err) {
539
+ shouldPrintDebug && logger.info([" cant static eval logical", err].join(" "));
863
540
  }
864
- }
865
541
  return null;
866
542
  }
867
- }, isStaticObject2 = function(obj) {
543
+ }, isStaticObject = function(obj) {
868
544
  return t.isObjectExpression(obj) && obj.properties.every((prop) => {
869
- if (!t.isObjectProperty(prop)) {
870
- logger.info(["not object prop", prop].join(" "));
871
- return false;
872
- }
873
- const propName = prop.key["name"];
874
- if (!isValidStyleKey(propName, staticConfig) && propName !== "tag") {
875
- if (shouldPrintDebug) {
876
- logger.info([" not a valid style prop!", propName].join(" "));
877
- }
878
- return false;
879
- }
880
- return true;
545
+ if (!t.isObjectProperty(prop))
546
+ return logger.info(["not object prop", prop].join(" ")), !1;
547
+ const propName = prop.key.name;
548
+ return !isValidStyleKey(propName, staticConfig) && propName !== "tag" ? (shouldPrintDebug && logger.info([" not a valid style prop!", propName].join(" ")), !1) : !0;
881
549
  });
882
- }, createTernariesFromObjectProperties2 = function(test, side, ternaryPartial = {}) {
883
- if (!side) {
550
+ }, createTernariesFromObjectProperties = function(test, side, ternaryPartial = {}) {
551
+ if (!side)
884
552
  return null;
885
- }
886
- if (!isStaticObject2(side)) {
553
+ if (!isStaticObject(side))
887
554
  throw new Error("not extractable");
888
- }
889
555
  return side.properties.flatMap((property) => {
890
- if (!t.isObjectProperty(property)) {
556
+ if (!t.isObjectProperty(property))
891
557
  throw new Error("expected object property");
892
- }
893
558
  if (t.isIdentifier(property.key)) {
894
- const key = property.key.name;
895
- const mediaQueryKey = key.slice(1);
896
- const isMediaQuery = key[0] === "$" && mediaQueryConfig[mediaQueryKey];
897
- if (isMediaQuery) {
559
+ const key = property.key.name, mediaQueryKey = key.slice(1);
560
+ if (key[0] === "$" && mediaQueryConfig[mediaQueryKey])
898
561
  if (t.isExpression(property.value)) {
899
- const ternaries2 = createTernariesFromObjectProperties2(
562
+ const ternaries2 = createTernariesFromObjectProperties(
900
563
  t.stringLiteral(mediaQueryKey),
901
564
  property.value,
902
565
  {
903
566
  inlineMediaQuery: mediaQueryKey
904
567
  }
905
568
  );
906
- if (ternaries2) {
569
+ if (ternaries2)
907
570
  return ternaries2.map((value) => ({
908
571
  ...ternaryPartial,
909
572
  ...value,
910
573
  // ensure media query test stays on left side (see getMediaQueryTernary)
911
574
  test: t.logicalExpression("&&", value.test, test)
912
575
  }));
913
- } else {
914
- logger.info(["\u26A0\uFE0F no ternaries?", property].join(" "));
915
- }
916
- } else {
576
+ logger.info(["\u26A0\uFE0F no ternaries?", property].join(" "));
577
+ } else
917
578
  logger.info(["\u26A0\uFE0F not expression", property].join(" "));
918
- }
919
- }
920
579
  }
921
580
  if (t.isConditionalExpression(property.value)) {
922
581
  const [truthy, falsy] = [
@@ -952,8 +611,7 @@ function createExtractor({ logger = console } = { logger: console }) {
952
611
  }
953
612
  const obj = t.objectExpression([
954
613
  t.objectProperty(property.key, property.value)
955
- ]);
956
- const consequent = attemptEval(obj);
614
+ ]), consequent = attemptEval(obj);
957
615
  return createTernary({
958
616
  remove() {
959
617
  },
@@ -963,103 +621,67 @@ function createExtractor({ logger = console } = { logger: console }) {
963
621
  alternate: null
964
622
  });
965
623
  });
966
- }, mergeToEnd2 = function(obj, key, val) {
967
- if (key in obj) {
968
- delete obj[key];
969
- }
970
- obj[key] = val;
971
- }, expandStylesAndRemoveNullishValuesWithoutVariants2 = function(style) {
624
+ }, mergeToEnd = function(obj, key, val) {
625
+ key in obj && delete obj[key], obj[key] = val;
626
+ }, expandStylesAndRemoveNullishValuesWithoutVariants = function(style) {
972
627
  let res2 = {};
973
- for (const key in style) {
974
- if (staticConfig.variants && key in staticConfig.variants) {
975
- mergeToEnd2(res2, key, style[key]);
976
- } else {
628
+ for (const key in style)
629
+ if (staticConfig.variants && key in staticConfig.variants)
630
+ mergeToEnd(res2, key, style[key]);
631
+ else {
977
632
  const expanded = expandStylesAndRemoveNullishValues({ [key]: style[key] });
978
- for (const key2 in expanded) {
979
- mergeToEnd2(res2, key2, expanded[key2]);
980
- }
633
+ for (const key2 in expanded)
634
+ mergeToEnd(res2, key2, expanded[key2]);
981
635
  }
982
- }
983
636
  return res2;
984
- }, mergeStyles2 = function(prev2, next) {
985
- for (const key in next) {
986
- if (pseudoDescriptors[key]) {
987
- prev2[key] = prev2[key] || {};
988
- Object.assign(prev2[key], next[key]);
989
- } else {
990
- mergeToEnd2(prev2, key, next[key]);
991
- }
992
- }
637
+ }, mergeStyles = function(prev2, next) {
638
+ for (const key in next)
639
+ pseudoDescriptors[key] ? (prev2[key] = prev2[key] || {}, Object.assign(prev2[key], next[key])) : mergeToEnd(prev2, key, next[key]);
993
640
  };
994
- var evaluateAttribute = evaluateAttribute2, isStaticObject = isStaticObject2, createTernariesFromObjectProperties = createTernariesFromObjectProperties2, mergeToEnd = mergeToEnd2, expandStylesAndRemoveNullishValuesWithoutVariants = expandStylesAndRemoveNullishValuesWithoutVariants2, mergeStyles = mergeStyles2;
995
- const { staticConfig } = component;
996
- const defaultProps = { ...staticConfig.defaultProps || {} };
997
- const variants = staticConfig.variants || {};
998
- const isTextView = staticConfig.isText || false;
999
- const validStyles = (staticConfig == null ? void 0 : staticConfig.validStyles) ?? {};
641
+ const { staticConfig } = component, defaultProps = { ...staticConfig.defaultProps || {} }, variants = staticConfig.variants || {}, isTextView = staticConfig.isText || !1, validStyles = staticConfig?.validStyles ?? {};
1000
642
  let tagName = defaultProps.tag ?? (isTextView ? "span" : "div");
1001
643
  traversePath.get("openingElement").get("attributes").forEach((path) => {
1002
644
  const attr = path.node;
1003
- if (t.isJSXSpreadAttribute(attr))
1004
- return;
1005
- if (attr.name.name !== "tag")
645
+ if (t.isJSXSpreadAttribute(attr) || attr.name.name !== "tag")
1006
646
  return;
1007
647
  const val = attr.value;
1008
- if (!t.isStringLiteral(val))
1009
- return;
1010
- tagName = val.value;
1011
- });
1012
- if (shouldPrintDebug === "verbose") {
1013
- console.log(` Start tag ${tagName}`);
1014
- }
1015
- const flatNode = getFlattenedNode == null ? void 0 : getFlattenedNode({ isTextView, tag: tagName });
1016
- const inlineProps = /* @__PURE__ */ new Set([
648
+ t.isStringLiteral(val) && (tagName = val.value);
649
+ }), shouldPrintDebug === "verbose" && console.log(` Start tag ${tagName}`);
650
+ const flatNode = getFlattenedNode?.({ isTextView, tag: tagName }), inlineProps = /* @__PURE__ */ new Set([
1017
651
  // adding some always inline props
1018
652
  "dataSet",
1019
653
  ...restProps.inlineProps || [],
1020
654
  ...staticConfig.inlineProps || []
1021
- ]);
1022
- const deoptProps = /* @__PURE__ */ new Set([
655
+ ]), deoptProps = /* @__PURE__ */ new Set([
1023
656
  // always de-opt animation these
1024
657
  "animation",
1025
658
  "disableOptimization",
1026
659
  // when using a non-CSS driver, de-opt on enterStyle/exitStyle
1027
- ...(tamaguiConfig == null ? void 0 : tamaguiConfig.animations.isReactNative) ? ["enterStyle", "exitStyle"] : [],
660
+ ...tamaguiConfig?.animations.isReactNative ? ["enterStyle", "exitStyle"] : [],
1028
661
  ...restProps.deoptProps || [],
1029
662
  ...staticConfig.deoptProps || []
1030
- ]);
1031
- const inlineWhenUnflattened = /* @__PURE__ */ new Set([
663
+ ]), inlineWhenUnflattened = /* @__PURE__ */ new Set([
1032
664
  ...staticConfig.inlineWhenUnflattened || []
1033
- ]);
1034
- const staticNamespace = getStaticBindingsForScope(
665
+ ]), staticNamespace = getStaticBindingsForScope(
1035
666
  traversePath.scope,
1036
667
  importsWhitelist,
1037
668
  sourcePath,
1038
669
  bindingCache,
1039
670
  shouldPrintDebug
1040
- );
1041
- const attemptEval = !evaluateVars ? evaluateAstNode : createEvaluator({
671
+ ), attemptEval = evaluateVars ? createEvaluator({
1042
672
  props: propsWithFileInfo,
1043
673
  staticNamespace,
1044
674
  sourcePath,
1045
675
  traversePath,
1046
676
  shouldPrintDebug
1047
- });
1048
- const attemptEvalSafe = createSafeEvaluator(attemptEval);
1049
- if (shouldPrintDebug) {
1050
- logger.info(` staticNamespace ${Object.keys(staticNamespace).join(", ")}`);
1051
- }
1052
- if (couldntParse) {
677
+ }) : evaluateAstNode, attemptEvalSafe = createSafeEvaluator(attemptEval);
678
+ if (shouldPrintDebug && logger.info(` staticNamespace ${Object.keys(staticNamespace).join(", ")}`), couldntParse)
1053
679
  return;
1054
- }
1055
680
  tm.mark("jsx-element-flattened", !!shouldPrintDebug);
1056
- let attrs = [];
1057
- let shouldDeopt = false;
1058
- const inlined = /* @__PURE__ */ new Map();
1059
- const variantValues = /* @__PURE__ */ new Map();
1060
- let hasSetOptimized = false;
1061
- const inlineWhenUnflattenedOGVals = {};
1062
- const propMapperStyleState = {
681
+ let attrs = [], shouldDeopt = !1;
682
+ const inlined = /* @__PURE__ */ new Map(), variantValues = /* @__PURE__ */ new Map();
683
+ let hasSetOptimized = !1;
684
+ const inlineWhenUnflattenedOGVals = {}, propMapperStyleState = {
1063
685
  staticConfig,
1064
686
  usedKeys: {},
1065
687
  classNames: {},
@@ -1076,340 +698,215 @@ function createExtractor({ logger = console } = { logger: console }) {
1076
698
  },
1077
699
  debug: shouldPrintDebug
1078
700
  };
1079
- attrs = traversePath.get("openingElement").get("attributes").flatMap((path) => {
1080
- var _a3;
701
+ if (attrs = traversePath.get("openingElement").get("attributes").flatMap((path) => {
1081
702
  try {
1082
- const res2 = evaluateAttribute2(path);
1083
- tm.mark("jsx-element-evaluate-attr", !!shouldPrintDebug);
1084
- if (!res2) {
1085
- path.remove();
1086
- }
1087
- return res2;
703
+ const res2 = evaluateAttribute(path);
704
+ return tm.mark("jsx-element-evaluate-attr", !!shouldPrintDebug), res2 || path.remove(), res2;
1088
705
  } catch (err) {
1089
- if (shouldPrintDebug) {
1090
- logger.info(
1091
- [
1092
- "Recoverable error extracting attribute",
1093
- err.message,
1094
- shouldPrintDebug === "verbose" ? err.stack : ""
1095
- ].join(" ")
1096
- );
1097
- if (shouldPrintDebug === "verbose") {
1098
- logger.info(`node ${(_a3 = path.node) == null ? void 0 : _a3.type}`);
1099
- }
1100
- }
1101
- inlined.set(`${Math.random()}`, "spread");
1102
- return {
706
+ return shouldPrintDebug && (logger.info(
707
+ [
708
+ "Recoverable error extracting attribute",
709
+ err.message,
710
+ shouldPrintDebug === "verbose" ? err.stack : ""
711
+ ].join(" ")
712
+ ), shouldPrintDebug === "verbose" && logger.info(`node ${path.node?.type}`)), inlined.set(`${Math.random()}`, "spread"), {
1103
713
  type: "attr",
1104
714
  value: path.node
1105
715
  };
1106
716
  }
1107
- }).flat(4).filter(isPresent);
1108
- if (shouldPrintDebug) {
1109
- logger.info(
1110
- [" - attrs (before):\n", logLines(attrs.map(attrStr).join(", "))].join(" ")
1111
- );
1112
- }
1113
- if (couldntParse || shouldDeopt) {
1114
- if (shouldPrintDebug) {
1115
- logger.info(
1116
- [` avoid optimizing:`, { couldntParse, shouldDeopt }].join(" ")
1117
- );
1118
- }
1119
- node.attributes = ogAttributes;
717
+ }).flat(4).filter(isPresent), shouldPrintDebug && logger.info(
718
+ [` - attrs (before):
719
+ `, logLines(attrs.map(attrStr).join(", "))].join(" ")
720
+ ), couldntParse || shouldDeopt) {
721
+ shouldPrintDebug && logger.info(
722
+ [" avoid optimizing:", { couldntParse, shouldDeopt }].join(" ")
723
+ ), node.attributes = ogAttributes;
1120
724
  return;
1121
725
  }
1122
726
  const parentFn = findTopmostFunction(traversePath);
1123
- if (parentFn) {
1124
- modifiedComponents.add(parentFn);
1125
- }
727
+ parentFn && modifiedComponents.add(parentFn);
1126
728
  let ternaries = [];
1127
729
  attrs = attrs.reduce((out, cur) => {
1128
730
  const next = attrs[attrs.indexOf(cur) + 1];
1129
- if (cur.type === "ternary") {
1130
- ternaries.push(cur.value);
1131
- }
1132
- if ((!next || next.type !== "ternary") && ternaries.length) {
731
+ if (cur.type === "ternary" && ternaries.push(cur.value), (!next || next.type !== "ternary") && ternaries.length) {
1133
732
  const normalized = normalizeTernaries(ternaries).map(
1134
- ({ alternate, consequent, ...rest }) => {
1135
- return {
1136
- type: "ternary",
1137
- value: {
1138
- ...rest,
1139
- alternate: alternate || null,
1140
- consequent: consequent || null
1141
- }
1142
- };
1143
- }
733
+ ({ alternate, consequent, ...rest }) => ({
734
+ type: "ternary",
735
+ value: {
736
+ ...rest,
737
+ alternate: alternate || null,
738
+ consequent: consequent || null
739
+ }
740
+ })
1144
741
  );
1145
742
  try {
1146
743
  return [...out, ...normalized];
1147
744
  } finally {
1148
- if (shouldPrintDebug) {
1149
- logger.info(
1150
- ` normalizeTernaries (${ternaries.length} => ${normalized.length})`
1151
- );
1152
- }
1153
- ternaries = [];
745
+ shouldPrintDebug && logger.info(
746
+ ` normalizeTernaries (${ternaries.length} => ${normalized.length})`
747
+ ), ternaries = [];
1154
748
  }
1155
749
  }
1156
- if (cur.type === "ternary") {
1157
- return out;
1158
- }
1159
- out.push(cur);
1160
- return out;
750
+ return cur.type === "ternary" || out.push(cur), out;
1161
751
  }, []).flat();
1162
752
  const hasSpread = attrs.some(
1163
753
  (x) => x.type === "attr" && t.isJSXSpreadAttribute(x.value)
1164
- );
1165
- const hasOnlyStringChildren = !hasSpread && (node.selfClosing || traversePath.node.children && traversePath.node.children.every((x) => x.type === "JSXText"));
1166
- const themeVal = inlined.get("theme");
1167
- if (target !== "native") {
1168
- inlined.delete("theme");
1169
- }
754
+ ), hasOnlyStringChildren = !hasSpread && (node.selfClosing || traversePath.node.children && traversePath.node.children.every((x) => x.type === "JSXText")), themeVal = inlined.get("theme");
755
+ target !== "native" && inlined.delete("theme");
1170
756
  for (const [key] of [...inlined]) {
1171
- const isStaticObjectVariant = ((_a2 = staticConfig.variants) == null ? void 0 : _a2[key]) && variantValues.has(key);
1172
- if (INLINE_EXTRACTABLE[key] || isStaticObjectVariant) {
1173
- inlined.delete(key);
1174
- }
757
+ const isStaticObjectVariant = staticConfig.variants?.[key] && variantValues.has(key);
758
+ (INLINE_EXTRACTABLE[key] || isStaticObjectVariant) && inlined.delete(key);
1175
759
  }
1176
760
  const canFlattenProps = inlined.size === 0;
1177
- let shouldFlatten = Boolean(
1178
- flatNode && !shouldDeopt && canFlattenProps && !hasSpread && !staticConfig.isStyledHOC && !staticConfig.isHOC && !staticConfig.isReactNative && staticConfig.neverFlatten !== true && (staticConfig.neverFlatten === "jsx" ? hasOnlyStringChildren : true)
1179
- );
1180
- const shouldWrapTheme = shouldFlatten && themeVal;
1181
- const usedThemeKeys = /* @__PURE__ */ new Set();
1182
- if (disableExtractVariables) {
1183
- themeAccessListeners.add((key) => {
1184
- shouldFlatten = false;
1185
- usedThemeKeys.add(key);
1186
- if (shouldPrintDebug === "verbose") {
1187
- logger.info([" ! accessing theme key, avoid flatten", key].join(" "));
1188
- }
1189
- });
1190
- }
1191
- if (shouldPrintDebug) {
761
+ let shouldFlatten = !!(flatNode && !shouldDeopt && canFlattenProps && !hasSpread && !staticConfig.isStyledHOC && !staticConfig.isHOC && !staticConfig.isReactNative && staticConfig.neverFlatten !== !0 && (staticConfig.neverFlatten !== "jsx" || hasOnlyStringChildren));
762
+ const shouldWrapTheme = shouldFlatten && themeVal, usedThemeKeys = /* @__PURE__ */ new Set();
763
+ if (disableExtractVariables && themeAccessListeners.add((key) => {
764
+ shouldFlatten = !1, usedThemeKeys.add(key), shouldPrintDebug === "verbose" && logger.info([" ! accessing theme key, avoid flatten", key].join(" "));
765
+ }), shouldPrintDebug)
1192
766
  try {
1193
767
  logger.info([" flatten?", shouldFlatten, objToStr({ hasSpread, shouldDeopt, canFlattenProps, shouldWrapTheme, hasOnlyStringChildren }), "inlined", inlined.size, [...inlined]].join(" "));
1194
768
  } catch {
1195
769
  }
1196
- }
1197
- if (shouldFlatten && shouldWrapTheme) {
1198
- if (!programPath) {
1199
- console.warn(
1200
- `No program path found, avoiding importing flattening / importing theme in ${sourcePath}`
1201
- );
1202
- } else {
1203
- if (shouldPrintDebug) {
1204
- logger.info([" - wrapping theme", themeVal].join(" "));
1205
- }
1206
- attrs = attrs.filter(
1207
- (x) => x.type === "attr" && t.isJSXAttribute(x.value) && x.value.name.name === "theme" ? false : true
1208
- );
1209
- if (!hasImportedTheme) {
1210
- hasImportedTheme = true;
1211
- programPath.node.body.push(
1212
- t.importDeclaration(
1213
- [
1214
- t.importSpecifier(
1215
- t.identifier("_TamaguiTheme"),
1216
- t.identifier("Theme")
1217
- )
1218
- ],
1219
- t.stringLiteral("@tamagui/core")
1220
- )
1221
- );
1222
- }
1223
- traversePath.replaceWith(
1224
- t.jsxElement(
1225
- t.jsxOpeningElement(t.jsxIdentifier("_TamaguiTheme"), [
1226
- t.jsxAttribute(t.jsxIdentifier("name"), themeVal.value)
1227
- ]),
1228
- t.jsxClosingElement(t.jsxIdentifier("_TamaguiTheme")),
1229
- [traversePath.node]
770
+ if (shouldFlatten && shouldWrapTheme && (programPath ? (shouldPrintDebug && logger.info([" - wrapping theme", themeVal].join(" ")), attrs = attrs.filter(
771
+ (x) => !(x.type === "attr" && t.isJSXAttribute(x.value) && x.value.name.name === "theme")
772
+ ), hasImportedTheme || (hasImportedTheme = !0, programPath.node.body.push(
773
+ t.importDeclaration(
774
+ [
775
+ t.importSpecifier(
776
+ t.identifier("_TamaguiTheme"),
777
+ t.identifier("Theme")
1230
778
  )
1231
- );
1232
- }
1233
- }
1234
- if (shouldFlatten) {
779
+ ],
780
+ t.stringLiteral("@tamagui/web")
781
+ )
782
+ )), traversePath.replaceWith(
783
+ t.jsxElement(
784
+ t.jsxOpeningElement(t.jsxIdentifier("_TamaguiTheme"), [
785
+ t.jsxAttribute(t.jsxIdentifier("name"), themeVal.value)
786
+ ]),
787
+ t.jsxClosingElement(t.jsxIdentifier("_TamaguiTheme")),
788
+ [traversePath.node]
789
+ )
790
+ )) : console.warn(
791
+ `No program path found, avoiding importing flattening / importing theme in ${sourcePath}`
792
+ )), shouldFlatten) {
1235
793
  const defaultStyleAttrs = Object.keys(defaultProps).flatMap((key) => {
1236
- if (!isValidStyleKey(key, staticConfig)) {
794
+ if (!isValidStyleKey(key, staticConfig))
1237
795
  return [];
1238
- }
1239
- const value = defaultProps[key];
1240
- const name = (tamaguiConfig == null ? void 0 : tamaguiConfig.shorthands[key]) || key;
796
+ const value = defaultProps[key], name = tamaguiConfig?.shorthands[key] || key;
1241
797
  if (value === void 0) {
1242
798
  logger.warn(
1243
799
  `\u26A0\uFE0F Error evaluating default style for component, prop ${key} ${value}`
1244
- );
1245
- shouldDeopt = true;
800
+ ), shouldDeopt = !0;
1246
801
  return;
1247
802
  }
1248
- const attr = {
803
+ return {
1249
804
  type: "style",
1250
805
  name,
1251
806
  value: { [name]: value }
1252
807
  };
1253
- return attr;
1254
808
  });
1255
- if (defaultStyleAttrs.length) {
1256
- attrs = [...defaultStyleAttrs, ...attrs];
1257
- }
809
+ defaultStyleAttrs.length && (attrs = [...defaultStyleAttrs, ...attrs]);
1258
810
  }
1259
811
  if (shouldDeopt || !shouldFlatten) {
1260
- if (shouldPrintDebug) {
1261
- logger.info(`Deopting ${shouldDeopt} ${shouldFlatten}`);
1262
- }
1263
- node.attributes = ogAttributes;
812
+ shouldPrintDebug && logger.info(`Deopting ${shouldDeopt} ${shouldFlatten}`), node.attributes = ogAttributes;
1264
813
  return;
1265
814
  }
1266
- if (shouldPrintDebug) {
1267
- logger.info(
1268
- [" - attrs (flattened): \n", logLines(attrs.map(attrStr).join(", "))].join(
1269
- " "
1270
- )
1271
- );
1272
- }
815
+ shouldPrintDebug && logger.info(
816
+ [` - attrs (flattened):
817
+ `, logLines(attrs.map(attrStr).join(", "))].join(
818
+ " "
819
+ )
820
+ );
1273
821
  let foundStaticProps = {};
1274
822
  for (const key in attrs) {
1275
823
  const cur = attrs[key];
1276
824
  if (cur.type === "style") {
1277
- const expanded = expandStylesAndRemoveNullishValuesWithoutVariants2(
825
+ const expanded = expandStylesAndRemoveNullishValuesWithoutVariants(
1278
826
  cur.value
1279
827
  );
1280
- for (const key2 in expanded) {
1281
- mergeToEnd2(foundStaticProps, key2, expanded[key2]);
1282
- }
828
+ for (const key2 in expanded)
829
+ mergeToEnd(foundStaticProps, key2, expanded[key2]);
1283
830
  continue;
1284
831
  }
1285
832
  if (cur.type === "attr") {
1286
- if (t.isJSXSpreadAttribute(cur.value)) {
1287
- continue;
1288
- }
1289
- if (!t.isJSXIdentifier(cur.value.name)) {
833
+ if (t.isJSXSpreadAttribute(cur.value) || !t.isJSXIdentifier(cur.value.name))
1290
834
  continue;
1291
- }
1292
- const key2 = cur.value.name.name;
1293
- const value = attemptEvalSafe(cur.value.value || t.booleanLiteral(true));
1294
- if (value !== FAILED_EVAL) {
1295
- mergeToEnd2(foundStaticProps, key2, value);
1296
- }
835
+ const key2 = cur.value.name.name, value = attemptEvalSafe(cur.value.value || t.booleanLiteral(!0));
836
+ value !== FAILED_EVAL && mergeToEnd(foundStaticProps, key2, value);
1297
837
  }
1298
838
  }
1299
839
  const completeProps = {};
1300
- for (const key in defaultProps) {
1301
- if (!(key in foundStaticProps)) {
1302
- completeProps[key] = defaultProps[key];
1303
- }
1304
- }
1305
- for (const key in foundStaticProps) {
840
+ for (const key in defaultProps)
841
+ key in foundStaticProps || (completeProps[key] = defaultProps[key]);
842
+ for (const key in foundStaticProps)
1306
843
  completeProps[key] = foundStaticProps[key];
1307
- }
1308
844
  attrs = attrs.reduce((acc, cur) => {
1309
845
  if (!cur)
1310
846
  return acc;
1311
- if (cur.type === "attr" && !t.isJSXSpreadAttribute(cur.value)) {
1312
- if (shouldFlatten) {
1313
- const name = cur.value.name.name;
1314
- if (typeof name === "string") {
1315
- if (name === "tag") {
1316
- return acc;
847
+ if (cur.type === "attr" && !t.isJSXSpreadAttribute(cur.value) && shouldFlatten) {
848
+ const name = cur.value.name.name;
849
+ if (typeof name == "string") {
850
+ if (name === "tag")
851
+ return acc;
852
+ if (variants[name] && variantValues.has(name)) {
853
+ const styleState = {
854
+ ...propMapperStyleState,
855
+ props: completeProps,
856
+ curProps: completeProps
857
+ };
858
+ let out = Object.fromEntries(
859
+ propMapper(name, variantValues.get(name), styleState) || []
860
+ );
861
+ if (out && isTargetingHTML) {
862
+ const cn = out.className;
863
+ out = createDOMProps(isTextView ? "span" : "div", out), out.className = cn;
1317
864
  }
1318
- if (variants[name] && variantValues.has(name)) {
1319
- const styleState = {
1320
- ...propMapperStyleState,
1321
- props: completeProps,
1322
- curProps: completeProps
1323
- };
1324
- let out = Object.fromEntries(
1325
- propMapper(name, variantValues.get(name), styleState) || []
1326
- );
1327
- if (out && isTargetingHTML) {
1328
- const cn = out.className;
1329
- out = createDOMProps(isTextView ? "span" : "div", out);
1330
- out.className = cn;
1331
- }
1332
- if (shouldPrintDebug) {
1333
- logger.info([" - expanded variant", name, out].join(" "));
1334
- }
1335
- for (const key2 in out) {
1336
- const value2 = out[key2];
1337
- if (isValidStyleKey(key2, staticConfig)) {
1338
- acc.push({
1339
- type: "style",
1340
- value: { [key2]: value2 },
1341
- name: key2,
1342
- attr: cur.value
1343
- });
1344
- } else {
1345
- acc.push({
1346
- type: "attr",
1347
- value: t.jsxAttribute(
1348
- t.jsxIdentifier(key2),
1349
- t.jsxExpressionContainer(
1350
- typeof value2 === "string" ? t.stringLiteral(value2) : literalToAst(value2)
1351
- )
1352
- )
1353
- });
1354
- }
1355
- }
865
+ shouldPrintDebug && logger.info([" - expanded variant", name, out].join(" "));
866
+ for (const key2 in out) {
867
+ const value2 = out[key2];
868
+ isValidStyleKey(key2, staticConfig) ? acc.push({
869
+ type: "style",
870
+ value: { [key2]: value2 },
871
+ name: key2,
872
+ attr: cur.value
873
+ }) : acc.push({
874
+ type: "attr",
875
+ value: t.jsxAttribute(
876
+ t.jsxIdentifier(key2),
877
+ t.jsxExpressionContainer(
878
+ typeof value2 == "string" ? t.stringLiteral(value2) : literalToAst(value2)
879
+ )
880
+ )
881
+ });
1356
882
  }
1357
883
  }
1358
884
  }
1359
885
  }
1360
- if (cur.type !== "style") {
1361
- acc.push(cur);
1362
- return acc;
1363
- }
886
+ if (cur.type !== "style")
887
+ return acc.push(cur), acc;
1364
888
  let key = Object.keys(cur.value)[0];
1365
- const value = cur.value[key];
1366
- const fullKey = tamaguiConfig == null ? void 0 : tamaguiConfig.shorthands[key];
1367
- if (fullKey) {
1368
- cur.value = { [fullKey]: value };
1369
- key = fullKey;
1370
- }
1371
- if (disableExtractVariables) {
1372
- if (value[0] === "$" && (usedThemeKeys.has(key) || usedThemeKeys.has(fullKey))) {
1373
- if (shouldPrintDebug) {
1374
- logger.info([` keeping variable inline: ${key} =`, value].join(" "));
1375
- }
1376
- acc.push({
1377
- type: "attr",
1378
- value: t.jsxAttribute(
1379
- t.jsxIdentifier(key),
1380
- t.jsxExpressionContainer(t.stringLiteral(value))
1381
- )
1382
- });
1383
- return acc;
1384
- }
1385
- }
1386
- acc.push(cur);
1387
- return acc;
1388
- }, []);
1389
- tm.mark("jsx-element-expanded", !!shouldPrintDebug);
1390
- if (shouldPrintDebug) {
1391
- logger.info(
1392
- [" - attrs (expanded): \n", logLines(attrs.map(attrStr).join(", "))].join(
1393
- " "
889
+ const value = cur.value[key], fullKey = tamaguiConfig?.shorthands[key];
890
+ return fullKey && (cur.value = { [fullKey]: value }, key = fullKey), disableExtractVariables && value[0] === "$" && (usedThemeKeys.has(key) || usedThemeKeys.has(fullKey)) ? (shouldPrintDebug && logger.info([` keeping variable inline: ${key} =`, value].join(" ")), acc.push({
891
+ type: "attr",
892
+ value: t.jsxAttribute(
893
+ t.jsxIdentifier(key),
894
+ t.jsxExpressionContainer(t.stringLiteral(value))
1394
895
  )
1395
- );
1396
- }
896
+ }), acc) : (acc.push(cur), acc);
897
+ }, []), tm.mark("jsx-element-expanded", !!shouldPrintDebug), shouldPrintDebug && logger.info(
898
+ [` - attrs (expanded):
899
+ `, logLines(attrs.map(attrStr).join(", "))].join(
900
+ " "
901
+ )
902
+ );
1397
903
  let prev = null;
1398
- const getProps = (props, includeProps = false, debugName = "") => {
1399
- if (!props) {
1400
- if (shouldPrintDebug)
1401
- logger.info([" getProps() no props"].join(" "));
1402
- return {};
1403
- }
1404
- if (excludeProps == null ? void 0 : excludeProps.size) {
1405
- for (const key in props) {
1406
- if (excludeProps.has(key)) {
1407
- if (shouldPrintDebug)
1408
- logger.info([" delete excluded", key].join(" "));
1409
- delete props[key];
1410
- }
1411
- }
1412
- }
904
+ const getProps = (props, includeProps = !1, debugName = "") => {
905
+ if (!props)
906
+ return shouldPrintDebug && logger.info([" getProps() no props"].join(" ")), {};
907
+ if (excludeProps?.size)
908
+ for (const key in props)
909
+ excludeProps.has(key) && (shouldPrintDebug && logger.info([" delete excluded", key].join(" ")), delete props[key]);
1413
910
  try {
1414
911
  const out = getSplitStyles(
1415
912
  props,
@@ -1419,226 +916,124 @@ function createExtractor({ logger = console } = { logger: console }) {
1419
916
  componentState,
1420
917
  {
1421
918
  ...styleProps,
919
+ noClassNames: !0,
1422
920
  fallbackProps: completeProps
1423
921
  },
1424
922
  void 0,
1425
923
  void 0,
1426
924
  void 0,
1427
925
  debugPropValue || shouldPrintDebug
1428
- );
1429
- const outProps = {
926
+ ), outProps = {
1430
927
  ...includeProps ? out.viewProps : {},
1431
928
  ...out.style,
1432
929
  ...out.pseudos
1433
930
  };
1434
- if (shouldPrintDebug) {
1435
- logger.info(`(${debugName})`);
1436
- logger.info(`
1437
- getProps (props in): ${logLines(objToStr(props))}`);
1438
- logger.info(`
1439
- getProps (outProps): ${logLines(objToStr(outProps))}`);
1440
- }
1441
- if (out.fontFamily) {
1442
- setPropsToFontFamily(outProps, out.fontFamily);
1443
- if (shouldPrintDebug) {
1444
- logger.info(`
1445
- \u{1F4AC} new font fam: ${out.fontFamily}`);
1446
- }
1447
- }
1448
- return outProps;
931
+ return shouldPrintDebug && (logger.info(`(${debugName})`), logger.info(`
932
+ getProps (props in): ${logLines(objToStr(props))}`), logger.info(`
933
+ getProps (outProps): ${logLines(objToStr(outProps))}`)), out.fontFamily && (setPropsToFontFamily(outProps, out.fontFamily), shouldPrintDebug && logger.info(`
934
+ \u{1F4AC} new font fam: ${out.fontFamily}`)), outProps;
1449
935
  } catch (err) {
1450
- logger.info(["error", err.message, err.stack].join(" "));
1451
- return {};
936
+ return logger.info(["error", err.message, err.stack].join(" ")), {};
1452
937
  }
1453
938
  };
1454
- if (shouldFlatten) {
1455
- attrs.unshift({
1456
- type: "style",
1457
- value: defaultProps
1458
- });
1459
- }
1460
- attrs = attrs.reduce((acc, cur) => {
939
+ shouldFlatten && attrs.unshift({
940
+ type: "style",
941
+ value: defaultProps
942
+ }), attrs = attrs.reduce((acc, cur) => {
1461
943
  if (cur.type === "style") {
1462
- const key = Object.keys(cur.value)[0];
1463
- const value = cur.value[key];
1464
- const shouldKeepOriginalAttr = (
944
+ const key = Object.keys(cur.value)[0], value = cur.value[key];
945
+ if (
1465
946
  // !isStyleAndAttr[key] &&
1466
947
  !shouldFlatten && // de-opt if non-style
1467
948
  !validStyles[key] && !pseudoDescriptors[key] && !(key.startsWith("data-") || key.startsWith("aria-"))
1468
- );
1469
- if (shouldKeepOriginalAttr) {
1470
- if (shouldPrintDebug) {
1471
- logger.info([" - keeping as non-style", key].join(" "));
1472
- }
1473
- prev = cur;
1474
- acc.push({
949
+ )
950
+ return shouldPrintDebug && logger.info([" - keeping as non-style", key].join(" ")), prev = cur, acc.push({
1475
951
  type: "attr",
1476
952
  value: t.jsxAttribute(
1477
953
  t.jsxIdentifier(key),
1478
954
  t.jsxExpressionContainer(
1479
- typeof value === "string" ? t.stringLiteral(value) : literalToAst(value)
955
+ typeof value == "string" ? t.stringLiteral(value) : literalToAst(value)
1480
956
  )
1481
957
  )
1482
- });
1483
- acc.push(cur);
1484
- return acc;
1485
- }
1486
- if ((prev == null ? void 0 : prev.type) === "style") {
1487
- mergeStyles2(prev.value, cur.value);
1488
- return acc;
1489
- }
958
+ }), acc.push(cur), acc;
959
+ if (prev?.type === "style")
960
+ return mergeStyles(prev.value, cur.value), acc;
1490
961
  }
1491
- prev = cur;
1492
- acc.push(cur);
1493
- return acc;
1494
- }, []);
1495
- if (shouldPrintDebug) {
1496
- logger.info(
1497
- [
1498
- " - attrs (combined \u{1F500}): \n",
1499
- logLines(attrs.map(attrStr).join(", "))
1500
- ].join(" ")
1501
- );
1502
- }
962
+ return prev = cur, acc.push(cur), acc;
963
+ }, []), shouldPrintDebug && logger.info(
964
+ [
965
+ ` - attrs (combined \u{1F500}):
966
+ `,
967
+ logLines(attrs.map(attrStr).join(", "))
968
+ ].join(" ")
969
+ );
1503
970
  let getStyleError = null;
1504
- for (const attr of attrs) {
971
+ for (const attr of attrs)
1505
972
  try {
1506
- if (shouldPrintDebug) {
1507
- console.log(` Processing ${attr.type}:`);
1508
- }
1509
- switch (attr.type) {
973
+ switch (shouldPrintDebug && console.log(` Processing ${attr.type}:`), attr.type) {
1510
974
  case "ternary": {
1511
- const a = getProps(attr.value.alternate, false, "ternary.alternate");
1512
- const c = getProps(attr.value.consequent, false, "ternary.consequent");
1513
- if (a)
1514
- attr.value.alternate = a;
1515
- if (c)
1516
- attr.value.consequent = c;
1517
- if (shouldPrintDebug)
1518
- logger.info([" => tern ", attrStr(attr)].join(" "));
975
+ const a = getProps(attr.value.alternate, !1, "ternary.alternate"), c = getProps(attr.value.consequent, !1, "ternary.consequent");
976
+ a && (attr.value.alternate = a), c && (attr.value.consequent = c), shouldPrintDebug && logger.info([" => tern ", attrStr(attr)].join(" "));
1519
977
  continue;
1520
978
  }
1521
979
  case "style": {
1522
- const styles = getProps(attr.value, false, "style");
1523
- if (styles) {
1524
- attr.value = styles;
1525
- }
1526
- if (shouldPrintDebug)
1527
- logger.info([" * styles (in)", logLines(objToStr(attr.value))].join(" "));
1528
- if (shouldPrintDebug)
1529
- logger.info([" * styles (out)", logLines(objToStr(styles))].join(" "));
980
+ const styles = getProps(attr.value, !1, "style");
981
+ styles && (attr.value = styles), shouldPrintDebug && logger.info([" * styles (in)", logLines(objToStr(attr.value))].join(" ")), shouldPrintDebug && logger.info([" * styles (out)", logLines(objToStr(styles))].join(" "));
1530
982
  continue;
1531
983
  }
1532
- case "attr": {
984
+ case "attr":
1533
985
  if (shouldFlatten && t.isJSXAttribute(attr.value)) {
1534
986
  const key = attr.value.name.name;
1535
- if (key === "style" || key === "className" || key === "tag") {
987
+ if (key === "style" || key === "className" || key === "tag")
1536
988
  continue;
1537
- }
1538
989
  const value = attemptEvalSafe(
1539
- attr.value.value || t.booleanLiteral(true)
990
+ attr.value.value || t.booleanLiteral(!0)
1540
991
  );
1541
992
  if (value !== FAILED_EVAL) {
1542
- const outProps = getProps({ [key]: value }, true, `attr.${key}`);
1543
- const outKey = Object.keys(outProps)[0];
993
+ const outProps = getProps({ [key]: value }, !0, `attr.${key}`), outKey = Object.keys(outProps)[0];
1544
994
  if (outKey) {
1545
995
  const outVal = outProps[outKey];
1546
996
  attr.value = t.jsxAttribute(
1547
997
  t.jsxIdentifier(outKey),
1548
998
  t.jsxExpressionContainer(
1549
- typeof outVal === "string" ? t.stringLiteral(outVal) : literalToAst(outVal)
999
+ typeof outVal == "string" ? t.stringLiteral(outVal) : literalToAst(outVal)
1550
1000
  )
1551
1001
  );
1552
1002
  }
1553
1003
  }
1554
1004
  }
1555
- }
1556
1005
  }
1557
1006
  } catch (err) {
1558
1007
  getStyleError = err;
1559
1008
  }
1560
- }
1561
- if (shouldPrintDebug) {
1562
- logger.info([" - attrs (ternaries/combined):\n", logLines(attrs.map(attrStr).join(", "))].join(" "));
1563
- }
1564
- tm.mark("jsx-element-styles", !!shouldPrintDebug);
1565
- if (getStyleError) {
1566
- logger.info([" \u26A0\uFE0F postprocessing error, deopt", getStyleError].join(" "));
1567
- node.attributes = ogAttributes;
1568
- return null;
1569
- }
1009
+ if (shouldPrintDebug && logger.info([` - attrs (ternaries/combined):
1010
+ `, logLines(attrs.map(attrStr).join(", "))].join(" ")), tm.mark("jsx-element-styles", !!shouldPrintDebug), getStyleError)
1011
+ return logger.info([" \u26A0\uFE0F postprocessing error, deopt", getStyleError].join(" ")), node.attributes = ogAttributes, null;
1570
1012
  const existingStyleKeys = /* @__PURE__ */ new Set();
1571
1013
  for (let i = attrs.length - 1; i >= 0; i--) {
1572
1014
  const attr = attrs[i];
1573
- if (shouldFlatten) {
1574
- if (attr.type === "attr") {
1575
- if (t.isJSXAttribute(attr.value)) {
1576
- if (t.isJSXIdentifier(attr.value.name)) {
1577
- const name = attr.value.name.name;
1578
- if (INLINE_EXTRACTABLE[name]) {
1579
- attr.value.name.name = INLINE_EXTRACTABLE[name];
1580
- }
1581
- }
1582
- }
1583
- }
1584
- }
1585
- if (attr.type === "style") {
1586
- for (const key in attr.value) {
1587
- if (existingStyleKeys.has(key)) {
1588
- if (shouldPrintDebug) {
1589
- logger.info([` >> delete existing ${key}`].join(" "));
1590
- }
1591
- delete attr.value[key];
1592
- } else {
1593
- existingStyleKeys.add(key);
1594
- }
1595
- }
1015
+ if (shouldFlatten && attr.type === "attr" && t.isJSXAttribute(attr.value) && t.isJSXIdentifier(attr.value.name)) {
1016
+ const name = attr.value.name.name;
1017
+ INLINE_EXTRACTABLE[name] && (attr.value.name.name = INLINE_EXTRACTABLE[name]);
1596
1018
  }
1019
+ if (attr.type === "style")
1020
+ for (const key in attr.value)
1021
+ existingStyleKeys.has(key) ? (shouldPrintDebug && logger.info([` >> delete existing ${key}`].join(" ")), delete attr.value[key]) : existingStyleKeys.add(key);
1597
1022
  }
1598
- if (!shouldFlatten) {
1599
- if (inlineWhenUnflattened.size) {
1600
- for (const [index, attr] of attrs.entries()) {
1601
- if (attr.type === "style") {
1602
- for (const key in attr.value) {
1603
- if (!inlineWhenUnflattened.has(key))
1604
- continue;
1605
- const val = inlineWhenUnflattenedOGVals[key];
1606
- if (val) {
1607
- delete attr.value[key];
1608
- attrs.splice(index - 1, 0, val.attr);
1609
- } else {
1610
- delete attr.value[key];
1611
- }
1612
- }
1023
+ if (!shouldFlatten && inlineWhenUnflattened.size) {
1024
+ for (const [index, attr] of attrs.entries())
1025
+ if (attr.type === "style")
1026
+ for (const key in attr.value) {
1027
+ if (!inlineWhenUnflattened.has(key))
1028
+ continue;
1029
+ const val = inlineWhenUnflattenedOGVals[key];
1030
+ val ? (delete attr.value[key], attrs.splice(index - 1, 0, val.attr)) : delete attr.value[key];
1613
1031
  }
1614
- }
1615
- }
1616
- }
1617
- if (shouldFlatten) {
1618
- if (shouldPrintDebug) {
1619
- logger.info([" [\u2705] flattening", originalNodeName, flatNode].join(" "));
1620
- }
1621
- node.name.name = flatNode;
1622
- res.flattened++;
1623
- if (closingElement) {
1624
- closingElement.name.name = flatNode;
1625
- }
1626
- }
1627
- const isNativeNotFlat = !shouldFlatten && target === "native";
1628
- if (isNativeNotFlat) {
1629
- if (shouldPrintDebug) {
1630
- logger.info(`Disabled flattening except for simple cases on native for now`);
1631
- }
1632
- node.attributes = ogAttributes;
1633
- return null;
1634
- }
1635
- if (shouldPrintDebug) {
1636
- logger.info([` - inlined props (${inlined.size}):`, shouldDeopt ? " deopted" : "", hasSpread ? " has spread" : "", staticConfig.neverFlatten ? "neverFlatten" : ""].join(" "));
1637
- logger.info(` - shouldFlatten/isFlattened: ${shouldFlatten}`);
1638
- logger.info(` - attrs (end):
1639
- ${logLines(attrs.map(attrStr).join(", "))}`);
1640
1032
  }
1641
- onExtractTag({
1033
+ if (shouldFlatten && (shouldPrintDebug && logger.info([" [\u2705] flattening", originalNodeName, flatNode].join(" ")), node.name.name = flatNode, res.flattened++, closingElement && (closingElement.name.name = flatNode)), !shouldFlatten && target === "native")
1034
+ return shouldPrintDebug && logger.info("Disabled flattening except for simple cases on native for now"), node.attributes = ogAttributes, null;
1035
+ shouldPrintDebug && (logger.info([` - inlined props (${inlined.size}):`, shouldDeopt ? " deopted" : "", hasSpread ? " has spread" : "", staticConfig.neverFlatten ? "neverFlatten" : ""].join(" ")), logger.info(` - shouldFlatten/isFlattened: ${shouldFlatten}`), logger.info(` - attrs (end):
1036
+ ${logLines(attrs.map(attrStr).join(", "))}`)), onExtractTag({
1642
1037
  parserProps: propsWithFileInfo,
1643
1038
  attrs,
1644
1039
  node,
@@ -1654,27 +1049,18 @@ function createExtractor({ logger = console } = { logger: console }) {
1654
1049
  staticConfig
1655
1050
  });
1656
1051
  } catch (err) {
1657
- node.attributes = ogAttributes;
1658
- console.error(`@tamagui/static Error: ${err.message} ${err.stack}`);
1052
+ node.attributes = ogAttributes, console.error(`@tamagui/static Error: ${err.message} ${err.stack}`);
1659
1053
  } finally {
1660
- if (debugPropValue) {
1661
- shouldPrintDebug = ogDebug;
1662
- }
1054
+ debugPropValue && (shouldPrintDebug = ogDebug);
1663
1055
  }
1664
1056
  }
1665
- });
1666
- tm.mark("jsx-done", !!shouldPrintDebug);
1667
- if (modifiedComponents.size) {
1057
+ }), tm.mark("jsx-done", !!shouldPrintDebug), modifiedComponents.size) {
1668
1058
  const all = Array.from(modifiedComponents);
1669
- if (shouldPrintDebug) {
1670
- logger.info(` [\u{1FA9D}] hook check ${all.length}`);
1671
- }
1672
- for (const comp of all) {
1059
+ shouldPrintDebug && logger.info(` [\u{1FA9D}] hook check ${all.length}`);
1060
+ for (const comp of all)
1673
1061
  removeUnusedHooks(comp, shouldPrintDebug);
1674
- }
1675
1062
  }
1676
- tm.done(shouldPrintDebug === "verbose");
1677
- return res;
1063
+ return tm.done(shouldPrintDebug === "verbose"), res;
1678
1064
  }
1679
1065
  }
1680
1066
  export {