@stacksjs/stx 0.2.95 → 0.2.96

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 (612) hide show
  1. package/dist/a11y.js +598 -2
  2. package/dist/analytics.js +159 -2
  3. package/dist/analyzer.js +240 -2
  4. package/dist/animation.js +688 -2
  5. package/dist/app-shell.js +220 -2
  6. package/dist/app.js +79 -2
  7. package/dist/assets.js +155 -2
  8. package/dist/ast.js +630 -2
  9. package/dist/async-components.js +428 -2
  10. package/dist/auth.js +12 -2
  11. package/dist/broadcasting.js +102 -2
  12. package/dist/browser-composables.js +565 -2
  13. package/dist/build-assets.js +29 -2
  14. package/dist/build-mode-detector.js +50 -2
  15. package/dist/build-optimizer.js +433 -2
  16. package/dist/build-views.js +180 -2
  17. package/dist/build.js +33 -2
  18. package/dist/builtins/drawer.js +37 -2
  19. package/dist/builtins/escape.js +3 -2
  20. package/dist/builtins/icon.js +83 -2
  21. package/dist/builtins/index.js +34 -2
  22. package/dist/builtins/modal.js +38 -2
  23. package/dist/builtins/safe-image.js +51 -2
  24. package/dist/builtins/stx-image.js +200 -2
  25. package/dist/builtins/stx-link.js +41 -2
  26. package/dist/builtins/stx-loading-indicator.js +35 -2
  27. package/dist/builtins/suspense.js +24 -2
  28. package/dist/builtins/toast.js +42 -2
  29. package/dist/builtins/tooltip.js +106 -2
  30. package/dist/builtins/transition-group.js +22 -2
  31. package/dist/bundle-analyzer/collector.js +233 -2
  32. package/dist/bundle-analyzer/index.js +82 -2
  33. package/dist/bundle-analyzer/report.js +318 -2
  34. package/dist/bundle-analyzer/treemap.js +594 -2
  35. package/dist/caching.js +131 -2
  36. package/dist/cli.js +11317 -10982
  37. package/dist/client/directive.js +14 -2
  38. package/dist/client/index.js +2 -2
  39. package/dist/client-helpers.js +312 -2
  40. package/dist/client-script-bundler.js +216 -6
  41. package/dist/client-script.js +754 -2
  42. package/dist/client.js +73 -4
  43. package/dist/component-hmr.js +585 -2
  44. package/dist/component-library.d.ts +6 -0
  45. package/dist/component-library.js +683 -0
  46. package/dist/component-processing.js +613 -2
  47. package/dist/component-registry.js +90 -2
  48. package/dist/component-renderer.js +660 -2
  49. package/dist/components.js +213 -2
  50. package/dist/composables/index.js +220 -2
  51. package/dist/composables/use-battery.js +101 -2
  52. package/dist/composables/use-broadcast-channel.js +80 -2
  53. package/dist/composables/use-channel.js +124 -2
  54. package/dist/composables/use-clipboard.js +79 -2
  55. package/dist/composables/use-color-mode.js +131 -2
  56. package/dist/composables/use-cookie.js +86 -2
  57. package/dist/composables/use-device-orientation.js +181 -2
  58. package/dist/composables/use-event-listener.js +27 -2
  59. package/dist/composables/use-event-source.js +166 -2
  60. package/dist/composables/use-eye-dropper.js +142 -2
  61. package/dist/composables/use-fetch.js +223 -2
  62. package/dist/composables/use-fullscreen.js +110 -2
  63. package/dist/composables/use-geolocation.js +101 -2
  64. package/dist/composables/use-idle.js +182 -2
  65. package/dist/composables/use-intersection-observer.js +168 -2
  66. package/dist/composables/use-keyboard.js +224 -2
  67. package/dist/composables/use-media-query.js +62 -2
  68. package/dist/composables/use-meta.js +48 -2
  69. package/dist/composables/use-mouse.js +286 -2
  70. package/dist/composables/use-mutation-observer.js +129 -2
  71. package/dist/composables/use-network.js +85 -2
  72. package/dist/composables/use-notification.js +94 -2
  73. package/dist/composables/use-permissions.js +132 -2
  74. package/dist/composables/use-query.js +0 -1
  75. package/dist/composables/use-resize-observer.js +157 -2
  76. package/dist/composables/use-router.js +51 -2
  77. package/dist/composables/use-share.js +104 -2
  78. package/dist/composables/use-speech.js +294 -2
  79. package/dist/composables/use-storage.js +130 -2
  80. package/dist/composables/use-text-selection.js +205 -4
  81. package/dist/composables/use-timer.js +183 -2
  82. package/dist/composables/use-utilities.js +176 -2
  83. package/dist/composables/use-wake-lock.js +122 -2
  84. package/dist/composables/use-websocket.js +165 -2
  85. package/dist/composables/use-window.js +163 -2
  86. package/dist/composables.js +552 -2
  87. package/dist/composition-api.js +190 -2
  88. package/dist/computed.js +376 -8
  89. package/dist/conditionals.js +599 -2
  90. package/dist/config.js +751 -2
  91. package/dist/craft-bridge.js +432 -2
  92. package/dist/craft-compiler.js +810 -2
  93. package/dist/craft-components.js +945 -2
  94. package/dist/craft-entry.js +5 -2
  95. package/dist/craft-ssr.js +559 -2
  96. package/dist/csp.js +220 -2
  97. package/dist/csrf.js +38 -2
  98. package/dist/custom-directives.js +136 -2
  99. package/dist/defer.js +156 -2
  100. package/dist/deploy/config-generators.js +214 -2
  101. package/dist/deploy/index.js +203 -2
  102. package/dist/deploy/netlify.js +167 -2
  103. package/dist/dev-server/crosswind.js +379 -2
  104. package/dist/dev-server/index.js +7 -2
  105. package/dist/dev-server/keyboard-shortcuts.js +81 -2
  106. package/dist/dev-server/native-window.js +91 -2
  107. package/dist/dev-server/port-utils.js +40 -2
  108. package/dist/dev-server/serve-app.js +682 -2
  109. package/dist/dev-server/serve-file.js +439 -2
  110. package/dist/dev-server/serve-markdown.js +281 -2
  111. package/dist/dev-server/serve-multi.js +579 -2
  112. package/dist/dev-server/terminal-colors.js +45 -2
  113. package/dist/dev-server/theme-selector.js +111 -2
  114. package/dist/dev-server/types.js +43 -2
  115. package/dist/dev-server.js +4 -2
  116. package/dist/devtools.js +462 -18
  117. package/dist/directive-api.js +355 -2
  118. package/dist/docs.js +567 -2
  119. package/dist/doctor.js +123 -2
  120. package/dist/document-shell.js +105 -2
  121. package/dist/dynamic-components.js +78 -2
  122. package/dist/edge-runtime.js +539 -2
  123. package/dist/env.js +9 -2
  124. package/dist/error-boundaries.js +62 -12
  125. package/dist/error-handling.js +1 -2
  126. package/dist/errors/codes.js +97 -2
  127. package/dist/errors/formatter.js +196 -2
  128. package/dist/errors/index.js +44 -2
  129. package/dist/errors/logger.js +250 -2
  130. package/dist/errors/sanitizer.js +181 -2
  131. package/dist/errors/types.js +86 -2
  132. package/dist/events.js +382 -2
  133. package/dist/expressions.js +650 -2
  134. package/dist/formatter.js +265 -2
  135. package/dist/forms-validation.js +510 -4
  136. package/dist/forms.js +709 -2
  137. package/dist/head.js +224 -2
  138. package/dist/heatmap.js +566 -2
  139. package/dist/hot-reload.js +367 -2
  140. package/dist/html-masking.js +73 -2
  141. package/dist/hydration-runtime.js +195 -2
  142. package/dist/hydration.js +654 -2
  143. package/dist/i18n.js +633 -2
  144. package/dist/image-optimization/auto-sibling.js +88 -2
  145. package/dist/image-optimization/build-plugin.js +241 -2
  146. package/dist/image-optimization/component.js +244 -2
  147. package/dist/image-optimization/directive.js +203 -2
  148. package/dist/image-optimization/index.js +54 -2
  149. package/dist/image-optimization/processor.js +262 -2
  150. package/dist/image-optimization/serve.js +102 -2
  151. package/dist/includes.js +733 -2
  152. package/dist/index.d.ts +1 -0
  153. package/dist/index.js +134 -2
  154. package/dist/init.js +505 -2
  155. package/dist/inline-assets.js +82 -2
  156. package/dist/interactive.js +383 -2
  157. package/dist/internal-markdown.js +141 -2
  158. package/dist/island-chunking.js +52 -2
  159. package/dist/js-ts.js +57 -2
  160. package/dist/jsx-runtime.js +289 -2
  161. package/dist/keep-alive.js +421 -2
  162. package/dist/lazy-loader.js +245 -2
  163. package/dist/loading-indicator.js +322 -2
  164. package/dist/loops.js +643 -2
  165. package/dist/manifest.js +31 -2
  166. package/dist/markdown.js +68 -2
  167. package/dist/media/client/blur-up.js +217 -2
  168. package/dist/media/client/index.js +53 -2
  169. package/dist/media/client/lazy-load.js +283 -2
  170. package/dist/media/client/upload-handler.js +354 -2
  171. package/dist/media/image/component.js +574 -2
  172. package/dist/media/image/directive.js +160 -2
  173. package/dist/media/image/editing.js +193 -2
  174. package/dist/media/image/index.js +80 -2
  175. package/dist/media/image/placeholder.js +188 -2
  176. package/dist/media/image/processor/cache.js +51 -2
  177. package/dist/media/image/processor/index.js +3 -2
  178. package/dist/media/image/processor/optimizer.js +202 -2
  179. package/dist/media/image/processor/responsive.js +162 -2
  180. package/dist/media/image/srcset.js +194 -2
  181. package/dist/media/index.js +198 -2
  182. package/dist/media/manager/embed.js +253 -2
  183. package/dist/media/protected/component.js +235 -2
  184. package/dist/media/protected/index.js +20 -2
  185. package/dist/media/protected/signature.js +205 -2
  186. package/dist/media/shared/cache.js +132 -2
  187. package/dist/media/shared/hash.js +35 -2
  188. package/dist/media/shared/index.js +2 -2
  189. package/dist/media/types.js +0 -1
  190. package/dist/media/upload/component.js +320 -2
  191. package/dist/media/upload/index.js +1 -2
  192. package/dist/media/video/directive.js +142 -2
  193. package/dist/media/video/index.js +583 -2
  194. package/dist/media/video/processor/cache.js +52 -2
  195. package/dist/media/video/processor/index.js +4 -2
  196. package/dist/media/video/processor/streaming.js +197 -2
  197. package/dist/media/video/processor/thumbnail.js +134 -2
  198. package/dist/media/video/processor/transcoder.js +283 -2
  199. package/dist/method-spoofing.js +17 -2
  200. package/dist/middleware.js +40 -2
  201. package/dist/misc-directives.js +222 -2
  202. package/dist/native-build.js +511 -2
  203. package/dist/parser/directive-parser.js +239 -2
  204. package/dist/parser/expression-parser.js +358 -2
  205. package/dist/parser/index.js +23 -2
  206. package/dist/parser/tokenizer.js +534 -2
  207. package/dist/partial-hydration.js +427 -2
  208. package/dist/performance-utils.js +430 -2
  209. package/dist/placeholder.js +35 -2
  210. package/dist/plugin-system.js +214 -2
  211. package/dist/plugin.js +173 -2
  212. package/dist/precompiler.js +660 -81
  213. package/dist/process.js +711 -2
  214. package/dist/production-build.js +596 -2
  215. package/dist/production-builder.js +132 -2
  216. package/dist/production-server.js +188 -2
  217. package/dist/props.js +224 -2
  218. package/dist/public-env.js +19 -2
  219. package/dist/pwa/audit.js +255 -2
  220. package/dist/pwa/directives.js +332 -2
  221. package/dist/pwa/icons.js +109 -2
  222. package/dist/pwa/index.js +47 -2
  223. package/dist/pwa/inject.js +102 -2
  224. package/dist/pwa/manifest.js +186 -2
  225. package/dist/pwa/offline.js +259 -2
  226. package/dist/pwa/precache.js +116 -2
  227. package/dist/pwa/service-worker.js +860 -2
  228. package/dist/pwa/workbox-strategies.js +167 -2
  229. package/dist/pwa/workbox.js +382 -2
  230. package/dist/pwa.js +427 -427
  231. package/dist/reactive-bindings.js +266 -2
  232. package/dist/reactive.js +569 -2
  233. package/dist/reactivity.js +559 -2
  234. package/dist/release.js +1 -2
  235. package/dist/render.js +165 -2
  236. package/dist/route-middleware.js +17 -2
  237. package/dist/router.js +9 -2
  238. package/dist/routes.js +14 -2
  239. package/dist/runtime-injection.js +120 -2
  240. package/dist/runtime.js +94 -2
  241. package/dist/safe-evaluator.js +444 -2
  242. package/dist/scaffolding.js +897 -2
  243. package/dist/screenshot.js +87 -2
  244. package/dist/script-classifier.js +32 -2
  245. package/dist/script-validation.js +158 -2
  246. package/dist/seo.js +457 -2
  247. package/dist/serve.js +237 -2
  248. package/dist/server-bindings.js +108 -2
  249. package/dist/server-components.js +338 -11
  250. package/dist/signal-processing.js +946 -2
  251. package/dist/signals-api.js +154 -2
  252. package/dist/signals.js +5287 -2
  253. package/dist/site-builder/build.js +224 -2
  254. package/dist/site-builder/i18n.js +140 -2
  255. package/dist/site-builder/index.js +15 -2
  256. package/dist/site-builder/robots.js +26 -2
  257. package/dist/site-builder/router.js +27 -2
  258. package/dist/site-builder/seo.js +36 -2
  259. package/dist/site-builder/sitemap.js +26 -2
  260. package/dist/site-builder/theme.js +33 -2
  261. package/dist/site-builder/types.js +0 -1
  262. package/dist/slots.js +201 -2
  263. package/dist/source-maps.js +350 -2
  264. package/dist/spa-shell.js +34 -2
  265. package/dist/ssg.js +389 -389
  266. package/dist/ssr.js +355 -2
  267. package/dist/state-management.js +533 -2
  268. package/dist/store-imports.js +13 -2
  269. package/dist/store-loader.js +72 -5
  270. package/dist/stores-client.js +132 -2
  271. package/dist/story/addons.js +261 -2
  272. package/dist/story/analytics.js +235 -2
  273. package/dist/story/auto-stories.js +158 -2
  274. package/dist/story/bookmarks.js +277 -2
  275. package/dist/story/bun-test.js +102 -2
  276. package/dist/story/cli.js +155 -2
  277. package/dist/story/collect/analyzer.js +305 -2
  278. package/dist/story/collect/index.js +27 -2
  279. package/dist/story/collect/parser.js +129 -2
  280. package/dist/story/collect/scanner.js +101 -2
  281. package/dist/story/collect/tree.js +110 -2
  282. package/dist/story/commands/build.js +172 -2
  283. package/dist/story/commands/dev.js +78 -2
  284. package/dist/story/commands/index.js +3 -2
  285. package/dist/story/commands/preview.js +56 -2
  286. package/dist/story/compiled-output.js +151 -2
  287. package/dist/story/composition.js +261 -2
  288. package/dist/story/config-watcher.js +67 -2
  289. package/dist/story/config.js +64 -2
  290. package/dist/story/context.js +27 -2
  291. package/dist/story/controls/index.js +320 -2
  292. package/dist/story/crosswind.js +189 -2
  293. package/dist/story/desktop-preview.js +105 -2
  294. package/dist/story/docs-generator.js +186 -2
  295. package/dist/story/errors.js +239 -2
  296. package/dist/story/figma-export.js +224 -2
  297. package/dist/story/generator.js +165 -2
  298. package/dist/story/hmr.js +131 -2
  299. package/dist/story/hot-swap.js +207 -2
  300. package/dist/story/index.js +49 -2
  301. package/dist/story/interactions.js +225 -2
  302. package/dist/story/keyboard-shortcuts.js +345 -2
  303. package/dist/story/output.js +153 -2
  304. package/dist/story/performance.js +252 -2
  305. package/dist/story/presets.js +289 -2
  306. package/dist/story/props-validation.js +215 -2
  307. package/dist/story/renderer.js +209 -2
  308. package/dist/story/search-index.js +106 -2
  309. package/dist/story/search.js +140 -2
  310. package/dist/story/server.js +965 -2
  311. package/dist/story/setup.js +78 -2
  312. package/dist/story/snapshots.js +170 -2
  313. package/dist/story/testing.js +163 -2
  314. package/dist/story/theme.js +170 -2
  315. package/dist/story/types.js +0 -2
  316. package/dist/story/ui/code-panel.js +175 -2
  317. package/dist/story/ui/controls-panel.js +168 -2
  318. package/dist/story/ui/index.js +4 -2
  319. package/dist/story/ui/navigation.js +250 -2
  320. package/dist/story/ui/preview.js +251 -2
  321. package/dist/story/visual-testing.js +247 -2
  322. package/dist/streaming.js +537 -2
  323. package/dist/strict-lint.js +288 -2
  324. package/dist/style-scoping.js +50 -2
  325. package/dist/suspense.js +398 -2
  326. package/dist/teleport.js +109 -2
  327. package/dist/template-compiler.js +63 -2
  328. package/dist/template-hydrator.js +82 -2
  329. package/dist/template-tag-balance.js +93 -2
  330. package/dist/testing.js +581 -2
  331. package/dist/transitions.js +443 -2
  332. package/dist/type-checker.js +581 -2
  333. package/dist/types/component-types.d.ts +54 -0
  334. package/dist/types/component-types.js +0 -1
  335. package/dist/types/config-types.js +0 -1
  336. package/dist/types/context-types.js +0 -1
  337. package/dist/types/csp-types.js +0 -1
  338. package/dist/types/directive-types.js +3 -2
  339. package/dist/types/index.d.ts +5 -0
  340. package/dist/types/index.js +1 -2
  341. package/dist/types/pwa-types.js +0 -1
  342. package/dist/types.js +1 -2
  343. package/dist/typescript-templates.js +386 -4
  344. package/dist/utils.js +942 -2
  345. package/dist/validator.js +171 -2
  346. package/dist/variable-extractor.js +1094 -2
  347. package/dist/view-composers.js +29 -2
  348. package/dist/virtual-scrolling.js +454 -2
  349. package/dist/visual-editor.js +688 -28
  350. package/dist/vue-template.js +475 -2
  351. package/dist/web-components/css-scoping.js +177 -2
  352. package/dist/web-components/index.js +13 -2
  353. package/dist/web-components/reactive-generator.js +121 -56
  354. package/dist/web-components.js +1447 -2
  355. package/dist/x-element.js +17 -5
  356. package/package.json +5 -6
  357. package/dist/chunk-04n64bnt.js +0 -5
  358. package/dist/chunk-06w68hyg.js +0 -7
  359. package/dist/chunk-07y6m5xx.js +0 -3
  360. package/dist/chunk-095s3972.js +0 -99
  361. package/dist/chunk-09k66d8a.js +0 -3
  362. package/dist/chunk-0a61y94n.js +0 -24
  363. package/dist/chunk-0b9w2w1y.js +0 -1
  364. package/dist/chunk-0dx4q6yq.js +0 -3
  365. package/dist/chunk-0dz85jrp.js +0 -3
  366. package/dist/chunk-0jd0pndq.js +0 -3
  367. package/dist/chunk-0p0nyq50.js +0 -6
  368. package/dist/chunk-0p1h3p3w.js +0 -3
  369. package/dist/chunk-0qakwen3.js +0 -1
  370. package/dist/chunk-0qnz93q2.js +0 -3
  371. package/dist/chunk-10debkj5.js +0 -71
  372. package/dist/chunk-15nesxgt.js +0 -5224
  373. package/dist/chunk-1sr54zp8.js +0 -3
  374. package/dist/chunk-1v49fwr5.js +0 -3
  375. package/dist/chunk-1xz0w746.js +0 -1539
  376. package/dist/chunk-1z5nhbjt.js +0 -90
  377. package/dist/chunk-1zgsgk4b.js +0 -1
  378. package/dist/chunk-20swzkx3.js +0 -216
  379. package/dist/chunk-27zsyhrd.js +0 -4
  380. package/dist/chunk-29y0hk5z.js +0 -3
  381. package/dist/chunk-2cdvw21b.js +0 -274
  382. package/dist/chunk-2j21d3ka.js +0 -161
  383. package/dist/chunk-2jxbwnkz.js +0 -2
  384. package/dist/chunk-31dr4bys.js +0 -6
  385. package/dist/chunk-35faj94w.js +0 -15
  386. package/dist/chunk-39gm08bn.js +0 -39
  387. package/dist/chunk-3a4qsygv.js +0 -51
  388. package/dist/chunk-3te20hqw.js +0 -3
  389. package/dist/chunk-43t7faps.js +0 -24
  390. package/dist/chunk-44hd3kab.js +0 -1
  391. package/dist/chunk-47kpewks.js +0 -71
  392. package/dist/chunk-4aj7ftqb.js +0 -1
  393. package/dist/chunk-4d2y57k7.js +0 -3
  394. package/dist/chunk-4deg33rw.js +0 -57
  395. package/dist/chunk-4k7d8p8d.js +0 -188
  396. package/dist/chunk-4qcy5tx6.js +0 -53
  397. package/dist/chunk-4x7kae4j.js +0 -3
  398. package/dist/chunk-55nwdnsd.js +0 -3
  399. package/dist/chunk-55yp0q8t.js +0 -201
  400. package/dist/chunk-5f43yz6z.js +0 -12
  401. package/dist/chunk-5shey2e4.js +0 -3
  402. package/dist/chunk-6b5k6w2q.js +0 -7
  403. package/dist/chunk-6djzdes9.js +0 -14
  404. package/dist/chunk-6e4c6g46.js +0 -3
  405. package/dist/chunk-6eqbxcrd.js +0 -8
  406. package/dist/chunk-7074g241.js +0 -3
  407. package/dist/chunk-7b6s3g65.js +0 -179
  408. package/dist/chunk-7cgmq685.js +0 -33
  409. package/dist/chunk-7dkz6z2s.js +0 -3
  410. package/dist/chunk-7ed3tean.js +0 -3
  411. package/dist/chunk-7gd339hd.js +0 -109
  412. package/dist/chunk-7j5e8sdj.js +0 -3
  413. package/dist/chunk-7n8g0nfn.js +0 -38
  414. package/dist/chunk-7sqdeqsw.js +0 -1
  415. package/dist/chunk-80g54ncj.js +0 -3
  416. package/dist/chunk-8a5bxece.js +0 -4
  417. package/dist/chunk-8ahwt6a4.js +0 -721
  418. package/dist/chunk-8b3z0zd5.js +0 -8
  419. package/dist/chunk-8dhdpa5h.js +0 -4
  420. package/dist/chunk-8n9nnqr6.js +0 -3
  421. package/dist/chunk-8qc1bsym.js +0 -3
  422. package/dist/chunk-8va64c9n.js +0 -3
  423. package/dist/chunk-8vtm0m84.js +0 -3
  424. package/dist/chunk-8xj7c3mf.js +0 -8
  425. package/dist/chunk-988dw6q3.js +0 -9
  426. package/dist/chunk-9b6cec0v.js +0 -321
  427. package/dist/chunk-9cf97f9p.js +0 -3
  428. package/dist/chunk-9ecv8aqj.js +0 -14
  429. package/dist/chunk-9eq3ht5f.js +0 -8
  430. package/dist/chunk-9jtj77jx.js +0 -3
  431. package/dist/chunk-9t14se2t.js +0 -83
  432. package/dist/chunk-9wmq2272.js +0 -3
  433. package/dist/chunk-9zbk5zx5.js +0 -57
  434. package/dist/chunk-a2g2qb2y.js +0 -386
  435. package/dist/chunk-a3hyn4we.js +0 -79
  436. package/dist/chunk-a87qqft6.js +0 -194
  437. package/dist/chunk-ah88wzbg.js +0 -10
  438. package/dist/chunk-akf1r75r.js +0 -102
  439. package/dist/chunk-amaa1bev.js +0 -2
  440. package/dist/chunk-avx8aydt.js +0 -3
  441. package/dist/chunk-ay9qf4zj.js +0 -6
  442. package/dist/chunk-aywxfqev.js +0 -3
  443. package/dist/chunk-azkegjd8.js +0 -61
  444. package/dist/chunk-b77wjyn7.js +0 -84
  445. package/dist/chunk-baf1hfwh.js +0 -231
  446. package/dist/chunk-bdk6g1vj.js +0 -3
  447. package/dist/chunk-bhqgmyqw.js +0 -36
  448. package/dist/chunk-bk3j0n82.js +0 -341
  449. package/dist/chunk-bndmdahk.js +0 -3
  450. package/dist/chunk-bpgg59wa.js +0 -3
  451. package/dist/chunk-bs3gmfxz.js +0 -5
  452. package/dist/chunk-bxc7kjsk.js +0 -32
  453. package/dist/chunk-c7jg8w13.js +0 -3
  454. package/dist/chunk-ckxjqqn9.js +0 -3
  455. package/dist/chunk-cn8az1b4.js +0 -1
  456. package/dist/chunk-d0zjtdw4.js +0 -29
  457. package/dist/chunk-d1qh1x2g.js +0 -3
  458. package/dist/chunk-djddhmcc.js +0 -60
  459. package/dist/chunk-dqn9gyhb.js +0 -21
  460. package/dist/chunk-drjq2zwg.js +0 -3
  461. package/dist/chunk-dvfs1h3c.js +0 -117
  462. package/dist/chunk-e2q9c5vq.js +0 -8
  463. package/dist/chunk-e98v1bc6.js +0 -12
  464. package/dist/chunk-ejayeex8.js +0 -2
  465. package/dist/chunk-ejh8fyak.js +0 -3
  466. package/dist/chunk-ek2w6zvy.js +0 -4
  467. package/dist/chunk-ewa88139.js +0 -6
  468. package/dist/chunk-fjk3x41y.js +0 -3
  469. package/dist/chunk-frg705zq.js +0 -302
  470. package/dist/chunk-fzm3y0r3.js +0 -267
  471. package/dist/chunk-g1vt329s.js +0 -21
  472. package/dist/chunk-g4ps1dj8.js +0 -140
  473. package/dist/chunk-gkzq8zw4.js +0 -23
  474. package/dist/chunk-gz5fmp3q.js +0 -3
  475. package/dist/chunk-h0hjy0kn.js +0 -292
  476. package/dist/chunk-h5jxydqq.js +0 -147
  477. package/dist/chunk-h5wa62ek.js +0 -145
  478. package/dist/chunk-h7aq56qj.js +0 -28
  479. package/dist/chunk-h82kjdr4.js +0 -83
  480. package/dist/chunk-hbehnm18.js +0 -3
  481. package/dist/chunk-hbgxbgam.js +0 -58
  482. package/dist/chunk-hc2mf5h6.js +0 -4
  483. package/dist/chunk-hjm2xab3.js +0 -3
  484. package/dist/chunk-hjv76kcw.js +0 -1
  485. package/dist/chunk-hrnnh4tq.js +0 -142
  486. package/dist/chunk-ht43ds42.js +0 -236
  487. package/dist/chunk-hxx3za24.js +0 -62
  488. package/dist/chunk-hy8820vc.js +0 -6
  489. package/dist/chunk-j447q024.js +0 -28
  490. package/dist/chunk-j58vh0w6.js +0 -314
  491. package/dist/chunk-j8tn8enq.js +0 -3
  492. package/dist/chunk-jc0fc4ht.js +0 -11
  493. package/dist/chunk-jcs0ymw7.js +0 -3
  494. package/dist/chunk-jjamhxpm.js +0 -139
  495. package/dist/chunk-jjb05d21.js +0 -3
  496. package/dist/chunk-jjdq01dv.js +0 -128
  497. package/dist/chunk-jnmgm2xw.js +0 -5
  498. package/dist/chunk-jpndqst5.js +0 -3
  499. package/dist/chunk-jt0ezawy.js +0 -351
  500. package/dist/chunk-jz73j3qs.js +0 -169
  501. package/dist/chunk-k21df0pg.js +0 -10
  502. package/dist/chunk-k848dzsa.js +0 -429
  503. package/dist/chunk-kdfe4t91.js +0 -3
  504. package/dist/chunk-keawsbpn.js +0 -5
  505. package/dist/chunk-kgym7ch9.js +0 -8
  506. package/dist/chunk-khdn7jwe.js +0 -3
  507. package/dist/chunk-km25cwz6.js +0 -3
  508. package/dist/chunk-knm8a8yx.js +0 -398
  509. package/dist/chunk-krqn0ddk.js +0 -3
  510. package/dist/chunk-ktkmvaa8.js +0 -1
  511. package/dist/chunk-kx6eb6ma.js +0 -4
  512. package/dist/chunk-kypas8vy.js +0 -4
  513. package/dist/chunk-m167kjhv.js +0 -4
  514. package/dist/chunk-m491r0rj.js +0 -358
  515. package/dist/chunk-m8448qby.js +0 -11
  516. package/dist/chunk-mgj88zeq.js +0 -64
  517. package/dist/chunk-mhgk632d.js +0 -3
  518. package/dist/chunk-mv4fb50w.js +0 -1
  519. package/dist/chunk-n5kg7fpx.js +0 -7
  520. package/dist/chunk-n98x35xd.js +0 -8
  521. package/dist/chunk-n9dhs1dw.js +0 -106
  522. package/dist/chunk-nd9rmddh.js +0 -6
  523. package/dist/chunk-ngxfwzq3.js +0 -3
  524. package/dist/chunk-nhv099jv.js +0 -19
  525. package/dist/chunk-nm15ccsg.js +0 -5
  526. package/dist/chunk-npfmdb6y.js +0 -71
  527. package/dist/chunk-nvwb4x04.js +0 -3
  528. package/dist/chunk-nw34xajc.js +0 -8
  529. package/dist/chunk-p077sw22.js +0 -3
  530. package/dist/chunk-p1h8065h.js +0 -3
  531. package/dist/chunk-p3e0cqtt.js +0 -34
  532. package/dist/chunk-p3fpb79v.js +0 -477
  533. package/dist/chunk-p52yzjq6.js +0 -498
  534. package/dist/chunk-p73meypx.js +0 -134
  535. package/dist/chunk-pa9zb7ty.js +0 -4
  536. package/dist/chunk-payfb24w.js +0 -207
  537. package/dist/chunk-pcm1vd8w.js +0 -3
  538. package/dist/chunk-pcntd9h4.js +0 -3
  539. package/dist/chunk-pg1fvqb9.js +0 -167
  540. package/dist/chunk-psc3wfcf.js +0 -1115
  541. package/dist/chunk-pznnww6k.js +0 -6
  542. package/dist/chunk-q6zhd9yf.js +0 -3
  543. package/dist/chunk-qa59zejf.js +0 -246
  544. package/dist/chunk-qvrbjpdc.js +0 -3
  545. package/dist/chunk-qygvvygy.js +0 -12
  546. package/dist/chunk-r0jcmpv6.js +0 -68
  547. package/dist/chunk-r5m9xtm7.js +0 -3
  548. package/dist/chunk-rh80q1nd.js +0 -1
  549. package/dist/chunk-rkffm9sy.js +0 -128
  550. package/dist/chunk-rpx5fa65.js +0 -3
  551. package/dist/chunk-rqxf5hns.js +0 -3
  552. package/dist/chunk-rtr974rc.js +0 -30
  553. package/dist/chunk-rvptcndz.js +0 -3
  554. package/dist/chunk-rw26rpek.js +0 -171
  555. package/dist/chunk-rw7937v4.js +0 -19
  556. package/dist/chunk-rwrv9wbf.js +0 -3
  557. package/dist/chunk-rz2ec6g7.js +0 -347
  558. package/dist/chunk-s6ja2bdg.js +0 -66
  559. package/dist/chunk-scpkdrdb.js +0 -4
  560. package/dist/chunk-shv88d2d.js +0 -10
  561. package/dist/chunk-t0c9wvpr.js +0 -3
  562. package/dist/chunk-tffh3b1e.js +0 -35
  563. package/dist/chunk-tg2f1mzq.js +0 -11
  564. package/dist/chunk-trfswy66.js +0 -77
  565. package/dist/chunk-tzwtg722.js +0 -3
  566. package/dist/chunk-v7f8jj15.js +0 -4
  567. package/dist/chunk-v8j49spx.js +0 -3
  568. package/dist/chunk-v97390pe.js +0 -1
  569. package/dist/chunk-vcr5pzpx.js +0 -233
  570. package/dist/chunk-veeerpwa.js +0 -3
  571. package/dist/chunk-vg5kt6az.js +0 -4
  572. package/dist/chunk-vgv7jvyz.js +0 -219
  573. package/dist/chunk-vjbefncc.js +0 -3
  574. package/dist/chunk-vmxjghsm.js +0 -3
  575. package/dist/chunk-vw7vqd76.js +0 -3
  576. package/dist/chunk-vx22he47.js +0 -1
  577. package/dist/chunk-w3b6m427.js +0 -45
  578. package/dist/chunk-wazkqv7n.js +0 -3
  579. package/dist/chunk-wf7zrjsw.js +0 -138
  580. package/dist/chunk-wfg2gm11.js +0 -3
  581. package/dist/chunk-wg9k6h8w.js +0 -12
  582. package/dist/chunk-wkz2vwkr.js +0 -81
  583. package/dist/chunk-wvef3ngh.js +0 -127
  584. package/dist/chunk-wvf31nzs.js +0 -3
  585. package/dist/chunk-x05nxhyv.js +0 -262
  586. package/dist/chunk-x0770gt9.js +0 -4
  587. package/dist/chunk-x24s4heg.js +0 -1166
  588. package/dist/chunk-x3r64r0c.js +0 -6
  589. package/dist/chunk-x5g9w4hh.js +0 -5
  590. package/dist/chunk-xgkv66q5.js +0 -2230
  591. package/dist/chunk-xqq1vxb6.js +0 -1
  592. package/dist/chunk-xs03kc1h.js +0 -196
  593. package/dist/chunk-xv34zbp4.js +0 -3
  594. package/dist/chunk-xw36p73h.js +0 -90
  595. package/dist/chunk-xyg1r5w0.js +0 -4
  596. package/dist/chunk-xys2sxh6.js +0 -16
  597. package/dist/chunk-y0qg6rrv.js +0 -3
  598. package/dist/chunk-y1k17c8b.js +0 -21
  599. package/dist/chunk-y5xz0jc4.js +0 -141
  600. package/dist/chunk-y6xsqe9a.js +0 -10
  601. package/dist/chunk-yb1t2h8h.js +0 -11
  602. package/dist/chunk-ygvyc6wv.js +0 -90
  603. package/dist/chunk-yj4x5ehw.js +0 -21
  604. package/dist/chunk-yn38c15w.js +0 -4
  605. package/dist/chunk-ynhngsdh.js +0 -3
  606. package/dist/chunk-yrsb6j3z.js +0 -3
  607. package/dist/chunk-yywfvfph.js +0 -2
  608. package/dist/chunk-zcxzdrn7.js +0 -5
  609. package/dist/chunk-zen6ax1y.js +0 -27
  610. package/dist/chunk-zf2pek72.js +0 -3
  611. package/dist/chunk-zk3d0jjf.js +0 -7
  612. package/dist/chunk-zy3rp1ab.js +0 -93
