@tachui/core 0.7.1-alpha → 0.8.1-alpha

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 (286) hide show
  1. package/README.md +20 -2
  2. package/dist/bundles/assets.d.ts +19 -0
  3. package/dist/bundles/assets.d.ts.map +1 -0
  4. package/dist/bundles/common.d.ts +1 -1
  5. package/dist/bundles/common.d.ts.map +1 -1
  6. package/dist/bundles/context.d.ts +22 -0
  7. package/dist/bundles/context.d.ts.map +1 -0
  8. package/dist/bundles/minimal.d.ts +8 -18
  9. package/dist/bundles/minimal.d.ts.map +1 -1
  10. package/dist/bundles/production-minimal.d.ts +2 -16
  11. package/dist/bundles/production-minimal.d.ts.map +1 -1
  12. package/dist/common.js +405 -828
  13. package/dist/compiler/advanced-parser.d.ts.map +1 -1
  14. package/dist/compiler/codegen.d.ts.map +1 -1
  15. package/dist/compiler/index.js +6 -1387
  16. package/dist/compiler/parser.d.ts +1 -1
  17. package/dist/compiler/parser.d.ts.map +1 -1
  18. package/dist/compiler/plugin.d.ts.map +1 -1
  19. package/dist/compiler/types.d.ts +28 -0
  20. package/dist/compiler/types.d.ts.map +1 -1
  21. package/dist/component-XAzF1xqs.js +487 -0
  22. package/dist/component-base-x2XmHFjy.js +255 -0
  23. package/dist/components/index.d.ts +4 -38
  24. package/dist/components/index.d.ts.map +1 -1
  25. package/dist/components/index.js +7 -4167
  26. package/dist/components/wrapper.d.ts +5 -152
  27. package/dist/components/wrapper.d.ts.map +1 -1
  28. package/dist/concatenated-component-ByPl3_FF.js +2933 -0
  29. package/dist/constants/index.d.ts +1 -1
  30. package/dist/constants/layout.d.ts +47 -4
  31. package/dist/constants/layout.d.ts.map +1 -1
  32. package/dist/constants/layout.js +84 -0
  33. package/dist/css-classes/index.js +176 -0
  34. package/dist/{dom-bridge-Cx-s6Ihx.js → dom-bridge-CAa1N2zX.js} +28 -28
  35. package/dist/{effect-CytAc9em.js → effect-B9Knft0b.js} +3 -3
  36. package/dist/essential.js +397 -826
  37. package/dist/index-DEBd8cq7.js +1144 -0
  38. package/dist/index-DIvMCJQO.js +268 -0
  39. package/dist/index-vdsiw6gQ.js +777 -0
  40. package/dist/index.d.ts +9 -9
  41. package/dist/index.d.ts.map +1 -1
  42. package/dist/index.js +397 -826
  43. package/dist/minimal-prod.js +101 -155
  44. package/dist/minimal.js +118 -170
  45. package/dist/modifiers/background.d.ts +41 -11
  46. package/dist/modifiers/background.d.ts.map +1 -1
  47. package/dist/modifiers/base.d.ts +6 -33
  48. package/dist/modifiers/base.d.ts.map +1 -1
  49. package/dist/modifiers/base.js +487 -0
  50. package/dist/modifiers/builder.d.ts +103 -195
  51. package/dist/modifiers/builder.d.ts.map +1 -1
  52. package/dist/modifiers/builder.js +9 -0
  53. package/dist/modifiers/core.d.ts +9 -401
  54. package/dist/modifiers/core.d.ts.map +1 -1
  55. package/dist/modifiers/{utils.d.ts → factories.d.ts} +18 -5
  56. package/dist/modifiers/factories.d.ts.map +1 -0
  57. package/dist/modifiers/index.d.ts +8 -52
  58. package/dist/modifiers/index.d.ts.map +1 -1
  59. package/dist/modifiers/index.js +38 -0
  60. package/dist/modifiers/presets.d.ts +368 -0
  61. package/dist/modifiers/presets.d.ts.map +1 -0
  62. package/dist/modifiers/registry.js +10 -0
  63. package/dist/modifiers/types.d.ts +39 -211
  64. package/dist/modifiers/types.d.ts.map +1 -1
  65. package/dist/modifiers/types.js +4 -0
  66. package/dist/observed-object-Cos-FtjP.js +269 -0
  67. package/dist/performance-optimizer-stub-CtfXUwl4.js +38 -0
  68. package/dist/plugin-BCAdZXKq.js +1680 -0
  69. package/dist/plugins/index.d.ts +5 -6
  70. package/dist/plugins/index.d.ts.map +1 -1
  71. package/dist/plugins/index.js +147 -297
  72. package/dist/plugins/simplified-index.d.ts +5 -6
  73. package/dist/plugins/simplified-index.d.ts.map +1 -1
  74. package/dist/production-minimal-BY_gMc-l.js +2532 -0
  75. package/dist/reactive/index.js +96 -95
  76. package/dist/reactive/types.js +4 -0
  77. package/dist/runtime/concatenation-aria.d.ts +24 -0
  78. package/dist/runtime/concatenation-aria.d.ts.map +1 -0
  79. package/dist/runtime/concatenation-aria.js +53 -0
  80. package/dist/runtime/concatenation-full.d.ts +30 -0
  81. package/dist/runtime/concatenation-full.d.ts.map +1 -0
  82. package/dist/runtime/concatenation-full.js +77 -0
  83. package/dist/runtime/concatenation-minimal.d.ts +25 -0
  84. package/dist/runtime/concatenation-minimal.d.ts.map +1 -0
  85. package/dist/runtime/concatenation-minimal.js +40 -0
  86. package/dist/runtime/dom-bridge.js +5 -5
  87. package/dist/runtime/element-override.d.ts.map +1 -1
  88. package/dist/runtime/index.d.ts +0 -7
  89. package/dist/runtime/index.d.ts.map +1 -1
  90. package/dist/runtime/renderer.d.ts.map +1 -1
  91. package/dist/runtime/renderer.js +7 -8
  92. package/dist/runtime/semantic-role-manager.d.ts.map +1 -1
  93. package/dist/runtime/types.js +1 -0
  94. package/dist/{scheduler-7SvC3a21.js → scheduler-BKeqwrYE.js} +130 -130
  95. package/dist/validation/build-time-stub.d.ts +33 -0
  96. package/dist/validation/build-time-stub.d.ts.map +1 -0
  97. package/dist/validation/debug-tools-stub.d.ts +67 -0
  98. package/dist/validation/debug-tools-stub.d.ts.map +1 -0
  99. package/dist/validation/index.d.ts +23 -78
  100. package/dist/validation/index.d.ts.map +1 -1
  101. package/dist/validation/index.js +609 -6470
  102. package/dist/validation/lifecycle-validation.d.ts.map +1 -1
  103. package/dist/validation/performance-optimizer-stub.d.ts +50 -0
  104. package/dist/validation/performance-optimizer-stub.d.ts.map +1 -0
  105. package/dist/validation/plugin-registration.d.ts +5 -1
  106. package/dist/validation/plugin-registration.d.ts.map +1 -1
  107. package/dist/validation/production-bypass-core.d.ts +69 -0
  108. package/dist/validation/production-bypass-core.d.ts.map +1 -0
  109. package/package.json +61 -5
  110. package/dist/ScrollView-h-6wYMAm.js +0 -515
  111. package/dist/Spacer-BbteDQ9I.js +0 -5337
  112. package/dist/binding-CmdpowkI.js +0 -2276
  113. package/dist/components/BasicInput.d.ts +0 -116
  114. package/dist/components/BasicInput.d.ts.map +0 -1
  115. package/dist/components/Button.d.ts +0 -252
  116. package/dist/components/Button.d.ts.map +0 -1
  117. package/dist/components/Divider.d.ts +0 -141
  118. package/dist/components/Divider.d.ts.map +0 -1
  119. package/dist/components/EnhancedLink.d.ts +0 -365
  120. package/dist/components/EnhancedLink.d.ts.map +0 -1
  121. package/dist/components/Form.d.ts +0 -141
  122. package/dist/components/Form.d.ts.map +0 -1
  123. package/dist/components/Grid.d.ts +0 -698
  124. package/dist/components/Grid.d.ts.map +0 -1
  125. package/dist/components/GridResponsive.d.ts +0 -214
  126. package/dist/components/GridResponsive.d.ts.map +0 -1
  127. package/dist/components/Image.d.ts +0 -162
  128. package/dist/components/Image.d.ts.map +0 -1
  129. package/dist/components/List.d.ts +0 -287
  130. package/dist/components/List.d.ts.map +0 -1
  131. package/dist/components/Menu.d.ts +0 -159
  132. package/dist/components/Menu.d.ts.map +0 -1
  133. package/dist/components/Picker.d.ts +0 -153
  134. package/dist/components/Picker.d.ts.map +0 -1
  135. package/dist/components/ScrollView.d.ts +0 -222
  136. package/dist/components/ScrollView.d.ts.map +0 -1
  137. package/dist/components/Section.d.ts +0 -153
  138. package/dist/components/Section.d.ts.map +0 -1
  139. package/dist/components/Show.d.ts +0 -64
  140. package/dist/components/Show.d.ts.map +0 -1
  141. package/dist/components/Spacer.d.ts +0 -35
  142. package/dist/components/Spacer.d.ts.map +0 -1
  143. package/dist/components/Text.d.ts +0 -242
  144. package/dist/components/Text.d.ts.map +0 -1
  145. package/dist/components/Toggle.d.ts +0 -207
  146. package/dist/components/Toggle.d.ts.map +0 -1
  147. package/dist/concatenated-component-DPcl2TEO.js +0 -6779
  148. package/dist/context--zQFIImS.js +0 -283
  149. package/dist/debug/index.d.ts +0 -61
  150. package/dist/debug/index.d.ts.map +0 -1
  151. package/dist/debug.js +0 -178
  152. package/dist/developer-experience/enhanced-errors.d.ts +0 -128
  153. package/dist/developer-experience/enhanced-errors.d.ts.map +0 -1
  154. package/dist/developer-experience/enhanced-types.d.ts +0 -281
  155. package/dist/developer-experience/enhanced-types.d.ts.map +0 -1
  156. package/dist/developer-experience/index.d.ts +0 -44
  157. package/dist/developer-experience/index.d.ts.map +0 -1
  158. package/dist/index-Nfi2SBQh.js +0 -3268
  159. package/dist/modifiers/attributes.d.ts +0 -203
  160. package/dist/modifiers/attributes.d.ts.map +0 -1
  161. package/dist/modifiers/backdrop.d.ts +0 -59
  162. package/dist/modifiers/backdrop.d.ts.map +0 -1
  163. package/dist/modifiers/border.d.ts +0 -217
  164. package/dist/modifiers/border.d.ts.map +0 -1
  165. package/dist/modifiers/effects.d.ts +0 -159
  166. package/dist/modifiers/effects.d.ts.map +0 -1
  167. package/dist/modifiers/elements.d.ts +0 -240
  168. package/dist/modifiers/elements.d.ts.map +0 -1
  169. package/dist/modifiers/filters.d.ts +0 -275
  170. package/dist/modifiers/filters.d.ts.map +0 -1
  171. package/dist/modifiers/flexbox.d.ts +0 -82
  172. package/dist/modifiers/flexbox.d.ts.map +0 -1
  173. package/dist/modifiers/font.d.ts +0 -71
  174. package/dist/modifiers/font.d.ts.map +0 -1
  175. package/dist/modifiers/grid.d.ts +0 -92
  176. package/dist/modifiers/grid.d.ts.map +0 -1
  177. package/dist/modifiers/margin.d.ts +0 -128
  178. package/dist/modifiers/margin.d.ts.map +0 -1
  179. package/dist/modifiers/padding.d.ts +0 -204
  180. package/dist/modifiers/padding.d.ts.map +0 -1
  181. package/dist/modifiers/responsive/advanced-utilities.d.ts +0 -118
  182. package/dist/modifiers/responsive/advanced-utilities.d.ts.map +0 -1
  183. package/dist/modifiers/responsive/breakpoints.d.ts +0 -81
  184. package/dist/modifiers/responsive/breakpoints.d.ts.map +0 -1
  185. package/dist/modifiers/responsive/css-generator.d.ts +0 -100
  186. package/dist/modifiers/responsive/css-generator.d.ts.map +0 -1
  187. package/dist/modifiers/responsive/dev-tools.d.ts +0 -107
  188. package/dist/modifiers/responsive/dev-tools.d.ts.map +0 -1
  189. package/dist/modifiers/responsive/index.d.ts +0 -29
  190. package/dist/modifiers/responsive/index.d.ts.map +0 -1
  191. package/dist/modifiers/responsive/layout-patterns.d.ts +0 -230
  192. package/dist/modifiers/responsive/layout-patterns.d.ts.map +0 -1
  193. package/dist/modifiers/responsive/performance.d.ts +0 -130
  194. package/dist/modifiers/responsive/performance.d.ts.map +0 -1
  195. package/dist/modifiers/responsive/responsive-builder.d.ts +0 -133
  196. package/dist/modifiers/responsive/responsive-builder.d.ts.map +0 -1
  197. package/dist/modifiers/responsive/responsive-modifier.d.ts +0 -123
  198. package/dist/modifiers/responsive/responsive-modifier.d.ts.map +0 -1
  199. package/dist/modifiers/responsive/types.d.ts +0 -183
  200. package/dist/modifiers/responsive/types.d.ts.map +0 -1
  201. package/dist/modifiers/responsive/utilities.d.ts +0 -149
  202. package/dist/modifiers/responsive/utilities.d.ts.map +0 -1
  203. package/dist/modifiers/scroll.d.ts +0 -143
  204. package/dist/modifiers/scroll.d.ts.map +0 -1
  205. package/dist/modifiers/shadows.d.ts +0 -114
  206. package/dist/modifiers/shadows.d.ts.map +0 -1
  207. package/dist/modifiers/size.d.ts +0 -113
  208. package/dist/modifiers/size.d.ts.map +0 -1
  209. package/dist/modifiers/text.d.ts +0 -147
  210. package/dist/modifiers/text.d.ts.map +0 -1
  211. package/dist/modifiers/transformations.d.ts +0 -329
  212. package/dist/modifiers/transformations.d.ts.map +0 -1
  213. package/dist/modifiers/transitions.d.ts +0 -98
  214. package/dist/modifiers/transitions.d.ts.map +0 -1
  215. package/dist/modifiers/typography.d.ts +0 -192
  216. package/dist/modifiers/typography.d.ts.map +0 -1
  217. package/dist/modifiers/utility.d.ts +0 -69
  218. package/dist/modifiers/utility.d.ts.map +0 -1
  219. package/dist/modifiers/utils.d.ts.map +0 -1
  220. package/dist/plugins/simplified-error-handler.d.ts +0 -83
  221. package/dist/plugins/simplified-error-handler.d.ts.map +0 -1
  222. package/dist/runtime/dev-tools.d.ts +0 -240
  223. package/dist/runtime/dev-tools.d.ts.map +0 -1
  224. package/dist/runtime/development-warnings.d.ts +0 -42
  225. package/dist/runtime/development-warnings.d.ts.map +0 -1
  226. package/dist/runtime/error-boundary.d.ts +0 -302
  227. package/dist/runtime/error-boundary.d.ts.map +0 -1
  228. package/dist/runtime/error-recovery.d.ts +0 -267
  229. package/dist/runtime/error-recovery.d.ts.map +0 -1
  230. package/dist/runtime/error-reporting.d.ts +0 -287
  231. package/dist/runtime/error-reporting.d.ts.map +0 -1
  232. package/dist/runtime/error-utils.d.ts +0 -204
  233. package/dist/runtime/error-utils.d.ts.map +0 -1
  234. package/dist/runtime/performance.d.ts +0 -217
  235. package/dist/runtime/performance.d.ts.map +0 -1
  236. package/dist/sui-compat.d.ts +0 -110
  237. package/dist/sui-compat.d.ts.map +0 -1
  238. package/dist/validation/advanced-debugging.d.ts +0 -319
  239. package/dist/validation/advanced-debugging.d.ts.map +0 -1
  240. package/dist/validation/build-time/detection.d.ts +0 -32
  241. package/dist/validation/build-time/detection.d.ts.map +0 -1
  242. package/dist/validation/build-time/index.d.ts +0 -84
  243. package/dist/validation/build-time/index.d.ts.map +0 -1
  244. package/dist/validation/build-time/plugins.d.ts +0 -75
  245. package/dist/validation/build-time/plugins.d.ts.map +0 -1
  246. package/dist/validation/build-time/rules.d.ts +0 -73
  247. package/dist/validation/build-time/rules.d.ts.map +0 -1
  248. package/dist/validation/build-time/transformer.d.ts +0 -23
  249. package/dist/validation/build-time/transformer.d.ts.map +0 -1
  250. package/dist/validation/build-time/types.d.ts +0 -212
  251. package/dist/validation/build-time/types.d.ts.map +0 -1
  252. package/dist/validation/comprehensive.d.ts +0 -160
  253. package/dist/validation/comprehensive.d.ts.map +0 -1
  254. package/dist/validation/debug-tools.d.ts +0 -251
  255. package/dist/validation/debug-tools.d.ts.map +0 -1
  256. package/dist/validation/developer-experience.d.ts +0 -243
  257. package/dist/validation/developer-experience.d.ts.map +0 -1
  258. package/dist/validation/documentation-integration.d.ts +0 -269
  259. package/dist/validation/documentation-integration.d.ts.map +0 -1
  260. package/dist/validation/enhanced-runtime.d.ts +0 -279
  261. package/dist/validation/enhanced-runtime.d.ts.map +0 -1
  262. package/dist/validation/error-reporting.d.ts +0 -186
  263. package/dist/validation/error-reporting.d.ts.map +0 -1
  264. package/dist/validation/ide-integration.d.ts +0 -328
  265. package/dist/validation/ide-integration.d.ts.map +0 -1
  266. package/dist/validation/performance-optimizer.d.ts +0 -218
  267. package/dist/validation/performance-optimizer.d.ts.map +0 -1
  268. package/dist/validation/production-bypass.d.ts +0 -175
  269. package/dist/validation/production-bypass.d.ts.map +0 -1
  270. package/dist/validation/simple.d.ts +0 -111
  271. package/dist/validation/simple.d.ts.map +0 -1
  272. package/dist/viewport/adapters/web-adapter.d.ts +0 -227
  273. package/dist/viewport/adapters/web-adapter.d.ts.map +0 -1
  274. package/dist/viewport/components.d.ts +0 -131
  275. package/dist/viewport/components.d.ts.map +0 -1
  276. package/dist/viewport/environment.d.ts +0 -75
  277. package/dist/viewport/environment.d.ts.map +0 -1
  278. package/dist/viewport/index.d.ts +0 -138
  279. package/dist/viewport/index.d.ts.map +0 -1
  280. package/dist/viewport/index.js +0 -2085
  281. package/dist/viewport/platform-detection.d.ts +0 -59
  282. package/dist/viewport/platform-detection.d.ts.map +0 -1
  283. package/dist/viewport/types.d.ts +0 -301
  284. package/dist/viewport/types.d.ts.map +0 -1
  285. package/dist/viewport/viewport-manager.d.ts +0 -118
  286. package/dist/viewport/viewport-manager.d.ts.map +0 -1
