use-scroll-animate 10.2.0 → 10.4.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/AGENTS.md +4 -0
- package/CHANGELOG.md +35 -0
- package/README.md +67 -0
- package/bin/motionary-mcp.mjs +265 -0
- package/dist/chunks/anim-image-DDdb9q3X.js +166 -0
- package/dist/chunks/anim-image-DDdb9q3X.js.map +1 -0
- package/dist/chunks/anim-image-blQgPFFS.cjs +174 -0
- package/dist/chunks/anim-image-blQgPFFS.cjs.map +1 -0
- package/dist/chunks/audio-BpU-A1m1.cjs.map +1 -1
- package/dist/chunks/{audio-D95jwlOh.js → audio-CWt1xdZB.js} +3 -3
- package/dist/chunks/{audio-D95jwlOh.js.map → audio-CWt1xdZB.js.map} +1 -1
- package/dist/chunks/{base-BnRyfuyM.js → base-BTev8qxg.js} +2 -2
- package/dist/chunks/{base-BnRyfuyM.js.map → base-BTev8qxg.js.map} +1 -1
- package/dist/chunks/base-DBheNxJu.cjs.map +1 -1
- package/dist/chunks/bind-B_CTL6Qn.js.map +1 -1
- package/dist/chunks/bind-Ui43-n2d.cjs.map +1 -1
- package/dist/chunks/builtins-CKKZNR95.cjs.map +1 -1
- package/dist/chunks/{builtins-CqIq1zBv.js → builtins-CPmS6aDB.js} +3 -3
- package/dist/chunks/{builtins-CqIq1zBv.js.map → builtins-CPmS6aDB.js.map} +1 -1
- package/dist/chunks/core-B5T0dhFH.cjs.map +1 -1
- package/dist/chunks/{core-DsGoL9EY.js → core-BviA7nFa.js} +2 -2
- package/dist/chunks/{core-DsGoL9EY.js.map → core-BviA7nFa.js.map} +1 -1
- package/dist/chunks/core-D74Fz-dL.cjs.map +1 -1
- package/dist/chunks/core-D7cVumUu.js.map +1 -1
- package/dist/chunks/{core-XA2yhn1b.js → core-KiM7MXjL.js} +2 -2
- package/dist/chunks/{core-XA2yhn1b.js.map → core-KiM7MXjL.js.map} +1 -1
- package/dist/chunks/core-MQlXZKUG.cjs.map +1 -1
- package/dist/chunks/ease-HwYZnZat.cjs +94 -0
- package/dist/chunks/ease-HwYZnZat.cjs.map +1 -0
- package/dist/chunks/ease-XN8_0sXu.js +89 -0
- package/dist/chunks/ease-XN8_0sXu.js.map +1 -0
- package/dist/chunks/fx-B_pbhpDp.cjs.map +1 -1
- package/dist/chunks/{fx-CtnrFEg9.js → fx-CgWKqVsn.js} +2 -2
- package/dist/chunks/{fx-CtnrFEg9.js.map → fx-CgWKqVsn.js.map} +1 -1
- package/dist/chunks/generative-2LhxG5BJ.js.map +1 -1
- package/dist/chunks/generative-BHIj-NU0.cjs.map +1 -1
- package/dist/chunks/{gpu-CDcXiNA8.js → gpu-BWfgYWMY.js} +2 -2
- package/dist/chunks/{gpu-CDcXiNA8.js.map → gpu-BWfgYWMY.js.map} +1 -1
- package/dist/chunks/gpu-cUixt7kT.cjs.map +1 -1
- package/dist/chunks/index-tags-B-JBecYg.js.map +1 -1
- package/dist/chunks/index-tags-hLIF2Clq.cjs.map +1 -1
- package/dist/chunks/{keyframes-W-474DMc.js → keyframes-B5PWe5bU.js} +3 -2
- package/dist/chunks/keyframes-B5PWe5bU.js.map +1 -0
- package/dist/chunks/{keyframes-ZheOkpt0.cjs → keyframes-tC3I7anQ.cjs} +4 -3
- package/dist/chunks/keyframes-tC3I7anQ.cjs.map +1 -0
- package/dist/chunks/{manifest-D58HXVY-.js → manifest-BHx5yPN6.js} +2 -2
- package/dist/chunks/{manifest-D58HXVY-.js.map → manifest-BHx5yPN6.js.map} +1 -1
- package/dist/chunks/manifest-PaF9B8Vt.cjs.map +1 -1
- package/dist/chunks/{player-48Zy_NBG.js → player-BfHMNtiM.js} +4 -4
- package/dist/chunks/{player-48Zy_NBG.js.map → player-BfHMNtiM.js.map} +1 -1
- package/dist/chunks/player-C4y4jXSv.cjs.map +1 -1
- package/dist/chunks/presets-BYBVJVeP.js.map +1 -1
- package/dist/chunks/presets-CUHys3sK.cjs.map +1 -1
- package/dist/chunks/{registry-gFJRpPES.js → registry-BKzyg1JV.js} +2 -2
- package/dist/chunks/{registry-gFJRpPES.js.map → registry-BKzyg1JV.js.map} +1 -1
- package/dist/chunks/{registry-BIEjKngP.js → registry-CT-TT_bx.js} +3 -3
- package/dist/chunks/{registry-BIEjKngP.js.map → registry-CT-TT_bx.js.map} +1 -1
- package/dist/chunks/{registry-eJgpFAzI.cjs → registry-tzwKkldE.cjs} +2 -2
- package/dist/chunks/{registry-eJgpFAzI.cjs.map → registry-tzwKkldE.cjs.map} +1 -1
- package/dist/chunks/registry-xQZnSqqV.cjs.map +1 -1
- package/dist/chunks/shared-CkKHWrtJ.js.map +1 -1
- package/dist/chunks/shared-jkgRH-Hx.cjs.map +1 -1
- package/dist/chunks/{spring-CZDNyqWp.js → spring-BHuP55DR.js} +2 -2
- package/dist/chunks/{spring-CZDNyqWp.js.map → spring-BHuP55DR.js.map} +1 -1
- package/dist/chunks/spring-BlTQD2AV.cjs.map +1 -1
- package/dist/chunks/stagger-CCFyhzSw.cjs.map +1 -1
- package/dist/chunks/stagger-DtMKo2SK.js.map +1 -1
- package/dist/chunks/{ticker-CM_56oVy.js → ticker-C8lSGml9.js} +2 -2
- package/dist/chunks/{ticker-CM_56oVy.js.map → ticker-C8lSGml9.js.map} +1 -1
- package/dist/chunks/{ticker-D4o6enH0.cjs → ticker-Un0bvTWR.cjs} +2 -2
- package/dist/chunks/{ticker-D4o6enH0.cjs.map → ticker-Un0bvTWR.cjs.map} +1 -1
- package/dist/chunks/{tween-CqX1JBuj.js → tween-BcejKpsx.js} +15 -91
- package/dist/chunks/tween-BcejKpsx.js.map +1 -0
- package/dist/chunks/{tween-CBuWYpI-.cjs → tween-CwLLC3Ko.cjs} +15 -95
- package/dist/chunks/tween-CwLLC3Ko.cjs.map +1 -0
- package/dist/chunks/variants-CrDDJoYK.cjs.map +1 -1
- package/dist/chunks/{variants-GU3yIL4F.js → variants-CsRGUIyA.js} +2 -2
- package/dist/chunks/{variants-GU3yIL4F.js.map → variants-CsRGUIyA.js.map} +1 -1
- package/dist/components/a11y.cjs.map +1 -1
- package/dist/components/a11y.js +2 -2
- package/dist/components/a11y.js.map +1 -1
- package/dist/components/angular.cjs.map +1 -1
- package/dist/components/angular.js +8 -8
- package/dist/components/angular.js.map +1 -1
- package/dist/components/background.cjs.map +1 -1
- package/dist/components/background.js +2 -2
- package/dist/components/background.js.map +1 -1
- package/dist/components/bridge.cjs.map +1 -1
- package/dist/components/bridge.js +1 -1
- package/dist/components/bridge.js.map +1 -1
- package/dist/components/cards.cjs.map +1 -1
- package/dist/components/cards.js +2 -2
- package/dist/components/cards.js.map +1 -1
- package/dist/components/click.cjs.map +1 -1
- package/dist/components/click.js +3 -3
- package/dist/components/click.js.map +1 -1
- package/dist/components/core.cjs.map +1 -1
- package/dist/components/core.js.map +1 -1
- package/dist/components/depth.cjs.map +1 -1
- package/dist/components/depth.js +3 -3
- package/dist/components/depth.js.map +1 -1
- package/dist/components/design.cjs.map +1 -1
- package/dist/components/design.js +3 -3
- package/dist/components/design.js.map +1 -1
- package/dist/components/dsl.cjs.map +1 -1
- package/dist/components/dsl.js +2 -2
- package/dist/components/dsl.js.map +1 -1
- package/dist/components/effects.cjs.map +1 -1
- package/dist/components/effects.js +9 -9
- package/dist/components/effects.js.map +1 -1
- package/dist/components/engine.cjs.map +1 -1
- package/dist/components/engine.js +2 -2
- package/dist/components/engine.js.map +1 -1
- package/dist/components/feedback.cjs.map +1 -1
- package/dist/components/feedback.js +1 -1
- package/dist/components/feedback.js.map +1 -1
- package/dist/components/fx-3d.cjs.map +1 -1
- package/dist/components/fx-3d.js +2 -2
- package/dist/components/fx-3d.js.map +1 -1
- package/dist/components/fx-ai.cjs.map +1 -1
- package/dist/components/fx-ai.js +2 -2
- package/dist/components/fx-ai.js.map +1 -1
- package/dist/components/fx-chart.cjs.map +1 -1
- package/dist/components/fx-chart.js +2 -2
- package/dist/components/fx-chart.js.map +1 -1
- package/dist/components/fx-cinema.cjs.map +1 -1
- package/dist/components/fx-cinema.js +2 -2
- package/dist/components/fx-cinema.js.map +1 -1
- package/dist/components/fx-cyber.cjs.map +1 -1
- package/dist/components/fx-cyber.js +2 -2
- package/dist/components/fx-cyber.js.map +1 -1
- package/dist/components/fx-festival.cjs.map +1 -1
- package/dist/components/fx-festival.js +2 -2
- package/dist/components/fx-festival.js.map +1 -1
- package/dist/components/fx-focus.cjs.map +1 -1
- package/dist/components/fx-focus.js +2 -2
- package/dist/components/fx-focus.js.map +1 -1
- package/dist/components/fx-form.cjs.map +1 -1
- package/dist/components/fx-form.js +2 -2
- package/dist/components/fx-form.js.map +1 -1
- package/dist/components/fx-game.cjs.map +1 -1
- package/dist/components/fx-game.js +2 -2
- package/dist/components/fx-game.js.map +1 -1
- package/dist/components/fx-genart.cjs.map +1 -1
- package/dist/components/fx-genart.js +2 -2
- package/dist/components/fx-genart.js.map +1 -1
- package/dist/components/fx-geo.cjs.map +1 -1
- package/dist/components/fx-geo.js +2 -2
- package/dist/components/fx-geo.js.map +1 -1
- package/dist/components/fx-gesture.cjs.map +1 -1
- package/dist/components/fx-gesture.js +2 -2
- package/dist/components/fx-gesture.js.map +1 -1
- package/dist/components/fx-gpu.js +3 -3
- package/dist/components/fx-light.cjs.map +1 -1
- package/dist/components/fx-light.js +2 -2
- package/dist/components/fx-light.js.map +1 -1
- package/dist/components/fx-lottie.cjs.map +1 -1
- package/dist/components/fx-lottie.js +2 -2
- package/dist/components/fx-lottie.js.map +1 -1
- package/dist/components/fx-morph.cjs.map +1 -1
- package/dist/components/fx-morph.js +2 -2
- package/dist/components/fx-morph.js.map +1 -1
- package/dist/components/fx-music.cjs.map +1 -1
- package/dist/components/fx-music.js +3 -3
- package/dist/components/fx-music.js.map +1 -1
- package/dist/components/fx-organic.cjs.map +1 -1
- package/dist/components/fx-organic.js +2 -2
- package/dist/components/fx-organic.js.map +1 -1
- package/dist/components/fx-paper.cjs.map +1 -1
- package/dist/components/fx-paper.js +2 -2
- package/dist/components/fx-paper.js.map +1 -1
- package/dist/components/fx-perf.cjs.map +1 -1
- package/dist/components/fx-perf.js +2 -2
- package/dist/components/fx-perf.js.map +1 -1
- package/dist/components/fx-physics.cjs.map +1 -1
- package/dist/components/fx-physics.js +2 -2
- package/dist/components/fx-physics.js.map +1 -1
- package/dist/components/fx-retro.cjs.map +1 -1
- package/dist/components/fx-retro.js +2 -2
- package/dist/components/fx-retro.js.map +1 -1
- package/dist/components/fx-safe.cjs.map +1 -1
- package/dist/components/fx-safe.js +2 -2
- package/dist/components/fx-safe.js.map +1 -1
- package/dist/components/fx-shop.cjs.map +1 -1
- package/dist/components/fx-shop.js +2 -2
- package/dist/components/fx-shop.js.map +1 -1
- package/dist/components/fx-social.cjs.map +1 -1
- package/dist/components/fx-social.js +2 -2
- package/dist/components/fx-social.js.map +1 -1
- package/dist/components/fx-spatial.cjs.map +1 -1
- package/dist/components/fx-spatial.js +2 -2
- package/dist/components/fx-spatial.js.map +1 -1
- package/dist/components/fx-surface.cjs.map +1 -1
- package/dist/components/fx-surface.js +2 -2
- package/dist/components/fx-surface.js.map +1 -1
- package/dist/components/fx-text.cjs.map +1 -1
- package/dist/components/fx-text.js +2 -2
- package/dist/components/fx-text.js.map +1 -1
- package/dist/components/fx-transitions.cjs.map +1 -1
- package/dist/components/fx-transitions.js +3 -3
- package/dist/components/fx-transitions.js.map +1 -1
- package/dist/components/fx-video.cjs.map +1 -1
- package/dist/components/fx-video.js +2 -2
- package/dist/components/fx-video.js.map +1 -1
- package/dist/components/fx-weather.cjs.map +1 -1
- package/dist/components/fx-weather.js +2 -2
- package/dist/components/fx-weather.js.map +1 -1
- package/dist/components/fx.cjs.map +1 -1
- package/dist/components/fx.js +6 -6
- package/dist/components/fx.js.map +1 -1
- package/dist/components/fx2.cjs.map +1 -1
- package/dist/components/fx2.js +6 -6
- package/dist/components/fx2.js.map +1 -1
- package/dist/components/gesture.cjs.map +1 -1
- package/dist/components/gesture.js +4 -4
- package/dist/components/gesture.js.map +1 -1
- package/dist/components/interaction.cjs.map +1 -1
- package/dist/components/interaction.js +1 -1
- package/dist/components/interaction.js.map +1 -1
- package/dist/components/layout.cjs.map +1 -1
- package/dist/components/layout.js +1 -1
- package/dist/components/layout.js.map +1 -1
- package/dist/components/lazy.cjs.map +1 -1
- package/dist/components/lazy.js.map +1 -1
- package/dist/components/lite.cjs.map +1 -1
- package/dist/components/lite.js.map +1 -1
- package/dist/components/marketplace.cjs.map +1 -1
- package/dist/components/marketplace.js +4 -4
- package/dist/components/marketplace.js.map +1 -1
- package/dist/components/native.cjs.map +1 -1
- package/dist/components/native.js +3 -3
- package/dist/components/native.js.map +1 -1
- package/dist/components/packs.cjs.map +1 -1
- package/dist/components/packs.js +1 -1
- package/dist/components/packs.js.map +1 -1
- package/dist/components/page.cjs.map +1 -1
- package/dist/components/page.js +3 -3
- package/dist/components/page.js.map +1 -1
- package/dist/components/perf.cjs.map +1 -1
- package/dist/components/perf.js +2 -2
- package/dist/components/perf.js.map +1 -1
- package/dist/components/physics.cjs.map +1 -1
- package/dist/components/physics.js +3 -3
- package/dist/components/physics.js.map +1 -1
- package/dist/components/plugins.cjs.map +1 -1
- package/dist/components/plugins.js +4 -4
- package/dist/components/plugins.js.map +1 -1
- package/dist/components/react.cjs.map +1 -1
- package/dist/components/react.js.map +1 -1
- package/dist/components/reveal.cjs.map +1 -1
- package/dist/components/reveal.js +1 -1
- package/dist/components/reveal.js.map +1 -1
- package/dist/components/solid.cjs.map +1 -1
- package/dist/components/solid.js +8 -8
- package/dist/components/solid.js.map +1 -1
- package/dist/components/svelte.cjs.map +1 -1
- package/dist/components/svelte.js +8 -8
- package/dist/components/svelte.js.map +1 -1
- package/dist/components/svg.cjs.map +1 -1
- package/dist/components/svg.js +1 -1
- package/dist/components/svg.js.map +1 -1
- package/dist/components/text.cjs.map +1 -1
- package/dist/components/text.js +2 -2
- package/dist/components/text.js.map +1 -1
- package/dist/components/timeline.cjs.map +1 -1
- package/dist/components/timeline.js +3 -3
- package/dist/components/timeline.js.map +1 -1
- package/dist/components/tokens.cjs.map +1 -1
- package/dist/components/tokens.js.map +1 -1
- package/dist/components/transitions.cjs.map +1 -1
- package/dist/components/transitions.js +1 -1
- package/dist/components/transitions.js.map +1 -1
- package/dist/components/ui.cjs.map +1 -1
- package/dist/components/ui.js +4 -4
- package/dist/components/ui.js.map +1 -1
- package/dist/components/vue.cjs.map +1 -1
- package/dist/components/vue.js +8 -8
- package/dist/components/vue.js.map +1 -1
- package/dist/components/webgl.cjs.map +1 -1
- package/dist/components/webgl.js +1 -1
- package/dist/components/webgl.js.map +1 -1
- package/dist/components/widgets.cjs +766 -212
- package/dist/components/widgets.cjs.map +1 -1
- package/dist/components/widgets.d.cts +207 -2
- package/dist/components/widgets.d.ts +207 -2
- package/dist/components/widgets.js +770 -221
- package/dist/components/widgets.js.map +1 -1
- package/dist/components.cjs.map +1 -1
- package/dist/components.js +10 -10
- package/dist/components.js.map +1 -1
- package/dist/element.cjs.map +1 -1
- package/dist/element.js.map +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/llms-full.txt +250 -1
- package/dist/llms.txt +13 -2
- package/dist/manifest.json +646 -1
- package/dist/presets/extended.cjs.map +1 -1
- package/dist/presets/extended.js.map +1 -1
- package/dist/react.cjs.map +1 -1
- package/dist/react.js.map +1 -1
- package/dist/runtime/format-apng.cjs +131 -0
- package/dist/runtime/format-apng.cjs.map +1 -0
- package/dist/runtime/format-apng.d.cts +250 -0
- package/dist/runtime/format-apng.d.ts +250 -0
- package/dist/runtime/format-apng.iife.js +2 -0
- package/dist/runtime/format-apng.iife.js.map +1 -0
- package/dist/runtime/format-apng.js +123 -0
- package/dist/runtime/format-apng.js.map +1 -0
- package/dist/runtime/format-css.cjs +5 -4
- package/dist/runtime/format-css.cjs.map +1 -1
- package/dist/runtime/format-css.js +5 -4
- package/dist/runtime/format-css.js.map +1 -1
- package/dist/runtime/format-gif.cjs +206 -0
- package/dist/runtime/format-gif.cjs.map +1 -0
- package/dist/runtime/format-gif.d.cts +223 -0
- package/dist/runtime/format-gif.d.ts +223 -0
- package/dist/runtime/format-gif.iife.js +2 -0
- package/dist/runtime/format-gif.iife.js.map +1 -0
- package/dist/runtime/format-gif.js +199 -0
- package/dist/runtime/format-gif.js.map +1 -0
- package/dist/runtime/format-motion.cjs +9 -8
- package/dist/runtime/format-motion.cjs.map +1 -1
- package/dist/runtime/format-motion.js +5 -4
- package/dist/runtime/format-motion.js.map +1 -1
- package/dist/runtime/format-sprite.cjs +226 -0
- package/dist/runtime/format-sprite.cjs.map +1 -0
- package/dist/runtime/format-sprite.d.cts +224 -0
- package/dist/runtime/format-sprite.d.ts +224 -0
- package/dist/runtime/format-sprite.iife.js +2 -0
- package/dist/runtime/format-sprite.iife.js.map +1 -0
- package/dist/runtime/format-sprite.js +216 -0
- package/dist/runtime/format-sprite.js.map +1 -0
- package/dist/runtime/format-svg.cjs +5 -4
- package/dist/runtime/format-svg.cjs.map +1 -1
- package/dist/runtime/format-svg.iife.js.map +1 -1
- package/dist/runtime/format-svg.js +4 -3
- package/dist/runtime/format-svg.js.map +1 -1
- package/dist/runtime/format-webp.cjs +123 -0
- package/dist/runtime/format-webp.cjs.map +1 -0
- package/dist/runtime/format-webp.d.cts +245 -0
- package/dist/runtime/format-webp.d.ts +245 -0
- package/dist/runtime/format-webp.iife.js +2 -0
- package/dist/runtime/format-webp.iife.js.map +1 -0
- package/dist/runtime/format-webp.js +115 -0
- package/dist/runtime/format-webp.js.map +1 -0
- package/dist/runtime/scroll.cjs +2 -2
- package/dist/runtime/scroll.cjs.map +1 -1
- package/dist/runtime/scroll.js +2 -2
- package/dist/runtime/scroll.js.map +1 -1
- package/dist/runtime/smooth.cjs +284 -0
- package/dist/runtime/smooth.cjs.map +1 -0
- package/dist/runtime/smooth.d.cts +137 -0
- package/dist/runtime/smooth.d.ts +137 -0
- package/dist/runtime/smooth.iife.js +2 -0
- package/dist/runtime/smooth.iife.js.map +1 -0
- package/dist/runtime/smooth.js +279 -0
- package/dist/runtime/smooth.js.map +1 -0
- package/dist/runtime/text.cjs +147 -0
- package/dist/runtime/text.cjs.map +1 -0
- package/dist/runtime/text.d.cts +65 -0
- package/dist/runtime/text.d.ts +65 -0
- package/dist/runtime/text.iife.js +2 -0
- package/dist/runtime/text.iife.js.map +1 -0
- package/dist/runtime/text.js +143 -0
- package/dist/runtime/text.js.map +1 -0
- package/dist/runtime.cjs +9 -8
- package/dist/runtime.cjs.map +1 -1
- package/dist/runtime.d.cts +9 -2
- package/dist/runtime.d.ts +9 -2
- package/dist/runtime.iife.js +1 -1
- package/dist/runtime.iife.js.map +1 -1
- package/dist/runtime.js +6 -5
- package/dist/runtime.js.map +1 -1
- package/dist/solid.cjs.map +1 -1
- package/dist/solid.js.map +1 -1
- package/dist/svelte.cjs.map +1 -1
- package/dist/svelte.js.map +1 -1
- package/dist/vue.cjs.map +1 -1
- package/dist/vue.js.map +1 -1
- package/dist/widgets.umd.js +1 -1
- package/dist/widgets.umd.js.map +1 -1
- package/docs/ROADMAP.md +2 -2
- package/docs/components/README.md +12 -7
- package/docs/components/usa-parallax-layers.md +38 -0
- package/docs/components/usa-route-transition.md +38 -0
- package/docs/components/usa-scroll-ring.md +32 -0
- package/docs/components/usa-smooth-scroll.md +60 -0
- package/docs/components/usa-text-splitter.md +60 -0
- package/docs/components.md +94 -0
- package/docs/mcp.md +50 -0
- package/docs/runtime/format-apng.md +59 -0
- package/docs/runtime/format-gif.md +60 -0
- package/docs/runtime/format-sprite.md +60 -0
- package/docs/runtime/format-webp.md +58 -0
- package/docs/runtime/smooth.md +60 -0
- package/docs/runtime/text.md +59 -0
- package/package.json +64 -2
- package/dist/chunks/keyframes-W-474DMc.js.map +0 -1
- package/dist/chunks/keyframes-ZheOkpt0.cjs.map +0 -1
- package/dist/chunks/tween-CBuWYpI-.cjs.map +0 -1
- package/dist/chunks/tween-CqX1JBuj.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core.js","sources":["../../src/components/core/attributes.ts","../../src/components/core/index.ts"],"sourcesContent":["/**\n * 10.2: declarative `data-motion` in `motionary/core` — no DSL package needed.\n *\n * ```html\n * <h1 data-motion=\"enter: fade-up 600ms\">Hello</h1>\n * <ul data-motion=\"enter: fade-up 500ms stagger 80ms\"> <li>…</li> <li>…</li> </ul>\n * <button data-motion=\"click: pop; hover: lift\">Buy</button>\n * ```\n * ```ts\n * import { createMotion, applyMotionAttributes } from 'motionary/core';\n * const stop = applyMotionAttributes(createMotion(), document, { observe: true });\n * ```\n *\n * Rule grammar (subset of the 9.0 DSL): `trigger: effect [duration] [delay <t>]\n * [stagger <t>] [ease <easing>] [once]`, rules separated by `;`. Triggers:\n * `enter`, `load`, `click`, `hover`, `loop`. Times: `600ms`, `0.6s`, `600`.\n * `stagger` animates the element's children. Effects are core presets or any\n * effect a plugin registered with `use()`.\n */\nimport { PRESETS, type MotionInstance, type Trigger } from './index';\n\nexport interface MotionAttrRule {\n trigger: Trigger;\n effect: string;\n duration?: number;\n delay?: number;\n stagger?: number;\n easing?: string;\n once?: boolean;\n}\n\nconst TRIGGERS = ['enter', 'load', 'click', 'hover', 'loop'];\nconst ms = (t: string): number => (t.endsWith('ms') ? parseFloat(t) : t.endsWith('s') ? parseFloat(t) * 1000 : parseFloat(t));\n\n/** Parse a `data-motion` value. Throws on an unknown trigger or a malformed rule. */\nexport function parseMotionAttr(value: string): MotionAttrRule[] {\n return value\n .split(';')\n .map((r) => r.trim())\n .filter(Boolean)\n .map((r) => {\n const m = /^([a-z]+)\\s*:\\s*(.+)$/i.exec(r);\n if (!m || !TRIGGERS.includes(m[1])) throw new Error(`[motionary] data-motion: bad rule \"${r}\" (use trigger: effect, trigger = ${TRIGGERS.join(' | ')})`);\n const toks = m[2].trim().split(/\\s+/);\n const rule: MotionAttrRule = { trigger: m[1] as Trigger, effect: toks.shift()! };\n for (let i = 0; i < toks.length; i++) {\n const t = toks[i];\n if (t === 'delay' || t === 'stagger') rule[t] = ms(toks[++i] || '0');\n else if (t === 'ease') rule.easing = toks[++i];\n else if (t === 'once') rule.once = true;\n else if (/^[\\d.]+(ms|s)?$/.test(t)) rule.duration = ms(t);\n else rule.easing = t;\n }\n return rule;\n });\n}\n\n/**\n * Wire every `[data-motion]` element under `root` to the motion instance.\n * `observe: true` also wires elements added later (MutationObserver).\n * Returns a function that unbinds everything. No-op without a DOM (SSR).\n */\nexport function applyMotionAttributes(m: MotionInstance, root: ParentNode | null = typeof document !== 'undefined' ? document : null, o: { attribute?: string; observe?: boolean } = {}): () => void {\n if (!root) return () => undefined;\n const attr = o.attribute || 'data-motion';\n const offs = new Map<Element, (() => void)[]>();\n const wire = (el: Element) => {\n if (offs.has(el)) return;\n const value = el.getAttribute(attr);\n if (!value) return;\n const list: (() => void)[] = [];\n for (const r of parseMotionAttr(value)) {\n const opts = { duration: r.duration, delay: r.delay, easing: r.easing };\n for (const k of Object.keys(opts) as (keyof typeof opts)[]) if (opts[k] === undefined) delete opts[k];\n if (r.trigger === 'enter' && r.effect in PRESETS) {\n list.push(m.reveal(r.stagger ? el.children : el, r.effect, { ...opts, stagger: r.stagger, once: r.once ?? true }));\n } else {\n if (!m.has(r.effect)) throw new Error(`[motionary] data-motion: unknown effect \"${r.effect}\" — register its plugin with createMotion().use(…)`);\n list.push(m.bind(el as HTMLElement, r.effect, { ...opts, trigger: r.trigger, once: r.once }));\n }\n }\n offs.set(el, list);\n el.setAttribute('data-motion-ready', '');\n };\n const scan = (n: ParentNode) => {\n if ((n as Element).getAttribute?.(attr)) wire(n as Element);\n n.querySelectorAll?.(`[${attr}]`).forEach(wire);\n };\n scan(root);\n let mo: MutationObserver | null = null;\n if (o.observe && typeof MutationObserver !== 'undefined') {\n mo = new MutationObserver((recs) => recs.forEach((r) => r.addedNodes.forEach((n) => n.nodeType === 1 && scan(n as Element))));\n mo.observe(root as Node, { childList: true, subtree: true });\n }\n return () => {\n mo?.disconnect();\n offs.forEach((l, el) => {\n l.forEach((f) => f());\n el.removeAttribute('data-motion-ready');\n });\n offs.clear();\n };\n}\n\n","/**\n * `motionary/core` (10.0) — the zero-dependency core, under 10 KB gzip.\n *\n * Everything else is a plugin: `createMotion().use(retro, cinema)` with the\n * packs from `motionary/plugins` (or your own `{ name, effects }`).\n *\n * - `createMotion({ reducedMotion, rate })` → an instance with `use()`,\n * `play(el, effect, options)`, `bind(el, effect, { trigger })`,\n * `reveal(targets, preset, { stagger, once, threshold })`, `animate()`,\n * `pause()` / `resume()` / `setRate()` for everything it started,\n * `effects()` and `destroy()`.\n * - `PRESETS` — entrance keyframes (fade, fade-up/down/left/right, scale,\n * zoom-in/out, blur-in, flip-up), registered as `enter` effects.\n * - `preferredBackend()` — `webgpu` (default when available) → `webgl2` →\n * `canvas`, the order GPU plugins use.\n *\n * Reduced motion is honoured everywhere (OS setting or `reducedMotion:\n * 'reduce'`): entrances fade, loops / backgrounds / cursors are skipped.\n */\nexport const VERSION = '10.0.0';\nexport { applyMotionAttributes, parseMotionAttr } from './attributes';\nexport type { MotionAttrRule } from './attributes';\n\nexport type CoreEffectKind = 'enter' | 'exit' | 'attention' | 'hover' | 'click' | 'loop' | 'background' | 'cursor' | 'text' | 'scroll' | (string & {});\nexport interface CoreEffectContext {\n reduced: boolean;\n sensitivity: 'full' | 'gentle' | 'minimal' | 'static';\n event?: Event;\n animate(el: Element, keyframes: Keyframe[] | PropertyIndexedKeyframes, options?: number | KeyframeAnimationOptions): Animation | null;\n onCleanup(fn: () => void): void;\n}\nexport interface CoreEffect {\n name: string;\n kind: CoreEffectKind;\n description?: string;\n defaults?: Record<string, unknown>;\n reduced?: 'skip' | 'run';\n run(el: HTMLElement, options: any, ctx: CoreEffectContext): unknown;\n}\nexport interface CorePlugin {\n name: string;\n effects?: CoreEffect[];\n install?(m: MotionInstance): void;\n}\nexport type Trigger = 'click' | 'hover' | 'enter' | 'load' | 'loop' | 'manual';\nexport interface RevealOptions {\n stagger?: number;\n delay?: number;\n duration?: number;\n easing?: string;\n once?: boolean;\n threshold?: number;\n}\nexport interface MotionInstance {\n readonly paused: boolean;\n readonly rate: number;\n use(...plugins: CorePlugin[]): MotionInstance;\n has(effect: string): boolean;\n effects(): string[];\n reduced(): boolean;\n animate(el: Element, keyframes: Keyframe[] | PropertyIndexedKeyframes, options?: number | KeyframeAnimationOptions): Animation | null;\n play(el: HTMLElement, effect: string, options?: Record<string, unknown>, event?: Event): Promise<void>;\n bind(el: HTMLElement, effect: string, options?: Record<string, unknown> & { trigger?: Trigger; once?: boolean }): () => void;\n reveal(targets: string | Element | ArrayLike<Element>, preset?: string, options?: RevealOptions): () => void;\n pause(): void;\n resume(): void;\n setRate(rate: number): void;\n destroy(): void;\n}\n\nconst T = (x: number, y: number, s = 1) => `translate(${x}px,${y}px) scale(${s})`;\n/** Entrance keyframes (10.0). */\nexport const PRESETS: Record<string, Keyframe[]> = {\n fade: [{ opacity: 0 }, { opacity: 1 }],\n 'fade-up': [{ opacity: 0, transform: T(0, 24) }, { opacity: 1, transform: 'none' }],\n 'fade-down': [{ opacity: 0, transform: T(0, -24) }, { opacity: 1, transform: 'none' }],\n 'fade-left': [{ opacity: 0, transform: T(24, 0) }, { opacity: 1, transform: 'none' }],\n 'fade-right': [{ opacity: 0, transform: T(-24, 0) }, { opacity: 1, transform: 'none' }],\n scale: [{ opacity: 0, transform: 'scale(.85)' }, { opacity: 1, transform: 'none' }],\n 'zoom-in': [{ opacity: 0, transform: 'scale(.6)' }, { opacity: 1, transform: 'none' }],\n 'zoom-out': [{ opacity: 0, transform: 'scale(1.2)' }, { opacity: 1, transform: 'none' }],\n 'blur-in': [{ opacity: 0, filter: 'blur(10px)' }, { opacity: 1, filter: 'none' }],\n 'flip-up': [{ opacity: 0, transform: 'perspective(600px) rotateX(-60deg)' }, { opacity: 1, transform: 'none' }],\n};\nconst EASE = 'cubic-bezier(0.22, 1, 0.36, 1)';\nconst SKIP: string[] = ['loop', 'background', 'cursor'];\n\n/** GPU backend order used by GPU plugins: WebGPU by default (10.0). */\nexport function preferredBackend(): 'webgpu' | 'webgl2' | 'canvas' {\n if (typeof navigator !== 'undefined' && (navigator as any).gpu) return 'webgpu';\n try {\n if (typeof document !== 'undefined' && document.createElement('canvas').getContext?.('webgl2')) return 'webgl2';\n } catch {\n /* no GL */\n }\n return 'canvas';\n}\n\nconst list = (t: string | Element | ArrayLike<Element>): HTMLElement[] =>\n typeof t === 'string' ? (typeof document === 'undefined' ? [] : Array.from(document.querySelectorAll<HTMLElement>(t))) : 'length' in (t as ArrayLike<Element>) && !(t instanceof Element) ? (Array.from(t as ArrayLike<Element>) as HTMLElement[]) : [t as HTMLElement];\n\n/** Create a Motionary core instance (10.0). */\nexport function createMotion(config: { reducedMotion?: 'user' | 'reduce'; rate?: number } = {}): MotionInstance {\n const reg = new Map<string, CoreEffect>();\n const plugins = new Set<string>();\n const live = new Set<Animation>();\n const offs = new Set<() => void>();\n let paused = false;\n let rate = config.rate && config.rate > 0 ? config.rate : 1;\n const reduced = () => config.reducedMotion === 'reduce' || (typeof matchMedia === 'function' && matchMedia('(prefers-reduced-motion: reduce)').matches);\n const animate: MotionInstance['animate'] = (el, kf, o) => {\n if (typeof (el as any).animate !== 'function') return null;\n const a = el.animate(kf, o);\n if (!a) return null;\n live.add(a);\n if (rate !== 1) a.playbackRate = rate;\n if (paused) a.pause();\n const done = () => live.delete(a);\n a.finished?.then(done, done);\n return a;\n };\n const ctx = (event?: Event, cleanups: (() => void)[] = []): CoreEffectContext => ({ reduced: reduced(), sensitivity: reduced() ? 'minimal' : 'full', event, animate, onCleanup: (f) => cleanups.push(f) });\n const skip = (d: CoreEffect) => reduced() && (d.reduced ?? (SKIP.includes(d.kind) ? 'skip' : 'run')) === 'skip';\n const m: MotionInstance = {\n get paused() {\n return paused;\n },\n get rate() {\n return rate;\n },\n use(...ps) {\n for (const p of ps) {\n if (!p || plugins.has(p.name)) continue;\n plugins.add(p.name);\n for (const e of p.effects || []) if (!reg.has(e.name)) reg.set(e.name, e);\n p.install?.(m);\n }\n return m;\n },\n has: (n) => reg.has(n),\n effects: () => Array.from(reg.keys()).sort(),\n reduced,\n animate,\n async play(el, name, options = {}, event) {\n const d = reg.get(name);\n if (!d) throw new Error(`[motionary] unknown effect \"${name}\" — add its plugin with use()`);\n if (skip(d)) return;\n const out = d.run(el, { ...(d.defaults || {}), ...options }, ctx(event)) as any;\n if (out?.finished?.then) await out.finished.catch(() => undefined);\n else if (out?.then) await out;\n },\n bind(el, name, options = {}) {\n const { trigger = 'click', once, ...o } = options;\n const d = reg.get(name);\n if (!d) throw new Error(`[motionary] unknown effect \"${name}\"`);\n const stops: (() => void)[] = [];\n let current: (() => void)[] = [];\n const fire = (e?: Event) => {\n if (skip(d)) return;\n current.splice(0).forEach((f) => f());\n const out = d.run(el, { ...(d.defaults || {}), ...o }, ctx(e, current));\n if (typeof out === 'function') current.push(out as () => void);\n };\n const on = (type: string) => {\n const h = (e: Event) => fire(e);\n el.addEventListener(type, h, { once: !!once });\n stops.push(() => el.removeEventListener(type, h));\n };\n if (trigger === 'click') on('click');\n else if (trigger === 'hover') (on('pointerenter'), on('focusin'));\n else if (trigger === 'load' || trigger === 'loop') fire();\n else if (trigger === 'enter' && typeof IntersectionObserver !== 'undefined') {\n const io = new IntersectionObserver((es) =>\n es.forEach((en) => {\n if (!en.isIntersecting) return;\n fire();\n if (once !== false) io.disconnect();\n })\n );\n io.observe(el);\n stops.push(() => io.disconnect());\n }\n const off = () => {\n stops.splice(0).forEach((f) => f());\n current.splice(0).forEach((f) => f());\n offs.delete(off);\n };\n offs.add(off);\n return off;\n },\n reveal(targets, preset = 'fade-up', o = {}) {\n const els = list(targets);\n const kf = PRESETS[preset] || PRESETS.fade;\n const show = (el: HTMLElement, i: number) => {\n el.style.removeProperty('opacity');\n animate(el, reduced() ? PRESETS.fade : kf, { duration: o.duration ?? 600, delay: (o.delay ?? 0) + (o.stagger ?? 0) * i, easing: o.easing || EASE, fill: 'backwards' });\n };\n if (typeof IntersectionObserver === 'undefined') {\n els.forEach(show);\n return () => undefined;\n }\n els.forEach((el) => (el.style.opacity = '0'));\n let batch = 0;\n const io = new IntersectionObserver(\n (es) => {\n batch = 0;\n for (const en of es) {\n if (!en.isIntersecting) continue;\n show(en.target as HTMLElement, batch++);\n if (o.once !== false) io.unobserve(en.target);\n }\n },\n { threshold: o.threshold ?? 0.15 }\n );\n els.forEach((el) => io.observe(el));\n const off = () => {\n io.disconnect();\n els.forEach((el) => el.style.removeProperty('opacity'));\n offs.delete(off);\n };\n offs.add(off);\n return off;\n },\n pause() {\n paused = true;\n live.forEach((a) => a.pause());\n },\n resume() {\n paused = false;\n live.forEach((a) => a.play());\n },\n setRate(r) {\n if (!(r > 0)) return;\n rate = r;\n live.forEach((a) => (a.playbackRate = r));\n },\n destroy() {\n Array.from(offs).forEach((f) => f());\n live.forEach((a) => a.cancel());\n live.clear();\n },\n };\n m.use({ name: 'core/presets', effects: Object.entries(PRESETS).map(([name, frames]) => ({ name, kind: 'enter', defaults: { duration: 600, delay: 0, easing: EASE }, run: (el: HTMLElement, o: any, c: CoreEffectContext) => c.animate(el, c.reduced ? PRESETS.fade : frames, { duration: o.duration, delay: o.delay, easing: o.easing, fill: 'backwards' }) })) });\n return m;\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"core.js","sources":["../../src/components/core/attributes.ts","../../src/components/core/index.ts"],"sourcesContent":["/**\n * 10.2: declarative `data-motion` in `motionary/core` — no DSL package needed.\n *\n * ```html\n * <h1 data-motion=\"enter: fade-up 600ms\">Hello</h1>\n * <ul data-motion=\"enter: fade-up 500ms stagger 80ms\"> <li>…</li> <li>…</li> </ul>\n * <button data-motion=\"click: pop; hover: lift\">Buy</button>\n * ```\n * ```ts\n * import { createMotion, applyMotionAttributes } from 'motionary/core';\n * const stop = applyMotionAttributes(createMotion(), document, { observe: true });\n * ```\n *\n * Rule grammar (subset of the 9.0 DSL): `trigger: effect [duration] [delay <t>]\n * [stagger <t>] [ease <easing>] [once]`, rules separated by `;`. Triggers:\n * `enter`, `load`, `click`, `hover`, `loop`. Times: `600ms`, `0.6s`, `600`.\n * `stagger` animates the element's children. Effects are core presets or any\n * effect a plugin registered with `use()`.\n */\nimport { PRESETS, type MotionInstance, type Trigger } from './index';\n\nexport interface MotionAttrRule {\n trigger: Trigger;\n effect: string;\n duration?: number;\n delay?: number;\n stagger?: number;\n easing?: string;\n once?: boolean;\n}\n\nconst TRIGGERS = ['enter', 'load', 'click', 'hover', 'loop'];\nconst ms = (t: string): number => (t.endsWith('ms') ? parseFloat(t) : t.endsWith('s') ? parseFloat(t) * 1000 : parseFloat(t));\n\n/** Parse a `data-motion` value. Throws on an unknown trigger or a malformed rule. */\nexport function parseMotionAttr(value: string): MotionAttrRule[] {\n return value\n .split(';')\n .map((r) => r.trim())\n .filter(Boolean)\n .map((r) => {\n const m = /^([a-z]+)\\s*:\\s*(.+)$/i.exec(r);\n if (!m || !TRIGGERS.includes(m[1])) throw new Error(`[motionary] data-motion: bad rule \"${r}\" (use trigger: effect, trigger = ${TRIGGERS.join(' | ')})`);\n const toks = m[2].trim().split(/\\s+/);\n const rule: MotionAttrRule = { trigger: m[1] as Trigger, effect: toks.shift()! };\n for (let i = 0; i < toks.length; i++) {\n const t = toks[i];\n if (t === 'delay' || t === 'stagger') rule[t] = ms(toks[++i] || '0');\n else if (t === 'ease') rule.easing = toks[++i];\n else if (t === 'once') rule.once = true;\n else if (/^[\\d.]+(ms|s)?$/.test(t)) rule.duration = ms(t);\n else rule.easing = t;\n }\n return rule;\n });\n}\n\n/**\n * Wire every `[data-motion]` element under `root` to the motion instance.\n * `observe: true` also wires elements added later (MutationObserver).\n * Returns a function that unbinds everything. No-op without a DOM (SSR).\n */\nexport function applyMotionAttributes(m: MotionInstance, root: ParentNode | null = typeof document !== 'undefined' ? document : null, o: { attribute?: string; observe?: boolean } = {}): () => void {\n if (!root) return () => undefined;\n const attr = o.attribute || 'data-motion';\n const offs = new Map<Element, (() => void)[]>();\n const wire = (el: Element) => {\n if (offs.has(el)) return;\n const value = el.getAttribute(attr);\n if (!value) return;\n const list: (() => void)[] = [];\n for (const r of parseMotionAttr(value)) {\n const opts = { duration: r.duration, delay: r.delay, easing: r.easing };\n for (const k of Object.keys(opts) as (keyof typeof opts)[]) if (opts[k] === undefined) delete opts[k];\n if (r.trigger === 'enter' && r.effect in PRESETS) {\n list.push(m.reveal(r.stagger ? el.children : el, r.effect, { ...opts, stagger: r.stagger, once: r.once ?? true }));\n } else {\n if (!m.has(r.effect)) throw new Error(`[motionary] data-motion: unknown effect \"${r.effect}\" — register its plugin with createMotion().use(…)`);\n list.push(m.bind(el as HTMLElement, r.effect, { ...opts, trigger: r.trigger, once: r.once }));\n }\n }\n offs.set(el, list);\n el.setAttribute('data-motion-ready', '');\n };\n const scan = (n: ParentNode) => {\n if ((n as Element).getAttribute?.(attr)) wire(n as Element);\n n.querySelectorAll?.(`[${attr}]`).forEach(wire);\n };\n scan(root);\n let mo: MutationObserver | null = null;\n if (o.observe && typeof MutationObserver !== 'undefined') {\n mo = new MutationObserver((recs) => recs.forEach((r) => r.addedNodes.forEach((n) => n.nodeType === 1 && scan(n as Element))));\n mo.observe(root as Node, { childList: true, subtree: true });\n }\n return () => {\n mo?.disconnect();\n offs.forEach((l, el) => {\n l.forEach((f) => f());\n el.removeAttribute('data-motion-ready');\n });\n offs.clear();\n };\n}\n\n","/**\n * `motionary/core` (10.0) — the zero-dependency core, under 10 KB gzip.\n *\n * Everything else is a plugin: `createMotion().use(retro, cinema)` with the\n * packs from `motionary/plugins` (or your own `{ name, effects }`).\n *\n * - `createMotion({ reducedMotion, rate })` → an instance with `use()`,\n * `play(el, effect, options)`, `bind(el, effect, { trigger })`,\n * `reveal(targets, preset, { stagger, once, threshold })`, `animate()`,\n * `pause()` / `resume()` / `setRate()` for everything it started,\n * `effects()` and `destroy()`.\n * - `PRESETS` — entrance keyframes (fade, fade-up/down/left/right, scale,\n * zoom-in/out, blur-in, flip-up), registered as `enter` effects.\n * - `preferredBackend()` — `webgpu` (default when available) → `webgl2` →\n * `canvas`, the order GPU plugins use.\n *\n * Reduced motion is honoured everywhere (OS setting or `reducedMotion:\n * 'reduce'`): entrances fade, loops / backgrounds / cursors are skipped.\n */\nexport const VERSION = '10.0.0';\nexport { applyMotionAttributes, parseMotionAttr } from './attributes';\nexport type { MotionAttrRule } from './attributes';\n\nexport type CoreEffectKind = 'enter' | 'exit' | 'attention' | 'hover' | 'click' | 'loop' | 'background' | 'cursor' | 'text' | 'scroll' | (string & {});\nexport interface CoreEffectContext {\n reduced: boolean;\n sensitivity: 'full' | 'gentle' | 'minimal' | 'static';\n event?: Event;\n animate(el: Element, keyframes: Keyframe[] | PropertyIndexedKeyframes, options?: number | KeyframeAnimationOptions): Animation | null;\n onCleanup(fn: () => void): void;\n}\nexport interface CoreEffect {\n name: string;\n kind: CoreEffectKind;\n description?: string;\n defaults?: Record<string, unknown>;\n reduced?: 'skip' | 'run';\n run(el: HTMLElement, options: any, ctx: CoreEffectContext): unknown;\n}\nexport interface CorePlugin {\n name: string;\n effects?: CoreEffect[];\n install?(m: MotionInstance): void;\n}\nexport type Trigger = 'click' | 'hover' | 'enter' | 'load' | 'loop' | 'manual';\nexport interface RevealOptions {\n stagger?: number;\n delay?: number;\n duration?: number;\n easing?: string;\n once?: boolean;\n threshold?: number;\n}\nexport interface MotionInstance {\n readonly paused: boolean;\n readonly rate: number;\n use(...plugins: CorePlugin[]): MotionInstance;\n has(effect: string): boolean;\n effects(): string[];\n reduced(): boolean;\n animate(el: Element, keyframes: Keyframe[] | PropertyIndexedKeyframes, options?: number | KeyframeAnimationOptions): Animation | null;\n play(el: HTMLElement, effect: string, options?: Record<string, unknown>, event?: Event): Promise<void>;\n bind(el: HTMLElement, effect: string, options?: Record<string, unknown> & { trigger?: Trigger; once?: boolean }): () => void;\n reveal(targets: string | Element | ArrayLike<Element>, preset?: string, options?: RevealOptions): () => void;\n pause(): void;\n resume(): void;\n setRate(rate: number): void;\n destroy(): void;\n}\n\nconst T = (x: number, y: number, s = 1) => `translate(${x}px,${y}px) scale(${s})`;\n/** Entrance keyframes (10.0). */\nexport const PRESETS: Record<string, Keyframe[]> = {\n fade: [{ opacity: 0 }, { opacity: 1 }],\n 'fade-up': [{ opacity: 0, transform: T(0, 24) }, { opacity: 1, transform: 'none' }],\n 'fade-down': [{ opacity: 0, transform: T(0, -24) }, { opacity: 1, transform: 'none' }],\n 'fade-left': [{ opacity: 0, transform: T(24, 0) }, { opacity: 1, transform: 'none' }],\n 'fade-right': [{ opacity: 0, transform: T(-24, 0) }, { opacity: 1, transform: 'none' }],\n scale: [{ opacity: 0, transform: 'scale(.85)' }, { opacity: 1, transform: 'none' }],\n 'zoom-in': [{ opacity: 0, transform: 'scale(.6)' }, { opacity: 1, transform: 'none' }],\n 'zoom-out': [{ opacity: 0, transform: 'scale(1.2)' }, { opacity: 1, transform: 'none' }],\n 'blur-in': [{ opacity: 0, filter: 'blur(10px)' }, { opacity: 1, filter: 'none' }],\n 'flip-up': [{ opacity: 0, transform: 'perspective(600px) rotateX(-60deg)' }, { opacity: 1, transform: 'none' }],\n};\nconst EASE = 'cubic-bezier(0.22, 1, 0.36, 1)';\nconst SKIP: string[] = ['loop', 'background', 'cursor'];\n\n/** GPU backend order used by GPU plugins: WebGPU by default (10.0). */\nexport function preferredBackend(): 'webgpu' | 'webgl2' | 'canvas' {\n if (typeof navigator !== 'undefined' && (navigator as any).gpu) return 'webgpu';\n try {\n if (typeof document !== 'undefined' && document.createElement('canvas').getContext?.('webgl2')) return 'webgl2';\n } catch {\n /* no GL */\n }\n return 'canvas';\n}\n\nconst list = (t: string | Element | ArrayLike<Element>): HTMLElement[] =>\n typeof t === 'string' ? (typeof document === 'undefined' ? [] : Array.from(document.querySelectorAll<HTMLElement>(t))) : 'length' in (t as ArrayLike<Element>) && !(t instanceof Element) ? (Array.from(t as ArrayLike<Element>) as HTMLElement[]) : [t as HTMLElement];\n\n/** Create a Motionary core instance (10.0). */\nexport function createMotion(config: { reducedMotion?: 'user' | 'reduce'; rate?: number } = {}): MotionInstance {\n const reg = new Map<string, CoreEffect>();\n const plugins = new Set<string>();\n const live = new Set<Animation>();\n const offs = new Set<() => void>();\n let paused = false;\n let rate = config.rate && config.rate > 0 ? config.rate : 1;\n const reduced = () => config.reducedMotion === 'reduce' || (typeof matchMedia === 'function' && matchMedia('(prefers-reduced-motion: reduce)').matches);\n const animate: MotionInstance['animate'] = (el, kf, o) => {\n if (typeof (el as any).animate !== 'function') return null;\n const a = el.animate(kf, o);\n if (!a) return null;\n live.add(a);\n if (rate !== 1) a.playbackRate = rate;\n if (paused) a.pause();\n const done = () => live.delete(a);\n a.finished?.then(done, done);\n return a;\n };\n const ctx = (event?: Event, cleanups: (() => void)[] = []): CoreEffectContext => ({ reduced: reduced(), sensitivity: reduced() ? 'minimal' : 'full', event, animate, onCleanup: (f) => cleanups.push(f) });\n const skip = (d: CoreEffect) => reduced() && (d.reduced ?? (SKIP.includes(d.kind) ? 'skip' : 'run')) === 'skip';\n const m: MotionInstance = {\n get paused() {\n return paused;\n },\n get rate() {\n return rate;\n },\n use(...ps) {\n for (const p of ps) {\n if (!p || plugins.has(p.name)) continue;\n plugins.add(p.name);\n for (const e of p.effects || []) if (!reg.has(e.name)) reg.set(e.name, e);\n p.install?.(m);\n }\n return m;\n },\n has: (n) => reg.has(n),\n effects: () => Array.from(reg.keys()).sort(),\n reduced,\n animate,\n async play(el, name, options = {}, event) {\n const d = reg.get(name);\n if (!d) throw new Error(`[motionary] unknown effect \"${name}\" — add its plugin with use()`);\n if (skip(d)) return;\n const out = d.run(el, { ...(d.defaults || {}), ...options }, ctx(event)) as any;\n if (out?.finished?.then) await out.finished.catch(() => undefined);\n else if (out?.then) await out;\n },\n bind(el, name, options = {}) {\n const { trigger = 'click', once, ...o } = options;\n const d = reg.get(name);\n if (!d) throw new Error(`[motionary] unknown effect \"${name}\"`);\n const stops: (() => void)[] = [];\n let current: (() => void)[] = [];\n const fire = (e?: Event) => {\n if (skip(d)) return;\n current.splice(0).forEach((f) => f());\n const out = d.run(el, { ...(d.defaults || {}), ...o }, ctx(e, current));\n if (typeof out === 'function') current.push(out as () => void);\n };\n const on = (type: string) => {\n const h = (e: Event) => fire(e);\n el.addEventListener(type, h, { once: !!once });\n stops.push(() => el.removeEventListener(type, h));\n };\n if (trigger === 'click') on('click');\n else if (trigger === 'hover') (on('pointerenter'), on('focusin'));\n else if (trigger === 'load' || trigger === 'loop') fire();\n else if (trigger === 'enter' && typeof IntersectionObserver !== 'undefined') {\n const io = new IntersectionObserver((es) =>\n es.forEach((en) => {\n if (!en.isIntersecting) return;\n fire();\n if (once !== false) io.disconnect();\n })\n );\n io.observe(el);\n stops.push(() => io.disconnect());\n }\n const off = () => {\n stops.splice(0).forEach((f) => f());\n current.splice(0).forEach((f) => f());\n offs.delete(off);\n };\n offs.add(off);\n return off;\n },\n reveal(targets, preset = 'fade-up', o = {}) {\n const els = list(targets);\n const kf = PRESETS[preset] || PRESETS.fade;\n const show = (el: HTMLElement, i: number) => {\n el.style.removeProperty('opacity');\n animate(el, reduced() ? PRESETS.fade : kf, { duration: o.duration ?? 600, delay: (o.delay ?? 0) + (o.stagger ?? 0) * i, easing: o.easing || EASE, fill: 'backwards' });\n };\n if (typeof IntersectionObserver === 'undefined') {\n els.forEach(show);\n return () => undefined;\n }\n els.forEach((el) => (el.style.opacity = '0'));\n let batch = 0;\n const io = new IntersectionObserver(\n (es) => {\n batch = 0;\n for (const en of es) {\n if (!en.isIntersecting) continue;\n show(en.target as HTMLElement, batch++);\n if (o.once !== false) io.unobserve(en.target);\n }\n },\n { threshold: o.threshold ?? 0.15 }\n );\n els.forEach((el) => io.observe(el));\n const off = () => {\n io.disconnect();\n els.forEach((el) => el.style.removeProperty('opacity'));\n offs.delete(off);\n };\n offs.add(off);\n return off;\n },\n pause() {\n paused = true;\n live.forEach((a) => a.pause());\n },\n resume() {\n paused = false;\n live.forEach((a) => a.play());\n },\n setRate(r) {\n if (!(r > 0)) return;\n rate = r;\n live.forEach((a) => (a.playbackRate = r));\n },\n destroy() {\n Array.from(offs).forEach((f) => f());\n live.forEach((a) => a.cancel());\n live.clear();\n },\n };\n m.use({ name: 'core/presets', effects: Object.entries(PRESETS).map(([name, frames]) => ({ name, kind: 'enter', defaults: { duration: 600, delay: 0, easing: EASE }, run: (el: HTMLElement, o: any, c: CoreEffectContext) => c.animate(el, c.reduced ? PRESETS.fade : frames, { duration: o.duration, delay: o.delay, easing: o.easing, fill: 'backwards' }) })) });\n return m;\n}\n"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;AAkBG;AAaH,MAAM,QAAQ,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC;AAC5D,MAAM,EAAE,GAAG,CAAC,CAAS,MAAc,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;AAE7H;AACM,SAAU,eAAe,CAAC,KAAa,EAAA;AAC3C,IAAA,OAAO;SACJ,KAAK,CAAC,GAAG;SACT,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE;SACnB,MAAM,CAAC,OAAO;AACd,SAAA,GAAG,CAAC,CAAC,CAAC,KAAI;QACT,MAAM,CAAC,GAAG,wBAAwB,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1C,QAAA,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAAE,YAAA,MAAM,IAAI,KAAK,CAAC,CAAA,mCAAA,EAAsC,CAAC,CAAA,kCAAA,EAAqC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA,CAAA,CAAG,CAAC;AACxJ,QAAA,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC;AACrC,QAAA,MAAM,IAAI,GAAmB,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAY,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,EAAG,EAAE;AAChF,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACpC,YAAA,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;AACjB,YAAA,IAAI,CAAC,KAAK,OAAO,IAAI,CAAC,KAAK,SAAS;AAAE,gBAAA,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC;iBAC/D,IAAI,CAAC,KAAK,MAAM;gBAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;iBACzC,IAAI,CAAC,KAAK,MAAM;AAAE,gBAAA,IAAI,CAAC,IAAI,GAAG,IAAI;AAClC,iBAAA,IAAI,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC;AAAE,gBAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAC,CAAC;;AACpD,gBAAA,IAAI,CAAC,MAAM,GAAG,CAAC;QACtB;AACA,QAAA,OAAO,IAAI;AACb,IAAA,CAAC,CAAC;AACN;AAEA;;;;AAIG;AACG,SAAU,qBAAqB,CAAC,CAAiB,EAAE,IAAA,GAA0B,OAAO,QAAQ,KAAK,WAAW,GAAG,QAAQ,GAAG,IAAI,EAAE,IAA+C,EAAE,EAAA;AACrL,IAAA,IAAI,CAAC,IAAI;AAAE,QAAA,OAAO,MAAM,SAAS;AACjC,IAAA,MAAM,IAAI,GAAG,CAAC,CAAC,SAAS,IAAI,aAAa;AACzC,IAAA,MAAM,IAAI,GAAG,IAAI,GAAG,EAA2B;AAC/C,IAAA,MAAM,IAAI,GAAG,CAAC,EAAW,KAAI;AAC3B,QAAA,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YAAE;QAClB,MAAM,KAAK,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC;AACnC,QAAA,IAAI,CAAC,KAAK;YAAE;QACZ,MAAM,IAAI,GAAmB,EAAE;QAC/B,KAAK,MAAM,CAAC,IAAI,eAAe,CAAC,KAAK,CAAC,EAAE;YACtC,MAAM,IAAI,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;YACvE,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAA0B;AAAE,gBAAA,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,SAAS;AAAE,oBAAA,OAAO,IAAI,CAAC,CAAC,CAAC;AACrG,YAAA,IAAI,CAAC,CAAC,OAAO,KAAK,OAAO,IAAI,CAAC,CAAC,MAAM,IAAI,OAAO,EAAE;gBAChD,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,GAAG,EAAE,CAAC,QAAQ,GAAG,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC;YACpH;iBAAO;gBACL,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;oBAAE,MAAM,IAAI,KAAK,CAAC,CAAA,yCAAA,EAA4C,CAAC,CAAC,MAAM,CAAA,kDAAA,CAAoD,CAAC;AAC/I,gBAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YAC/F;QACF;AACA,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC;AAClB,QAAA,EAAE,CAAC,YAAY,CAAC,mBAAmB,EAAE,EAAE,CAAC;AAC1C,IAAA,CAAC;AACD,IAAA,MAAM,IAAI,GAAG,CAAC,CAAa,KAAI;AAC7B,QAAA,IAAK,CAAa,CAAC,YAAY,GAAG,IAAI,CAAC;YAAE,IAAI,CAAC,CAAY,CAAC;AAC3D,QAAA,CAAC,CAAC,gBAAgB,GAAG,CAAA,CAAA,EAAI,IAAI,CAAA,CAAA,CAAG,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;AACjD,IAAA,CAAC;IACD,IAAI,CAAC,IAAI,CAAC;IACV,IAAI,EAAE,GAA4B,IAAI;IACtC,IAAI,CAAC,CAAC,OAAO,IAAI,OAAO,gBAAgB,KAAK,WAAW,EAAE;AACxD,QAAA,EAAE,GAAG,IAAI,gBAAgB,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,KAAK,CAAC,IAAI,IAAI,CAAC,CAAY,CAAC,CAAC,CAAC,CAAC;AAC7H,QAAA,EAAE,CAAC,OAAO,CAAC,IAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC9D;AACA,IAAA,OAAO,MAAK;QACV,EAAE,EAAE,UAAU,EAAE;QAChB,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,KAAI;YACrB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;AACrB,YAAA,EAAE,CAAC,eAAe,CAAC,mBAAmB,CAAC;AACzC,QAAA,CAAC,CAAC;QACF,IAAI,CAAC,KAAK,EAAE;AACd,IAAA,CAAC;AACH;;ACtGA;;;;;;;;;;;;;;;;;;AAkBG;AACI,MAAM,OAAO,GAAG;AAmDvB,MAAM,CAAC,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,CAAC,GAAG,CAAC,KAAK,aAAa,CAAC,CAAA,GAAA,EAAM,CAAC,CAAA,UAAA,EAAa,CAAC,GAAG;AACjF;AACO,MAAM,OAAO,GAA+B;AACjD,IAAA,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;IACtC,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;IACnF,WAAW,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;IACtF,WAAW,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;IACrF,YAAY,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;IACvF,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;IACnF,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;IACtF,UAAU,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;IACxF,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IACjF,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,oCAAoC,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;;AAEjH,MAAM,IAAI,GAAG,gCAAgC;AAC7C,MAAM,IAAI,GAAa,CAAC,MAAM,EAAE,YAAY,EAAE,QAAQ,CAAC;AAEvD;SACgB,gBAAgB,GAAA;AAC9B,IAAA,IAAI,OAAO,SAAS,KAAK,WAAW,IAAK,SAAiB,CAAC,GAAG;AAAE,QAAA,OAAO,QAAQ;AAC/E,IAAA,IAAI;AACF,QAAA,IAAI,OAAO,QAAQ,KAAK,WAAW,IAAI,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,UAAU,GAAG,QAAQ,CAAC;AAAE,YAAA,OAAO,QAAQ;IACjH;AAAE,IAAA,MAAM;;IAER;AACA,IAAA,OAAO,QAAQ;AACjB;AAEA,MAAM,IAAI,GAAG,CAAC,CAAwC,KACpD,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,QAAQ,KAAK,WAAW,GAAG,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAc,CAAC,CAAC,CAAC,IAAI,QAAQ,IAAK,CAAwB,IAAI,EAAE,CAAC,YAAY,OAAO,CAAC,GAAI,KAAK,CAAC,IAAI,CAAC,CAAuB,CAAmB,GAAG,CAAC,CAAgB,CAAC;AAEzQ;AACM,SAAU,YAAY,CAAC,MAAA,GAA+D,EAAE,EAAA;AAC5F,IAAA,MAAM,GAAG,GAAG,IAAI,GAAG,EAAsB;AACzC,IAAA,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU;AACjC,IAAA,MAAM,IAAI,GAAG,IAAI,GAAG,EAAa;AACjC,IAAA,MAAM,IAAI,GAAG,IAAI,GAAG,EAAc;IAClC,IAAI,MAAM,GAAG,KAAK;IAClB,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,GAAG,CAAC,GAAG,MAAM,CAAC,IAAI,GAAG,CAAC;IAC3D,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,aAAa,KAAK,QAAQ,KAAK,OAAO,UAAU,KAAK,UAAU,IAAI,UAAU,CAAC,kCAAkC,CAAC,CAAC,OAAO,CAAC;IACvJ,MAAM,OAAO,GAA8B,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,KAAI;AACvD,QAAA,IAAI,OAAQ,EAAU,CAAC,OAAO,KAAK,UAAU;AAAE,YAAA,OAAO,IAAI;QAC1D,MAAM,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;AAC3B,QAAA,IAAI,CAAC,CAAC;AAAE,YAAA,OAAO,IAAI;AACnB,QAAA,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QACX,IAAI,IAAI,KAAK,CAAC;AAAE,YAAA,CAAC,CAAC,YAAY,GAAG,IAAI;AACrC,QAAA,IAAI,MAAM;YAAE,CAAC,CAAC,KAAK,EAAE;QACrB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QACjC,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC;AAC5B,QAAA,OAAO,CAAC;AACV,IAAA,CAAC;IACD,MAAM,GAAG,GAAG,CAAC,KAAa,EAAE,QAAA,GAA2B,EAAE,MAAyB,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,GAAG,SAAS,GAAG,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC,KAAK,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;AAC1M,IAAA,MAAM,IAAI,GAAG,CAAC,CAAa,KAAK,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,KAAK,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,MAAM,GAAG,KAAK,CAAC,MAAM,MAAM;AAC/G,IAAA,MAAM,CAAC,GAAmB;AACxB,QAAA,IAAI,MAAM,GAAA;AACR,YAAA,OAAO,MAAM;QACf,CAAC;AACD,QAAA,IAAI,IAAI,GAAA;AACN,YAAA,OAAO,IAAI;QACb,CAAC;QACD,GAAG,CAAC,GAAG,EAAE,EAAA;AACP,YAAA,KAAK,MAAM,CAAC,IAAI,EAAE,EAAE;gBAClB,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;oBAAE;AAC/B,gBAAA,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;AACnB,gBAAA,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,IAAI,EAAE;oBAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;wBAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;AACzE,gBAAA,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC;YAChB;AACA,YAAA,OAAO,CAAC;QACV,CAAC;QACD,GAAG,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AACtB,QAAA,OAAO,EAAE,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;QAC5C,OAAO;QACP,OAAO;QACP,MAAM,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,OAAO,GAAG,EAAE,EAAE,KAAK,EAAA;YACtC,MAAM,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC;AACvB,YAAA,IAAI,CAAC,CAAC;AAAE,gBAAA,MAAM,IAAI,KAAK,CAAC,+BAA+B,IAAI,CAAA,6BAAA,CAA+B,CAAC;YAC3F,IAAI,IAAI,CAAC,CAAC,CAAC;gBAAE;YACb,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC,EAAE,GAAG,OAAO,EAAE,EAAE,GAAG,CAAC,KAAK,CAAC,CAAQ;AAC/E,YAAA,IAAI,GAAG,EAAE,QAAQ,EAAE,IAAI;gBAAE,MAAM,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,SAAS,CAAC;iBAC7D,IAAI,GAAG,EAAE,IAAI;AAAE,gBAAA,MAAM,GAAG;QAC/B,CAAC;AACD,QAAA,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,OAAO,GAAG,EAAE,EAAA;AACzB,YAAA,MAAM,EAAE,OAAO,GAAG,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,OAAO;YACjD,MAAM,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC;AACvB,YAAA,IAAI,CAAC,CAAC;AAAE,gBAAA,MAAM,IAAI,KAAK,CAAC,+BAA+B,IAAI,CAAA,CAAA,CAAG,CAAC;YAC/D,MAAM,KAAK,GAAmB,EAAE;YAChC,IAAI,OAAO,GAAmB,EAAE;AAChC,YAAA,MAAM,IAAI,GAAG,CAAC,CAAS,KAAI;gBACzB,IAAI,IAAI,CAAC,CAAC,CAAC;oBAAE;AACb,gBAAA,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;AACrC,gBAAA,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;gBACvE,IAAI,OAAO,GAAG,KAAK,UAAU;AAAE,oBAAA,OAAO,CAAC,IAAI,CAAC,GAAiB,CAAC;AAChE,YAAA,CAAC;AACD,YAAA,MAAM,EAAE,GAAG,CAAC,IAAY,KAAI;gBAC1B,MAAM,CAAC,GAAG,CAAC,CAAQ,KAAK,IAAI,CAAC,CAAC,CAAC;AAC/B,gBAAA,EAAE,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;AAC9C,gBAAA,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,mBAAmB,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AACnD,YAAA,CAAC;YACD,IAAI,OAAO,KAAK,OAAO;gBAAE,EAAE,CAAC,OAAO,CAAC;iBAC/B,IAAI,OAAO,KAAK,OAAO;gBAAE,CAAC,EAAE,CAAC,cAAc,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC;AAC3D,iBAAA,IAAI,OAAO,KAAK,MAAM,IAAI,OAAO,KAAK,MAAM;AAAE,gBAAA,IAAI,EAAE;iBACpD,IAAI,OAAO,KAAK,OAAO,IAAI,OAAO,oBAAoB,KAAK,WAAW,EAAE;AAC3E,gBAAA,MAAM,EAAE,GAAG,IAAI,oBAAoB,CAAC,CAAC,EAAE,KACrC,EAAE,CAAC,OAAO,CAAC,CAAC,EAAE,KAAI;oBAChB,IAAI,CAAC,EAAE,CAAC,cAAc;wBAAE;AACxB,oBAAA,IAAI,EAAE;oBACN,IAAI,IAAI,KAAK,KAAK;wBAAE,EAAE,CAAC,UAAU,EAAE;gBACrC,CAAC,CAAC,CACH;AACD,gBAAA,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;gBACd,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,UAAU,EAAE,CAAC;YACnC;YACA,MAAM,GAAG,GAAG,MAAK;AACf,gBAAA,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;AACnC,gBAAA,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;AACrC,gBAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;AAClB,YAAA,CAAC;AACD,YAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;AACb,YAAA,OAAO,GAAG;QACZ,CAAC;QACD,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,EAAE,CAAC,GAAG,EAAE,EAAA;AACxC,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC;YACzB,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,IAAI;AAC1C,YAAA,MAAM,IAAI,GAAG,CAAC,EAAe,EAAE,CAAS,KAAI;AAC1C,gBAAA,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,SAAS,CAAC;gBAClC,OAAO,CAAC,EAAE,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,IAAI,GAAG,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,IAAI,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,IAAI,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;AACxK,YAAA,CAAC;AACD,YAAA,IAAI,OAAO,oBAAoB,KAAK,WAAW,EAAE;AAC/C,gBAAA,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC;AACjB,gBAAA,OAAO,MAAM,SAAS;YACxB;AACA,YAAA,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG,CAAC,CAAC;YAC7C,IAAI,KAAK,GAAG,CAAC;YACb,MAAM,EAAE,GAAG,IAAI,oBAAoB,CACjC,CAAC,EAAE,KAAI;gBACL,KAAK,GAAG,CAAC;AACT,gBAAA,KAAK,MAAM,EAAE,IAAI,EAAE,EAAE;oBACnB,IAAI,CAAC,EAAE,CAAC,cAAc;wBAAE;oBACxB,IAAI,CAAC,EAAE,CAAC,MAAqB,EAAE,KAAK,EAAE,CAAC;AACvC,oBAAA,IAAI,CAAC,CAAC,IAAI,KAAK,KAAK;AAAE,wBAAA,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,MAAM,CAAC;gBAC/C;YACF,CAAC,EACD,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,IAAI,IAAI,EAAE,CACnC;AACD,YAAA,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YACnC,MAAM,GAAG,GAAG,MAAK;gBACf,EAAE,CAAC,UAAU,EAAE;AACf,gBAAA,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;AACvD,gBAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;AAClB,YAAA,CAAC;AACD,YAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;AACb,YAAA,OAAO,GAAG;QACZ,CAAC;QACD,KAAK,GAAA;YACH,MAAM,GAAG,IAAI;AACb,YAAA,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC;QAChC,CAAC;QACD,MAAM,GAAA;YACJ,MAAM,GAAG,KAAK;AACd,YAAA,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;QAC/B,CAAC;AACD,QAAA,OAAO,CAAC,CAAC,EAAA;AACP,YAAA,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC;gBAAE;YACd,IAAI,GAAG,CAAC;AACR,YAAA,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;QAC3C,CAAC;QACD,OAAO,GAAA;AACL,YAAA,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;AACpC,YAAA,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC;YAC/B,IAAI,CAAC,KAAK,EAAE;QACd,CAAC;KACF;IACD,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC,EAAe,EAAE,CAAM,EAAE,CAAoB,KAAK,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,GAAG,OAAO,CAAC,IAAI,GAAG,MAAM,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;AAClW,IAAA,OAAO,CAAC;AACV;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"depth.cjs","sources":["../../src/components/depth/cube.ts","../../src/components/depth/core.ts","../../src/components/depth/depth-el.ts","../../src/components/depth/index.ts"],"sourcesContent":["import { defineElement, type UsaElement } from '../base';\nimport { createSpring, type SpringValue } from '../physics/spring';\nimport { gesture } from '../gesture/core';\nimport css from './depth.css?raw';\n\nconst FACES = ['front', 'right', 'back', 'left', 'top', 'bottom'] as const;\n/** Rotation (deg) that brings each face to the front. */\nconst ROT: Record<string, [number, number]> = { front: [0, 0], right: [0, -90], back: [0, -180], left: [0, 90], top: [-90, 0], bottom: [90, 0] };\n\n/**\n * `<usa-cube>` — a CSS 3D cube whose up-to-six element children are its faces\n * (front, right, back, left, top, bottom). Rotate with drag / swipe, arrow\n * keys, `autoplay` (ms) or `show(face | index)`; spring-driven.\n * Attributes: `size` (px, 200), `autoplay`, `perspective` (900).\n * `usa:change` (`{ index, face }`). Reduced motion: instant face switch.\n */\nexport interface UsaCubeElement extends UsaElement {\n readonly index: number;\n show(face: number | string): void;\n next(): void;\n prev(): void;\n}\n\nexport function defineCube(tag = 'usa-cube'): CustomElementConstructor | undefined {\n return defineElement(\n tag,\n (Base) =>\n class UsaCube extends Base {\n static get observedAttributes(): string[] {\n return ['size', 'autoplay'];\n }\n private _i = 0;\n private _rx!: SpringValue;\n private _ry!: SpringValue;\n private _base: [number, number] = [0, 0];\n\n get index(): number {\n return this._i;\n }\n\n private faces(): HTMLElement[] {\n return Array.from(this.children).filter((c) => c instanceof HTMLElement && !c.hasAttribute('slot')).slice(0, 6) as HTMLElement[];\n }\n\n private paint(): void {\n this.style.setProperty('--usa-cube-rx', `${this._rx.value}deg`);\n this.style.setProperty('--usa-cube-ry', `${this._ry.value}deg`);\n }\n\n show(face: number | string): void {\n const n = this.faces().length || 1;\n const i = typeof face === 'number' ? ((face % n) + n) % n : Math.max(0, FACES.indexOf(face as any));\n this._i = i;\n const [rx, ry] = ROT[FACES[i]];\n // take the shortest way round on Y\n const cur = this._ry.target;\n const ty = ry + Math.round((cur - ry) / 360) * 360;\n this._base = [rx, ty];\n if (this.reduced) {\n this._rx.jump(rx);\n this._ry.jump(ty);\n } else {\n this._rx.set(rx);\n this._ry.set(ty);\n }\n this.faces().forEach((f, j) => f.setAttribute('aria-hidden', String(j !== i)));\n this.emit('change', { index: i, face: FACES[i] });\n }\n\n next(): void {\n this.show(this._i + 1);\n }\n\n prev(): void {\n this.show(this._i - 1);\n }\n\n mount(): void {\n this.style.setProperty('--usa-cube-size', `${this.num('size', 200)}px`);\n this.style.setProperty('--usa-cube-perspective', `${this.num('perspective', 900)}px`);\n this.faces().forEach((f, j) => f.setAttribute('data-face', FACES[j]));\n if (!this.hasAttribute('tabindex')) this.tabIndex = 0;\n if (!this.hasAttribute('role')) this.setAttribute('role', 'region');\n if (!this.hasAttribute('aria-roledescription')) this.setAttribute('aria-roledescription', 'cube');\n this._rx = createSpring({ spring: 'gentle', onUpdate: () => this.paint() });\n this._ry = createSpring({ spring: 'gentle', onUpdate: () => this.paint() });\n this.show(this._i);\n this.paint();\n this.onCleanup(\n gesture(this, {\n onPan: ({ dx, dy, last }) => {\n if (this.reduced) return;\n if (!last) {\n this._ry.jump(this._base[1] + dx * 0.5);\n this._rx.jump(this._base[0] - dy * 0.5);\n return;\n }\n if (Math.abs(dx) > 40 && Math.abs(dx) >= Math.abs(dy)) return dx < 0 ? this.next() : this.prev();\n if (Math.abs(dy) > 40 && this.faces().length > 4) return this.show(dy < 0 ? 'bottom' : 'top');\n this.show(this._i);\n },\n })\n );\n this.listen(this, 'keydown', (e: KeyboardEvent) => {\n const k: Record<string, () => void> = { ArrowRight: () => this.next(), ArrowLeft: () => this.prev(), ArrowUp: () => this.show('bottom'), ArrowDown: () => this.show('top'), Home: () => this.show(0) };\n if (!k[e.key] || ((e.key === 'ArrowUp' || e.key === 'ArrowDown') && this.faces().length < 6)) return;\n e.preventDefault();\n k[e.key]();\n });\n const ms = this.num('autoplay', 0);\n if (ms > 0 && !this.reduced) {\n let paused = false;\n const id = setInterval(() => !paused && this.show((this._i + 1) % Math.min(4, this.faces().length || 1)), ms);\n this.listen(this, 'pointerenter', () => (paused = true));\n this.listen(this, 'pointerleave', () => (paused = false));\n this.listen(this, 'focusin', () => (paused = true));\n this.listen(this, 'focusout', () => (paused = false));\n this.onCleanup(() => clearInterval(id));\n }\n }\n\n unmount(): void {\n this._rx?.stop();\n this._ry?.stop();\n }\n },\n { id: 'depth', text: css }\n );\n}\n","import { clamp } from '../base';\n\nexport interface TiltReading {\n /** Left/right tilt, -1…1. */\n x: number;\n /** Front/back tilt, -1…1. */\n y: number;\n}\n\n/** Map a DeviceOrientation reading (beta/gamma degrees) to -1…1 tilt around a resting pose (pure). */\nexport function orientationToTilt(beta: number | null, gamma: number | null, range = 30, rest = 45): TiltReading {\n return {\n x: clamp((gamma ?? 0) / range, -1, 1),\n y: clamp(((beta ?? rest) - rest) / range, -1, 1),\n };\n}\n\n/** `true` when DeviceOrientation events exist. */\nexport const supportsOrientation = (): boolean => typeof window !== 'undefined' && 'DeviceOrientationEvent' in window;\n\n/**\n * Ask for motion-sensor permission where required (iOS 13+; must run inside\n * a user gesture). Resolves `true` when tilt events can be used.\n */\nexport async function requestOrientationPermission(): Promise<boolean> {\n if (!supportsOrientation()) return false;\n const D = (window as any).DeviceOrientationEvent;\n if (typeof D.requestPermission !== 'function') return true;\n try {\n return (await D.requestPermission()) === 'granted';\n } catch {\n return false;\n }\n}\n\n/**\n * Listen to device tilt (smoothed); falls back to nothing on desktops.\n * Returns a stop function.\n */\nexport function deviceTilt(cb: (t: TiltReading) => void, o: { range?: number; smooth?: number } = {}): () => void {\n if (!supportsOrientation()) return () => {};\n let cur: TiltReading = { x: 0, y: 0 };\n const k = 1 - clamp(o.smooth ?? 0.2, 0, 0.95);\n const on = (e: DeviceOrientationEvent) => {\n const t = orientationToTilt(e.beta, e.gamma, o.range ?? 30);\n cur = { x: cur.x + (t.x - cur.x) * k, y: cur.y + (t.y - cur.y) * k };\n cb(cur);\n };\n window.addEventListener('deviceorientation', on);\n return () => window.removeEventListener('deviceorientation', on);\n}\n","import { defineElement, raf, caf, clamp, type UsaElement } from '../base';\nimport { deviceTilt, requestOrientationPermission, supportsOrientation } from './core';\nimport css from './depth.css?raw';\n\n/**\n * `<usa-depth>` — depth parallax: children with `data-depth` (-1…1, 0 = the\n * screen plane) move and scale by depth as the pointer moves, the device\n * tilts (`orientation`) or the page scrolls (`scroll`).\n * Attributes: `source` (`pointer` default · `orientation` · `scroll` ·\n * space-separated mix), `strength` (px at depth 1, 40), `rotate` (max tilt\n * of the whole scene in deg, 0). `requestPermission()` for iOS motion.\n * Reduced motion: layers stay flat.\n */\nexport interface UsaDepthElement extends UsaElement {\n /** Current -1…1 input. */\n readonly tilt: { x: number; y: number };\n requestPermission(): Promise<boolean>;\n}\n\nexport function defineDepth(tag = 'usa-depth'): CustomElementConstructor | undefined {\n return defineElement(\n tag,\n (Base) =>\n class UsaDepth extends Base {\n static get observedAttributes(): string[] {\n return ['source', 'strength', 'rotate'];\n }\n private _t = { x: 0, y: 0 };\n private _id = 0;\n\n get tilt(): { x: number; y: number } {\n return { ...this._t };\n }\n\n requestPermission(): Promise<boolean> {\n return requestOrientationPermission().then((ok) => {\n if (ok) {\n this.changed('source');\n }\n return ok;\n });\n }\n\n private apply(): void {\n this._id = 0;\n const s = this.num('strength', 40);\n const r = this.num('rotate', 0);\n const { x, y } = this._t;\n this.style.setProperty('--usa-depth-x', x.toFixed(4));\n this.style.setProperty('--usa-depth-y', y.toFixed(4));\n if (r) this.style.setProperty('--usa-depth-rot', `rotateX(${(-y * r).toFixed(2)}deg) rotateY(${(x * r).toFixed(2)}deg)`);\n this.querySelectorAll<HTMLElement>('[data-depth]').forEach((el) => {\n const d = clamp(Number(el.dataset.depth) || 0, -1, 1);\n el.style.transform = `translate3d(${(x * d * s).toFixed(2)}px, ${(y * d * s).toFixed(2)}px, 0) scale(${(1 + d * 0.04).toFixed(4)})`;\n });\n }\n\n private set(x: number, y: number): void {\n this._t = { x: clamp(x, -1, 1), y: clamp(y, -1, 1) };\n if (!this._id) this._id = raf(() => this.apply());\n }\n\n mount(): void {\n if (this.reduced) return;\n const src = this.str('source', 'pointer').split(/\\s+/);\n if (src.includes('pointer')) {\n this.listen(this, 'pointermove', (e: PointerEvent) => {\n const r = this.getBoundingClientRect();\n this.set(((e.clientX - r.left) / (r.width || 1)) * 2 - 1, ((e.clientY - r.top) / (r.height || 1)) * 2 - 1);\n });\n this.listen(this, 'pointerleave', () => this.set(0, 0));\n }\n if (src.includes('orientation') && supportsOrientation()) this.onCleanup(deviceTilt((t) => this.set(t.x, t.y)));\n if (src.includes('scroll')) {\n const on = () => {\n const r = this.getBoundingClientRect();\n const vh = window.innerHeight || 1;\n this.set(this._t.x, clamp(((r.top + r.height / 2) / vh) * 2 - 1, -1, 1));\n };\n this.listen(window, 'scroll', on, { passive: true });\n on();\n }\n this.onCleanup(() => {\n caf(this._id);\n this._id = 0;\n });\n }\n\n unmount(): void {\n this._t = { x: 0, y: 0 };\n this.querySelectorAll<HTMLElement>('[data-depth]').forEach((el) => (el.style.transform = ''));\n }\n },\n { id: 'depth', text: css }\n );\n}\n","/**\n * motionary/components/depth — 3D (v3.5).\n * `<usa-cube>` (CSS 3D cube), `<usa-depth>` (layered depth parallax driven by\n * pointer, device orientation or scroll) and `deviceTilt()`. The 3D ring\n * carousel is `<usa-carousel-3d>` in `components/cards`.\n */\nimport { defineCube, type UsaCubeElement } from './cube';\nimport { defineDepth, type UsaDepthElement } from './depth-el';\n\nexport { defineCube, defineDepth };\nexport { deviceTilt, orientationToTilt, requestOrientationPermission, supportsOrientation } from './core';\nexport type { TiltReading } from './core';\nexport type { UsaCubeElement, UsaDepthElement };\n\n/** Register every component of this category under its default tag. */\nexport function defineDepthComponents(): void {\n defineCube();\n defineDepth();\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'usa-cube': UsaCubeElement;\n 'usa-depth': UsaDepthElement;\n }\n}\n"],"names":["defineElement","createSpring","gesture","clamp","raf","caf"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"depth.cjs","sources":["../../src/components/depth/cube.ts","../../src/components/depth/core.ts","../../src/components/depth/depth-el.ts","../../src/components/depth/index.ts"],"sourcesContent":["import { defineElement, type UsaElement } from '../base';\nimport { createSpring, type SpringValue } from '../physics/spring';\nimport { gesture } from '../gesture/core';\nimport css from './depth.css?raw';\n\nconst FACES = ['front', 'right', 'back', 'left', 'top', 'bottom'] as const;\n/** Rotation (deg) that brings each face to the front. */\nconst ROT: Record<string, [number, number]> = { front: [0, 0], right: [0, -90], back: [0, -180], left: [0, 90], top: [-90, 0], bottom: [90, 0] };\n\n/**\n * `<usa-cube>` — a CSS 3D cube whose up-to-six element children are its faces\n * (front, right, back, left, top, bottom). Rotate with drag / swipe, arrow\n * keys, `autoplay` (ms) or `show(face | index)`; spring-driven.\n * Attributes: `size` (px, 200), `autoplay`, `perspective` (900).\n * `usa:change` (`{ index, face }`). Reduced motion: instant face switch.\n */\nexport interface UsaCubeElement extends UsaElement {\n readonly index: number;\n show(face: number | string): void;\n next(): void;\n prev(): void;\n}\n\nexport function defineCube(tag = 'usa-cube'): CustomElementConstructor | undefined {\n return defineElement(\n tag,\n (Base) =>\n class UsaCube extends Base {\n static get observedAttributes(): string[] {\n return ['size', 'autoplay'];\n }\n private _i = 0;\n private _rx!: SpringValue;\n private _ry!: SpringValue;\n private _base: [number, number] = [0, 0];\n\n get index(): number {\n return this._i;\n }\n\n private faces(): HTMLElement[] {\n return Array.from(this.children).filter((c) => c instanceof HTMLElement && !c.hasAttribute('slot')).slice(0, 6) as HTMLElement[];\n }\n\n private paint(): void {\n this.style.setProperty('--usa-cube-rx', `${this._rx.value}deg`);\n this.style.setProperty('--usa-cube-ry', `${this._ry.value}deg`);\n }\n\n show(face: number | string): void {\n const n = this.faces().length || 1;\n const i = typeof face === 'number' ? ((face % n) + n) % n : Math.max(0, FACES.indexOf(face as any));\n this._i = i;\n const [rx, ry] = ROT[FACES[i]];\n // take the shortest way round on Y\n const cur = this._ry.target;\n const ty = ry + Math.round((cur - ry) / 360) * 360;\n this._base = [rx, ty];\n if (this.reduced) {\n this._rx.jump(rx);\n this._ry.jump(ty);\n } else {\n this._rx.set(rx);\n this._ry.set(ty);\n }\n this.faces().forEach((f, j) => f.setAttribute('aria-hidden', String(j !== i)));\n this.emit('change', { index: i, face: FACES[i] });\n }\n\n next(): void {\n this.show(this._i + 1);\n }\n\n prev(): void {\n this.show(this._i - 1);\n }\n\n mount(): void {\n this.style.setProperty('--usa-cube-size', `${this.num('size', 200)}px`);\n this.style.setProperty('--usa-cube-perspective', `${this.num('perspective', 900)}px`);\n this.faces().forEach((f, j) => f.setAttribute('data-face', FACES[j]));\n if (!this.hasAttribute('tabindex')) this.tabIndex = 0;\n if (!this.hasAttribute('role')) this.setAttribute('role', 'region');\n if (!this.hasAttribute('aria-roledescription')) this.setAttribute('aria-roledescription', 'cube');\n this._rx = createSpring({ spring: 'gentle', onUpdate: () => this.paint() });\n this._ry = createSpring({ spring: 'gentle', onUpdate: () => this.paint() });\n this.show(this._i);\n this.paint();\n this.onCleanup(\n gesture(this, {\n onPan: ({ dx, dy, last }) => {\n if (this.reduced) return;\n if (!last) {\n this._ry.jump(this._base[1] + dx * 0.5);\n this._rx.jump(this._base[0] - dy * 0.5);\n return;\n }\n if (Math.abs(dx) > 40 && Math.abs(dx) >= Math.abs(dy)) return dx < 0 ? this.next() : this.prev();\n if (Math.abs(dy) > 40 && this.faces().length > 4) return this.show(dy < 0 ? 'bottom' : 'top');\n this.show(this._i);\n },\n })\n );\n this.listen(this, 'keydown', (e: KeyboardEvent) => {\n const k: Record<string, () => void> = { ArrowRight: () => this.next(), ArrowLeft: () => this.prev(), ArrowUp: () => this.show('bottom'), ArrowDown: () => this.show('top'), Home: () => this.show(0) };\n if (!k[e.key] || ((e.key === 'ArrowUp' || e.key === 'ArrowDown') && this.faces().length < 6)) return;\n e.preventDefault();\n k[e.key]();\n });\n const ms = this.num('autoplay', 0);\n if (ms > 0 && !this.reduced) {\n let paused = false;\n const id = setInterval(() => !paused && this.show((this._i + 1) % Math.min(4, this.faces().length || 1)), ms);\n this.listen(this, 'pointerenter', () => (paused = true));\n this.listen(this, 'pointerleave', () => (paused = false));\n this.listen(this, 'focusin', () => (paused = true));\n this.listen(this, 'focusout', () => (paused = false));\n this.onCleanup(() => clearInterval(id));\n }\n }\n\n unmount(): void {\n this._rx?.stop();\n this._ry?.stop();\n }\n },\n { id: 'depth', text: css }\n );\n}\n","import { clamp } from '../base';\n\nexport interface TiltReading {\n /** Left/right tilt, -1…1. */\n x: number;\n /** Front/back tilt, -1…1. */\n y: number;\n}\n\n/** Map a DeviceOrientation reading (beta/gamma degrees) to -1…1 tilt around a resting pose (pure). */\nexport function orientationToTilt(beta: number | null, gamma: number | null, range = 30, rest = 45): TiltReading {\n return {\n x: clamp((gamma ?? 0) / range, -1, 1),\n y: clamp(((beta ?? rest) - rest) / range, -1, 1),\n };\n}\n\n/** `true` when DeviceOrientation events exist. */\nexport const supportsOrientation = (): boolean => typeof window !== 'undefined' && 'DeviceOrientationEvent' in window;\n\n/**\n * Ask for motion-sensor permission where required (iOS 13+; must run inside\n * a user gesture). Resolves `true` when tilt events can be used.\n */\nexport async function requestOrientationPermission(): Promise<boolean> {\n if (!supportsOrientation()) return false;\n const D = (window as any).DeviceOrientationEvent;\n if (typeof D.requestPermission !== 'function') return true;\n try {\n return (await D.requestPermission()) === 'granted';\n } catch {\n return false;\n }\n}\n\n/**\n * Listen to device tilt (smoothed); falls back to nothing on desktops.\n * Returns a stop function.\n */\nexport function deviceTilt(cb: (t: TiltReading) => void, o: { range?: number; smooth?: number } = {}): () => void {\n if (!supportsOrientation()) return () => {};\n let cur: TiltReading = { x: 0, y: 0 };\n const k = 1 - clamp(o.smooth ?? 0.2, 0, 0.95);\n const on = (e: DeviceOrientationEvent) => {\n const t = orientationToTilt(e.beta, e.gamma, o.range ?? 30);\n cur = { x: cur.x + (t.x - cur.x) * k, y: cur.y + (t.y - cur.y) * k };\n cb(cur);\n };\n window.addEventListener('deviceorientation', on);\n return () => window.removeEventListener('deviceorientation', on);\n}\n","import { defineElement, raf, caf, clamp, type UsaElement } from '../base';\nimport { deviceTilt, requestOrientationPermission, supportsOrientation } from './core';\nimport css from './depth.css?raw';\n\n/**\n * `<usa-depth>` — depth parallax: children with `data-depth` (-1…1, 0 = the\n * screen plane) move and scale by depth as the pointer moves, the device\n * tilts (`orientation`) or the page scrolls (`scroll`).\n * Attributes: `source` (`pointer` default · `orientation` · `scroll` ·\n * space-separated mix), `strength` (px at depth 1, 40), `rotate` (max tilt\n * of the whole scene in deg, 0). `requestPermission()` for iOS motion.\n * Reduced motion: layers stay flat.\n */\nexport interface UsaDepthElement extends UsaElement {\n /** Current -1…1 input. */\n readonly tilt: { x: number; y: number };\n requestPermission(): Promise<boolean>;\n}\n\nexport function defineDepth(tag = 'usa-depth'): CustomElementConstructor | undefined {\n return defineElement(\n tag,\n (Base) =>\n class UsaDepth extends Base {\n static get observedAttributes(): string[] {\n return ['source', 'strength', 'rotate'];\n }\n private _t = { x: 0, y: 0 };\n private _id = 0;\n\n get tilt(): { x: number; y: number } {\n return { ...this._t };\n }\n\n requestPermission(): Promise<boolean> {\n return requestOrientationPermission().then((ok) => {\n if (ok) {\n this.changed('source');\n }\n return ok;\n });\n }\n\n private apply(): void {\n this._id = 0;\n const s = this.num('strength', 40);\n const r = this.num('rotate', 0);\n const { x, y } = this._t;\n this.style.setProperty('--usa-depth-x', x.toFixed(4));\n this.style.setProperty('--usa-depth-y', y.toFixed(4));\n if (r) this.style.setProperty('--usa-depth-rot', `rotateX(${(-y * r).toFixed(2)}deg) rotateY(${(x * r).toFixed(2)}deg)`);\n this.querySelectorAll<HTMLElement>('[data-depth]').forEach((el) => {\n const d = clamp(Number(el.dataset.depth) || 0, -1, 1);\n el.style.transform = `translate3d(${(x * d * s).toFixed(2)}px, ${(y * d * s).toFixed(2)}px, 0) scale(${(1 + d * 0.04).toFixed(4)})`;\n });\n }\n\n private set(x: number, y: number): void {\n this._t = { x: clamp(x, -1, 1), y: clamp(y, -1, 1) };\n if (!this._id) this._id = raf(() => this.apply());\n }\n\n mount(): void {\n if (this.reduced) return;\n const src = this.str('source', 'pointer').split(/\\s+/);\n if (src.includes('pointer')) {\n this.listen(this, 'pointermove', (e: PointerEvent) => {\n const r = this.getBoundingClientRect();\n this.set(((e.clientX - r.left) / (r.width || 1)) * 2 - 1, ((e.clientY - r.top) / (r.height || 1)) * 2 - 1);\n });\n this.listen(this, 'pointerleave', () => this.set(0, 0));\n }\n if (src.includes('orientation') && supportsOrientation()) this.onCleanup(deviceTilt((t) => this.set(t.x, t.y)));\n if (src.includes('scroll')) {\n const on = () => {\n const r = this.getBoundingClientRect();\n const vh = window.innerHeight || 1;\n this.set(this._t.x, clamp(((r.top + r.height / 2) / vh) * 2 - 1, -1, 1));\n };\n this.listen(window, 'scroll', on, { passive: true });\n on();\n }\n this.onCleanup(() => {\n caf(this._id);\n this._id = 0;\n });\n }\n\n unmount(): void {\n this._t = { x: 0, y: 0 };\n this.querySelectorAll<HTMLElement>('[data-depth]').forEach((el) => (el.style.transform = ''));\n }\n },\n { id: 'depth', text: css }\n );\n}\n","/**\n * motionary/components/depth — 3D (v3.5).\n * `<usa-cube>` (CSS 3D cube), `<usa-depth>` (layered depth parallax driven by\n * pointer, device orientation or scroll) and `deviceTilt()`. The 3D ring\n * carousel is `<usa-carousel-3d>` in `components/cards`.\n */\nimport { defineCube, type UsaCubeElement } from './cube';\nimport { defineDepth, type UsaDepthElement } from './depth-el';\n\nexport { defineCube, defineDepth };\nexport { deviceTilt, orientationToTilt, requestOrientationPermission, supportsOrientation } from './core';\nexport type { TiltReading } from './core';\nexport type { UsaCubeElement, UsaDepthElement };\n\n/** Register every component of this category under its default tag. */\nexport function defineDepthComponents(): void {\n defineCube();\n defineDepth();\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'usa-cube': UsaCubeElement;\n 'usa-depth': UsaDepthElement;\n }\n}\n"],"names":["defineElement","createSpring","gesture","clamp","raf","caf"],"mappings":"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"}
|
package/dist/components/depth.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { c as createSpring } from '../chunks/spring-
|
|
3
|
-
import { g as gesture } from '../chunks/core-
|
|
1
|
+
import { f as defineElement, d as clamp, r as raf, b as caf } from '../chunks/base-BTev8qxg.js';
|
|
2
|
+
import { c as createSpring } from '../chunks/spring-BHuP55DR.js';
|
|
3
|
+
import { g as gesture } from '../chunks/core-KiM7MXjL.js';
|
|
4
4
|
|
|
5
5
|
var css = "usa-cube{--usa-cube-size:200px;display:block;width:var(--usa-cube-size);height:var(--usa-cube-size);perspective:var(--usa-cube-perspective,900px);touch-action:pan-y;user-select:none;-webkit-user-select:none;position:relative}usa-cube>[data-face]{position:absolute;inset:0;backface-visibility:hidden;transform:translateZ(calc(var(--usa-cube-size) / -2)) rotateX(var(--usa-cube-rx,0deg)) rotateY(var(--usa-cube-ry,0deg)) var(--usa-face) translateZ(calc(var(--usa-cube-size) / 2));transform-origin:50% 50%}usa-cube>[data-face=\"front\"]{--usa-face:rotateY(0deg)}usa-cube>[data-face=\"right\"]{--usa-face:rotateY(90deg)}usa-cube>[data-face=\"back\"]{--usa-face:rotateY(180deg)}usa-cube>[data-face=\"left\"]{--usa-face:rotateY(-90deg)}usa-cube>[data-face=\"top\"]{--usa-face:rotateX(90deg)}usa-cube>[data-face=\"bottom\"]{--usa-face:rotateX(-90deg)}usa-cube:focus-visible{outline:2px solid currentColor;outline-offset:6px}usa-depth{display:block;position:relative;perspective:1000px}usa-depth>*{transform:var(--usa-depth-rot,none);transform-style:preserve-3d}usa-depth [data-depth]{will-change:transform;transition:transform 0.12s linear}@media (prefers-reduced-motion:reduce){usa-depth [data-depth]{transform:none !important}}";
|
|
6
6
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"depth.js","sources":["../../src/components/depth/cube.ts","../../src/components/depth/core.ts","../../src/components/depth/depth-el.ts","../../src/components/depth/index.ts"],"sourcesContent":["import { defineElement, type UsaElement } from '../base';\nimport { createSpring, type SpringValue } from '../physics/spring';\nimport { gesture } from '../gesture/core';\nimport css from './depth.css?raw';\n\nconst FACES = ['front', 'right', 'back', 'left', 'top', 'bottom'] as const;\n/** Rotation (deg) that brings each face to the front. */\nconst ROT: Record<string, [number, number]> = { front: [0, 0], right: [0, -90], back: [0, -180], left: [0, 90], top: [-90, 0], bottom: [90, 0] };\n\n/**\n * `<usa-cube>` — a CSS 3D cube whose up-to-six element children are its faces\n * (front, right, back, left, top, bottom). Rotate with drag / swipe, arrow\n * keys, `autoplay` (ms) or `show(face | index)`; spring-driven.\n * Attributes: `size` (px, 200), `autoplay`, `perspective` (900).\n * `usa:change` (`{ index, face }`). Reduced motion: instant face switch.\n */\nexport interface UsaCubeElement extends UsaElement {\n readonly index: number;\n show(face: number | string): void;\n next(): void;\n prev(): void;\n}\n\nexport function defineCube(tag = 'usa-cube'): CustomElementConstructor | undefined {\n return defineElement(\n tag,\n (Base) =>\n class UsaCube extends Base {\n static get observedAttributes(): string[] {\n return ['size', 'autoplay'];\n }\n private _i = 0;\n private _rx!: SpringValue;\n private _ry!: SpringValue;\n private _base: [number, number] = [0, 0];\n\n get index(): number {\n return this._i;\n }\n\n private faces(): HTMLElement[] {\n return Array.from(this.children).filter((c) => c instanceof HTMLElement && !c.hasAttribute('slot')).slice(0, 6) as HTMLElement[];\n }\n\n private paint(): void {\n this.style.setProperty('--usa-cube-rx', `${this._rx.value}deg`);\n this.style.setProperty('--usa-cube-ry', `${this._ry.value}deg`);\n }\n\n show(face: number | string): void {\n const n = this.faces().length || 1;\n const i = typeof face === 'number' ? ((face % n) + n) % n : Math.max(0, FACES.indexOf(face as any));\n this._i = i;\n const [rx, ry] = ROT[FACES[i]];\n // take the shortest way round on Y\n const cur = this._ry.target;\n const ty = ry + Math.round((cur - ry) / 360) * 360;\n this._base = [rx, ty];\n if (this.reduced) {\n this._rx.jump(rx);\n this._ry.jump(ty);\n } else {\n this._rx.set(rx);\n this._ry.set(ty);\n }\n this.faces().forEach((f, j) => f.setAttribute('aria-hidden', String(j !== i)));\n this.emit('change', { index: i, face: FACES[i] });\n }\n\n next(): void {\n this.show(this._i + 1);\n }\n\n prev(): void {\n this.show(this._i - 1);\n }\n\n mount(): void {\n this.style.setProperty('--usa-cube-size', `${this.num('size', 200)}px`);\n this.style.setProperty('--usa-cube-perspective', `${this.num('perspective', 900)}px`);\n this.faces().forEach((f, j) => f.setAttribute('data-face', FACES[j]));\n if (!this.hasAttribute('tabindex')) this.tabIndex = 0;\n if (!this.hasAttribute('role')) this.setAttribute('role', 'region');\n if (!this.hasAttribute('aria-roledescription')) this.setAttribute('aria-roledescription', 'cube');\n this._rx = createSpring({ spring: 'gentle', onUpdate: () => this.paint() });\n this._ry = createSpring({ spring: 'gentle', onUpdate: () => this.paint() });\n this.show(this._i);\n this.paint();\n this.onCleanup(\n gesture(this, {\n onPan: ({ dx, dy, last }) => {\n if (this.reduced) return;\n if (!last) {\n this._ry.jump(this._base[1] + dx * 0.5);\n this._rx.jump(this._base[0] - dy * 0.5);\n return;\n }\n if (Math.abs(dx) > 40 && Math.abs(dx) >= Math.abs(dy)) return dx < 0 ? this.next() : this.prev();\n if (Math.abs(dy) > 40 && this.faces().length > 4) return this.show(dy < 0 ? 'bottom' : 'top');\n this.show(this._i);\n },\n })\n );\n this.listen(this, 'keydown', (e: KeyboardEvent) => {\n const k: Record<string, () => void> = { ArrowRight: () => this.next(), ArrowLeft: () => this.prev(), ArrowUp: () => this.show('bottom'), ArrowDown: () => this.show('top'), Home: () => this.show(0) };\n if (!k[e.key] || ((e.key === 'ArrowUp' || e.key === 'ArrowDown') && this.faces().length < 6)) return;\n e.preventDefault();\n k[e.key]();\n });\n const ms = this.num('autoplay', 0);\n if (ms > 0 && !this.reduced) {\n let paused = false;\n const id = setInterval(() => !paused && this.show((this._i + 1) % Math.min(4, this.faces().length || 1)), ms);\n this.listen(this, 'pointerenter', () => (paused = true));\n this.listen(this, 'pointerleave', () => (paused = false));\n this.listen(this, 'focusin', () => (paused = true));\n this.listen(this, 'focusout', () => (paused = false));\n this.onCleanup(() => clearInterval(id));\n }\n }\n\n unmount(): void {\n this._rx?.stop();\n this._ry?.stop();\n }\n },\n { id: 'depth', text: css }\n );\n}\n","import { clamp } from '../base';\n\nexport interface TiltReading {\n /** Left/right tilt, -1…1. */\n x: number;\n /** Front/back tilt, -1…1. */\n y: number;\n}\n\n/** Map a DeviceOrientation reading (beta/gamma degrees) to -1…1 tilt around a resting pose (pure). */\nexport function orientationToTilt(beta: number | null, gamma: number | null, range = 30, rest = 45): TiltReading {\n return {\n x: clamp((gamma ?? 0) / range, -1, 1),\n y: clamp(((beta ?? rest) - rest) / range, -1, 1),\n };\n}\n\n/** `true` when DeviceOrientation events exist. */\nexport const supportsOrientation = (): boolean => typeof window !== 'undefined' && 'DeviceOrientationEvent' in window;\n\n/**\n * Ask for motion-sensor permission where required (iOS 13+; must run inside\n * a user gesture). Resolves `true` when tilt events can be used.\n */\nexport async function requestOrientationPermission(): Promise<boolean> {\n if (!supportsOrientation()) return false;\n const D = (window as any).DeviceOrientationEvent;\n if (typeof D.requestPermission !== 'function') return true;\n try {\n return (await D.requestPermission()) === 'granted';\n } catch {\n return false;\n }\n}\n\n/**\n * Listen to device tilt (smoothed); falls back to nothing on desktops.\n * Returns a stop function.\n */\nexport function deviceTilt(cb: (t: TiltReading) => void, o: { range?: number; smooth?: number } = {}): () => void {\n if (!supportsOrientation()) return () => {};\n let cur: TiltReading = { x: 0, y: 0 };\n const k = 1 - clamp(o.smooth ?? 0.2, 0, 0.95);\n const on = (e: DeviceOrientationEvent) => {\n const t = orientationToTilt(e.beta, e.gamma, o.range ?? 30);\n cur = { x: cur.x + (t.x - cur.x) * k, y: cur.y + (t.y - cur.y) * k };\n cb(cur);\n };\n window.addEventListener('deviceorientation', on);\n return () => window.removeEventListener('deviceorientation', on);\n}\n","import { defineElement, raf, caf, clamp, type UsaElement } from '../base';\nimport { deviceTilt, requestOrientationPermission, supportsOrientation } from './core';\nimport css from './depth.css?raw';\n\n/**\n * `<usa-depth>` — depth parallax: children with `data-depth` (-1…1, 0 = the\n * screen plane) move and scale by depth as the pointer moves, the device\n * tilts (`orientation`) or the page scrolls (`scroll`).\n * Attributes: `source` (`pointer` default · `orientation` · `scroll` ·\n * space-separated mix), `strength` (px at depth 1, 40), `rotate` (max tilt\n * of the whole scene in deg, 0). `requestPermission()` for iOS motion.\n * Reduced motion: layers stay flat.\n */\nexport interface UsaDepthElement extends UsaElement {\n /** Current -1…1 input. */\n readonly tilt: { x: number; y: number };\n requestPermission(): Promise<boolean>;\n}\n\nexport function defineDepth(tag = 'usa-depth'): CustomElementConstructor | undefined {\n return defineElement(\n tag,\n (Base) =>\n class UsaDepth extends Base {\n static get observedAttributes(): string[] {\n return ['source', 'strength', 'rotate'];\n }\n private _t = { x: 0, y: 0 };\n private _id = 0;\n\n get tilt(): { x: number; y: number } {\n return { ...this._t };\n }\n\n requestPermission(): Promise<boolean> {\n return requestOrientationPermission().then((ok) => {\n if (ok) {\n this.changed('source');\n }\n return ok;\n });\n }\n\n private apply(): void {\n this._id = 0;\n const s = this.num('strength', 40);\n const r = this.num('rotate', 0);\n const { x, y } = this._t;\n this.style.setProperty('--usa-depth-x', x.toFixed(4));\n this.style.setProperty('--usa-depth-y', y.toFixed(4));\n if (r) this.style.setProperty('--usa-depth-rot', `rotateX(${(-y * r).toFixed(2)}deg) rotateY(${(x * r).toFixed(2)}deg)`);\n this.querySelectorAll<HTMLElement>('[data-depth]').forEach((el) => {\n const d = clamp(Number(el.dataset.depth) || 0, -1, 1);\n el.style.transform = `translate3d(${(x * d * s).toFixed(2)}px, ${(y * d * s).toFixed(2)}px, 0) scale(${(1 + d * 0.04).toFixed(4)})`;\n });\n }\n\n private set(x: number, y: number): void {\n this._t = { x: clamp(x, -1, 1), y: clamp(y, -1, 1) };\n if (!this._id) this._id = raf(() => this.apply());\n }\n\n mount(): void {\n if (this.reduced) return;\n const src = this.str('source', 'pointer').split(/\\s+/);\n if (src.includes('pointer')) {\n this.listen(this, 'pointermove', (e: PointerEvent) => {\n const r = this.getBoundingClientRect();\n this.set(((e.clientX - r.left) / (r.width || 1)) * 2 - 1, ((e.clientY - r.top) / (r.height || 1)) * 2 - 1);\n });\n this.listen(this, 'pointerleave', () => this.set(0, 0));\n }\n if (src.includes('orientation') && supportsOrientation()) this.onCleanup(deviceTilt((t) => this.set(t.x, t.y)));\n if (src.includes('scroll')) {\n const on = () => {\n const r = this.getBoundingClientRect();\n const vh = window.innerHeight || 1;\n this.set(this._t.x, clamp(((r.top + r.height / 2) / vh) * 2 - 1, -1, 1));\n };\n this.listen(window, 'scroll', on, { passive: true });\n on();\n }\n this.onCleanup(() => {\n caf(this._id);\n this._id = 0;\n });\n }\n\n unmount(): void {\n this._t = { x: 0, y: 0 };\n this.querySelectorAll<HTMLElement>('[data-depth]').forEach((el) => (el.style.transform = ''));\n }\n },\n { id: 'depth', text: css }\n );\n}\n","/**\n * motionary/components/depth — 3D (v3.5).\n * `<usa-cube>` (CSS 3D cube), `<usa-depth>` (layered depth parallax driven by\n * pointer, device orientation or scroll) and `deviceTilt()`. The 3D ring\n * carousel is `<usa-carousel-3d>` in `components/cards`.\n */\nimport { defineCube, type UsaCubeElement } from './cube';\nimport { defineDepth, type UsaDepthElement } from './depth-el';\n\nexport { defineCube, defineDepth };\nexport { deviceTilt, orientationToTilt, requestOrientationPermission, supportsOrientation } from './core';\nexport type { TiltReading } from './core';\nexport type { UsaCubeElement, UsaDepthElement };\n\n/** Register every component of this category under its default tag. */\nexport function defineDepthComponents(): void {\n defineCube();\n defineDepth();\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'usa-cube': UsaCubeElement;\n 'usa-depth': UsaDepthElement;\n }\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"depth.js","sources":["../../src/components/depth/cube.ts","../../src/components/depth/core.ts","../../src/components/depth/depth-el.ts","../../src/components/depth/index.ts"],"sourcesContent":["import { defineElement, type UsaElement } from '../base';\nimport { createSpring, type SpringValue } from '../physics/spring';\nimport { gesture } from '../gesture/core';\nimport css from './depth.css?raw';\n\nconst FACES = ['front', 'right', 'back', 'left', 'top', 'bottom'] as const;\n/** Rotation (deg) that brings each face to the front. */\nconst ROT: Record<string, [number, number]> = { front: [0, 0], right: [0, -90], back: [0, -180], left: [0, 90], top: [-90, 0], bottom: [90, 0] };\n\n/**\n * `<usa-cube>` — a CSS 3D cube whose up-to-six element children are its faces\n * (front, right, back, left, top, bottom). Rotate with drag / swipe, arrow\n * keys, `autoplay` (ms) or `show(face | index)`; spring-driven.\n * Attributes: `size` (px, 200), `autoplay`, `perspective` (900).\n * `usa:change` (`{ index, face }`). Reduced motion: instant face switch.\n */\nexport interface UsaCubeElement extends UsaElement {\n readonly index: number;\n show(face: number | string): void;\n next(): void;\n prev(): void;\n}\n\nexport function defineCube(tag = 'usa-cube'): CustomElementConstructor | undefined {\n return defineElement(\n tag,\n (Base) =>\n class UsaCube extends Base {\n static get observedAttributes(): string[] {\n return ['size', 'autoplay'];\n }\n private _i = 0;\n private _rx!: SpringValue;\n private _ry!: SpringValue;\n private _base: [number, number] = [0, 0];\n\n get index(): number {\n return this._i;\n }\n\n private faces(): HTMLElement[] {\n return Array.from(this.children).filter((c) => c instanceof HTMLElement && !c.hasAttribute('slot')).slice(0, 6) as HTMLElement[];\n }\n\n private paint(): void {\n this.style.setProperty('--usa-cube-rx', `${this._rx.value}deg`);\n this.style.setProperty('--usa-cube-ry', `${this._ry.value}deg`);\n }\n\n show(face: number | string): void {\n const n = this.faces().length || 1;\n const i = typeof face === 'number' ? ((face % n) + n) % n : Math.max(0, FACES.indexOf(face as any));\n this._i = i;\n const [rx, ry] = ROT[FACES[i]];\n // take the shortest way round on Y\n const cur = this._ry.target;\n const ty = ry + Math.round((cur - ry) / 360) * 360;\n this._base = [rx, ty];\n if (this.reduced) {\n this._rx.jump(rx);\n this._ry.jump(ty);\n } else {\n this._rx.set(rx);\n this._ry.set(ty);\n }\n this.faces().forEach((f, j) => f.setAttribute('aria-hidden', String(j !== i)));\n this.emit('change', { index: i, face: FACES[i] });\n }\n\n next(): void {\n this.show(this._i + 1);\n }\n\n prev(): void {\n this.show(this._i - 1);\n }\n\n mount(): void {\n this.style.setProperty('--usa-cube-size', `${this.num('size', 200)}px`);\n this.style.setProperty('--usa-cube-perspective', `${this.num('perspective', 900)}px`);\n this.faces().forEach((f, j) => f.setAttribute('data-face', FACES[j]));\n if (!this.hasAttribute('tabindex')) this.tabIndex = 0;\n if (!this.hasAttribute('role')) this.setAttribute('role', 'region');\n if (!this.hasAttribute('aria-roledescription')) this.setAttribute('aria-roledescription', 'cube');\n this._rx = createSpring({ spring: 'gentle', onUpdate: () => this.paint() });\n this._ry = createSpring({ spring: 'gentle', onUpdate: () => this.paint() });\n this.show(this._i);\n this.paint();\n this.onCleanup(\n gesture(this, {\n onPan: ({ dx, dy, last }) => {\n if (this.reduced) return;\n if (!last) {\n this._ry.jump(this._base[1] + dx * 0.5);\n this._rx.jump(this._base[0] - dy * 0.5);\n return;\n }\n if (Math.abs(dx) > 40 && Math.abs(dx) >= Math.abs(dy)) return dx < 0 ? this.next() : this.prev();\n if (Math.abs(dy) > 40 && this.faces().length > 4) return this.show(dy < 0 ? 'bottom' : 'top');\n this.show(this._i);\n },\n })\n );\n this.listen(this, 'keydown', (e: KeyboardEvent) => {\n const k: Record<string, () => void> = { ArrowRight: () => this.next(), ArrowLeft: () => this.prev(), ArrowUp: () => this.show('bottom'), ArrowDown: () => this.show('top'), Home: () => this.show(0) };\n if (!k[e.key] || ((e.key === 'ArrowUp' || e.key === 'ArrowDown') && this.faces().length < 6)) return;\n e.preventDefault();\n k[e.key]();\n });\n const ms = this.num('autoplay', 0);\n if (ms > 0 && !this.reduced) {\n let paused = false;\n const id = setInterval(() => !paused && this.show((this._i + 1) % Math.min(4, this.faces().length || 1)), ms);\n this.listen(this, 'pointerenter', () => (paused = true));\n this.listen(this, 'pointerleave', () => (paused = false));\n this.listen(this, 'focusin', () => (paused = true));\n this.listen(this, 'focusout', () => (paused = false));\n this.onCleanup(() => clearInterval(id));\n }\n }\n\n unmount(): void {\n this._rx?.stop();\n this._ry?.stop();\n }\n },\n { id: 'depth', text: css }\n );\n}\n","import { clamp } from '../base';\n\nexport interface TiltReading {\n /** Left/right tilt, -1…1. */\n x: number;\n /** Front/back tilt, -1…1. */\n y: number;\n}\n\n/** Map a DeviceOrientation reading (beta/gamma degrees) to -1…1 tilt around a resting pose (pure). */\nexport function orientationToTilt(beta: number | null, gamma: number | null, range = 30, rest = 45): TiltReading {\n return {\n x: clamp((gamma ?? 0) / range, -1, 1),\n y: clamp(((beta ?? rest) - rest) / range, -1, 1),\n };\n}\n\n/** `true` when DeviceOrientation events exist. */\nexport const supportsOrientation = (): boolean => typeof window !== 'undefined' && 'DeviceOrientationEvent' in window;\n\n/**\n * Ask for motion-sensor permission where required (iOS 13+; must run inside\n * a user gesture). Resolves `true` when tilt events can be used.\n */\nexport async function requestOrientationPermission(): Promise<boolean> {\n if (!supportsOrientation()) return false;\n const D = (window as any).DeviceOrientationEvent;\n if (typeof D.requestPermission !== 'function') return true;\n try {\n return (await D.requestPermission()) === 'granted';\n } catch {\n return false;\n }\n}\n\n/**\n * Listen to device tilt (smoothed); falls back to nothing on desktops.\n * Returns a stop function.\n */\nexport function deviceTilt(cb: (t: TiltReading) => void, o: { range?: number; smooth?: number } = {}): () => void {\n if (!supportsOrientation()) return () => {};\n let cur: TiltReading = { x: 0, y: 0 };\n const k = 1 - clamp(o.smooth ?? 0.2, 0, 0.95);\n const on = (e: DeviceOrientationEvent) => {\n const t = orientationToTilt(e.beta, e.gamma, o.range ?? 30);\n cur = { x: cur.x + (t.x - cur.x) * k, y: cur.y + (t.y - cur.y) * k };\n cb(cur);\n };\n window.addEventListener('deviceorientation', on);\n return () => window.removeEventListener('deviceorientation', on);\n}\n","import { defineElement, raf, caf, clamp, type UsaElement } from '../base';\nimport { deviceTilt, requestOrientationPermission, supportsOrientation } from './core';\nimport css from './depth.css?raw';\n\n/**\n * `<usa-depth>` — depth parallax: children with `data-depth` (-1…1, 0 = the\n * screen plane) move and scale by depth as the pointer moves, the device\n * tilts (`orientation`) or the page scrolls (`scroll`).\n * Attributes: `source` (`pointer` default · `orientation` · `scroll` ·\n * space-separated mix), `strength` (px at depth 1, 40), `rotate` (max tilt\n * of the whole scene in deg, 0). `requestPermission()` for iOS motion.\n * Reduced motion: layers stay flat.\n */\nexport interface UsaDepthElement extends UsaElement {\n /** Current -1…1 input. */\n readonly tilt: { x: number; y: number };\n requestPermission(): Promise<boolean>;\n}\n\nexport function defineDepth(tag = 'usa-depth'): CustomElementConstructor | undefined {\n return defineElement(\n tag,\n (Base) =>\n class UsaDepth extends Base {\n static get observedAttributes(): string[] {\n return ['source', 'strength', 'rotate'];\n }\n private _t = { x: 0, y: 0 };\n private _id = 0;\n\n get tilt(): { x: number; y: number } {\n return { ...this._t };\n }\n\n requestPermission(): Promise<boolean> {\n return requestOrientationPermission().then((ok) => {\n if (ok) {\n this.changed('source');\n }\n return ok;\n });\n }\n\n private apply(): void {\n this._id = 0;\n const s = this.num('strength', 40);\n const r = this.num('rotate', 0);\n const { x, y } = this._t;\n this.style.setProperty('--usa-depth-x', x.toFixed(4));\n this.style.setProperty('--usa-depth-y', y.toFixed(4));\n if (r) this.style.setProperty('--usa-depth-rot', `rotateX(${(-y * r).toFixed(2)}deg) rotateY(${(x * r).toFixed(2)}deg)`);\n this.querySelectorAll<HTMLElement>('[data-depth]').forEach((el) => {\n const d = clamp(Number(el.dataset.depth) || 0, -1, 1);\n el.style.transform = `translate3d(${(x * d * s).toFixed(2)}px, ${(y * d * s).toFixed(2)}px, 0) scale(${(1 + d * 0.04).toFixed(4)})`;\n });\n }\n\n private set(x: number, y: number): void {\n this._t = { x: clamp(x, -1, 1), y: clamp(y, -1, 1) };\n if (!this._id) this._id = raf(() => this.apply());\n }\n\n mount(): void {\n if (this.reduced) return;\n const src = this.str('source', 'pointer').split(/\\s+/);\n if (src.includes('pointer')) {\n this.listen(this, 'pointermove', (e: PointerEvent) => {\n const r = this.getBoundingClientRect();\n this.set(((e.clientX - r.left) / (r.width || 1)) * 2 - 1, ((e.clientY - r.top) / (r.height || 1)) * 2 - 1);\n });\n this.listen(this, 'pointerleave', () => this.set(0, 0));\n }\n if (src.includes('orientation') && supportsOrientation()) this.onCleanup(deviceTilt((t) => this.set(t.x, t.y)));\n if (src.includes('scroll')) {\n const on = () => {\n const r = this.getBoundingClientRect();\n const vh = window.innerHeight || 1;\n this.set(this._t.x, clamp(((r.top + r.height / 2) / vh) * 2 - 1, -1, 1));\n };\n this.listen(window, 'scroll', on, { passive: true });\n on();\n }\n this.onCleanup(() => {\n caf(this._id);\n this._id = 0;\n });\n }\n\n unmount(): void {\n this._t = { x: 0, y: 0 };\n this.querySelectorAll<HTMLElement>('[data-depth]').forEach((el) => (el.style.transform = ''));\n }\n },\n { id: 'depth', text: css }\n );\n}\n","/**\n * motionary/components/depth — 3D (v3.5).\n * `<usa-cube>` (CSS 3D cube), `<usa-depth>` (layered depth parallax driven by\n * pointer, device orientation or scroll) and `deviceTilt()`. The 3D ring\n * carousel is `<usa-carousel-3d>` in `components/cards`.\n */\nimport { defineCube, type UsaCubeElement } from './cube';\nimport { defineDepth, type UsaDepthElement } from './depth-el';\n\nexport { defineCube, defineDepth };\nexport { deviceTilt, orientationToTilt, requestOrientationPermission, supportsOrientation } from './core';\nexport type { TiltReading } from './core';\nexport type { UsaCubeElement, UsaDepthElement };\n\n/** Register every component of this category under its default tag. */\nexport function defineDepthComponents(): void {\n defineCube();\n defineDepth();\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'usa-cube': UsaCubeElement;\n 'usa-depth': UsaDepthElement;\n }\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"design.cjs","sources":["../../src/components/design/index.ts"],"sourcesContent":["/**\n * `motionary/design` (= `motionary/components/design`, 9.7) — design-tool\n * integration.\n *\n * - `figmaToMotion(reactions)` — Figma prototype reactions (plugin API\n * `node.reactions`: ON_CLICK / ON_HOVER / ON_PRESS / AFTER_TIMEOUT with\n * DISSOLVE / SMART_ANIMATE / MOVE_IN / SLIDE_IN / PUSH / SCROLL_ANIMATE\n * transitions, easing and duration) → a Motionary DSL string for\n * `data-motion`. The `figma-plugin/` scaffold in the repo uses it.\n * - `framerComponent(desc, { name })` — a Framer code component (React,\n * property controls for every attribute) from the 8.9 component JSON.\n * - `motionToCss(rules, selector)` — CSS `@keyframes` + rules for the\n * entrance rules of a motion string (timeline presets), for hand-off to\n * teams without JS.\n * - `easingPoints(easing)` — the cubic-bezier control points of a CSS\n * easing (named or `cubic-bezier(…)`), for spec sheets.\n */\nimport { parseMotion, serializeMotion, type MotionRule, type ComponentJSON } from '../dsl/index';\nimport { TIMELINE_PRESETS } from '../timeline/core';\n\nconst EASE: Record<string, [number, number, number, number]> = {\n linear: [0, 0, 1, 1],\n ease: [0.25, 0.1, 0.25, 1],\n 'ease-in': [0.42, 0, 1, 1],\n 'ease-out': [0, 0, 0.58, 1],\n 'ease-in-out': [0.42, 0, 0.58, 1],\n};\n/** Control points [x1, y1, x2, y2] of a CSS easing (unknown → ease) (9.7). */\nexport function easingPoints(easing = 'ease'): [number, number, number, number] {\n const m = easing.match(/cubic-bezier\\(\\s*([-\\d.]+)\\s*,\\s*([-\\d.]+)\\s*,\\s*([-\\d.]+)\\s*,\\s*([-\\d.]+)\\s*\\)/);\n if (m) return [Number(m[1]), Number(m[2]), Number(m[3]), Number(m[4])];\n return EASE[easing] || EASE.ease;\n}\n\nconst FIGMA_EASE: Record<string, string> = { LINEAR: 'linear', EASE_IN: 'ease-in', EASE_OUT: 'ease-out', EASE_IN_AND_OUT: 'ease-in-out', EASE_IN_BACK: 'cubic-bezier(0.36, 0, 0.66, -0.56)', EASE_OUT_BACK: 'spring', EASE_IN_AND_OUT_BACK: 'cubic-bezier(0.68, -0.6, 0.32, 1.6)', GENTLE: 'smooth', QUICK: 'ease-out', BOUNCY: 'spring', SLOW: 'ease-in-out' };\nconst FIGMA_TRIGGER: Record<string, string> = { ON_CLICK: 'click', ON_PRESS: 'click', ON_HOVER: 'hover', MOUSE_ENTER: 'hover', AFTER_TIMEOUT: 'load', ON_DRAG: 'click' };\nconst dirFx = (d: string | undefined, base: 'fade' | 'slide') => {\n const m: Record<string, string> = { LEFT: 'left', RIGHT: 'right', TOP: 'down', BOTTOM: 'up' };\n return base === 'fade' ? `fade-${m[d || 'BOTTOM'] || 'up'}` : `slide-${m[d || 'BOTTOM'] || 'up'}`;\n};\n/** Figma prototype reactions → a Motionary DSL string (unsupported reactions are skipped) (9.7). */\nexport function figmaToMotion(reactions: any[]): string {\n const rules: MotionRule[] = [];\n for (const r of reactions || []) {\n const trig = FIGMA_TRIGGER[r?.trigger?.type];\n const tr = r?.action?.transition ?? r?.actions?.[0]?.transition;\n if (!trig || !tr) continue;\n const effect = tr.type === 'DISSOLVE' ? 'fade' : tr.type === 'SMART_ANIMATE' || tr.type === 'SCROLL_ANIMATE' ? 'scale' : tr.type === 'MOVE_IN' || tr.type === 'PUSH' ? dirFx(tr.direction, 'fade') : tr.type === 'SLIDE_IN' ? dirFx(tr.direction, 'fade') : 'fade';\n const rule: MotionRule = { trigger: (r.trigger.type === 'AFTER_TIMEOUT' ? 'load' : trig) as MotionRule['trigger'], effect, options: {} };\n if (typeof tr.duration === 'number') rule.duration = Math.round(tr.duration * 1000);\n const e = tr.easing?.type ? FIGMA_EASE[tr.easing.type] : undefined;\n if (e) rule.easing = e === 'spring' ? 'cubic-bezier(0.34, 1.56, 0.64, 1)' : e === 'smooth' ? 'cubic-bezier(0.22, 1, 0.36, 1)' : e;\n if (tr.easing?.easingFunctionCubicBezier) {\n const b = tr.easing.easingFunctionCubicBezier;\n rule.easing = `cubic-bezier(${b.x1}, ${b.y1}, ${b.x2}, ${b.y2})`;\n }\n if (r.trigger.type === 'AFTER_TIMEOUT' && typeof r.trigger.timeout === 'number') rule.delay = Math.round(r.trigger.timeout * 1000);\n rules.push(rule);\n }\n return serializeMotion(rules);\n}\n\nconst pascal = (s: string) => s.replace(/(^|[-_\\s]+)([a-z0-9])/gi, (_, __, c) => c.toUpperCase()).replace(/[^A-Za-z0-9]/g, '') || 'Component';\n/** A Framer code component (TSX source) for a component description (9.7). */\nexport function framerComponent(desc: ComponentJSON | string, opts: { name?: string } = {}): string {\n const d: ComponentJSON = typeof desc === 'string' ? JSON.parse(desc) : desc;\n const name = pascal(opts.name || d.tag.replace(/^usa-/, ''));\n const attrs = Object.entries(d.attrs || {}).filter(([k]) => /^[a-z][\\w-]*$/.test(k));\n const prop = (k: string) => k.replace(/-([a-z])/g, (_, c) => c.toUpperCase());\n const controls = attrs.map(([k, v]) => ` ${prop(k)}: { type: ${!isNaN(Number(v)) && v !== '' ? 'ControlType.Number' : v === '' ? 'ControlType.Boolean' : 'ControlType.String'}, defaultValue: ${!isNaN(Number(v)) && v !== '' ? Number(v) : v === '' ? 'true' : JSON.stringify(v)} },`).join('\\n');\n const jsxAttrs = attrs.map(([k]) => ` ${k === 'class' ? 'className' : k}={${v(prop(k))}}`).join('');\n function v(p: string) {\n return `props.${p}`;\n }\n const kids = (d.children || []).map((c) => (typeof c === 'string' ? c.replace(/[{}<>]/g, '') : '')).join(' ').trim();\n return `// Framer code component generated by motionary/design (9.7)\\nimport { useEffect } from \"react\"\\nimport { addPropertyControls, ControlType } from \"framer\"\\nimport { defineWidgets } from \"https://cdn.jsdelivr.net/npm/motionary/dist/components/widgets.js\"\\n\\nexport default function ${name}(props) {\\n useEffect(() => defineWidgets(), [])\\n return <${d.tag}${jsxAttrs}>${kids}</${d.tag}>\\n}\\n\\naddPropertyControls(${name}, {\\n${controls}\\n})\\n`;\n}\n\n/** CSS `@keyframes` + rules for the entrance (`enter` / `load`) rules of a motion string (9.7). */\nexport function motionToCss(rules: string | MotionRule[], selector = '.motion'): string {\n const rs = typeof rules === 'string' ? parseMotion(rules).rules : rules;\n const out: string[] = [];\n const done = new Set<string>();\n for (const r of rs) {\n if (r.trigger !== 'enter' && r.trigger !== 'load') continue;\n const kf = TIMELINE_PRESETS[r.effect];\n if (!kf) continue;\n const name = `usa-${r.effect}`;\n if (!done.has(name)) {\n done.add(name);\n const steps = kf.map((f, i) => ` ${Math.round((f.offset != null ? Number(f.offset) : i / Math.max(1, kf.length - 1)) * 100)}% { ${Object.entries(f).filter(([k]) => k !== 'offset' && k !== 'easing').map(([k, val]) => `${k.replace(/[A-Z]/g, (c) => `-${c.toLowerCase()}`)}: ${val}`).join('; ')} }`);\n out.push(`@keyframes ${name} {\\n${steps.join('\\n')}\\n}`);\n }\n const target = r.stagger != null ? `${selector} > *` : selector;\n out.push(`${target} { animation: ${name} ${r.duration ?? 600}ms ${r.easing || 'cubic-bezier(0.22, 1, 0.36, 1)'} ${r.delay ?? 0}ms both; }`);\n if (r.stagger != null) for (let i = 2; i <= 8; i++) out.push(`${selector} > :nth-child(${i}) { animation-delay: ${(r.delay ?? 0) + r.stagger * (i - 1)}ms; }`);\n }\n out.push(`@media (prefers-reduced-motion: reduce) { ${selector}, ${selector} > * { animation: none !important; } }`);\n return out.join('\\n');\n}\n"],"names":["serializeMotion","parseMotion","TIMELINE_PRESETS"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"design.cjs","sources":["../../src/components/design/index.ts"],"sourcesContent":["/**\n * `motionary/design` (= `motionary/components/design`, 9.7) — design-tool\n * integration.\n *\n * - `figmaToMotion(reactions)` — Figma prototype reactions (plugin API\n * `node.reactions`: ON_CLICK / ON_HOVER / ON_PRESS / AFTER_TIMEOUT with\n * DISSOLVE / SMART_ANIMATE / MOVE_IN / SLIDE_IN / PUSH / SCROLL_ANIMATE\n * transitions, easing and duration) → a Motionary DSL string for\n * `data-motion`. The `figma-plugin/` scaffold in the repo uses it.\n * - `framerComponent(desc, { name })` — a Framer code component (React,\n * property controls for every attribute) from the 8.9 component JSON.\n * - `motionToCss(rules, selector)` — CSS `@keyframes` + rules for the\n * entrance rules of a motion string (timeline presets), for hand-off to\n * teams without JS.\n * - `easingPoints(easing)` — the cubic-bezier control points of a CSS\n * easing (named or `cubic-bezier(…)`), for spec sheets.\n */\nimport { parseMotion, serializeMotion, type MotionRule, type ComponentJSON } from '../dsl/index';\nimport { TIMELINE_PRESETS } from '../timeline/core';\n\nconst EASE: Record<string, [number, number, number, number]> = {\n linear: [0, 0, 1, 1],\n ease: [0.25, 0.1, 0.25, 1],\n 'ease-in': [0.42, 0, 1, 1],\n 'ease-out': [0, 0, 0.58, 1],\n 'ease-in-out': [0.42, 0, 0.58, 1],\n};\n/** Control points [x1, y1, x2, y2] of a CSS easing (unknown → ease) (9.7). */\nexport function easingPoints(easing = 'ease'): [number, number, number, number] {\n const m = easing.match(/cubic-bezier\\(\\s*([-\\d.]+)\\s*,\\s*([-\\d.]+)\\s*,\\s*([-\\d.]+)\\s*,\\s*([-\\d.]+)\\s*\\)/);\n if (m) return [Number(m[1]), Number(m[2]), Number(m[3]), Number(m[4])];\n return EASE[easing] || EASE.ease;\n}\n\nconst FIGMA_EASE: Record<string, string> = { LINEAR: 'linear', EASE_IN: 'ease-in', EASE_OUT: 'ease-out', EASE_IN_AND_OUT: 'ease-in-out', EASE_IN_BACK: 'cubic-bezier(0.36, 0, 0.66, -0.56)', EASE_OUT_BACK: 'spring', EASE_IN_AND_OUT_BACK: 'cubic-bezier(0.68, -0.6, 0.32, 1.6)', GENTLE: 'smooth', QUICK: 'ease-out', BOUNCY: 'spring', SLOW: 'ease-in-out' };\nconst FIGMA_TRIGGER: Record<string, string> = { ON_CLICK: 'click', ON_PRESS: 'click', ON_HOVER: 'hover', MOUSE_ENTER: 'hover', AFTER_TIMEOUT: 'load', ON_DRAG: 'click' };\nconst dirFx = (d: string | undefined, base: 'fade' | 'slide') => {\n const m: Record<string, string> = { LEFT: 'left', RIGHT: 'right', TOP: 'down', BOTTOM: 'up' };\n return base === 'fade' ? `fade-${m[d || 'BOTTOM'] || 'up'}` : `slide-${m[d || 'BOTTOM'] || 'up'}`;\n};\n/** Figma prototype reactions → a Motionary DSL string (unsupported reactions are skipped) (9.7). */\nexport function figmaToMotion(reactions: any[]): string {\n const rules: MotionRule[] = [];\n for (const r of reactions || []) {\n const trig = FIGMA_TRIGGER[r?.trigger?.type];\n const tr = r?.action?.transition ?? r?.actions?.[0]?.transition;\n if (!trig || !tr) continue;\n const effect = tr.type === 'DISSOLVE' ? 'fade' : tr.type === 'SMART_ANIMATE' || tr.type === 'SCROLL_ANIMATE' ? 'scale' : tr.type === 'MOVE_IN' || tr.type === 'PUSH' ? dirFx(tr.direction, 'fade') : tr.type === 'SLIDE_IN' ? dirFx(tr.direction, 'fade') : 'fade';\n const rule: MotionRule = { trigger: (r.trigger.type === 'AFTER_TIMEOUT' ? 'load' : trig) as MotionRule['trigger'], effect, options: {} };\n if (typeof tr.duration === 'number') rule.duration = Math.round(tr.duration * 1000);\n const e = tr.easing?.type ? FIGMA_EASE[tr.easing.type] : undefined;\n if (e) rule.easing = e === 'spring' ? 'cubic-bezier(0.34, 1.56, 0.64, 1)' : e === 'smooth' ? 'cubic-bezier(0.22, 1, 0.36, 1)' : e;\n if (tr.easing?.easingFunctionCubicBezier) {\n const b = tr.easing.easingFunctionCubicBezier;\n rule.easing = `cubic-bezier(${b.x1}, ${b.y1}, ${b.x2}, ${b.y2})`;\n }\n if (r.trigger.type === 'AFTER_TIMEOUT' && typeof r.trigger.timeout === 'number') rule.delay = Math.round(r.trigger.timeout * 1000);\n rules.push(rule);\n }\n return serializeMotion(rules);\n}\n\nconst pascal = (s: string) => s.replace(/(^|[-_\\s]+)([a-z0-9])/gi, (_, __, c) => c.toUpperCase()).replace(/[^A-Za-z0-9]/g, '') || 'Component';\n/** A Framer code component (TSX source) for a component description (9.7). */\nexport function framerComponent(desc: ComponentJSON | string, opts: { name?: string } = {}): string {\n const d: ComponentJSON = typeof desc === 'string' ? JSON.parse(desc) : desc;\n const name = pascal(opts.name || d.tag.replace(/^usa-/, ''));\n const attrs = Object.entries(d.attrs || {}).filter(([k]) => /^[a-z][\\w-]*$/.test(k));\n const prop = (k: string) => k.replace(/-([a-z])/g, (_, c) => c.toUpperCase());\n const controls = attrs.map(([k, v]) => ` ${prop(k)}: { type: ${!isNaN(Number(v)) && v !== '' ? 'ControlType.Number' : v === '' ? 'ControlType.Boolean' : 'ControlType.String'}, defaultValue: ${!isNaN(Number(v)) && v !== '' ? Number(v) : v === '' ? 'true' : JSON.stringify(v)} },`).join('\\n');\n const jsxAttrs = attrs.map(([k]) => ` ${k === 'class' ? 'className' : k}={${v(prop(k))}}`).join('');\n function v(p: string) {\n return `props.${p}`;\n }\n const kids = (d.children || []).map((c) => (typeof c === 'string' ? c.replace(/[{}<>]/g, '') : '')).join(' ').trim();\n return `// Framer code component generated by motionary/design (9.7)\\nimport { useEffect } from \"react\"\\nimport { addPropertyControls, ControlType } from \"framer\"\\nimport { defineWidgets } from \"https://cdn.jsdelivr.net/npm/motionary/dist/components/widgets.js\"\\n\\nexport default function ${name}(props) {\\n useEffect(() => defineWidgets(), [])\\n return <${d.tag}${jsxAttrs}>${kids}</${d.tag}>\\n}\\n\\naddPropertyControls(${name}, {\\n${controls}\\n})\\n`;\n}\n\n/** CSS `@keyframes` + rules for the entrance (`enter` / `load`) rules of a motion string (9.7). */\nexport function motionToCss(rules: string | MotionRule[], selector = '.motion'): string {\n const rs = typeof rules === 'string' ? parseMotion(rules).rules : rules;\n const out: string[] = [];\n const done = new Set<string>();\n for (const r of rs) {\n if (r.trigger !== 'enter' && r.trigger !== 'load') continue;\n const kf = TIMELINE_PRESETS[r.effect];\n if (!kf) continue;\n const name = `usa-${r.effect}`;\n if (!done.has(name)) {\n done.add(name);\n const steps = kf.map((f, i) => ` ${Math.round((f.offset != null ? Number(f.offset) : i / Math.max(1, kf.length - 1)) * 100)}% { ${Object.entries(f).filter(([k]) => k !== 'offset' && k !== 'easing').map(([k, val]) => `${k.replace(/[A-Z]/g, (c) => `-${c.toLowerCase()}`)}: ${val}`).join('; ')} }`);\n out.push(`@keyframes ${name} {\\n${steps.join('\\n')}\\n}`);\n }\n const target = r.stagger != null ? `${selector} > *` : selector;\n out.push(`${target} { animation: ${name} ${r.duration ?? 600}ms ${r.easing || 'cubic-bezier(0.22, 1, 0.36, 1)'} ${r.delay ?? 0}ms both; }`);\n if (r.stagger != null) for (let i = 2; i <= 8; i++) out.push(`${selector} > :nth-child(${i}) { animation-delay: ${(r.delay ?? 0) + r.stagger * (i - 1)}ms; }`);\n }\n out.push(`@media (prefers-reduced-motion: reduce) { ${selector}, ${selector} > * { animation: none !important; } }`);\n return out.join('\\n');\n}\n"],"names":["serializeMotion","parseMotion","TIMELINE_PRESETS"],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { serializeMotion, parseMotion } from './dsl.js';
|
|
2
|
-
import { T as TIMELINE_PRESETS } from '../chunks/core-
|
|
3
|
-
import '../chunks/registry-
|
|
4
|
-
import '../chunks/base-
|
|
2
|
+
import { T as TIMELINE_PRESETS } from '../chunks/core-BviA7nFa.js';
|
|
3
|
+
import '../chunks/registry-BKzyg1JV.js';
|
|
4
|
+
import '../chunks/base-BTev8qxg.js';
|
|
5
5
|
import './tokens.js';
|
|
6
6
|
|
|
7
7
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"design.js","sources":["../../src/components/design/index.ts"],"sourcesContent":["/**\n * `motionary/design` (= `motionary/components/design`, 9.7) — design-tool\n * integration.\n *\n * - `figmaToMotion(reactions)` — Figma prototype reactions (plugin API\n * `node.reactions`: ON_CLICK / ON_HOVER / ON_PRESS / AFTER_TIMEOUT with\n * DISSOLVE / SMART_ANIMATE / MOVE_IN / SLIDE_IN / PUSH / SCROLL_ANIMATE\n * transitions, easing and duration) → a Motionary DSL string for\n * `data-motion`. The `figma-plugin/` scaffold in the repo uses it.\n * - `framerComponent(desc, { name })` — a Framer code component (React,\n * property controls for every attribute) from the 8.9 component JSON.\n * - `motionToCss(rules, selector)` — CSS `@keyframes` + rules for the\n * entrance rules of a motion string (timeline presets), for hand-off to\n * teams without JS.\n * - `easingPoints(easing)` — the cubic-bezier control points of a CSS\n * easing (named or `cubic-bezier(…)`), for spec sheets.\n */\nimport { parseMotion, serializeMotion, type MotionRule, type ComponentJSON } from '../dsl/index';\nimport { TIMELINE_PRESETS } from '../timeline/core';\n\nconst EASE: Record<string, [number, number, number, number]> = {\n linear: [0, 0, 1, 1],\n ease: [0.25, 0.1, 0.25, 1],\n 'ease-in': [0.42, 0, 1, 1],\n 'ease-out': [0, 0, 0.58, 1],\n 'ease-in-out': [0.42, 0, 0.58, 1],\n};\n/** Control points [x1, y1, x2, y2] of a CSS easing (unknown → ease) (9.7). */\nexport function easingPoints(easing = 'ease'): [number, number, number, number] {\n const m = easing.match(/cubic-bezier\\(\\s*([-\\d.]+)\\s*,\\s*([-\\d.]+)\\s*,\\s*([-\\d.]+)\\s*,\\s*([-\\d.]+)\\s*\\)/);\n if (m) return [Number(m[1]), Number(m[2]), Number(m[3]), Number(m[4])];\n return EASE[easing] || EASE.ease;\n}\n\nconst FIGMA_EASE: Record<string, string> = { LINEAR: 'linear', EASE_IN: 'ease-in', EASE_OUT: 'ease-out', EASE_IN_AND_OUT: 'ease-in-out', EASE_IN_BACK: 'cubic-bezier(0.36, 0, 0.66, -0.56)', EASE_OUT_BACK: 'spring', EASE_IN_AND_OUT_BACK: 'cubic-bezier(0.68, -0.6, 0.32, 1.6)', GENTLE: 'smooth', QUICK: 'ease-out', BOUNCY: 'spring', SLOW: 'ease-in-out' };\nconst FIGMA_TRIGGER: Record<string, string> = { ON_CLICK: 'click', ON_PRESS: 'click', ON_HOVER: 'hover', MOUSE_ENTER: 'hover', AFTER_TIMEOUT: 'load', ON_DRAG: 'click' };\nconst dirFx = (d: string | undefined, base: 'fade' | 'slide') => {\n const m: Record<string, string> = { LEFT: 'left', RIGHT: 'right', TOP: 'down', BOTTOM: 'up' };\n return base === 'fade' ? `fade-${m[d || 'BOTTOM'] || 'up'}` : `slide-${m[d || 'BOTTOM'] || 'up'}`;\n};\n/** Figma prototype reactions → a Motionary DSL string (unsupported reactions are skipped) (9.7). */\nexport function figmaToMotion(reactions: any[]): string {\n const rules: MotionRule[] = [];\n for (const r of reactions || []) {\n const trig = FIGMA_TRIGGER[r?.trigger?.type];\n const tr = r?.action?.transition ?? r?.actions?.[0]?.transition;\n if (!trig || !tr) continue;\n const effect = tr.type === 'DISSOLVE' ? 'fade' : tr.type === 'SMART_ANIMATE' || tr.type === 'SCROLL_ANIMATE' ? 'scale' : tr.type === 'MOVE_IN' || tr.type === 'PUSH' ? dirFx(tr.direction, 'fade') : tr.type === 'SLIDE_IN' ? dirFx(tr.direction, 'fade') : 'fade';\n const rule: MotionRule = { trigger: (r.trigger.type === 'AFTER_TIMEOUT' ? 'load' : trig) as MotionRule['trigger'], effect, options: {} };\n if (typeof tr.duration === 'number') rule.duration = Math.round(tr.duration * 1000);\n const e = tr.easing?.type ? FIGMA_EASE[tr.easing.type] : undefined;\n if (e) rule.easing = e === 'spring' ? 'cubic-bezier(0.34, 1.56, 0.64, 1)' : e === 'smooth' ? 'cubic-bezier(0.22, 1, 0.36, 1)' : e;\n if (tr.easing?.easingFunctionCubicBezier) {\n const b = tr.easing.easingFunctionCubicBezier;\n rule.easing = `cubic-bezier(${b.x1}, ${b.y1}, ${b.x2}, ${b.y2})`;\n }\n if (r.trigger.type === 'AFTER_TIMEOUT' && typeof r.trigger.timeout === 'number') rule.delay = Math.round(r.trigger.timeout * 1000);\n rules.push(rule);\n }\n return serializeMotion(rules);\n}\n\nconst pascal = (s: string) => s.replace(/(^|[-_\\s]+)([a-z0-9])/gi, (_, __, c) => c.toUpperCase()).replace(/[^A-Za-z0-9]/g, '') || 'Component';\n/** A Framer code component (TSX source) for a component description (9.7). */\nexport function framerComponent(desc: ComponentJSON | string, opts: { name?: string } = {}): string {\n const d: ComponentJSON = typeof desc === 'string' ? JSON.parse(desc) : desc;\n const name = pascal(opts.name || d.tag.replace(/^usa-/, ''));\n const attrs = Object.entries(d.attrs || {}).filter(([k]) => /^[a-z][\\w-]*$/.test(k));\n const prop = (k: string) => k.replace(/-([a-z])/g, (_, c) => c.toUpperCase());\n const controls = attrs.map(([k, v]) => ` ${prop(k)}: { type: ${!isNaN(Number(v)) && v !== '' ? 'ControlType.Number' : v === '' ? 'ControlType.Boolean' : 'ControlType.String'}, defaultValue: ${!isNaN(Number(v)) && v !== '' ? Number(v) : v === '' ? 'true' : JSON.stringify(v)} },`).join('\\n');\n const jsxAttrs = attrs.map(([k]) => ` ${k === 'class' ? 'className' : k}={${v(prop(k))}}`).join('');\n function v(p: string) {\n return `props.${p}`;\n }\n const kids = (d.children || []).map((c) => (typeof c === 'string' ? c.replace(/[{}<>]/g, '') : '')).join(' ').trim();\n return `// Framer code component generated by motionary/design (9.7)\\nimport { useEffect } from \"react\"\\nimport { addPropertyControls, ControlType } from \"framer\"\\nimport { defineWidgets } from \"https://cdn.jsdelivr.net/npm/motionary/dist/components/widgets.js\"\\n\\nexport default function ${name}(props) {\\n useEffect(() => defineWidgets(), [])\\n return <${d.tag}${jsxAttrs}>${kids}</${d.tag}>\\n}\\n\\naddPropertyControls(${name}, {\\n${controls}\\n})\\n`;\n}\n\n/** CSS `@keyframes` + rules for the entrance (`enter` / `load`) rules of a motion string (9.7). */\nexport function motionToCss(rules: string | MotionRule[], selector = '.motion'): string {\n const rs = typeof rules === 'string' ? parseMotion(rules).rules : rules;\n const out: string[] = [];\n const done = new Set<string>();\n for (const r of rs) {\n if (r.trigger !== 'enter' && r.trigger !== 'load') continue;\n const kf = TIMELINE_PRESETS[r.effect];\n if (!kf) continue;\n const name = `usa-${r.effect}`;\n if (!done.has(name)) {\n done.add(name);\n const steps = kf.map((f, i) => ` ${Math.round((f.offset != null ? Number(f.offset) : i / Math.max(1, kf.length - 1)) * 100)}% { ${Object.entries(f).filter(([k]) => k !== 'offset' && k !== 'easing').map(([k, val]) => `${k.replace(/[A-Z]/g, (c) => `-${c.toLowerCase()}`)}: ${val}`).join('; ')} }`);\n out.push(`@keyframes ${name} {\\n${steps.join('\\n')}\\n}`);\n }\n const target = r.stagger != null ? `${selector} > *` : selector;\n out.push(`${target} { animation: ${name} ${r.duration ?? 600}ms ${r.easing || 'cubic-bezier(0.22, 1, 0.36, 1)'} ${r.delay ?? 0}ms both; }`);\n if (r.stagger != null) for (let i = 2; i <= 8; i++) out.push(`${selector} > :nth-child(${i}) { animation-delay: ${(r.delay ?? 0) + r.stagger * (i - 1)}ms; }`);\n }\n out.push(`@media (prefers-reduced-motion: reduce) { ${selector}, ${selector} > * { animation: none !important; } }`);\n return out.join('\\n');\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"design.js","sources":["../../src/components/design/index.ts"],"sourcesContent":["/**\n * `motionary/design` (= `motionary/components/design`, 9.7) — design-tool\n * integration.\n *\n * - `figmaToMotion(reactions)` — Figma prototype reactions (plugin API\n * `node.reactions`: ON_CLICK / ON_HOVER / ON_PRESS / AFTER_TIMEOUT with\n * DISSOLVE / SMART_ANIMATE / MOVE_IN / SLIDE_IN / PUSH / SCROLL_ANIMATE\n * transitions, easing and duration) → a Motionary DSL string for\n * `data-motion`. The `figma-plugin/` scaffold in the repo uses it.\n * - `framerComponent(desc, { name })` — a Framer code component (React,\n * property controls for every attribute) from the 8.9 component JSON.\n * - `motionToCss(rules, selector)` — CSS `@keyframes` + rules for the\n * entrance rules of a motion string (timeline presets), for hand-off to\n * teams without JS.\n * - `easingPoints(easing)` — the cubic-bezier control points of a CSS\n * easing (named or `cubic-bezier(…)`), for spec sheets.\n */\nimport { parseMotion, serializeMotion, type MotionRule, type ComponentJSON } from '../dsl/index';\nimport { TIMELINE_PRESETS } from '../timeline/core';\n\nconst EASE: Record<string, [number, number, number, number]> = {\n linear: [0, 0, 1, 1],\n ease: [0.25, 0.1, 0.25, 1],\n 'ease-in': [0.42, 0, 1, 1],\n 'ease-out': [0, 0, 0.58, 1],\n 'ease-in-out': [0.42, 0, 0.58, 1],\n};\n/** Control points [x1, y1, x2, y2] of a CSS easing (unknown → ease) (9.7). */\nexport function easingPoints(easing = 'ease'): [number, number, number, number] {\n const m = easing.match(/cubic-bezier\\(\\s*([-\\d.]+)\\s*,\\s*([-\\d.]+)\\s*,\\s*([-\\d.]+)\\s*,\\s*([-\\d.]+)\\s*\\)/);\n if (m) return [Number(m[1]), Number(m[2]), Number(m[3]), Number(m[4])];\n return EASE[easing] || EASE.ease;\n}\n\nconst FIGMA_EASE: Record<string, string> = { LINEAR: 'linear', EASE_IN: 'ease-in', EASE_OUT: 'ease-out', EASE_IN_AND_OUT: 'ease-in-out', EASE_IN_BACK: 'cubic-bezier(0.36, 0, 0.66, -0.56)', EASE_OUT_BACK: 'spring', EASE_IN_AND_OUT_BACK: 'cubic-bezier(0.68, -0.6, 0.32, 1.6)', GENTLE: 'smooth', QUICK: 'ease-out', BOUNCY: 'spring', SLOW: 'ease-in-out' };\nconst FIGMA_TRIGGER: Record<string, string> = { ON_CLICK: 'click', ON_PRESS: 'click', ON_HOVER: 'hover', MOUSE_ENTER: 'hover', AFTER_TIMEOUT: 'load', ON_DRAG: 'click' };\nconst dirFx = (d: string | undefined, base: 'fade' | 'slide') => {\n const m: Record<string, string> = { LEFT: 'left', RIGHT: 'right', TOP: 'down', BOTTOM: 'up' };\n return base === 'fade' ? `fade-${m[d || 'BOTTOM'] || 'up'}` : `slide-${m[d || 'BOTTOM'] || 'up'}`;\n};\n/** Figma prototype reactions → a Motionary DSL string (unsupported reactions are skipped) (9.7). */\nexport function figmaToMotion(reactions: any[]): string {\n const rules: MotionRule[] = [];\n for (const r of reactions || []) {\n const trig = FIGMA_TRIGGER[r?.trigger?.type];\n const tr = r?.action?.transition ?? r?.actions?.[0]?.transition;\n if (!trig || !tr) continue;\n const effect = tr.type === 'DISSOLVE' ? 'fade' : tr.type === 'SMART_ANIMATE' || tr.type === 'SCROLL_ANIMATE' ? 'scale' : tr.type === 'MOVE_IN' || tr.type === 'PUSH' ? dirFx(tr.direction, 'fade') : tr.type === 'SLIDE_IN' ? dirFx(tr.direction, 'fade') : 'fade';\n const rule: MotionRule = { trigger: (r.trigger.type === 'AFTER_TIMEOUT' ? 'load' : trig) as MotionRule['trigger'], effect, options: {} };\n if (typeof tr.duration === 'number') rule.duration = Math.round(tr.duration * 1000);\n const e = tr.easing?.type ? FIGMA_EASE[tr.easing.type] : undefined;\n if (e) rule.easing = e === 'spring' ? 'cubic-bezier(0.34, 1.56, 0.64, 1)' : e === 'smooth' ? 'cubic-bezier(0.22, 1, 0.36, 1)' : e;\n if (tr.easing?.easingFunctionCubicBezier) {\n const b = tr.easing.easingFunctionCubicBezier;\n rule.easing = `cubic-bezier(${b.x1}, ${b.y1}, ${b.x2}, ${b.y2})`;\n }\n if (r.trigger.type === 'AFTER_TIMEOUT' && typeof r.trigger.timeout === 'number') rule.delay = Math.round(r.trigger.timeout * 1000);\n rules.push(rule);\n }\n return serializeMotion(rules);\n}\n\nconst pascal = (s: string) => s.replace(/(^|[-_\\s]+)([a-z0-9])/gi, (_, __, c) => c.toUpperCase()).replace(/[^A-Za-z0-9]/g, '') || 'Component';\n/** A Framer code component (TSX source) for a component description (9.7). */\nexport function framerComponent(desc: ComponentJSON | string, opts: { name?: string } = {}): string {\n const d: ComponentJSON = typeof desc === 'string' ? JSON.parse(desc) : desc;\n const name = pascal(opts.name || d.tag.replace(/^usa-/, ''));\n const attrs = Object.entries(d.attrs || {}).filter(([k]) => /^[a-z][\\w-]*$/.test(k));\n const prop = (k: string) => k.replace(/-([a-z])/g, (_, c) => c.toUpperCase());\n const controls = attrs.map(([k, v]) => ` ${prop(k)}: { type: ${!isNaN(Number(v)) && v !== '' ? 'ControlType.Number' : v === '' ? 'ControlType.Boolean' : 'ControlType.String'}, defaultValue: ${!isNaN(Number(v)) && v !== '' ? Number(v) : v === '' ? 'true' : JSON.stringify(v)} },`).join('\\n');\n const jsxAttrs = attrs.map(([k]) => ` ${k === 'class' ? 'className' : k}={${v(prop(k))}}`).join('');\n function v(p: string) {\n return `props.${p}`;\n }\n const kids = (d.children || []).map((c) => (typeof c === 'string' ? c.replace(/[{}<>]/g, '') : '')).join(' ').trim();\n return `// Framer code component generated by motionary/design (9.7)\\nimport { useEffect } from \"react\"\\nimport { addPropertyControls, ControlType } from \"framer\"\\nimport { defineWidgets } from \"https://cdn.jsdelivr.net/npm/motionary/dist/components/widgets.js\"\\n\\nexport default function ${name}(props) {\\n useEffect(() => defineWidgets(), [])\\n return <${d.tag}${jsxAttrs}>${kids}</${d.tag}>\\n}\\n\\naddPropertyControls(${name}, {\\n${controls}\\n})\\n`;\n}\n\n/** CSS `@keyframes` + rules for the entrance (`enter` / `load`) rules of a motion string (9.7). */\nexport function motionToCss(rules: string | MotionRule[], selector = '.motion'): string {\n const rs = typeof rules === 'string' ? parseMotion(rules).rules : rules;\n const out: string[] = [];\n const done = new Set<string>();\n for (const r of rs) {\n if (r.trigger !== 'enter' && r.trigger !== 'load') continue;\n const kf = TIMELINE_PRESETS[r.effect];\n if (!kf) continue;\n const name = `usa-${r.effect}`;\n if (!done.has(name)) {\n done.add(name);\n const steps = kf.map((f, i) => ` ${Math.round((f.offset != null ? Number(f.offset) : i / Math.max(1, kf.length - 1)) * 100)}% { ${Object.entries(f).filter(([k]) => k !== 'offset' && k !== 'easing').map(([k, val]) => `${k.replace(/[A-Z]/g, (c) => `-${c.toLowerCase()}`)}: ${val}`).join('; ')} }`);\n out.push(`@keyframes ${name} {\\n${steps.join('\\n')}\\n}`);\n }\n const target = r.stagger != null ? `${selector} > *` : selector;\n out.push(`${target} { animation: ${name} ${r.duration ?? 600}ms ${r.easing || 'cubic-bezier(0.22, 1, 0.36, 1)'} ${r.delay ?? 0}ms both; }`);\n if (r.stagger != null) for (let i = 2; i <= 8; i++) out.push(`${selector} > :nth-child(${i}) { animation-delay: ${(r.delay ?? 0) + r.stagger * (i - 1)}ms; }`);\n }\n out.push(`@media (prefers-reduced-motion: reduce) { ${selector}, ${selector} > * { animation: none !important; } }`);\n return out.join('\\n');\n}\n"],"names":[],"mappings":"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"}
|