package/dist/reactive.js CHANGED
@@ -1,2 +1,569 @@
1
- // @bun
2
- import{Vr as a,Wr as b}from"./chunk-1xz0w746.js";import"./chunk-m8448qby.js";import"./chunk-kx6eb6ma.js";import"./chunk-g1vt329s.js";import"./chunk-7074g241.js";import"./chunk-9cf97f9p.js";import"./chunk-6djzdes9.js";import"./chunk-v7f8jj15.js";import"./chunk-keawsbpn.js";import"./chunk-8b3z0zd5.js";import"./chunk-hbgxbgam.js";import"./chunk-ejh8fyak.js";import"./chunk-krqn0ddk.js";import"./chunk-y1k17c8b.js";import"./chunk-2j21d3ka.js";import"./chunk-frg705zq.js";import"./chunk-hjm2xab3.js";import"./chunk-07y6m5xx.js";import"./chunk-wazkqv7n.js";import"./chunk-x05nxhyv.js";import"./chunk-31dr4bys.js";import"./chunk-mgj88zeq.js";import"./chunk-m167kjhv.js";import"./chunk-3a4qsygv.js";import"./chunk-dqn9gyhb.js";import"./chunk-988dw6q3.js";import"./chunk-8qc1bsym.js";import"./chunk-xyg1r5w0.js";import"./chunk-7gd339hd.js";import"./chunk-4deg33rw.js";import"./chunk-pa9zb7ty.js";import"./chunk-a2g2qb2y.js";import"./chunk-h5jxydqq.js";import"./chunk-nhv099jv.js";import"./chunk-shv88d2d.js";import"./chunk-0dx4q6yq.js";import"./chunk-ek2w6zvy.js";import"./chunk-9wmq2272.js";import"./chunk-7dkz6z2s.js";import"./chunk-9ecv8aqj.js";import"./chunk-bdk6g1vj.js";import"./chunk-xqq1vxb6.js";import"./chunk-amaa1bev.js";import"./chunk-r5m9xtm7.js";import"./chunk-bs3gmfxz.js";import"./chunk-1zgsgk4b.js";import"./chunk-2jxbwnkz.js";import"./chunk-zen6ax1y.js";import"./chunk-yb1t2h8h.js";import"./chunk-fjk3x41y.js";import"./chunk-5shey2e4.js";import"./chunk-27zsyhrd.js";import"./chunk-7ed3tean.js";import"./chunk-8vtm0m84.js";import"./chunk-tzwtg722.js";import"./chunk-ah88wzbg.js";import"./chunk-v8j49spx.js";import"./chunk-tg2f1mzq.js";import"./chunk-n9dhs1dw.js";import"./chunk-rwrv9wbf.js";import"./chunk-wg9k6h8w.js";import"./chunk-9jtj77jx.js";import"./chunk-qygvvygy.js";import"./chunk-gz5fmp3q.js";import"./chunk-vjbefncc.js";import"./chunk-8xj7c3mf.js";import"./chunk-qvrbjpdc.js";import"./chunk-w3b6m427.js";import"./chunk-rz2ec6g7.js";import"./chunk-35faj94w.js";import"./chunk-djddhmcc.js";import"./chunk-knm8a8yx.js";import"./chunk-xv34zbp4.js";export{a as processReactiveDirectives,b as hasReactiveDirectives};
1
+ import { evaluateExpression } from "./expressions.js";
2
+ let scopeCounter = 0, elementCounter = 0;
3
+ function escapeRegex(str) {
4
+ return str.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
5
+ }
6
+ function extractAttributeValue(attributesStr, attrName) {
7
+ const doubleMatch = attributesStr.match(new RegExp(`${attrName}\\s*=\\s*"([^"]*)"`, "i"));
8
+ if (doubleMatch)
9
+ return doubleMatch[1];
10
+ const singleMatch = attributesStr.match(new RegExp(`${attrName}\\s*=\\s*'([^']*)'`, "i"));
11
+ if (singleMatch)
12
+ return singleMatch[1];
13
+ return null;
14
+ }
15
+ function findReactiveScopes(template) {
16
+ const scopes = [], xDataRegex = /<([a-z][a-z0-9-]*)\s+([^>]*x-data\s*=\s*(?:"[^"]*"|'[^']*')[^>]*)>/gi;
17
+ let match;
18
+ while ((match = xDataRegex.exec(template)) !== null) {
19
+ const [fullMatch, tagName, attributesStr] = match, startIndex = match.index, stateExpr = extractAttributeValue(attributesStr, "x-data");
20
+ if (!stateExpr)
21
+ continue;
22
+ const scopeId = `__stx_scope_${scopeCounter++}`, initExpr = extractAttributeValue(attributesStr, "x-init"), closingTag = findClosingTag(template, tagName, startIndex + fullMatch.length), scopeContent = template.slice(startIndex, closingTag.endIndex), refs = findRefsInScope(scopeContent);
23
+ scopes.push({
24
+ id: scopeId,
25
+ selector: `[data-stx-scope="${scopeId}"]`,
26
+ stateExpr,
27
+ initExpr,
28
+ bindings: [],
29
+ refs
30
+ });
31
+ }
32
+ return scopes;
33
+ }
34
+ function findClosingTag(template, tagName, startFrom) {
35
+ let depth = 1, pos = startFrom;
36
+ const openPattern = new RegExp(`<${tagName}(?:\\s|>)`, "gi"), closePattern = new RegExp(`</${tagName}>`, "gi"), selfClosePattern = new RegExp(`<${tagName}[^>]*/\\s*>`, "gi");
37
+ while (depth > 0 && pos < template.length) {
38
+ openPattern.lastIndex = pos;
39
+ closePattern.lastIndex = pos;
40
+ selfClosePattern.lastIndex = pos;
41
+ const openMatch = openPattern.exec(template), closeMatch = closePattern.exec(template), selfCloseMatch = selfClosePattern.exec(template);
42
+ if (selfCloseMatch && selfCloseMatch.index < (openMatch?.index ?? 1 / 0)) {
43
+ pos = selfCloseMatch.index + selfCloseMatch[0].length;
44
+ continue;
45
+ }
46
+ if (!closeMatch)
47
+ return { endIndex: template.length };
48
+ if (openMatch && openMatch.index < closeMatch.index) {
49
+ depth++;
50
+ pos = openMatch.index + openMatch[0].length;
51
+ } else {
52
+ depth--;
53
+ if (depth === 0)
54
+ return { endIndex: closeMatch.index + closeMatch[0].length };
55
+ pos = closeMatch.index + closeMatch[0].length;
56
+ }
57
+ }
58
+ return { endIndex: template.length };
59
+ }
60
+ function findBindingsInScope(scopeContent, _scopeStart) {
61
+ const bindings = [];
62
+ let content = scopeContent.replace(/x-data\s*=\s*"[^"]*"/gi, 'x-data="__stripped__"').replace(/x-data\s*=\s*'[^']*'/gi, "x-data='__stripped__'");
63
+ function findBindings(attrName, type) {
64
+ const doubleRegex = new RegExp(`<([a-z][a-z0-9-]*)\\s+([^>]*${attrName}\\s*=\\s*"([^"]*)"[^>]*)>`, "gi");
65
+ let match;
66
+ while ((match = doubleRegex.exec(content)) !== null) {
67
+ const [, tagName, attributesStr, expression] = match, elementId = extractOrGenerateId(attributesStr), inputType = type === "model" ? extractInputType(attributesStr, tagName) : void 0, transition = type === "show" || type === "hide" ? extractTransitionConfig(attributesStr) : void 0;
68
+ bindings.push({ elementId, type, expression, inputType, transition });
69
+ }
70
+ const singleRegex = new RegExp(`<([a-z][a-z0-9-]*)\\s+([^>]*${attrName}\\s*=\\s*'([^']*)'[^>]*)>`, "gi");
71
+ while ((match = singleRegex.exec(content)) !== null) {
72
+ const [, tagName, attributesStr, expression] = match, elementId = extractOrGenerateId(attributesStr), inputType = type === "model" ? extractInputType(attributesStr, tagName) : void 0, transition = type === "show" || type === "hide" ? extractTransitionConfig(attributesStr) : void 0;
73
+ bindings.push({ elementId, type, expression, inputType, transition });
74
+ }
75
+ }
76
+ findBindings("x-model", "model");
77
+ findBindings("x-show", "show");
78
+ findBindings("x-hide", "hide");
79
+ findBindings("x-text", "text");
80
+ findBindings("x-html", "html");
81
+ const bindDoubleRegex = /<[a-z][a-z0-9-]*\s+([^>]*(?:x-bind:|:)([a-z][a-z0-9-]*)\s*=\s*"([^"]*)"[^>]*)>/gi;
82
+ let match;
83
+ while ((match = bindDoubleRegex.exec(content)) !== null) {
84
+ const [, attributesStr, attribute, expression] = match, elementId = extractOrGenerateId(attributesStr);
85
+ bindings.push({
86
+ elementId,
87
+ type: attribute === "class" ? "class" : attribute === "style" ? "style" : "bind",
88
+ expression,
89
+ attribute
90
+ });
91
+ }
92
+ const bindSingleRegex = /<[a-z][a-z0-9-]*\s+([^>]*(?:x-bind:|:)([a-z][a-z0-9-]*)\s*=\s*'([^']*)'[^>]*)>/gi;
93
+ while ((match = bindSingleRegex.exec(content)) !== null) {
94
+ const [, attributesStr, attribute, expression] = match, elementId = extractOrGenerateId(attributesStr);
95
+ bindings.push({
96
+ elementId,
97
+ type: attribute === "class" ? "class" : attribute === "style" ? "style" : "bind",
98
+ expression,
99
+ attribute
100
+ });
101
+ }
102
+ const tagRegex = /<([a-z][a-z0-9-]*)((?:\s+(?:[^>"']|"[^"]*"|'[^']*')*)*)>/gis;
103
+ let tagMatch;
104
+ while ((tagMatch = tagRegex.exec(content)) !== null) {
105
+ const attrsStr = tagMatch[2];
106
+ if (!attrsStr)
107
+ continue;
108
+ const eventAttrRegex = /@([a-z]+(?:\.[a-z]+)*)\s*=\s*"([\s\S]*?)"/gi;
109
+ let evtMatch;
110
+ while ((evtMatch = eventAttrRegex.exec(attrsStr)) !== null) {
111
+ const [, eventAttr, expression] = evtMatch, elementId = extractOrGenerateId(attrsStr);
112
+ bindings.push({
113
+ elementId,
114
+ type: "event",
115
+ expression: expression.replace(/\s+/g, " ").trim(),
116
+ attribute: eventAttr
117
+ });
118
+ }
119
+ const eventAttrSingleRegex = /@([a-z]+(?:\.[a-z]+)*)\s*=\s*'([\s\S]*?)'/gi;
120
+ while ((evtMatch = eventAttrSingleRegex.exec(attrsStr)) !== null) {
121
+ const [, eventAttr, expression] = evtMatch, elementId = extractOrGenerateId(attrsStr);
122
+ bindings.push({
123
+ elementId,
124
+ type: "event",
125
+ expression: expression.replace(/\s+/g, " ").trim(),
126
+ attribute: eventAttr
127
+ });
128
+ }
129
+ }
130
+ return bindings;
131
+ }
132
+ function findRefsInScope(scopeContent) {
133
+ const refs = new Map, content = scopeContent.replace(/x-data\s*=\s*"[^"]*"/gi, 'x-data="__stripped__"').replace(/x-data\s*=\s*'[^']*'/gi, "x-data='__stripped__'"), refRegex = /<[a-z][a-z0-9-]*\s+([^>]*x-ref\s*=\s*["']([^"']*)["'][^>]*)>/gi;
134
+ let match;
135
+ while ((match = refRegex.exec(content)) !== null) {
136
+ const [, attributesStr, refName] = match, elementId = extractOrGenerateId(attributesStr);
137
+ refs.set(refName, elementId);
138
+ }
139
+ return refs;
140
+ }
141
+ function extractOrGenerateId(attributesStr) {
142
+ const idMatch = attributesStr.match(/\bid\s*=\s*["']([^"']*)["']/);
143
+ if (idMatch)
144
+ return idMatch[1];
145
+ return `__stx_el_${elementCounter++}`;
146
+ }
147
+ function extractInputType(attributesStr, tagName) {
148
+ if (tagName.toLowerCase() === "select")
149
+ return "select";
150
+ if (tagName.toLowerCase() === "textarea")
151
+ return "textarea";
152
+ const typeMatch = attributesStr.match(/\btype\s*=\s*["']([^"']*)["']/);
153
+ return typeMatch ? typeMatch[1].toLowerCase() : "text";
154
+ }
155
+ function extractTransitionConfig(attributesStr) {
156
+ if (/\bx-transition(?:\s|>|$|=)/.test(attributesStr)) {
157
+ const config = { enabled: !0 };
158
+ if (/\bx-transition(?:\s|>|$)/.test(attributesStr) && !/\bx-transition\s*=/.test(attributesStr))
159
+ return config;
160
+ const enterMatch = attributesStr.match(/x-transition:enter\s*=\s*["']([^"']*)["']/);
161
+ if (enterMatch)
162
+ config.enter = enterMatch[1];
163
+ const enterStartMatch = attributesStr.match(/x-transition:enter-start\s*=\s*["']([^"']*)["']/);
164
+ if (enterStartMatch)
165
+ config.enterStart = enterStartMatch[1];
166
+ const enterEndMatch = attributesStr.match(/x-transition:enter-end\s*=\s*["']([^"']*)["']/);
167
+ if (enterEndMatch)
168
+ config.enterEnd = enterEndMatch[1];
169
+ const leaveMatch = attributesStr.match(/x-transition:leave\s*=\s*["']([^"']*)["']/);
170
+ if (leaveMatch)
171
+ config.leave = leaveMatch[1];
172
+ const leaveStartMatch = attributesStr.match(/x-transition:leave-start\s*=\s*["']([^"']*)["']/);
173
+ if (leaveStartMatch)
174
+ config.leaveStart = leaveStartMatch[1];
175
+ const leaveEndMatch = attributesStr.match(/x-transition:leave-end\s*=\s*["']([^"']*)["']/);
176
+ if (leaveEndMatch)
177
+ config.leaveEnd = leaveEndMatch[1];
178
+ const durationMatch = attributesStr.match(/x-transition\.duration\.(\d+)(?:ms)?/);
179
+ if (durationMatch)
180
+ config.duration = parseInt(durationMatch[1], 10);
181
+ return config;
182
+ }
183
+ return;
184
+ }
185
+ function generateReactiveRuntime() {
186
+ return `
187
+ // STX Reactive Runtime - x-cloak and transition CSS
188
+ (function() {
189
+ var style = document.createElement('style');
190
+ style.textContent = [
191
+ '[x-cloak] { display: none !important; }',
192
+ // Default transition classes
193
+ '.stx-enter { opacity: 0; transform: scale(0.95); }',
194
+ '.stx-enter-start { opacity: 0; transform: scale(0.95); }',
195
+ '.stx-enter-active { transition: opacity 150ms ease-out, transform 150ms ease-out; }',
196
+ '.stx-enter-to { opacity: 1; transform: scale(1); }',
197
+ '.stx-leave { opacity: 1; transform: scale(1); }',
198
+ '.stx-leave-start { opacity: 1; transform: scale(1); }',
199
+ '.stx-leave-active { transition: opacity 100ms ease-in, transform 100ms ease-in; }',
200
+ '.stx-leave-to { opacity: 0; transform: scale(0.95); }'
201
+ ].join('\\n');
202
+ document.head.appendChild(style);
203
+ })();
204
+
205
+ // STX Reactive Runtime
206
+ /* eslint-disable pickier/no-unused-vars, no-console, prefer-const */
207
+ window.__stx_reactive = (function() {
208
+ 'use strict';
209
+
210
+ // Deep reactive proxy that triggers onChange for any mutation
211
+ function reactive(obj, onChange) {
212
+ if (!obj || typeof obj !== 'object') return obj;
213
+ return new Proxy(obj, {
214
+ get(target, prop) {
215
+ const value = target[prop];
216
+ if (value && typeof value === 'object' && !Array.isArray(value) && !(value instanceof Promise)) {
217
+ return reactive(value, onChange);
218
+ }
219
+ return value;
220
+ },
221
+ set(target, prop, value) {
222
+ target[prop] = value;
223
+ onChange(prop, value);
224
+ return true;
225
+ }
226
+ });
227
+ }
228
+
229
+ // Initialize an x-data scope: parse state, run init(), register into window.stx._scopes,
230
+ // then let the signals runtime handle all directive processing (x-for, x-text, :bind, etc.)
231
+ function initScope(scopeEl, initialState, bindings, refs, initExpr) {
232
+ // Parse initial state (may contain methods including async init())
233
+ var state;
234
+ try {
235
+ state = new Function('return (' + initialState + ')')();
236
+ } catch (e) {
237
+ console.error('[stx-reactive] Invalid x-data:', initialState, e);
238
+ return;
239
+ }
240
+
241
+ // Build $refs object
242
+ var $refs = {};
243
+ for (var name in refs) {
244
+ if (Object.prototype.hasOwnProperty.call(refs, name)) {
245
+ (function(refName, refId) {
246
+ Object.defineProperty($refs, refName, {
247
+ get: function() { return document.getElementById(refId); }
248
+ });
249
+ })(name, refs[name]);
250
+ }
251
+ }
252
+
253
+ // Extract init method from state if present (Alpine.js convention)
254
+ var initMethod = state.init;
255
+ if (typeof initMethod === 'function') {
256
+ delete state.init;
257
+ }
258
+
259
+ // Make state reactive \u2014 mutations trigger re-render via signals
260
+ var scopeId = scopeEl.getAttribute('data-stx-scope');
261
+ var stx = window.stx;
262
+
263
+ // Create signals for each state property so the signals runtime can track dependencies
264
+ var signalState = {};
265
+ var rawState = {};
266
+ for (var key in state) {
267
+ if (Object.prototype.hasOwnProperty.call(state, key)) {
268
+ if (typeof state[key] === 'function') {
269
+ // Methods \u2014 bind to a proxy so 'this.prop = val' triggers signal updates
270
+ signalState[key] = state[key];
271
+ } else {
272
+ // Data properties \u2014 wrap in signals for reactivity
273
+ signalState[key] = stx.state(state[key]);
274
+ rawState[key] = true;
275
+ }
276
+ }
277
+ }
278
+
279
+ // Create a proxy context that auto-unwraps signals and writes back through them.
280
+ // Methods get 'this' bound to this proxy so this.foo = bar triggers reactivity.
281
+ var ctx = {};
282
+ var ctxProxy = new Proxy(ctx, {
283
+ get: function(target, prop) {
284
+ if (prop === '$refs') return $refs;
285
+ if (prop === '$el') return scopeEl;
286
+ if (prop === '$nextTick') return function(fn) { requestAnimationFrame(fn); };
287
+ var s = signalState[prop];
288
+ if (!s) return undefined;
289
+ if (rawState[prop] && s && typeof s === 'function' && typeof s.value !== 'undefined') {
290
+ return s.value; // unwrap signal
291
+ }
292
+ if (typeof s === 'function' && !rawState[prop]) {
293
+ return s.bind(ctxProxy); // bind methods to proxy
294
+ }
295
+ return s;
296
+ },
297
+ set: function(target, prop, value) {
298
+ var s = signalState[prop];
299
+ if (rawState[prop] && s && typeof s === 'function') {
300
+ s.value = value; // write through signal \u2014 triggers effects
301
+ } else {
302
+ signalState[prop] = value;
303
+ }
304
+ return true;
305
+ },
306
+ has: function(target, prop) {
307
+ return prop in signalState || prop === '$refs' || prop === '$el' || prop === '$nextTick';
308
+ },
309
+ ownKeys: function() {
310
+ return Object.keys(signalState).concat(['$refs', '$el', '$nextTick']);
311
+ },
312
+ getOwnPropertyDescriptor: function(target, prop) {
313
+ if (prop in signalState || prop === '$refs' || prop === '$el' || prop === '$nextTick') {
314
+ return { configurable: true, enumerable: true, writable: true, value: ctxProxy[prop] };
315
+ }
316
+ return undefined;
317
+ }
318
+ });
319
+
320
+ // Build scope vars for the signals runtime \u2014 it reads these for expression evaluation.
321
+ // We need to provide getter/setter descriptors so signals track properly.
322
+ var scopeVars = {};
323
+ for (var k in signalState) {
324
+ if (Object.prototype.hasOwnProperty.call(signalState, k)) {
325
+ if (rawState[k]) {
326
+ // Data: expose the signal directly so expressions trigger dependency tracking
327
+ scopeVars[k] = signalState[k];
328
+ } else {
329
+ // Method: bind to ctxProxy so 'this' works
330
+ scopeVars[k] = (typeof signalState[k] === 'function') ? signalState[k].bind(ctxProxy) : signalState[k];
331
+ }
332
+ }
333
+ }
334
+ scopeVars.$refs = $refs;
335
+ scopeVars.$el = scopeEl;
336
+ scopeVars.$nextTick = function(fn) { requestAnimationFrame(fn); };
337
+
338
+ // Register scope \u2014 merge with any existing vars from partial signal scripts
339
+ if (!stx._scopes) stx._scopes = {};
340
+ stx._scopes[scopeId] = Object.assign(stx._scopes[scopeId] || {}, scopeVars);
341
+
342
+ // Store on element for findElementScope
343
+ scopeEl.__stx_scope = scopeVars;
344
+
345
+ // Run init() if present (supports async)
346
+ function runInit() {
347
+ var maybePromise;
348
+ if (initMethod) {
349
+ maybePromise = initMethod.call(ctxProxy);
350
+ }
351
+ if (initExpr) {
352
+ try {
353
+ var keys = Object.keys(scopeVars);
354
+ var vals = keys.map(function(k) { return scopeVars[k]; });
355
+ var fn = new Function(keys.join(','), initExpr);
356
+ var result = fn.apply(ctxProxy, vals);
357
+ if (result && typeof result.then === 'function') maybePromise = result;
358
+ } catch (e) {
359
+ console.warn('[stx-reactive] init expression error:', e);
360
+ }
361
+ }
362
+ // If init is async, signal updates will trigger effects automatically
363
+ // when init() resolves and sets this.prop = value (writes through signal)
364
+ if (maybePromise && typeof maybePromise.then === 'function') {
365
+ maybePromise.catch(function(e) {
366
+ console.error('[stx-reactive] async init() error:', e);
367
+ });
368
+ }
369
+ }
370
+
371
+ // Run init before the signals runtime processes this scope
372
+ runInit();
373
+
374
+ // Expose for debugging
375
+ scopeEl.__stx_state = ctxProxy;
376
+ scopeEl.__stx_execute = function(stmt, $event, $el) {
377
+ try {
378
+ // Run the statement with the reactive proxy as the lexical scope.
379
+ // Wrapping in a with-block on the proxy makes bare reads/writes go
380
+ // through it (so foo = bar triggers signal.set()) instead of treating
381
+ // each state key as a local function parameter \u2014 bare assignments
382
+ // would otherwise just rebind the local and never reach the signal.
383
+ var fn = new Function('$event', '$el', 'with(this){' + stmt + ';}');
384
+ fn.call(ctxProxy, $event, $el);
385
+ } catch (e) {
386
+ console.warn('[stx-reactive] execute error:', e);
387
+ }
388
+ };
389
+ }
390
+
391
+ return { initScope: initScope, reactive: reactive };
392
+ })();
393
+ `;
394
+ }
395
+ function substituteExpressionsInExpr(expr, context) {
396
+ let out = expr.replace(/\{!!([\s\S]*?)!!\}/g, (match, inner) => {
397
+ try {
398
+ const value = evaluateExpression(inner, context, !0);
399
+ if (value === void 0)
400
+ return match;
401
+ return String(value);
402
+ } catch {
403
+ return match;
404
+ }
405
+ });
406
+ out = out.replace(/\{\{([\s\S]*?)\}\}/g, (match, inner) => {
407
+ try {
408
+ const value = evaluateExpression(inner, context, !0);
409
+ if (value === void 0)
410
+ return match;
411
+ if (typeof value === "string") {
412
+ const trimmed = value.trim();
413
+ if (trimmed.startsWith("{") && trimmed.endsWith("}") || trimmed.startsWith("[") && trimmed.endsWith("]"))
414
+ try {
415
+ JSON.parse(trimmed);
416
+ return trimmed;
417
+ } catch {}
418
+ }
419
+ return JSON.stringify(value);
420
+ } catch {
421
+ return match;
422
+ }
423
+ });
424
+ return out;
425
+ }
426
+ function generateScopeInitializers(scopes, context) {
427
+ if (scopes.length === 0)
428
+ return "";
429
+ const initializers = scopes.map((scope) => {
430
+ const refsJson = JSON.stringify(Object.fromEntries(scope.refs)), resolvedStateExpr = substituteExpressionsInExpr(scope.stateExpr, context), resolvedInitExpr = scope.initExpr ? substituteExpressionsInExpr(scope.initExpr, context) : null, stateExprJson = JSON.stringify(resolvedStateExpr), initExprJson = resolvedInitExpr ? JSON.stringify(resolvedInitExpr) : "null";
431
+ return `
432
+ (function() {
433
+ var scopeEl = document.querySelector('${scope.selector}');
434
+ if (!scopeEl) return;
435
+ var refs = ${refsJson};
436
+ __stx_reactive.initScope(scopeEl, ${stateExprJson}, [], refs, ${initExprJson});
437
+ })();`;
438
+ }).join(`
439
+ `);
440
+ return `
441
+ <script data-stx-scoped data-stx-reactive>
442
+ ${generateReactiveRuntime()}
443
+ ${initializers}
444
+ </script>`;
445
+ }
446
+ function addIdsToElements(template, pattern) {
447
+ const tagRegex = new RegExp(`<([a-z][a-z0-9-]*)\\s+([^>]*${pattern.source}[^>]*)>`, "gi");
448
+ return template.replace(tagRegex, (match, tagName, attrs) => {
449
+ if (/\bid\s*=\s*["']/.test(attrs))
450
+ return match;
451
+ const newId = `__stx_el_${elementCounter++}`;
452
+ return `<${tagName} id="${newId}" ${attrs}>`;
453
+ });
454
+ }
455
+ function removeReactiveAttributes(template) {
456
+ let output = template;
457
+ const attrsToRemove = [
458
+ /\s*x-data\s*=\s*"[^"]*"/g,
459
+ /\s*x-init\s*=\s*"[^"]*"/g,
460
+ /\s*x-model\s*=\s*"[^"]*"/g,
461
+ /\s*x-show\s*=\s*"[^"]*"/g,
462
+ /\s*x-hide\s*=\s*"[^"]*"/g,
463
+ /\s*x-text\s*=\s*"[^"]*"/g,
464
+ /\s*x-html\s*=\s*"[^"]*"/g,
465
+ /\s*x-ref\s*=\s*"[^"]*"/g,
466
+ /\s*x-bind:[a-z][a-z0-9-]*\s*=\s*"[^"]*"/g,
467
+ /\s*:(?!click|dblclick|submit|input|change|keydown|keyup|keypress|focus|blur|mousedown|mouseup|mousemove|mouseenter|mouseleave|scroll|resize|touchstart|touchend|touchmove|contextmenu|wheel|pointerdown|pointerup|pointermove|if|for|show|model|class|text|html|ref|style)[a-z][a-z0-9-]*\s*=\s*"[^"]*"/g,
468
+ /\s*x-transition:enter\s*=\s*"[^"]*"/g,
469
+ /\s*x-transition:enter-start\s*=\s*"[^"]*"/g,
470
+ /\s*x-transition:enter-end\s*=\s*"[^"]*"/g,
471
+ /\s*x-transition:leave\s*=\s*"[^"]*"/g,
472
+ /\s*x-transition:leave-start\s*=\s*"[^"]*"/g,
473
+ /\s*x-transition:leave-end\s*=\s*"[^"]*"/g,
474
+ /\s*x-transition\s*=\s*"[^"]*"/g,
475
+ /\s*x-data\s*=\s*'[^']*'/g,
476
+ /\s*x-init\s*=\s*'[^']*'/g,
477
+ /\s*x-model\s*=\s*'[^']*'/g,
478
+ /\s*x-show\s*=\s*'[^']*'/g,
479
+ /\s*x-hide\s*=\s*'[^']*'/g,
480
+ /\s*x-text\s*=\s*'[^']*'/g,
481
+ /\s*x-html\s*=\s*'[^']*'/g,
482
+ /\s*x-ref\s*=\s*'[^']*'/g,
483
+ /\s*x-bind:[a-z][a-z0-9-]*\s*=\s*'[^']*'/g,
484
+ /\s*:(?!click|dblclick|submit|input|change|keydown|keyup|keypress|focus|blur|mousedown|mouseup|mousemove|mouseenter|mouseleave|scroll|resize|touchstart|touchend|touchmove|contextmenu|wheel|pointerdown|pointerup|pointermove|if|for|show|model|class|text|html|ref|style)[a-z][a-z0-9-]*\s*=\s*'[^']*'/g,
485
+ /\s*x-transition:enter\s*=\s*'[^']*'/g,
486
+ /\s*x-transition:enter-start\s*=\s*'[^']*'/g,
487
+ /\s*x-transition:enter-end\s*=\s*'[^']*'/g,
488
+ /\s*x-transition:leave\s*=\s*'[^']*'/g,
489
+ /\s*x-transition:leave-start\s*=\s*'[^']*'/g,
490
+ /\s*x-transition:leave-end\s*=\s*'[^']*'/g,
491
+ /\s*x-transition\s*=\s*'[^']*'/g,
492
+ /\s*x-transition\.duration\.\d+(?:ms)?/g,
493
+ /\s*x-transition(?=[\s>\/])/g,
494
+ /\s*@(?!for\b|if\b|show\b|model\b|class\b|style\b)[a-z]+(?:\.[a-z]+)*\s*=\s*"[^"]*"/gs,
495
+ /\s*@(?!for\b|if\b|show\b|model\b|class\b|style\b)[a-z]+(?:\.[a-z]+)*\s*=\s*'[^']*'/gs
496
+ ];
497
+ for (const regex of attrsToRemove)
498
+ output = output.replace(regex, "");
499
+ return output;
500
+ }
501
+ export function processReactiveDirectives(template, context, _filePath) {
502
+ scopeCounter = 0;
503
+ if (!hasReactiveDirectives(template))
504
+ return template;
505
+ const scopes = findReactiveScopes(template);
506
+ if (scopes.length === 0)
507
+ return template;
508
+ let output = finalizeTemplate(template, scopes);
509
+ const script = generateScopeInitializers(scopes, context), bodyCloseIdx = output.lastIndexOf("</body>");
510
+ if (bodyCloseIdx !== -1)
511
+ output = output.slice(0, bodyCloseIdx) + script + `
512
+ ` + output.slice(bodyCloseIdx);
513
+ else
514
+ output += script;
515
+ return output;
516
+ }
517
+ function addAllReactiveIds(template) {
518
+ let output = template;
519
+ elementCounter = 0;
520
+ const xDataPlaceholders = [];
521
+ output = output.replace(/x-data\s*=\s*"[^"]*"/gi, (match) => {
522
+ const idx = xDataPlaceholders.length;
523
+ xDataPlaceholders.push(match);
524
+ return `__XDATA_PLACEHOLDER_${idx}__`;
525
+ });
526
+ output = output.replace(/x-data\s*=\s*'[^']*'/gi, (match) => {
527
+ const idx = xDataPlaceholders.length;
528
+ xDataPlaceholders.push(match);
529
+ return `__XDATA_PLACEHOLDER_${idx}__`;
530
+ });
531
+ output = addIdsToElements(output, /x-model\s*=\s*["']/);
532
+ output = addIdsToElements(output, /x-show\s*=\s*["']/);
533
+ output = addIdsToElements(output, /x-hide\s*=\s*["']/);
534
+ output = addIdsToElements(output, /x-text\s*=\s*["']/);
535
+ output = addIdsToElements(output, /x-html\s*=\s*["']/);
536
+ output = addIdsToElements(output, /(?:x-bind:|:)[a-z]/);
537
+ output = addIdsToElements(output, /x-ref\s*=\s*["']/);
538
+ output = addIdsToElements(output, /@[a-z]+(?:\.[a-z]+)*\s*=\s*["']/);
539
+ for (let i = 0;i < xDataPlaceholders.length; i++)
540
+ output = output.replace(`__XDATA_PLACEHOLDER_${i}__`, xDataPlaceholders[i]);
541
+ return output;
542
+ }
543
+ function finalizeTemplate(template, scopes) {
544
+ let output = template;
545
+ for (const scope of scopes) {
546
+ const existingMatch = new RegExp(`<[a-z][a-z0-9-]*\\s+[^>]*data-stx-scope="([^"]*)"[^>]*x-data\\s*=\\s*["']${escapeRegex(scope.stateExpr)}["']`, "gi").exec(output);
547
+ if (existingMatch) {
548
+ scope.id = existingMatch[1];
549
+ scope.selector = `[data-stx-scope="${scope.id}"]`;
550
+ } else {
551
+ const reverseMatch = new RegExp(`<[a-z][a-z0-9-]*\\s+[^>]*x-data\\s*=\\s*["']${escapeRegex(scope.stateExpr)}["'][^>]*data-stx-scope="([^"]*)"`, "gi").exec(output);
552
+ if (reverseMatch) {
553
+ scope.id = reverseMatch[1];
554
+ scope.selector = `[data-stx-scope="${scope.id}"]`;
555
+ } else {
556
+ output = output.replace(new RegExp(`(<[a-z][a-z0-9-]*\\s+)([^>]*)(x-data\\s*=\\s*"${escapeRegex(scope.stateExpr)}")([^>]*>)`, "gi"), `$1data-stx-scope="${scope.id}" $2$3$4`);
557
+ output = output.replace(new RegExp(`(<[a-z][a-z0-9-]*\\s+)([^>]*)(x-data\\s*=\\s*'${escapeRegex(scope.stateExpr)}')([^>]*>)`, "gi"), `$1data-stx-scope="${scope.id}" $2$3$4`);
558
+ }
559
+ }
560
+ }
561
+ output = output.replace(/\s*x-data\s*=\s*"([^"]*)"/g, ' data-stx-xdata="$1"');
562
+ output = output.replace(/\s*x-data\s*=\s*'([^']*)'/g, " data-stx-xdata='$1'");
563
+ output = output.replace(/\s*x-init\s*=\s*"[^"]*"/g, "");
564
+ output = output.replace(/\s*x-init\s*=\s*'[^']*'/g, "");
565
+ return output;
566
+ }
567
+ export function hasReactiveDirectives(template) {
568
+ return /x-data\s*=\s*["']/.test(template);
569
+ }