@@ -1,1389 +1,8 @@
1
- var u = Object.defineProperty, m = (r, e, t) => e in r ? u(r, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : r[e] = t, c = (r, e, t) => m(r, typeof e != "symbol" ? e + "" : e, t);
2
- class f {
3
- constructor(e, t) {
4
- c(this, "code"), c(this, "filename"), c(this, "position", 0), c(this, "line", 1), c(this, "column", 1), this.code = e, this.filename = t;
5
- }
6
- /**
7
- * Parse advanced SwiftUI syntax into enhanced AST
8
- */
9
- parse() {
10
- const e = [];
11
- for (; !this.isAtEnd() && (this.skipWhitespace(), !this.isAtEnd()); ) {
12
- const t = this.parseAdvancedNode();
13
- t && e.push(t);
14
- }
15
- return e;
16
- }
17
- /**
18
- * Parse advanced AST nodes including conditionals and loops
19
- */
20
- parseAdvancedNode() {
21
- const e = this.currentPosition(), t = this.position;
22
- return this.match("if") ? this.parseConditional(e) : this.match("ForEach") ? this.parseForEach(e) : this.peek() === "@" ? this.parsePropertyWrapper(e) : this.peek() === "$" ? this.parseStateBinding(e) : this.isComponentStart() ? this.parseEnhancedComponent(e) : (this.position === t && this.advance(), null);
23
- }
24
- /**
25
- * Parse conditional rendering (if/else)
26
- */
27
- parseConditional(e) {
28
- this.skipWhitespace();
29
- const t = this.parseComplexExpression();
30
- if (!t)
31
- throw new Error(`Expected condition after 'if' at line ${this.line}`);
32
- this.skipWhitespace();
33
- const i = [];
34
- if (this.peek() === "{") {
35
- for (this.advance(), this.skipWhitespace(); !this.isAtEnd() && this.peek() !== "}"; ) {
36
- const a = this.parseAdvancedNode();
37
- a && i.push(a), this.skipWhitespace();
38
- }
39
- this.peek() === "}" && this.advance();
40
- }
41
- let s;
42
- if (this.skipWhitespace(), this.match("else") && (s = [], this.skipWhitespace(), this.peek() === "{")) {
43
- for (this.advance(), this.skipWhitespace(); !this.isAtEnd() && this.peek() !== "}"; ) {
44
- const a = this.parseAdvancedNode();
45
- a && s.push(a), this.skipWhitespace();
46
- }
47
- this.peek() === "}" && this.advance();
48
- }
49
- const n = {
50
- type: "Conditional",
51
- condition: t,
52
- thenBody: i,
53
- loc: {
54
- start: e,
55
- end: this.currentPosition(),
56
- source: this.filename
57
- }
58
- };
59
- return s !== void 0 && (n.elseBody = s), n;
60
- }
61
- /**
62
- * Parse ForEach loops for list rendering
63
- */
64
- parseForEach(e) {
65
- if (this.skipWhitespace(), this.peek() !== "(")
66
- throw new Error(`Expected '(' after ForEach at line ${this.line}`);
67
- this.advance(), this.skipWhitespace();
68
- const t = this.parseComplexExpression();
69
- if (!t)
70
- throw new Error(`Expected iterable expression in ForEach at line ${this.line}`);
71
- this.skipWhitespace(), this.peek() === "," && (this.advance(), this.skipWhitespace()), this.match("id:") && (this.skipWhitespace(), this.parseComplexExpression()), this.skipWhitespace(), this.peek() === ")" && this.advance(), this.skipWhitespace();
72
- let i = "item";
73
- if (this.peek() === "{") {
74
- this.advance(), this.skipWhitespace();
75
- const n = this.position, a = this.parseIdentifier();
76
- a && this.match("in") ? i = a : this.position = n;
77
- }
78
- const s = [];
79
- for (; !this.isAtEnd() && this.peek() !== "}"; ) {
80
- const n = this.parseAdvancedNode();
81
- n && s.push(n), this.skipWhitespace();
82
- }
83
- return this.peek() === "}" && this.advance(), {
84
- type: "ForEach",
85
- iterable: t,
86
- itemIdentifier: i,
87
- body: s,
88
- loc: {
89
- start: e,
90
- end: this.currentPosition(),
91
- source: this.filename
92
- }
93
- };
94
- }
95
- /**
96
- * Parse property wrappers (@State, @Computed, etc.)
97
- */
98
- parsePropertyWrapper(e) {
99
- this.advance();
100
- const t = this.parseIdentifier();
101
- if (!t || !["State", "Computed", "Effect"].includes(t))
102
- throw new Error(`Unknown property wrapper @${t} at line ${this.line}`);
103
- this.skipWhitespace();
104
- const i = this.parseIdentifier();
105
- if (!i)
106
- throw new Error(`Expected identifier after @${t} at line ${this.line}`);
107
- let s;
108
- if (this.skipWhitespace(), this.peek() === "=") {
109
- this.advance(), this.skipWhitespace();
110
- const a = this.parseComplexExpression();
111
- a && (s = a);
112
- }
113
- const n = {
114
- type: "PropertyWrapper",
115
- wrapper: t,
116
- identifier: i,
117
- loc: {
118
- start: e,
119
- end: this.currentPosition(),
120
- source: this.filename
121
- }
122
- };
123
- return s !== void 0 && (n.initialValue = s), n;
124
- }
125
- /**
126
- * Parse state bindings ($variable)
127
- */
128
- parseStateBinding(e) {
129
- this.advance();
130
- const t = this.parseIdentifier();
131
- if (!t)
132
- throw new Error(`Expected identifier after '$' at line ${this.line}`);
133
- return {
134
- type: "StateBinding",
135
- identifier: t,
136
- loc: {
137
- start: e,
138
- end: this.currentPosition(),
139
- source: this.filename
140
- }
141
- };
142
- }
143
- /**
144
- * Parse enhanced components with complex modifier chains
145
- */
146
- parseEnhancedComponent(e) {
147
- const t = this.parseIdentifier();
148
- this.skipWhitespace();
149
- const i = [], s = [];
150
- if (this.peek() === "(") {
151
- for (this.advance(), this.skipWhitespace(); !this.isAtEnd() && this.peek() !== ")"; ) {
152
- const n = this.parseComplexExpression();
153
- n && i.push(n), this.skipWhitespace(), this.peek() === "," && (this.advance(), this.skipWhitespace());
154
- }
155
- this.peek() === ")" && this.advance();
156
- } else if (this.peek() === "{") {
157
- for (this.advance(), this.skipWhitespace(); !this.isAtEnd() && this.peek() !== "}"; ) {
158
- const n = this.parseAdvancedNode();
159
- n && i.push(n), this.skipWhitespace();
160
- }
161
- this.peek() === "}" && this.advance();
162
- }
163
- for (this.skipWhitespace(); this.peek() === "."; ) {
164
- const n = this.parseAdvancedModifier();
165
- n && s.push(n), this.skipWhitespace();
166
- }
167
- return {
168
- type: "Component",
169
- name: t,
170
- children: i,
171
- modifiers: s,
172
- loc: {
173
- start: e,
174
- end: this.currentPosition(),
175
- source: this.filename
176
- }
177
- };
178
- }
179
- /**
180
- * Parse advanced modifiers with complex expressions
181
- */
182
- parseAdvancedModifier() {
183
- if (this.peek() !== ".") return null;
184
- const e = this.currentPosition();
185
- this.advance();
186
- const t = this.parseIdentifier();
187
- if (!t) return null;
188
- const i = [];
189
- if (this.peek() === "(") {
190
- for (this.advance(), this.skipWhitespace(); !this.isAtEnd() && this.peek() !== ")"; ) {
191
- const s = this.parseComplexExpression();
192
- s && i.push(s), this.skipWhitespace(), this.peek() === "," && (this.advance(), this.skipWhitespace());
193
- }
194
- this.peek() === ")" && this.advance();
195
- }
196
- return {
197
- type: "Modifier",
198
- name: t,
199
- arguments: i,
200
- loc: {
201
- start: e,
202
- end: this.currentPosition(),
203
- source: this.filename
204
- }
205
- };
206
- }
207
- /**
208
- * Parse complex expressions including function calls, property access, etc.
209
- */
210
- parseComplexExpression() {
211
- this.skipWhitespace();
212
- const e = this.currentPosition();
213
- if (this.peek() === '"' || this.peek() === "'")
214
- return this.parseStringLiteral(e);
215
- if (this.isDigit(this.peek()))
216
- return this.parseNumberLiteral(e);
217
- if (this.match("true") || this.match("false") || this.match("null")) {
218
- const i = this.code.slice(e.offset, this.position);
219
- return {
220
- type: "Literal",
221
- value: i === "true" ? !0 : i === "false" ? !1 : null,
222
- raw: i,
223
- loc: {
224
- start: e,
225
- end: this.currentPosition(),
226
- source: this.filename
227
- }
228
- };
229
- }
230
- const t = this.parseIdentifier();
231
- return t ? (this.skipWhitespace(), this.peek() === "(" ? this.parseFunctionCall(t, e) : this.peek() === "." ? this.parsePropertyAccess(t, e) : {
232
- type: "Identifier",
233
- name: t,
234
- loc: {
235
- start: e,
236
- end: this.currentPosition(),
237
- source: this.filename
238
- }
239
- }) : this.peek() === "[" ? this.parseArrayLiteral(e) : null;
240
- }
241
- /**
242
- * Parse function calls with arguments
243
- */
244
- parseFunctionCall(e, t) {
245
- this.advance(), this.skipWhitespace();
246
- const i = [];
247
- for (; !this.isAtEnd() && this.peek() !== ")"; ) {
248
- const s = this.parseComplexExpression();
249
- s && i.push(s), this.skipWhitespace(), this.peek() === "," && (this.advance(), this.skipWhitespace());
250
- }
251
- return this.peek() === ")" && this.advance(), {
252
- type: "CallExpression",
253
- callee: { type: "Identifier", name: e },
254
- arguments: i,
255
- loc: {
256
- start: t,
257
- end: this.currentPosition(),
258
- source: this.filename
259
- }
260
- };
261
- }
262
- /**
263
- * Parse property access (obj.prop)
264
- */
265
- parsePropertyAccess(e, t) {
266
- let i = e;
267
- for (; this.peek() === "."; ) {
268
- this.advance();
269
- const s = this.parseIdentifier();
270
- s && (i = `${i}.${s}`);
271
- }
272
- return {
273
- type: "MemberExpression",
274
- object: e,
275
- property: i.split(".").slice(1).join("."),
276
- loc: {
277
- start: t,
278
- end: this.currentPosition(),
279
- source: this.filename
280
- }
281
- };
282
- }
283
- /**
284
- * Parse array literals [1, 2, 3]
285
- */
286
- parseArrayLiteral(e) {
287
- this.advance(), this.skipWhitespace();
288
- const t = [];
289
- for (; !this.isAtEnd() && this.peek() !== "]"; ) {
290
- const i = this.parseComplexExpression();
291
- i && t.push(i), this.skipWhitespace(), this.peek() === "," && (this.advance(), this.skipWhitespace());
292
- }
293
- return this.peek() === "]" && this.advance(), {
294
- type: "ArrayExpression",
295
- elements: t,
296
- loc: {
297
- start: e,
298
- end: this.currentPosition(),
299
- source: this.filename
300
- }
301
- };
302
- }
303
- // Helper methods (reuse from basic parser with enhancements)
304
- parseStringLiteral(e) {
305
- const t = this.peek();
306
- this.advance();
307
- let i = "";
308
- for (; !this.isAtEnd() && this.peek() !== t; )
309
- if (this.peek() === "\\") {
310
- this.advance();
311
- const s = this.peek();
312
- switch (s) {
313
- case "n":
314
- i += `
315
- `;
316
- break;
317
- case "t":
318
- i += " ";
319
- break;
320
- case "r":
321
- i += "\r";
322
- break;
323
- case "\\":
324
- i += "\\";
325
- break;
326
- case '"':
327
- i += '"';
328
- break;
329
- case "'":
330
- i += "'";
331
- break;
332
- default:
333
- i += s;
334
- break;
335
- }
336
- this.advance();
337
- } else
338
- i += this.peek(), this.advance();
339
- return this.peek() === t && this.advance(), {
340
- type: "Literal",
341
- value: i,
342
- raw: this.code.slice(e.offset, this.position),
343
- loc: {
344
- start: e,
345
- end: this.currentPosition(),
346
- source: this.filename
347
- }
348
- };
349
- }
350
- parseNumberLiteral(e) {
351
- let t = "";
352
- for (; !this.isAtEnd() && (this.isDigit(this.peek()) || this.peek() === "."); )
353
- t += this.peek(), this.advance();
354
- return {
355
- type: "Literal",
356
- value: t.includes(".") ? parseFloat(t) : parseInt(t, 10),
357
- raw: t,
358
- loc: {
359
- start: e,
360
- end: this.currentPosition(),
361
- source: this.filename
362
- }
363
- };
364
- }
365
- parseIdentifier() {
366
- if (!this.isAlpha(this.peek()) && this.peek() !== "_")
367
- return null;
368
- let e = "";
369
- for (; !this.isAtEnd() && (this.isAlphaNumeric(this.peek()) || this.peek() === "_"); )
370
- e += this.peek(), this.advance();
371
- return e;
372
- }
373
- // Utility methods
374
- isComponentStart() {
375
- const e = this.position, t = this.line, i = this.column, s = this.parseIdentifier();
376
- return this.position = e, this.line = t, this.column = i, s ? [
377
- "VStack",
378
- "HStack",
379
- "ZStack",
380
- "List",
381
- "Form",
382
- "NavigationStack",
383
- "Text",
384
- "Button",
385
- "Image",
386
- "TextField",
387
- "Toggle",
388
- "Slider",
389
- "ScrollView",
390
- "LazyVStack",
391
- "LazyHStack"
392
- ].includes(s) : !1;
393
- }
394
- match(e) {
395
- return this.code.slice(this.position, this.position + e.length) === e ? (this.position += e.length, this.column += e.length, !0) : !1;
396
- }
397
- skipWhitespace() {
398
- for (; !this.isAtEnd() && this.isWhitespace(this.peek()); )
399
- this.peek() === `
400
- ` ? (this.line++, this.column = 1) : this.column++, this.position++;
401
- }
402
- peek() {
403
- return this.isAtEnd() ? "\0" : this.code[this.position];
404
- }
405
- advance() {
406
- const e = this.peek();
407
- return this.isAtEnd() || (this.position++, e === `
408
- ` ? (this.line++, this.column = 1) : this.column++), e;
409
- }
410
- isAtEnd() {
411
- return this.position >= this.code.length;
412
- }
413
- isWhitespace(e) {
414
- return /\s/.test(e);
415
- }
416
- isAlpha(e) {
417
- return /[a-zA-Z]/.test(e);
418
- }
419
- isDigit(e) {
420
- return /[0-9]/.test(e);
421
- }
422
- isAlphaNumeric(e) {
423
- return this.isAlpha(e) || this.isDigit(e);
424
- }
425
- currentPosition() {
426
- return {
427
- line: this.line,
428
- column: this.column,
429
- offset: this.position
430
- };
431
- }
432
- }
433
- function V(r, e) {
434
- return new f(r, e).parse();
435
- }
436
- var g = Object.defineProperty, L = (r, e, t) => e in r ? g(r, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : r[e] = t, p = (r, e, t) => L(r, typeof e != "symbol" ? e + "" : e, t);
437
- function k(r, e = {}) {
438
- return new E(e).generate(r);
439
- }
440
- class E {
441
- constructor(e) {
442
- p(this, "options"), p(this, "imports", /* @__PURE__ */ new Set()), p(this, "variables", []), p(this, "code", []), p(this, "indentLevel", 0), this.options = e;
443
- }
444
- /**
445
- * Generate complete code from AST nodes
446
- */
447
- generate(e) {
448
- return this.reset(), this.addImport("createSignal", "@tachui/core/reactive"), this.addImport("createEffect", "@tachui/core/reactive"), this.addImport("createComputed", "@tachui/core/reactive"), e.forEach((i) => this.generateNode(i)), {
449
- code: this.buildFinalCode(),
450
- map: this.options.sourceMaps ? this.generateSourceMap() : void 0
451
- };
452
- }
453
- /**
454
- * Generate code for a single AST node
455
- */
456
- generateNode(e) {
457
- switch (e.type) {
458
- case "Component":
459
- this.generateComponent(e);
460
- break;
461
- }
462
- }
463
- /**
464
- * Generate code for a component node
465
- */
466
- generateComponent(e) {
467
- switch (e.name) {
468
- case "VStack":
469
- case "HStack":
470
- case "ZStack":
471
- this.generateStackComponent(e);
472
- break;
473
- case "Text":
474
- this.generateTextComponent(e);
475
- break;
476
- case "Button":
477
- this.generateButtonComponent(e);
478
- break;
479
- case "List":
480
- this.generateListComponent(e);
481
- break;
482
- default:
483
- this.generateGenericComponent(e);
484
- break;
485
- }
486
- }
487
- /**
488
- * Generate code for stack components (VStack, HStack, ZStack)
489
- */
490
- generateStackComponent(e) {
491
- const t = e.name.toLowerCase().replace("stack", ""), i = this.createVariable("container");
492
- this.addLine(`// ${e.name} component`), this.addLine(`const ${i} = document.createElement('div')`), this.addLine(
493
- `${i}.className = 'tachui-${t} ${this.generateStackClasses(e.name)}'`
494
- );
495
- const s = this.generateModifierStyles(e.modifiers);
496
- s.length > 0 && (this.addLine(`Object.assign(${i}.style, {`), this.indent(), s.forEach((n) => this.addLine(`${n},`)), this.dedent(), this.addLine("})")), e.children.forEach((n) => {
497
- this.generateNode(n);
498
- const a = this.getLastVariable();
499
- a && this.addLine(`${i}.appendChild(${a})`);
500
- }), this.addEmptyLine();
501
- }
502
- /**
503
- * Generate code for Text component
504
- */
505
- generateTextComponent(e) {
506
- const t = this.createVariable("textElement"), i = this.getTextContent(e.children);
507
- this.addLine("// Text component"), this.addLine(`const ${t} = document.createElement('span')`), this.addLine(`${t}.className = 'tachui-text'`), this.isReactiveExpression(i) ? (this.addLine("createEffect(() => {"), this.indent(), this.addLine(`${t}.textContent = ${i}`), this.dedent(), this.addLine("})")) : this.addLine(`${t}.textContent = ${i}`);
508
- const s = this.generateModifierStyles(e.modifiers);
509
- s.length > 0 && (this.addLine(`Object.assign(${t}.style, {`), this.indent(), s.forEach((n) => this.addLine(`${n},`)), this.dedent(), this.addLine("})")), this.addEmptyLine();
510
- }
511
- /**
512
- * Generate code for Button component
513
- */
514
- generateButtonComponent(e) {
515
- const t = this.createVariable("buttonElement"), i = this.getTextContent(e.children);
516
- this.addLine("// Button component"), this.addLine(`const ${t} = document.createElement('button')`), this.addLine(`${t}.className = 'tachui-button'`), this.addLine(`${t}.textContent = ${i}`);
517
- const s = this.generateModifierStyles(e.modifiers), n = this.generateEventHandlers(e.modifiers);
518
- s.length > 0 && (this.addLine(`Object.assign(${t}.style, {`), this.indent(), s.forEach((a) => this.addLine(`${a},`)), this.dedent(), this.addLine("})")), n.forEach((a) => this.addLine(a)), this.addEmptyLine();
519
- }
520
- /**
521
- * Generate code for List component
522
- */
523
- generateListComponent(e) {
524
- const t = this.createVariable("listElement");
525
- this.addLine("// List component"), this.addLine(`const ${t} = document.createElement('div')`), this.addLine(`${t}.className = 'tachui-list'`), e.children.forEach((i) => {
526
- this.generateNode(i);
527
- const s = this.getLastVariable();
528
- s && this.addLine(`${t}.appendChild(${s})`);
529
- }), this.addEmptyLine();
530
- }
531
- /**
532
- * Generate code for generic/custom components
533
- */
534
- generateGenericComponent(e) {
535
- const t = this.createVariable("element");
536
- this.addLine(`// ${e.name} component`), this.addLine(`const ${t} = document.createElement('div')`), this.addLine(`${t}.className = 'tachui-${e.name.toLowerCase()}'`);
537
- const i = this.generateModifierStyles(e.modifiers);
538
- i.length > 0 && (this.addLine(`Object.assign(${t}.style, {`), this.indent(), i.forEach((s) => this.addLine(`${s},`)), this.dedent(), this.addLine("})")), this.addEmptyLine();
539
- }
540
- /**
541
- * Generate CSS classes for stack layouts
542
- */
543
- generateStackClasses(e) {
544
- switch (e) {
545
- case "VStack":
546
- return "flex flex-col";
547
- case "HStack":
548
- return "flex flex-row";
549
- case "ZStack":
550
- return "relative";
551
- default:
552
- return "flex";
553
- }
554
- }
555
- /**
556
- * Generate styles from modifiers
557
- */
558
- generateModifierStyles(e) {
559
- const t = [];
560
- return e.forEach((i) => {
561
- const s = this.convertModifierToStyle(i);
562
- s && t.push(s);
563
- }), t;
564
- }
565
- /**
566
- * Generate event handlers from modifiers
567
- */
568
- generateEventHandlers(e) {
569
- const t = [];
570
- return e.forEach((i) => {
571
- if (i.name === "onTapGesture" && i.arguments.length > 0) {
572
- const s = this.expressionToString(i.arguments[0]);
573
- t.push(`${this.getLastVariable()}.addEventListener('click', ${s})`);
574
- }
575
- }), t;
576
- }
577
- /**
578
- * Convert modifier to CSS style property
579
- */
580
- convertModifierToStyle(e) {
581
- const t = e.arguments;
582
- switch (e.name) {
583
- case "padding":
584
- return `padding: ${t.length > 0 ? this.expressionToString(t[0]) : '"8px"'}`;
585
- case "background":
586
- if (t.length > 0)
587
- return `backgroundColor: ${this.expressionToString(t[0])}`;
588
- break;
589
- case "foregroundColor":
590
- if (t.length > 0)
591
- return `color: ${this.expressionToString(t[0])}`;
592
- break;
593
- case "font":
594
- if (t.length > 0)
595
- return `fontSize: ${this.expressionToString(t[0])}`;
596
- break;
597
- case "cornerRadius":
598
- if (t.length > 0)
599
- return `borderRadius: ${this.expressionToString(t[0])}px`;
600
- break;
601
- case "opacity":
602
- if (t.length > 0)
603
- return `opacity: ${this.expressionToString(t[0])}`;
604
- break;
605
- case "frame":
606
- if (t.length >= 2)
607
- return null;
608
- break;
609
- }
610
- return null;
611
- }
612
- /**
613
- * Helper methods
614
- */
615
- getTextContent(e) {
616
- if (e.length === 0) return '""';
617
- const t = e[0];
618
- return t.type === "Literal" ? `"${t.value}"` : this.expressionToString(t);
619
- }
620
- expressionToString(e) {
621
- switch (e.type) {
622
- case "Literal": {
623
- const t = e;
624
- return typeof t.value == "string" ? `"${t.value}"` : String(t.value);
625
- }
626
- case "Identifier":
627
- return e.name;
628
- default:
629
- return '""';
630
- }
631
- }
632
- isReactiveExpression(e) {
633
- return e.includes("()") || !e.startsWith('"') && !e.match(/^\d+$/);
634
- }
635
- createVariable(e) {
636
- const t = `${e}${this.variables.length + 1}`;
637
- return this.variables.push(t), t;
638
- }
639
- getLastVariable() {
640
- return this.variables.length > 0 ? this.variables[this.variables.length - 1] : null;
641
- }
642
- addImport(e, t) {
643
- this.imports.add(`import { ${e} } from '${t}'`);
644
- }
645
- addLine(e) {
646
- const t = " ".repeat(this.indentLevel);
647
- this.code.push(t + e);
648
- }
649
- addEmptyLine() {
650
- this.code.push("");
651
- }
652
- indent() {
653
- this.indentLevel++;
654
- }
655
- dedent() {
656
- this.indentLevel = Math.max(0, this.indentLevel - 1);
657
- }
658
- buildFinalCode() {
659
- const e = Array.from(this.imports).join(`
660
- `), t = this.code.join(`
661
- `);
662
- return `${e}
663
-
664
- ${t}`;
665
- }
666
- generateSourceMap() {
667
- return null;
668
- }
669
- reset() {
670
- this.imports.clear(), this.variables = [], this.code = [], this.indentLevel = 0;
671
- }
672
- }
673
- var v = Object.defineProperty, $ = (r, e, t) => e in r ? v(r, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : r[e] = t, d = (r, e, t) => $(r, typeof e != "symbol" ? e + "" : e, t);
674
- class C {
675
- constructor(e) {
676
- d(this, "options"), d(this, "imports", /* @__PURE__ */ new Set()), d(this, "variables", []), d(this, "code", []), d(this, "indentLevel", 0), d(this, "dependencies", /* @__PURE__ */ new Set()), d(this, "exports", /* @__PURE__ */ new Set()), this.options = e;
677
- }
678
- /**
679
- * Generate enhanced reactive DOM code from AST
680
- */
681
- generate(e) {
682
- return this.reset(), this.addImport(
683
- "createSignal, createEffect, createComputed, createRoot, batch",
684
- "@tachui/core/reactive"
685
- ), e.forEach((i) => this.generateEnhancedNode(i)), this.generateMountFunction(), {
686
- code: this.buildFinalCode(),
687
- map: this.options.sourceMaps ? this.generateSourceMap() : void 0,
688
- dependencies: Array.from(this.dependencies),
689
- exports: Array.from(this.exports)
690
- };
691
- }
692
- /**
693
- * Generate code for enhanced AST nodes
694
- */
695
- generateEnhancedNode(e) {
696
- switch (e.type) {
697
- case "Component":
698
- this.generateEnhancedComponent(e);
699
- break;
700
- case "Conditional":
701
- this.generateConditionalRendering(e);
702
- break;
703
- case "ForEach":
704
- this.generateListRendering(e);
705
- break;
706
- case "PropertyWrapper":
707
- this.generatePropertyWrapper(e);
708
- break;
709
- case "StateBinding":
710
- this.generateStateBinding(e);
711
- break;
712
- }
713
- }
714
- /**
715
- * Generate conditional rendering with reactive effects
716
- */
717
- generateConditionalRendering(e) {
718
- const t = this.createVariable("condition"), i = this.createVariable("conditionalContainer");
719
- this.addLine("// Conditional rendering"), this.addLine(`const ${i} = document.createElement('div')`), this.addLine(`${i}.className = 'tachui-conditional'`);
720
- const s = this.expressionToCode(e.condition);
721
- this.addLine(`const ${t} = createComputed(() => ${s})`), this.addLine("createEffect(() => {"), this.indent(), this.addLine("// Clear previous content"), this.addLine(`${i}.innerHTML = ''`), this.addEmptyLine(), this.addLine(`if (${t}()) {`), this.indent(), this.addLine("// Render then body"), e.thenBody.forEach((n) => {
722
- this.generateEnhancedNode(n);
723
- const a = this.getLastVariable();
724
- a && this.addLine(`${i}.appendChild(${a})`);
725
- }), this.dedent(), e.elseBody && e.elseBody.length > 0 && (this.addLine("} else {"), this.indent(), this.addLine("// Render else body"), e.elseBody.forEach((n) => {
726
- this.generateEnhancedNode(n);
727
- const a = this.getLastVariable();
728
- a && this.addLine(`${i}.appendChild(${a})`);
729
- }), this.dedent()), this.addLine("}"), this.dedent(), this.addLine("})"), this.addEmptyLine();
730
- }
731
- /**
732
- * Generate list rendering with keyed updates
733
- */
734
- generateListRendering(e) {
735
- const t = this.createVariable("listContainer"), i = this.createVariable("items"), s = this.createVariable("renderedItems");
736
- this.addLine("// List rendering with keyed updates"), this.addLine(`const ${t} = document.createElement('div')`), this.addLine(`${t}.className = 'tachui-list'`), this.addLine(`let ${s} = new Map()`);
737
- const n = this.expressionToCode(e.iterable);
738
- if (this.addLine(`const ${i} = createComputed(() => ${n})`), this.addLine("createEffect(() => {"), this.indent(), this.addLine(`const currentItems = ${i}()`), this.addLine("const newRenderedItems = new Map()"), this.addEmptyLine(), this.addLine("// Update existing items and create new ones"), this.addLine(`currentItems.forEach((${e.itemIdentifier}, index) => {`), this.indent(), this.options.generateKeyedLists) {
739
- this.addLine(`const key = ${e.itemIdentifier}.id || index`), this.addLine(`let itemElement = ${s}.get(key)`), this.addEmptyLine(), this.addLine("if (!itemElement) {"), this.indent(), this.addLine("// Create new item element"), this.generateListItemContent(e);
740
- const a = this.getLastVariable();
741
- this.addLine(`itemElement = ${a}`), this.dedent(), this.addLine("}"), this.addEmptyLine(), this.addLine("newRenderedItems.set(key, itemElement)"), this.addLine(`${t}.appendChild(itemElement)`);
742
- } else {
743
- this.addLine("// Simple list item generation"), this.generateListItemContent(e);
744
- const a = this.getLastVariable();
745
- this.addLine(`${t}.appendChild(${a})`);
746
- }
747
- this.dedent(), this.addLine("})"), this.addEmptyLine(), this.options.generateKeyedLists && (this.addLine("// Remove items that are no longer in the list"), this.addLine(`${s}.forEach((element, key) => {`), this.indent(), this.addLine("if (!newRenderedItems.has(key)) {"), this.indent(), this.addLine("element.remove()"), this.dedent(), this.addLine("}"), this.dedent(), this.addLine("})"), this.addEmptyLine(), this.addLine(`${s} = newRenderedItems`)), this.dedent(), this.addLine("})"), this.addEmptyLine();
748
- }
749
- /**
750
- * Generate content for list items
751
- */
752
- generateListItemContent(e) {
753
- this.addLine("// List item content"), e.body.forEach((t) => {
754
- this.generateEnhancedNode(t);
755
- });
756
- }
757
- /**
758
- * Generate property wrapper code
759
- */
760
- generatePropertyWrapper(e) {
761
- const { wrapper: t, identifier: i, initialValue: s } = e;
762
- switch (this.addLine(`// @${t} property wrapper`), t) {
763
- case "State": {
764
- const n = s ? this.expressionToCode(s) : "undefined";
765
- this.addLine(
766
- `const [${i}, set${this.capitalize(i)}] = createSignal(${n})`
767
- ), this.dependencies.add(i);
768
- break;
769
- }
770
- case "Computed":
771
- if (s) {
772
- const n = this.expressionToCode(s);
773
- this.addLine(`const ${i} = createComputed(() => ${n})`), this.dependencies.add(i);
774
- }
775
- break;
776
- case "Effect":
777
- if (s) {
778
- const n = this.expressionToCode(s);
779
- this.addLine(`const ${i} = createEffect(() => ${n})`);
780
- }
781
- break;
782
- }
783
- this.addEmptyLine();
784
- }
785
- /**
786
- * Generate state binding code
787
- */
788
- generateStateBinding(e) {
789
- this.addLine(`// State binding: $${e.identifier}`), this.addLine(`const ${e.identifier}Binding = {`), this.indent(), this.addLine(`get: () => ${e.identifier}(),`), this.addLine(`set: set${this.capitalize(e.identifier)}`), this.dedent(), this.addLine("}"), this.addEmptyLine();
790
- }
791
- /**
792
- * Generate enhanced component with reactive features
793
- */
794
- generateEnhancedComponent(e) {
795
- switch (e.name) {
796
- case "VStack":
797
- case "HStack":
798
- case "ZStack":
799
- this.generateEnhancedStackComponent(e);
800
- break;
801
- case "Text":
802
- this.generateEnhancedTextComponent(e);
803
- break;
804
- case "Button":
805
- this.generateEnhancedButtonComponent(e);
806
- break;
807
- case "TextField":
808
- this.generateEnhancedTextFieldComponent(e);
809
- break;
810
- default:
811
- this.generateEnhancedGenericComponent(e);
812
- break;
813
- }
814
- }
815
- /**
816
- * Generate enhanced stack component with reactive children
817
- */
818
- generateEnhancedStackComponent(e) {
819
- const t = e.name.toLowerCase().replace("stack", ""), i = this.createVariable("container");
820
- this.addLine(`// Enhanced ${e.name} component`), this.addLine(`const ${i} = document.createElement('div')`), this.addLine(
821
- `${i}.className = 'tachui-${t} ${this.generateStackClasses(e.name)}'`
822
- ), this.addLine("// Reactive children management"), e.children.forEach((s) => {
823
- this.generateEnhancedNode(s);
824
- const n = this.getLastVariable();
825
- n && this.addLine(`${i}.appendChild(${n})`);
826
- }), this.generateEnhancedModifiers(e.modifiers, i), this.addEmptyLine();
827
- }
828
- /**
829
- * Generate enhanced text component with reactive content
830
- */
831
- generateEnhancedTextComponent(e) {
832
- const t = this.createVariable("textElement"), i = this.getTextContent(e.children);
833
- this.addLine("// Enhanced Text component"), this.addLine(`const ${t} = document.createElement('span')`), this.addLine(`${t}.className = 'tachui-text'`), this.isReactiveExpression(i) ? (this.addLine("createEffect(() => {"), this.indent(), this.addLine(`${t}.textContent = String(${i})`), this.dedent(), this.addLine("})")) : this.addLine(`${t}.textContent = ${i}`), this.generateEnhancedModifiers(e.modifiers, t), this.addEmptyLine();
834
- }
835
- /**
836
- * Generate enhanced button component
837
- */
838
- generateEnhancedButtonComponent(e) {
839
- const t = this.createVariable("buttonElement"), i = this.getTextContent(e.children);
840
- this.addLine("// Enhanced Button component"), this.addLine(`const ${t} = document.createElement('button')`), this.addLine(`${t}.className = 'tachui-button'`), this.isReactiveExpression(i) ? (this.addLine("createEffect(() => {"), this.indent(), this.addLine(`${t}.textContent = String(${i})`), this.dedent(), this.addLine("})")) : this.addLine(`${t}.textContent = ${i}`), this.generateEnhancedModifiers(e.modifiers, t), this.addEmptyLine();
841
- }
842
- /**
843
- * Generate enhanced TextField component with two-way binding
844
- */
845
- generateEnhancedTextFieldComponent(e) {
846
- const t = this.createVariable("textFieldElement"), i = e.children.length > 0 ? this.getTextContent([e.children[0]]) : '""';
847
- this.addLine("// Enhanced TextField component"), this.addLine(`const ${t} = document.createElement('input')`), this.addLine(`${t}.type = 'text'`), this.addLine(`${t}.className = 'tachui-textfield'`), this.addLine(`${t}.placeholder = ${i}`);
848
- const s = e.children.find((n) => n.type === "StateBinding");
849
- s && (this.addLine("// Two-way data binding"), this.addLine("createEffect(() => {"), this.indent(), this.addLine(`${t}.value = String(${s.identifier}() || '')`), this.dedent(), this.addLine("})"), this.addLine(`${t}.addEventListener('input', (e) => {`), this.indent(), this.addLine(`set${this.capitalize(s.identifier)}(e.target.value)`), this.dedent(), this.addLine("})")), this.generateEnhancedModifiers(e.modifiers, t), this.addEmptyLine();
850
- }
851
- /**
852
- * Generate enhanced generic component
853
- */
854
- generateEnhancedGenericComponent(e) {
855
- const t = this.createVariable("element");
856
- this.addLine(`// Enhanced ${e.name} component`), this.addLine(`const ${t} = document.createElement('div')`), this.addLine(`${t}.className = 'tachui-${e.name.toLowerCase()}'`), e.children.forEach((i) => {
857
- this.generateEnhancedNode(i);
858
- const s = this.getLastVariable();
859
- s && this.addLine(`${t}.appendChild(${s})`);
860
- }), this.generateEnhancedModifiers(e.modifiers, t), this.addEmptyLine();
861
- }
862
- /**
863
- * Generate enhanced modifiers with reactive updates
864
- */
865
- generateEnhancedModifiers(e, t) {
866
- if (e.length === 0) return;
867
- const i = [], s = [], n = [];
868
- e.forEach((a) => {
869
- const h = this.convertModifierToStyle(a);
870
- h && (this.modifierHasReactiveContent(a) ? s.push(h) : i.push(h));
871
- const o = this.convertModifierToHandler(a, t);
872
- o && n.push(o);
873
- }), i.length > 0 && (this.addLine(`Object.assign(${t}.style, {`), this.indent(), i.forEach((a) => this.addLine(`${a},`)), this.dedent(), this.addLine("})")), s.length > 0 && (this.addLine("createEffect(() => {"), this.indent(), this.addLine(`Object.assign(${t}.style, {`), this.indent(), s.forEach((a) => this.addLine(`${a},`)), this.dedent(), this.addLine("})"), this.dedent(), this.addLine("})")), n.forEach((a) => this.addLine(a));
874
- }
875
- /**
876
- * Generate component mount function
877
- */
878
- generateMountFunction() {
879
- if (this.addLine("// Component mount function"), this.addLine("export function mountComponent(container) {"), this.indent(), this.addLine("return createRoot(() => {"), this.indent(), this.variables.length > 0) {
880
- const e = this.variables[this.variables.length - 1];
881
- this.addLine(`container.appendChild(${e})`), this.addLine(`return () => container.removeChild(${e})`);
882
- }
883
- this.dedent(), this.addLine("})"), this.dedent(), this.addLine("}"), this.exports.add("mountComponent");
884
- }
885
- /**
886
- * Helper methods
887
- */
888
- expressionToCode(e) {
889
- switch (e.type) {
890
- case "Literal": {
891
- const t = e;
892
- return typeof t.value == "string" ? `"${t.value}"` : String(t.value);
893
- }
894
- case "Identifier":
895
- return e.name;
896
- case "CallExpression": {
897
- const t = e, i = t.arguments.map((s) => this.expressionToCode(s)).join(", ");
898
- return `${this.expressionToCode(t.callee)}(${i})`;
899
- }
900
- case "MemberExpression": {
901
- const t = e;
902
- return `${t.object}.${t.property}`;
903
- }
904
- case "ArrayExpression":
905
- return `[${e.elements.map((s) => this.expressionToCode(s)).join(", ")}]`;
906
- default:
907
- return '""';
908
- }
909
- }
910
- getTextContent(e) {
911
- if (e.length === 0) return '""';
912
- const t = e[0];
913
- return t.type === "Literal" || t.type === "Identifier" || t.type === "CallExpression" || t.type === "MemberExpression" || t.type === "ArrayExpression" ? this.expressionToCode(t) : '""';
914
- }
915
- isReactiveExpression(e) {
916
- return e.includes("()") || e.includes("get") || !e.startsWith('"') && !e.match(/^\d+$/);
917
- }
918
- modifierHasReactiveContent(e) {
919
- return e.arguments.some((t) => {
920
- const i = this.expressionToCode(t);
921
- return this.isReactiveExpression(i);
922
- });
923
- }
924
- convertModifierToStyle(e) {
925
- const t = e.arguments;
926
- switch (e.name) {
927
- case "padding":
928
- return `padding: ${t.length > 0 ? this.expressionToCode(t[0]) : '"8px"'}`;
929
- case "background":
930
- if (t.length > 0)
931
- return `backgroundColor: ${this.expressionToCode(t[0])}`;
932
- break;
933
- case "foregroundColor":
934
- if (t.length > 0)
935
- return `color: ${this.expressionToCode(t[0])}`;
936
- break;
937
- case "font":
938
- if (t.length > 0)
939
- return `fontSize: ${this.expressionToCode(t[0])}`;
940
- break;
941
- case "cornerRadius":
942
- if (t.length > 0)
943
- return `borderRadius: ${this.expressionToCode(t[0])}px`;
944
- break;
945
- case "opacity":
946
- if (t.length > 0)
947
- return `opacity: ${this.expressionToCode(t[0])}`;
948
- break;
949
- }
950
- return null;
951
- }
952
- convertModifierToHandler(e, t) {
953
- if (e.name === "onTapGesture" && e.arguments.length > 0) {
954
- const i = this.expressionToCode(e.arguments[0]);
955
- return `${t}.addEventListener('click', ${i})`;
956
- }
957
- return null;
958
- }
959
- generateStackClasses(e) {
960
- switch (e) {
961
- case "VStack":
962
- return "flex flex-col";
963
- case "HStack":
964
- return "flex flex-row";
965
- case "ZStack":
966
- return "relative";
967
- default:
968
- return "flex";
969
- }
970
- }
971
- capitalize(e) {
972
- return e.charAt(0).toUpperCase() + e.slice(1);
973
- }
974
- createVariable(e) {
975
- const t = `${e}${this.variables.length + 1}`;
976
- return this.variables.push(t), t;
977
- }
978
- getLastVariable() {
979
- return this.variables.length > 0 ? this.variables[this.variables.length - 1] : null;
980
- }
981
- addImport(e, t) {
982
- this.imports.add(`import { ${e} } from '${t}'`);
983
- }
984
- addLine(e) {
985
- const t = " ".repeat(this.indentLevel);
986
- this.code.push(t + e);
987
- }
988
- addEmptyLine() {
989
- this.code.push("");
990
- }
991
- indent() {
992
- this.indentLevel++;
993
- }
994
- dedent() {
995
- this.indentLevel = Math.max(0, this.indentLevel - 1);
996
- }
997
- buildFinalCode() {
998
- const e = Array.from(this.imports).join(`
999
- `), t = this.code.join(`
1000
- `);
1001
- return `${e}
1002
-
1003
- ${t}`;
1004
- }
1005
- generateSourceMap() {
1006
- return null;
1007
- }
1008
- reset() {
1009
- this.imports.clear(), this.variables = [], this.code = [], this.indentLevel = 0, this.dependencies.clear(), this.exports.clear();
1010
- }
1011
- }
1012
- function A(r, e = {}) {
1013
- return new C(e).generate(r);
1014
- }
1015
- var b = Object.defineProperty, y = (r, e, t) => e in r ? b(r, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : r[e] = t, l = (r, e, t) => y(r, typeof e != "symbol" ? e + "" : e, t);
1016
- function x(r, e) {
1017
- return new S(r, e).parse();
1018
- }
1019
- class S {
1020
- constructor(e, t) {
1021
- l(this, "code"), l(this, "filename"), l(this, "position", 0), l(this, "line", 1), l(this, "column", 1), this.code = e, this.filename = t;
1022
- }
1023
- /**
1024
- * Main parsing entry point
1025
- */
1026
- parse() {
1027
- const e = [];
1028
- for (; !this.isAtEnd() && (this.skipWhitespace(), !this.isAtEnd()); ) {
1029
- const t = this.parseNode();
1030
- t && e.push(t);
1031
- }
1032
- return e;
1033
- }
1034
- /**
1035
- * Parse a single AST node
1036
- */
1037
- parseNode() {
1038
- const e = this.currentPosition();
1039
- return this.isComponentStart() ? this.parseComponent(e) : (this.advance(), null);
1040
- }
1041
- /**
1042
- * Parse a SwiftUI component (VStack, Text, Button, etc.)
1043
- */
1044
- parseComponent(e) {
1045
- const t = this.parseIdentifier();
1046
- if (!t)
1047
- throw new Error(`Expected component name at line ${this.line}`);
1048
- this.skipWhitespace();
1049
- const i = [], s = [];
1050
- if (this.peek() === "{") {
1051
- for (this.advance(), this.skipWhitespace(); !this.isAtEnd() && this.peek() !== "}"; ) {
1052
- this.skipWhitespace();
1053
- const a = this.parseNode();
1054
- a && i.push(a);
1055
- }
1056
- this.peek() === "}" && this.advance();
1057
- } else if (this.peek() === "(") {
1058
- this.advance(), this.skipWhitespace();
1059
- const a = this.parseExpression();
1060
- a && i.push(a), this.skipWhitespace(), this.peek() === ")" && this.advance();
1061
- }
1062
- for (this.skipWhitespace(); this.peek() === "."; ) {
1063
- const a = this.parseModifier();
1064
- a && s.push(a), this.skipWhitespace();
1065
- }
1066
- const n = this.currentPosition();
1067
- return {
1068
- type: "Component",
1069
- name: t,
1070
- children: i,
1071
- modifiers: s,
1072
- loc: {
1073
- start: e,
1074
- end: n,
1075
- source: this.filename
1076
- }
1077
- };
1078
- }
1079
- /**
1080
- * Parse a modifier (.padding(), .background(), etc.)
1081
- */
1082
- parseModifier() {
1083
- if (this.peek() !== ".") return null;
1084
- const e = this.currentPosition();
1085
- this.advance();
1086
- const t = this.parseIdentifier();
1087
- if (!t) return null;
1088
- const i = [];
1089
- if (this.peek() === "(") {
1090
- for (this.advance(), this.skipWhitespace(); !this.isAtEnd() && this.peek() !== ")"; ) {
1091
- const n = this.parseExpression();
1092
- n && i.push(n), this.skipWhitespace(), this.peek() === "," && (this.advance(), this.skipWhitespace());
1093
- }
1094
- this.peek() === ")" && this.advance();
1095
- }
1096
- const s = this.currentPosition();
1097
- return {
1098
- type: "Modifier",
1099
- name: t,
1100
- arguments: i,
1101
- loc: {
1102
- start: e,
1103
- end: s,
1104
- source: this.filename
1105
- }
1106
- };
1107
- }
1108
- /**
1109
- * Parse an expression (literal, identifier, function call)
1110
- */
1111
- parseExpression() {
1112
- this.skipWhitespace();
1113
- const e = this.currentPosition();
1114
- if (this.peek() === '"' || this.peek() === "'")
1115
- return this.parseStringLiteral(e);
1116
- if (this.isDigit(this.peek()))
1117
- return this.parseNumberLiteral(e);
1118
- if (this.match("true") || this.match("false")) {
1119
- const i = this.code.slice(e.offset, this.position);
1120
- return {
1121
- type: "Literal",
1122
- value: i === "true",
1123
- raw: i,
1124
- loc: {
1125
- start: e,
1126
- end: this.currentPosition(),
1127
- source: this.filename
1128
- }
1129
- };
1130
- }
1131
- const t = this.parseIdentifier();
1132
- if (t) {
1133
- const i = this.currentPosition();
1134
- return {
1135
- type: "Identifier",
1136
- name: t,
1137
- loc: {
1138
- start: e,
1139
- end: i,
1140
- source: this.filename
1141
- }
1142
- };
1143
- }
1144
- return null;
1145
- }
1146
- /**
1147
- * Parse a string literal
1148
- */
1149
- parseStringLiteral(e) {
1150
- const t = this.peek();
1151
- this.advance();
1152
- let i = "";
1153
- for (; !this.isAtEnd() && this.peek() !== t; )
1154
- if (this.peek() === "\\") {
1155
- this.advance();
1156
- const n = this.peek();
1157
- switch (n) {
1158
- case "n":
1159
- i += `
1160
- `;
1161
- break;
1162
- case "t":
1163
- i += " ";
1164
- break;
1165
- case "r":
1166
- i += "\r";
1167
- break;
1168
- case "\\":
1169
- i += "\\";
1170
- break;
1171
- case '"':
1172
- i += '"';
1173
- break;
1174
- case "'":
1175
- i += "'";
1176
- break;
1177
- default:
1178
- i += n;
1179
- break;
1180
- }
1181
- this.advance();
1182
- } else
1183
- i += this.peek(), this.advance();
1184
- this.peek() === t && this.advance();
1185
- const s = this.code.slice(e.offset, this.position);
1186
- return {
1187
- type: "Literal",
1188
- value: i,
1189
- raw: s,
1190
- loc: {
1191
- start: e,
1192
- end: this.currentPosition(),
1193
- source: this.filename
1194
- }
1195
- };
1196
- }
1197
- /**
1198
- * Parse a number literal
1199
- */
1200
- parseNumberLiteral(e) {
1201
- let t = "";
1202
- for (; !this.isAtEnd() && (this.isDigit(this.peek()) || this.peek() === "."); )
1203
- t += this.peek(), this.advance();
1204
- return {
1205
- type: "Literal",
1206
- value: t.includes(".") ? parseFloat(t) : parseInt(t, 10),
1207
- raw: t,
1208
- loc: {
1209
- start: e,
1210
- end: this.currentPosition(),
1211
- source: this.filename
1212
- }
1213
- };
1214
- }
1215
- /**
1216
- * Parse an identifier (component name, variable name, etc.)
1217
- */
1218
- parseIdentifier() {
1219
- if (!this.isAlpha(this.peek()) && this.peek() !== "_")
1220
- return null;
1221
- let e = "";
1222
- for (; !this.isAtEnd() && (this.isAlphaNumeric(this.peek()) || this.peek() === "_"); )
1223
- e += this.peek(), this.advance();
1224
- return e;
1225
- }
1226
- /**
1227
- * Helper methods
1228
- */
1229
- isComponentStart() {
1230
- const e = this.position, t = this.line, i = this.column, s = this.parseIdentifier(), n = s && this.isValidComponentName(s);
1231
- return this.position = e, this.line = t, this.column = i, !!n;
1232
- }
1233
- isValidComponentName(e) {
1234
- return [
1235
- "VStack",
1236
- "HStack",
1237
- "ZStack",
1238
- "List",
1239
- "Form",
1240
- "Text",
1241
- "Button",
1242
- "Image",
1243
- "TextField",
1244
- "Toggle"
1245
- ].includes(e);
1246
- }
1247
- skipWhitespace() {
1248
- for (; !this.isAtEnd() && this.isWhitespace(this.peek()); )
1249
- this.peek() === `
1250
- ` ? (this.line++, this.column = 1) : this.column++, this.position++;
1251
- }
1252
- match(e) {
1253
- return this.code.slice(this.position, this.position + e.length) === e ? (this.position += e.length, this.column += e.length, !0) : !1;
1254
- }
1255
- peek() {
1256
- return this.isAtEnd() ? "\0" : this.code[this.position];
1257
- }
1258
- advance() {
1259
- const e = this.peek();
1260
- return this.isAtEnd() || (this.position++, e === `
1261
- ` ? (this.line++, this.column = 1) : this.column++), e;
1262
- }
1263
- isAtEnd() {
1264
- return this.position >= this.code.length;
1265
- }
1266
- isWhitespace(e) {
1267
- return /\s/.test(e);
1268
- }
1269
- isAlpha(e) {
1270
- return /[a-zA-Z]/.test(e);
1271
- }
1272
- isDigit(e) {
1273
- return /[0-9]/.test(e);
1274
- }
1275
- isAlphaNumeric(e) {
1276
- return this.isAlpha(e) || this.isDigit(e);
1277
- }
1278
- currentPosition() {
1279
- return {
1280
- line: this.line,
1281
- column: this.column,
1282
- offset: this.position
1283
- };
1284
- }
1285
- }
1286
- function I(r = {}) {
1287
- const {
1288
- include: e = [".tsx", ".ts"],
1289
- exclude: t = ["node_modules/**", "**/*.test.*", "**/*.bench.*"],
1290
- dev: i = process.env.NODE_ENV === "development",
1291
- transform: s = {}
1292
- } = r;
1293
- return {
1294
- name: "tachui-transform",
1295
- enforce: "pre",
1296
- // Run before other plugins
1297
- configResolved(n) {
1298
- i && n.command === "serve" && console.log("🚀 TachUI plugin loaded in development mode");
1299
- },
1300
- buildStart() {
1301
- this.addWatchFile("tachui.config.ts");
1302
- },
1303
- resolveId(n) {
1304
- return n === "virtual:tachui-runtime" ? n : null;
1305
- },
1306
- load(n) {
1307
- return n === "virtual:tachui-runtime" ? W() : null;
1308
- },
1309
- transform(n, a) {
1310
- if (!w(a, e, t))
1311
- return null;
1312
- try {
1313
- if (!T(n))
1314
- return null;
1315
- i && console.log(`🔄 Transforming: ${a}`);
1316
- const h = x(n, a), o = k(h, {
1317
- ...s,
1318
- sourceFile: a,
1319
- sourceMaps: s.sourceMaps ?? i
1320
- });
1321
- return {
1322
- code: o.code,
1323
- map: o.map
1324
- };
1325
- } catch (h) {
1326
- const o = h instanceof Error ? h.message : String(h);
1327
- return this.error(`TachUI transformation failed in ${a}: ${o}`), null;
1328
- }
1329
- },
1330
- handleHotUpdate(n) {
1331
- if (n.file.endsWith(".tui.tsx") || n.file.endsWith(".tui.ts"))
1332
- return n.server.ws.send({
1333
- type: "full-reload"
1334
- }), [];
1335
- }
1336
- };
1337
- }
1338
- function w(r, e, t) {
1339
- return e.some((n) => r.endsWith(n)) ? !t.some((n) => n.includes("**") ? new RegExp(n.replace(/\*\*/g, ".*").replace(/\*/g, "[^/]*")).test(r) : r.includes(n)) : !1;
1340
- }
1341
- function T(r) {
1342
- return [
1343
- /\b(VStack|HStack|ZStack|List|Form)\s*\{/,
1344
- /\b(Text|Button|Image|TextField|Toggle)\s*\(/,
1345
- /\.(padding|background|foregroundColor|font|frame)\s*\(/,
1346
- /\.onTapGesture\s*\(/
1347
- ].some((t) => t.test(r));
1348
- }
1349
- function W() {
1350
- return `
1351
- // TachUI Runtime Module
1352
- // This provides runtime utilities for transformed components
1353
-
1354
- import { createSignal, createEffect, createComputed } from '@tachui/core/reactive'
1355
-
1356
- export { createSignal, createEffect, createComputed }
1357
-
1358
- // Runtime helpers for component lifecycle
1359
- export function mountComponent(element, render) {
1360
- const dispose = render()
1361
- element._tachui_dispose = dispose
1362
- return dispose
1363
- }
1364
-
1365
- export function unmountComponent(element) {
1366
- if (element._tachui_dispose) {
1367
- element._tachui_dispose()
1368
- delete element._tachui_dispose
1369
- }
1370
- }
1371
-
1372
- // Hot reload support
1373
- if (import.meta.hot) {
1374
- import.meta.hot.accept()
1375
-
1376
- // Re-mount components on hot reload
1377
- import.meta.hot.dispose(() => {
1378
- document.querySelectorAll('[data-tachui-component]').forEach(unmountComponent)
1379
- })
1380
- }
1381
- `;
1382
- }
1
+ import { c as n, g as t, a as r, p as s, b as c } from "../plugin-BCAdZXKq.js";
1383
2
  export {
1384
- I as createTachUIPlugin,
1385
- k as generateDOMCode,
1386
- A as generateEnhancedDOMCode,
1387
- V as parseAdvancedSwiftUISyntax,
1388
- x as parseSwiftUISyntax
3
+ n as createTachUIPlugin,
4
+ t as generateDOMCode,
5
+ r as generateEnhancedDOMCode,
6
+ s as parseAdvancedSwiftUISyntax,
7
+ c as parseSwiftUISyntax
1389
8
  };