@stacksjs/stx 0.2.94 → 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 (614) 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 -7
  109. package/dist/dev-server/serve-file.js +439 -7
  110. package/dist/dev-server/serve-markdown.js +281 -2
  111. package/dist/dev-server/serve-multi.js +424 -17
  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 +6 -7
  357. package/dist/chunk-03c26pjz.js +0 -3
  358. package/dist/chunk-04mvcmcr.js +0 -106
  359. package/dist/chunk-05hgyyqc.js +0 -4
  360. package/dist/chunk-095s3972.js +0 -99
  361. package/dist/chunk-0b9w2w1y.js +0 -1
  362. package/dist/chunk-0dz85jrp.js +0 -3
  363. package/dist/chunk-0g4gece6.js +0 -4
  364. package/dist/chunk-0jd0pndq.js +0 -3
  365. package/dist/chunk-0jkwrcwj.js +0 -3
  366. package/dist/chunk-0m9tdm7t.js +0 -71
  367. package/dist/chunk-0qakwen3.js +0 -1
  368. package/dist/chunk-0qnz93q2.js +0 -3
  369. package/dist/chunk-0tatqxj2.js +0 -57
  370. package/dist/chunk-0wdar532.js +0 -102
  371. package/dist/chunk-13yz561y.js +0 -3
  372. package/dist/chunk-174z0cd0.js +0 -3
  373. package/dist/chunk-1mmykse5.js +0 -81
  374. package/dist/chunk-1z2yq9em.js +0 -3
  375. package/dist/chunk-1z5nhbjt.js +0 -90
  376. package/dist/chunk-1zgsgk4b.js +0 -1
  377. package/dist/chunk-25s7bckb.js +0 -171
  378. package/dist/chunk-268adc7r.js +0 -2230
  379. package/dist/chunk-26r6zh3t.js +0 -194
  380. package/dist/chunk-2w3302dh.js +0 -3
  381. package/dist/chunk-2xen423s.js +0 -3
  382. package/dist/chunk-39gm08bn.js +0 -39
  383. package/dist/chunk-3bjtemm6.js +0 -128
  384. package/dist/chunk-3jm3snz8.js +0 -3
  385. package/dist/chunk-3ngm57nt.js +0 -12
  386. package/dist/chunk-3rh7va1z.js +0 -3
  387. package/dist/chunk-3yg9hbmb.js +0 -4
  388. package/dist/chunk-44hd3kab.js +0 -1
  389. package/dist/chunk-46mkpbkk.js +0 -12
  390. package/dist/chunk-48cw2nde.js +0 -2
  391. package/dist/chunk-48r3qe0k.js +0 -3
  392. package/dist/chunk-4aj7ftqb.js +0 -1
  393. package/dist/chunk-4bt81cg3.js +0 -61
  394. package/dist/chunk-4j188175.js +0 -3
  395. package/dist/chunk-4k7d8p8d.js +0 -188
  396. package/dist/chunk-4qq8ffke.js +0 -28
  397. package/dist/chunk-50vqeesm.js +0 -142
  398. package/dist/chunk-52agge4n.js +0 -38
  399. package/dist/chunk-55yp0q8t.js +0 -201
  400. package/dist/chunk-57p201gb.js +0 -83
  401. package/dist/chunk-5ggw1dyv.js +0 -3
  402. package/dist/chunk-5kt3ay7x.js +0 -10
  403. package/dist/chunk-5p568px4.js +0 -1166
  404. package/dist/chunk-5ppkfyn2.js +0 -3
  405. package/dist/chunk-5q87fgkk.js +0 -3
  406. package/dist/chunk-5qb761h2.js +0 -3
  407. package/dist/chunk-5xvbq2gs.js +0 -30
  408. package/dist/chunk-647849kf.js +0 -34
  409. package/dist/chunk-6b5k6w2q.js +0 -7
  410. package/dist/chunk-6cr3eeh4.js +0 -23
  411. package/dist/chunk-6djgb0hr.js +0 -3
  412. package/dist/chunk-6dqzky7x.js +0 -35
  413. package/dist/chunk-6e4c6g46.js +0 -3
  414. package/dist/chunk-6w03t7h6.js +0 -3
  415. package/dist/chunk-6wn85hn6.js +0 -4
  416. package/dist/chunk-6y4gqs1q.js +0 -169
  417. package/dist/chunk-75rndzbd.js +0 -6
  418. package/dist/chunk-77tga15w.js +0 -3
  419. package/dist/chunk-7a51hkpf.js +0 -3
  420. package/dist/chunk-7b0xdy5h.js +0 -386
  421. package/dist/chunk-7cgmq685.js +0 -33
  422. package/dist/chunk-7dy588as.js +0 -6
  423. package/dist/chunk-7rvh2wwv.js +0 -721
  424. package/dist/chunk-7sm05m0j.js +0 -351
  425. package/dist/chunk-7sqdeqsw.js +0 -1
  426. package/dist/chunk-7xcfy2fn.js +0 -4
  427. package/dist/chunk-82t27pvd.js +0 -5
  428. package/dist/chunk-87kx8byz.js +0 -1115
  429. package/dist/chunk-8fgwhhb8.js +0 -6
  430. package/dist/chunk-8qbax8xn.js +0 -347
  431. package/dist/chunk-91s2hres.js +0 -8
  432. package/dist/chunk-94g3cahw.js +0 -11
  433. package/dist/chunk-957amb71.js +0 -8
  434. package/dist/chunk-95w08s8v.js +0 -3
  435. package/dist/chunk-9agvhp1x.js +0 -93
  436. package/dist/chunk-9tmbrwwx.js +0 -219
  437. package/dist/chunk-9yz5d003.js +0 -51
  438. package/dist/chunk-a3hyn4we.js +0 -79
  439. package/dist/chunk-a69tvya5.js +0 -53
  440. package/dist/chunk-adjcg6wa.js +0 -498
  441. package/dist/chunk-adqh2m9z.js +0 -45
  442. package/dist/chunk-asarebzq.js +0 -292
  443. package/dist/chunk-aw3rp9ac.js +0 -24
  444. package/dist/chunk-b0cyc09a.js +0 -109
  445. package/dist/chunk-b3kkjcdh.js +0 -3
  446. package/dist/chunk-b3prs7y0.js +0 -5
  447. package/dist/chunk-b5zc9y0y.js +0 -90
  448. package/dist/chunk-baa7h4yz.js +0 -3
  449. package/dist/chunk-bgec9r1v.js +0 -5224
  450. package/dist/chunk-bjnjpsgn.js +0 -3
  451. package/dist/chunk-bk8ew8ze.js +0 -24
  452. package/dist/chunk-bn08k7yy.js +0 -3
  453. package/dist/chunk-bpgg59wa.js +0 -3
  454. package/dist/chunk-bwxda6n1.js +0 -3
  455. package/dist/chunk-bykjk6vj.js +0 -4
  456. package/dist/chunk-c53hyw5c.js +0 -477
  457. package/dist/chunk-c7jg8w13.js +0 -3
  458. package/dist/chunk-ca6qd1dx.js +0 -3
  459. package/dist/chunk-cdbwprfv.js +0 -6
  460. package/dist/chunk-ceg2c2q2.js +0 -11
  461. package/dist/chunk-cn409b69.js +0 -3
  462. package/dist/chunk-cn8az1b4.js +0 -1
  463. package/dist/chunk-cp3kwv17.js +0 -8
  464. package/dist/chunk-cpcc11vp.js +0 -5
  465. package/dist/chunk-cr3wbrcr.js +0 -10
  466. package/dist/chunk-cygfdk1n.js +0 -3
  467. package/dist/chunk-cyp4m0vh.js +0 -16
  468. package/dist/chunk-cz25azze.js +0 -4
  469. package/dist/chunk-d77yxcds.js +0 -3
  470. package/dist/chunk-dvfs1h3c.js +0 -117
  471. package/dist/chunk-dyjnn5k8.js +0 -262
  472. package/dist/chunk-dzw95th7.js +0 -3
  473. package/dist/chunk-e0zytzdh.js +0 -179
  474. package/dist/chunk-e53h9qhd.js +0 -84
  475. package/dist/chunk-eds0f8f1.js +0 -3
  476. package/dist/chunk-eh8hact1.js +0 -5
  477. package/dist/chunk-epj957jf.js +0 -4
  478. package/dist/chunk-eqeyaq6g.js +0 -77
  479. package/dist/chunk-fbxt2mrx.js +0 -5
  480. package/dist/chunk-fch9tk1k.js +0 -3
  481. package/dist/chunk-fe7r1mq1.js +0 -9
  482. package/dist/chunk-fhawx87n.js +0 -8
  483. package/dist/chunk-fk51yyrw.js +0 -3
  484. package/dist/chunk-fms20x0n.js +0 -21
  485. package/dist/chunk-fs0qezn5.js +0 -341
  486. package/dist/chunk-fzm3y0r3.js +0 -267
  487. package/dist/chunk-g2hekckm.js +0 -161
  488. package/dist/chunk-g4ps1dj8.js +0 -140
  489. package/dist/chunk-g8b81pzc.js +0 -3
  490. package/dist/chunk-ganag9dm.js +0 -3
  491. package/dist/chunk-gc84b1d2.js +0 -58
  492. package/dist/chunk-gcf5v18y.js +0 -60
  493. package/dist/chunk-ghrx0hn1.js +0 -4
  494. package/dist/chunk-gqpkp459.js +0 -3
  495. package/dist/chunk-h45py5w5.js +0 -2
  496. package/dist/chunk-h5wa62ek.js +0 -145
  497. package/dist/chunk-h82kjdr4.js +0 -83
  498. package/dist/chunk-haecq01c.js +0 -3
  499. package/dist/chunk-hepg894w.js +0 -3
  500. package/dist/chunk-hjdc99kb.js +0 -3
  501. package/dist/chunk-hje9v2zh.js +0 -3
  502. package/dist/chunk-hjv76kcw.js +0 -1
  503. package/dist/chunk-hke99a0v.js +0 -3
  504. package/dist/chunk-hpqr9e3x.js +0 -3
  505. package/dist/chunk-hq5cem49.js +0 -236
  506. package/dist/chunk-hrampcrj.js +0 -3
  507. package/dist/chunk-ht4j68cs.js +0 -3
  508. package/dist/chunk-hxx3za24.js +0 -62
  509. package/dist/chunk-j4s5qwd7.js +0 -4
  510. package/dist/chunk-jbejwejg.js +0 -8
  511. package/dist/chunk-jc0fc4ht.js +0 -11
  512. package/dist/chunk-jcs0ymw7.js +0 -3
  513. package/dist/chunk-jfm69keq.js +0 -231
  514. package/dist/chunk-jfrn43vh.js +0 -2
  515. package/dist/chunk-jjamhxpm.js +0 -139
  516. package/dist/chunk-jjvp4t5w.js +0 -27
  517. package/dist/chunk-jt44av4j.js +0 -3
  518. package/dist/chunk-jt98jhpt.js +0 -10
  519. package/dist/chunk-k8440jxh.js +0 -6
  520. package/dist/chunk-kdxa9epn.js +0 -21
  521. package/dist/chunk-kfd2hf6f.js +0 -3
  522. package/dist/chunk-kgym7ch9.js +0 -8
  523. package/dist/chunk-kh6rfz2v.js +0 -4
  524. package/dist/chunk-kkp6rs2n.js +0 -36
  525. package/dist/chunk-ktkmvaa8.js +0 -1
  526. package/dist/chunk-m59y310j.js +0 -3
  527. package/dist/chunk-mgmyr1b9.js +0 -6
  528. package/dist/chunk-mqwbpamc.js +0 -3
  529. package/dist/chunk-mrehzhxv.js +0 -5
  530. package/dist/chunk-mv03qb75.js +0 -3
  531. package/dist/chunk-mv4fb50w.js +0 -1
  532. package/dist/chunk-mwbng54r.js +0 -2
  533. package/dist/chunk-n46a5g1g.js +0 -3
  534. package/dist/chunk-n944baxp.js +0 -3
  535. package/dist/chunk-nanw7yhz.js +0 -14
  536. package/dist/chunk-nap11ntr.js +0 -21
  537. package/dist/chunk-ncnfa8ae.js +0 -29
  538. package/dist/chunk-ngxfwzq3.js +0 -3
  539. package/dist/chunk-nvwb4x04.js +0 -3
  540. package/dist/chunk-nw34xajc.js +0 -8
  541. package/dist/chunk-payfb24w.js +0 -207
  542. package/dist/chunk-pc31m5x5.js +0 -398
  543. package/dist/chunk-pg1fvqb9.js +0 -167
  544. package/dist/chunk-q60knhjf.js +0 -3
  545. package/dist/chunk-q6h6yvzb.js +0 -10
  546. package/dist/chunk-qd5461tt.js +0 -3
  547. package/dist/chunk-qdc3aav1.js +0 -3
  548. package/dist/chunk-qfwzdffx.js +0 -3
  549. package/dist/chunk-qgxwmagw.js +0 -134
  550. package/dist/chunk-qhdtssn1.js +0 -19
  551. package/dist/chunk-qk584whs.js +0 -3
  552. package/dist/chunk-qm4yppj5.js +0 -57
  553. package/dist/chunk-qwyd9a1d.js +0 -2
  554. package/dist/chunk-qxs6et76.js +0 -196
  555. package/dist/chunk-rb1e4cnb.js +0 -3
  556. package/dist/chunk-rh80q1nd.js +0 -1
  557. package/dist/chunk-rkffm9sy.js +0 -128
  558. package/dist/chunk-rv002yn0.js +0 -14
  559. package/dist/chunk-s6ja2bdg.js +0 -66
  560. package/dist/chunk-sjagg9qz.js +0 -66
  561. package/dist/chunk-sn07azv3.js +0 -3
  562. package/dist/chunk-svahbw0w.js +0 -12
  563. package/dist/chunk-svhtdb0s.js +0 -6
  564. package/dist/chunk-t37dp99j.js +0 -3
  565. package/dist/chunk-tj6zfxeb.js +0 -64
  566. package/dist/chunk-tmgz5t2g.js +0 -3
  567. package/dist/chunk-tr0z0e1g.js +0 -3
  568. package/dist/chunk-tx6br9r4.js +0 -274
  569. package/dist/chunk-v97390pe.js +0 -1
  570. package/dist/chunk-vcr5pzpx.js +0 -233
  571. package/dist/chunk-vdfwv0fp.js +0 -6
  572. package/dist/chunk-vp2395eb.js +0 -3
  573. package/dist/chunk-vpe6napb.js +0 -28
  574. package/dist/chunk-vv9wfz1c.js +0 -12
  575. package/dist/chunk-vw6ejgmy.js +0 -21
  576. package/dist/chunk-vx22he47.js +0 -1
  577. package/dist/chunk-w01y57f5.js +0 -1539
  578. package/dist/chunk-w21mwxdd.js +0 -4
  579. package/dist/chunk-w4n8fqp7.js +0 -216
  580. package/dist/chunk-w959hm8j.js +0 -358
  581. package/dist/chunk-wf7zrjsw.js +0 -138
  582. package/dist/chunk-wk07pwtd.js +0 -321
  583. package/dist/chunk-wvef3ngh.js +0 -127
  584. package/dist/chunk-wxvyj65q.js +0 -2
  585. package/dist/chunk-x1hjv24z.js +0 -11
  586. package/dist/chunk-x39sfpvm.js +0 -302
  587. package/dist/chunk-x4fze3q2.js +0 -314
  588. package/dist/chunk-x64kb787.js +0 -15
  589. package/dist/chunk-xcb0pbr6.js +0 -4
  590. package/dist/chunk-xhkjhxsp.js +0 -3
  591. package/dist/chunk-xhnpsngj.js +0 -5
  592. package/dist/chunk-xsqbk4yk.js +0 -3
  593. package/dist/chunk-xygc53vr.js +0 -68
  594. package/dist/chunk-y0qg6rrv.js +0 -3
  595. package/dist/chunk-y25pr13j.js +0 -19
  596. package/dist/chunk-y4c744dk.js +0 -3
  597. package/dist/chunk-y4md9hp0.js +0 -3
  598. package/dist/chunk-y5wazw6j.js +0 -7
  599. package/dist/chunk-y5xz0jc4.js +0 -141
  600. package/dist/chunk-y86m1wr4.js +0 -4
  601. package/dist/chunk-yaan98dd.js +0 -3
  602. package/dist/chunk-yach037f.js +0 -32
  603. package/dist/chunk-yexjrg9d.js +0 -7
  604. package/dist/chunk-ygvyc6wv.js +0 -90
  605. package/dist/chunk-yj560gp8.js +0 -8
  606. package/dist/chunk-yn38c15w.js +0 -4
  607. package/dist/chunk-yr1gdceh.js +0 -3
  608. package/dist/chunk-yw2fzq86.js +0 -3
  609. package/dist/chunk-ywkrxp2h.js +0 -147
  610. package/dist/chunk-z37xq5rx.js +0 -3
  611. package/dist/chunk-z4djtgt0.js +0 -71
  612. package/dist/chunk-z8cjr9n9.js +0 -7
  613. package/dist/chunk-znxp3zha.js +0 -71
  614. package/dist/chunk-zt2yag10.js +0 -429
