@ohos-ports/stacksjs-stx 0.2.287-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.md +21 -0
- package/README.md +1042 -0
- package/dist/a11y.d.ts +256 -0
- package/dist/a11y.js +671 -0
- package/dist/analytics.d.ts +40 -0
- package/dist/analytics.js +159 -0
- package/dist/analyzer.d.ts +68 -0
- package/dist/analyzer.js +240 -0
- package/dist/animation.d.ts +123 -0
- package/dist/animation.js +688 -0
- package/dist/app-shell.d.ts +76 -0
- package/dist/app-shell.js +209 -0
- package/dist/app.d.ts +65 -0
- package/dist/app.js +79 -0
- package/dist/appearance-bootstrap.d.ts +54 -0
- package/dist/appearance-bootstrap.js +92 -0
- package/dist/asset-roots.d.ts +32 -0
- package/dist/asset-roots.js +7 -0
- package/dist/assets.d.ts +21 -0
- package/dist/assets.js +155 -0
- package/dist/ast.d.ts +265 -0
- package/dist/ast.js +630 -0
- package/dist/async-components.d.ts +123 -0
- package/dist/async-components.js +428 -0
- package/dist/auth.d.ts +13 -0
- package/dist/auth.js +12 -0
- package/dist/broadcasting.d.ts +77 -0
- package/dist/broadcasting.js +103 -0
- package/dist/browser-composables.d.ts +348 -0
- package/dist/browser-composables.js +606 -0
- package/dist/browser-core-imports.d.ts +12 -0
- package/dist/browser-core-imports.js +28 -0
- package/dist/build-assets.d.ts +32 -0
- package/dist/build-assets.js +29 -0
- package/dist/build-externalize-repeated.d.ts +34 -0
- package/dist/build-externalize-repeated.js +101 -0
- package/dist/build-externalize.d.ts +73 -0
- package/dist/build-externalize.js +80 -0
- package/dist/build-id.d.ts +57 -0
- package/dist/build-id.js +25 -0
- package/dist/build-message.d.ts +81 -0
- package/dist/build-message.js +65 -0
- package/dist/build-mode-detector.d.ts +26 -0
- package/dist/build-mode-detector.js +50 -0
- package/dist/build-optimizer.d.ts +101 -0
- package/dist/build-optimizer.js +433 -0
- package/dist/build-views.d.ts +56 -0
- package/dist/build-views.js +180 -0
- package/dist/build.d.ts +31 -0
- package/dist/build.js +34 -0
- package/dist/builtins/attrs.d.ts +49 -0
- package/dist/builtins/attrs.js +39 -0
- package/dist/builtins/drawer.d.ts +24 -0
- package/dist/builtins/drawer.js +37 -0
- package/dist/builtins/escape.d.ts +12 -0
- package/dist/builtins/escape.js +3 -0
- package/dist/builtins/icon.d.ts +45 -0
- package/dist/builtins/icon.js +100 -0
- package/dist/builtins/image-delivery.d.ts +16 -0
- package/dist/builtins/image-delivery.js +115 -0
- package/dist/builtins/image-placeholder.d.ts +78 -0
- package/dist/builtins/image-placeholder.js +137 -0
- package/dist/builtins/index.d.ts +26 -0
- package/dist/builtins/index.js +34 -0
- package/dist/builtins/modal.d.ts +26 -0
- package/dist/builtins/modal.js +38 -0
- package/dist/builtins/safe-image.d.ts +44 -0
- package/dist/builtins/safe-image.js +45 -0
- package/dist/builtins/stx-image.d.ts +29 -0
- package/dist/builtins/stx-image.js +222 -0
- package/dist/builtins/stx-link.d.ts +11 -0
- package/dist/builtins/stx-link.js +35 -0
- package/dist/builtins/stx-loading-indicator.d.ts +13 -0
- package/dist/builtins/stx-loading-indicator.js +35 -0
- package/dist/builtins/suspense.d.ts +30 -0
- package/dist/builtins/suspense.js +24 -0
- package/dist/builtins/toast.d.ts +19 -0
- package/dist/builtins/toast.js +42 -0
- package/dist/builtins/tooltip.d.ts +18 -0
- package/dist/builtins/tooltip.js +106 -0
- package/dist/builtins/transition-group.d.ts +27 -0
- package/dist/builtins/transition-group.js +22 -0
- package/dist/bun-shim.js +496 -0
- package/dist/bundle-analyzer/collector.d.ts +66 -0
- package/dist/bundle-analyzer/collector.js +233 -0
- package/dist/bundle-analyzer/index.d.ts +98 -0
- package/dist/bundle-analyzer/index.js +82 -0
- package/dist/bundle-analyzer/report.d.ts +39 -0
- package/dist/bundle-analyzer/report.js +318 -0
- package/dist/bundle-analyzer/treemap.d.ts +19 -0
- package/dist/bundle-analyzer/treemap.js +594 -0
- package/dist/bundle-analyzer.js +499 -0
- package/dist/caching.d.ts +69 -0
- package/dist/caching.js +135 -0
- package/dist/chunk-0y46fbkx.js +3 -0
- package/dist/chunk-122tyfre.js +2 -0
- package/dist/chunk-19nfvxfw.js +43 -0
- package/dist/chunk-1kah92n2.js +3 -0
- package/dist/chunk-1kms3b9d.js +2 -0
- package/dist/chunk-1q4y74mh.js +1194 -0
- package/dist/chunk-248e84r1.js +4 -0
- package/dist/chunk-24ps8kft.js +2 -0
- package/dist/chunk-2et5hxfv.js +2 -0
- package/dist/chunk-2r1rd8f0.js +2 -0
- package/dist/chunk-2tk1zkrz.js +2 -0
- package/dist/chunk-38ejahd9.js +3 -0
- package/dist/chunk-3zv4wz87.js +2 -0
- package/dist/chunk-4122k1bh.js +2 -0
- package/dist/chunk-45az9zht.js +2 -0
- package/dist/chunk-4qr85f07.js +2 -0
- package/dist/chunk-4ww3znrr.js +15 -0
- package/dist/chunk-54st8g2j.js +397 -0
- package/dist/chunk-58f0mthg.js +3 -0
- package/dist/chunk-5a19dhx5.js +2 -0
- package/dist/chunk-5kk8gsj2.js +3 -0
- package/dist/chunk-5w1e3yxs.js +499 -0
- package/dist/chunk-6gdycmxr.js +2 -0
- package/dist/chunk-6hmnaza7.js +4473 -0
- package/dist/chunk-71t0yan0.js +5 -0
- package/dist/chunk-74cv4ta1.js +3 -0
- package/dist/chunk-74v15e8z.js +2 -0
- package/dist/chunk-7b329e5v.js +3 -0
- package/dist/chunk-7q9mwh4v.js +84 -0
- package/dist/chunk-866y9d8b.js +8169 -0
- package/dist/chunk-8fwerspy.js +2 -0
- package/dist/chunk-8mjdpr94.js +147 -0
- package/dist/chunk-92mj1t26.js +60 -0
- package/dist/chunk-9b22663r.js +2 -0
- package/dist/chunk-9hjdgm4d.js +2 -0
- package/dist/chunk-9n0gvfrg.js +4 -0
- package/dist/chunk-9wr7zcad.js +18 -0
- package/dist/chunk-9y0g8kzt.js +358 -0
- package/dist/chunk-a0nfbmeh.js +3 -0
- package/dist/chunk-acn1b56m.js +1280 -0
- package/dist/chunk-awkq3xfx.js +2 -0
- package/dist/chunk-b6ej2fdf.js +1814 -0
- package/dist/chunk-b8rrnqry.js +2 -0
- package/dist/chunk-bfqfs07m.js +3022 -0
- package/dist/chunk-bs6kapy7.js +2 -0
- package/dist/chunk-btav940g.js +2 -0
- package/dist/chunk-bz820epz.js +3 -0
- package/dist/chunk-ccspd3mc.js +2 -0
- package/dist/chunk-csbgwaa5.js +2 -0
- package/dist/chunk-d8t4sjsp.js +2 -0
- package/dist/chunk-dap191q2.js +2 -0
- package/dist/chunk-de7fye10.js +4 -0
- package/dist/chunk-dgrt76d2.js +2 -0
- package/dist/chunk-dhh5q7qt.js +3 -0
- package/dist/chunk-dsffsqnt.js +2 -0
- package/dist/chunk-dtq7y5ym.js +2 -0
- package/dist/chunk-fed3xsp9.js +3 -0
- package/dist/chunk-ferav3bw.js +19 -0
- package/dist/chunk-fvhm8psm.js +3 -0
- package/dist/chunk-g4vpzv6b.js +2 -0
- package/dist/chunk-g9csmj0s.js +2 -0
- package/dist/chunk-gtcrpmz1.js +2 -0
- package/dist/chunk-h4xh8cms.js +4 -0
- package/dist/chunk-h8yqsz9m.js +2 -0
- package/dist/chunk-hcq5dw7a.js +2 -0
- package/dist/chunk-hm0xha6c.js +12 -0
- package/dist/chunk-hpybjwwf.js +8 -0
- package/dist/chunk-jegt35zh.js +2 -0
- package/dist/chunk-jr3jp3ev.js +8 -0
- package/dist/chunk-k56rjjc0.js +24 -0
- package/dist/chunk-kdh37tp8.js +194 -0
- package/dist/chunk-kxzb4et3.js +29 -0
- package/dist/chunk-mf4n3x1j.js +14 -0
- package/dist/chunk-mkd9kjgb.js +3 -0
- package/dist/chunk-mxfh1nxg.js +2 -0
- package/dist/chunk-n3ggrhb3.js +3 -0
- package/dist/chunk-nkb3scg6.js +8 -0
- package/dist/chunk-nnd4wq8j.js +231 -0
- package/dist/chunk-nsp1cw38.js +11 -0
- package/dist/chunk-nx5qkm8k.js +30 -0
- package/dist/chunk-p3242nck.js +2 -0
- package/dist/chunk-p98kfh94.js +2 -0
- package/dist/chunk-pkaabd8h.js +3 -0
- package/dist/chunk-pzm13sdc.js +3 -0
- package/dist/chunk-q4p5k2p3.js +2 -0
- package/dist/chunk-q9n5swx7.js +3 -0
- package/dist/chunk-qc1f74ek.js +3 -0
- package/dist/chunk-qpyjak7z.js +2 -0
- package/dist/chunk-qr82je1m.js +22 -0
- package/dist/chunk-qy73j6m4.js +288 -0
- package/dist/chunk-qzkhpsam.js +505 -0
- package/dist/chunk-r3ayvdz3.js +2 -0
- package/dist/chunk-r7r66978.js +2 -0
- package/dist/chunk-rbb7dvja.js +30 -0
- package/dist/chunk-refwkt87.js +71 -0
- package/dist/chunk-rj4kajww.js +2 -0
- package/dist/chunk-rp4rjjmf.js +2 -0
- package/dist/chunk-se0p17c2.js +898 -0
- package/dist/chunk-sj9pmene.js +2 -0
- package/dist/chunk-sscwkffs.js +2 -0
- package/dist/chunk-svpqxn2c.js +2 -0
- package/dist/chunk-t6nseeb9.js +351 -0
- package/dist/chunk-t8y1ggdy.js +2 -0
- package/dist/chunk-tndhnk9e.js +2 -0
- package/dist/chunk-v5e1gxwm.js +3 -0
- package/dist/chunk-vqxmxgaj.js +4 -0
- package/dist/chunk-vrrax298.js +2 -0
- package/dist/chunk-w3ycm4na.js +3 -0
- package/dist/chunk-wcm80anz.js +321 -0
- package/dist/chunk-wrzwgkbx.js +22 -0
- package/dist/chunk-x650vjcp.js +302 -0
- package/dist/chunk-xgnc1wy6.js +116 -0
- package/dist/chunk-xpp135ad.js +11 -0
- package/dist/chunk-xttsqmkm.js +216 -0
- package/dist/chunk-y11cxbxd.js +3757 -0
- package/dist/chunk-y7m2dpd3.js +341 -0
- package/dist/chunk-y98jsjqq.js +2 -0
- package/dist/chunk-ya386h70.js +2 -0
- package/dist/chunk-ydrz60kr.js +2 -0
- package/dist/chunk-ypmqf7tm.js +4 -0
- package/dist/chunk-z4jhj5e5.js +28 -0
- package/dist/chunk-zg75gjns.js +2 -0
- package/dist/chunk-zqqx1qaj.js +2 -0
- package/dist/cli-flags.d.ts +34 -0
- package/dist/cli-flags.js +20 -0
- package/dist/cli.js +174 -0
- package/dist/client/directive.d.ts +17 -0
- package/dist/client/directive.js +14 -0
- package/dist/client/index.d.ts +7 -0
- package/dist/client/index.js +2 -0
- package/dist/client-helpers.d.ts +317 -0
- package/dist/client-helpers.js +312 -0
- package/dist/client-script-bundler.d.ts +103 -0
- package/dist/client-script-bundler.js +390 -0
- package/dist/client-script.d.ts +215 -0
- package/dist/client-script.js +865 -0
- package/dist/client.d.ts +21 -0
- package/dist/client.js +73 -0
- package/dist/codemod.d.ts +33 -0
- package/dist/codemod.js +244 -0
- package/dist/color-mode-boot.d.ts +92 -0
- package/dist/color-mode-boot.js +72 -0
- package/dist/component-client-factories.d.ts +33 -0
- package/dist/component-client-factories.js +77 -0
- package/dist/component-hmr.d.ts +107 -0
- package/dist/component-hmr.js +585 -0
- package/dist/component-library.d.ts +38 -0
- package/dist/component-library.js +994 -0
- package/dist/component-processing.d.ts +198 -0
- package/dist/component-processing.js +677 -0
- package/dist/component-registry.d.ts +127 -0
- package/dist/component-registry.js +90 -0
- package/dist/component-renderer.d.ts +52 -0
- package/dist/component-renderer.js +790 -0
- package/dist/components/StxImage.stx +12 -0
- package/dist/components/StxLink.stx +18 -0
- package/dist/components.d.ts +28 -0
- package/dist/components.js +213 -0
- package/dist/composable-loader.d.ts +62 -0
- package/dist/composable-loader.js +190 -0
- package/dist/composables/index.d.ts +417 -0
- package/dist/composables/index.js +222 -0
- package/dist/composables/use-battery.d.ts +46 -0
- package/dist/composables/use-battery.js +101 -0
- package/dist/composables/use-broadcast-channel.d.ts +59 -0
- package/dist/composables/use-broadcast-channel.js +80 -0
- package/dist/composables/use-channel.d.ts +67 -0
- package/dist/composables/use-channel.js +124 -0
- package/dist/composables/use-clipboard.d.ts +30 -0
- package/dist/composables/use-clipboard.js +90 -0
- package/dist/composables/use-color-mode.d.ts +67 -0
- package/dist/composables/use-color-mode.js +152 -0
- package/dist/composables/use-cookie.d.ts +59 -0
- package/dist/composables/use-cookie.js +86 -0
- package/dist/composables/use-device-orientation.d.ts +116 -0
- package/dist/composables/use-device-orientation.js +181 -0
- package/dist/composables/use-event-listener.d.ts +35 -0
- package/dist/composables/use-event-listener.js +27 -0
- package/dist/composables/use-event-source.d.ts +90 -0
- package/dist/composables/use-event-source.js +166 -0
- package/dist/composables/use-eye-dropper.d.ts +117 -0
- package/dist/composables/use-eye-dropper.js +142 -0
- package/dist/composables/use-fetch.d.ts +59 -0
- package/dist/composables/use-fetch.js +273 -0
- package/dist/composables/use-form.d.ts +91 -0
- package/dist/composables/use-form.js +112 -0
- package/dist/composables/use-fullscreen.d.ts +47 -0
- package/dist/composables/use-fullscreen.js +110 -0
- package/dist/composables/use-geolocation.d.ts +62 -0
- package/dist/composables/use-geolocation.js +101 -0
- package/dist/composables/use-idle.d.ts +102 -0
- package/dist/composables/use-idle.js +182 -0
- package/dist/composables/use-intersection-observer.d.ts +83 -0
- package/dist/composables/use-intersection-observer.js +168 -0
- package/dist/composables/use-keyboard.d.ts +100 -0
- package/dist/composables/use-keyboard.js +224 -0
- package/dist/composables/use-media-query.d.ts +56 -0
- package/dist/composables/use-media-query.js +62 -0
- package/dist/composables/use-meta.d.ts +35 -0
- package/dist/composables/use-meta.js +48 -0
- package/dist/composables/use-mouse.d.ts +65 -0
- package/dist/composables/use-mouse.js +286 -0
- package/dist/composables/use-mutation-observer.d.ts +101 -0
- package/dist/composables/use-mutation-observer.js +129 -0
- package/dist/composables/use-network.d.ts +40 -0
- package/dist/composables/use-network.js +85 -0
- package/dist/composables/use-notification.d.ts +98 -0
- package/dist/composables/use-notification.js +94 -0
- package/dist/composables/use-permissions.d.ts +119 -0
- package/dist/composables/use-permissions.js +132 -0
- package/dist/composables/use-query.d.ts +48 -0
- package/dist/composables/use-query.js +0 -0
- package/dist/composables/use-resize-observer.d.ts +60 -0
- package/dist/composables/use-resize-observer.js +157 -0
- package/dist/composables/use-router.d.ts +80 -0
- package/dist/composables/use-router.js +105 -0
- package/dist/composables/use-scroll-lock.d.ts +13 -0
- package/dist/composables/use-scroll-lock.js +55 -0
- package/dist/composables/use-share.d.ts +74 -0
- package/dist/composables/use-share.js +104 -0
- package/dist/composables/use-speech.d.ts +117 -0
- package/dist/composables/use-speech.js +294 -0
- package/dist/composables/use-storage.d.ts +69 -0
- package/dist/composables/use-storage.js +196 -0
- package/dist/composables/use-text-selection.d.ts +121 -0
- package/dist/composables/use-text-selection.js +205 -0
- package/dist/composables/use-timer.d.ts +92 -0
- package/dist/composables/use-timer.js +193 -0
- package/dist/composables/use-utilities.d.ts +103 -0
- package/dist/composables/use-utilities.js +176 -0
- package/dist/composables/use-wake-lock.d.ts +85 -0
- package/dist/composables/use-wake-lock.js +122 -0
- package/dist/composables/use-websocket.d.ts +70 -0
- package/dist/composables/use-websocket.js +165 -0
- package/dist/composables/use-window.d.ts +84 -0
- package/dist/composables/use-window.js +163 -0
- package/dist/composables.d.ts +287 -0
- package/dist/composables.js +562 -0
- package/dist/composition-api.d.ts +197 -0
- package/dist/composition-api.js +199 -0
- package/dist/compression.d.ts +30 -0
- package/dist/compression.js +107 -0
- package/dist/computed.d.ts +138 -0
- package/dist/computed.js +382 -0
- package/dist/conditionals.d.ts +48 -0
- package/dist/conditionals.js +626 -0
- package/dist/config.d.ts +77 -0
- package/dist/config.js +828 -0
- package/dist/cookie-serialize.d.ts +40 -0
- package/dist/cookie-serialize.js +18 -0
- package/dist/craft-bridge.d.ts +525 -0
- package/dist/craft-bridge.js +511 -0
- package/dist/craft-compiler.d.ts +245 -0
- package/dist/craft-compiler.js +810 -0
- package/dist/craft-components.d.ts +739 -0
- package/dist/craft-components.js +1074 -0
- package/dist/craft-entry.d.ts +6 -0
- package/dist/craft-entry.js +9 -0
- package/dist/craft-ssr.d.ts +147 -0
- package/dist/craft-ssr.js +559 -0
- package/dist/craft.js +9 -0
- package/dist/csp.d.ts +295 -0
- package/dist/csp.js +220 -0
- package/dist/csrf.d.ts +38 -0
- package/dist/csrf.js +38 -0
- package/dist/custom-directives.d.ts +5 -0
- package/dist/custom-directives.js +136 -0
- package/dist/database.d.ts +391 -0
- package/dist/database.js +5 -0
- package/dist/defer.d.ts +28 -0
- package/dist/defer.js +156 -0
- package/dist/deploy/config-generators.d.ts +75 -0
- package/dist/deploy/config-generators.js +214 -0
- package/dist/deploy/index.d.ts +88 -0
- package/dist/deploy/index.js +203 -0
- package/dist/deploy/netlify.d.ts +109 -0
- package/dist/deploy/netlify.js +167 -0
- package/dist/desktop.d.ts +16 -0
- package/dist/desktop.js +1 -0
- package/dist/dev-server/index.d.ts +22 -0
- package/dist/dev-server/index.js +7 -0
- package/dist/dev-server/keyboard-shortcuts.d.ts +34 -0
- package/dist/dev-server/keyboard-shortcuts.js +81 -0
- package/dist/dev-server/native-window.d.ts +59 -0
- package/dist/dev-server/native-window.js +91 -0
- package/dist/dev-server/port-utils.d.ts +27 -0
- package/dist/dev-server/port-utils.js +40 -0
- package/dist/dev-server/serve-app.d.ts +15 -0
- package/dist/dev-server/serve-app.js +727 -0
- package/dist/dev-server/serve-file.d.ts +3 -0
- package/dist/dev-server/serve-file.js +443 -0
- package/dist/dev-server/serve-markdown.d.ts +3 -0
- package/dist/dev-server/serve-markdown.js +284 -0
- package/dist/dev-server/serve-multi.d.ts +5 -0
- package/dist/dev-server/serve-multi.js +596 -0
- package/dist/dev-server/terminal-colors.d.ts +56 -0
- package/dist/dev-server/terminal-colors.js +45 -0
- package/dist/dev-server/theme-selector.d.ts +32 -0
- package/dist/dev-server/theme-selector.js +111 -0
- package/dist/dev-server/ts-css.d.ts +108 -0
- package/dist/dev-server/ts-css.js +438 -0
- package/dist/dev-server/types.d.ts +99 -0
- package/dist/dev-server/types.js +43 -0
- package/dist/dev-server.d.ts +6 -0
- package/dist/dev-server.js +4 -0
- package/dist/devtools.d.ts +182 -0
- package/dist/devtools.js +593 -0
- package/dist/directive-api.d.ts +154 -0
- package/dist/directive-api.js +355 -0
- package/dist/docs.d.ts +56 -0
- package/dist/docs.js +567 -0
- package/dist/doctor.d.ts +29 -0
- package/dist/doctor.js +123 -0
- package/dist/document-shell.d.ts +218 -0
- package/dist/document-shell.js +338 -0
- package/dist/dynamic-components.d.ts +23 -0
- package/dist/dynamic-components.js +197 -0
- package/dist/edge-runtime.d.ts +193 -0
- package/dist/edge-runtime.js +525 -0
- package/dist/env.d.ts +3 -0
- package/dist/env.js +9 -0
- package/dist/error-boundaries.d.ts +78 -0
- package/dist/error-boundaries.js +281 -0
- package/dist/error-handling.d.ts +14 -0
- package/dist/error-handling.js +1 -0
- package/dist/errors/codes.d.ts +92 -0
- package/dist/errors/codes.js +97 -0
- package/dist/errors/formatter.d.ts +84 -0
- package/dist/errors/formatter.js +196 -0
- package/dist/errors/index.d.ts +12 -0
- package/dist/errors/index.js +44 -0
- package/dist/errors/logger.d.ts +135 -0
- package/dist/errors/logger.js +250 -0
- package/dist/errors/sanitizer.d.ts +73 -0
- package/dist/errors/sanitizer.js +181 -0
- package/dist/errors/types.d.ts +92 -0
- package/dist/errors/types.js +86 -0
- package/dist/events.d.ts +145 -0
- package/dist/events.js +396 -0
- package/dist/expressions.d.ts +180 -0
- package/dist/expressions.js +719 -0
- package/dist/find-body-tag.d.ts +50 -0
- package/dist/find-body-tag.js +57 -0
- package/dist/formatter.d.ts +19 -0
- package/dist/formatter.js +265 -0
- package/dist/forms-validation.d.ts +189 -0
- package/dist/forms-validation.js +421 -0
- package/dist/forms.d.ts +224 -0
- package/dist/forms.js +729 -0
- package/dist/fragment-container.d.ts +57 -0
- package/dist/fragment-container.js +123 -0
- package/dist/framework-composables.d.ts +73 -0
- package/dist/framework-composables.js +126 -0
- package/dist/head-injection.d.ts +61 -0
- package/dist/head-injection.js +28 -0
- package/dist/head.d.ts +282 -0
- package/dist/head.js +231 -0
- package/dist/heatmap.d.ts +206 -0
- package/dist/heatmap.js +566 -0
- package/dist/hot-reload.d.ts +87 -0
- package/dist/hot-reload.js +373 -0
- package/dist/html-masking.d.ts +125 -0
- package/dist/html-masking.js +196 -0
- package/dist/hydration-runtime.d.ts +44 -0
- package/dist/hydration-runtime.js +195 -0
- package/dist/hydration.d.ts +135 -0
- package/dist/hydration.js +654 -0
- package/dist/i18n.d.ts +342 -0
- package/dist/i18n.js +678 -0
- package/dist/image-optimization/auto-sibling.d.ts +42 -0
- package/dist/image-optimization/auto-sibling.js +88 -0
- package/dist/image-optimization/build-plugin.d.ts +54 -0
- package/dist/image-optimization/build-plugin.js +241 -0
- package/dist/image-optimization/component.d.ts +46 -0
- package/dist/image-optimization/component.js +244 -0
- package/dist/image-optimization/directive.d.ts +30 -0
- package/dist/image-optimization/directive.js +203 -0
- package/dist/image-optimization/index.d.ts +156 -0
- package/dist/image-optimization/index.js +54 -0
- package/dist/image-optimization/processor.d.ts +140 -0
- package/dist/image-optimization/processor.js +262 -0
- package/dist/image-optimization/serve.d.ts +54 -0
- package/dist/image-optimization/serve.js +102 -0
- package/dist/import-rebase.d.ts +16 -0
- package/dist/import-rebase.js +16 -0
- package/dist/imported-signals.d.ts +43 -0
- package/dist/imported-signals.js +35 -0
- package/dist/includes.d.ts +171 -0
- package/dist/includes.js +764 -0
- package/dist/index.d.ts +365 -0
- package/dist/index.js +202 -0
- package/dist/init.d.ts +39 -0
- package/dist/init.js +505 -0
- package/dist/inline-assets.d.ts +28 -0
- package/dist/inline-assets.js +82 -0
- package/dist/interactive.d.ts +14 -0
- package/dist/interactive.js +383 -0
- package/dist/internal-markdown.d.ts +22 -0
- package/dist/internal-markdown.js +141 -0
- package/dist/island-chunking.d.ts +48 -0
- package/dist/island-chunking.js +52 -0
- package/dist/isolated-build.d.ts +12 -0
- package/dist/isolated-build.js +18 -0
- package/dist/js-ts.d.ts +10 -0
- package/dist/js-ts.js +60 -0
- package/dist/jsx-runtime.d.ts +92 -0
- package/dist/jsx-runtime.js +289 -0
- package/dist/keep-alive.d.ts +108 -0
- package/dist/keep-alive.js +421 -0
- package/dist/layout-types.d.ts +45 -0
- package/dist/layout-types.js +56 -0
- package/dist/lazy-loader.d.ts +90 -0
- package/dist/lazy-loader.js +245 -0
- package/dist/lazy-module.d.ts +11 -0
- package/dist/lazy-module.js +18 -0
- package/dist/loading-indicator.d.ts +50 -0
- package/dist/loading-indicator.js +322 -0
- package/dist/loops.d.ts +91 -0
- package/dist/loops.js +690 -0
- package/dist/manifest.d.ts +41 -0
- package/dist/manifest.js +31 -0
- package/dist/markdown-view.d.ts +25 -0
- package/dist/markdown-view.js +39 -0
- package/dist/markdown.d.ts +10 -0
- package/dist/markdown.js +68 -0
- package/dist/media/client/blur-up.d.ts +66 -0
- package/dist/media/client/blur-up.js +217 -0
- package/dist/media/client/index.d.ts +93 -0
- package/dist/media/client/index.js +53 -0
- package/dist/media/client/lazy-load.d.ts +74 -0
- package/dist/media/client/lazy-load.js +283 -0
- package/dist/media/client/upload-handler.d.ts +80 -0
- package/dist/media/client/upload-handler.js +354 -0
- package/dist/media/image/component.d.ts +60 -0
- package/dist/media/image/component.js +574 -0
- package/dist/media/image/directive.d.ts +23 -0
- package/dist/media/image/directive.js +160 -0
- package/dist/media/image/editing.d.ts +212 -0
- package/dist/media/image/editing.js +193 -0
- package/dist/media/image/index.d.ts +142 -0
- package/dist/media/image/index.js +80 -0
- package/dist/media/image/placeholder.d.ts +89 -0
- package/dist/media/image/placeholder.js +188 -0
- package/dist/media/image/processor/cache.d.ts +53 -0
- package/dist/media/image/processor/cache.js +51 -0
- package/dist/media/image/processor/index.d.ts +11 -0
- package/dist/media/image/processor/index.js +3 -0
- package/dist/media/image/processor/optimizer.d.ts +24 -0
- package/dist/media/image/processor/optimizer.js +202 -0
- package/dist/media/image/processor/responsive.d.ts +28 -0
- package/dist/media/image/processor/responsive.js +162 -0
- package/dist/media/image/srcset.d.ts +157 -0
- package/dist/media/image/srcset.js +194 -0
- package/dist/media/index.d.ts +331 -0
- package/dist/media/index.js +198 -0
- package/dist/media/manager/embed.d.ts +25 -0
- package/dist/media/manager/embed.js +253 -0
- package/dist/media/protected/component.d.ts +33 -0
- package/dist/media/protected/component.js +235 -0
- package/dist/media/protected/index.d.ts +47 -0
- package/dist/media/protected/index.js +20 -0
- package/dist/media/protected/signature.d.ts +72 -0
- package/dist/media/protected/signature.js +205 -0
- package/dist/media/shared/cache.d.ts +76 -0
- package/dist/media/shared/cache.js +132 -0
- package/dist/media/shared/hash.d.ts +31 -0
- package/dist/media/shared/hash.js +35 -0
- package/dist/media/shared/index.d.ts +7 -0
- package/dist/media/shared/index.js +2 -0
- package/dist/media/types.d.ts +1477 -0
- package/dist/media/types.js +0 -0
- package/dist/media/upload/component.d.ts +9 -0
- package/dist/media/upload/component.js +320 -0
- package/dist/media/upload/index.d.ts +8 -0
- package/dist/media/upload/index.js +1 -0
- package/dist/media/video/directive.d.ts +23 -0
- package/dist/media/video/directive.js +142 -0
- package/dist/media/video/index.d.ts +76 -0
- package/dist/media/video/index.js +583 -0
- package/dist/media/video/processor/cache.d.ts +55 -0
- package/dist/media/video/processor/cache.js +52 -0
- package/dist/media/video/processor/index.d.ts +12 -0
- package/dist/media/video/processor/index.js +4 -0
- package/dist/media/video/processor/streaming.d.ts +26 -0
- package/dist/media/video/processor/streaming.js +197 -0
- package/dist/media/video/processor/thumbnail.d.ts +35 -0
- package/dist/media/video/processor/thumbnail.js +134 -0
- package/dist/media/video/processor/transcoder.d.ts +19 -0
- package/dist/media/video/processor/transcoder.js +283 -0
- package/dist/menubar.d.ts +65 -0
- package/dist/menubar.js +99 -0
- package/dist/method-spoofing.d.ts +20 -0
- package/dist/method-spoofing.js +17 -0
- package/dist/middleware.d.ts +112 -0
- package/dist/middleware.js +40 -0
- package/dist/misc-directives.d.ts +55 -0
- package/dist/misc-directives.js +328 -0
- package/dist/native-build.d.ts +88 -0
- package/dist/native-build.js +575 -0
- package/dist/owned-routes.d.ts +42 -0
- package/dist/owned-routes.js +26 -0
- package/dist/page-action.d.ts +73 -0
- package/dist/page-action.js +91 -0
- package/dist/page-meta.d.ts +38 -0
- package/dist/page-meta.js +16 -0
- package/dist/page-response.d.ts +120 -0
- package/dist/page-response.js +117 -0
- package/dist/parser/directive-parser.d.ts +119 -0
- package/dist/parser/directive-parser.js +249 -0
- package/dist/parser/expression-parser.d.ts +58 -0
- package/dist/parser/expression-parser.js +358 -0
- package/dist/parser/index.d.ts +13 -0
- package/dist/parser/index.js +23 -0
- package/dist/parser/tokenizer.d.ts +77 -0
- package/dist/parser/tokenizer.js +534 -0
- package/dist/partial-hydration.d.ts +123 -0
- package/dist/partial-hydration.js +427 -0
- package/dist/performance-utils.d.ts +318 -0
- package/dist/performance-utils.js +466 -0
- package/dist/placeholder.d.ts +54 -0
- package/dist/placeholder.js +35 -0
- package/dist/plugin-system.d.ts +301 -0
- package/dist/plugin-system.js +214 -0
- package/dist/plugin.d.ts +3 -0
- package/dist/plugin.js +174 -0
- package/dist/precompiler.d.ts +43 -0
- package/dist/precompiler.js +670 -0
- package/dist/process.d.ts +16 -0
- package/dist/process.js +879 -0
- package/dist/production-build.d.ts +163 -0
- package/dist/production-build.js +596 -0
- package/dist/production-builder.d.ts +42 -0
- package/dist/production-builder.js +146 -0
- package/dist/production-server.d.ts +19 -0
- package/dist/production-server.js +208 -0
- package/dist/prop-sentinels.d.ts +31 -0
- package/dist/prop-sentinels.js +7 -0
- package/dist/props.d.ts +216 -0
- package/dist/props.js +224 -0
- package/dist/public-env.d.ts +29 -0
- package/dist/public-env.js +19 -0
- package/dist/pwa/audit.d.ts +42 -0
- package/dist/pwa/audit.js +255 -0
- package/dist/pwa/directives.d.ts +38 -0
- package/dist/pwa/directives.js +332 -0
- package/dist/pwa/icons.d.ts +42 -0
- package/dist/pwa/icons.js +109 -0
- package/dist/pwa/index.d.ts +104 -0
- package/dist/pwa/index.js +47 -0
- package/dist/pwa/inject.d.ts +32 -0
- package/dist/pwa/inject.js +102 -0
- package/dist/pwa/manifest.d.ts +104 -0
- package/dist/pwa/manifest.js +186 -0
- package/dist/pwa/offline.d.ts +8 -0
- package/dist/pwa/offline.js +259 -0
- package/dist/pwa/precache.d.ts +35 -0
- package/dist/pwa/precache.js +116 -0
- package/dist/pwa/service-worker.d.ts +33 -0
- package/dist/pwa/service-worker.js +860 -0
- package/dist/pwa/workbox-strategies.d.ts +100 -0
- package/dist/pwa/workbox-strategies.js +167 -0
- package/dist/pwa/workbox.d.ts +51 -0
- package/dist/pwa/workbox.js +382 -0
- package/dist/pwa.d.ts +52 -0
- package/dist/pwa.js +236 -0
- package/dist/reactive-bindings.d.ts +47 -0
- package/dist/reactive-bindings.js +268 -0
- package/dist/reactive-tracking.d.ts +81 -0
- package/dist/reactive-tracking.js +49 -0
- package/dist/reactive.d.ts +117 -0
- package/dist/reactive.js +593 -0
- package/dist/reactivity.d.ts +206 -0
- package/dist/reactivity.js +574 -0
- package/dist/release.d.ts +1 -0
- package/dist/release.js +1 -0
- package/dist/render-memo.d.ts +40 -0
- package/dist/render-memo.js +33 -0
- package/dist/render.d.ts +54 -0
- package/dist/render.js +153 -0
- package/dist/resolve-stx-targets.d.ts +49 -0
- package/dist/resolve-stx-targets.js +38 -0
- package/dist/route-middleware.d.ts +2 -0
- package/dist/route-middleware.js +17 -0
- package/dist/route-types.d.ts +134 -0
- package/dist/route-types.js +24 -0
- package/dist/router.d.ts +9 -0
- package/dist/router.js +9 -0
- package/dist/routes.d.ts +6 -0
- package/dist/routes.js +14 -0
- package/dist/runtime-globals.d.ts +236 -0
- package/dist/runtime-globals.js +230 -0
- package/dist/runtime-injection.d.ts +113 -0
- package/dist/runtime-injection.js +156 -0
- package/dist/runtime.d.ts +140 -0
- package/dist/runtime.js +94 -0
- package/dist/safe-evaluator.d.ts +165 -0
- package/dist/safe-evaluator.js +461 -0
- package/dist/scaffolding.d.ts +113 -0
- package/dist/scaffolding.js +897 -0
- package/dist/screenshot.d.ts +22 -0
- package/dist/screenshot.js +100 -0
- package/dist/script-classifier.d.ts +41 -0
- package/dist/script-classifier.js +51 -0
- package/dist/script-emit.d.ts +50 -0
- package/dist/script-emit.js +11 -0
- package/dist/script-json.d.ts +36 -0
- package/dist/script-json.js +6 -0
- package/dist/script-validation.d.ts +26 -0
- package/dist/script-validation.js +179 -0
- package/dist/seo.d.ts +225 -0
- package/dist/seo.js +486 -0
- package/dist/serve.d.ts +44 -0
- package/dist/serve.js +233 -0
- package/dist/server-bindings.d.ts +39 -0
- package/dist/server-bindings.js +171 -0
- package/dist/server-components.d.ts +138 -0
- package/dist/server-components.js +427 -0
- package/dist/sfc-template.d.ts +17 -0
- package/dist/sfc-template.js +32 -0
- package/dist/signal-processing.d.ts +222 -0
- package/dist/signal-processing.js +1081 -0
- package/dist/signals-api.d.ts +459 -0
- package/dist/signals-api.js +172 -0
- package/dist/signals.d.ts +41 -0
- package/dist/signals.js +8233 -0
- package/dist/site-builder/build.d.ts +18 -0
- package/dist/site-builder/build.js +252 -0
- package/dist/site-builder/i18n.d.ts +104 -0
- package/dist/site-builder/i18n.js +150 -0
- package/dist/site-builder/index.d.ts +27 -0
- package/dist/site-builder/index.js +16 -0
- package/dist/site-builder/robots.d.ts +2 -0
- package/dist/site-builder/robots.js +26 -0
- package/dist/site-builder/router.d.ts +10 -0
- package/dist/site-builder/router.js +27 -0
- package/dist/site-builder/seo.d.ts +8 -0
- package/dist/site-builder/seo.js +67 -0
- package/dist/site-builder/sitemap.d.ts +10 -0
- package/dist/site-builder/sitemap.js +26 -0
- package/dist/site-builder/theme.d.ts +12 -0
- package/dist/site-builder/theme.js +38 -0
- package/dist/site-builder/types.d.ts +74 -0
- package/dist/site-builder/types.js +0 -0
- package/dist/site-url.d.ts +46 -0
- package/dist/site-url.js +70 -0
- package/dist/slots.d.ts +129 -0
- package/dist/slots.js +286 -0
- package/dist/source-maps.d.ts +98 -0
- package/dist/source-maps.js +350 -0
- package/dist/source-signature.d.ts +45 -0
- package/dist/source-signature.js +20 -0
- package/dist/spa-nav.d.ts +49 -0
- package/dist/spa-nav.js +12 -0
- package/dist/spa-shell.d.ts +21 -0
- package/dist/spa-shell.js +34 -0
- package/dist/ssg.d.ts +357 -0
- package/dist/ssg.js +94 -0
- package/dist/ssr.d.ts +116 -0
- package/dist/ssr.js +339 -0
- package/dist/state-dir.d.ts +36 -0
- package/dist/state-dir.js +22 -0
- package/dist/state-management.d.ts +299 -0
- package/dist/state-management.js +519 -0
- package/dist/store-imports.d.ts +47 -0
- package/dist/store-imports.js +16 -0
- package/dist/store-loader.d.ts +15 -0
- package/dist/store-loader.js +111 -0
- package/dist/stores-client.d.ts +70 -0
- package/dist/stores-client.js +132 -0
- package/dist/story/addons.d.ts +123 -0
- package/dist/story/addons.js +261 -0
- package/dist/story/analytics.d.ts +163 -0
- package/dist/story/analytics.js +235 -0
- package/dist/story/auto-stories.d.ts +38 -0
- package/dist/story/auto-stories.js +158 -0
- package/dist/story/bookmarks.d.ts +102 -0
- package/dist/story/bookmarks.js +277 -0
- package/dist/story/bun-test.d.ts +45 -0
- package/dist/story/bun-test.js +102 -0
- package/dist/story/cli.d.ts +132 -0
- package/dist/story/cli.js +155 -0
- package/dist/story/collect/analyzer.d.ts +33 -0
- package/dist/story/collect/analyzer.js +305 -0
- package/dist/story/collect/index.d.ts +31 -0
- package/dist/story/collect/index.js +27 -0
- package/dist/story/collect/parser.d.ts +17 -0
- package/dist/story/collect/parser.js +129 -0
- package/dist/story/collect/scanner.d.ts +17 -0
- package/dist/story/collect/scanner.js +101 -0
- package/dist/story/collect/tree.d.ts +24 -0
- package/dist/story/collect/tree.js +110 -0
- package/dist/story/commands/build.d.ts +19 -0
- package/dist/story/commands/build.js +172 -0
- package/dist/story/commands/dev.d.ts +23 -0
- package/dist/story/commands/dev.js +78 -0
- package/dist/story/commands/index.d.ts +9 -0
- package/dist/story/commands/index.js +3 -0
- package/dist/story/commands/preview.d.ts +21 -0
- package/dist/story/commands/preview.js +56 -0
- package/dist/story/compiled-output.d.ts +27 -0
- package/dist/story/compiled-output.js +151 -0
- package/dist/story/composition.d.ts +47 -0
- package/dist/story/composition.js +261 -0
- package/dist/story/config-watcher.d.ts +33 -0
- package/dist/story/config-watcher.js +67 -0
- package/dist/story/config.d.ts +29 -0
- package/dist/story/config.js +64 -0
- package/dist/story/context.d.ts +27 -0
- package/dist/story/context.js +27 -0
- package/dist/story/controls/index.d.ts +54 -0
- package/dist/story/controls/index.js +320 -0
- package/dist/story/desktop-preview.d.ts +34 -0
- package/dist/story/desktop-preview.js +105 -0
- package/dist/story/docs-generator.d.ts +30 -0
- package/dist/story/docs-generator.js +187 -0
- package/dist/story/errors.d.ts +47 -0
- package/dist/story/errors.js +239 -0
- package/dist/story/figma-export.d.ts +169 -0
- package/dist/story/figma-export.js +224 -0
- package/dist/story/generator.d.ts +21 -0
- package/dist/story/generator.js +165 -0
- package/dist/story/hmr.d.ts +62 -0
- package/dist/story/hmr.js +131 -0
- package/dist/story/hot-swap.d.ts +46 -0
- package/dist/story/hot-swap.js +207 -0
- package/dist/story/index.d.ts +99 -0
- package/dist/story/index.js +49 -0
- package/dist/story/interactions.d.ts +53 -0
- package/dist/story/interactions.js +225 -0
- package/dist/story/keyboard-shortcuts.d.ts +39 -0
- package/dist/story/keyboard-shortcuts.js +345 -0
- package/dist/story/output.d.ts +115 -0
- package/dist/story/output.js +153 -0
- package/dist/story/performance.d.ts +129 -0
- package/dist/story/performance.js +252 -0
- package/dist/story/presets.d.ts +123 -0
- package/dist/story/presets.js +289 -0
- package/dist/story/props-validation.d.ts +45 -0
- package/dist/story/props-validation.js +215 -0
- package/dist/story/renderer.d.ts +69 -0
- package/dist/story/renderer.js +209 -0
- package/dist/story/search-index.d.ts +47 -0
- package/dist/story/search-index.js +106 -0
- package/dist/story/search.d.ts +56 -0
- package/dist/story/search.js +140 -0
- package/dist/story/server.d.ts +31 -0
- package/dist/story/server.js +965 -0
- package/dist/story/setup.d.ts +56 -0
- package/dist/story/setup.js +78 -0
- package/dist/story/snapshots.d.ts +65 -0
- package/dist/story/snapshots.js +171 -0
- package/dist/story/testing.d.ts +83 -0
- package/dist/story/testing.js +164 -0
- package/dist/story/theme.d.ts +68 -0
- package/dist/story/theme.js +170 -0
- package/dist/story/ts-css.d.ts +29 -0
- package/dist/story/ts-css.js +189 -0
- package/dist/story/types.d.ts +342 -0
- package/dist/story/types.js +0 -0
- package/dist/story/ui/code-panel.d.ts +43 -0
- package/dist/story/ui/code-panel.js +175 -0
- package/dist/story/ui/controls-panel.d.ts +25 -0
- package/dist/story/ui/controls-panel.js +168 -0
- package/dist/story/ui/index.d.ts +8 -0
- package/dist/story/ui/index.js +4 -0
- package/dist/story/ui/navigation.d.ts +55 -0
- package/dist/story/ui/navigation.js +250 -0
- package/dist/story/ui/preview.d.ts +46 -0
- package/dist/story/ui/preview.js +251 -0
- package/dist/story/visual-testing.d.ts +45 -0
- package/dist/story/visual-testing.js +248 -0
- package/dist/streaming.d.ts +238 -0
- package/dist/streaming.js +537 -0
- package/dist/strict-lint.d.ts +52 -0
- package/dist/strict-lint.js +269 -0
- package/dist/strip-literals.d.ts +40 -0
- package/dist/strip-literals.js +149 -0
- package/dist/stx-virtual-ts.d.ts +358 -0
- package/dist/stx-virtual-ts.js +670 -0
- package/dist/stx.d.ts +924 -0
- package/dist/style-scoping.d.ts +42 -0
- package/dist/style-scoping.js +82 -0
- package/dist/suspense.d.ts +98 -0
- package/dist/suspense.js +398 -0
- package/dist/teleport.d.ts +31 -0
- package/dist/teleport.js +109 -0
- package/dist/template-compiler.d.ts +33 -0
- package/dist/template-compiler.js +68 -0
- package/dist/template-hydrator.d.ts +28 -0
- package/dist/template-hydrator.js +95 -0
- package/dist/template-tag-balance.d.ts +32 -0
- package/dist/template-tag-balance.js +93 -0
- package/dist/testing.d.ts +330 -0
- package/dist/testing.js +588 -0
- package/dist/theme-tokens.d.ts +88 -0
- package/dist/theme-tokens.js +71 -0
- package/dist/transitions.d.ts +99 -0
- package/dist/transitions.js +443 -0
- package/dist/ts-css-config.d.ts +71 -0
- package/dist/ts-css-config.js +44 -0
- package/dist/type-checker.d.ts +85 -0
- package/dist/type-checker.js +581 -0
- package/dist/typecheck.d.ts +70 -0
- package/dist/typecheck.js +365 -0
- package/dist/types/component-types.d.ts +248 -0
- package/dist/types/component-types.js +0 -0
- package/dist/types/config-types.d.ts +938 -0
- package/dist/types/config-types.js +0 -0
- package/dist/types/context-types.d.ts +122 -0
- package/dist/types/context-types.js +0 -0
- package/dist/types/csp-types.d.ts +83 -0
- package/dist/types/csp-types.js +0 -0
- package/dist/types/directive-types.d.ts +315 -0
- package/dist/types/directive-types.js +3 -0
- package/dist/types/index.d.ts +20 -0
- package/dist/types/index.js +1 -0
- package/dist/types/pwa-types.d.ts +338 -0
- package/dist/types/pwa-types.js +0 -0
- package/dist/types.d.ts +27 -0
- package/dist/types.js +1 -0
- package/dist/typescript-templates.d.ts +156 -0
- package/dist/typescript-templates.js +386 -0
- package/dist/unresolved-identifiers.d.ts +52 -0
- package/dist/unresolved-identifiers.js +148 -0
- package/dist/utils.d.ts +112 -0
- package/dist/utils.js +1170 -0
- package/dist/validator.d.ts +80 -0
- package/dist/validator.js +171 -0
- package/dist/variable-extractor.d.ts +142 -0
- package/dist/variable-extractor.js +1306 -0
- package/dist/view-composers.d.ts +171 -0
- package/dist/view-composers.js +29 -0
- package/dist/virtual-scrolling.d.ts +127 -0
- package/dist/virtual-scrolling.js +454 -0
- package/dist/visual-editor.d.ts +185 -0
- package/dist/visual-editor.js +735 -0
- package/dist/visual-testing.d.ts +135 -0
- package/dist/visual-testing.js +126 -0
- package/dist/vue-template.d.ts +39 -0
- package/dist/vue-template.js +476 -0
- package/dist/web-components/css-scoping.d.ts +64 -0
- package/dist/web-components/css-scoping.js +210 -0
- package/dist/web-components/index.d.ts +29 -0
- package/dist/web-components/index.js +13 -0
- package/dist/web-components/reactive-generator.d.ts +72 -0
- package/dist/web-components/reactive-generator.js +484 -0
- package/dist/web-components.d.ts +253 -0
- package/dist/web-components.js +1466 -0
- package/dist/x-element.d.ts +42 -0
- package/dist/x-element.js +301 -0
- package/package.json +107 -0
- package/stx.d.ts +924 -0
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
import fs from "node:fs";
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
import { generateThumbHash } from "ts-images";
|
|
5
|
+
import { createImageDeliveryCatalog } from "ts-images/delivery";
|
|
6
|
+
const RASTER_EXTENSIONS = new Set([".avif", ".jpeg", ".jpg", ".png", ".webp"]), DEFAULT_WIDTHS = [320, 640, 960, 1280, 1920], DELIVERY_URL = "/_stx/images";
|
|
7
|
+
let deliveryCatalog = new Map;
|
|
8
|
+
function publicUrl(relativePath) {
|
|
9
|
+
return `/${relativePath.split(path.sep).map(encodeURIComponent).join("/")}`;
|
|
10
|
+
}
|
|
11
|
+
function catalogName(relativePath) {
|
|
12
|
+
const extension = path.extname(relativePath), readable = relativePath.slice(0, -extension.length).replace(/[^a-zA-Z0-9_-]+/g, "-").replace(/^-+|-+$/g, ""), pathHash = createHash("sha256").update(relativePath).digest("hex").slice(0, 8);
|
|
13
|
+
return `${readable || "image"}-${pathHash}`;
|
|
14
|
+
}
|
|
15
|
+
async function collectRasterImages(root, directory = root) {
|
|
16
|
+
const entries = await fs.promises.readdir(directory, { withFileTypes: !0 });
|
|
17
|
+
entries.sort((a, b) => a.name.localeCompare(b.name));
|
|
18
|
+
const files = [];
|
|
19
|
+
for (const entry of entries) {
|
|
20
|
+
const absolutePath = path.join(directory, entry.name);
|
|
21
|
+
if (entry.isDirectory()) {
|
|
22
|
+
files.push(...await collectRasterImages(root, absolutePath));
|
|
23
|
+
continue;
|
|
24
|
+
}
|
|
25
|
+
if (!entry.isFile() || !RASTER_EXTENSIONS.has(path.extname(entry.name).toLowerCase()))
|
|
26
|
+
continue;
|
|
27
|
+
files.push({ absolutePath, relativePath: path.relative(root, absolutePath) });
|
|
28
|
+
}
|
|
29
|
+
return files;
|
|
30
|
+
}
|
|
31
|
+
function deliveryEntries(files) {
|
|
32
|
+
return files.map((file) => ({
|
|
33
|
+
key: publicUrl(file.relativePath),
|
|
34
|
+
input: file.absolutePath,
|
|
35
|
+
name: catalogName(file.relativePath)
|
|
36
|
+
}));
|
|
37
|
+
}
|
|
38
|
+
async function decodableFiles(files) {
|
|
39
|
+
const supported = [], concurrency = 8;
|
|
40
|
+
for (let offset = 0;offset < files.length; offset += concurrency) {
|
|
41
|
+
const batch = files.slice(offset, offset + concurrency), results = await Promise.all(batch.map(async (file) => {
|
|
42
|
+
try {
|
|
43
|
+
await generateThumbHash(file.absolutePath);
|
|
44
|
+
return file;
|
|
45
|
+
} catch {
|
|
46
|
+
console.warn(`[stx-images] Skipping unreadable raster: ${file.relativePath}`);
|
|
47
|
+
return null;
|
|
48
|
+
}
|
|
49
|
+
}));
|
|
50
|
+
supported.push(...results.filter((file) => file !== null));
|
|
51
|
+
}
|
|
52
|
+
return supported;
|
|
53
|
+
}
|
|
54
|
+
function normalizeLookupSource(src) {
|
|
55
|
+
if (!src || src.startsWith("data:") || src.startsWith("blob:") || /^https?:\/\//i.test(src) || src.startsWith("//"))
|
|
56
|
+
return;
|
|
57
|
+
const sourcePath = src.split(/[?#]/, 1)[0];
|
|
58
|
+
if (!sourcePath)
|
|
59
|
+
return;
|
|
60
|
+
try {
|
|
61
|
+
return `/${sourcePath.replace(/^\/+/, "").split("/").map(decodeURIComponent).map(encodeURIComponent).join("/")}`;
|
|
62
|
+
} catch {
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
export function getImageDelivery(src) {
|
|
67
|
+
const key = normalizeLookupSource(src);
|
|
68
|
+
return key ? deliveryCatalog.get(key) : void 0;
|
|
69
|
+
}
|
|
70
|
+
export function clearImageDeliveryCatalog() {
|
|
71
|
+
deliveryCatalog = new Map;
|
|
72
|
+
}
|
|
73
|
+
export async function prepareImageDelivery(publicDir, outputDir) {
|
|
74
|
+
if (!publicDir || !fs.existsSync(publicDir)) {
|
|
75
|
+
clearImageDeliveryCatalog();
|
|
76
|
+
return { count: 0, fingerprint: "" };
|
|
77
|
+
}
|
|
78
|
+
const files = await collectRasterImages(publicDir);
|
|
79
|
+
if (files.length === 0) {
|
|
80
|
+
clearImageDeliveryCatalog();
|
|
81
|
+
return { count: 0, fingerprint: "" };
|
|
82
|
+
}
|
|
83
|
+
const catalogOptions = {
|
|
84
|
+
outDir: path.join(outputDir, "_stx", "images"),
|
|
85
|
+
baseUrl: DELIVERY_URL,
|
|
86
|
+
widths: DEFAULT_WIDTHS,
|
|
87
|
+
formats: ["avif", "webp"],
|
|
88
|
+
quality: { avif: 70, webp: 78, jpeg: 82, png: 100 },
|
|
89
|
+
includeOriginal: !1,
|
|
90
|
+
placeholder: !0,
|
|
91
|
+
batchConcurrency: 4,
|
|
92
|
+
concurrency: 4
|
|
93
|
+
};
|
|
94
|
+
let optimizedFiles = files, catalog;
|
|
95
|
+
try {
|
|
96
|
+
catalog = await createImageDeliveryCatalog({
|
|
97
|
+
...catalogOptions,
|
|
98
|
+
entries: deliveryEntries(files)
|
|
99
|
+
});
|
|
100
|
+
} catch (error) {
|
|
101
|
+
optimizedFiles = await decodableFiles(files);
|
|
102
|
+
if (optimizedFiles.length === files.length)
|
|
103
|
+
throw error;
|
|
104
|
+
if (optimizedFiles.length === 0) {
|
|
105
|
+
clearImageDeliveryCatalog();
|
|
106
|
+
return { count: 0, fingerprint: "" };
|
|
107
|
+
}
|
|
108
|
+
catalog = await createImageDeliveryCatalog({
|
|
109
|
+
...catalogOptions,
|
|
110
|
+
entries: deliveryEntries(optimizedFiles)
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
deliveryCatalog = new Map(Object.entries(catalog.entries));
|
|
114
|
+
return { count: optimizedFiles.length, fingerprint: catalog.fingerprint };
|
|
115
|
+
}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Real placeholders for `<StxImage>`, derived from the image's own pixels.
|
|
3
|
+
*
|
|
4
|
+
* `placeholder="blur"` used to render a flat grey rectangle — the same one for
|
|
5
|
+
* every image on the page, because the component had no way to look at the file
|
|
6
|
+
* it was pointing at. It renders synchronously; reading and decoding a JPEG does
|
|
7
|
+
* not. So the work moves earlier: the build warms a cache from disk, and the
|
|
8
|
+
* component reads it with a synchronous lookup.
|
|
9
|
+
*
|
|
10
|
+
* What lands in the HTML is a thumbhash (evanw/thumbhash) rendered as a blurred
|
|
11
|
+
* SVG mesh, with the image's average colour painted underneath it. Both are
|
|
12
|
+
* inline, so there is no second request and nothing to wait for — and no
|
|
13
|
+
* JavaScript, which is the point. A placeholder that needs a script has already
|
|
14
|
+
* lost to the image it was supposed to cover for.
|
|
15
|
+
*
|
|
16
|
+
* Size was the deciding constraint. thumbhash's own 32×32 PNG is ~4.2KB per
|
|
17
|
+
* image; nine of those roughly doubles a page here. The mesh below carries the
|
|
18
|
+
* same information as twelve colours and gzips against its neighbours, because
|
|
19
|
+
* every one of them is the same markup with different hex — about 480 bytes for
|
|
20
|
+
* nine images, against 3.3KB for the PNGs.
|
|
21
|
+
*
|
|
22
|
+
* @module builtins/image-placeholder
|
|
23
|
+
*/
|
|
24
|
+
/** A placeholder ready to be dropped into markup. */
|
|
25
|
+
export interface ImagePlaceholder {
|
|
26
|
+
/** `data:image/svg+xml;base64,…` — the blurred mesh. */
|
|
27
|
+
dataUrl: string;
|
|
28
|
+
/** `#rrggbb` average, painted under the mesh and used alone as a fallback. */
|
|
29
|
+
color: string;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* The placeholder for `src`, or undefined when there is none.
|
|
33
|
+
*
|
|
34
|
+
* Synchronous by requirement: builtin components render inside a synchronous
|
|
35
|
+
* pass. A miss is normal and never an error — an unwarmed build, an image
|
|
36
|
+
* outside the public directory, or a remote URL all land here, and the caller
|
|
37
|
+
* falls back to what it did before.
|
|
38
|
+
*/
|
|
39
|
+
export declare function getImagePlaceholder(src: string): ImagePlaceholder | undefined;
|
|
40
|
+
/** Whether {@link warmImagePlaceholders} has run in this process. */
|
|
41
|
+
export declare function placeholdersWarmed(): boolean;
|
|
42
|
+
/** Drop everything, for tests and for a watch-mode rebuild. */
|
|
43
|
+
export declare function clearImagePlaceholders(): void;
|
|
44
|
+
/**
|
|
45
|
+
* Register a placeholder directly. Used by the warm below, and by tests that
|
|
46
|
+
* would rather not decode a real JPEG to check the markup.
|
|
47
|
+
*/
|
|
48
|
+
export declare function setImagePlaceholder(urlPath: string, placeholder: ImagePlaceholder): void;
|
|
49
|
+
/**
|
|
50
|
+
* A blurred SVG mesh from decoded thumbhash pixels.
|
|
51
|
+
*
|
|
52
|
+
* Four by three is deliberate. It is enough cells to carry where the light and
|
|
53
|
+
* the subject are — which is all a placeholder has to say — and few enough that
|
|
54
|
+
* the markup stays shorter than the image it stands in for. The Gaussian blur
|
|
55
|
+
* does the rest, so the cell edges never show.
|
|
56
|
+
*/
|
|
57
|
+
export declare function meshSvg(rgba: Uint8Array | Uint8ClampedArray | number[], width: number, height: number, cols?: number, rows?: number): string;
|
|
58
|
+
/** Base64 rather than percent-encoding: the same SVG, roughly 400 bytes shorter. */
|
|
59
|
+
export declare function svgDataUrl(svg: string): string;
|
|
60
|
+
export interface WarmOptions {
|
|
61
|
+
/** Where the on-disk cache lives. Omit to recompute every build. */
|
|
62
|
+
cachePath?: string;
|
|
63
|
+
/** Skip files larger than this. Decoding a 40MB source costs more than it returns. */
|
|
64
|
+
maxBytes?: number;
|
|
65
|
+
/** Stop after this many images, so an enormous asset tree cannot stall a build. */
|
|
66
|
+
limit?: number;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Derive placeholders for every image under `publicDir` and hold them for
|
|
70
|
+
* {@link getImagePlaceholder}.
|
|
71
|
+
*
|
|
72
|
+
* Called once per build, before any page renders. Failures are per-file and
|
|
73
|
+
* silent by design: a placeholder is decoration, and one unreadable image must
|
|
74
|
+
* not take a build down with it.
|
|
75
|
+
*
|
|
76
|
+
* Returns how many placeholders are available afterwards.
|
|
77
|
+
*/
|
|
78
|
+
export declare function warmImagePlaceholders(publicDir: string, options?: WarmOptions): Promise<number>;
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
import fs from "node:fs";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
const IMAGE_EXTENSIONS = new Set([".jpg", ".jpeg", ".png", ".webp", ".avif"]), placeholders = new Map;
|
|
4
|
+
let warmed = !1;
|
|
5
|
+
export function getImagePlaceholder(src) {
|
|
6
|
+
if (!src)
|
|
7
|
+
return;
|
|
8
|
+
const clean = src.split("?")[0].split("#")[0];
|
|
9
|
+
return placeholders.get(clean);
|
|
10
|
+
}
|
|
11
|
+
export function placeholdersWarmed() {
|
|
12
|
+
return warmed;
|
|
13
|
+
}
|
|
14
|
+
export function clearImagePlaceholders() {
|
|
15
|
+
placeholders.clear();
|
|
16
|
+
warmed = !1;
|
|
17
|
+
}
|
|
18
|
+
export function setImagePlaceholder(urlPath, placeholder) {
|
|
19
|
+
placeholders.set(urlPath, placeholder);
|
|
20
|
+
warmed = !0;
|
|
21
|
+
}
|
|
22
|
+
function averageColor(rgba) {
|
|
23
|
+
let r = 0, g = 0, b = 0, n = 0;
|
|
24
|
+
for (let i = 0;i < rgba.length; i += 4) {
|
|
25
|
+
r += rgba[i];
|
|
26
|
+
g += rgba[i + 1];
|
|
27
|
+
b += rgba[i + 2];
|
|
28
|
+
n++;
|
|
29
|
+
}
|
|
30
|
+
if (n === 0)
|
|
31
|
+
return "#e5e7eb";
|
|
32
|
+
const hex = (v) => Math.round(v / n).toString(16).padStart(2, "0");
|
|
33
|
+
return `#${hex(r)}${hex(g)}${hex(b)}`;
|
|
34
|
+
}
|
|
35
|
+
export function meshSvg(rgba, width, height, cols = 4, rows = 3) {
|
|
36
|
+
const cells = [];
|
|
37
|
+
for (let y = 0;y < rows; y++)
|
|
38
|
+
for (let x = 0;x < cols; x++) {
|
|
39
|
+
const x0 = Math.floor(x * width / cols), x1 = Math.max(x0 + 1, Math.floor((x + 1) * width / cols)), y0 = Math.floor(y * height / rows), y1 = Math.max(y0 + 1, Math.floor((y + 1) * height / rows));
|
|
40
|
+
let r = 0, g = 0, b = 0, n = 0;
|
|
41
|
+
for (let yy = y0;yy < y1; yy++)
|
|
42
|
+
for (let xx = x0;xx < x1; xx++) {
|
|
43
|
+
const i = (yy * width + xx) * 4;
|
|
44
|
+
r += rgba[i];
|
|
45
|
+
g += rgba[i + 1];
|
|
46
|
+
b += rgba[i + 2];
|
|
47
|
+
n++;
|
|
48
|
+
}
|
|
49
|
+
const hex = (v) => Math.round(v / n).toString(16).padStart(2, "0");
|
|
50
|
+
cells.push(`<rect x="${x}" y="${y}" width="1" height="1" fill="#${hex(r)}${hex(g)}${hex(b)}"/>`);
|
|
51
|
+
}
|
|
52
|
+
return `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 ${cols} ${rows}" preserveAspectRatio="none"><filter id="b"><feGaussianBlur stdDeviation=".6"/></filter><g filter="url(#b)">${cells.join("")}</g></svg>`;
|
|
53
|
+
}
|
|
54
|
+
export function svgDataUrl(svg) {
|
|
55
|
+
return `data:image/svg+xml;base64,${Buffer.from(svg, "utf8").toString("base64")}`;
|
|
56
|
+
}
|
|
57
|
+
function readCache(cachePath) {
|
|
58
|
+
try {
|
|
59
|
+
return JSON.parse(fs.readFileSync(cachePath, "utf8"));
|
|
60
|
+
} catch {
|
|
61
|
+
return {};
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
function writeCache(cachePath, cache) {
|
|
65
|
+
try {
|
|
66
|
+
fs.mkdirSync(path.dirname(cachePath), { recursive: !0 });
|
|
67
|
+
fs.writeFileSync(cachePath, JSON.stringify(cache));
|
|
68
|
+
} catch {}
|
|
69
|
+
}
|
|
70
|
+
function collectImages(dir, baseUrl, out = []) {
|
|
71
|
+
let entries;
|
|
72
|
+
try {
|
|
73
|
+
entries = fs.readdirSync(dir, { withFileTypes: !0 });
|
|
74
|
+
} catch {
|
|
75
|
+
return out;
|
|
76
|
+
}
|
|
77
|
+
for (const entry of entries) {
|
|
78
|
+
const full = path.join(dir, entry.name);
|
|
79
|
+
if (entry.isDirectory()) {
|
|
80
|
+
collectImages(full, `${baseUrl}/${entry.name}`, out);
|
|
81
|
+
continue;
|
|
82
|
+
}
|
|
83
|
+
if (!IMAGE_EXTENSIONS.has(path.extname(entry.name).toLowerCase()))
|
|
84
|
+
continue;
|
|
85
|
+
out.push([`${baseUrl}/${entry.name}`, full]);
|
|
86
|
+
}
|
|
87
|
+
return out;
|
|
88
|
+
}
|
|
89
|
+
export async function warmImagePlaceholders(publicDir, options = {}) {
|
|
90
|
+
const { cachePath, maxBytes = 33554432, limit = 2000 } = options;
|
|
91
|
+
if (!publicDir || !fs.existsSync(publicDir)) {
|
|
92
|
+
warmed = !0;
|
|
93
|
+
return placeholders.size;
|
|
94
|
+
}
|
|
95
|
+
let tsImages;
|
|
96
|
+
try {
|
|
97
|
+
tsImages = await import("ts-images");
|
|
98
|
+
} catch {
|
|
99
|
+
warmed = !0;
|
|
100
|
+
return placeholders.size;
|
|
101
|
+
}
|
|
102
|
+
const cache = cachePath ? readCache(cachePath) : {};
|
|
103
|
+
let cacheDirty = !1;
|
|
104
|
+
const images = collectImages(publicDir, "").slice(0, limit), CONCURRENCY = 8, derive = async ([urlPath, filePath]) => {
|
|
105
|
+
let stat;
|
|
106
|
+
try {
|
|
107
|
+
stat = fs.statSync(filePath);
|
|
108
|
+
} catch {
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
if (stat.size > maxBytes)
|
|
112
|
+
return;
|
|
113
|
+
const cached = cache[urlPath];
|
|
114
|
+
if (cached && cached.mtimeMs === stat.mtimeMs && cached.size === stat.size) {
|
|
115
|
+
placeholders.set(urlPath, { dataUrl: cached.dataUrl, color: cached.color });
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
try {
|
|
119
|
+
const { hash } = await tsImages.generateThumbHash(filePath);
|
|
120
|
+
if (!hash)
|
|
121
|
+
return;
|
|
122
|
+
const { rgba, w, h } = tsImages.thumbHashToRGBA(hash), placeholder = {
|
|
123
|
+
dataUrl: svgDataUrl(meshSvg(rgba, w, h)),
|
|
124
|
+
color: averageColor(rgba)
|
|
125
|
+
};
|
|
126
|
+
placeholders.set(urlPath, placeholder);
|
|
127
|
+
cache[urlPath] = { mtimeMs: stat.mtimeMs, size: stat.size, ...placeholder };
|
|
128
|
+
cacheDirty = !0;
|
|
129
|
+
} catch {}
|
|
130
|
+
};
|
|
131
|
+
for (let i = 0;i < images.length; i += CONCURRENCY)
|
|
132
|
+
await Promise.all(images.slice(i, i + CONCURRENCY).map(derive));
|
|
133
|
+
if (cachePath && cacheDirty)
|
|
134
|
+
writeCache(cachePath, cache);
|
|
135
|
+
warmed = !0;
|
|
136
|
+
return placeholders.size;
|
|
137
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Builtin Components Barrel
|
|
3
|
+
*
|
|
4
|
+
* These are engine-level builtins that need deep template processing
|
|
5
|
+
* integration or inject runtime globals. Presentational UI components
|
|
6
|
+
* live in packages/components instead.
|
|
7
|
+
*
|
|
8
|
+
* @module builtins
|
|
9
|
+
*/
|
|
10
|
+
export { StxLinkBuiltin } from './stx-link';
|
|
11
|
+
export { StxImageBuiltin } from './stx-image';
|
|
12
|
+
export { SafeImageBuiltin } from './safe-image';
|
|
13
|
+
export { StxLoadingIndicatorBuiltin } from './stx-loading-indicator';
|
|
14
|
+
export { StxToastBuiltin } from './toast';
|
|
15
|
+
export { StxModalBuiltin } from './modal';
|
|
16
|
+
export { StxDrawerBuiltin } from './drawer';
|
|
17
|
+
export { IconBuiltin, preloadIconCollection } from './icon';
|
|
18
|
+
export { getTooltipRuntime } from './tooltip';
|
|
19
|
+
export { SuspenseBuiltin } from './suspense';
|
|
20
|
+
export { TransitionGroupBuiltin } from './transition-group';
|
|
21
|
+
import type { ComponentRegistry } from '../component-registry';
|
|
22
|
+
/**
|
|
23
|
+
* Register all builtin components with the supplied registry, or with the
|
|
24
|
+
* package singleton when no target is supplied.
|
|
25
|
+
*/
|
|
26
|
+
export declare function registerBuiltins(target?: ComponentRegistry): void;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
export { StxLinkBuiltin } from "./stx-link.js";
|
|
2
|
+
export { StxImageBuiltin } from "./stx-image.js";
|
|
3
|
+
export { SafeImageBuiltin } from "./safe-image.js";
|
|
4
|
+
export { StxLoadingIndicatorBuiltin } from "./stx-loading-indicator.js";
|
|
5
|
+
export { StxToastBuiltin } from "./toast.js";
|
|
6
|
+
export { StxModalBuiltin } from "./modal.js";
|
|
7
|
+
export { StxDrawerBuiltin } from "./drawer.js";
|
|
8
|
+
export { IconBuiltin, preloadIconCollection } from "./icon.js";
|
|
9
|
+
export { getTooltipRuntime } from "./tooltip.js";
|
|
10
|
+
export { SuspenseBuiltin } from "./suspense.js";
|
|
11
|
+
export { TransitionGroupBuiltin } from "./transition-group.js";
|
|
12
|
+
import { registry } from "../component-registry.js";
|
|
13
|
+
import { StxLinkBuiltin } from "./stx-link.js";
|
|
14
|
+
import { StxImageBuiltin } from "./stx-image.js";
|
|
15
|
+
import { SafeImageBuiltin } from "./safe-image.js";
|
|
16
|
+
import { StxLoadingIndicatorBuiltin } from "./stx-loading-indicator.js";
|
|
17
|
+
import { StxToastBuiltin } from "./toast.js";
|
|
18
|
+
import { StxModalBuiltin } from "./modal.js";
|
|
19
|
+
import { StxDrawerBuiltin } from "./drawer.js";
|
|
20
|
+
import { IconBuiltin } from "./icon.js";
|
|
21
|
+
import { SuspenseBuiltin } from "./suspense.js";
|
|
22
|
+
import { TransitionGroupBuiltin } from "./transition-group.js";
|
|
23
|
+
export function registerBuiltins(target = registry) {
|
|
24
|
+
target.registerBuiltin(StxLinkBuiltin);
|
|
25
|
+
target.registerBuiltin(StxImageBuiltin);
|
|
26
|
+
target.registerBuiltin(SafeImageBuiltin);
|
|
27
|
+
target.registerBuiltin(StxLoadingIndicatorBuiltin);
|
|
28
|
+
target.registerBuiltin(StxToastBuiltin);
|
|
29
|
+
target.registerBuiltin(StxModalBuiltin);
|
|
30
|
+
target.registerBuiltin(StxDrawerBuiltin);
|
|
31
|
+
target.registerBuiltin(IconBuiltin);
|
|
32
|
+
target.registerBuiltin(SuspenseBuiltin);
|
|
33
|
+
target.registerBuiltin(TransitionGroupBuiltin);
|
|
34
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* StxModal Builtin Component
|
|
3
|
+
*
|
|
4
|
+
* Renders a hidden modal dialog with slot content. Opened/closed via
|
|
5
|
+
* the runtime `modal.open(id)` / `modal.close(id)` globals.
|
|
6
|
+
*
|
|
7
|
+
* Usage:
|
|
8
|
+
* <StxModal id="settings">
|
|
9
|
+
* <h2>Settings</h2>
|
|
10
|
+
* <p>Modal content here</p>
|
|
11
|
+
* </StxModal>
|
|
12
|
+
*
|
|
13
|
+
* <StxModal id="delete-confirm" size="sm" closeOnBackdrop="false">
|
|
14
|
+
* <h3>Are you sure?</h3>
|
|
15
|
+
* </StxModal>
|
|
16
|
+
*
|
|
17
|
+
* Props:
|
|
18
|
+
* - id (required) — unique modal identifier
|
|
19
|
+
* - size — 'sm' | 'md' | 'lg' | 'xl' | 'full' (default: 'md')
|
|
20
|
+
* - closeOnBackdrop — whether clicking backdrop closes modal (default: true)
|
|
21
|
+
* - closeOnEscape — whether Escape key closes modal (default: true)
|
|
22
|
+
*
|
|
23
|
+
* @module builtins/modal
|
|
24
|
+
*/
|
|
25
|
+
import type { BuiltinComponentDef } from '../component-registry';
|
|
26
|
+
export declare const StxModalBuiltin: BuiltinComponentDef;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { escapeAttr } from "./escape.js";
|
|
2
|
+
function resolveProp(props, key) {
|
|
3
|
+
if (props.serverDynamic[key] !== void 0)
|
|
4
|
+
return String(props.serverDynamic[key]);
|
|
5
|
+
const val = props.static[key];
|
|
6
|
+
if (typeof val === "string")
|
|
7
|
+
return val;
|
|
8
|
+
return;
|
|
9
|
+
}
|
|
10
|
+
const SIZE_WIDTHS = {
|
|
11
|
+
sm: "max-width:24rem",
|
|
12
|
+
md: "max-width:32rem",
|
|
13
|
+
lg: "max-width:42rem",
|
|
14
|
+
xl: "max-width:56rem",
|
|
15
|
+
full: "max-width:calc(100vw - 2rem);max-height:calc(100vh - 2rem)"
|
|
16
|
+
};
|
|
17
|
+
export const StxModalBuiltin = {
|
|
18
|
+
name: "StxModal",
|
|
19
|
+
aliases: ["stx-modal"],
|
|
20
|
+
render(props, slotContent, _ctx) {
|
|
21
|
+
const rawId = resolveProp(props, "id");
|
|
22
|
+
if (!rawId) {
|
|
23
|
+
console.warn('[stx] <StxModal> requires an "id" prop');
|
|
24
|
+
return "<!-- StxModal: missing id prop -->";
|
|
25
|
+
}
|
|
26
|
+
const id = escapeAttr(rawId), size = resolveProp(props, "size") || "md", closeOnBackdrop = resolveProp(props, "closeOnBackdrop") !== "false", closeOnEscape = resolveProp(props, "closeOnEscape") !== "false", maxWidth = SIZE_WIDTHS[size] || SIZE_WIDTHS.md;
|
|
27
|
+
return `<div id="stx-modal-${id}" class="stx-modal-backdrop" data-stx-modal="${id}" data-close-backdrop="${closeOnBackdrop}" data-close-escape="${closeOnEscape}" style="display:none;position:fixed;inset:0;z-index:99999;align-items:center;justify-content:center;background:rgba(0,0,0,0.5);backdrop-filter:blur(2px);opacity:0;transition:opacity 0.2s ease" aria-modal="true" role="dialog">
|
|
28
|
+
<div class="stx-modal-panel" style="${maxWidth};width:100%;margin:1rem;border-radius:0.75rem;box-shadow:0 20px 60px rgba(0,0,0,0.3);overflow:hidden;transform:scale(0.95) translateY(8px);transition:transform 0.2s ease,opacity 0.2s ease;opacity:0;background:var(--stx-modal-bg,#fff);color:var(--stx-modal-text,#1f2937)">
|
|
29
|
+
<div style="padding:1.5rem">${slotContent}</div>
|
|
30
|
+
</div>
|
|
31
|
+
</div>
|
|
32
|
+
<style>
|
|
33
|
+
@media(prefers-color-scheme:dark){[data-stx-modal]{--stx-modal-bg:#1f2937;--stx-modal-text:#f3f4f6}}
|
|
34
|
+
.stx-modal-backdrop[data-stx-modal-open]{display:flex!important;opacity:1}
|
|
35
|
+
.stx-modal-backdrop[data-stx-modal-open] .stx-modal-panel{transform:scale(1) translateY(0);opacity:1}
|
|
36
|
+
</style>`;
|
|
37
|
+
}
|
|
38
|
+
};
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SafeImage Builtin Component
|
|
3
|
+
*
|
|
4
|
+
* Drop-in `<img>` replacement with a declarative broken-image fallback.
|
|
5
|
+
* Third-party image URLs (external-CDN avatars, user content that gets
|
|
6
|
+
* deleted, seed data pointing at links that 404) fail frequently in
|
|
7
|
+
* production; without intervention the browser draws the alt text inside
|
|
8
|
+
* whatever layout frame the `<img>` had — round avatar frames in
|
|
9
|
+
* particular look broken.
|
|
10
|
+
*
|
|
11
|
+
* SafeImage wires an inline `onerror=` handler that swaps to a fallback
|
|
12
|
+
* image (and optionally swaps the class string) when the primary src
|
|
13
|
+
* fails to load.
|
|
14
|
+
*
|
|
15
|
+
* Usage:
|
|
16
|
+
* <SafeImage src="/avatars/u.png" alt="User" fallback="/avatars/default.svg" />
|
|
17
|
+
* <SafeImage :src="judge.photo" :alt="judge.name"
|
|
18
|
+
* className="h-12 w-12 rounded-full grayscale filter"
|
|
19
|
+
* fallbackClassName="h-12 w-12 rounded-full"
|
|
20
|
+
* fallback="/images/avatars/default-judge.svg" />
|
|
21
|
+
*
|
|
22
|
+
* Why inline `onerror=` rather than a delegated capture-phase listener:
|
|
23
|
+
* `error` events don't bubble, so a listener attached by a component's
|
|
24
|
+
* `<script client>` IIFE runs AFTER the element's first load attempt —
|
|
25
|
+
* cached 404s and offline first paint slip past it. The inline HTML
|
|
26
|
+
* `onerror=` attribute is parsed-and-attached synchronously with the
|
|
27
|
+
* element by the browser's HTML parser, before the image request fires.
|
|
28
|
+
* That's the only race-free option for the error path.
|
|
29
|
+
*
|
|
30
|
+
* Why a single window-level handler rather than per-instance inline
|
|
31
|
+
* closures: keeps rendered HTML small (a ~35-byte attribute vs. a
|
|
32
|
+
* ~120-byte inline function body per `<img>`). The handler is emitted
|
|
33
|
+
* once per page render (gated on a render-context flag) and registered
|
|
34
|
+
* once per browser session (gated on the `window.__stxSafeImageHandler`
|
|
35
|
+
* existence check, so it's also idempotent across SPA navigation).
|
|
36
|
+
* Per-instance config travels via `data-*` attributes, so the handler
|
|
37
|
+
* stays stateless.
|
|
38
|
+
*
|
|
39
|
+
* Resolves stacksjs/stx#1732.
|
|
40
|
+
*
|
|
41
|
+
* @module builtins/safe-image
|
|
42
|
+
*/
|
|
43
|
+
import type { BuiltinComponentDef } from '../component-registry';
|
|
44
|
+
export declare const SafeImageBuiltin: BuiltinComponentDef;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { forwardResolvedAttrs, forwardStaticAttrs } from "./attrs.js";
|
|
2
|
+
const DEFAULT_FALLBACK = "/images/safe-image-default.svg";
|
|
3
|
+
function escapeAttr(value) {
|
|
4
|
+
return value.replace(/&/g, "&").replace(/"/g, """).replace(/</g, "<").replace(/>/g, ">");
|
|
5
|
+
}
|
|
6
|
+
function resolveProp(props, key) {
|
|
7
|
+
if (props.serverDynamic[key] !== void 0)
|
|
8
|
+
return String(props.serverDynamic[key]);
|
|
9
|
+
const val = props.static[key];
|
|
10
|
+
if (typeof val === "string")
|
|
11
|
+
return val;
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
const HANDLER_SCRIPT = `<script>window.__stxSafeImageHandler||(window.__stxSafeImageHandler=function(i){if(i.__stx_fb)return;i.__stx_fb=1;var f=i.getAttribute('data-fallback')||'${DEFAULT_FALLBACK}';var c=i.getAttribute('data-fallback-class');i.src=f;if(c)i.className=c;});</script>`;
|
|
15
|
+
export const SafeImageBuiltin = {
|
|
16
|
+
name: "SafeImage",
|
|
17
|
+
aliases: ["safe-image", "safe-img"],
|
|
18
|
+
render(props, _slotContent, ctx) {
|
|
19
|
+
const src = resolveProp(props, "src") || "", alt = resolveProp(props, "alt") || "", fallback = resolveProp(props, "fallback") || DEFAULT_FALLBACK, className = resolveProp(props, "class") || resolveProp(props, "className") || "", fallbackClassName = resolveProp(props, "fallbackClassName") || "", imgAttrs = [];
|
|
20
|
+
imgAttrs.push(`src="${escapeAttr(src)}"`);
|
|
21
|
+
imgAttrs.push(`alt="${escapeAttr(alt)}"`);
|
|
22
|
+
if (className)
|
|
23
|
+
imgAttrs.push(`class="${escapeAttr(className)}"`);
|
|
24
|
+
imgAttrs.push(`data-fallback="${escapeAttr(fallback)}"`);
|
|
25
|
+
if (fallbackClassName)
|
|
26
|
+
imgAttrs.push(`data-fallback-class="${escapeAttr(fallbackClassName)}"`);
|
|
27
|
+
imgAttrs.push('onerror="window.__stxSafeImageHandler(this)"');
|
|
28
|
+
const consumed = new Set([
|
|
29
|
+
"src",
|
|
30
|
+
"alt",
|
|
31
|
+
"fallback",
|
|
32
|
+
"class",
|
|
33
|
+
"className",
|
|
34
|
+
"fallbackClassName"
|
|
35
|
+
]);
|
|
36
|
+
imgAttrs.push(...forwardStaticAttrs(props, consumed));
|
|
37
|
+
imgAttrs.push(...forwardResolvedAttrs(props, consumed));
|
|
38
|
+
const imgTag = `<img ${imgAttrs.join(" ")} />`, renderCtx = ctx.context;
|
|
39
|
+
if (!renderCtx.__safeImageHandlerEmitted) {
|
|
40
|
+
renderCtx.__safeImageHandlerEmitted = !0;
|
|
41
|
+
return `${HANDLER_SCRIPT}${imgTag}`;
|
|
42
|
+
}
|
|
43
|
+
return imgTag;
|
|
44
|
+
}
|
|
45
|
+
};
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* StxImage Builtin Component
|
|
3
|
+
*
|
|
4
|
+
* Full-featured image component matching NuxtImage capabilities:
|
|
5
|
+
*
|
|
6
|
+
* - Auto `loading="lazy"` + `decoding="async"`
|
|
7
|
+
* - Responsive `srcset` + `sizes` auto-generation from breakpoints
|
|
8
|
+
* - Density descriptors (`1x`, `2x`, `3x`)
|
|
9
|
+
* - `<picture>` wrapper with format negotiation (avif, webp fallback)
|
|
10
|
+
* - Blur-up / color / empty placeholder modes
|
|
11
|
+
* - Aspect ratio preservation (CLS prevention)
|
|
12
|
+
* - Preload hint injection (`<link rel="preload">`)
|
|
13
|
+
* - CDN provider support (Cloudinary, imgix, custom)
|
|
14
|
+
*
|
|
15
|
+
* Usage:
|
|
16
|
+
* <StxImage src="/images/hero.jpg" alt="Hero" />
|
|
17
|
+
* <StxImage src="/images/hero.jpg" alt="Hero" width="800" height="600" />
|
|
18
|
+
* <StxImage src="/images/hero.jpg" alt="Hero" sizes="sm:100vw md:50vw lg:33vw" />
|
|
19
|
+
* <StxImage src="/images/hero.jpg" alt="Hero" densities="1x 2x" />
|
|
20
|
+
* <StxImage src="/images/hero.jpg" alt="Hero" format="webp" />
|
|
21
|
+
* <StxImage src="/images/hero.jpg" alt="Hero" placeholder="blur" />
|
|
22
|
+
* <StxImage src="/images/hero.jpg" alt="Hero" placeholder="thumbhash" />
|
|
23
|
+
* <StxImage src="/images/hero.jpg" alt="Hero" preload />
|
|
24
|
+
* <StxImage src="/images/hero.jpg" alt="Hero" provider="cloudinary" />
|
|
25
|
+
*
|
|
26
|
+
* @module builtins/stx-image
|
|
27
|
+
*/
|
|
28
|
+
import type { BuiltinComponentDef } from '../component-registry';
|
|
29
|
+
export declare const StxImageBuiltin: BuiltinComponentDef;
|