@@ -1,2 +1,163 @@
1
- // @bun
2
- import"../chunk-3jm3snz8.js";function I(){let D=new Set,B=typeof window<"u",q={width:B?window.innerWidth:0,height:B?window.innerHeight:0};if(B){let j=()=>{q={width:window.innerWidth,height:window.innerHeight};for(let F of D)try{F(q)}catch(G){console.error("[useWindowSize] Subscriber error:",G)}};window.addEventListener("resize",j,{passive:!0})}return{get width(){return q.width},get height(){return q.height},subscribe:(j)=>{return D.add(j),j(q),()=>D.delete(j)}}}function J(){let D=new Set,B=typeof window<"u",q={x:B?window.scrollX:0,y:B?window.scrollY:0};if(B){let j=()=>{q={x:window.scrollX,y:window.scrollY};for(let F of D)try{F(q)}catch(G){console.error("[useScroll] Subscriber error:",G)}};window.addEventListener("scroll",j,{passive:!0})}return{get x(){return q.x},get y(){return q.y},subscribe:(j)=>{return D.add(j),j(q),()=>D.delete(j)},scrollTo:(j,F)=>{if(!B)return;if(typeof j==="number")window.scrollTo(j,F??0);else window.scrollTo(j)},scrollToTop:()=>{if(!B)return;window.scrollTo({top:0,behavior:"smooth"})},scrollToBottom:()=>{if(!B)return;window.scrollTo({top:document.body.scrollHeight,behavior:"smooth"})}}}function K(){let D=new Set,B=typeof document<"u",q=B?document.visibilityState==="visible":!0;if(B)document.addEventListener("visibilitychange",()=>{q=document.visibilityState==="visible";for(let j of D)try{j(q)}catch(F){console.error("[useVisibility] Subscriber error:",F)}});return{get isVisible(){return q},subscribe:(j)=>{return D.add(j),j(q),()=>D.delete(j)}}}function O(D){let B=typeof document<"u";if(D&&B)document.title=D;return{get value(){return B?document.title:""},set value(q){if(B)document.title=q},set:(q)=>{if(B)document.title=q}}}function Q(D){let B=typeof document<"u",q=()=>{if(!B)return null;let j=document.querySelector('link[rel*="icon"]');if(!j)j=document.createElement("link"),j.rel="icon",document.head.appendChild(j);return j};if(D){let j=q();if(j)j.href=D}return{get value(){return q()?.href||""},set value(j){let F=q();if(F)F.href=j},set:(j)=>{let F=q();if(F)F.href=j}}}export{I as useWindowSize,K as useVisibility,O as useTitle,J as useScroll,Q as useFavicon};
1
+ export function useWindowSize() {
2
+ const subscribers = new Set, isClient = typeof window < "u";
3
+ let currentSize = {
4
+ width: isClient ? window.innerWidth : 0,
5
+ height: isClient ? window.innerHeight : 0
6
+ };
7
+ if (isClient) {
8
+ const handler = () => {
9
+ currentSize = {
10
+ width: window.innerWidth,
11
+ height: window.innerHeight
12
+ };
13
+ for (const callback of subscribers)
14
+ try {
15
+ callback(currentSize);
16
+ } catch (e) {
17
+ console.error("[useWindowSize] Subscriber error:", e);
18
+ }
19
+ };
20
+ window.addEventListener("resize", handler, { passive: !0 });
21
+ }
22
+ return {
23
+ get width() {
24
+ return currentSize.width;
25
+ },
26
+ get height() {
27
+ return currentSize.height;
28
+ },
29
+ subscribe: (callback) => {
30
+ subscribers.add(callback);
31
+ callback(currentSize);
32
+ return () => subscribers.delete(callback);
33
+ }
34
+ };
35
+ }
36
+ export function useScroll() {
37
+ const subscribers = new Set, isClient = typeof window < "u";
38
+ let currentPosition = {
39
+ x: isClient ? window.scrollX : 0,
40
+ y: isClient ? window.scrollY : 0
41
+ };
42
+ if (isClient) {
43
+ const handler = () => {
44
+ currentPosition = {
45
+ x: window.scrollX,
46
+ y: window.scrollY
47
+ };
48
+ for (const callback of subscribers)
49
+ try {
50
+ callback(currentPosition);
51
+ } catch (e) {
52
+ console.error("[useScroll] Subscriber error:", e);
53
+ }
54
+ };
55
+ window.addEventListener("scroll", handler, { passive: !0 });
56
+ }
57
+ return {
58
+ get x() {
59
+ return currentPosition.x;
60
+ },
61
+ get y() {
62
+ return currentPosition.y;
63
+ },
64
+ subscribe: (callback) => {
65
+ subscribers.add(callback);
66
+ callback(currentPosition);
67
+ return () => subscribers.delete(callback);
68
+ },
69
+ scrollTo: (options, y) => {
70
+ if (!isClient)
71
+ return;
72
+ if (typeof options === "number")
73
+ window.scrollTo(options, y ?? 0);
74
+ else
75
+ window.scrollTo(options);
76
+ },
77
+ scrollToTop: () => {
78
+ if (!isClient)
79
+ return;
80
+ window.scrollTo({ top: 0, behavior: "smooth" });
81
+ },
82
+ scrollToBottom: () => {
83
+ if (!isClient)
84
+ return;
85
+ window.scrollTo({ top: document.body.scrollHeight, behavior: "smooth" });
86
+ }
87
+ };
88
+ }
89
+ export function useVisibility() {
90
+ const subscribers = new Set, isClient = typeof document < "u";
91
+ let isVisible = isClient ? document.visibilityState === "visible" : !0;
92
+ if (isClient)
93
+ document.addEventListener("visibilitychange", () => {
94
+ isVisible = document.visibilityState === "visible";
95
+ for (const callback of subscribers)
96
+ try {
97
+ callback(isVisible);
98
+ } catch (e) {
99
+ console.error("[useVisibility] Subscriber error:", e);
100
+ }
101
+ });
102
+ return {
103
+ get isVisible() {
104
+ return isVisible;
105
+ },
106
+ subscribe: (callback) => {
107
+ subscribers.add(callback);
108
+ callback(isVisible);
109
+ return () => subscribers.delete(callback);
110
+ }
111
+ };
112
+ }
113
+ export function useTitle(initialTitle) {
114
+ const isClient = typeof document < "u";
115
+ if (initialTitle && isClient)
116
+ document.title = initialTitle;
117
+ return {
118
+ get value() {
119
+ return isClient ? document.title : "";
120
+ },
121
+ set value(newTitle) {
122
+ if (isClient)
123
+ document.title = newTitle;
124
+ },
125
+ set: (title) => {
126
+ if (isClient)
127
+ document.title = title;
128
+ }
129
+ };
130
+ }
131
+ export function useFavicon(href) {
132
+ const isClient = typeof document < "u", getLinkElement = () => {
133
+ if (!isClient)
134
+ return null;
135
+ let link = document.querySelector('link[rel*="icon"]');
136
+ if (!link) {
137
+ link = document.createElement("link");
138
+ link.rel = "icon";
139
+ document.head.appendChild(link);
140
+ }
141
+ return link;
142
+ };
143
+ if (href) {
144
+ const link = getLinkElement();
145
+ if (link)
146
+ link.href = href;
147
+ }
148
+ return {
149
+ get value() {
150
+ return getLinkElement()?.href || "";
151
+ },
152
+ set value(newHref) {
153
+ const link = getLinkElement();
154
+ if (link)
155
+ link.href = newHref;
156
+ },
157
+ set: (newHref) => {
158
+ const link = getLinkElement();
159
+ if (link)
160
+ link.href = newHref;
161
+ }
162
+ };
163
+ }
@@ -1,2 +1,552 @@
1
- // @bun
2
- import{$z as A,Bz as a,Cz as b,Dz as c,Ez as d,Fz as e,Gz as f,Hz as g,Iz as h,Jz as i,Kz as j,Lz as k,Mz as l,Nz as m,Oz as n,Pz as o,Qz as p,Rz as q,Sz as r,Tz as s,Uz as t,Vz as u,Wz as v,Xz as w,Yz as x,Zz as y,_z as z,aA as B}from"./chunk-8qbax8xn.js";import"./chunk-3jm3snz8.js";export{x as withInjectionScope,l as watch,p as updateComponent,n as setupComponent,b as setCurrentInstance,j as ref,v as pushInjectionScope,t as provide,w as popInjectionScope,i as onUpdated,f as onUpdate,h as onUnmounted,g as onMounted,d as onMount,e as onDestroy,k as namedRef,o as mountComponent,u as inject,c as getCurrentInstance,r as generateLifecycleRuntime,q as destroyComponent,j as createRef,s as createInjectionKey,a as createComponentInstance,m as computed,y as clearInjections,z as ThemeKey,A as RouterKey,B as I18nKey};
1
+ let currentInstance = null;
2
+ const instances = new Map;
3
+ let componentIdCounter = 0;
4
+ function generateId() {
5
+ return `stx-${++componentIdCounter}-${Date.now().toString(36)}`;
6
+ }
7
+ export function createComponentInstance(element) {
8
+ const instance = {
9
+ id: generateId(),
10
+ element: element || null,
11
+ mountHooks: [],
12
+ destroyHooks: [],
13
+ updateHooks: [],
14
+ refs: new Map,
15
+ watchers: [],
16
+ isMounted: !1
17
+ };
18
+ instances.set(instance.id, instance);
19
+ return instance;
20
+ }
21
+ export function setCurrentInstance(instance) {
22
+ currentInstance = instance;
23
+ }
24
+ export function getCurrentInstance() {
25
+ return currentInstance;
26
+ }
27
+ function getOrWarnInstance(hookName) {
28
+ if (!currentInstance) {
29
+ console.warn(`[stx] ${hookName} must be called within a component setup.`);
30
+ return null;
31
+ }
32
+ return currentInstance;
33
+ }
34
+ export function onMount(hook) {
35
+ const instance = getOrWarnInstance("onMount");
36
+ if (instance)
37
+ instance.mountHooks.push(hook);
38
+ }
39
+ export function onDestroy(hook) {
40
+ const instance = getOrWarnInstance("onDestroy");
41
+ if (instance)
42
+ instance.destroyHooks.push(hook);
43
+ }
44
+ export function onUpdate(hook) {
45
+ const instance = getOrWarnInstance("onUpdate");
46
+ if (instance)
47
+ instance.updateHooks.push(hook);
48
+ }
49
+ export const onMounted = onMount, onUnmounted = onDestroy, onUpdated = onUpdate;
50
+ export function ref(initialValue = null) {
51
+ const r = {
52
+ value: initialValue,
53
+ get current() {
54
+ return this.value;
55
+ }
56
+ }, instance = getCurrentInstance();
57
+ if (instance) {
58
+ const refId = `ref-${instance.refs.size}`;
59
+ instance.refs.set(refId, r);
60
+ }
61
+ return r;
62
+ }
63
+ export function namedRef(name, initialValue = null) {
64
+ const r = ref(initialValue), instance = getCurrentInstance();
65
+ if (instance)
66
+ instance.refs.set(name, r);
67
+ return r;
68
+ }
69
+ export function watch(source, callback, options = {}) {
70
+ let oldValue, cleanup, isActive = !0;
71
+ const run = () => {
72
+ if (!isActive)
73
+ return;
74
+ const newValue = source();
75
+ if (oldValue !== newValue || options.immediate) {
76
+ if (cleanup)
77
+ cleanup();
78
+ cleanup = callback(newValue, oldValue);
79
+ oldValue = newValue;
80
+ }
81
+ };
82
+ if (options.immediate)
83
+ run();
84
+ else
85
+ oldValue = source();
86
+ const intervalId = setInterval(run, 16), stop = () => {
87
+ isActive = !1;
88
+ clearInterval(intervalId);
89
+ if (cleanup)
90
+ cleanup();
91
+ }, instance = getCurrentInstance();
92
+ if (instance) {
93
+ instance.watchers.push({ stop });
94
+ instance.destroyHooks.push(stop);
95
+ }
96
+ return stop;
97
+ }
98
+ export function computed(getter) {
99
+ let cachedValue, isDirty = !0;
100
+ return {
101
+ get value() {
102
+ if (isDirty) {
103
+ cachedValue = getter();
104
+ isDirty = !1;
105
+ queueMicrotask(() => {
106
+ isDirty = !0;
107
+ });
108
+ }
109
+ return cachedValue;
110
+ }
111
+ };
112
+ }
113
+ export function setupComponent(element, setup) {
114
+ const instance = createComponentInstance(element);
115
+ setCurrentInstance(instance);
116
+ try {
117
+ setup();
118
+ } finally {
119
+ setCurrentInstance(null);
120
+ }
121
+ return instance;
122
+ }
123
+ export function mountComponent(instance) {
124
+ if (instance.isMounted)
125
+ return;
126
+ instance.isMounted = !0;
127
+ for (const hook of instance.mountHooks)
128
+ try {
129
+ const cleanup = hook();
130
+ if (typeof cleanup === "function")
131
+ instance.destroyHooks.push(cleanup);
132
+ } catch (error) {
133
+ console.error("[stx] Error in onMount hook:", error);
134
+ }
135
+ }
136
+ export function updateComponent(instance) {
137
+ if (!instance.isMounted)
138
+ return;
139
+ for (const hook of instance.updateHooks)
140
+ try {
141
+ const cleanup = hook();
142
+ if (typeof cleanup === "function")
143
+ instance.destroyHooks.push(cleanup);
144
+ } catch (error) {
145
+ console.error("[stx] Error in onUpdate hook:", error);
146
+ }
147
+ }
148
+ export function destroyComponent(instance) {
149
+ if (!instance.isMounted)
150
+ return;
151
+ for (const watcher of instance.watchers)
152
+ watcher.stop();
153
+ for (const hook of instance.destroyHooks)
154
+ try {
155
+ hook();
156
+ } catch (error) {
157
+ console.error("[stx] Error in onDestroy hook:", error);
158
+ }
159
+ for (const ref of instance.refs.values())
160
+ ref.value = null;
161
+ instance.isMounted = !1;
162
+ instances.delete(instance.id);
163
+ }
164
+ export function generateLifecycleRuntime() {
165
+ return `
166
+ // STX Lifecycle Runtime
167
+ (function() {
168
+ if (typeof window === 'undefined') return;
169
+
170
+ const instances = new Map();
171
+ let currentInstance = null;
172
+ let idCounter = 0;
173
+
174
+ function generateId() {
175
+ return 'stx-' + (++idCounter) + '-' + Date.now().toString(36);
176
+ }
177
+
178
+ function createInstance(element) {
179
+ const instance = {
180
+ id: generateId(),
181
+ element: element,
182
+ mountHooks: [],
183
+ destroyHooks: [],
184
+ updateHooks: [],
185
+ refs: new Map(),
186
+ watchers: [],
187
+ isMounted: false
188
+ };
189
+ instances.set(instance.id, instance);
190
+ return instance;
191
+ }
192
+
193
+ window.STX = window.STX || {};
194
+
195
+ // Lifecycle hooks
196
+ window.STX.onMount = function(hook) {
197
+ if (currentInstance) currentInstance.mountHooks.push(hook);
198
+ };
199
+
200
+ window.STX.onDestroy = function(hook) {
201
+ if (currentInstance) currentInstance.destroyHooks.push(hook);
202
+ };
203
+
204
+ window.STX.onUpdate = function(hook) {
205
+ if (currentInstance) currentInstance.updateHooks.push(hook);
206
+ };
207
+
208
+ // Aliases
209
+ window.STX.onMounted = window.STX.onMount;
210
+ window.STX.onUnmounted = window.STX.onDestroy;
211
+ window.STX.onUpdated = window.STX.onUpdate;
212
+
213
+ // Refs
214
+ window.STX.ref = function(initialValue) {
215
+ const r = { value: initialValue || null };
216
+ Object.defineProperty(r, 'current', {
217
+ get: function() { return this.value; }
218
+ });
219
+ if (currentInstance) {
220
+ currentInstance.refs.set('ref-' + currentInstance.refs.size, r);
221
+ }
222
+ return r;
223
+ };
224
+
225
+ // Watch
226
+ window.STX.watch = function(source, callback, options) {
227
+ options = options || {};
228
+ let oldValue;
229
+ let cleanup;
230
+ let isActive = true;
231
+
232
+ function run() {
233
+ if (!isActive) return;
234
+ const newValue = source();
235
+ if (oldValue !== newValue || options.immediate) {
236
+ if (cleanup) cleanup();
237
+ cleanup = callback(newValue, oldValue);
238
+ oldValue = newValue;
239
+ }
240
+ }
241
+
242
+ if (options.immediate) {
243
+ run();
244
+ }
245
+ else {
246
+ oldValue = source();
247
+ }
248
+
249
+ const intervalId = setInterval(run, 16);
250
+
251
+ function stop() {
252
+ isActive = false;
253
+ clearInterval(intervalId);
254
+ if (cleanup) cleanup();
255
+ }
256
+
257
+ if (currentInstance) {
258
+ currentInstance.watchers.push({ stop: stop });
259
+ currentInstance.destroyHooks.push(stop);
260
+ }
261
+
262
+ return stop;
263
+ };
264
+
265
+ // Computed
266
+ window.STX.computed = function(getter) {
267
+ let cached;
268
+ let dirty = true;
269
+ return {
270
+ get value() {
271
+ if (dirty) {
272
+ cached = getter();
273
+ dirty = false;
274
+ queueMicrotask(function() { dirty = true; });
275
+ }
276
+ return cached;
277
+ }
278
+ };
279
+ };
280
+
281
+ // Component management
282
+ window.STX.setupComponent = function(element, setup) {
283
+ const instance = createInstance(element);
284
+ currentInstance = instance;
285
+ try {
286
+ setup();
287
+ }
288
+ finally {
289
+ currentInstance = null;
290
+ }
291
+ return instance;
292
+ };
293
+
294
+ window.STX.mountComponent = function(instance) {
295
+ if (instance.isMounted) return;
296
+ instance.isMounted = true;
297
+ instance.mountHooks.forEach(function(hook) {
298
+ try {
299
+ const cleanup = hook();
300
+ if (typeof cleanup === 'function') {
301
+ instance.destroyHooks.push(cleanup);
302
+ }
303
+ }
304
+ catch (e) {
305
+ console.error('[stx] onMount error:', e);
306
+ }
307
+ });
308
+ };
309
+
310
+ window.STX.destroyComponent = function(instance) {
311
+ if (!instance.isMounted) return;
312
+ instance.watchers.forEach(function(w) { w.stop(); });
313
+ instance.destroyHooks.forEach(function(hook) {
314
+ try { hook(); }
315
+ catch (e) { console.error('[stx] onDestroy error:', e); }
316
+ });
317
+ instance.refs.forEach(function(ref) { ref.value = null; });
318
+ instance.isMounted = false;
319
+ instances.delete(instance.id);
320
+ };
321
+
322
+ // ==========================================================================
323
+ // Vue-Style Refs System - No document.** required!
324
+ // ==========================================================================
325
+
326
+ // Internal: Query for ref elements without exposing document API
327
+ function queryRef(name, root) {
328
+ return (root || document).querySelector('[data-stx-ref="' + name + '"], [data-ref="' + name + '"]');
329
+ }
330
+
331
+ function queryAllRefs(root) {
332
+ return (root || document).querySelectorAll('[data-stx-ref], [data-ref]');
333
+ }
334
+
335
+ // Auto-bind refs from ref attributes (Vue-style)
336
+ window.STX.bindRefs = function(root, refs) {
337
+ if (!root) return;
338
+ queryAllRefs(root).forEach(function(el) {
339
+ var refName = el.getAttribute('data-stx-ref') || el.getAttribute('data-ref');
340
+ if (refs[refName]) {
341
+ refs[refName].value = el;
342
+ }
343
+ });
344
+ };
345
+
346
+ // Vue-style useRefs() - returns object with all refs as direct elements
347
+ // Usage: const { input, button, container } = STX.useRefs()
348
+ window.STX.useRefs = function(root) {
349
+ var refs = {};
350
+ queryAllRefs(root).forEach(function(el) {
351
+ var refName = el.getAttribute('data-stx-ref') || el.getAttribute('data-ref');
352
+ if (refName) {
353
+ refs[refName] = el;
354
+ }
355
+ });
356
+ return refs;
357
+ };
358
+
359
+ // Get a single ref by name - Vue's useTemplateRef equivalent
360
+ // Usage: const input = STX.useRef('input')
361
+ window.STX.useRef = function(name, root) {
362
+ return queryRef(name, root);
363
+ };
364
+
365
+ // Two-way binding helper for form elements
366
+ // Usage: STX.model(inputEl, state, 'username')
367
+ window.STX.model = function(el, state, key) {
368
+ if (!el || !state) return;
369
+
370
+ var isCheckbox = el.type === 'checkbox';
371
+ var isRadio = el.type === 'radio';
372
+ var isSelect = el.tagName === 'SELECT';
373
+
374
+ // Set initial value
375
+ if (isCheckbox) {
376
+ el.checked = !!state[key];
377
+ }
378
+ else if (isRadio) {
379
+ el.checked = el.value === state[key];
380
+ }
381
+ else {
382
+ el.value = state[key] || '';
383
+ }
384
+
385
+ // Listen for changes
386
+ var eventType = isCheckbox || isRadio ? 'change' : 'input';
387
+ el.addEventListener(eventType, function() {
388
+ if (isCheckbox) {
389
+ state[key] = el.checked;
390
+ }
391
+ else if (isRadio) {
392
+ if (el.checked) state[key] = el.value;
393
+ }
394
+ else {
395
+ state[key] = el.value;
396
+ }
397
+ });
398
+
399
+ // Return cleanup function
400
+ return function() {
401
+ el.removeEventListener(eventType, arguments.callee);
402
+ };
403
+ };
404
+
405
+ // Batch event binding helper - cleaner than manual addEventListener
406
+ // Usage: STX.on({ click: [btn1, btn2], input: [textField] }, handler)
407
+ window.STX.on = function(el, event, handler) {
408
+ if (!el) return function() {};
409
+ el.addEventListener(event, handler);
410
+ return function() { el.removeEventListener(event, handler); };
411
+ };
412
+
413
+ // Bind multiple events at once
414
+ // Usage: STX.events(refs.btn, { click: handleClick, mouseenter: handleHover })
415
+ window.STX.events = function(el, eventMap) {
416
+ if (!el) return function() {};
417
+ var cleanups = [];
418
+ Object.keys(eventMap).forEach(function(event) {
419
+ el.addEventListener(event, eventMap[event]);
420
+ cleanups.push(function() { el.removeEventListener(event, eventMap[event]); });
421
+ });
422
+ return function() { cleanups.forEach(function(c) { c(); }); };
423
+ };
424
+
425
+ // ==========================================================================
426
+ // DOM Helpers - Eliminate document.* usage
427
+ // ==========================================================================
428
+
429
+ // Global keyboard event listener
430
+ // Usage: STX.onKey('Escape', () => closeModal())
431
+ window.STX.onKey = function(key, handler, options) {
432
+ var listener = function(e) {
433
+ if (e.key === key) {
434
+ handler(e);
435
+ }
436
+ };
437
+ document.addEventListener('keydown', listener, options);
438
+ return function() { document.removeEventListener('keydown', listener, options); };
439
+ };
440
+
441
+ // Create element helper
442
+ // Usage: STX.el('div', { class: 'foo' }, 'text content')
443
+ window.STX.el = function(tag, attrs, content) {
444
+ var el = document.createElement(tag);
445
+ if (attrs) {
446
+ Object.keys(attrs).forEach(function(key) {
447
+ if (key === 'class') {
448
+ el.className = attrs[key];
449
+ }
450
+ else if (key.startsWith('on')) {
451
+ el.addEventListener(key.slice(2).toLowerCase(), attrs[key]);
452
+ }
453
+ else {
454
+ el.setAttribute(key, attrs[key]);
455
+ }
456
+ });
457
+ }
458
+ if (content) {
459
+ if (typeof content === 'string') {
460
+ el.textContent = content;
461
+ }
462
+ else if (Array.isArray(content)) {
463
+ content.forEach(function(child) { el.appendChild(child); });
464
+ }
465
+ else {
466
+ el.appendChild(content);
467
+ }
468
+ }
469
+ return el;
470
+ };
471
+
472
+ // Get currently focused element
473
+ // Usage: const focused = STX.activeElement()
474
+ window.STX.activeElement = function() {
475
+ return document.activeElement;
476
+ };
477
+
478
+ // Escape HTML helper
479
+ // Usage: const safe = STX.escapeHtml(userInput)
480
+ window.STX.escapeHtml = function(text) {
481
+ var div = document.createElement('div');
482
+ div.textContent = text;
483
+ return div.innerHTML;
484
+ };
485
+
486
+ // MutationObserver for automatic lifecycle management
487
+ const observer = new MutationObserver(function(mutations) {
488
+ mutations.forEach(function(mutation) {
489
+ // Handle removed nodes
490
+ mutation.removedNodes.forEach(function(node) {
491
+ if (node.nodeType === 1 && node.__stx_instance__) {
492
+ window.STX.destroyComponent(node.__stx_instance__);
493
+ }
494
+ });
495
+ });
496
+ });
497
+
498
+ // Start observing when DOM is ready
499
+ if (document.readyState === 'loading') {
500
+ document.addEventListener('DOMContentLoaded', function() {
501
+ observer.observe(document.body, { childList: true, subtree: true });
502
+ });
503
+ }
504
+ else {
505
+ observer.observe(document.body, { childList: true, subtree: true });
506
+ }
507
+
508
+ console.log('[stx] Lifecycle runtime initialized');
509
+ })();
510
+ `;
511
+ }
512
+ const injectionContext = new Map, injectionScopes = [];
513
+ export function createInjectionKey(description) {
514
+ return Symbol(description);
515
+ }
516
+ export function provide(key, value) {
517
+ (injectionScopes.length > 0 ? injectionScopes[injectionScopes.length - 1] : injectionContext).set(key, value);
518
+ }
519
+ export function inject(key, defaultValue) {
520
+ for (let i = injectionScopes.length - 1;i >= 0; i--) {
521
+ const scope = injectionScopes[i];
522
+ if (scope.has(key))
523
+ return scope.get(key);
524
+ }
525
+ if (injectionContext.has(key))
526
+ return injectionContext.get(key);
527
+ if (arguments.length > 1)
528
+ return defaultValue;
529
+ console.warn(`[stx] Injection "${String(key)}" not found.`);
530
+ return;
531
+ }
532
+ export function pushInjectionScope() {
533
+ injectionScopes.push(new Map);
534
+ }
535
+ export function popInjectionScope() {
536
+ injectionScopes.pop();
537
+ }
538
+ export async function withInjectionScope(fn) {
539
+ pushInjectionScope();
540
+ try {
541
+ return await fn();
542
+ } finally {
543
+ popInjectionScope();
544
+ }
545
+ }
546
+ export function clearInjections() {
547
+ injectionContext.clear();
548
+ injectionScopes.length = 0;
549
+ }
550
+ export const ThemeKey = createInjectionKey("theme"), RouterKey = createInjectionKey("router"), I18nKey = createInjectionKey("i18n");
551
+
552
+ export { ref as createRef };