@wix/motion 1.659.0 → 2.0.0-rc.2
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/README.md +26 -13
- package/dist/cjs/motion.js +2 -146
- package/dist/cjs/motion.js.map +1 -1
- package/dist/es/AnimationGroup.js +91 -0
- package/dist/es/CustomAnimation.js +169 -0
- package/dist/es/api/common.js +125 -0
- package/dist/es/api/cssAnimations.js +44 -0
- package/dist/es/api/prepare.js +12 -0
- package/dist/es/api/webAnimations.js +128 -0
- package/dist/es/easings.js +218 -0
- package/dist/{esm → es}/index.js +0 -1
- package/dist/es/library/backgroundScroll/BgCloseUp.js +62 -0
- package/dist/es/library/backgroundScroll/BgFade.js +43 -0
- package/dist/es/library/backgroundScroll/BgFadeBack.js +61 -0
- package/dist/es/library/backgroundScroll/BgFake3D.js +88 -0
- package/dist/es/library/backgroundScroll/BgPan.js +39 -0
- package/dist/es/library/backgroundScroll/BgParallax.js +33 -0
- package/dist/es/library/backgroundScroll/BgPullBack.js +35 -0
- package/dist/es/library/backgroundScroll/BgReveal.js +7 -0
- package/dist/es/library/backgroundScroll/BgRotate.js +28 -0
- package/dist/es/library/backgroundScroll/BgSkew.js +33 -0
- package/dist/es/library/backgroundScroll/BgZoom.js +108 -0
- package/dist/es/library/backgroundScroll/ImageParallax.js +46 -0
- package/dist/{esm → es}/library/backgroundScroll/index.js +12 -13
- package/dist/es/library/backgroundScroll/test/BgCloseUp.spec.js +36 -0
- package/dist/es/library/backgroundScroll/test/BgFade.spec.js +34 -0
- package/dist/es/library/backgroundScroll/test/BgFadeBack.spec.js +36 -0
- package/dist/es/library/backgroundScroll/test/BgFake3D.spec.js +63 -0
- package/dist/es/library/backgroundScroll/test/BgPan.spec.js +47 -0
- package/dist/es/library/backgroundScroll/test/BgParallax.spec.js +44 -0
- package/dist/es/library/backgroundScroll/test/BgPullBack.spec.js +42 -0
- package/dist/es/library/backgroundScroll/test/BgRotate.spec.js +46 -0
- package/dist/es/library/backgroundScroll/test/BgSkew.spec.js +46 -0
- package/dist/es/library/backgroundScroll/test/BgZoom.spec.js +105 -0
- package/dist/es/library/backgroundScroll/test/ImageParallax.spec.js +46 -0
- package/dist/es/library/backgroundScroll/test/testUtils.js +3 -0
- package/dist/es/library/backgroundScroll/utils.js +30 -0
- package/dist/es/library/entrance/ArcIn.js +78 -0
- package/dist/es/library/entrance/BlurIn.js +46 -0
- package/dist/es/library/entrance/BounceIn.js +83 -0
- package/dist/es/library/entrance/CircleIn.js +77 -0
- package/dist/es/library/entrance/CurveIn.js +61 -0
- package/dist/es/library/entrance/DropIn.js +46 -0
- package/dist/es/library/entrance/ExpandIn.js +80 -0
- package/dist/es/library/entrance/FadeIn.js +17 -0
- package/dist/es/library/entrance/FlipIn.js +80 -0
- package/dist/es/library/entrance/FloatIn.js +48 -0
- package/dist/es/library/entrance/FoldIn.js +86 -0
- package/dist/es/library/entrance/GlideIn.js +75 -0
- package/dist/es/library/entrance/GlitchIn.js +20 -0
- package/dist/es/library/entrance/GrowIn.js +52 -0
- package/dist/es/library/entrance/PunchIn.js +103 -0
- package/dist/es/library/entrance/RevealIn.js +64 -0
- package/dist/es/library/entrance/ShapeIn.js +55 -0
- package/dist/es/library/entrance/ShuttersIn.js +40 -0
- package/dist/es/library/entrance/SlideIn.js +106 -0
- package/dist/es/library/entrance/SpinIn.js +54 -0
- package/dist/es/library/entrance/TiltIn.js +96 -0
- package/dist/es/library/entrance/TurnIn.js +73 -0
- package/dist/es/library/entrance/WinkIn.js +94 -0
- package/dist/{esm → es}/library/entrance/index.js +23 -24
- package/dist/es/library/entrance/test/ArcIn.spec.js +253 -0
- package/dist/es/library/entrance/test/BlurIn.spec.js +103 -0
- package/dist/es/library/entrance/test/BounceIn.spec.js +943 -0
- package/dist/es/library/entrance/test/CircleIn.spec.js +174 -0
- package/dist/es/library/entrance/test/CurveIn.spec.js +143 -0
- package/dist/es/library/entrance/test/DropIn.spec.js +172 -0
- package/dist/es/library/entrance/test/ExpandIn.spec.js +194 -0
- package/dist/es/library/entrance/test/FadeIn.spec.js +33 -0
- package/dist/es/library/entrance/test/FlipIn.spec.js +125 -0
- package/dist/es/library/entrance/test/FloatIn.spec.js +127 -0
- package/dist/es/library/entrance/test/FoldIn.spec.js +125 -0
- package/dist/es/library/entrance/test/GlideIn.spec.js +133 -0
- package/dist/es/library/entrance/test/GlitchIn.spec.js +216 -0
- package/dist/es/library/entrance/test/GrowIn.spec.js +121 -0
- package/dist/es/library/entrance/test/PunchIn.spec.js +888 -0
- package/dist/es/library/entrance/test/RevealIn.spec.js +121 -0
- package/dist/es/library/entrance/test/ShapeIn.spec.js +221 -0
- package/dist/es/library/entrance/test/ShuttersIn.spec.js +338 -0
- package/dist/es/library/entrance/test/SlideIn.spec.js +149 -0
- package/dist/es/library/entrance/test/SpinIn.spec.js +141 -0
- package/dist/es/library/entrance/test/TiltIn.spec.js +186 -0
- package/dist/es/library/entrance/test/TurnIn.spec.js +224 -0
- package/dist/es/library/entrance/test/WinkIn.spec.js +281 -0
- package/dist/es/library/entrance/test/testUtils.js +3 -0
- package/dist/es/library/mouse/AiryMouse.js +43 -0
- package/dist/es/library/mouse/BlobMouse.js +42 -0
- package/dist/es/library/mouse/BlurMouse.js +56 -0
- package/dist/es/library/mouse/BounceMouse.js +10 -0
- package/dist/es/library/mouse/CustomMouse.js +31 -0
- package/dist/es/library/mouse/ScaleMouse.js +61 -0
- package/dist/es/library/mouse/SkewMouse.js +58 -0
- package/dist/es/library/mouse/SpinMouse.js +26 -0
- package/dist/es/library/mouse/SwivelMouse.js +52 -0
- package/dist/es/library/mouse/Tilt3DMouse.js +34 -0
- package/dist/es/library/mouse/Track3DMouse.js +50 -0
- package/dist/es/library/mouse/TrackMouse.js +43 -0
- package/dist/{esm → es}/library/mouse/index.js +12 -13
- package/dist/es/library/ongoing/Bounce.js +58 -0
- package/dist/es/library/ongoing/Breathe.js +92 -0
- package/dist/es/library/ongoing/Cross.js +218 -0
- package/dist/es/library/ongoing/DVD.js +85 -0
- package/dist/es/library/ongoing/Flash.js +45 -0
- package/dist/es/library/ongoing/Flip.js +57 -0
- package/dist/es/library/ongoing/Fold.js +121 -0
- package/dist/es/library/ongoing/Jello.js +51 -0
- package/dist/es/library/ongoing/Poke.js +61 -0
- package/dist/es/library/ongoing/Pulse.js +58 -0
- package/dist/es/library/ongoing/Rubber.js +60 -0
- package/dist/es/library/ongoing/Spin.js +50 -0
- package/dist/es/library/ongoing/Swing.js +98 -0
- package/dist/es/library/ongoing/Wiggle.js +60 -0
- package/dist/{esm → es}/library/ongoing/index.js +14 -17
- package/dist/es/library/ongoing/test/Bounce.spec.js +771 -0
- package/dist/es/library/ongoing/test/Breathe.spec.js +542 -0
- package/dist/es/library/ongoing/test/Cross.spec.js +579 -0
- package/dist/es/library/ongoing/test/DVD.spec.js +63 -0
- package/dist/es/library/ongoing/test/Flash.spec.js +205 -0
- package/dist/es/library/ongoing/test/Flip.spec.js +324 -0
- package/dist/es/library/ongoing/test/Fold.spec.js +649 -0
- package/dist/es/library/ongoing/test/Jello.spec.js +373 -0
- package/dist/es/library/ongoing/test/Poke.spec.js +590 -0
- package/dist/es/library/ongoing/test/Pulse.spec.js +391 -0
- package/dist/es/library/ongoing/test/Rubber.spec.js +591 -0
- package/dist/es/library/ongoing/test/Spin.spec.js +414 -0
- package/dist/es/library/ongoing/test/Swing.spec.js +240 -0
- package/dist/es/library/ongoing/test/Wiggle.spec.js +464 -0
- package/dist/es/library/ongoing/test/testUtils.js +3 -0
- package/dist/es/library/scroll/ArcScroll.js +43 -0
- package/dist/es/library/scroll/BlurScroll.js +39 -0
- package/dist/es/library/scroll/FadeScroll.js +33 -0
- package/dist/es/library/scroll/FlipScroll.js +44 -0
- package/dist/es/library/scroll/GrowScroll.js +112 -0
- package/dist/es/library/scroll/MoveScroll.js +72 -0
- package/dist/es/library/scroll/PanScroll.js +67 -0
- package/dist/es/library/scroll/ParallaxScroll.js +48 -0
- package/dist/es/library/scroll/RevealScroll.js +87 -0
- package/dist/es/library/scroll/ShapeScroll.js +124 -0
- package/dist/es/library/scroll/ShrinkScroll.js +109 -0
- package/dist/es/library/scroll/ShuttersScroll.js +63 -0
- package/dist/es/library/scroll/SkewPanScroll.js +78 -0
- package/dist/es/library/scroll/SlideScroll.js +105 -0
- package/dist/es/library/scroll/Spin3dScroll.js +92 -0
- package/dist/es/library/scroll/SpinScroll.js +45 -0
- package/dist/es/library/scroll/StretchScroll.js +81 -0
- package/dist/es/library/scroll/TiltScroll.js +118 -0
- package/dist/es/library/scroll/TurnScroll.js +96 -0
- package/dist/{esm → es}/library/scroll/index.js +19 -20
- package/dist/es/library/scroll/test/ArcScroll.spec.js +89 -0
- package/dist/es/library/scroll/test/BlurScroll.spec.js +149 -0
- package/dist/es/library/scroll/test/FadeScroll.spec.js +90 -0
- package/dist/es/library/scroll/test/FlipScroll.spec.js +167 -0
- package/dist/es/library/scroll/test/GrowScroll.spec.js +299 -0
- package/dist/es/library/scroll/test/MoveScroll.spec.js +183 -0
- package/dist/es/library/scroll/test/PanScroll.spec.js +133 -0
- package/dist/es/library/scroll/test/ParallaxScroll.spec.js +51 -0
- package/dist/es/library/scroll/test/RevealScroll.spec.js +131 -0
- package/dist/es/library/scroll/test/ShapeScroll.spec.js +234 -0
- package/dist/es/library/scroll/test/ShrinkScroll.spec.js +180 -0
- package/dist/es/library/scroll/test/ShuttersScroll.spec.js +189 -0
- package/dist/es/library/scroll/test/SkewPanScroll.spec.js +168 -0
- package/dist/es/library/scroll/test/SlideScroll.spec.js +99 -0
- package/dist/es/library/scroll/test/Spin3dScroll.spec.js +184 -0
- package/dist/es/library/scroll/test/SpinScroll.spec.js +188 -0
- package/dist/es/library/scroll/test/StretchScroll.spec.js +235 -0
- package/dist/es/library/scroll/test/TiltScroll.spec.js +206 -0
- package/dist/es/library/scroll/test/TurnScroll.spec.js +148 -0
- package/dist/es/library/scroll/test/testUtils.js +3 -0
- package/dist/es/motion.js +5440 -0
- package/dist/es/motion.js.map +1 -0
- package/dist/es/types.js +1 -0
- package/dist/es/utils.js +251 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/dist/types/AnimationGroup.d.ts.map +1 -1
- package/dist/types/CustomAnimation.d.ts +2 -2
- package/dist/types/CustomAnimation.d.ts.map +1 -1
- package/dist/types/api/common.d.ts +109 -109
- package/dist/types/api/common.d.ts.map +1 -1
- package/dist/types/api/cssAnimations.d.ts.map +1 -1
- package/dist/types/api/prepare.d.ts.map +1 -1
- package/dist/types/api/webAnimations.d.ts.map +1 -1
- package/dist/types/easings.d.ts.map +1 -1
- package/dist/types/library/backgroundScroll/BgCloseUp.d.ts +28 -28
- package/dist/types/library/backgroundScroll/BgCloseUp.d.ts.map +1 -1
- package/dist/types/library/backgroundScroll/BgFade.d.ts +14 -14
- package/dist/types/library/backgroundScroll/BgFade.d.ts.map +1 -1
- package/dist/types/library/backgroundScroll/BgFadeBack.d.ts +28 -28
- package/dist/types/library/backgroundScroll/BgFadeBack.d.ts.map +1 -1
- package/dist/types/library/backgroundScroll/BgFake3D.d.ts +28 -28
- package/dist/types/library/backgroundScroll/BgFake3D.d.ts.map +1 -1
- package/dist/types/library/backgroundScroll/BgPan.d.ts +15 -15
- package/dist/types/library/backgroundScroll/BgPan.d.ts.map +1 -1
- package/dist/types/library/backgroundScroll/BgParallax.d.ts +15 -15
- package/dist/types/library/backgroundScroll/BgParallax.d.ts.map +1 -1
- package/dist/types/library/backgroundScroll/BgPullBack.d.ts +14 -14
- package/dist/types/library/backgroundScroll/BgPullBack.d.ts.map +1 -1
- package/dist/types/library/backgroundScroll/BgRotate.d.ts +14 -14
- package/dist/types/library/backgroundScroll/BgRotate.d.ts.map +1 -1
- package/dist/types/library/backgroundScroll/BgSkew.d.ts +15 -15
- package/dist/types/library/backgroundScroll/BgSkew.d.ts.map +1 -1
- package/dist/types/library/backgroundScroll/BgZoom.d.ts +42 -42
- package/dist/types/library/backgroundScroll/BgZoom.d.ts.map +1 -1
- package/dist/types/library/backgroundScroll/ImageParallax.d.ts +15 -15
- package/dist/types/library/backgroundScroll/ImageParallax.d.ts.map +1 -1
- package/dist/types/library/backgroundScroll/test/BgCloseUp.spec.d.ts +2 -0
- package/dist/types/library/backgroundScroll/test/BgCloseUp.spec.d.ts.map +1 -0
- package/dist/types/library/backgroundScroll/test/BgFade.spec.d.ts +2 -0
- package/dist/types/library/backgroundScroll/test/BgFade.spec.d.ts.map +1 -0
- package/dist/types/library/backgroundScroll/test/BgFadeBack.spec.d.ts +2 -0
- package/dist/types/library/backgroundScroll/test/BgFadeBack.spec.d.ts.map +1 -0
- package/dist/types/library/backgroundScroll/test/BgFake3D.spec.d.ts +2 -0
- package/dist/types/library/backgroundScroll/test/BgFake3D.spec.d.ts.map +1 -0
- package/dist/types/library/backgroundScroll/test/BgPan.spec.d.ts +2 -0
- package/dist/types/library/backgroundScroll/test/BgPan.spec.d.ts.map +1 -0
- package/dist/types/library/backgroundScroll/test/BgParallax.spec.d.ts +2 -0
- package/dist/types/library/backgroundScroll/test/BgParallax.spec.d.ts.map +1 -0
- package/dist/types/library/backgroundScroll/test/BgPullBack.spec.d.ts +2 -0
- package/dist/types/library/backgroundScroll/test/BgPullBack.spec.d.ts.map +1 -0
- package/dist/types/library/backgroundScroll/test/BgRotate.spec.d.ts +2 -0
- package/dist/types/library/backgroundScroll/test/BgRotate.spec.d.ts.map +1 -0
- package/dist/types/library/backgroundScroll/test/BgSkew.spec.d.ts +2 -0
- package/dist/types/library/backgroundScroll/test/BgSkew.spec.d.ts.map +1 -0
- package/dist/types/library/backgroundScroll/test/BgZoom.spec.d.ts +2 -0
- package/dist/types/library/backgroundScroll/test/BgZoom.spec.d.ts.map +1 -0
- package/dist/types/library/backgroundScroll/test/ImageParallax.spec.d.ts +2 -0
- package/dist/types/library/backgroundScroll/test/ImageParallax.spec.d.ts.map +1 -0
- package/dist/types/library/backgroundScroll/utils.d.ts.map +1 -1
- package/dist/types/library/entrance/ArcIn.d.ts +42 -42
- package/dist/types/library/entrance/ArcIn.d.ts.map +1 -1
- package/dist/types/library/entrance/BlurIn.d.ts +42 -42
- package/dist/types/library/entrance/BlurIn.d.ts.map +1 -1
- package/dist/types/library/entrance/BounceIn.d.ts +42 -42
- package/dist/types/library/entrance/BounceIn.d.ts.map +1 -1
- package/dist/types/library/entrance/CircleIn.d.ts +44 -44
- package/dist/types/library/entrance/CurveIn.d.ts +22 -22
- package/dist/types/library/entrance/DropIn.d.ts +42 -42
- package/dist/types/library/entrance/DropIn.d.ts.map +1 -1
- package/dist/types/library/entrance/ExpandIn.d.ts +44 -44
- package/dist/types/library/entrance/ExpandIn.d.ts.map +1 -1
- package/dist/types/library/entrance/FadeIn.d.ts +22 -22
- package/dist/types/library/entrance/FadeIn.d.ts.map +1 -1
- package/dist/types/library/entrance/FlipIn.d.ts +44 -44
- package/dist/types/library/entrance/FlipIn.d.ts.map +1 -1
- package/dist/types/library/entrance/FloatIn.d.ts +22 -22
- package/dist/types/library/entrance/FoldIn.d.ts +44 -44
- package/dist/types/library/entrance/FoldIn.d.ts.map +1 -1
- package/dist/types/library/entrance/GlideIn.d.ts +22 -22
- package/dist/types/library/entrance/GlideIn.d.ts.map +1 -1
- package/dist/types/library/entrance/GlitchIn.d.ts +22 -22
- package/dist/types/library/entrance/GlitchIn.d.ts.map +1 -1
- package/dist/types/library/entrance/GrowIn.d.ts +42 -42
- package/dist/types/library/entrance/GrowIn.d.ts.map +1 -1
- package/dist/types/library/entrance/PunchIn.d.ts +42 -42
- package/dist/types/library/entrance/PunchIn.d.ts.map +1 -1
- package/dist/types/library/entrance/RevealIn.d.ts +22 -22
- package/dist/types/library/entrance/RevealIn.d.ts.map +1 -1
- package/dist/types/library/entrance/ShapeIn.d.ts +42 -42
- package/dist/types/library/entrance/ShapeIn.d.ts.map +1 -1
- package/dist/types/library/entrance/ShuttersIn.d.ts +22 -22
- package/dist/types/library/entrance/ShuttersIn.d.ts.map +1 -1
- package/dist/types/library/entrance/SlideIn.d.ts +22 -22
- package/dist/types/library/entrance/SlideIn.d.ts.map +1 -1
- package/dist/types/library/entrance/SpinIn.d.ts +42 -42
- package/dist/types/library/entrance/SpinIn.d.ts.map +1 -1
- package/dist/types/library/entrance/TiltIn.d.ts +62 -62
- package/dist/types/library/entrance/TiltIn.d.ts.map +1 -1
- package/dist/types/library/entrance/TurnIn.d.ts +42 -42
- package/dist/types/library/entrance/TurnIn.d.ts.map +1 -1
- package/dist/types/library/entrance/WinkIn.d.ts +64 -64
- package/dist/types/library/entrance/WinkIn.d.ts.map +1 -1
- package/dist/types/library/entrance/test/ArcIn.spec.d.ts +2 -0
- package/dist/types/library/entrance/test/ArcIn.spec.d.ts.map +1 -0
- package/dist/types/library/entrance/test/BlurIn.spec.d.ts +2 -0
- package/dist/types/library/entrance/test/BlurIn.spec.d.ts.map +1 -0
- package/dist/types/library/entrance/test/BounceIn.spec.d.ts +2 -0
- package/dist/types/library/entrance/test/BounceIn.spec.d.ts.map +1 -0
- package/dist/types/library/entrance/test/CircleIn.spec.d.ts +2 -0
- package/dist/types/library/entrance/test/CircleIn.spec.d.ts.map +1 -0
- package/dist/types/library/entrance/test/CurveIn.spec.d.ts +2 -0
- package/dist/types/library/entrance/test/CurveIn.spec.d.ts.map +1 -0
- package/dist/types/library/entrance/test/DropIn.spec.d.ts +2 -0
- package/dist/types/library/entrance/test/DropIn.spec.d.ts.map +1 -0
- package/dist/types/library/entrance/test/ExpandIn.spec.d.ts +2 -0
- package/dist/types/library/entrance/test/ExpandIn.spec.d.ts.map +1 -0
- package/dist/types/library/entrance/test/FadeIn.spec.d.ts +2 -0
- package/dist/types/library/entrance/test/FadeIn.spec.d.ts.map +1 -0
- package/dist/types/library/entrance/test/FlipIn.spec.d.ts +2 -0
- package/dist/types/library/entrance/test/FlipIn.spec.d.ts.map +1 -0
- package/dist/types/library/entrance/test/FloatIn.spec.d.ts +2 -0
- package/dist/types/library/entrance/test/FloatIn.spec.d.ts.map +1 -0
- package/dist/types/library/entrance/test/FoldIn.spec.d.ts +2 -0
- package/dist/types/library/entrance/test/FoldIn.spec.d.ts.map +1 -0
- package/dist/types/library/entrance/test/GlideIn.spec.d.ts +2 -0
- package/dist/types/library/entrance/test/GlideIn.spec.d.ts.map +1 -0
- package/dist/types/library/entrance/test/GlitchIn.spec.d.ts +2 -0
- package/dist/types/library/entrance/test/GlitchIn.spec.d.ts.map +1 -0
- package/dist/types/library/entrance/test/GrowIn.spec.d.ts +2 -0
- package/dist/types/library/entrance/test/GrowIn.spec.d.ts.map +1 -0
- package/dist/types/library/entrance/test/PunchIn.spec.d.ts +2 -0
- package/dist/types/library/entrance/test/PunchIn.spec.d.ts.map +1 -0
- package/dist/types/library/entrance/test/RevealIn.spec.d.ts +2 -0
- package/dist/types/library/entrance/test/RevealIn.spec.d.ts.map +1 -0
- package/dist/types/library/entrance/test/ShapeIn.spec.d.ts +2 -0
- package/dist/types/library/entrance/test/ShapeIn.spec.d.ts.map +1 -0
- package/dist/types/library/entrance/test/ShuttersIn.spec.d.ts +2 -0
- package/dist/types/library/entrance/test/ShuttersIn.spec.d.ts.map +1 -0
- package/dist/types/library/entrance/test/SlideIn.spec.d.ts +2 -0
- package/dist/types/library/entrance/test/SlideIn.spec.d.ts.map +1 -0
- package/dist/types/library/entrance/test/SpinIn.spec.d.ts +2 -0
- package/dist/types/library/entrance/test/SpinIn.spec.d.ts.map +1 -0
- package/dist/types/library/entrance/test/TiltIn.spec.d.ts +2 -0
- package/dist/types/library/entrance/test/TiltIn.spec.d.ts.map +1 -0
- package/dist/types/library/entrance/test/TurnIn.spec.d.ts +2 -0
- package/dist/types/library/entrance/test/TurnIn.spec.d.ts.map +1 -0
- package/dist/types/library/entrance/test/WinkIn.spec.d.ts +2 -0
- package/dist/types/library/entrance/test/WinkIn.spec.d.ts.map +1 -0
- package/dist/types/library/mouse/AiryMouse.d.ts.map +1 -1
- package/dist/types/library/mouse/BlobMouse.d.ts.map +1 -1
- package/dist/types/library/mouse/BlurMouse.d.ts.map +1 -1
- package/dist/types/library/mouse/BounceMouse.d.ts.map +1 -1
- package/dist/types/library/mouse/CustomMouse.d.ts.map +1 -1
- package/dist/types/library/mouse/ScaleMouse.d.ts.map +1 -1
- package/dist/types/library/mouse/SkewMouse.d.ts.map +1 -1
- package/dist/types/library/mouse/SpinMouse.d.ts.map +1 -1
- package/dist/types/library/mouse/SwivelMouse.d.ts.map +1 -1
- package/dist/types/library/mouse/Tilt3DMouse.d.ts.map +1 -1
- package/dist/types/library/mouse/Track3DMouse.d.ts.map +1 -1
- package/dist/types/library/mouse/TrackMouse.d.ts.map +1 -1
- package/dist/types/library/ongoing/Bounce.d.ts +24 -24
- package/dist/types/library/ongoing/Bounce.d.ts.map +1 -1
- package/dist/types/library/ongoing/Breathe.d.ts +24 -25
- package/dist/types/library/ongoing/Breathe.d.ts.map +1 -1
- package/dist/types/library/ongoing/Cross.d.ts +12 -12
- package/dist/types/library/ongoing/Cross.d.ts.map +1 -1
- package/dist/types/library/ongoing/DVD.d.ts +16 -16
- package/dist/types/library/ongoing/Flash.d.ts +24 -24
- package/dist/types/library/ongoing/Flash.d.ts.map +1 -1
- package/dist/types/library/ongoing/Flip.d.ts +24 -24
- package/dist/types/library/ongoing/Flip.d.ts.map +1 -1
- package/dist/types/library/ongoing/Fold.d.ts +24 -25
- package/dist/types/library/ongoing/Fold.d.ts.map +1 -1
- package/dist/types/library/ongoing/Jello.d.ts +24 -24
- package/dist/types/library/ongoing/Jello.d.ts.map +1 -1
- package/dist/types/library/ongoing/Poke.d.ts +24 -24
- package/dist/types/library/ongoing/Poke.d.ts.map +1 -1
- package/dist/types/library/ongoing/Pulse.d.ts +24 -24
- package/dist/types/library/ongoing/Pulse.d.ts.map +1 -1
- package/dist/types/library/ongoing/Rubber.d.ts +24 -24
- package/dist/types/library/ongoing/Rubber.d.ts.map +1 -1
- package/dist/types/library/ongoing/Spin.d.ts +24 -24
- package/dist/types/library/ongoing/Spin.d.ts.map +1 -1
- package/dist/types/library/ongoing/Swing.d.ts +24 -25
- package/dist/types/library/ongoing/Swing.d.ts.map +1 -1
- package/dist/types/library/ongoing/Wiggle.d.ts +24 -24
- package/dist/types/library/ongoing/Wiggle.d.ts.map +1 -1
- package/dist/types/library/ongoing/index.d.ts.map +1 -1
- package/dist/types/library/ongoing/test/Bounce.spec.d.ts +2 -0
- package/dist/types/library/ongoing/test/Bounce.spec.d.ts.map +1 -0
- package/dist/types/library/ongoing/test/Breathe.spec.d.ts +2 -0
- package/dist/types/library/ongoing/test/Breathe.spec.d.ts.map +1 -0
- package/dist/types/library/ongoing/test/Cross.spec.d.ts +2 -0
- package/dist/types/library/ongoing/test/Cross.spec.d.ts.map +1 -0
- package/dist/types/library/ongoing/test/DVD.spec.d.ts +2 -0
- package/dist/types/library/ongoing/test/DVD.spec.d.ts.map +1 -0
- package/dist/types/library/ongoing/test/Flash.spec.d.ts +2 -0
- package/dist/types/library/ongoing/test/Flash.spec.d.ts.map +1 -0
- package/dist/types/library/ongoing/test/Flip.spec.d.ts +2 -0
- package/dist/types/library/ongoing/test/Flip.spec.d.ts.map +1 -0
- package/dist/types/library/ongoing/test/Fold.spec.d.ts +2 -0
- package/dist/types/library/ongoing/test/Fold.spec.d.ts.map +1 -0
- package/dist/types/library/ongoing/test/Jello.spec.d.ts +2 -0
- package/dist/types/library/ongoing/test/Jello.spec.d.ts.map +1 -0
- package/dist/types/library/ongoing/test/Poke.spec.d.ts +2 -0
- package/dist/types/library/ongoing/test/Poke.spec.d.ts.map +1 -0
- package/dist/types/library/ongoing/test/Pulse.spec.d.ts +2 -0
- package/dist/types/library/ongoing/test/Pulse.spec.d.ts.map +1 -0
- package/dist/types/library/ongoing/test/Rubber.spec.d.ts +2 -0
- package/dist/types/library/ongoing/test/Rubber.spec.d.ts.map +1 -0
- package/dist/types/library/ongoing/test/Spin.spec.d.ts +2 -0
- package/dist/types/library/ongoing/test/Spin.spec.d.ts.map +1 -0
- package/dist/types/library/ongoing/test/Swing.spec.d.ts +2 -0
- package/dist/types/library/ongoing/test/Swing.spec.d.ts.map +1 -0
- package/dist/types/library/ongoing/test/Wiggle.spec.d.ts +2 -0
- package/dist/types/library/ongoing/test/Wiggle.spec.d.ts.map +1 -0
- package/dist/types/library/scroll/ArcScroll.d.ts +15 -15
- package/dist/types/library/scroll/ArcScroll.d.ts.map +1 -1
- package/dist/types/library/scroll/BlurScroll.d.ts +15 -15
- package/dist/types/library/scroll/BlurScroll.d.ts.map +1 -1
- package/dist/types/library/scroll/FadeScroll.d.ts +15 -15
- package/dist/types/library/scroll/FadeScroll.d.ts.map +1 -1
- package/dist/types/library/scroll/FlipScroll.d.ts +15 -15
- package/dist/types/library/scroll/FlipScroll.d.ts.map +1 -1
- package/dist/types/library/scroll/GrowScroll.d.ts +15 -15
- package/dist/types/library/scroll/GrowScroll.d.ts.map +1 -1
- package/dist/types/library/scroll/MoveScroll.d.ts +15 -15
- package/dist/types/library/scroll/MoveScroll.d.ts.map +1 -1
- package/dist/types/library/scroll/PanScroll.d.ts +15 -15
- package/dist/types/library/scroll/PanScroll.d.ts.map +1 -1
- package/dist/types/library/scroll/ParallaxScroll.d.ts +15 -15
- package/dist/types/library/scroll/ParallaxScroll.d.ts.map +1 -1
- package/dist/types/library/scroll/RevealScroll.d.ts +15 -15
- package/dist/types/library/scroll/RevealScroll.d.ts.map +1 -1
- package/dist/types/library/scroll/ShapeScroll.d.ts +15 -15
- package/dist/types/library/scroll/ShapeScroll.d.ts.map +1 -1
- package/dist/types/library/scroll/ShrinkScroll.d.ts +15 -15
- package/dist/types/library/scroll/ShrinkScroll.d.ts.map +1 -1
- package/dist/types/library/scroll/ShuttersScroll.d.ts +15 -15
- package/dist/types/library/scroll/ShuttersScroll.d.ts.map +1 -1
- package/dist/types/library/scroll/SkewPanScroll.d.ts +15 -15
- package/dist/types/library/scroll/SkewPanScroll.d.ts.map +1 -1
- package/dist/types/library/scroll/SlideScroll.d.ts +15 -15
- package/dist/types/library/scroll/SlideScroll.d.ts.map +1 -1
- package/dist/types/library/scroll/Spin3dScroll.d.ts +15 -15
- package/dist/types/library/scroll/Spin3dScroll.d.ts.map +1 -1
- package/dist/types/library/scroll/SpinScroll.d.ts +15 -15
- package/dist/types/library/scroll/SpinScroll.d.ts.map +1 -1
- package/dist/types/library/scroll/StretchScroll.d.ts +30 -30
- package/dist/types/library/scroll/StretchScroll.d.ts.map +1 -1
- package/dist/types/library/scroll/TiltScroll.d.ts +30 -30
- package/dist/types/library/scroll/TiltScroll.d.ts.map +1 -1
- package/dist/types/library/scroll/TurnScroll.d.ts +18 -18
- package/dist/types/library/scroll/TurnScroll.d.ts.map +1 -1
- package/dist/types/library/scroll/test/ArcScroll.spec.d.ts +2 -0
- package/dist/types/library/scroll/test/ArcScroll.spec.d.ts.map +1 -0
- package/dist/types/library/scroll/test/BlurScroll.spec.d.ts +2 -0
- package/dist/types/library/scroll/test/BlurScroll.spec.d.ts.map +1 -0
- package/dist/types/library/scroll/test/FadeScroll.spec.d.ts +2 -0
- package/dist/types/library/scroll/test/FadeScroll.spec.d.ts.map +1 -0
- package/dist/types/library/scroll/test/FlipScroll.spec.d.ts +2 -0
- package/dist/types/library/scroll/test/FlipScroll.spec.d.ts.map +1 -0
- package/dist/types/library/scroll/test/GrowScroll.spec.d.ts +2 -0
- package/dist/types/library/scroll/test/GrowScroll.spec.d.ts.map +1 -0
- package/dist/types/library/scroll/test/MoveScroll.spec.d.ts +2 -0
- package/dist/types/library/scroll/test/MoveScroll.spec.d.ts.map +1 -0
- package/dist/types/library/scroll/test/PanScroll.spec.d.ts +2 -0
- package/dist/types/library/scroll/test/PanScroll.spec.d.ts.map +1 -0
- package/dist/types/library/scroll/test/ParallaxScroll.spec.d.ts +2 -0
- package/dist/types/library/scroll/test/ParallaxScroll.spec.d.ts.map +1 -0
- package/dist/types/library/scroll/test/RevealScroll.spec.d.ts +2 -0
- package/dist/types/library/scroll/test/RevealScroll.spec.d.ts.map +1 -0
- package/dist/types/library/scroll/test/ShapeScroll.spec.d.ts +2 -0
- package/dist/types/library/scroll/test/ShapeScroll.spec.d.ts.map +1 -0
- package/dist/types/library/scroll/test/ShrinkScroll.spec.d.ts +2 -0
- package/dist/types/library/scroll/test/ShrinkScroll.spec.d.ts.map +1 -0
- package/dist/types/library/scroll/test/ShuttersScroll.spec.d.ts +2 -0
- package/dist/types/library/scroll/test/ShuttersScroll.spec.d.ts.map +1 -0
- package/dist/types/library/scroll/test/SkewPanScroll.spec.d.ts +2 -0
- package/dist/types/library/scroll/test/SkewPanScroll.spec.d.ts.map +1 -0
- package/dist/types/library/scroll/test/SlideScroll.spec.d.ts +2 -0
- package/dist/types/library/scroll/test/SlideScroll.spec.d.ts.map +1 -0
- package/dist/types/library/scroll/test/Spin3dScroll.spec.d.ts +2 -0
- package/dist/types/library/scroll/test/Spin3dScroll.spec.d.ts.map +1 -0
- package/dist/types/library/scroll/test/SpinScroll.spec.d.ts +2 -0
- package/dist/types/library/scroll/test/SpinScroll.spec.d.ts.map +1 -0
- package/dist/types/library/scroll/test/StretchScroll.spec.d.ts +2 -0
- package/dist/types/library/scroll/test/StretchScroll.spec.d.ts.map +1 -0
- package/dist/types/library/scroll/test/TiltScroll.spec.d.ts +2 -0
- package/dist/types/library/scroll/test/TiltScroll.spec.d.ts.map +1 -0
- package/dist/types/library/scroll/test/TurnScroll.spec.d.ts +2 -0
- package/dist/types/library/scroll/test/TurnScroll.spec.d.ts.map +1 -0
- package/dist/types/motion.d.ts.map +1 -1
- package/dist/types/types.d.ts +3 -3
- package/dist/types/types.d.ts.map +1 -1
- package/dist/types/utils.d.ts +11 -0
- package/dist/types/utils.d.ts.map +1 -1
- package/package.json +54 -74
- package/dist/cjs/AnimationGroup.js +0 -106
- package/dist/cjs/AnimationGroup.js.map +0 -1
- package/dist/cjs/CustomAnimation.js +0 -190
- package/dist/cjs/CustomAnimation.js.map +0 -1
- package/dist/cjs/api/common.js +0 -145
- package/dist/cjs/api/common.js.map +0 -1
- package/dist/cjs/api/cssAnimations.js +0 -58
- package/dist/cjs/api/cssAnimations.js.map +0 -1
- package/dist/cjs/api/prepare.js +0 -20
- package/dist/cjs/api/prepare.js.map +0 -1
- package/dist/cjs/api/webAnimations.js +0 -155
- package/dist/cjs/api/webAnimations.js.map +0 -1
- package/dist/cjs/easings.js +0 -272
- package/dist/cjs/easings.js.map +0 -1
- package/dist/cjs/external-types.d.js +0 -2
- package/dist/cjs/external-types.d.js.map +0 -1
- package/dist/cjs/index.js +0 -16
- package/dist/cjs/index.js.map +0 -1
- package/dist/cjs/library/backgroundScroll/BgCloseUp.js +0 -74
- package/dist/cjs/library/backgroundScroll/BgCloseUp.js.map +0 -1
- package/dist/cjs/library/backgroundScroll/BgFade.js +0 -51
- package/dist/cjs/library/backgroundScroll/BgFade.js.map +0 -1
- package/dist/cjs/library/backgroundScroll/BgFadeBack.js +0 -73
- package/dist/cjs/library/backgroundScroll/BgFadeBack.js.map +0 -1
- package/dist/cjs/library/backgroundScroll/BgFake3D.js +0 -103
- package/dist/cjs/library/backgroundScroll/BgFake3D.js.map +0 -1
- package/dist/cjs/library/backgroundScroll/BgPan.js +0 -50
- package/dist/cjs/library/backgroundScroll/BgPan.js.map +0 -1
- package/dist/cjs/library/backgroundScroll/BgParallax.js +0 -43
- package/dist/cjs/library/backgroundScroll/BgParallax.js.map +0 -1
- package/dist/cjs/library/backgroundScroll/BgPullBack.js +0 -45
- package/dist/cjs/library/backgroundScroll/BgPullBack.js.map +0 -1
- package/dist/cjs/library/backgroundScroll/BgReveal.js +0 -14
- package/dist/cjs/library/backgroundScroll/BgReveal.js.map +0 -1
- package/dist/cjs/library/backgroundScroll/BgRotate.js +0 -37
- package/dist/cjs/library/backgroundScroll/BgRotate.js.map +0 -1
- package/dist/cjs/library/backgroundScroll/BgSkew.js +0 -44
- package/dist/cjs/library/backgroundScroll/BgSkew.js.map +0 -1
- package/dist/cjs/library/backgroundScroll/BgZoom.js +0 -125
- package/dist/cjs/library/backgroundScroll/BgZoom.js.map +0 -1
- package/dist/cjs/library/backgroundScroll/ImageParallax.js +0 -58
- package/dist/cjs/library/backgroundScroll/ImageParallax.js.map +0 -1
- package/dist/cjs/library/backgroundScroll/index.js +0 -32
- package/dist/cjs/library/backgroundScroll/index.js.map +0 -1
- package/dist/cjs/library/backgroundScroll/test/testUtils.js +0 -8
- package/dist/cjs/library/backgroundScroll/test/testUtils.js.map +0 -1
- package/dist/cjs/library/backgroundScroll/utils.js +0 -37
- package/dist/cjs/library/backgroundScroll/utils.js.map +0 -1
- package/dist/cjs/library/entrance/ArcIn.js +0 -110
- package/dist/cjs/library/entrance/ArcIn.js.map +0 -1
- package/dist/cjs/library/entrance/BlurIn.js +0 -56
- package/dist/cjs/library/entrance/BlurIn.js.map +0 -1
- package/dist/cjs/library/entrance/BounceIn.js +0 -143
- package/dist/cjs/library/entrance/BounceIn.js.map +0 -1
- package/dist/cjs/library/entrance/CircleIn.js +0 -75
- package/dist/cjs/library/entrance/CircleIn.js.map +0 -1
- package/dist/cjs/library/entrance/CurveIn.js +0 -80
- package/dist/cjs/library/entrance/CurveIn.js.map +0 -1
- package/dist/cjs/library/entrance/DropIn.js +0 -64
- package/dist/cjs/library/entrance/DropIn.js.map +0 -1
- package/dist/cjs/library/entrance/ExpandIn.js +0 -121
- package/dist/cjs/library/entrance/ExpandIn.js.map +0 -1
- package/dist/cjs/library/entrance/FadeIn.js +0 -27
- package/dist/cjs/library/entrance/FadeIn.js.map +0 -1
- package/dist/cjs/library/entrance/FlipIn.js +0 -107
- package/dist/cjs/library/entrance/FlipIn.js.map +0 -1
- package/dist/cjs/library/entrance/FloatIn.js +0 -67
- package/dist/cjs/library/entrance/FloatIn.js.map +0 -1
- package/dist/cjs/library/entrance/FoldIn.js +0 -134
- package/dist/cjs/library/entrance/FoldIn.js.map +0 -1
- package/dist/cjs/library/entrance/GlideIn.js +0 -89
- package/dist/cjs/library/entrance/GlideIn.js.map +0 -1
- package/dist/cjs/library/entrance/GlitchIn.js +0 -29
- package/dist/cjs/library/entrance/GlitchIn.js.map +0 -1
- package/dist/cjs/library/entrance/GrowIn.js +0 -66
- package/dist/cjs/library/entrance/GrowIn.js.map +0 -1
- package/dist/cjs/library/entrance/PunchIn.js +0 -178
- package/dist/cjs/library/entrance/PunchIn.js.map +0 -1
- package/dist/cjs/library/entrance/RevealIn.js +0 -72
- package/dist/cjs/library/entrance/RevealIn.js.map +0 -1
- package/dist/cjs/library/entrance/ShapeIn.js +0 -75
- package/dist/cjs/library/entrance/ShapeIn.js.map +0 -1
- package/dist/cjs/library/entrance/ShuttersIn.js +0 -48
- package/dist/cjs/library/entrance/ShuttersIn.js.map +0 -1
- package/dist/cjs/library/entrance/SlideIn.js +0 -140
- package/dist/cjs/library/entrance/SlideIn.js.map +0 -1
- package/dist/cjs/library/entrance/SpinIn.js +0 -65
- package/dist/cjs/library/entrance/SpinIn.js.map +0 -1
- package/dist/cjs/library/entrance/TiltIn.js +0 -102
- package/dist/cjs/library/entrance/TiltIn.js.map +0 -1
- package/dist/cjs/library/entrance/TurnIn.js +0 -85
- package/dist/cjs/library/entrance/TurnIn.js.map +0 -1
- package/dist/cjs/library/entrance/WinkIn.js +0 -115
- package/dist/cjs/library/entrance/WinkIn.js.map +0 -1
- package/dist/cjs/library/entrance/index.js +0 -55
- package/dist/cjs/library/entrance/index.js.map +0 -1
- package/dist/cjs/library/entrance/test/testUtils.js +0 -8
- package/dist/cjs/library/entrance/test/testUtils.js.map +0 -1
- package/dist/cjs/library/mouse/AiryMouse.js +0 -76
- package/dist/cjs/library/mouse/AiryMouse.js.map +0 -1
- package/dist/cjs/library/mouse/BlobMouse.js +0 -70
- package/dist/cjs/library/mouse/BlobMouse.js.map +0 -1
- package/dist/cjs/library/mouse/BlurMouse.js +0 -94
- package/dist/cjs/library/mouse/BlurMouse.js.map +0 -1
- package/dist/cjs/library/mouse/BounceMouse.js +0 -26
- package/dist/cjs/library/mouse/BounceMouse.js.map +0 -1
- package/dist/cjs/library/mouse/CustomMouse.js +0 -65
- package/dist/cjs/library/mouse/CustomMouse.js.map +0 -1
- package/dist/cjs/library/mouse/ScaleMouse.js +0 -98
- package/dist/cjs/library/mouse/ScaleMouse.js.map +0 -1
- package/dist/cjs/library/mouse/SkewMouse.js +0 -92
- package/dist/cjs/library/mouse/SkewMouse.js.map +0 -1
- package/dist/cjs/library/mouse/SpinMouse.js +0 -41
- package/dist/cjs/library/mouse/SpinMouse.js.map +0 -1
- package/dist/cjs/library/mouse/SwivelMouse.js +0 -85
- package/dist/cjs/library/mouse/SwivelMouse.js.map +0 -1
- package/dist/cjs/library/mouse/Tilt3DMouse.js +0 -65
- package/dist/cjs/library/mouse/Tilt3DMouse.js.map +0 -1
- package/dist/cjs/library/mouse/Track3DMouse.js +0 -87
- package/dist/cjs/library/mouse/Track3DMouse.js.map +0 -1
- package/dist/cjs/library/mouse/TrackMouse.js +0 -65
- package/dist/cjs/library/mouse/TrackMouse.js.map +0 -1
- package/dist/cjs/library/mouse/index.js +0 -32
- package/dist/cjs/library/mouse/index.js.map +0 -1
- package/dist/cjs/library/ongoing/Blink.js +0 -120
- package/dist/cjs/library/ongoing/Blink.js.map +0 -1
- package/dist/cjs/library/ongoing/Bounce.js +0 -92
- package/dist/cjs/library/ongoing/Bounce.js.map +0 -1
- package/dist/cjs/library/ongoing/Breathe.js +0 -124
- package/dist/cjs/library/ongoing/Breathe.js.map +0 -1
- package/dist/cjs/library/ongoing/Cross.js +0 -262
- package/dist/cjs/library/ongoing/Cross.js.map +0 -1
- package/dist/cjs/library/ongoing/DVD.js +0 -84
- package/dist/cjs/library/ongoing/DVD.js.map +0 -1
- package/dist/cjs/library/ongoing/Flash.js +0 -45
- package/dist/cjs/library/ongoing/Flash.js.map +0 -1
- package/dist/cjs/library/ongoing/Flip.js +0 -67
- package/dist/cjs/library/ongoing/Flip.js.map +0 -1
- package/dist/cjs/library/ongoing/Fold.js +0 -167
- package/dist/cjs/library/ongoing/Fold.js.map +0 -1
- package/dist/cjs/library/ongoing/Jello.js +0 -72
- package/dist/cjs/library/ongoing/Jello.js.map +0 -1
- package/dist/cjs/library/ongoing/Poke.js +0 -102
- package/dist/cjs/library/ongoing/Poke.js.map +0 -1
- package/dist/cjs/library/ongoing/Pulse.js +0 -75
- package/dist/cjs/library/ongoing/Pulse.js.map +0 -1
- package/dist/cjs/library/ongoing/Rubber.js +0 -92
- package/dist/cjs/library/ongoing/Rubber.js.map +0 -1
- package/dist/cjs/library/ongoing/Spin.js +0 -55
- package/dist/cjs/library/ongoing/Spin.js.map +0 -1
- package/dist/cjs/library/ongoing/Swing.js +0 -130
- package/dist/cjs/library/ongoing/Swing.js.map +0 -1
- package/dist/cjs/library/ongoing/Wiggle.js +0 -88
- package/dist/cjs/library/ongoing/Wiggle.js.map +0 -1
- package/dist/cjs/library/ongoing/index.js +0 -41
- package/dist/cjs/library/ongoing/index.js.map +0 -1
- package/dist/cjs/library/ongoing/test/testUtils.js +0 -8
- package/dist/cjs/library/ongoing/test/testUtils.js.map +0 -1
- package/dist/cjs/library/scroll/ArcScroll.js +0 -58
- package/dist/cjs/library/scroll/ArcScroll.js.map +0 -1
- package/dist/cjs/library/scroll/BlurScroll.js +0 -43
- package/dist/cjs/library/scroll/BlurScroll.js.map +0 -1
- package/dist/cjs/library/scroll/FadeScroll.js +0 -36
- package/dist/cjs/library/scroll/FadeScroll.js.map +0 -1
- package/dist/cjs/library/scroll/FlipScroll.js +0 -50
- package/dist/cjs/library/scroll/FlipScroll.js.map +0 -1
- package/dist/cjs/library/scroll/GrowScroll.js +0 -160
- package/dist/cjs/library/scroll/GrowScroll.js.map +0 -1
- package/dist/cjs/library/scroll/MoveScroll.js +0 -123
- package/dist/cjs/library/scroll/MoveScroll.js.map +0 -1
- package/dist/cjs/library/scroll/PanScroll.js +0 -77
- package/dist/cjs/library/scroll/PanScroll.js.map +0 -1
- package/dist/cjs/library/scroll/ParallaxScroll.js +0 -56
- package/dist/cjs/library/scroll/ParallaxScroll.js.map +0 -1
- package/dist/cjs/library/scroll/RevealScroll.js +0 -92
- package/dist/cjs/library/scroll/RevealScroll.js.map +0 -1
- package/dist/cjs/library/scroll/ShapeScroll.js +0 -114
- package/dist/cjs/library/scroll/ShapeScroll.js.map +0 -1
- package/dist/cjs/library/scroll/ShrinkScroll.js +0 -157
- package/dist/cjs/library/scroll/ShrinkScroll.js.map +0 -1
- package/dist/cjs/library/scroll/ShuttersScroll.js +0 -67
- package/dist/cjs/library/scroll/ShuttersScroll.js.map +0 -1
- package/dist/cjs/library/scroll/SkewPanScroll.js +0 -113
- package/dist/cjs/library/scroll/SkewPanScroll.js.map +0 -1
- package/dist/cjs/library/scroll/SlideScroll.js +0 -115
- package/dist/cjs/library/scroll/SlideScroll.js.map +0 -1
- package/dist/cjs/library/scroll/Spin3dScroll.js +0 -119
- package/dist/cjs/library/scroll/Spin3dScroll.js.map +0 -1
- package/dist/cjs/library/scroll/SpinScroll.js +0 -51
- package/dist/cjs/library/scroll/SpinScroll.js.map +0 -1
- package/dist/cjs/library/scroll/StretchScroll.js +0 -105
- package/dist/cjs/library/scroll/StretchScroll.js.map +0 -1
- package/dist/cjs/library/scroll/TiltScroll.js +0 -129
- package/dist/cjs/library/scroll/TiltScroll.js.map +0 -1
- package/dist/cjs/library/scroll/TurnScroll.js +0 -125
- package/dist/cjs/library/scroll/TurnScroll.js.map +0 -1
- package/dist/cjs/library/scroll/index.js +0 -46
- package/dist/cjs/library/scroll/index.js.map +0 -1
- package/dist/cjs/library/scroll/test/testUtils.js +0 -8
- package/dist/cjs/library/scroll/test/testUtils.js.map +0 -1
- package/dist/cjs/playground/animationMotionBgScroll.stories.js +0 -369
- package/dist/cjs/playground/animationMotionBgScroll.stories.js.map +0 -1
- package/dist/cjs/playground/animationsMotion.stories.js +0 -199
- package/dist/cjs/playground/animationsMotion.stories.js.map +0 -1
- package/dist/cjs/playground/animationsMotionMouse.stories.js +0 -266
- package/dist/cjs/playground/animationsMotionMouse.stories.js.map +0 -1
- package/dist/cjs/playground/animationsMotionOngoing.stories.js +0 -195
- package/dist/cjs/playground/animationsMotionOngoing.stories.js.map +0 -1
- package/dist/cjs/playground/animationsMotionScroll.stories.js +0 -270
- package/dist/cjs/playground/animationsMotionScroll.stories.js.map +0 -1
- package/dist/cjs/playground/controls.js +0 -334
- package/dist/cjs/playground/controls.js.map +0 -1
- package/dist/cjs/playground/mouse-parallax-components/plastic.jpeg +0 -0
- package/dist/cjs/playground/mouse-parallax-components/vector.svg +0 -19
- package/dist/cjs/playground/mouseComponent.js +0 -114
- package/dist/cjs/playground/mouseComponent.js.map +0 -1
- package/dist/cjs/playground/playground-common.js +0 -84
- package/dist/cjs/playground/playground-common.js.map +0 -1
- package/dist/cjs/playground/playground.module.scss +0 -381
- package/dist/cjs/test-types.d.js +0 -2
- package/dist/cjs/test-types.d.js.map +0 -1
- package/dist/cjs/types.js +0 -2
- package/dist/cjs/types.js.map +0 -1
- package/dist/cjs/utils.js +0 -305
- package/dist/cjs/utils.js.map +0 -1
- package/dist/esm/AnimationGroup.js +0 -100
- package/dist/esm/AnimationGroup.js.map +0 -1
- package/dist/esm/CustomAnimation.js +0 -184
- package/dist/esm/CustomAnimation.js.map +0 -1
- package/dist/esm/api/common.js +0 -132
- package/dist/esm/api/common.js.map +0 -1
- package/dist/esm/api/cssAnimations.js +0 -53
- package/dist/esm/api/cssAnimations.js.map +0 -1
- package/dist/esm/api/prepare.js +0 -16
- package/dist/esm/api/prepare.js.map +0 -1
- package/dist/esm/api/webAnimations.js +0 -152
- package/dist/esm/api/webAnimations.js.map +0 -1
- package/dist/esm/easings.js +0 -248
- package/dist/esm/easings.js.map +0 -1
- package/dist/esm/external-types.d.js +0 -2
- package/dist/esm/external-types.d.js.map +0 -1
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/library/backgroundScroll/BgCloseUp.js +0 -70
- package/dist/esm/library/backgroundScroll/BgCloseUp.js.map +0 -1
- package/dist/esm/library/backgroundScroll/BgFade.js +0 -47
- package/dist/esm/library/backgroundScroll/BgFade.js.map +0 -1
- package/dist/esm/library/backgroundScroll/BgFadeBack.js +0 -69
- package/dist/esm/library/backgroundScroll/BgFadeBack.js.map +0 -1
- package/dist/esm/library/backgroundScroll/BgFake3D.js +0 -99
- package/dist/esm/library/backgroundScroll/BgFake3D.js.map +0 -1
- package/dist/esm/library/backgroundScroll/BgPan.js +0 -46
- package/dist/esm/library/backgroundScroll/BgPan.js.map +0 -1
- package/dist/esm/library/backgroundScroll/BgParallax.js +0 -39
- package/dist/esm/library/backgroundScroll/BgParallax.js.map +0 -1
- package/dist/esm/library/backgroundScroll/BgPullBack.js +0 -41
- package/dist/esm/library/backgroundScroll/BgPullBack.js.map +0 -1
- package/dist/esm/library/backgroundScroll/BgReveal.js +0 -10
- package/dist/esm/library/backgroundScroll/BgReveal.js.map +0 -1
- package/dist/esm/library/backgroundScroll/BgRotate.js +0 -33
- package/dist/esm/library/backgroundScroll/BgRotate.js.map +0 -1
- package/dist/esm/library/backgroundScroll/BgSkew.js +0 -40
- package/dist/esm/library/backgroundScroll/BgSkew.js.map +0 -1
- package/dist/esm/library/backgroundScroll/BgZoom.js +0 -121
- package/dist/esm/library/backgroundScroll/BgZoom.js.map +0 -1
- package/dist/esm/library/backgroundScroll/ImageParallax.js +0 -54
- package/dist/esm/library/backgroundScroll/ImageParallax.js.map +0 -1
- package/dist/esm/library/backgroundScroll/index.js.map +0 -1
- package/dist/esm/library/backgroundScroll/test/testUtils.js +0 -4
- package/dist/esm/library/backgroundScroll/test/testUtils.js.map +0 -1
- package/dist/esm/library/backgroundScroll/utils.js +0 -31
- package/dist/esm/library/backgroundScroll/utils.js.map +0 -1
- package/dist/esm/library/entrance/ArcIn.js +0 -106
- package/dist/esm/library/entrance/ArcIn.js.map +0 -1
- package/dist/esm/library/entrance/BlurIn.js +0 -53
- package/dist/esm/library/entrance/BlurIn.js.map +0 -1
- package/dist/esm/library/entrance/BounceIn.js +0 -143
- package/dist/esm/library/entrance/BounceIn.js.map +0 -1
- package/dist/esm/library/entrance/CircleIn.js +0 -71
- package/dist/esm/library/entrance/CircleIn.js.map +0 -1
- package/dist/esm/library/entrance/CurveIn.js +0 -76
- package/dist/esm/library/entrance/CurveIn.js.map +0 -1
- package/dist/esm/library/entrance/DropIn.js +0 -61
- package/dist/esm/library/entrance/DropIn.js.map +0 -1
- package/dist/esm/library/entrance/ExpandIn.js +0 -117
- package/dist/esm/library/entrance/ExpandIn.js.map +0 -1
- package/dist/esm/library/entrance/FadeIn.js +0 -21
- package/dist/esm/library/entrance/FadeIn.js.map +0 -1
- package/dist/esm/library/entrance/FlipIn.js +0 -100
- package/dist/esm/library/entrance/FlipIn.js.map +0 -1
- package/dist/esm/library/entrance/FloatIn.js +0 -64
- package/dist/esm/library/entrance/FloatIn.js.map +0 -1
- package/dist/esm/library/entrance/FoldIn.js +0 -127
- package/dist/esm/library/entrance/FoldIn.js.map +0 -1
- package/dist/esm/library/entrance/GlideIn.js +0 -85
- package/dist/esm/library/entrance/GlideIn.js.map +0 -1
- package/dist/esm/library/entrance/GlitchIn.js +0 -22
- package/dist/esm/library/entrance/GlitchIn.js.map +0 -1
- package/dist/esm/library/entrance/GrowIn.js +0 -63
- package/dist/esm/library/entrance/GrowIn.js.map +0 -1
- package/dist/esm/library/entrance/PunchIn.js +0 -175
- package/dist/esm/library/entrance/PunchIn.js.map +0 -1
- package/dist/esm/library/entrance/RevealIn.js +0 -65
- package/dist/esm/library/entrance/RevealIn.js.map +0 -1
- package/dist/esm/library/entrance/ShapeIn.js +0 -72
- package/dist/esm/library/entrance/ShapeIn.js.map +0 -1
- package/dist/esm/library/entrance/ShuttersIn.js +0 -45
- package/dist/esm/library/entrance/ShuttersIn.js.map +0 -1
- package/dist/esm/library/entrance/SlideIn.js +0 -133
- package/dist/esm/library/entrance/SlideIn.js.map +0 -1
- package/dist/esm/library/entrance/SpinIn.js +0 -62
- package/dist/esm/library/entrance/SpinIn.js.map +0 -1
- package/dist/esm/library/entrance/TiltIn.js +0 -98
- package/dist/esm/library/entrance/TiltIn.js.map +0 -1
- package/dist/esm/library/entrance/TurnIn.js +0 -82
- package/dist/esm/library/entrance/TurnIn.js.map +0 -1
- package/dist/esm/library/entrance/WinkIn.js +0 -108
- package/dist/esm/library/entrance/WinkIn.js.map +0 -1
- package/dist/esm/library/entrance/index.js.map +0 -1
- package/dist/esm/library/entrance/test/testUtils.js +0 -4
- package/dist/esm/library/entrance/test/testUtils.js.map +0 -1
- package/dist/esm/library/mouse/AiryMouse.js +0 -73
- package/dist/esm/library/mouse/AiryMouse.js.map +0 -1
- package/dist/esm/library/mouse/BlobMouse.js +0 -67
- package/dist/esm/library/mouse/BlobMouse.js.map +0 -1
- package/dist/esm/library/mouse/BlurMouse.js +0 -91
- package/dist/esm/library/mouse/BlurMouse.js.map +0 -1
- package/dist/esm/library/mouse/BounceMouse.js +0 -21
- package/dist/esm/library/mouse/BounceMouse.js.map +0 -1
- package/dist/esm/library/mouse/CustomMouse.js +0 -59
- package/dist/esm/library/mouse/CustomMouse.js.map +0 -1
- package/dist/esm/library/mouse/ScaleMouse.js +0 -95
- package/dist/esm/library/mouse/ScaleMouse.js.map +0 -1
- package/dist/esm/library/mouse/SkewMouse.js +0 -89
- package/dist/esm/library/mouse/SkewMouse.js.map +0 -1
- package/dist/esm/library/mouse/SpinMouse.js +0 -38
- package/dist/esm/library/mouse/SpinMouse.js.map +0 -1
- package/dist/esm/library/mouse/SwivelMouse.js +0 -82
- package/dist/esm/library/mouse/SwivelMouse.js.map +0 -1
- package/dist/esm/library/mouse/Tilt3DMouse.js +0 -62
- package/dist/esm/library/mouse/Tilt3DMouse.js.map +0 -1
- package/dist/esm/library/mouse/Track3DMouse.js +0 -84
- package/dist/esm/library/mouse/Track3DMouse.js.map +0 -1
- package/dist/esm/library/mouse/TrackMouse.js +0 -62
- package/dist/esm/library/mouse/TrackMouse.js.map +0 -1
- package/dist/esm/library/mouse/index.js.map +0 -1
- package/dist/esm/library/ongoing/Blink.js +0 -115
- package/dist/esm/library/ongoing/Blink.js.map +0 -1
- package/dist/esm/library/ongoing/Bounce.js +0 -92
- package/dist/esm/library/ongoing/Bounce.js.map +0 -1
- package/dist/esm/library/ongoing/Breathe.js +0 -122
- package/dist/esm/library/ongoing/Breathe.js.map +0 -1
- package/dist/esm/library/ongoing/Cross.js +0 -273
- package/dist/esm/library/ongoing/Cross.js.map +0 -1
- package/dist/esm/library/ongoing/DVD.js +0 -79
- package/dist/esm/library/ongoing/DVD.js.map +0 -1
- package/dist/esm/library/ongoing/Flash.js +0 -42
- package/dist/esm/library/ongoing/Flash.js.map +0 -1
- package/dist/esm/library/ongoing/Flip.js +0 -64
- package/dist/esm/library/ongoing/Flip.js.map +0 -1
- package/dist/esm/library/ongoing/Fold.js +0 -165
- package/dist/esm/library/ongoing/Fold.js.map +0 -1
- package/dist/esm/library/ongoing/Jello.js +0 -70
- package/dist/esm/library/ongoing/Jello.js.map +0 -1
- package/dist/esm/library/ongoing/Poke.js +0 -100
- package/dist/esm/library/ongoing/Poke.js.map +0 -1
- package/dist/esm/library/ongoing/Pulse.js +0 -73
- package/dist/esm/library/ongoing/Pulse.js.map +0 -1
- package/dist/esm/library/ongoing/Rubber.js +0 -90
- package/dist/esm/library/ongoing/Rubber.js.map +0 -1
- package/dist/esm/library/ongoing/Spin.js +0 -52
- package/dist/esm/library/ongoing/Spin.js.map +0 -1
- package/dist/esm/library/ongoing/Swing.js +0 -128
- package/dist/esm/library/ongoing/Swing.js.map +0 -1
- package/dist/esm/library/ongoing/Wiggle.js +0 -86
- package/dist/esm/library/ongoing/Wiggle.js.map +0 -1
- package/dist/esm/library/ongoing/index.js.map +0 -1
- package/dist/esm/library/ongoing/test/testUtils.js +0 -4
- package/dist/esm/library/ongoing/test/testUtils.js.map +0 -1
- package/dist/esm/library/scroll/ArcScroll.js +0 -54
- package/dist/esm/library/scroll/ArcScroll.js.map +0 -1
- package/dist/esm/library/scroll/BlurScroll.js +0 -39
- package/dist/esm/library/scroll/BlurScroll.js.map +0 -1
- package/dist/esm/library/scroll/FadeScroll.js +0 -32
- package/dist/esm/library/scroll/FadeScroll.js.map +0 -1
- package/dist/esm/library/scroll/FlipScroll.js +0 -46
- package/dist/esm/library/scroll/FlipScroll.js.map +0 -1
- package/dist/esm/library/scroll/GrowScroll.js +0 -157
- package/dist/esm/library/scroll/GrowScroll.js.map +0 -1
- package/dist/esm/library/scroll/MoveScroll.js +0 -120
- package/dist/esm/library/scroll/MoveScroll.js.map +0 -1
- package/dist/esm/library/scroll/PanScroll.js +0 -73
- package/dist/esm/library/scroll/PanScroll.js.map +0 -1
- package/dist/esm/library/scroll/ParallaxScroll.js +0 -53
- package/dist/esm/library/scroll/ParallaxScroll.js.map +0 -1
- package/dist/esm/library/scroll/RevealScroll.js +0 -88
- package/dist/esm/library/scroll/RevealScroll.js.map +0 -1
- package/dist/esm/library/scroll/ShapeScroll.js +0 -110
- package/dist/esm/library/scroll/ShapeScroll.js.map +0 -1
- package/dist/esm/library/scroll/ShrinkScroll.js +0 -154
- package/dist/esm/library/scroll/ShrinkScroll.js.map +0 -1
- package/dist/esm/library/scroll/ShuttersScroll.js +0 -63
- package/dist/esm/library/scroll/ShuttersScroll.js.map +0 -1
- package/dist/esm/library/scroll/SkewPanScroll.js +0 -109
- package/dist/esm/library/scroll/SkewPanScroll.js.map +0 -1
- package/dist/esm/library/scroll/SlideScroll.js +0 -111
- package/dist/esm/library/scroll/SlideScroll.js.map +0 -1
- package/dist/esm/library/scroll/Spin3dScroll.js +0 -116
- package/dist/esm/library/scroll/Spin3dScroll.js.map +0 -1
- package/dist/esm/library/scroll/SpinScroll.js +0 -47
- package/dist/esm/library/scroll/SpinScroll.js.map +0 -1
- package/dist/esm/library/scroll/StretchScroll.js +0 -101
- package/dist/esm/library/scroll/StretchScroll.js.map +0 -1
- package/dist/esm/library/scroll/TiltScroll.js +0 -126
- package/dist/esm/library/scroll/TiltScroll.js.map +0 -1
- package/dist/esm/library/scroll/TurnScroll.js +0 -121
- package/dist/esm/library/scroll/TurnScroll.js.map +0 -1
- package/dist/esm/library/scroll/index.js.map +0 -1
- package/dist/esm/library/scroll/test/testUtils.js +0 -4
- package/dist/esm/library/scroll/test/testUtils.js.map +0 -1
- package/dist/esm/motion.js +0 -142
- package/dist/esm/motion.js.map +0 -1
- package/dist/esm/playground/animationMotionBgScroll.stories.js +0 -284
- package/dist/esm/playground/animationMotionBgScroll.stories.js.map +0 -1
- package/dist/esm/playground/animationsMotion.stories.js +0 -132
- package/dist/esm/playground/animationsMotion.stories.js.map +0 -1
- package/dist/esm/playground/animationsMotionMouse.stories.js +0 -187
- package/dist/esm/playground/animationsMotionMouse.stories.js.map +0 -1
- package/dist/esm/playground/animationsMotionOngoing.stories.js +0 -128
- package/dist/esm/playground/animationsMotionOngoing.stories.js.map +0 -1
- package/dist/esm/playground/animationsMotionScroll.stories.js +0 -198
- package/dist/esm/playground/animationsMotionScroll.stories.js.map +0 -1
- package/dist/esm/playground/controls.js +0 -168
- package/dist/esm/playground/controls.js.map +0 -1
- package/dist/esm/playground/mouse-parallax-components/plastic.jpeg +0 -0
- package/dist/esm/playground/mouse-parallax-components/vector.svg +0 -19
- package/dist/esm/playground/mouseComponent.js +0 -61
- package/dist/esm/playground/mouseComponent.js.map +0 -1
- package/dist/esm/playground/playground-common.js +0 -91
- package/dist/esm/playground/playground-common.js.map +0 -1
- package/dist/esm/playground/playground.module.scss +0 -381
- package/dist/esm/test-types.d.js +0 -2
- package/dist/esm/test-types.d.js.map +0 -1
- package/dist/esm/types.js +0 -2
- package/dist/esm/types.js.map +0 -1
- package/dist/esm/utils.js +0 -332
- package/dist/esm/utils.js.map +0 -1
- package/dist/types/library/ongoing/Blink.d.ts +0 -19
- package/dist/types/library/ongoing/Blink.d.ts.map +0 -1
- package/dist/types/playground/animationMotionBgScroll.stories.d.ts +0 -6
- package/dist/types/playground/animationMotionBgScroll.stories.d.ts.map +0 -1
- package/dist/types/playground/animationsMotion.stories.d.ts +0 -6
- package/dist/types/playground/animationsMotion.stories.d.ts.map +0 -1
- package/dist/types/playground/animationsMotionMouse.stories.d.ts +0 -6
- package/dist/types/playground/animationsMotionMouse.stories.d.ts.map +0 -1
- package/dist/types/playground/animationsMotionOngoing.stories.d.ts +0 -6
- package/dist/types/playground/animationsMotionOngoing.stories.d.ts.map +0 -1
- package/dist/types/playground/animationsMotionScroll.stories.d.ts +0 -6
- package/dist/types/playground/animationsMotionScroll.stories.d.ts.map +0 -1
- package/dist/types/playground/controls.d.ts +0 -53
- package/dist/types/playground/controls.d.ts.map +0 -1
- package/dist/types/playground/mouseComponent.d.ts +0 -10
- package/dist/types/playground/mouseComponent.d.ts.map +0 -1
- package/dist/types/playground/playground-common.d.ts +0 -34
- package/dist/types/playground/playground-common.d.ts.map +0 -1
package/dist/cjs/motion.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_AnimationGroup","require","_utils","exports","getEasing","_webAnimations","getWebAnimation","_cssAnimations","getCSSAnimation","_prepare","prepareAnimation","_common","getElementCSSAnimation","target","animationOptions","namedEffect","getNamedEffect","style","effectId","getElementAnimation","effectNames","getNames","element","getElement","animations","getAnimations","animationNames","map","anim","animationName","filteredAnimations","forEach","name","includes","push","find","length","AnimationGroup","filter","id","startsWith","getScrubScene","trigger","sceneOptions","disabled","allowActiveEvent","rest","animation","typeSpecificOptions","window","ViewTimeline","viewSource","componentId","ready","partialAnimation","start","end","getProgress","effect","__","p","activeDuration","getComputedTiming","delay","getTiming","currentTime","destroy","cancel","centeredToTarget","transitionDuration","transitionEasing","customEffect","getJsEasing","v","active","progress","getAnimation","reducedMotion","Promise","resolve"],"sources":["../../src/motion.ts"],"sourcesContent":["import type {\n AnimationOptions,\n ScrubAnimationOptions,\n TriggerVariant,\n MouseAnimationInstance,\n AnimationEffectAPI,\n CustomMouseAnimationInstance,\n ScrubScrollScene,\n ScrubPointerScene,\n} from './types';\nimport { AnimationGroup } from './AnimationGroup';\nimport { getEasing, getJsEasing } from './utils';\nimport { getWebAnimation } from './api/webAnimations';\nimport { getCSSAnimation } from './api/cssAnimations';\nimport { prepareAnimation } from './api/prepare';\nimport { getElement, getNamedEffect } from './api/common';\n\nfunction getElementCSSAnimation(\n target: HTMLElement | string | null,\n animationOptions: AnimationOptions,\n): AnimationGroup | null {\n const namedEffect = getNamedEffect(\n animationOptions,\n ) as AnimationEffectAPI<any> | null;\n\n if (!namedEffect) {\n return null;\n }\n\n if (!namedEffect.style) {\n // if this named effect does not have a style method, attempt to get group of Web Animations\n if (animationOptions.effectId && target) {\n return getElementAnimation(target, animationOptions.effectId);\n }\n\n return null;\n }\n\n const effectNames = namedEffect.getNames(animationOptions);\n const element = typeof target === 'string' ? getElement(target) : target;\n const animations = element?.getAnimations();\n const animationNames =\n animations?.map((anim) => (anim as CSSAnimation).animationName) ||\n ([] as string[]);\n const filteredAnimations: CSSAnimation[] = [];\n\n effectNames.forEach((name) => {\n if (animationNames.includes(name)) {\n filteredAnimations.push(\n animations?.find(\n (anim) => (anim as CSSAnimation).animationName === name,\n ) as CSSAnimation,\n );\n }\n });\n\n return filteredAnimations?.length\n ? new AnimationGroup(filteredAnimations)\n : null;\n}\n\nfunction getElementAnimation(\n target: HTMLElement | string,\n effectId: string,\n): AnimationGroup | null {\n const element = typeof target === 'string' ? getElement(target) : target;\n // somehow get the right animations\n const animations = element\n ?.getAnimations()\n .filter((anim: Animation | CSSAnimation) => {\n const id = anim.id || (anim as CSSAnimation).animationName;\n // if no id/name just return all animations\n return id ? id.startsWith(effectId) : true;\n });\n\n return animations?.length ? new AnimationGroup(animations) : null;\n}\n\nfunction getScrubScene(\n target: HTMLElement | string | null,\n animationOptions: AnimationOptions,\n trigger: Partial<TriggerVariant> & { element?: HTMLElement },\n sceneOptions: Record<string, any> = {},\n): ScrubScrollScene[] | ScrubPointerScene | null {\n const { disabled, allowActiveEvent, ...rest } = sceneOptions;\n const animation = getWebAnimation(target, animationOptions, trigger, rest);\n\n if (!animation) {\n return null;\n }\n\n let typeSpecificOptions = {} as Record<string, any>;\n\n if (trigger.trigger === 'view-progress' && !window.ViewTimeline) {\n // TODO(ameerf): consider doing this only for bgscrub to not affect the other scroll effects\n const viewSource = trigger.element || getElement(trigger.componentId!);\n const { ready } = animation as AnimationGroup;\n\n return (animation as AnimationGroup).animations.map((partialAnimation) => {\n return {\n /* we use getters for start and end in order to access the animation's start and end\n only when initializing the scrub scene rather than immediately */\n get start() {\n return partialAnimation.start;\n },\n get end() {\n return partialAnimation.end;\n },\n viewSource,\n ready,\n getProgress() {\n return (animation as AnimationGroup).getProgress();\n },\n effect(__: any, p: number) {\n const { activeDuration } =\n partialAnimation.effect!.getComputedTiming();\n const { delay } = partialAnimation.effect!.getTiming();\n\n partialAnimation.currentTime =\n ((delay || 0) + ((activeDuration as number) || 0)) * p;\n },\n disabled,\n destroy() {\n partialAnimation.cancel();\n },\n } as ScrubScrollScene;\n });\n } else if (trigger.trigger === 'pointer-move') {\n const { centeredToTarget, transitionDuration, transitionEasing } =\n animationOptions as ScrubAnimationOptions;\n\n typeSpecificOptions = {\n target: (animation as MouseAnimationInstance).target,\n centeredToTarget,\n allowActiveEvent,\n };\n\n if (animationOptions.customEffect && transitionDuration) {\n typeSpecificOptions.transitionDuration = transitionDuration;\n typeSpecificOptions.transitionEasing = getJsEasing(transitionEasing);\n }\n }\n\n return {\n ...typeSpecificOptions,\n getProgress() {\n return (\n animation as AnimationGroup | CustomMouseAnimationInstance\n ).getProgress();\n },\n effect(\n __: any,\n p: number | { x: number; y: number },\n v?: { x: number; y: number },\n active?: boolean,\n ) {\n animation.progress(\n v\n ? {\n // @ts-expect-error spread error on p\n ...p,\n v,\n active,\n }\n : p,\n );\n },\n disabled,\n destroy() {\n animation.cancel();\n },\n } as ScrubPointerScene;\n}\n\nfunction getAnimation(\n target: HTMLElement | string | null,\n animationOptions: AnimationOptions,\n trigger?: Partial<TriggerVariant> & { element?: HTMLElement },\n reducedMotion: boolean = false,\n): AnimationGroup | MouseAnimationInstance | null {\n const animation = getElementCSSAnimation(target, animationOptions);\n\n if (animation) {\n animation.ready = new Promise((resolve) => {\n prepareAnimation(target, animationOptions, resolve);\n });\n\n return animation;\n }\n\n return getWebAnimation(target, animationOptions, trigger, { reducedMotion });\n}\n\nexport {\n getCSSAnimation,\n getWebAnimation,\n getElementCSSAnimation,\n getElementAnimation,\n getScrubScene,\n prepareAnimation,\n getAnimation,\n getEasing,\n};\n\nexport type { AnimationGroup };\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"motion.js","sources":["../../src/AnimationGroup.ts","../../src/easings.ts","../../src/utils.ts","../../src/CustomAnimation.ts","../../src/library/scroll/ArcScroll.ts","../../src/library/scroll/BlurScroll.ts","../../src/library/scroll/FadeScroll.ts","../../src/library/scroll/FlipScroll.ts","../../src/library/scroll/GrowScroll.ts","../../src/library/scroll/MoveScroll.ts","../../src/library/scroll/PanScroll.ts","../../src/library/scroll/ParallaxScroll.ts","../../src/library/scroll/RevealScroll.ts","../../src/library/scroll/ShapeScroll.ts","../../src/library/scroll/ShuttersScroll.ts","../../src/library/scroll/ShrinkScroll.ts","../../src/library/scroll/SkewPanScroll.ts","../../src/library/scroll/SlideScroll.ts","../../src/library/scroll/Spin3dScroll.ts","../../src/library/scroll/SpinScroll.ts","../../src/library/scroll/StretchScroll.ts","../../src/library/scroll/TiltScroll.ts","../../src/library/scroll/TurnScroll.ts","../../src/library/scroll/index.ts","../../src/library/entrance/ArcIn.ts","../../src/library/entrance/BlurIn.ts","../../src/library/entrance/ShuttersIn.ts","../../src/library/entrance/BounceIn.ts","../../src/library/entrance/CurveIn.ts","../../src/library/entrance/CircleIn.ts","../../src/library/entrance/DropIn.ts","../../src/library/entrance/ExpandIn.ts","../../src/library/entrance/FadeIn.ts","../../src/library/entrance/FlipIn.ts","../../src/library/entrance/FloatIn.ts","../../src/library/entrance/FoldIn.ts","../../src/library/entrance/GlideIn.ts","../../src/library/entrance/GlitchIn.ts","../../src/library/entrance/GrowIn.ts","../../src/library/entrance/PunchIn.ts","../../src/library/entrance/ShapeIn.ts","../../src/library/entrance/RevealIn.ts","../../src/library/entrance/SlideIn.ts","../../src/library/entrance/SpinIn.ts","../../src/library/entrance/TiltIn.ts","../../src/library/entrance/TurnIn.ts","../../src/library/entrance/WinkIn.ts","../../src/library/entrance/index.ts","../../src/library/ongoing/Bounce.ts","../../src/library/ongoing/Breathe.ts","../../src/library/ongoing/Cross.ts","../../src/library/ongoing/Flash.ts","../../src/library/ongoing/Flip.ts","../../src/library/ongoing/Fold.ts","../../src/library/ongoing/Jello.ts","../../src/library/ongoing/Poke.ts","../../src/library/ongoing/Rubber.ts","../../src/library/ongoing/Pulse.ts","../../src/library/ongoing/Spin.ts","../../src/library/ongoing/Swing.ts","../../src/library/ongoing/Wiggle.ts","../../src/library/ongoing/index.ts","../../src/library/mouse/CustomMouse.ts","../../src/library/mouse/AiryMouse.ts","../../src/library/mouse/BlobMouse.ts","../../src/library/mouse/BlurMouse.ts","../../src/library/mouse/TrackMouse.ts","../../src/library/mouse/BounceMouse.ts","../../src/library/mouse/ScaleMouse.ts","../../src/library/mouse/SkewMouse.ts","../../src/library/mouse/SpinMouse.ts","../../src/library/mouse/SwivelMouse.ts","../../src/library/mouse/Tilt3DMouse.ts","../../src/library/mouse/Track3DMouse.ts","../../src/library/mouse/index.ts","../../src/library/backgroundScroll/utils.ts","../../src/library/backgroundScroll/BgCloseUp.ts","../../src/library/backgroundScroll/BgFade.ts","../../src/library/backgroundScroll/BgFadeBack.ts","../../src/library/backgroundScroll/BgFake3D.ts","../../src/library/backgroundScroll/BgPan.ts","../../src/library/backgroundScroll/BgParallax.ts","../../src/library/backgroundScroll/BgPullBack.ts","../../src/library/backgroundScroll/BgReveal.ts","../../src/library/backgroundScroll/BgRotate.ts","../../src/library/backgroundScroll/BgSkew.ts","../../src/library/backgroundScroll/BgZoom.ts","../../src/library/backgroundScroll/ImageParallax.ts","../../src/library/backgroundScroll/index.ts","../../../../node_modules/fastdom/fastdom.js","../../src/api/common.ts","../../src/api/webAnimations.ts","../../src/api/cssAnimations.ts","../../src/api/prepare.ts","../../src/motion.ts"],"sourcesContent":["import { AnimationGroupOptions, RangeOffset } from './types';\n\n/**\n * @class AnimationGroup\n *\n * A wrapper object for simulating a GroupEffect and managing multiple animations.\n * See: https://www.w3.org/TR/web-animations-2/#grouping-and-synchronization\n */\nexport class AnimationGroup {\n animations: (Animation & {\n start?: RangeOffset;\n end?: RangeOffset;\n })[];\n options?: AnimationGroupOptions;\n ready: Promise<void>;\n isCSS: boolean;\n\n constructor(animations: Animation[], options?: AnimationGroupOptions) {\n this.animations = animations;\n this.options = options;\n this.ready = options?.measured || Promise.resolve();\n this.isCSS = animations[0] instanceof CSSAnimation;\n }\n\n getProgress() {\n return this.animations[0]?.effect?.getComputedTiming().progress || 0;\n }\n\n async play(callback?: () => void): Promise<void> {\n await this.ready;\n\n for (const animation of this.animations) {\n animation.play();\n }\n\n // TODO: Wait for all animations to be ready, using allSettled to handle rejections gracefully\n // await Promise.allSettled(\n await Promise.all(this.animations.map((animation) => animation.ready));\n\n if (callback) {\n callback();\n }\n }\n\n pause() {\n for (const animation of this.animations) {\n animation.pause();\n }\n }\n\n async reverse(callback?: () => void): Promise<void> {\n await this.ready;\n\n for (const animation of this.animations) {\n animation.reverse();\n }\n\n // TODO: Wait for all animations to be ready, using allSettled to handle rejections gracefully\n // await Promise.allSettled(\n await Promise.all(this.animations.map((animation) => animation.ready));\n\n if (callback) {\n callback();\n }\n }\n\n progress(p: number) {\n for (const animation of this.animations) {\n const { delay, duration, iterations } = animation.effect!.getTiming();\n const time =\n (Number.isFinite(duration) ? (duration as number) : 0) *\n (Number.isFinite(iterations) ? (iterations as number) : 1);\n animation.currentTime = ((delay || 0) + time) * p;\n }\n }\n\n cancel() {\n for (const animation of this.animations) {\n animation.cancel();\n }\n }\n\n setPlaybackRate(rate: number) {\n for (const animation of this.animations) {\n animation.playbackRate = rate;\n }\n }\n\n async onFinish(callback: () => void): Promise<void> {\n try {\n await Promise.all(this.animations.map((animation) => animation.finished));\n\n const a = this.animations[0];\n\n if (a && !this.isCSS) {\n const target = (a.effect as KeyframeEffect)?.target;\n\n if (target) {\n const endEvent = new Event('animationend');\n target.dispatchEvent(endEvent);\n }\n }\n\n callback();\n } catch (_error) {\n console.warn('animation was interrupted - aborting onFinish callback - ', _error);\n }\n }\n\n get finished() {\n return Promise.all(this.animations.map((animation) => animation.finished));\n }\n\n get playState() {\n return this.animations[0]?.playState;\n }\n}\n","/**\n * @file Easing functions as defined by Robert Penner.\n * @example A playground I made https://codepen.io/tombigel/pen/eYLLVRg\n */\n\n/**\n * Linear easing function.\n * @param t - The time value (between 0 and 1).\n * @returns The eased value.\n */\nexport const linear = (t: number) => t;\n\n/**\n * Sine-in easing function.\n * @param t - The time value (between 0 and 1).\n * @returns The eased value.\n */\nexport const sineIn = (t: number) => 1 - Math.cos((t * Math.PI) / 2);\n\n/**\n * Sine-out easing function.\n * @param t - The time value (between 0 and 1).\n * @returns The eased value.\n */\nexport const sineOut = (t: number) => Math.sin((t * Math.PI) / 2);\n\n/**\n * Sine-in-out easing function.\n * @param t - The time value (between 0 and 1).\n * @returns The eased value.\n */\nexport const sineInOut = (t: number) => -(Math.cos(Math.PI * t) - 1) / 2;\n\n/**\n * Quadratic-in easing function.\n * @param t - The time value (between 0 and 1).\n * @returns The eased value.\n */\nexport const quadIn = (t: number) => t ** 2;\n\n/**\n * Quadratic-out easing function.\n * @param t - The time value (between 0 and 1).\n * @returns The eased value.\n */\nexport const quadOut = (t: number) => 1 - (1 - t) ** 2;\n\n/**\n * Quadratic-in-out easing function.\n * @param t - The time value (between 0 and 1).\n * @returns The eased value.\n */\nexport const quadInOut = (t: number) => (t < 0.5 ? 2 * t ** 2 : 1 - (-2 * t + 2) ** 2 / 2);\n\n/**\n * Cubic-in easing function.\n * @param t - The time value (between 0 and 1).\n * @returns The eased value.\n */\nexport const cubicIn = (t: number) => t ** 3;\n\n/**\n * Cubic-out easing function.\n * @param t - The time value (between 0 and 1).\n * @returns The eased value.\n */\nexport const cubicOut = (t: number) => 1 - (1 - t) ** 3;\n\n/**\n * Cubic-in-out easing function.\n * @param t - The time value (between 0 and 1).\n * @returns The eased value.\n */\nexport const cubicInOut = (t: number) => (t < 0.5 ? 4 * t ** 3 : 1 - (-2 * t + 2) ** 3 / 2);\n\n/**\n * Quartic-in easing function.\n * @param t - The time value (between 0 and 1).\n * @returns The eased value.\n */\nexport const quartIn = (t: number) => t ** 4;\n\n/**\n * Quartic-out easing function.\n * @param t - The time value (between 0 and 1).\n * @returns The eased value.\n */\nexport const quartOut = (t: number) => 1 - (1 - t) ** 4;\n\n/**\n * Quartic-in-out easing function.\n * @param t - The time value (between 0 and 1).\n * @returns The eased value.\n */\nexport const quartInOut = (t: number) => (t < 0.5 ? 8 * t ** 4 : 1 - (-2 * t + 2) ** 4 / 2);\n\n/**\n * Quintic-in easing function.\n * @param t - The time value (between 0 and 1).\n * @returns The eased value.\n */\nexport const quintIn = (t: number) => t ** 5;\n\n/**\n * Quintic-out easing function.\n * @param t - The time value (between 0 and 1).\n * @returns The eased value.\n */\nexport const quintOut = (t: number) => 1 - (1 - t) ** 5;\n\n/**\n * Quintic-in-out easing function.\n * @param t - The time value (between 0 and 1).\n * @returns The eased value.\n */\nexport const quintInOut = (t: number) => (t < 0.5 ? 16 * t ** 5 : 1 - (-2 * t + 2) ** 5 / 2);\n\n/**\n * Exponential-in easing function.\n * @param t - The time value (between 0 and 1).\n * @returns The eased value.\n */\nexport const expoIn = (t: number) => (t === 0 ? 0 : 2 ** (10 * t - 10));\n\n/**\n * Exponential-out easing function.\n * @param t - The time value (between 0 and 1).\n * @returns The eased value.\n */\nexport const expoOut = (t: number) => (t === 1 ? 1 : 1 - 2 ** (-10 * t));\n\n/**\n * Exponential-in-out easing function.\n * @param t - The time value (between 0 and 1).\n * @returns The eased value.\n */\nexport const expoInOut = (t: number) =>\n t === 0 ? 0 : t === 1 ? 1 : t < 0.5 ? 2 ** (20 * t - 10) / 2 : (2 - 2 ** (-20 * t + 10)) / 2;\n\n/**\n * Circular-in easing function.\n * @param t - The time value (between 0 and 1).\n * @returns The eased value.\n */\nexport const circIn = (t: number) => 1 - Math.sqrt(1 - t ** 2);\n\n/**\n * Circular-out easing function.\n * @param t - The time value (between 0 and 1).\n * @returns The eased value.\n */\nexport const circOut = (t: number) => Math.sqrt(1 - (t - 1) ** 2);\n\n/**\n * Circular-in-out easing function.\n * @param t - The time value (between 0 and 1).\n * @returns The eased value.\n */\nexport const circInOut = (t: number) =>\n t < 0.5 ? (1 - Math.sqrt(1 - 4 * t ** 2)) / 2 : (Math.sqrt(-(2 * t - 3) * (2 * t - 1)) + 1) / 2;\n\n/**\n * Back-in easing function.\n * @param t - The time value (between 0 and 1).\n * @returns The eased value.\n */\nexport const backIn = (t: number) => 2.70158 * t ** 3 - 1.70158 * t ** 2;\n\n/**\n * Back-out easing function.\n * @param t - The time value (between 0 and 1).\n * @returns The eased value.\n */\nexport const backOut = (t: number) => 1 + 2.70158 * (t - 1) ** 3 + 1.70158 * (t - 1) ** 2;\n\n/**\n * Back-in-out easing function.\n * @param t - The time value (between 0 and 1).\n * @param k - The back factor (optional, default is 1.70158 * 1.525).\n * @returns The eased value.\n */\nexport const backInOut = (t: number, k = 1.70158 * 1.525) =>\n t < 0.5\n ? ((2 * t) ** 2 * ((k + 1) * 2 * t - k)) / 2\n : ((2 * t - 2) ** 2 * ((k + 1) * (t * 2 - 2) + k) + 2) / 2;\n\nexport const jsEasings = {\n linear,\n sineIn,\n sineOut,\n sineInOut,\n quadIn,\n quadOut,\n quadInOut,\n cubicIn,\n cubicOut,\n cubicInOut,\n quartIn,\n quartOut,\n quartInOut,\n quintIn,\n quintOut,\n quintInOut,\n expoIn,\n expoOut,\n expoInOut,\n circIn,\n circOut,\n circInOut,\n backIn,\n backOut,\n backInOut,\n};\n\n/**\n * CSS cubic-bezier easings based on PostCSS Easings\n */\nexport const cssEasings = {\n linear: 'linear',\n ease: 'ease',\n easeIn: 'ease-in',\n easeOut: 'ease-out',\n easeInOut: 'ease-in-out',\n sineIn: 'cubic-bezier(0.47, 0, 0.745, 0.715)',\n sineOut: 'cubic-bezier(0.39, 0.575, 0.565, 1)',\n sineInOut: 'cubic-bezier(0.445, 0.05, 0.55, 0.95)',\n quadIn: 'cubic-bezier(0.55, 0.085, 0.68, 0.53)',\n quadOut: 'cubic-bezier(0.25, 0.46, 0.45, 0.94)',\n quadInOut: 'cubic-bezier(0.455, 0.03, 0.515, 0.955)',\n cubicIn: 'cubic-bezier(0.55, 0.055, 0.675, 0.19)',\n cubicOut: 'cubic-bezier(0.215, 0.61, 0.355, 1)',\n cubicInOut: 'cubic-bezier(0.645, 0.045, 0.355, 1)',\n quartIn: 'cubic-bezier(0.895, 0.03, 0.685, 0.22)',\n quartOut: 'cubic-bezier(0.165, 0.84, 0.44, 1)',\n quartInOut: 'cubic-bezier(0.77, 0, 0.175, 1)',\n quintIn: 'cubic-bezier(0.755, 0.05, 0.855, 0.06)',\n quintOut: 'cubic-bezier(0.23, 1, 0.32, 1)',\n quintInOut: 'cubic-bezier(0.86, 0, 0.07, 1)',\n expoIn: 'cubic-bezier(0.95, 0.05, 0.795, 0.035)',\n expoOut: 'cubic-bezier(0.19, 1, 0.22, 1)',\n expoInOut: 'cubic-bezier(1, 0, 0, 1)',\n circIn: 'cubic-bezier(0.6, 0.04, 0.98, 0.335)',\n circOut: 'cubic-bezier(0.075, 0.82, 0.165, 1)',\n circInOut: 'cubic-bezier(0.785, 0.135, 0.15, 0.86)',\n backIn: 'cubic-bezier(0.6, -0.28, 0.735, 0.045)',\n backOut: 'cubic-bezier(0.175, 0.885, 0.32, 1.275)',\n backInOut: 'cubic-bezier(0.68, -0.55, 0.265, 1.55)',\n} as const;\n","import { cssEasings, jsEasings } from './easings';\nimport type { ScrubTransitionEasing, EffectFourDirections, Point } from './types';\n\n/**\n * Map a value from one range 'a' to different range 'b'\n *\n * @param sourceMin - The minimum value of the source range\n * @param sourceMax - The maximum value of the source range\n * @param targetMin - The minimum value of the target range\n * @param targetMax - The maximum value of the target range\n * @param num - The number to map\n * @returns The mapped value\n */\nexport function mapRange(\n sourceMin: number,\n sourceMax: number,\n targetMin: number,\n targetMax: number,\n num: number,\n): number {\n return ((num - sourceMin) * (targetMax - targetMin)) / (sourceMax - sourceMin) + targetMin;\n}\n\n/**\n * Get the distance between 2 points\n *\n * @param p1 - The first point [x1, y1]\n * @param p2 - The second point [x2, y2]\n * @returns The distance between the two points\n */\nexport function distance2d([x1, y1]: Point, [x2, y2]: Point): number {\n return Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2);\n}\n\n/**\n * Get the angle between 2 points in degrees clamped between 0 and 360\n * Pass the third argument \"offset\" to rotate the angle source,\n * for example use 90 to move angle 0 to the top\n *\n * @param p1 - The first point [x1, y1]\n * @param p2 - The second point [x2, y2]\n * @param offset - The angle offset (default: 0)\n * @returns The angle between the two points in degrees\n */\nexport function getAngleInDeg(p1: Point = [0, 0], p2: Point = [0, 0], offset: number = 0): number {\n const angle = (Math.atan2(p2[1] - p1[1], p2[0] - p1[0]) * 180) / Math.PI;\n return (360 + offset + angle) % 360;\n}\n\nexport const INITIAL_FRAME_OFFSET = 1e-6;\n\nexport type Direction =\n | 'initial'\n | 'top'\n | 'right'\n | 'center'\n | 'bottom'\n | 'left'\n | 'vertical'\n | 'horizontal';\n\ntype ClipPolygonTemplateParams = {\n top: number;\n bottom: number;\n left: number;\n right: number;\n centerX: number;\n centerY: number;\n minimum: number;\n};\n\nconst CLIP_POLYGON_TEMPLATES: Record<Direction, (params: ClipPolygonTemplateParams) => string> = {\n initial: ({ top, bottom, left, right }) =>\n `${left}% ${top}%, ${right}% ${top}%, ${right}% ${bottom}%, ${left}% ${bottom}%`,\n top: ({ top, left, right, minimum }) =>\n `${left}% ${top}%, ${right}% ${top}%, ${right}% ${top + minimum}%, ${left}% ${top + minimum}%`,\n right: ({ top, bottom, right, minimum }) =>\n `${right - minimum}% ${top}%, ${right}% ${top}%, ${right}% ${bottom}%, ${\n right - minimum\n }% ${bottom}%`,\n center: ({ centerX, centerY, minimum }) =>\n `${centerX - minimum / 2}% ${centerY - minimum / 2}%, ${\n centerX + minimum / 2\n }% ${centerY - minimum / 2}%, ${centerX + minimum / 2}% ${\n centerY + minimum / 2\n }%, ${centerX - minimum / 2}% ${centerY + minimum / 2}%`,\n bottom: ({ bottom, left, right, minimum }) =>\n `${left}% ${bottom - minimum}%, ${right}% ${\n bottom - minimum\n }%, ${right}% ${bottom}%, ${left}% ${bottom}%`,\n left: ({ top, bottom, left, minimum }) =>\n `${left}% ${top}%, ${left + minimum}% ${top}%, ${\n left + minimum\n }% ${bottom}%, ${left}% ${bottom}%`,\n vertical: ({ top, bottom, left, right, minimum }) =>\n `${left}% ${top + minimum / 2}%, ${right}% ${\n top + minimum / 2\n }%, ${right}% ${bottom - minimum / 2}%, ${left}% ${bottom - minimum / 2}%`,\n horizontal: ({ top, bottom, left, right, minimum }) =>\n `${left + minimum / 2}% ${top}%, ${right - minimum / 2}% ${top}%, ${\n right - minimum / 2\n }% ${bottom}%, ${left + minimum / 2}% ${bottom}%`,\n};\n\nexport function getClipPolygonParams({\n direction,\n scaleX = 1,\n scaleY = 1,\n minimum = 0,\n}: {\n direction: Direction;\n scaleX?: number;\n scaleY?: number;\n minimum?: number;\n}) {\n const top = ((1 - scaleY) / 2) * 100;\n const left = ((1 - scaleX) / 2) * 100;\n const right = 100 + left - (1 - scaleX) * 100;\n const bottom = 100 + top - (1 - scaleY) * 100;\n const centerX = (right + left) / 2;\n const centerY = (bottom + top) / 2;\n\n return `polygon(${CLIP_POLYGON_TEMPLATES[direction]({\n top,\n bottom,\n left,\n right,\n centerX,\n centerY,\n minimum,\n })})`;\n}\n\n/**\n * Adjust direction by angle from predefined list\n */\nexport function getAdjustedDirection(\n availableDirections: string[],\n direction: string,\n angleInDeg: number,\n) {\n const index = availableDirections.indexOf(direction);\n const length = availableDirections.length;\n const shiftBy = Math.round(((angleInDeg || 0) / 360) * length);\n const newIndex = (index + (length - 1) * shiftBy) % length;\n return availableDirections[newIndex];\n}\n\nexport function transformPolarToXY(angle: number, distance: number) {\n const radians = (angle * Math.PI) / 180;\n const x = Math.cos(radians) * distance;\n const y = Math.sin(radians) * distance;\n return [x, y];\n}\n\nexport function getCssUnits(type: 'percentage' | string) {\n return type === 'percentage' ? '%' : type || 'px';\n}\n\nexport function getEasing(easing?: keyof typeof cssEasings | string): string {\n return easing ? cssEasings[easing as keyof typeof cssEasings] || easing : cssEasings.linear;\n}\n\nexport function getJsEasing(\n easing?: keyof typeof jsEasings | string,\n): ((t: number) => number) | undefined {\n return easing ? jsEasings[easing as keyof typeof jsEasings] : undefined;\n}\n\nexport function getEasingFamily(easing: string) {\n if (!cssEasings[easing as keyof typeof cssEasings]) {\n return {\n in: easing,\n inOut: easing,\n out: easing,\n };\n }\n\n const ease = easing.replace(/In|Out/g, '');\n if (ease === 'linear') {\n return {\n in: `linear`,\n inOut: `linear`,\n out: `linear`,\n };\n }\n\n return {\n in: `${ease}In`,\n inOut: `${ease}InOut`,\n out: `${ease}Out`,\n };\n}\n\nconst MOUSE_TRANSITION_EASING_MAP: Record<ScrubTransitionEasing, string> = {\n linear: 'linear',\n easeOut: 'ease-out',\n hardBackOut: 'cubic-bezier(0.58, 2.5, 0, 0.95)',\n elastic:\n 'linear( 0, 0.2178 2.1%, 1.1144 8.49%, 1.2959 10.7%, 1.3463 11.81%, 1.3705 12.94%, 1.3726, 1.3643 14.48%, 1.3151 16.2%, 1.0317 21.81%, 0.941 24.01%, 0.8912 25.91%, 0.8694 27.84%, 0.8698 29.21%, 0.8824 30.71%, 1.0122 38.33%, 1.0357, 1.046 42.71%, 1.0416 45.7%, 0.9961 53.26%, 0.9839 57.54%, 0.9853 60.71%, 1.0012 68.14%, 1.0056 72.24%, 0.9981 86.66%, 1 )',\n bounce:\n 'linear( 0, 0.0039, 0.0157, 0.0352, 0.0625 9.09%, 0.1407, 0.25, 0.3908, 0.5625, 0.7654, 1, 0.8907, 0.8125 45.45%, 0.7852, 0.7657, 0.7539, 0.75, 0.7539, 0.7657, 0.7852, 0.8125 63.64%, 0.8905, 1 72.73%, 0.9727, 0.9532, 0.9414, 0.9375, 0.9414, 0.9531, 0.9726, 1, 0.9883, 0.9844, 0.9883, 1 )',\n};\n\nexport function getMouseTransitionEasing(value?: ScrubTransitionEasing) {\n return (value && MOUSE_TRANSITION_EASING_MAP[value]) || 'linear';\n}\n\nexport function deg2rad(angleInDeg: number): number {\n return (angleInDeg * Math.PI) / 180;\n}\n\nexport function getTransformParams(\n originDirection: { dx: number; dy: number },\n angleInRad: number,\n scale: number = 1,\n) {\n const x = `calc(var(--motion-height, 100%) * ${\n scale * originDirection.dy * Math.sin(-angleInRad)\n } + var(--motion-width, 100%) * ${scale * originDirection.dx * Math.cos(angleInRad)})`;\n\n const y = `calc(var(--motion-height, 100%) * ${\n scale * originDirection.dy * Math.cos(-angleInRad)\n } + var(--motion-width, 100%) * ${scale * originDirection.dx * Math.sin(angleInRad)})`;\n\n return { x, y };\n}\n\nexport function getOutOfScreenDistance(angle: number) {\n const angleInRad = (angle * Math.PI) / 180;\n const angleCos = Math.round(Math.cos(angleInRad) * 10) / 10;\n const angleSin = Math.round(Math.sin(angleInRad) * 10) / 10;\n\n // Calculate x and y direction based on angle\n const xDirection = Math.sign(angleCos);\n const yDirection = Math.sign(angleSin);\n const left = `var(--motion-left, 0px)`;\n const top = `var(--motion-top, 0px)`;\n\n // Calculate x and y distances between component and stage\n const xDistance = xDirection\n ? xDirection === -1\n ? `(-1 * ${left} - 100%)`\n : `(100vw - ${left})`\n : 0;\n const yDistance = yDirection\n ? yDirection === -1\n ? `(-1 * ${top} - 100%)`\n : `(100vh - ${top})`\n : 0;\n\n // Calculate hypotenuse\n let hypotenuse;\n const hypotX = `calc(${xDistance} / ${angleCos})`;\n const hypotY = `calc(${yDistance} / ${angleSin})`;\n\n if (!angleCos) {\n hypotenuse = hypotY;\n } else if (!angleSin) {\n hypotenuse = hypotX;\n } else {\n hypotenuse = `min(${hypotY}, ${hypotX})`;\n }\n\n return {\n // distance: Math.abs(hypotenuse),\n x: `calc(${hypotenuse} * ${angleCos})`,\n y: `calc(${hypotenuse} * ${angleSin})`,\n };\n}\n\nexport function keyframesToDuration(\n keyframes_translation: { keyframe: number }[],\n duration: number,\n) {\n return keyframes_translation.map(({ keyframe }, idx) => {\n const stepDuration = keyframe - (idx > 0 ? keyframes_translation[idx - 1].keyframe : 0);\n return duration * (stepDuration / 100);\n });\n}\n\nexport function getElementOffset(element: HTMLElement, parent?: HTMLElement) {\n let left = element.offsetLeft;\n let top = element.offsetTop;\n let offsetParent = element.offsetParent as HTMLElement;\n\n while (offsetParent) {\n if (parent && offsetParent === parent) {\n break;\n }\n\n left += offsetParent.offsetLeft;\n top += offsetParent.offsetTop;\n offsetParent = offsetParent.offsetParent as HTMLElement;\n }\n\n return { left, top };\n}\n\nconst generateShuttersClipPath = (\n direction: EffectFourDirections,\n shutterCount: number,\n staggered: boolean,\n) => {\n const isTopOrLeft = direction === 'top' || direction === 'left';\n const iterStart = isTopOrLeft ? shutterCount : 0;\n const iterEnd = isTopOrLeft ? 0 : shutterCount;\n const inc = isTopOrLeft ? -1 : 1;\n\n const isVerticalPath = direction === 'top' || direction === 'bottom';\n\n const clipPathStart = [];\n const clipPathEnd = [];\n\n for (let i = iterStart; i !== iterEnd; i += inc) {\n const shutterEndPosInPercentage = 100 * ((i + inc) / shutterCount);\n const clipStart = (100 * (i / shutterCount)) | 0;\n let clipEnd;\n\n if (staggered) {\n const staggerFactor = isTopOrLeft\n ? 1 + (shutterCount - i) / shutterCount\n : 1 + i / shutterCount;\n // staggerFactor changes the speed in which the current shutter completes its animation.\n // case = 1: shutter closes at normal rate (as if there is no stagger at all)\n // case > 1: shutter closes faster (the bigger it is, the faster it closes)\n\n clipEnd = isTopOrLeft\n ? 100 - (100 - shutterEndPosInPercentage) * staggerFactor\n : shutterEndPosInPercentage * staggerFactor;\n } else {\n clipEnd = shutterEndPosInPercentage;\n }\n\n clipEnd |= 0;\n\n if (isVerticalPath) {\n clipPathStart.push(\n `0% ${clipStart}%, 100% ${clipStart}%, 100% ${clipStart}%, 0% ${clipStart}%`,\n );\n clipPathEnd.push(`0% ${clipStart}%, 100% ${clipStart}%, 100% ${clipEnd}%, 0% ${clipEnd}%`);\n } else {\n clipPathStart.push(\n `${clipStart}% 0%, ${clipStart}% 100%, ${clipStart}% 100%, ${clipStart}% 0%`,\n );\n clipPathEnd.push(`${clipStart}% 0%, ${clipStart}% 100%, ${clipEnd}% 100%, ${clipEnd}% 0%`);\n }\n }\n\n return { start: clipPathStart, end: clipPathEnd };\n};\n\nexport function getShuttersClipPaths(\n direction: EffectFourDirections,\n shutterCount: number,\n staggered: boolean,\n reverse?: boolean,\n) {\n const { start, end } = generateShuttersClipPath(direction, shutterCount, staggered);\n\n if (reverse) {\n start.reverse();\n end.reverse();\n }\n\n return {\n clipStart: `polygon(${start.join(', ')})`,\n clipEnd: `polygon(${end.join(', ')})`,\n };\n}\n\nexport function roundNumber(num: number, precision = 2) {\n return parseFloat(num.toFixed(precision));\n}\n\nexport function toKeyframeValue(\n custom: Record<string, string | number>,\n key: string,\n useValue = false,\n fallback = '',\n) {\n return useValue ? custom[key] : `var(${key}${fallback ? `,${fallback}` : ''})`;\n}\n\nexport function getTimingFactor(\n duration: number,\n delay: number,\n asString = false,\n): number | string {\n const duration_ = duration || 1;\n const delay_ = delay || 0;\n const timingFactor = roundNumber(duration_ / (duration_ + delay_));\n return asString ? timingFactor.toString().replace(/\\./g, '') : timingFactor;\n}\n","/**\n * @class CustomAnimation\n *\n * A wrapper object for Animation that mimics the same interface but implements CustomEffect that runs JS code instead of KeyframeEffect.\n * The class is implemented by holding an inner Animation object instead of inheritance due to some browsers not allowing extension of built-in objects.\n */\nexport class CustomAnimation {\n _animation: Animation;\n customEffect: (progress: number | null) => void;\n progress: number | null;\n _tickCbId: number | null;\n _finishHandler: (_: any) => void;\n\n constructor(\n customEffect: (element: Element | null, progress: number | null) => void,\n target: Element | null,\n effectOptions: KeyframeEffectOptions,\n timingOptions: { timeline?: AnimationTimeline | null },\n ) {\n // overriding composite so that animation is not replaced and removed\n const effect = new KeyframeEffect(target, [], {\n ...effectOptions,\n composite: 'add',\n });\n const { timeline } = timingOptions;\n this._animation = new Animation(effect, timeline);\n\n this._tickCbId = null;\n this.progress = null;\n this.customEffect = (progress: number | null) => customEffect(effect.target, progress);\n\n // stop loop if animation is removed from the DOM after finish (does not fire 'remove' event)\n this._finishHandler = (_: any) => {\n if (\n !(this.effect as KeyframeEffect).target?.getAnimations().find((a) => a === this._animation)\n ) {\n this.cancel();\n }\n };\n this.addEventListener('finish', this._finishHandler);\n this.addEventListener('remove', this._finishHandler);\n }\n\n // private tick method for customEffect loop implementation\n private _tick() {\n try {\n const progress = this.effect?.getComputedTiming().progress ?? null;\n if (progress !== this.progress) {\n this.customEffect?.(progress);\n this.progress = progress;\n }\n this._tickCbId = requestAnimationFrame(() => {\n this._tick();\n });\n } catch (error) {\n this._tickCbId = null;\n console.error(\n `failed to run customEffect! effectId: ${this.id}, error: ${\n error instanceof Error ? error.message : error\n }`,\n );\n }\n }\n\n // Animation timing properties\n get currentTime() {\n return this._animation.currentTime;\n }\n set currentTime(time: CSSNumberish | null) {\n this._animation.currentTime = time;\n }\n get startTime() {\n return this._animation.startTime;\n }\n set startTime(time: CSSNumberish | null) {\n this._animation.startTime = time;\n }\n get playbackRate() {\n return this._animation.playbackRate;\n }\n set playbackRate(speed: number) {\n this._animation.playbackRate = speed;\n }\n\n // Animation basic properties\n get id() {\n return this._animation.id;\n }\n set id(uid: string) {\n this._animation.id = uid;\n }\n get effect() {\n return this._animation.effect;\n }\n set effect(e: AnimationEffect | null) {\n this._animation.effect = e;\n }\n get timeline() {\n return this._animation.timeline;\n }\n set timeline(tl: AnimationTimeline | null) {\n this._animation.timeline = tl;\n }\n\n // Animation readonly state properties\n get finished() {\n return this._animation.finished;\n }\n get pending() {\n return this._animation.pending;\n }\n get playState() {\n return this._animation.playState;\n }\n get ready() {\n return this._animation.ready;\n }\n get replaceState() {\n return this._animation.replaceState;\n }\n\n // Animation event handlers\n get oncancel() {\n return this._animation.oncancel;\n }\n set oncancel(cb: ((this: Animation, ev: AnimationPlaybackEvent) => any) | null) {\n this._animation.oncancel = cb;\n }\n get onfinish() {\n return this._animation.onfinish;\n }\n set onfinish(cb: ((this: Animation, ev: AnimationPlaybackEvent) => any) | null) {\n this._animation.onfinish = cb;\n }\n get onremove() {\n return this._animation.onremove;\n }\n set onremove(cb: ((this: Animation, ev: AnimationPlaybackEvent) => any) | null) {\n this._animation.onremove = cb;\n }\n\n // CustomAnimation overridden methods\n play() {\n this._animation.play();\n cancelAnimationFrame(this._tickCbId!);\n this._tickCbId = requestAnimationFrame(() => this._tick());\n }\n\n pause() {\n this._animation.pause();\n cancelAnimationFrame(this._tickCbId!);\n this._tickCbId = null;\n }\n\n cancel() {\n this.removeEventListener('finish', this._finishHandler);\n this.removeEventListener('remove', this._finishHandler);\n this._animation.cancel();\n // signaling cancelation for customEffect to handle it as desired\n this.customEffect(null);\n cancelAnimationFrame(this._tickCbId!);\n this._tickCbId = null;\n }\n\n commitStyles() {\n console.warn(\n 'CustomEffect animations do not support commitStyles method as they have no style to commit',\n );\n }\n\n // Animation methods without override\n finish() {\n this._animation.finish();\n }\n persist() {\n this._animation.persist();\n }\n reverse() {\n this._animation.reverse();\n }\n updatePlaybackRate(playbackRate: number) {\n this._animation.updatePlaybackRate(playbackRate);\n }\n\n // Animation events API\n addEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions,\n ) {\n this._animation.addEventListener(type, listener, options);\n }\n removeEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions,\n ) {\n this._animation.removeEventListener(type, listener, options);\n }\n dispatchEvent(event: Event) {\n return this._animation.dispatchEvent(event);\n }\n}\n","import type { ScrubAnimationOptions, ArcScroll, AnimationFillMode } from '../../types';\n\nconst ROTATE_DIRECTION_MAP = {\n vertical: 'rotateX',\n horizontal: 'rotateY',\n};\n\nconst ROTATION = 68;\n\nconst RANGES_MAP = {\n in: { fromValue: -ROTATION, toValue: 0 },\n out: { fromValue: 0, toValue: ROTATION },\n continuous: { fromValue: -ROTATION, toValue: ROTATION },\n};\n\nexport default function create(options: ScrubAnimationOptions) {\n const { direction = 'horizontal', range = 'in' } = options.namedEffect as ArcScroll;\n const fill = (\n range === 'out' ? 'forwards' : range === 'in' ? 'backwards' : options.fill\n ) as AnimationFillMode;\n\n const rotateAxis = ROTATE_DIRECTION_MAP[direction];\n const { fromValue, toValue } = RANGES_MAP[range];\n const easing = 'linear';\n\n return [\n {\n ...options,\n fill,\n easing,\n keyframes: [\n {\n transform: `perspective(500px) translateZ(-300px) ${rotateAxis}(${fromValue}deg) translateZ(300px) rotate(var(--comp-rotate-z, 0deg))`,\n },\n {\n transform: `perspective(500px) translateZ(-300px) ${rotateAxis}(${toValue}deg) translateZ(300px) rotate(var(--comp-rotate-z, 0deg))`,\n },\n ],\n },\n ];\n /*\n * @keyframes <name> {\n * from {\n * transform: perspective(500px) translateZ(-300px) <rotateAxis>(<fromValue>deg) translateZ(300px) rotate(<rotation>);\n * }\n * to {\n * transform-origin: 50% 50% -300px;\n * transform: perspective(500px) translateZ(-300px) <rotateAxis>(<toValue>deg) translateZ(300px) rotate(<rotation>);\n * }\n * }\n */\n}\n","import type { AnimationFillMode, BlurScroll, ScrubAnimationOptions } from '../../types';\n\nconst BLUR_POWER_MAP = {\n soft: 6,\n medium: 25,\n hard: 50,\n};\n\nexport default function create(options: ScrubAnimationOptions) {\n const { blur = 6, power, range = 'in' } = options.namedEffect as BlurScroll;\n const blurFactor = power && BLUR_POWER_MAP[power] ? BLUR_POWER_MAP[power] : blur;\n\n const fromValue = range === 'out' ? 0 : blurFactor;\n const toValue = range === 'out' ? blurFactor : 0;\n const easing = 'linear';\n const fill = (\n range === 'out' ? 'forwards' : range === 'in' ? 'backwards' : options.fill\n ) as AnimationFillMode;\n\n return [\n {\n ...options,\n fill,\n easing,\n composite: 'add' as const,\n keyframes: [\n {\n filter: `blur(${fromValue}px)`,\n },\n {\n filter: `blur(${toValue}px)`,\n },\n ],\n },\n ];\n /*\n * @keyframes <name> {\n * from {\n * filter: blur(<fromValue>px);\n * }\n * to {\n * filter: blur(<toValue>px);\n * }\n * }\n */\n}\n","import type { FadeScroll, ScrubAnimationOptions, AnimationFillMode } from '../../types';\n\nexport default function create(options: ScrubAnimationOptions) {\n const { opacity = 0, range = 'in' } = options.namedEffect as FadeScroll;\n const isOut = range === 'out';\n const fromValue = isOut ? 'var(--comp-opacity, 1)' : opacity;\n const toValue = isOut ? opacity : 'var(--comp-opacity, 1)';\n const easing = 'linear';\n const fill = (\n range === 'out' ? 'forwards' : range === 'in' ? 'backwards' : options.fill\n ) as AnimationFillMode;\n\n return [\n {\n ...options,\n fill,\n easing,\n keyframes: [\n {\n opacity: fromValue,\n },\n {\n opacity: toValue,\n },\n ],\n },\n ];\n /*\n * @keyframes <name> {\n * from {\n * opacity: <fromValue>;\n * }\n * to {\n * opacity: <toValue>;\n * }\n * }\n */\n}\n","import type { AnimationFillMode, FlipScroll, ScrubAnimationOptions } from '../../types';\n\nconst ROTATE_POWER_MAP = {\n soft: 60,\n medium: 120,\n hard: 420,\n};\n\nconst ROTATE_DIRECTION_MAP = {\n vertical: 'rotateX',\n horizontal: 'rotateY',\n};\n\nexport default function create(options: ScrubAnimationOptions) {\n const {\n rotate = 240,\n direction = 'horizontal',\n power,\n range = 'continuous',\n } = options.namedEffect as FlipScroll;\n\n const rotationAxis = ROTATE_DIRECTION_MAP[direction];\n const flipValue = power && ROTATE_POWER_MAP[power] ? ROTATE_POWER_MAP[power] : rotate;\n\n // const { fromValue, toValue } = rangeValues[range](rotation);\n const fromValue = range === 'out' ? 0 : -flipValue;\n const toValue = range === 'in' ? 0 : flipValue;\n const easing = 'linear';\n const fill = (\n range === 'out' ? 'forwards' : range === 'in' ? 'backwards' : options.fill\n ) as AnimationFillMode;\n\n return [\n {\n ...options,\n fill,\n easing,\n keyframes: [\n {\n transform: `perspective(800px) ${rotationAxis}(${fromValue}deg) rotate(var(--comp-rotate-z, 0deg))`,\n },\n {\n transform: `perspective(800px) ${rotationAxis}(${toValue}deg) rotate(var(--comp-rotate-z, 0deg))`,\n },\n ],\n },\n ];\n /*\n * @keyframes <name> {\n * from {\n * transform: perspective(800px) <rotationAxis>(fromValue) rotate(<rotation>);\n * }\n * to {\n * transform: perspective(800px) <rotationAxis>(toValue) rotate(<rotation>);\n * }\n * }\n */\n}\n","import { AnimationFillMode, GrowScroll, ScrubAnimationOptions } from '../../types';\n\nconst MAX_Y_TRAVEL = 40;\nconst POWER_MAP = {\n soft: { scaleFrom: 0.8, scaleTo: 1.2, travelY: 0 },\n medium: { scaleFrom: 0.3, scaleTo: 1.7, travelY: 0.75 },\n hard: { scaleFrom: 0, scaleTo: 4, travelY: 1 },\n};\n\nconst directionMap = {\n top: [0, -50],\n 'top-right': [50, -50],\n right: [50, 0],\n 'bottom-right': [50, 50],\n bottom: [0, 50],\n 'bottom-left': [-50, 50],\n left: [-50, 0],\n 'top-left': [-50, -50],\n center: [0, 0],\n};\n\nconst RANGES_MAP = {\n in: (scaleFrom: number, _scaleTo: number, travelY: number) => ({\n fromValues: { scale: scaleFrom, travel: travelY },\n toValues: { scale: 1, travel: 0 },\n }),\n out: (_scaleFrom: number, scaleTo: number, travelY: number) => ({\n fromValues: { scale: 1, travel: 0 },\n toValues: { scale: scaleTo, travel: -travelY },\n }),\n continuous: (scaleFrom: number, scaleTo: number, travelY: number) => ({\n fromValues: { scale: scaleFrom, travel: travelY },\n toValues: { scale: scaleTo, travel: -travelY },\n }),\n};\n\nfunction getScrubOffsets({ power, range = 'in', speed = 0 }: GrowScroll) {\n const offset =\n power && POWER_MAP[power] ? POWER_MAP[power].travelY : Math.abs(speed) * MAX_Y_TRAVEL;\n\n return {\n start: range === 'out' ? '0px' : `${-offset}vh`,\n end: range === 'in' ? '0px' : `${offset}vh`,\n };\n}\n\nexport default function create(options: ScrubAnimationOptions) {\n const {\n power,\n range = 'in',\n scale = range === 'in' ? POWER_MAP.hard.scaleFrom : POWER_MAP.hard.scaleTo,\n direction = 'center',\n speed = 0,\n } = options.namedEffect as GrowScroll;\n\n const easing = 'linear';\n const fill = (\n range === 'out' ? 'forwards' : range === 'in' ? 'backwards' : options.fill\n ) as AnimationFillMode;\n const { scaleFrom, scaleTo, travelY } =\n power && POWER_MAP[power]\n ? POWER_MAP[power]\n : {\n scaleFrom: scale,\n scaleTo: scale,\n travelY: speed,\n };\n\n const { fromValues, toValues } = RANGES_MAP[range](scaleFrom, scaleTo, travelY * -MAX_Y_TRAVEL);\n\n const { start, end } = getScrubOffsets(options.namedEffect as GrowScroll);\n const [trnsX, trnsY] = directionMap[direction];\n\n return [\n {\n ...options,\n fill,\n easing,\n startOffsetAdd: start,\n endOffsetAdd: end,\n keyframes: [\n {\n transform: `translateY(${fromValues.travel}vh) translate(${trnsX}%, ${trnsY}%) scale(${\n fromValues.scale\n }) translate(${-trnsX}%, ${-trnsY}%) rotate(var(--comp-rotate-z, 0))`,\n },\n {\n transform: `translateY(${toValues.travel}vh) translate(${trnsX}%, ${trnsY}%) scale(${\n toValues.scale\n }) translate(${-trnsX}%, ${-trnsY}%) rotate(var(--comp-rotate-z, 0))`,\n },\n ],\n },\n ];\n /*\n * @keyframes <name> {\n * from {\n * translate: 0 <fromValues.travel>;\n * }\n * to {\n * translate: 0 <toValues.travel>;\n * }\n * }\n *\n * @keyframes <name>-scale {\n * from {\n * scale: <fromValues.scale>;\n * }\n * <scaleDelay>% {\n * scale: <fromValues.scale>;\n * animation-timing-function: <scaleEase>;\n * }\n * <scaleDuration>% {\n * scale: <toValues.scale>;\n * }\n * to {\n * scale: <toValues.scale>;\n * }\n * }\n *\n * @supports (animation-timeline: view()) {\n * #target {\n * animation: <name> auto <easing> both,\n * <name>-scale auto linear both;\n * animation-range: cover <start> cover <end>,\n * cover <start> cover <end>;\n * animation-timeline: view(), view();\n * }\n * }\n * @supports not (animation-timeline: view()) {\n * #target {\n * animation: <name> 100ms linear <fill> paused,\n * <name>-scale 100ms linear <fill> paused;\n * }\n * }\n */\n}\n","import type { AnimationFillMode, DomApi, MoveScroll, ScrubAnimationOptions } from '../../types';\nimport { getCssUnits, transformPolarToXY } from '../../utils';\n\nconst POWER_MAP = {\n soft: { value: 150, type: 'px' },\n medium: { value: 400, type: 'px' },\n hard: { value: 800, type: 'px' },\n};\n\nconst RANGES_MAP = {\n in: (travelX: number, travelY: number) => ({\n fromValue: { x: travelX, y: travelY },\n toValue: { x: 0, y: 0 },\n }),\n out: (travelX: number, travelY: number) => ({\n fromValue: { x: 0, y: 0 },\n toValue: { x: travelX, y: travelY },\n }),\n continuous: (travelX: number, travelY: number) => ({\n fromValue: { x: travelX, y: travelY },\n toValue: { x: -travelX, y: -travelY },\n }),\n};\n\nfunction getScrubOffsets({\n angle = 210,\n distance = { value: 400, type: 'px' },\n power,\n range = 'in',\n}: MoveScroll) {\n const travel = power ? POWER_MAP[power] : distance;\n const [, travelY] = transformPolarToXY(angle - 90, travel.value);\n const isTravelingDownwards = (travelY < 0 && range !== 'out') || (travelY > 0 && range === 'out');\n\n const units = getCssUnits(travel.type);\n const startOffsetAdd = isTravelingDownwards ? `${travelY}${units}` : '0px';\n const endOffsetAdd = isTravelingDownwards ? `${Math.abs(travelY)}${units}` : '0px';\n\n return {\n start: range === 'out' ? '0px' : startOffsetAdd,\n end: range === 'in' ? '0px' : endOffsetAdd,\n };\n}\n\nexport default function create(\n options: ScrubAnimationOptions,\n _?: DomApi,\n config?: Record<string, any>,\n) {\n const {\n power,\n distance = { value: 400, type: 'px' },\n angle = 210,\n range = 'in',\n } = options.namedEffect as MoveScroll;\n\n const travel = power ? POWER_MAP[power] : distance;\n const [travelX, travelY] = transformPolarToXY(angle - 90, travel.value);\n const { fromValue, toValue } = RANGES_MAP[range](Math.round(travelX), Math.round(travelY));\n const unit = getCssUnits(travel.type);\n const easing = 'linear';\n const fill = (\n range === 'out' ? 'forwards' : range === 'in' ? 'backwards' : options.fill\n ) as AnimationFillMode;\n const { start, end } = config?.ignoreScrollMoveOffsets\n ? { start: '', end: '' }\n : getScrubOffsets(options.namedEffect as MoveScroll);\n\n // use transform: translate(<value>) and not translate: <value> because of WebKit bug: https://bugs.webkit.org/show_bug.cgi?id=276281\n return [\n {\n ...options,\n fill,\n easing,\n startOffsetAdd: start,\n endOffsetAdd: end,\n keyframes: [\n {\n transform: `translate(${fromValue.x}${unit}, ${fromValue.y}${unit}) rotate(var(--comp-rotate-z, 0))`,\n },\n {\n transform: `translate(${toValue.x}${unit}, ${toValue.y}${unit}) rotate(var(--comp-rotate-z, 0))`,\n },\n ],\n },\n ];\n /*\n * @keyframes <name> {\n * from {\n * transform: translate(<fromValue.x>, <fromValue.y>) rotate(var(--comp-rotate-z, 0));\n * }\n * to {\n * transform: translate(<toValue.x>, <toValue.y>) rotate(var(--comp-rotate-z, 0));\n * }\n * }\n */\n}\n","import {\n PanScroll,\n ScrubAnimationOptions,\n EffectTwoSides,\n DomApi,\n AnimationFillMode,\n} from '../../types';\nimport { getCssUnits } from '../../utils';\n\nconst DIRECTIONS: Record<EffectTwoSides, number> = {\n left: 1,\n right: -1,\n};\n\nconst OFFSCREEN_POSITIONS: Record<EffectTwoSides, Record<'startX' | 'endX', string>> = {\n left: {\n startX: `calc(var(--motion-left, calc(100vw - 100%)) * -1 - 100%)`,\n endX: `calc(100vw - var(--motion-left, 0px))`,\n },\n right: {\n startX: `calc(100vw - var(--motion-left, 0px))`,\n endX: `calc(var(--motion-left, calc(100vw - 100%)) * -1 - 100%)`,\n },\n};\n\nexport default function create(options: ScrubAnimationOptions, dom?: DomApi) {\n const {\n distance = { value: 400, type: 'px' },\n direction = 'left',\n startFromOffScreen = true,\n range = 'in',\n } = options.namedEffect as PanScroll;\n const travel = distance.value * DIRECTIONS[direction];\n const { startX, endX } = startFromOffScreen\n ? OFFSCREEN_POSITIONS[direction]\n : {\n startX: `${-travel}${getCssUnits(distance.type)}`,\n endX: `${travel}${getCssUnits(distance.type)}`,\n };\n\n const fromValue = range === 'out' ? 0 : startX;\n const toValue = range === 'in' ? 0 : range === 'out' ? startX : endX;\n const easing = 'linear';\n const fill = (\n range === 'out' ? 'forwards' : range === 'in' ? 'backwards' : options.fill\n ) as AnimationFillMode;\n\n if (startFromOffScreen && dom) {\n let left = 0;\n dom.measure((target) => {\n if (!target) {\n return;\n }\n left = target.getBoundingClientRect().left;\n });\n dom.mutate((target) => {\n target?.style.setProperty('--motion-left', `${left}px`);\n });\n }\n\n // use transform: translateX(<value>) and not translate: <value> because of WebKit bug: https://bugs.webkit.org/show_bug.cgi?id=276281\n return [\n {\n ...options,\n fill,\n easing,\n keyframes: [\n {\n transform: `translateX(${fromValue}) rotate(var(--comp-rotate-z, 0))`,\n },\n {\n transform: `translateX(${toValue}) rotate(var(--comp-rotate-z, 0))`,\n },\n ],\n },\n ];\n /*\n * @keyframes <name> {\n * from {\n * transform: translateX(<fromValue>) rotate(var(--comp-rotate-z, 0));\n * }\n * to {\n * transform: translateX(<toValue>) rotate(var(--comp-rotate-z, 0));\n * }\n * }\n */\n}\n","import type { ScrubAnimationOptions, ParallaxScroll, AnimationFillMode } from '../../types';\n\nconst DEFAULT_SPEED = 0.5;\n\nfunction getOffsetAdd(factor: number, speed: number) {\n return `${100 * factor * speed}vh`;\n}\n\nfunction getScrubOffsets({ speed = DEFAULT_SPEED }: ParallaxScroll) {\n const start = getOffsetAdd(-0.5, speed);\n const end = getOffsetAdd(0.5, speed);\n\n return {\n start,\n end,\n };\n}\n\nexport default function create(options: ScrubAnimationOptions) {\n const { speed = DEFAULT_SPEED } = options.namedEffect as ParallaxScroll;\n\n const fromValue = `${-50 * speed}vh`;\n const toValue = `${50 * speed}vh`;\n const easing = 'linear';\n const { start, end } = getScrubOffsets(options.namedEffect as ParallaxScroll);\n\n // use transform: translateY(<value>) and not translate: 0 <value> because of WebKit bug: https://bugs.webkit.org/show_bug.cgi?id=276281\n return [\n {\n ...options,\n fill: 'both' as AnimationFillMode,\n easing,\n startOffsetAdd: start,\n endOffsetAdd: end,\n keyframes: [\n {\n transform: `translateY(${fromValue}) rotate(var(--comp-rotate-z, 0))`,\n },\n {\n transform: `translateY(${toValue}) rotate(var(--comp-rotate-z, 0))`,\n },\n ],\n },\n ];\n // only 'continuous' and 0%-100% of range\n /*\n * @keyframes <name> {\n * from {\n * transform: translateY(<fromValue>) rotate(var(--comp-rotate-z, 0));\n * }\n * to {\n * transform: translateY(<toValue>) rotate(var(--comp-rotate-z, 0));\n * }\n * }\n */\n}\n","import {\n EffectFourDirections,\n RevealScroll,\n ScrubAnimationOptions,\n DomApi,\n AnimationFillMode,\n} from '../../types';\nimport { getClipPolygonParams, getAdjustedDirection } from '../../utils';\n\nconst DIRECTIONS: EffectFourDirections[] = ['bottom', 'left', 'top', 'right'];\n\nconst OPPOSITE_DIRECTION_MAP: Record<EffectFourDirections, EffectFourDirections> = {\n top: 'bottom',\n bottom: 'top',\n left: 'right',\n right: 'left',\n};\n\nconst initialClip = getClipPolygonParams({ direction: 'initial' });\n\nfunction getClipFrom(direction: EffectFourDirections, range: RevealScroll['range']) {\n return range === 'out'\n ? initialClip\n : getClipPolygonParams({\n direction: OPPOSITE_DIRECTION_MAP[direction],\n });\n}\nfunction getClipTo(direction: EffectFourDirections, range: RevealScroll['range']) {\n return range === 'in'\n ? initialClip\n : getClipPolygonParams({\n direction: range === 'out' ? OPPOSITE_DIRECTION_MAP[direction] : direction,\n });\n}\n\nexport default function create(options: ScrubAnimationOptions, dom?: DomApi) {\n const { direction = 'bottom', range = 'in' } = options.namedEffect as RevealScroll;\n const easing = 'linear';\n const fill = (\n range === 'out' ? 'forwards' : range === 'in' ? 'backwards' : options.fill\n ) as AnimationFillMode;\n\n let clipFrom = getClipFrom(direction, range);\n let clipTo = getClipTo(direction, range);\n\n if (dom) {\n dom.measure((target) => {\n if (!target) {\n return;\n }\n\n const rotation = getComputedStyle(target).getPropertyValue('--comp-rotate-z') || '0';\n\n dom.mutate(() => {\n const adjDirection = getAdjustedDirection(\n DIRECTIONS,\n direction,\n parseInt(rotation, 10),\n ) as (typeof DIRECTIONS)[number];\n\n clipFrom = getClipFrom(adjDirection, range);\n clipTo = getClipTo(adjDirection, range);\n\n target.style.setProperty('--motion-clip-from', clipFrom);\n target.style.setProperty('--motion-clip-to', clipTo);\n });\n });\n }\n\n const keyframes =\n range === 'continuous'\n ? [\n { clipPath: `var(--motion-clip-from, ${clipFrom})` },\n { clipPath: initialClip },\n { clipPath: `var(--motion-clip-to, ${clipTo})` },\n ]\n : ([\n { clipPath: `var(--motion-clip-from, ${clipFrom})` },\n { clipPath: `var(--motion-clip-to, ${clipTo})` },\n ] as {\n clipPath: string;\n }[]);\n\n return [\n {\n ...options,\n fill,\n easing,\n keyframes,\n },\n ];\n /*\n * @keyframes <name> {\n * from {\n * clip-path: <fromValue>;\n * }\n * to {\n * clip-path: <toValue>;\n * }\n * }\n *\n * OR for continuous:\n *\n * @keyframes <name> {\n * from {\n * clip-path: <fromValue>;\n * }\n * 50% {\n * clip-path: <initialClip>;\n * }\n * to {\n * clip-path: <toValue>;\n * }\n * }\n */\n}\n","import {\n EffectPower,\n AnimationData,\n EffectScrollRange,\n ScrubAnimationOptions,\n ShapeScroll,\n AnimationFillMode,\n} from '../../types';\nimport { getEasing } from '../../utils';\n\nconst SHAPES: Record<ShapeScroll['shape'], { start: Record<EffectPower, string>; end: string }> = {\n diamond: {\n start: {\n soft: 'polygon(50% 20%, 80% 50%, 50% 80%, 20% 50%)',\n medium: 'polygon(50% 40%, 60% 50%, 50% 60%, 40% 50%)',\n hard: 'polygon(50% 50%, 50% 50%, 50% 50%, 50% 50%)',\n },\n end: 'polygon(50% -50%, 150% 50%, 50% 150%, -50% 50%)',\n },\n window: {\n start: {\n soft: 'inset(20% round 50% 50% 0% 0%)',\n medium: 'inset(35% round 50% 50% 0% 0%)',\n hard: 'inset(50% round 50% 50% 0% 0%)',\n },\n end: 'inset(-20% round 50% 50% 0% 0%)',\n },\n rectangle: {\n start: {\n soft: 'inset(20%)',\n medium: 'inset(50%)',\n hard: 'inset(80%)',\n },\n end: 'inset(0%)',\n },\n circle: {\n start: {\n soft: 'circle(40%)',\n medium: 'circle(25%)',\n hard: 'circle(0%)',\n },\n end: 'circle(75%)',\n },\n ellipse: {\n start: {\n soft: 'ellipse(50% 50%)',\n medium: 'ellipse(30% 30%)',\n hard: 'ellipse(0% 0%)',\n },\n end: 'ellipse(75% 75%)',\n },\n};\n\nconst RESPONSIVE_SHAPES_MAP = {\n diamond: (clipFactor: number) => {\n const clip = clipFactor / 2;\n const clipNeg = 100 - clip;\n return [\n `polygon(50% ${clip}%, ${clipNeg}% 50%, 50% ${clipNeg}%, ${clip}% 50%)`,\n 'polygon(50% -50%, 150% 50%, 50% 150%, -50% 50%)',\n ];\n },\n window: (clipFactor: number) => [\n `inset(${clipFactor / 2}% round 50% 50% 0% 0%)`,\n 'inset(-20% round 50% 50% 0% 0%)',\n ],\n rectangle: (clipFactor: number) => [`inset(${clipFactor}%)`, `inset(0%)`],\n circle: (clipFactor: number) => [`circle(${100 - clipFactor}%)`, `circle(75%)`],\n ellipse: (clipFactor: number) => {\n const clip = 50 - clipFactor / 2;\n return [`ellipse(${clip}% ${clip}%)`, `ellipse(75% 75%)`];\n },\n};\n\nconst easing = getEasing('circInOut');\n\nconst KEYFRAMES_RANGE_MAP: Record<\n EffectScrollRange,\n (start: string, end: string) => AnimationData['keyframes']\n> = {\n in: (start: string, end: string) => [\n {\n clipPath: start,\n easing,\n },\n {\n clipPath: end,\n },\n ],\n out: (start: string, end: string) => [\n {\n clipPath: end,\n easing,\n },\n {\n clipPath: start,\n },\n ],\n continuous: (start: string, end: string) => [\n {\n clipPath: start,\n easing,\n },\n {\n clipPath: end,\n easing,\n },\n {\n clipPath: start,\n },\n ],\n};\n\nexport default function create(options: ScrubAnimationOptions) {\n const {\n shape = 'circle',\n power,\n intensity = 0.5,\n range = 'in',\n } = options.namedEffect as ShapeScroll;\n const fill = (\n range === 'out' ? 'forwards' : range === 'in' ? 'backwards' : options.fill\n ) as AnimationFillMode;\n\n const [start, end] =\n power && SHAPES[shape].start[power]\n ? [SHAPES[shape].start[power], SHAPES[shape].end]\n : RESPONSIVE_SHAPES_MAP[shape](intensity * 100);\n\n const keyframes = KEYFRAMES_RANGE_MAP[range](start, end);\n\n return [\n {\n ...options,\n fill,\n easing: 'linear',\n keyframes,\n },\n ];\n /*\n * @keyframes <name> {\n * from {\n * clip-path: <fromValue>;\n * easing: <easing>;\n * }\n * to {\n * clip-path: <toValue>;\n * }\n * }\n */\n}\n","import {\n EffectFourDirections,\n ShuttersScroll,\n ScrubAnimationOptions,\n AnimationFillMode,\n} from '../../types';\nimport { getShuttersClipPaths, getEasing } from '../../utils';\n\nconst OPPOSITE_DIRECTION_MAP: Record<EffectFourDirections, EffectFourDirections> = {\n top: 'bottom',\n right: 'left',\n bottom: 'top',\n left: 'right',\n};\n\nexport default function create(options: ScrubAnimationOptions) {\n const {\n direction = 'right',\n shutters = 12,\n staggered = true,\n range = 'in',\n } = options.namedEffect as ShuttersScroll;\n const fill = (\n range === 'out' ? 'forwards' : range === 'in' ? 'backwards' : options.fill\n ) as AnimationFillMode;\n\n const easing = range === 'in' ? getEasing('sineIn') : getEasing('sineOut');\n const directionOpp = OPPOSITE_DIRECTION_MAP[direction];\n const { clipStart, clipEnd } = getShuttersClipPaths(\n range === 'out' ? directionOpp : direction,\n shutters,\n staggered,\n );\n const start = range !== 'out' ? clipStart : clipEnd;\n const end = range !== 'out' ? clipEnd : clipStart;\n let keyframes;\n\n if (range === 'continuous') {\n const { clipStart: oppClipStart, clipEnd: oppClipEnd } = getShuttersClipPaths(\n directionOpp,\n shutters,\n staggered,\n true,\n );\n\n keyframes = [\n {\n clipPath: start,\n easing,\n },\n {\n clipPath: end,\n offset: staggered ? 0.45 : 0.4,\n easing,\n },\n {\n clipPath: end,\n offset: staggered ? 0.55 : 0.6,\n easing,\n },\n {\n clipPath: oppClipEnd,\n offset: staggered ? 0.55 : 0.6,\n easing,\n },\n {\n clipPath: oppClipStart,\n },\n ];\n } else {\n keyframes = [\n {\n clipPath: start,\n easing,\n },\n {\n clipPath: end,\n },\n ];\n }\n\n return [\n {\n ...options,\n fill,\n easing: 'linear',\n keyframes,\n },\n ];\n}\n","import type { AnimationFillMode, ScrubAnimationOptions, ShrinkScroll } from '../../types';\n\nconst MAX_Y_TRAVEL = 40;\nconst POWER_MAP = {\n soft: { scaleFrom: 1.2, scaleTo: 0.8, travelY: 0 },\n medium: { scaleFrom: 1.7, scaleTo: 0.3, travelY: 0.5 },\n hard: { scaleFrom: 3.5, scaleTo: 0, travelY: 1 },\n};\n\nconst directionMap = {\n top: [0, -50],\n 'top-right': [50, -50],\n right: [50, 0],\n 'bottom-right': [50, 50],\n bottom: [0, 50],\n 'bottom-left': [-50, 50],\n left: [-50, 0],\n 'top-left': [-50, -50],\n center: [0, 0],\n};\n\nconst RANGES_MAP = {\n in: (scaleFrom: number, _scaleTo: number, travelY: number) => ({\n fromValues: { scale: scaleFrom, travel: travelY },\n toValues: { scale: 1, travel: 0 },\n }),\n out: (_scaleFrom: number, scaleTo: number, travelY: number) => ({\n fromValues: { scale: 1, travel: 0 },\n toValues: { scale: scaleTo, travel: -travelY },\n }),\n continuous: (scaleFrom: number, scaleTo: number, travelY: number) => ({\n fromValues: { scale: scaleFrom, travel: travelY },\n toValues: { scale: scaleTo, travel: -travelY },\n }),\n};\n\nfunction getScrubOffsets({ power, range = 'in', speed = 0 }: ShrinkScroll) {\n const offset =\n power && POWER_MAP[power] ? POWER_MAP[power].travelY : Math.abs(speed) * MAX_Y_TRAVEL;\n\n return {\n start: range === 'out' ? '0px' : `${-offset}vh`,\n end: range === 'in' ? '0px' : `${offset}vh`,\n };\n}\n\nexport default function create(options: ScrubAnimationOptions) {\n const {\n power,\n range = 'in',\n scale = range === 'in' ? 1.2 : 0.8,\n direction = 'center',\n speed = 0,\n } = options.namedEffect as ShrinkScroll;\n const fill = (\n range === 'out' ? 'forwards' : range === 'in' ? 'backwards' : options.fill\n ) as AnimationFillMode;\n\n const { scaleFrom, scaleTo, travelY } =\n power && POWER_MAP[power]\n ? POWER_MAP[power]\n : {\n scaleFrom: scale,\n scaleTo: scale,\n travelY: speed,\n };\n\n const { fromValues, toValues } = RANGES_MAP[range](scaleFrom, scaleTo, travelY * -MAX_Y_TRAVEL);\n\n const easing = 'linear';\n\n const { start: startOffsetAdd, end: endOffsetAdd } = getScrubOffsets(\n options.namedEffect as ShrinkScroll,\n );\n\n const [trnsX, trnsY] = directionMap[direction];\n\n return [\n {\n ...options,\n fill,\n easing,\n startOffsetAdd,\n endOffsetAdd,\n keyframes: [\n {\n transform: `translateY(${fromValues.travel}vh) translate(${trnsX}%, ${trnsY}%) scale(${\n fromValues.scale\n }) translate(${-trnsX}%, ${-trnsY}%) rotate(var(--comp-rotate-z, 0))`,\n },\n {\n transform: `translateY(${toValues.travel}vh) translate(${trnsX}%, ${trnsY}%) scale(${\n toValues.scale\n }) translate(${-trnsX}%, ${-trnsY}%) rotate(var(--comp-rotate-z, 0))`,\n },\n ],\n },\n ];\n /* // we may want to squash both animations into a single one and simply generate dynamically all the necessary keyframes to reach same result\n * @keyframes <name> {\n * from {\n * translate: 0 <fromValues.travel>;\n * }\n * to {\n * translate: 0 <toValues.travel>;\n * }\n * }\n *\n * @keyframes <name>-scale {\n * from {\n * scale: <fromValues.scale>;\n * animation-timing-function: <scaleEase>;\n * }\n * <scaleDuration>% {\n * scale: <toValues.scale>;\n * }\n * to {\n * scale: <toValues.scale>;\n * }\n * }\n *\n * @supports (animation-timeline: view()) {\n * #target {\n * animation: <name> auto <easing> both,\n * <name>-scale auto linear both;\n * animation-range: cover <start> cover <end>,\n * cover <start> cover <end>;\n * animation-timeline: view(), view();\n * }\n * }\n * @supports not (animation-timeline: view()) {\n * #target {\n * animation: <name> 100ms linear <fill> paused,\n * <name>-scale 100ms linear <fill> paused;\n * }\n * }\n */\n}\n","import type { AnimationFillMode, DomApi, ScrubAnimationOptions, SkewPanScroll } from '../../types';\n\nconst POWER_MAP = {\n soft: { skewX: 10 },\n medium: { skewX: 17 },\n hard: { skewX: 24 },\n};\n\nconst DIRECTION_MAP = {\n right: -1,\n left: 1,\n};\n\nconst RANGES_MAP = {\n in: (skewX: number, startX: string, _endX: string) => ({\n fromValues: { skewX, startX },\n toValues: { skewX: 0, endX: 0 },\n }),\n out: (skewX: number, startX: string, _endX: string) => ({\n fromValues: { skewX: 0, startX: 0 },\n toValues: { skewX: -skewX, endX: startX },\n }),\n continuous: (skewX: number, startX: string, endX: string) => ({\n fromValues: { skewX, startX },\n toValues: { skewX: -skewX, endX },\n }),\n};\n\nconst POSITIONS = {\n left: {\n startX: `calc(var(--motion-left, calc(100vw - 100%)) * -1 - 100%)`,\n endX: `calc(100vw - var(--motion-left, 0px))`,\n },\n right: {\n startX: `calc(100vw - var(--motion-left, 0px))`,\n endX: `calc(var(--motion-left, calc(100vw - 100%)) * -1 - 100%)`,\n },\n};\n\nexport default function create(options: ScrubAnimationOptions, dom?: DomApi) {\n const {\n skew = 10,\n direction = 'right',\n power,\n range = 'in',\n } = options.namedEffect as SkewPanScroll;\n const easing = 'linear';\n const fill = (\n range === 'out' ? 'forwards' : range === 'in' ? 'backwards' : options.fill\n ) as AnimationFillMode;\n\n const skewX =\n (power && POWER_MAP[power] ? POWER_MAP[power!].skewX : skew) * DIRECTION_MAP[direction];\n const { startX, endX } = POSITIONS[direction];\n const { fromValues, toValues } = RANGES_MAP[range](skewX, startX, endX);\n\n let left = 0;\n if (dom) {\n dom.measure((target) => {\n if (!target) {\n return;\n }\n left = target.getBoundingClientRect().left;\n });\n dom.mutate((target) => {\n target?.style.setProperty('--motion-left', `${left}px`);\n });\n }\n\n return [\n {\n ...options,\n fill,\n easing,\n keyframes: [\n {\n transform: `translateX(${fromValues.startX}) skewX(${fromValues.skewX}deg) rotate(var(--comp-rotate-z, 0))`,\n },\n {\n transform: `translateX(${toValues.endX}) skewX(${toValues.skewX}deg) rotate(var(--comp-rotate-z, 0))`,\n },\n ],\n },\n ];\n /*\n * @keyframes <name> {\n * from {\n * transform: translateX(<fromValue.startX>) skewX(<fromValue.skew>) rotate(<rotation>);\n * }\n * to {\n * transform: translateX(<toValue.endX>) skewX(<toValue.skew>) rotate(<rotation>);\n * }\n * }\n */\n}\n","import type {\n ScrubAnimationOptions,\n SlideScroll,\n EffectFourDirections,\n EffectScrollRange,\n DomApi,\n AnimationFillMode,\n} from '../../types';\nimport { getAdjustedDirection, getClipPolygonParams } from '../../utils';\n\ntype Translate = { x: string; y: string };\n\nconst DIRECTIONS: EffectFourDirections[] = ['bottom', 'left', 'top', 'right'];\n\ntype Direction = (typeof DIRECTIONS)[number];\n\nconst OPPOSITE_DIRECTION_MAP: Record<Direction, Direction> = {\n top: 'bottom',\n bottom: 'top',\n left: 'right',\n right: 'left',\n};\n\nconst DIRECTION_TRANSLATION_MAP: Record<Direction, Translate> = {\n top: { x: '0', y: '-100%' },\n right: { x: '100%', y: '0' },\n bottom: { x: '0', y: '100%' },\n left: { x: '-100%', y: '0' },\n};\n\nconst initialClip = getClipPolygonParams({ direction: 'initial' });\n\nconst KEYFRAMES_RANGE_MAP: Record<\n EffectScrollRange,\n (\n clip: { from: string; to: string },\n translate: { from: Translate; to: Translate },\n ) => { clipPath: string; transform: string }[]\n> = {\n in: (clip, translate) => [\n {\n clipPath: `var(--motion-clip-from, ${clip.from})`,\n transform: `rotate(var(--comp-rotate-z, 0)) translate(${translate.from.x}, ${translate.from.y})`,\n },\n {\n clipPath: initialClip,\n transform: `rotate(var(--comp-rotate-z, 0)) translate(0, 0)`,\n },\n ],\n out: (clip, translate) => [\n {\n clipPath: initialClip,\n transform: `rotate(var(--comp-rotate-z, 0)) translate(0, 0)`,\n },\n {\n clipPath: `var(--motion-clip-from, ${clip.from})`,\n transform: `rotate(var(--comp-rotate-z, 0)) translate(${translate.from.x}, ${translate.from.y})`,\n },\n ],\n continuous: (clip, translate) => [\n {\n clipPath: `var(--motion-clip-from, ${clip.from})`,\n transform: `rotate(var(--comp-rotate-z, 0)) translate(${translate.from.x}, ${translate.from.y})`,\n },\n {\n clipPath: initialClip,\n transform: `rotate(var(--comp-rotate-z, 0)) translate(0, 0)`,\n },\n {\n clipPath: `var(--motion-clip-to, ${clip.to})`,\n transform: `rotate(var(--comp-rotate-z, 0)) translate(${translate.to.x}, ${translate.to.y})`,\n },\n ],\n};\n\nexport default function create(options: ScrubAnimationOptions, dom?: DomApi) {\n const { direction = 'bottom', range = 'in' } = options.namedEffect as SlideScroll;\n const easing = 'linear';\n const fill = (\n range === 'out' ? 'forwards' : range === 'in' ? 'backwards' : options.fill\n ) as AnimationFillMode;\n const oppositeDirection = OPPOSITE_DIRECTION_MAP[direction];\n\n const keyframes = KEYFRAMES_RANGE_MAP[range](\n {\n from: getClipPolygonParams({\n direction: oppositeDirection,\n }),\n to: getClipPolygonParams({\n direction,\n }),\n },\n {\n from: DIRECTION_TRANSLATION_MAP[direction],\n to: DIRECTION_TRANSLATION_MAP[oppositeDirection],\n },\n );\n\n if (dom) {\n dom.measure((target) => {\n if (!target) {\n return;\n }\n\n const rotation = parseInt(\n getComputedStyle(target).getPropertyValue('--comp-rotate-z') || '0',\n 10,\n );\n\n dom.mutate(() => {\n const adjDirection = getAdjustedDirection(DIRECTIONS, direction, rotation) as Direction;\n target.style.setProperty(\n '--motion-clip-from',\n getClipPolygonParams({\n direction: OPPOSITE_DIRECTION_MAP[adjDirection],\n }),\n );\n target.style.setProperty(\n '--motion-clip-to',\n getClipPolygonParams({\n direction: adjDirection,\n }),\n );\n });\n });\n }\n\n return [\n {\n ...options,\n fill,\n easing,\n keyframes,\n },\n ];\n /*\n * @keyframes <name> {\n * from {\n * clip-path: <clip.from>;\n * translate: <translate.from.x> <translate.from.y>;\n * }\n * to {\n * clip-path: none;\n * translate: 0 0;\n * }\n * }\n */\n}\n","import type { AnimationFillMode, ScrubAnimationOptions, Spin3dScroll } from '../../types';\n\nconst MAX_Y_TRAVEL = 40;\n\nconst POWER_MAP = {\n soft: { rotationZ: 45, travelY: 0 },\n medium: { rotationZ: 100, travelY: 0.5 },\n hard: { rotationZ: 200, travelY: 1 },\n};\n\nconst RANGES_MAP = {\n in: (rotation: number, travelY: number) => ({\n fromValues: {\n rotationX: -2 * rotation,\n rotationY: -rotation,\n rotationZ: -rotation,\n travel: travelY,\n },\n toValues: {\n rotationX: 0,\n rotationY: 0,\n rotationZ: 0,\n travel: 0,\n },\n }),\n out: (rotation: number, travelY: number) => ({\n fromValues: {\n rotationX: 0,\n rotationY: 0,\n rotationZ: 0,\n travel: 0,\n },\n toValues: {\n rotationX: rotation * 3,\n rotationY: rotation * 2,\n rotationZ: rotation,\n travel: -travelY,\n },\n }),\n continuous: (rotation: number, travelY: number) => ({\n fromValues: {\n rotationX: -2 * rotation,\n rotationY: -rotation,\n rotationZ: -rotation,\n travel: travelY,\n },\n toValues: {\n rotationX: rotation * 1.8,\n rotationY: rotation,\n rotationZ: 2 * rotation,\n travel: -travelY,\n },\n }),\n};\n\nfunction getScrubOffsets({ power, range = 'in', speed = 0 }: Spin3dScroll) {\n const offset =\n (power && POWER_MAP[power] ? POWER_MAP[power].travelY : Math.abs(speed)) * MAX_Y_TRAVEL;\n\n return {\n start: range === 'out' ? '0px' : `${-offset}vh`,\n end: range === 'in' ? '0px' : `${offset}vh`,\n };\n}\n\nexport default function create(options: ScrubAnimationOptions) {\n const { rotate = -100, power, range = 'in', speed = 0 } = options.namedEffect as Spin3dScroll;\n const easing = 'linear';\n const fill = (\n range === 'out' ? 'forwards' : range === 'in' ? 'backwards' : options.fill\n ) as AnimationFillMode;\n\n const initialParams =\n power && POWER_MAP[power] ? POWER_MAP[power] : { rotationZ: rotate, travelY: speed };\n\n const { fromValues, toValues } = RANGES_MAP[range](\n initialParams.rotationZ,\n initialParams.travelY * -MAX_Y_TRAVEL,\n );\n\n const { start: startOffsetAdd, end: endOffsetAdd } = getScrubOffsets(\n options.namedEffect as Spin3dScroll,\n );\n\n return [\n {\n ...options,\n fill,\n easing,\n startOffsetAdd,\n endOffsetAdd,\n keyframes: [\n {\n transform: `perspective(1000px) translateY(${fromValues.travel}vh) rotateZ(calc(var(--comp-rotate-z, 0deg) + ${fromValues.rotationZ}deg)) rotateY(${fromValues.rotationY}deg) rotateX(${fromValues.rotationX}deg)`,\n },\n {\n transform: `perspective(1000px) translateY(${toValues.travel}vh) rotateZ(calc(var(--comp-rotate-z, 0deg) + ${toValues.rotationZ}deg)) rotateY(${toValues.rotationY}deg) rotateX(${toValues.rotationX}deg)`,\n },\n ],\n },\n ];\n /*\n * @keyframes <name> {\n * from {\n * transform: perspective(1000px) translateY(<fromValue.travel>vh) rotateZ(<fromValue.rotateZ> + <rotation>) rotateY(<fromValue.rotateY>deg) rotateX(<fromValue.rotateX>deg);\n * }\n * to {\n * transform: perspective(1000px) translateY(<toValue.travel>vh) rotateZ(<fromValue.rotateZ> + <rotation>) rotateY(<toValue.rotateY>deg) rotateX(<toValue.rotateX>deg);\n * }\n * }\n */\n}\n","import type { AnimationFillMode, ScrubAnimationOptions, SpinScroll } from '../../types';\n\nconst POWER_MAP = {\n soft: 1,\n medium: 0.7,\n hard: 0.4,\n};\n\nconst DIRECTION_MAP = {\n clockwise: 1,\n 'counter-clockwise': -1,\n};\n\nexport default function create(options: ScrubAnimationOptions) {\n const {\n spins = 0.15,\n scale = 1,\n direction = 'clockwise',\n power,\n range = 'in',\n } = options.namedEffect as SpinScroll;\n const easing = 'linear';\n const fill = (\n range === 'out' ? 'forwards' : range === 'in' ? 'backwards' : options.fill\n ) as AnimationFillMode;\n\n const spinDirection = DIRECTION_MAP[direction];\n const rotationZ = spins * 360;\n const scaleFactor = power && POWER_MAP[power] ? POWER_MAP[power] : scale;\n const isIn = range === 'in';\n\n const fromValue = isIn ? -rotationZ : range === 'out' ? 0 : -rotationZ / 2;\n const toValue = isIn ? 0 : range === 'out' ? rotationZ : rotationZ / 2;\n\n return [\n {\n ...options,\n fill,\n easing,\n keyframes: [\n {\n transform: `scale(${isIn ? scaleFactor : 1}) rotate(calc(var(--comp-rotate-z, 0deg) + ${\n fromValue * spinDirection\n }deg))`,\n },\n {\n transform: `scale(${isIn ? 1 : scaleFactor}) rotate(calc(var(--comp-rotate-z, 0deg) + ${\n toValue * spinDirection\n }deg))`,\n },\n ],\n },\n ];\n /*\n * @keyframes <name> {\n * from {\n * transform: scale(<fromValues.scale>) rotate(<rotation> - <fromValue.rotate * spinDirection>);\n * }\n * to {\n * transform: scale(<toValues.scale>) rotate(<rotation> + <toValue.rotate * spinDirection>);\n * }\n * }\n */\n}\n","import { cssEasings as easings } from '../../easings';\nimport type { AnimationFillMode, ScrubAnimationOptions, StretchScroll } from '../../types';\n\nconst POWER_MAP = {\n soft: { scaleY: 1.2, scaleX: 0.8 },\n medium: { scaleY: 1.5, scaleX: 0.6 },\n hard: { scaleY: 2, scaleX: 0.4 },\n};\n\nconst KEYFRAMES_RANGE_MAP = {\n in: (scaleX: number, scaleY: number) => [\n {\n scale: `${scaleX} ${scaleY}`,\n translate: `0 ${100 * (scaleY - 1)}%`,\n },\n {\n scale: '1 1',\n translate: '0 0',\n },\n ],\n out: (scaleX: number, scaleY: number) => [\n {\n scale: '1 1',\n translate: '0 0',\n },\n {\n scale: `${scaleX} ${scaleY}`,\n translate: `0 ${100 * (1 - scaleY)}%`,\n },\n ],\n continuous: (scaleX: number, scaleY: number) => [\n {\n scale: `${scaleX} ${scaleY}`,\n translate: `0 ${100 * (scaleY - 1)}%`,\n easing: easings.backInOut,\n },\n {\n scale: '1 1',\n translate: '0 0',\n easing: easings.backInOut,\n },\n {\n scale: `${scaleX} ${scaleY}`,\n translate: `0 ${100 * (1 - scaleY)}%`,\n },\n ],\n};\nconst opacityKeyframesMap = {\n in: [\n { opacity: 0, offset: 0 },\n { opacity: 1, offset: 0.65 },\n ],\n out: [\n { opacity: 1, offset: 0.35 },\n { opacity: 0, offset: 1 },\n ],\n continuous: [\n { opacity: 0, offset: 0 },\n { opacity: 1, offset: 0.325 },\n { opacity: 1, offset: 0.7 },\n { opacity: 0, offset: 1 },\n ],\n};\n\nexport default function create(options: ScrubAnimationOptions) {\n const { power, stretch = 0.6, range = 'out' } = options.namedEffect as StretchScroll;\n const easing = range === 'continuous' ? 'linear' : 'backInOut';\n const fill = (\n range === 'out' ? 'forwards' : range === 'in' ? 'backwards' : options.fill\n ) as AnimationFillMode;\n\n const { scaleX, scaleY } =\n power && POWER_MAP[power] ? POWER_MAP[power] : { scaleX: 1 - stretch, scaleY: 1 + stretch };\n\n const animations = KEYFRAMES_RANGE_MAP[range](scaleX, scaleY);\n\n return [\n {\n ...options,\n fill,\n easing,\n keyframes: animations,\n },\n {\n ...options,\n fill,\n easing,\n keyframes: opacityKeyframesMap[range],\n },\n ];\n}\n","import type { AnimationFillMode, ScrubAnimationOptions, TiltScroll } from '../../types';\nimport { cssEasings as easings } from '../../easings';\n\nconst MAX_Y_TRAVEL = 40;\n\nconst [ROTATION_X, ROTATION_Y, ROTATION_Z] = [10, 25, 25];\nconst [UP, DOWN, ORIGINAL_LAYOUT] = [-1, 1, 0];\n\nconst TRANSLATE_Y_POWER_MAP = {\n soft: 0,\n medium: 0.5,\n hard: 1,\n};\n\nconst DIRECTIONS_MAP = {\n right: 1,\n left: -1,\n};\n\nconst RANGES_MAP = {\n in: {\n from: {\n x: -1,\n y: -1,\n z: 1,\n transY: DOWN,\n },\n to: {\n x: 0,\n y: 0,\n z: 0,\n transY: ORIGINAL_LAYOUT,\n },\n },\n out: {\n from: {\n x: 0,\n y: 0,\n z: 0,\n transY: ORIGINAL_LAYOUT,\n },\n to: {\n x: -1,\n y: -1,\n z: 1,\n transY: UP,\n },\n },\n continuous: {\n from: {\n x: -1,\n y: -1,\n z: -1,\n transY: DOWN,\n },\n to: {\n x: 1,\n y: 0.5,\n z: 1.25,\n transY: UP,\n },\n },\n};\n\nfunction getYTravel(distance: number, power?: keyof typeof TRANSLATE_Y_POWER_MAP) {\n return (\n (power && power in TRANSLATE_Y_POWER_MAP ? TRANSLATE_Y_POWER_MAP[power] : distance) *\n MAX_Y_TRAVEL\n );\n}\n\nfunction getScrubOffsets({ power, range = 'in', distance = 0 }: TiltScroll) {\n const offset = Math.abs(getYTravel(distance, power));\n\n return {\n start: range === 'out' ? '0px' : `${-offset}vh`,\n end: range === 'in' ? '0px' : `${offset}vh`,\n };\n}\n\nexport default function create(options: ScrubAnimationOptions) {\n const {\n power,\n distance = 0,\n range = 'in',\n direction = 'right',\n } = options.namedEffect as TiltScroll;\n const easing = 'linear';\n const fill = (\n range === 'out' ? 'forwards' : range === 'in' ? 'backwards' : options.fill\n ) as AnimationFillMode;\n\n const { from, to } = RANGES_MAP[range];\n\n const dir = DIRECTIONS_MAP[direction];\n const rotateZFrom = Math.abs(from.z) * ROTATION_Z * dir * (from.z < 0 ? -1 : 1);\n const rotateZTo = Math.abs(to.z) * ROTATION_Z * dir * (to.z < 0 ? -1 : 1);\n\n const travelY = getYTravel(distance, power);\n const travelYFrom = travelY * from.transY;\n const travelYTo = travelY * to.transY;\n const rotationXFrom = from.x * ROTATION_X;\n const rotationYFrom = from.y * ROTATION_Y;\n const rotationXTo = to.x * ROTATION_X;\n const rotationYTo = to.y * ROTATION_Y;\n\n const { start: startOffsetAdd, end: endOffsetAdd } = getScrubOffsets(\n options.namedEffect as TiltScroll,\n );\n\n return [\n {\n ...options,\n fill,\n easing,\n startOffsetAdd,\n endOffsetAdd,\n keyframes: [\n {\n transform: `perspective(400px) translateY(${travelYFrom}vh) rotateX(${rotationXFrom}deg) rotateY(${rotationYFrom}deg)`,\n },\n {\n transform: `perspective(400px) translateY(${travelYTo}vh) rotateX(${rotationXTo}deg) rotateY(${rotationYTo}deg)`,\n },\n ],\n },\n {\n ...options,\n fill,\n easing: easings.sineInOut,\n startOffsetAdd,\n endOffsetAdd,\n composite: 'add' as const, // add this animation on top of the previous one\n keyframes: [\n {\n transform: `rotate(calc(var(--comp-rotate-z, 0deg) + ${rotateZFrom}deg))`,\n },\n {\n transform: `rotate(calc(var(--comp-rotate-z, 0deg) + ${rotateZTo}deg))`,\n },\n ],\n },\n ];\n}\n","import type {\n TurnScroll,\n EffectScrollRange,\n ScrubAnimationOptions,\n AnimationExtraOptions,\n DomApi,\n AnimationFillMode,\n} from '../../types';\n\nconst ELEMENT_ROTATION = 45;\n\nconst POWER_MAP = {\n soft: { scaleFrom: 1, scaleTo: 1 },\n medium: { scaleFrom: 0.7, scaleTo: 1.3 },\n hard: { scaleFrom: 0.4, scaleTo: 1.6 },\n};\n\nconst ROTATE_DIRECTION_MAP = {\n clockwise: 1,\n 'counter-clockwise': -1,\n};\n\ntype RangeValuesTurnScroll = Record<\n EffectScrollRange,\n (\n rotate: number,\n scale: { scaleFrom: number; scaleTo: number },\n travel: { startX: string; endX: string },\n ) => {\n fromValues: { rotation: number; scale: number; translate: string };\n toValues: { rotation: number; scale: number; translate: string };\n }\n>;\n\nconst TRANSLATE_X_MAP = {\n left: {\n startX: `calc(-1 * var(--motion-left, calc(100vw - 100%)) - 100%)`,\n endX: `calc(100vw - var(--motion-left, 0px))`,\n },\n right: {\n startX: `calc(100vw - var(--motion-left, 0px))`,\n endX: `calc(-1 * var(--motion-left, calc(100vw - 100%)) - 100%)`,\n },\n};\n\nconst RANGES_MAP: RangeValuesTurnScroll = {\n in: (rotate, scale, travel) => ({\n fromValues: {\n rotation: -rotate,\n scale: scale.scaleFrom,\n translate: travel.startX,\n },\n toValues: { rotation: 0, scale: 1, translate: '0px' },\n }),\n out: (rotate, scale, travel) => ({\n fromValues: { rotation: 0, scale: 1, translate: '0px' },\n toValues: {\n rotation: rotate,\n scale: scale.scaleFrom,\n translate: travel.endX,\n },\n }),\n continuous: (rotate, scale, travel) => ({\n fromValues: {\n rotation: -rotate,\n scale: scale.scaleFrom,\n translate: travel.startX,\n },\n toValues: {\n rotation: rotate,\n scale: scale.scaleTo,\n translate: travel.endX,\n },\n }),\n};\n\nexport default function create(\n options: ScrubAnimationOptions & AnimationExtraOptions,\n dom?: DomApi,\n) {\n const {\n power,\n spin = 'clockwise',\n direction = 'right',\n scale = 1,\n range = 'in',\n } = options.namedEffect as TurnScroll;\n const easing = 'linear';\n const fill = (\n range === 'out' ? 'forwards' : range === 'in' ? 'backwards' : options.fill\n ) as AnimationFillMode;\n\n const transX = TRANSLATE_X_MAP[direction];\n const rotateZ = ELEMENT_ROTATION * ROTATE_DIRECTION_MAP[spin];\n const scaleFactors =\n power && POWER_MAP[power] ? POWER_MAP[power] : { scaleFrom: scale, scaleTo: scale };\n\n const { fromValues, toValues } = RANGES_MAP[range](rotateZ, scaleFactors, transX);\n\n let left = 0;\n if (dom) {\n dom.measure((target) => {\n if (!target) {\n return;\n }\n left = target.getBoundingClientRect().left;\n });\n dom.mutate((target) => {\n target?.style.setProperty('--motion-left', `${left}px`);\n });\n }\n\n return [\n {\n ...options,\n fill,\n easing,\n keyframes: [\n {\n transform: `translateX(${fromValues.translate}) scale(${fromValues.scale}) rotate(calc(var(--comp-rotate-z, 0deg) + ${fromValues.rotation}deg))`,\n },\n {\n transform: `translateX(${toValues.translate}) scale(${toValues.scale}) rotate(calc(var(--comp-rotate-z, 0deg) + ${toValues.rotation}deg))`,\n },\n ],\n },\n ];\n /*\n * @keyframes <name> {\n * from {\n * transform: translateX(<fromValues.position>) scale(<fromValues.scale>) rotate(calc(<rotation> - <fromValues.rotation>));\n * }\n * to {\n * transform: translateX(<toValues.position>) scale(<toValues.scale>) rotate(calc(<rotation> + <toValues.rotation>));\n * }\n * }\n */\n}\n","import ArcScroll from './ArcScroll';\nimport BlurScroll from './BlurScroll';\nimport FadeScroll from './FadeScroll';\nimport FlipScroll from './FlipScroll';\nimport GrowScroll from './GrowScroll';\nimport MoveScroll from './MoveScroll';\nimport PanScroll from './PanScroll';\nimport ParallaxScroll from './ParallaxScroll';\nimport RevealScroll from './RevealScroll';\nimport ShapeScroll from './ShapeScroll';\nimport ShuttersScroll from './ShuttersScroll';\nimport ShrinkScroll from './ShrinkScroll';\nimport SkewPanScroll from './SkewPanScroll';\nimport SlideScroll from './SlideScroll';\nimport Spin3dScroll from './Spin3dScroll';\nimport SpinScroll from './SpinScroll';\nimport StretchScroll from './StretchScroll';\nimport TiltScroll from './TiltScroll';\nimport TurnScroll from './TurnScroll';\nimport type { ScrollAnimations } from '../../types';\n\nexport const scrollAnimations: ScrollAnimations = {\n ArcScroll,\n BlurScroll,\n FadeScroll,\n FlipScroll,\n GrowScroll,\n MoveScroll,\n PanScroll,\n ParallaxScroll,\n RevealScroll,\n ShapeScroll,\n ShuttersScroll,\n ShrinkScroll,\n SkewPanScroll,\n SlideScroll,\n Spin3dScroll,\n SpinScroll,\n StretchScroll,\n TiltScroll,\n TurnScroll,\n};\n","import type { ArcIn, TimeAnimationOptions, EffectFourDirections, DomApi } from '../../types';\nimport { INITIAL_FRAME_OFFSET, toKeyframeValue } from '../../utils';\n\nconst ROTATION_ANGLE = 80;\nconst DIRECTION_MAP: Record<EffectFourDirections, { x: number; y: number; sign: number }> = {\n top: { x: 1, y: 0, sign: 1 },\n right: { x: 0, y: 1, sign: 1 },\n bottom: { x: 1, y: 0, sign: -1 },\n left: { x: 0, y: 1, sign: -1 },\n};\n\nconst EASING_MAP = {\n soft: 'cubicInOut',\n medium: 'quintInOut',\n hard: 'backOut',\n};\n\nexport function web(options: TimeAnimationOptions, dom?: DomApi) {\n prepare(options, dom);\n\n return style(options, true);\n}\n\nexport function getNames(_: TimeAnimationOptions) {\n return ['motion-fadeIn', 'motion-arcIn'];\n}\n\nexport function style(options: TimeAnimationOptions, asWeb = false) {\n const { power, direction = 'right' } = options.namedEffect as ArcIn;\n const [fadeIn, arcIn] = getNames(options);\n\n const easing = (power && EASING_MAP[power]) || options.easing || 'quintInOut';\n\n // we can remove dependency on measurement here if we use a \"layout wrapper\" as a `container`: https://jsbin.com/mulojuwogi/edit?css,output\n // we could also consider a fixed value for z, e.g. 300px like in ArcScroll\n // const { width, height } = element.getBoundingClientRect();\n\n const { x, y, sign } = DIRECTION_MAP[direction];\n // const z = rotateX ? height / 2 : width / 2;\n const z = `(-1 * (var(--motion-height, 100vh) * var(--motion-arc-x, 1) + var(--motion-width, 100vw) * var(--motion-arc-y, 0))) / 2`;\n\n const custom = {\n '--motion-arc-x': `${x}`,\n '--motion-arc-y': `${y}`,\n '--motion-arc-sign': `${sign}`,\n };\n\n return [\n {\n ...options,\n name: fadeIn,\n duration: options.duration! * 0.7,\n easing: 'sineIn',\n custom: {},\n keyframes: [{ offset: 0, opacity: 0 }, { opacity: 'var(--comp-opacity, 1)' }],\n },\n {\n ...options,\n name: arcIn,\n easing,\n custom,\n keyframes: [\n {\n offset: INITIAL_FRAME_OFFSET,\n transform: `perspective(800px) translateZ(calc(${z})) rotateX(calc(${toKeyframeValue(\n custom,\n '--motion-arc-x',\n asWeb,\n )} * ${toKeyframeValue(\n custom,\n '--motion-arc-sign',\n asWeb,\n )} * ${ROTATION_ANGLE}deg)) rotateY(calc(${toKeyframeValue(\n custom,\n '--motion-arc-y',\n asWeb,\n )} * ${toKeyframeValue(\n custom,\n '--motion-arc-sign',\n asWeb,\n )} * ${ROTATION_ANGLE}deg)) translateZ(calc(-1 * ${z})) rotate(var(--comp-rotate-z, 0deg))`,\n },\n {\n transform: `perspective(800px) translateZ(calc(${z})) rotateX(0deg) rotateY(0deg) translateZ(calc(-1 * ${z})) rotate(var(--comp-rotate-z, 0deg))`,\n },\n ],\n },\n ];\n}\n\nexport function prepare(_: TimeAnimationOptions, dom?: DomApi) {\n if (dom) {\n let width: number, height: number;\n\n dom.measure((target) => {\n if (!target) {\n return;\n }\n\n const rect = target.getBoundingClientRect();\n width = rect.width;\n height = rect.height;\n });\n\n dom.mutate((target) => {\n target?.style.setProperty('--motion-height', `${height}px`);\n target?.style.setProperty('--motion-width', `${width}px`);\n });\n }\n}\n","import type { BlurIn, TimeAnimationOptions } from '../../types';\nimport { toKeyframeValue } from '../../utils';\n\nconst BLUR_POWER_MAP = {\n soft: 6,\n medium: 25,\n hard: 50,\n};\n\nexport function getNames(_: TimeAnimationOptions) {\n return ['motion-fadeIn', 'motion-blurIn'];\n}\n\nexport function web(options: TimeAnimationOptions) {\n return style(options, true);\n}\n\nexport function style(options: TimeAnimationOptions, asWeb = false) {\n const { blur = 6, power } = options.namedEffect as BlurIn;\n const [fadeIn, blurIn] = getNames(options);\n\n const easing = options.easing || 'linear';\n const blurFactor = power && BLUR_POWER_MAP[power] ? BLUR_POWER_MAP[power] : blur;\n\n const custom = {\n '--motion-blur': `${blurFactor}px`,\n };\n\n return [\n {\n ...options,\n name: fadeIn,\n duration: options.duration! * 0.7,\n easing: 'sineIn',\n custom: {},\n keyframes: [{ offset: 0, opacity: 0 }, { opacity: 'var(--comp-opacity, 1)' }],\n },\n {\n ...options,\n name: blurIn,\n easing,\n composite: 'add' as const, // make sure we don't override existing filters on the component\n custom,\n keyframes: [\n {\n filter: `blur(${toKeyframeValue(custom, '--motion-blur', asWeb)})`,\n },\n {\n filter: 'blur(0px)',\n },\n ],\n },\n ];\n}\n","import { ShuttersIn, TimeAnimationOptions } from '../../types';\nimport {\n getShuttersClipPaths,\n getEasing,\n toKeyframeValue,\n INITIAL_FRAME_OFFSET,\n} from '../../utils';\n\nexport function getNames(_: TimeAnimationOptions) {\n return ['motion-shuttersIn'];\n}\n\nexport function web(options: TimeAnimationOptions) {\n return style(options, true);\n}\n\nexport function style(options: TimeAnimationOptions, asWeb = false) {\n const {\n direction = 'right',\n shutters = 12,\n staggered = true,\n } = options.namedEffect as ShuttersIn;\n const [shuttersIn] = getNames(options);\n\n const { clipStart, clipEnd } = getShuttersClipPaths(direction, shutters, staggered);\n\n const custom = {\n '--motion-shutters-start': clipStart,\n '--motion-shutters-end': clipEnd,\n };\n\n const easing = getEasing(options.easing || 'sineIn');\n\n return [\n {\n ...options,\n easing,\n name: shuttersIn,\n custom,\n keyframes: [\n {\n offset: 0,\n opacity: 0,\n easing: 'step-end',\n },\n {\n offset: INITIAL_FRAME_OFFSET,\n opacity: 'var(--comp-opacity, 1)',\n clipPath: toKeyframeValue(custom, '--motion-shutters-start', asWeb),\n },\n {\n clipPath: toKeyframeValue(custom, '--motion-shutters-end', asWeb),\n },\n ],\n },\n ];\n}\n","import { getEasingFamily, getEasing, toKeyframeValue, INITIAL_FRAME_OFFSET } from '../../utils';\nimport type { BounceIn, TimeAnimationOptions } from '../../types';\n\nexport function getNames(_: TimeAnimationOptions) {\n return ['motion-fadeIn', 'motion-bounceIn'];\n}\n\nconst { in: easeIn, out: easeOut } = getEasingFamily('sineIn');\nconst BOUNCE_KEYFRAMES = [\n { offset: INITIAL_FRAME_OFFSET * 100, translate: 100 },\n { offset: 30, translate: 0 },\n { offset: 42, translate: 35 },\n { offset: 54, translate: 0 },\n { offset: 62, translate: 21 },\n { offset: 74, translate: 0 },\n { offset: 82, translate: 9 },\n { offset: 90, translate: 0 },\n { offset: 95, translate: 2 },\n { offset: 100, translate: 0, isIn: true },\n];\n\nconst POWER_MAP = {\n soft: 1,\n medium: 2,\n hard: 3,\n};\n\nconst TRANSLATE_DIRECTION_MAP = {\n top: { y: -1, x: 0, z: 0 },\n right: { y: 0, x: 1, z: 0 },\n bottom: { y: 1, x: 0, z: 0 },\n left: { y: 0, x: -1, z: 0 },\n center: { x: 0, y: 0, z: -1 },\n};\n\nexport function web(options: TimeAnimationOptions) {\n return style(options, true);\n}\n\nexport function style(options: TimeAnimationOptions, asWeb = false) {\n const {\n power,\n distanceFactor: distance = 1,\n direction = 'bottom',\n } = options.namedEffect as BounceIn;\n const [fadeIn, bounceIn] = getNames(options);\n const distanceFactor = (power && POWER_MAP[power]) || distance;\n const perspective = direction === 'center' ? 'perspective(800px)' : ' ';\n const { x, y, z } = TRANSLATE_DIRECTION_MAP[direction];\n\n const custom = {\n '--motion-direction-x': x,\n '--motion-direction-y': y,\n '--motion-direction-z': z,\n '--motion-distance-factor': distanceFactor,\n '--motion-perspective': perspective,\n '--motion-ease-in': getEasing(easeOut),\n '--motion-ease-out': getEasing(easeIn),\n };\n\n const easeIn_ = toKeyframeValue(custom, '--motion-ease-in', asWeb);\n const easeOut_ = toKeyframeValue(custom, '--motion-ease-out', asWeb);\n const distanceFactor_ = toKeyframeValue(custom, '--motion-distance-factor', asWeb);\n const perspective_ = toKeyframeValue(custom, '--motion-perspective', asWeb, ' ');\n const directionX = toKeyframeValue(custom, '--motion-direction-x', asWeb);\n const directionY = toKeyframeValue(custom, '--motion-direction-y', asWeb);\n const directionZ = toKeyframeValue(custom, '--motion-direction-z', asWeb);\n\n const keyframes = BOUNCE_KEYFRAMES.map(({ offset, translate }, index) => ({\n offset: offset / 100,\n animationTimingFunction: index % 2 ? easeIn_ : easeOut_,\n transform: `${(\n perspective_ as string\n ).trim()} translate3d(calc(${directionX} * ${distanceFactor_} * ${\n translate / 2\n }px), calc(${directionY} * ${distanceFactor_} * ${\n translate / 2\n }px), calc(${directionZ} * ${distanceFactor_} * ${\n translate / 2\n }px)) rotateZ(var(--comp-rotate-z, 0deg))`,\n }));\n\n return [\n {\n ...options,\n name: fadeIn,\n easing: 'quadOut',\n duration: (options.duration! * BOUNCE_KEYFRAMES[3].offset) / 100,\n custom: {},\n keyframes: [{ offset: 0, opacity: 0 }, { opacity: 'var(--comp-opacity, 1)' }],\n },\n {\n ...options,\n name: bounceIn,\n easing: 'linear',\n custom,\n keyframes: [\n {\n offset: 0,\n transform: `perspective(800px) translate3d(0, 0, 0) rotateZ(var(--comp-rotate-z, 0deg))`,\n },\n ...keyframes,\n ],\n },\n ];\n}\n","import type { CurveIn, TimeAnimationOptions, DomApi } from '../../types';\nimport { INITIAL_FRAME_OFFSET, toKeyframeValue } from '../../utils';\n\nexport function getNames(_: TimeAnimationOptions) {\n return ['motion-curveIn'];\n}\n\nconst PARAMS_MAP = {\n pseudoRight: { rotationX: '180', rotationY: '0' },\n right: { rotationX: '0', rotationY: '180' },\n pseudoLeft: { rotationX: '-180', rotationY: '0' },\n left: { rotationX: '0', rotationY: '-180' },\n};\n\nexport function web(options: TimeAnimationOptions, dom?: DomApi) {\n prepare(options, dom);\n\n return style(options, true);\n}\n\nexport function style(options: TimeAnimationOptions, asWeb = false) {\n const { direction = 'right' } = options.namedEffect as CurveIn;\n const [curveIn] = getNames(options);\n\n const { rotationX, rotationY } = PARAMS_MAP[direction];\n\n const custom = {\n '--motion-rotate-x': `${rotationX}deg`,\n '--motion-rotate-y': `${rotationY}deg`,\n };\n\n return [\n {\n ...options,\n name: curveIn,\n easing: 'quadOut',\n custom,\n keyframes: [\n {\n offset: 0,\n opacity: 0,\n easing: 'step-end',\n },\n {\n offset: INITIAL_FRAME_OFFSET,\n opacity: 0,\n transform: `perspective(200px) translateZ(calc(var(--motion-width, 300px) * -3)) rotateX(${toKeyframeValue(\n custom,\n '--motion-rotate-x',\n asWeb,\n )}) rotateY(${toKeyframeValue(\n custom,\n '--motion-rotate-y',\n asWeb,\n )}) translateZ(calc(var(--motion-width, 300px) * 3)) rotateZ(var(--comp-rotate-z, 0deg))`,\n },\n {\n opacity: 'var(--comp-opacity, 1)',\n transform:\n 'perspective(200px) translateZ(calc(var(--motion-width, 300px) * -3)) rotateX(0deg) rotateY(0deg) translateZ(calc(var(--motion-width, 300px) * 3)) rotateZ(var(--comp-rotate-z, 0deg))',\n },\n ],\n },\n ];\n}\n\nexport function prepare(_: TimeAnimationOptions, dom?: DomApi) {\n if (dom) {\n let width: number;\n\n dom.measure((target) => {\n if (!target) {\n return;\n }\n\n width = target.getBoundingClientRect().width;\n });\n\n dom.mutate((target) => {\n target?.style.setProperty('--motion-width', `${width}px`);\n });\n }\n}\n","import type { TimeAnimationOptions, CircleIn, DomApi } from '../../types';\nimport { INITIAL_FRAME_OFFSET, toKeyframeValue } from '../../utils';\n\nexport function getNames(_: TimeAnimationOptions) {\n return ['motion-circleXIn', 'motion-circleYIn'];\n}\n\nconst ROTATION = 45;\n\nexport function web(options: TimeAnimationOptions, dom?: DomApi) {\n prepare(options, dom);\n\n return style(options, true);\n}\n\nexport function style(options: TimeAnimationOptions, asWeb = false) {\n const { direction = 'right' } = options.namedEffect as CircleIn;\n const [circleXIn, circleYIn] = getNames(options);\n\n const x =\n direction === 'right'\n ? 'calc(100vw - var(--motion-left, 0px))'\n : 'calc(var(--motion-left, 0px) * -1 - 100%)';\n const y = 'min(calc(100% * -1.5), max(-300px, calc(100% * -5.5)))';\n\n const customX = {\n '--motion-translate-x': x,\n };\n const customY = {\n '--motion-translate-y': y,\n '--motion-rotate-z': `${(direction === 'right' ? 1 : -1) * ROTATION}deg`,\n };\n\n return [\n {\n ...options,\n name: circleXIn,\n easing: 'circOut',\n custom: customX,\n keyframes: [\n {\n offset: INITIAL_FRAME_OFFSET,\n translate: toKeyframeValue(customX, '--motion-translate-x', asWeb),\n },\n {\n translate: '0',\n },\n ],\n },\n {\n ...options,\n name: circleYIn,\n easing: 'linear',\n custom: customY,\n keyframes: [\n {\n offset: 0,\n opacity: 0,\n easing: 'step-end',\n },\n {\n offset: INITIAL_FRAME_OFFSET,\n opacity: 0,\n transform: `translateY(${toKeyframeValue(\n customY,\n '--motion-translate-y',\n asWeb,\n )}) rotate(calc(var(--comp-rotate-z, 0deg) + ${toKeyframeValue(\n customY,\n '--motion-rotate-z',\n asWeb,\n )}))`,\n },\n {\n opacity: 'var(--comp-opacity, 1)',\n transform: `translateY(0) rotate(var(--comp-rotate-z, 0deg))`,\n },\n ],\n },\n ];\n}\n\nexport function prepare(_: TimeAnimationOptions, dom?: DomApi) {\n if (dom) {\n let left = 0;\n\n dom.measure((target) => {\n if (!target) {\n return;\n }\n\n left = target.getBoundingClientRect().left;\n });\n\n dom.mutate((target) => {\n target?.style.setProperty('--motion-left', `${left}px`);\n });\n }\n}\n","import type { TimeAnimationOptions, DropIn } from '../../types';\nimport { INITIAL_FRAME_OFFSET, toKeyframeValue } from '../../utils';\n\nexport function getNames(_: TimeAnimationOptions) {\n return ['motion-fadeIn', 'motion-dropIn'];\n}\n\nconst PARAMS_MAP = {\n soft: { scale: 1.2, ease: 'cubicInOut' },\n medium: { scale: 1.6, ease: 'quintInOut' },\n hard: { scale: 2, ease: 'backOut' },\n};\n\nexport function web(options: TimeAnimationOptions) {\n return style(options, true);\n}\n\nexport function style(options: TimeAnimationOptions, asWeb = false) {\n const { power, initialScale = PARAMS_MAP.medium.scale } = options.namedEffect as DropIn;\n const [fadeIn, dropIn] = getNames(options);\n\n const scale = (power && PARAMS_MAP[power].scale) || initialScale;\n const easing = (power && PARAMS_MAP[power].ease) || options.easing || 'quintInOut';\n\n const custom = {\n '--motion-scale': `${scale}`,\n };\n\n return [\n {\n ...options,\n name: fadeIn,\n easing: 'quadOut',\n duration: options.duration! * 0.8,\n custom: {},\n keyframes: [{ offset: 0, opacity: 0 }, { opacity: 'var(--comp-opacity, 1)' }],\n },\n {\n ...options,\n name: dropIn,\n easing,\n custom,\n keyframes: [\n {\n offset: INITIAL_FRAME_OFFSET,\n scale: toKeyframeValue(custom, '--motion-scale', asWeb),\n },\n {\n scale: '1',\n },\n ],\n },\n ];\n}\n","import type { DomApi, ExpandIn, TimeAnimationOptions } from '../../types';\nimport { INITIAL_FRAME_OFFSET, toKeyframeValue } from '../../utils';\n\nexport function getNames(_: TimeAnimationOptions) {\n return ['motion-fadeIn', 'motion-expandIn'];\n}\n\nconst SCALE_MAP = {\n soft: 0.8,\n medium: 0.6,\n hard: 0,\n};\n\nconst TRANSFORM_ORIGIN_MAP = {\n top: { x: 0, y: -0.5 },\n 'top-right': { x: 0.5, y: -0.5 },\n right: { x: 0.5, y: 0 },\n 'bottom-right': { x: 0.5, y: 0.5 },\n bottom: { x: 0, y: 0.5 },\n 'bottom-left': { x: -0.5, y: 0.5 },\n left: { x: -0.5, y: 0 },\n 'top-left': { x: -0.5, y: -0.5 },\n center: { x: 0, y: 0 },\n};\n\nexport function web(options: TimeAnimationOptions, dom?: DomApi) {\n prepare(options, dom);\n\n return style(options, true);\n}\n\nexport function style(options: TimeAnimationOptions, asWeb = false) {\n const { power, initialScale = 0, direction = 'center' } = options.namedEffect as ExpandIn;\n const [fadeIn, expandIn] = getNames(options);\n\n const easing = options.easing || 'cubicInOut';\n const scale_ = power && power in SCALE_MAP ? SCALE_MAP[power] : initialScale;\n const { x, y } = TRANSFORM_ORIGIN_MAP[direction];\n\n const custom = {\n '--motion-translate-x': x,\n '--motion-translate-y': y,\n '--motion-scale': scale_,\n };\n\n const transX = toKeyframeValue(custom, '--motion-translate-x', asWeb);\n const transY = toKeyframeValue(custom, '--motion-translate-y', asWeb);\n const scale = toKeyframeValue(custom, '--motion-scale', asWeb);\n\n return [\n {\n ...options,\n name: fadeIn,\n easing: 'linear',\n custom: {},\n keyframes: [{ offset: 0, opacity: 0 }, { opacity: 'var(--comp-opacity, 1)' }],\n },\n {\n ...options,\n name: expandIn,\n easing,\n custom,\n keyframes: [\n {\n offset: INITIAL_FRAME_OFFSET,\n transform: `translateX(calc(var(--motion-width, 100%) * ${transX})) translateY(calc(var(--motion-height, 100%) * ${transY})) scale(${scale}) translateX(calc(var(--motion-width, 100%) * -1 * ${transX})) translateY(calc(var(--motion-height, 100%) * -1 * ${transY})) rotate(var(--comp-rotate-z, 0deg))`,\n },\n {\n transform: `translateX(calc(var(--motion-width, 100%) * ${transX})) translateY(calc(var(--motion-height, 100%) * ${transY})) scale(1) translateX(calc(var(--motion-width, 100%) * -1 * ${transX})) translateY(calc(var(--motion-height, 100%) * -1 * ${transY})) rotate(var(--comp-rotate-z, 0deg))`,\n },\n ],\n },\n ];\n}\n\nexport function prepare(_: TimeAnimationOptions, dom?: DomApi) {\n if (dom) {\n let width: number, height: number;\n\n dom.measure((target) => {\n if (!target) {\n return;\n }\n\n const rect = target.getBoundingClientRect();\n width = rect.width;\n height = rect.height;\n });\n\n dom.mutate((target) => {\n target?.style.setProperty('--motion-width', `${width}px`);\n target?.style.setProperty('--motion-height', `${height}px`);\n });\n }\n}\n","import { TimeAnimationOptions } from '../../types';\n\nexport function getNames(_: TimeAnimationOptions) {\n return ['motion-fadeIn'];\n}\n\nexport function web(options: TimeAnimationOptions) {\n return style(options);\n}\n\nexport function style(options: TimeAnimationOptions) {\n const [fadeIn] = getNames(options);\n\n return [\n {\n ...options,\n name: fadeIn,\n easing: 'sineInOut',\n keyframes: [{ offset: 0, opacity: 0 }, { opacity: 'var(--comp-opacity, 1)' }],\n },\n ];\n}\n","import { getAdjustedDirection, INITIAL_FRAME_OFFSET } from '../../utils';\nimport type { FlipIn, TimeAnimationOptions, DomApi } from '../../types';\n\nexport function getNames(_: TimeAnimationOptions) {\n return ['motion-fadeIn', 'motion-flipIn'];\n}\n\nconst DIRECTIONS = ['top', 'right', 'bottom', 'left'];\n\ntype Direction = (typeof DIRECTIONS)[number];\n\nconst POWER_TO_ROTATE_MAP = {\n soft: 45,\n medium: 90,\n hard: 270,\n};\n\nfunction getRotateFrom(direction: Direction, rotate: number) {\n return {\n x: ROTATE_MAP[direction].x * rotate,\n y: ROTATE_MAP[direction].y * rotate,\n };\n}\n\nconst ROTATE_MAP: Record<Direction, { x: number; y: number }> = {\n top: { x: 1, y: 0 },\n right: { x: 0, y: 1 },\n bottom: { x: -1, y: 0 },\n left: { x: 0, y: -1 },\n};\n\nexport function web(options: TimeAnimationOptions, dom?: DomApi) {\n prepare(options, dom);\n\n return style(options);\n}\n\nexport function style(options: TimeAnimationOptions) {\n const { direction = 'top', power, initialRotate = 90 } = options.namedEffect as FlipIn;\n const [fadeIn, flipIn] = getNames(options);\n const rotate = (power && POWER_TO_ROTATE_MAP[power]) || initialRotate;\n const easing = options.easing || 'backOut';\n\n const from = getRotateFrom(direction, rotate);\n\n const custom = {\n '--motion-rotate-x': `${from.x}deg`,\n '--motion-rotate-y': `${from.y}deg`,\n };\n\n return [\n {\n ...options,\n easing: 'quadOut',\n name: fadeIn,\n custom: {},\n keyframes: [{ offset: 0, opacity: 0 }, { opacity: 'var(--comp-opacity, 1)' }],\n },\n {\n ...options,\n easing,\n name: flipIn,\n custom,\n keyframes: [\n {\n offset: INITIAL_FRAME_OFFSET,\n transform: `perspective(800px) rotate(var(--comp-rotate-z, 0deg)) rotateX(var(--motion-rotate-x , ${custom['--motion-rotate-x']})) rotateY(var(--motion-rotate-y , ${custom['--motion-rotate-y']}))`,\n },\n {\n transform: `perspective(800px) rotate(var(--comp-rotate-z, 0deg)) rotateX(0deg) rotateY(0deg)`,\n },\n ],\n },\n ];\n}\n\nexport function prepare(options: TimeAnimationOptions, dom?: DomApi) {\n const { direction = 'top', power, initialRotate = 90 } = options.namedEffect as FlipIn;\n\n const rotate = (power && POWER_TO_ROTATE_MAP[power]) || initialRotate;\n\n if (dom) {\n let adjustedDirection: string = direction;\n\n dom.measure((target) => {\n if (!target) {\n return;\n }\n\n const rotation = getComputedStyle(target).getPropertyValue('--comp-rotate-z') || '0deg';\n adjustedDirection = getAdjustedDirection(\n DIRECTIONS,\n direction,\n parseInt(rotation, 10),\n ) as (typeof DIRECTIONS)[number];\n });\n\n dom.mutate((target) => {\n const from = getRotateFrom(adjustedDirection, rotate);\n\n target?.style.setProperty('--motion-rotate-x', `${from.x}deg`);\n target?.style.setProperty('--motion-rotate-y', `${from.y}deg`);\n });\n }\n}\n","import type { TimeAnimationOptions, FloatIn } from '../../types';\nimport { INITIAL_FRAME_OFFSET, toKeyframeValue } from '../../utils';\n\nexport function getNames(_: TimeAnimationOptions) {\n return ['motion-floatIn'];\n}\n\nconst PARAMS_MAP = {\n top: { dx: 0, dy: -1, distance: 120 },\n right: { dx: 1, dy: 0, distance: 120 },\n bottom: { dx: 0, dy: 1, distance: 120 },\n left: { dx: -1, dy: 0, distance: 120 },\n};\n\nexport function web(options: TimeAnimationOptions) {\n return style(options, true);\n}\n\nexport function style(options: TimeAnimationOptions, asWeb = false) {\n const { direction = 'left' } = options.namedEffect as FloatIn;\n const [floatIn] = getNames(options);\n const fromParams = PARAMS_MAP[direction];\n\n const translateX = fromParams.dx * fromParams.distance;\n const translateY = fromParams.dy * fromParams.distance;\n\n const custom = {\n '--motion-translate-x': `${translateX}px`,\n '--motion-translate-y': `${translateY}px`,\n };\n\n return [\n {\n ...options,\n name: floatIn,\n easing: 'sineInOut',\n custom,\n keyframes: [\n {\n offset: 0,\n opacity: 0,\n easing: 'step-end',\n },\n {\n offset: INITIAL_FRAME_OFFSET,\n opacity: 0,\n transform: `translate(${toKeyframeValue(\n custom,\n '--motion-translate-x',\n asWeb,\n )}, ${toKeyframeValue(\n custom,\n '--motion-translate-y',\n asWeb,\n )}) rotate(var(--comp-rotate-z, 0deg))`,\n },\n {\n opacity: 'var(--comp-opacity, 1)',\n transform: 'translate(0, 0) rotate(var(--comp-rotate-z, 0deg))',\n },\n ],\n },\n ];\n}\n","import type { FoldIn, TimeAnimationOptions, DomApi } from '../../types';\nimport { getAdjustedDirection, INITIAL_FRAME_OFFSET } from '../../utils';\n\nexport function getNames(_: TimeAnimationOptions) {\n return ['motion-fadeIn', 'motion-foldIn'];\n}\n\nconst POWER_TO_ROTATE_MAP = {\n soft: 35,\n medium: 60,\n hard: 90,\n};\n\nconst DIRECTIONS = ['top', 'right', 'bottom', 'left'];\n\ntype Direction = (typeof DIRECTIONS)[number];\n\nconst PARAM_MAP: Record<Direction, { x: number; y: number; origin: { x: number; y: number } }> = {\n top: { x: -1, y: 0, origin: { x: 0, y: -50 } },\n right: { x: 0, y: -1, origin: { x: 50, y: 0 } },\n bottom: { x: 1, y: 0, origin: { x: 0, y: 50 } },\n left: { x: 0, y: 1, origin: { x: -50, y: 0 } },\n};\n\nfunction getRotateFrom(direction: Direction, rotate: number) {\n return {\n x: PARAM_MAP[direction].x * rotate,\n y: PARAM_MAP[direction].y * rotate,\n };\n}\n\nexport function web(options: TimeAnimationOptions, dom?: DomApi) {\n prepare(options, dom);\n\n return style(options);\n}\n\nexport function style(options: TimeAnimationOptions) {\n const { direction = 'top', power, initialRotate = 90 } = options.namedEffect as FoldIn;\n const [fadeIn, foldIn] = getNames(options);\n const easing = options.easing || 'backOut';\n const rotate = (power && POWER_TO_ROTATE_MAP[power]) || initialRotate;\n const { x, y } = PARAM_MAP[direction].origin;\n\n const from = getRotateFrom(direction, rotate);\n\n const custom = {\n '--motion-origin-x': `${x}%`,\n '--motion-origin-y': `${y}%`,\n '--motion-rotate-x': `${from.x}deg`,\n '--motion-rotate-y': `${from.y}deg`,\n };\n\n return [\n {\n ...options,\n easing: 'quadOut',\n name: fadeIn,\n custom: {},\n keyframes: [{ offset: 0, opacity: 0 }, { opacity: 'var(--comp-opacity, 1)' }],\n },\n {\n ...options,\n easing,\n name: foldIn,\n custom,\n keyframes: [\n {\n offset: INITIAL_FRAME_OFFSET,\n transform: `rotate(var(--comp-rotate-z, 0deg)) translate(var(--motion-origin-x ,${custom['--motion-origin-x']}), var(--motion-origin-y, ${custom['--motion-origin-y']})) perspective(800px) rotateX(var(--motion-rotate-x, ${custom['--motion-rotate-x']})) rotateY(var(--motion-rotate-y, ${custom['--motion-rotate-y']})) translate(calc(-1 * var(--motion-origin-x ,${custom['--motion-origin-x']})), calc(-1 * var(--motion-origin-y, ${custom['--motion-origin-y']})))`,\n },\n {\n transform: `rotate(var(--comp-rotate-z, 0deg)) translate(var(--motion-origin-x ,${custom['--motion-origin-x']}), var(--motion-origin-y, ${custom['--motion-origin-y']})) perspective(800px) rotateX(0deg) rotateY(0deg) translate(calc(-1 * var(--motion-origin-x ,${custom['--motion-origin-x']})), calc(-1 * var(--motion-origin-y, ${custom['--motion-origin-y']})))`,\n },\n ],\n },\n ];\n}\n\nexport function prepare(options: TimeAnimationOptions, dom?: DomApi) {\n const { direction = 'top', power, initialRotate = 90 } = options.namedEffect as FoldIn;\n const rotate = (power && POWER_TO_ROTATE_MAP[power]) || initialRotate;\n\n if (dom) {\n let adjustedDirection: Direction = direction;\n\n dom.measure((target) => {\n if (!target) {\n return;\n }\n\n const rotation = getComputedStyle(target).getPropertyValue('--comp-rotate-z') || '0deg';\n\n adjustedDirection = getAdjustedDirection(\n DIRECTIONS,\n direction,\n parseInt(rotation, 10),\n ) as Direction;\n });\n\n dom.mutate((target) => {\n const { origin } = PARAM_MAP[adjustedDirection];\n const newRotate = getRotateFrom(adjustedDirection, rotate);\n\n target?.style.setProperty('--motion-origin-x', `${origin.x}%`);\n target?.style.setProperty('--motion-origin-y', `${origin.y}%`);\n target?.style.setProperty('--motion-rotate-x', `${newRotate.x}deg`);\n target?.style.setProperty('--motion-rotate-y', `${newRotate.y}deg`);\n });\n }\n}\n","import type { AnimationExtraOptions, DomApi, TimeAnimationOptions, GlideIn } from '../../types';\nimport {\n getCssUnits,\n getOutOfScreenDistance,\n INITIAL_FRAME_OFFSET,\n toKeyframeValue,\n} from '../../utils';\n\nexport function getNames(_: TimeAnimationOptions) {\n return ['motion-glideIn'];\n}\n\nconst EASING_MAP = {\n soft: 'cubicInOut',\n medium: 'quintInOut',\n hard: 'backOut',\n};\n\nexport function web(options: TimeAnimationOptions & AnimationExtraOptions, dom?: DomApi) {\n prepare(options, dom);\n\n return style(options, true);\n}\n\nexport function style(options: TimeAnimationOptions, asWeb = false) {\n const {\n direction = 0,\n distance = { value: 100, type: 'percentage' },\n power,\n startFromOffScreen = false,\n } = options.namedEffect as GlideIn;\n const [glideIn] = getNames(options);\n\n const angleInRad = (direction * Math.PI) / 180;\n const unit = getCssUnits(distance.type);\n\n const easing = (power && EASING_MAP[power]) || options.easing || 'quintInOut';\n const { x, y } = getOutOfScreenDistance(direction);\n\n const translateX = startFromOffScreen\n ? x\n : `${(Math.sin(angleInRad) * distance.value) | 0}${unit}`;\n const translateY = startFromOffScreen\n ? y\n : `${(Math.cos(angleInRad) * distance.value * -1) | 0}${unit}`;\n\n const custom = {\n '--motion-translate-x': `${translateX}`,\n '--motion-translate-y': `${translateY}`,\n };\n\n return [\n {\n ...options,\n name: glideIn,\n easing,\n custom,\n keyframes: [\n {\n offset: 0,\n opacity: 0,\n easing: 'step-end',\n },\n {\n offset: INITIAL_FRAME_OFFSET,\n // TODO: remove opacity when not necessary to override hard-coded opacity:0 in style\n opacity: 'var(--comp-opacity, 1)',\n transform: `translate(${toKeyframeValue(\n custom,\n '--motion-translate-x',\n asWeb,\n )}, ${toKeyframeValue(\n custom,\n '--motion-translate-y',\n asWeb,\n )}) rotate(var(--comp-rotate-z, 0deg))`,\n },\n {\n opacity: 'var(--comp-opacity, 1)',\n transform: 'translate(0, 0) rotate(var(--comp-rotate-z, 0deg))',\n },\n ],\n },\n ];\n}\n\nexport function prepare(options: TimeAnimationOptions, dom?: DomApi) {\n const { startFromOffScreen = false } = options.namedEffect as GlideIn;\n\n if (dom && startFromOffScreen) {\n let left = 0;\n let top = 0;\n\n dom.measure((target) => {\n if (!target) {\n return;\n }\n\n const { left: targetLeft, top: targetTop } = target.getBoundingClientRect();\n left = targetLeft;\n top = targetTop;\n });\n\n dom.mutate((target) => {\n target?.style.setProperty('--motion-left', `${left}px`);\n target?.style.setProperty('--motion-top', `${top}px`);\n });\n }\n}\n","import { AnimationExtraOptions, DomApi, TimeAnimationOptions } from '../../types';\nimport type { GlitchIn } from '../../types';\nimport { web as glideInWeb, style as glideInStyle } from './GlideIn';\n\nexport { prepare, getNames } from './GlideIn';\n\nfunction getFixedDirection(options: TimeAnimationOptions) {\n // TODO replace with structuredClone() when possible\n const duplicate = JSON.parse(JSON.stringify(options));\n const { direction } = duplicate.namedEffect as GlitchIn;\n\n if ((duplicate.namedEffect as GlitchIn).startFromOffScreen) {\n (duplicate.namedEffect as GlitchIn).direction = (direction ?? 270) - 90;\n } else if (typeof direction === 'undefined') {\n (duplicate.namedEffect as GlitchIn).direction = 270;\n }\n\n return duplicate;\n}\n\nexport function web(options: TimeAnimationOptions & AnimationExtraOptions, dom?: DomApi) {\n return glideInWeb(getFixedDirection(options), dom);\n}\n\nexport function style(options: TimeAnimationOptions) {\n return glideInStyle(getFixedDirection(options));\n}\n","import type { GrowIn, TimeAnimationOptions } from '../../types';\nimport { getCssUnits, INITIAL_FRAME_OFFSET, toKeyframeValue } from '../../utils';\n\nexport function getNames(_: TimeAnimationOptions) {\n return ['motion-fadeIn', 'motion-growIn'];\n}\n\nconst SCALE_MAP = {\n soft: 0.8,\n medium: 0.6,\n hard: 0,\n};\n\nexport function web(options: TimeAnimationOptions) {\n return style(options, true);\n}\n\nexport function style(options: TimeAnimationOptions, asWeb = false) {\n const {\n power,\n initialScale = 0,\n distance = { value: 120, type: 'percentage' },\n direction = 0,\n } = options.namedEffect as GrowIn;\n const [fadeIn, growIn] = getNames(options);\n\n const easing = options.easing || 'cubicInOut';\n const scale = typeof power !== 'undefined' ? SCALE_MAP[power] : initialScale;\n const angleInRad = (direction * Math.PI) / 180;\n const unit = getCssUnits(distance.type);\n\n const x = `${(Math.sin(angleInRad) * distance.value) | 0}${unit}`;\n const y = `${(Math.cos(angleInRad) * distance.value * -1) | 0}${unit}`;\n\n const custom = {\n '--motion-translate-x': `${x}`,\n '--motion-translate-y': `${y}`,\n '--motion-scale': `${scale}`,\n };\n\n return [\n {\n ...options,\n easing,\n duration: options.duration! * scale,\n name: fadeIn,\n custom: {},\n keyframes: [{ offset: 0, opacity: 0 }, { opacity: 'var(--comp-opacity, 1)' }],\n },\n {\n ...options,\n easing,\n name: growIn,\n custom,\n keyframes: [\n {\n offset: INITIAL_FRAME_OFFSET,\n transform: `translate(${toKeyframeValue(\n custom,\n '--motion-translate-x',\n asWeb,\n )}, ${toKeyframeValue(\n custom,\n '--motion-translate-y',\n asWeb,\n )}) rotate(var(--comp-rotate-z, 0deg)) scale(${toKeyframeValue(\n custom,\n '--motion-scale',\n asWeb,\n )})`,\n },\n {\n transform: 'translate(0px, 0px) rotate(var(--comp-rotate-z, 0deg)) scale(1)',\n },\n ],\n },\n ];\n}\n","import { getEasingFamily, getEasing, toKeyframeValue, INITIAL_FRAME_OFFSET } from '../../utils';\nimport type { PunchIn, TimeAnimationOptions, DomApi } from '../../types';\nimport { cssEasings as easings } from '../../easings';\n\nexport function getNames(_: TimeAnimationOptions) {\n return ['motion-fadeIn', 'motion-punchIn'];\n}\n\nconst TRANSLATION_FACTORS_MAP: Record<PunchIn['direction'], { x: number; y: number }> = {\n 'top-left': { y: -1, x: -1 },\n 'top-right': { y: -1, x: 1 },\n 'bottom-right': { y: 1, x: 1 },\n 'bottom-left': { y: 1, x: -1 },\n center: { y: 0, x: 0 },\n};\n\nconst POWER_MAP = {\n soft: 'sineIn',\n medium: 'quadIn',\n hard: 'quintIn',\n};\n\nfunction getMidPoint(x: number, y: number, factor: number) {\n return {\n x: `calc(var(--motion-width, 100%) * 1.1 / 3 * ${x} * ${factor})`,\n y: `calc(var(--motion-height, 100%) * 1.1 / 3 * ${y} * ${factor})`,\n };\n}\n\nexport function web(options: TimeAnimationOptions, dom?: DomApi) {\n prepare(options, dom);\n\n return style(options, true);\n}\n\nexport function style(options: TimeAnimationOptions, asWeb = false) {\n const { direction = 'top-right', power = 'medium' } = options.namedEffect as PunchIn;\n const [fadeIn, punchIn] = getNames(options);\n const translationFactors = TRANSLATION_FACTORS_MAP[direction];\n\n const sourcePoint = {\n x: `calc(var(--motion-width, 100%) * 1.1 / 2 * ${translationFactors.x})`,\n y: `calc(var(--motion-height, 100%) * 1.1 / 2 * ${translationFactors.y})`,\n };\n\n const { in: _in, out: _out } = getEasingFamily(POWER_MAP[power]);\n\n const KEYFRAMES = [\n { offset: 30, scale: 0.3, factor: 1, ease: 'linear' },\n { offset: 45, scale: 1.4, factor: -0.4, ease: _out },\n { offset: 62.65, scale: 0.8, factor: 0.2, ease: _in },\n { offset: 77.27, scale: 1.1, factor: -0.1, ease: _out },\n { offset: 86.23, scale: 0.94, factor: 0.06, ease: _in },\n { offset: 91.73, scale: 1.03, factor: -0.03, ease: _out },\n { offset: 95.11, scale: 0.98, factor: 0.02, ease: _in },\n { offset: 97.18, scale: 1.01, factor: -0.01, ease: _out },\n { offset: 98.45, scale: 0.99, factor: 0.01, ease: _in },\n { offset: 100, scale: 1, factor: 0, ease: _out },\n ];\n\n const keyframes = KEYFRAMES.map(({ offset, scale, ease, factor }) => {\n const { x, y } = getMidPoint(translationFactors.x, translationFactors.y, factor);\n\n return {\n offset: offset / 100,\n easing: getEasing(ease),\n scale: `${scale}`,\n translate: `${x} ${y}`,\n };\n });\n\n const custom = {\n '--motion-translate': `${sourcePoint.x} ${sourcePoint.y}`,\n };\n\n return [\n {\n ...options,\n easing: 'cubicIn',\n duration: options.duration! * 0.3,\n name: fadeIn,\n custom: {},\n keyframes: [{ offset: 0, opacity: 0 }, { opacity: 'var(--comp-opacity, 1)' }],\n },\n {\n ...options,\n easing: 'linear',\n name: punchIn,\n custom,\n keyframes: [\n {\n offset: INITIAL_FRAME_OFFSET,\n translate: toKeyframeValue(custom, '--motion-translate', asWeb),\n scale: '0',\n easing: easings.expoIn,\n },\n ...keyframes,\n ],\n },\n ];\n}\n\nexport function prepare(_: TimeAnimationOptions, dom?: DomApi) {\n if (dom) {\n let width: number, height: number;\n\n dom.measure((target) => {\n if (!target) {\n return;\n }\n\n const rect = target.getBoundingClientRect();\n width = rect.width;\n height = rect.height;\n });\n\n dom.mutate((target) => {\n target?.style.setProperty('--motion-width', `${width}px`);\n target?.style.setProperty('--motion-height', `${height}px`);\n });\n }\n}\n","import type { Shape, ShapeIn, TimeAnimationOptions } from '../../types';\nimport { INITIAL_FRAME_OFFSET, toKeyframeValue } from '../../utils';\n\nexport function getNames(_: TimeAnimationOptions) {\n return ['motion-fadeIn', 'motion-shapeIn'];\n}\n\nconst shapes: Record<Shape, { start: string; end: string }> = {\n diamond: {\n start: 'polygon(50% 50%, 50% 50%, 50% 50%, 50% 50%)',\n end: 'polygon(50% -50%, 150% 50%, 50% 150%, -50% 50%)',\n },\n window: {\n start: 'inset(50% round 50% 50% 0% 0%)',\n end: 'inset(-20% round 50% 50% 0% 0%)',\n },\n rectangle: { start: 'inset(50%)', end: 'inset(0%)' },\n circle: { start: 'circle(0%)', end: 'circle(75%)' },\n ellipse: { start: 'ellipse(0% 0%)', end: 'ellipse(75% 75%)' },\n};\n\nexport function web(options: TimeAnimationOptions) {\n return style(options, true);\n}\n\nexport function style(options: TimeAnimationOptions, asWeb = false) {\n const { shape = 'rectangle' } = options.namedEffect as ShapeIn;\n const [fadeIn, shapeIn] = getNames(options);\n const easing = options.easing || 'cubicInOut';\n\n const { start, end } = shapes[shape];\n\n const custom = {\n '--motion-shape-start': start,\n '--motion-shape-end': end,\n };\n\n return [\n {\n ...options,\n name: fadeIn,\n easing: 'quadOut',\n duration: options.duration! * 0.8,\n custom: {},\n keyframes: [{ offset: 0, opacity: 0 }, { opacity: 'var(--comp-opacity, 1)' }],\n },\n {\n ...options,\n name: shapeIn,\n easing,\n custom,\n keyframes: [\n {\n offset: INITIAL_FRAME_OFFSET,\n clipPath: toKeyframeValue(custom, '--motion-shape-start', asWeb),\n },\n {\n clipPath: toKeyframeValue(custom, '--motion-shape-end', asWeb),\n },\n ],\n },\n ];\n}\n","import type { RevealIn, AnimationExtraOptions, DomApi, TimeAnimationOptions } from '../../types';\nimport { getAdjustedDirection, getClipPolygonParams, INITIAL_FRAME_OFFSET } from '../../utils';\nimport type { Direction } from '../../utils';\n\nexport function getNames(_: TimeAnimationOptions) {\n return ['motion-revealIn'];\n}\n\nconst DIRECTIONS = ['top', 'right', 'bottom', 'left'] as Direction[];\n\nfunction getClipStart(rotateZ: number, direction: Direction) {\n const clipDirection = getAdjustedDirection(\n DIRECTIONS,\n direction,\n rotateZ,\n ) as (typeof DIRECTIONS)[number];\n\n return getClipPolygonParams({\n direction: clipDirection,\n minimum: 0,\n });\n}\n\nexport function web(options: TimeAnimationOptions & AnimationExtraOptions, dom?: DomApi) {\n prepare(options, dom);\n\n return style(options);\n}\n\nexport function style(options: TimeAnimationOptions) {\n const { direction = 'left' } = options.namedEffect as RevealIn;\n const [revealIn] = getNames(options);\n const easing = options.easing || 'cubicInOut';\n\n const start = getClipStart(0, direction);\n const end = getClipPolygonParams({ direction: 'initial' });\n\n const custom = {\n '--motion-clip-start': start,\n };\n\n return [\n {\n ...options,\n easing,\n name: revealIn,\n custom,\n keyframes: [\n {\n offset: 0,\n opacity: 0,\n easing: 'step-end',\n },\n {\n offset: INITIAL_FRAME_OFFSET,\n opacity: 'var(--comp-opacity, 1)',\n clipPath: `var(--motion-clip-start, ${start})`,\n },\n {\n clipPath: end,\n },\n ],\n },\n ];\n}\n\nexport function prepare(options: TimeAnimationOptions, dom?: DomApi) {\n const { direction = 'left' } = options.namedEffect as RevealIn;\n\n if (dom) {\n let rotation = '0deg';\n\n dom.measure((target) => {\n if (!target) {\n return;\n }\n\n rotation = getComputedStyle(target).getPropertyValue('--comp-rotate-z') || '0deg';\n });\n\n dom.mutate((target_) => {\n target_?.style.setProperty(\n '--motion-clip-start',\n getClipStart(parseInt(rotation, 10), direction),\n );\n });\n }\n}\n","import type { SlideIn, AnimationExtraOptions, DomApi, TimeAnimationOptions } from '../../types';\nimport {\n Direction,\n getAdjustedDirection,\n getClipPolygonParams,\n INITIAL_FRAME_OFFSET,\n} from '../../utils';\n\nexport function getNames(options: TimeAnimationOptions) {\n const { power } = options.namedEffect as SlideIn;\n return power !== 'hard' ? ['motion-slideIn', 'motion-fadeIn'] : ['motion-slideIn'];\n}\n\nconst PARAM_MAP = {\n top: { dx: 0, dy: -1, clip: 'bottom' },\n right: { dx: 1, dy: 0, clip: 'left' },\n bottom: { dx: 0, dy: 1, clip: 'top' },\n left: { dx: -1, dy: 0, clip: 'right' },\n};\n\nconst DIRECTIONS = ['top', 'right', 'bottom', 'left'] as (keyof typeof PARAM_MAP)[];\n\nconst INITIAL_TRANSLATE_MAP = {\n soft: 0.2,\n medium: 0.8,\n hard: 1,\n};\n\nexport function web(options: TimeAnimationOptions & AnimationExtraOptions, dom?: DomApi) {\n const animations = style(options);\n\n prepare(options, dom);\n\n return animations;\n}\n\nexport function style(options: TimeAnimationOptions) {\n const { direction = 'left', power, initialTranslate = 1 } = options.namedEffect as SlideIn;\n const [slideIn, fadeIn] = getNames(options);\n\n const easing = options.easing || 'cubicInOut';\n const scale = (power && INITIAL_TRANSLATE_MAP[power]) || initialTranslate;\n const minimum = 100 - scale * 100;\n\n const start = getClipPolygonParams({\n direction,\n minimum,\n });\n const clipEnd = getClipPolygonParams({ direction: 'initial' });\n\n const custom = {\n '--motion-clip-start': start,\n '--motion-translate-x': `${PARAM_MAP[direction].dx * 100}%`,\n '--motion-translate-y': `${PARAM_MAP[direction].dy * 100}%`,\n };\n\n const animations = [\n {\n ...options,\n name: slideIn,\n easing,\n custom,\n keyframes: [\n {\n offset: INITIAL_FRAME_OFFSET,\n opacity: 'var(--comp-opacity, 1)',\n transform: `rotate(var(--comp-rotate-z, 0deg)) translate(var(--motion-translate-x, -100%), var(--motion-translate-y, 0%))`,\n clipPath: `var(--motion-clip-start, ${custom['--motion-clip-start']})`,\n },\n {\n transform: 'rotate(var(--comp-rotate-z, 0deg)) translate(0px, 0px)',\n clipPath: clipEnd,\n },\n ],\n },\n ];\n\n if (power !== 'hard') {\n animations.push({\n ...options,\n easing: 'cubicInOut',\n name: fadeIn,\n // @ts-expect-error\n custom: {},\n keyframes: [\n // @ts-expect-error\n { offset: 0, opacity: 0 },\n // @ts-expect-error\n { opacity: 'var(--comp-opacity, 1)' },\n ],\n });\n } else {\n animations[0].keyframes.unshift({\n offset: 0,\n // @ts-expect-error\n opacity: 0,\n easing: 'step-end',\n });\n }\n\n return animations;\n}\n\nexport function prepare(options: TimeAnimationOptions, dom?: DomApi) {\n const { direction = 'left', power, initialTranslate = 1 } = options.namedEffect as SlideIn;\n\n const scale = (power && INITIAL_TRANSLATE_MAP[power]) || initialTranslate;\n const minimum = 100 - scale * 100;\n\n if (dom) {\n let rotation = 0;\n\n dom.measure((target) => {\n if (!target) {\n return;\n }\n rotation = parseInt(\n getComputedStyle(target).getPropertyValue('--comp-rotate-z') || '0deg',\n 10,\n );\n });\n\n dom.mutate((target) => {\n const adjustedDirection = getAdjustedDirection(\n DIRECTIONS,\n direction,\n rotation,\n ) as (typeof DIRECTIONS)[number];\n\n target?.style.setProperty(\n '--motion-clip-start',\n getClipPolygonParams({\n direction: PARAM_MAP[adjustedDirection].clip as Direction,\n minimum,\n }),\n );\n target?.style.setProperty(\n '--motion-translate-x',\n `${PARAM_MAP[adjustedDirection].dx * 100}%`,\n );\n target?.style.setProperty(\n '--motion-translate-y',\n `${PARAM_MAP[adjustedDirection].dy * 100}%`,\n );\n });\n }\n}\n","import type { SpinIn, AnimationExtraOptions, TimeAnimationOptions } from '../../types';\nimport { INITIAL_FRAME_OFFSET, toKeyframeValue } from '../../utils';\n\nexport function getNames(_: TimeAnimationOptions) {\n return ['motion-fadeIn', 'motion-spinIn'];\n}\n\nconst SCALE_MAP = {\n soft: 1,\n medium: 0.6,\n hard: 0,\n};\n\nconst DIRECTION_MAP = {\n clockwise: -1,\n 'counter-clockwise': 1,\n};\n\nexport function web(options: TimeAnimationOptions & AnimationExtraOptions) {\n return style(options, true);\n}\n\nexport function style(options: TimeAnimationOptions, asWeb = false) {\n const {\n direction = 'clockwise',\n spins = 0.5,\n initialScale = 0,\n power,\n } = options.namedEffect as SpinIn;\n const [fadeIn, spinIn] = getNames(options);\n\n const easing = options.easing || 'cubicInOut';\n const scale = typeof power !== 'undefined' ? SCALE_MAP[power] : initialScale;\n const transformRotate = (DIRECTION_MAP[direction] > 0 ? 1 : -1) * 360 * spins;\n\n const custom = {\n '--motion-scale': `${scale}`,\n '--motion-rotate': `${transformRotate}deg`,\n };\n\n return [\n {\n ...options,\n name: fadeIn,\n easing: 'cubicIn',\n duration: options.duration! * scale,\n custom: {},\n keyframes: [{ offset: 0, opacity: 0 }, { opacity: 'var(--comp-opacity, 1)' }],\n },\n {\n ...options,\n name: spinIn,\n easing,\n custom,\n keyframes: [\n {\n offset: INITIAL_FRAME_OFFSET,\n scale: toKeyframeValue(custom, '--motion-scale', asWeb),\n rotate: toKeyframeValue(custom, '--motion-rotate', asWeb),\n },\n {\n scale: '1',\n rotate: `0deg`,\n },\n ],\n },\n ];\n}\n","import {\n getAdjustedDirection,\n getClipPolygonParams,\n INITIAL_FRAME_OFFSET,\n toKeyframeValue,\n} from '../../utils';\nimport type { TiltIn, TimeAnimationOptions, DomApi } from '../../types';\n\nexport function getNames(_: TimeAnimationOptions) {\n return ['motion-fadeIn', 'motion-tiltInRotate', 'motion-tiltInClip'];\n}\n\nconst ROTATION_MAP = {\n left: 30,\n right: -30,\n};\n\nconst DIRECTIONS = ['top', 'right', 'bottom', 'left'] as (keyof typeof ROTATION_MAP)[];\n\nfunction getClipStart(rotateZ: number) {\n const clipDirection = getAdjustedDirection(\n DIRECTIONS,\n 'top',\n rotateZ,\n ) as (typeof DIRECTIONS)[number];\n\n return getClipPolygonParams({\n direction: clipDirection,\n minimum: 0,\n });\n}\n\nexport function web(options: TimeAnimationOptions, dom?: DomApi) {\n prepare(options, dom);\n\n return style(options, true);\n}\n\nexport function style(options: TimeAnimationOptions, asWeb = false) {\n const { direction = 'left' } = options.namedEffect as TiltIn;\n const [fadeIn, tiltInRotate, tiltInClip] = getNames(options);\n\n const easing = options.easing || 'cubicOut';\n const clipStart = getClipStart(0);\n const rotationZ = ROTATION_MAP[direction];\n const clipEnd = getClipPolygonParams({ direction: 'initial' });\n const translateZ = '(var(--motion-height, 200px) / 2)';\n\n const clipCustom = {\n '--motion-rotate-z': `${rotationZ}deg`,\n '--motion-clip-start': clipStart,\n };\n\n return [\n {\n ...options,\n name: fadeIn,\n duration: options.duration! * 0.2,\n easing: 'cubicOut',\n custom: {},\n keyframes: [{ offset: 0, opacity: 0 }, { opacity: 'var(--comp-opacity, 1)' }],\n },\n {\n ...options,\n name: tiltInRotate,\n easing,\n custom: {},\n keyframes: [\n {\n offset: 0,\n easing: 'step-end',\n transform: 'perspective(800px)',\n },\n {\n offset: INITIAL_FRAME_OFFSET,\n transform: `perspective(800px) translateZ(calc(${translateZ} * -1)) rotateX(-90deg) translateZ(calc${translateZ}) rotate(var(--comp-rotate-z, 0deg))`,\n },\n {\n transform: `perspective(800px) translateZ(calc(${translateZ} * -1)) rotateX(0deg) translateZ(calc${translateZ}) rotate(var(--comp-rotate-z, 0deg))`,\n },\n ],\n },\n {\n ...options,\n name: tiltInClip,\n easing,\n composite: 'add' as const,\n duration: options.duration! * 0.8,\n custom: clipCustom,\n keyframes: [\n {\n offset: INITIAL_FRAME_OFFSET,\n clipPath: `var(--motion-clip-start, ${clipCustom['--motion-clip-start']})`,\n transform: `rotateZ(${toKeyframeValue(clipCustom, '--motion-rotate-z', asWeb)})`,\n },\n {\n clipPath: clipEnd,\n transform: `rotateZ(0deg)`,\n },\n ],\n },\n ];\n}\n\nexport function prepare(_: TimeAnimationOptions, dom?: DomApi) {\n if (dom) {\n let rotation = '0deg';\n\n dom.measure((target) => {\n if (!target) {\n return;\n }\n rotation = getComputedStyle(target).getPropertyValue('--comp-rotate-z') || '0deg';\n });\n\n dom.mutate((target_) => {\n target_?.style.setProperty('--motion-clip-start', getClipStart(parseInt(rotation, 10)));\n });\n }\n}\n","import type { TurnIn, TimeAnimationOptions, EffectFourCorners } from '../../types';\nimport { INITIAL_FRAME_OFFSET, toKeyframeValue } from '../../utils';\n\nexport function getNames(_: TimeAnimationOptions) {\n return ['motion-fadeIn', 'motion-turnIn'];\n}\n\nconst EASING_MAP = {\n soft: 'cubicInOut',\n medium: 'quintInOut',\n hard: 'backOut',\n};\n\nconst DIRECTION_TO_TRANSFORM_MAP: Record<\n EffectFourCorners,\n {\n x: number;\n y: number;\n angle?: number;\n }\n> = {\n 'top-left': {\n angle: -50,\n x: -50,\n y: -50,\n },\n 'top-right': {\n angle: 50,\n x: 50,\n y: -50,\n },\n 'bottom-right': {\n angle: 50,\n x: 50,\n y: 50,\n },\n 'bottom-left': {\n angle: -50,\n x: -50,\n y: 50,\n },\n};\n\nexport function web(options: TimeAnimationOptions) {\n return style(options, true);\n}\n\nexport function style(options: TimeAnimationOptions, asWeb = false) {\n const { direction = 'top-left', power } = options.namedEffect as TurnIn;\n const [fadeIn, turnIn] = getNames(options);\n\n const easing = power && EASING_MAP[power] ? EASING_MAP[power] : options.easing || 'backOut';\n const { x, y } = DIRECTION_TO_TRANSFORM_MAP[direction];\n const transformRotate = DIRECTION_TO_TRANSFORM_MAP[direction].angle;\n\n const custom = {\n '--motion-origin': `${x}%, ${y}%`,\n '--motion-origin-invert': `${-x}%, ${-y}%`,\n '--motion-rotate-z': `${transformRotate}deg`,\n };\n\n const origin = toKeyframeValue(custom, '--motion-origin', asWeb);\n const invertedOrigin = toKeyframeValue(custom, '--motion-origin-invert', asWeb);\n\n return [\n {\n ...options,\n name: fadeIn,\n duration: options.duration! * 0.6,\n easing: 'sineIn',\n custom: {},\n keyframes: [{ offset: 0, opacity: 0 }, { opacity: 'var(--comp-opacity, 1)' }],\n },\n {\n ...options,\n name: turnIn,\n easing,\n custom,\n keyframes: [\n {\n offset: INITIAL_FRAME_OFFSET,\n transform: `translate(${origin}) rotate(${toKeyframeValue(\n custom,\n '--motion-rotate-z',\n asWeb,\n )}) translate(${invertedOrigin}) rotate(var(--comp-rotate-z, 0deg))`,\n },\n {\n transform: `translate(${origin}) rotate(0deg) translate(${invertedOrigin}) rotate(var(--comp-rotate-z, 0deg))`,\n },\n ],\n },\n ];\n}\n","import { getClipPolygonParams, getAdjustedDirection, INITIAL_FRAME_OFFSET } from '../../utils';\nimport type { WinkIn, TimeAnimationOptions, DomApi } from '../../types';\n\nexport function getNames(_: TimeAnimationOptions) {\n return ['motion-fadeIn', 'motion-winkInClip', 'motion-winkInRotate'];\n}\n\nconst PARAM_MAP = {\n vertical: { scaleY: 0, scaleX: 1 },\n horizontal: { scaleY: 1, scaleX: 0 },\n};\nconst DIRECTIONS = ['vertical', 'horizontal'] as (keyof typeof PARAM_MAP)[];\n\nexport function web(options: TimeAnimationOptions, dom?: DomApi) {\n prepare(options, dom);\n\n return style(options);\n}\n\nexport function style(options: TimeAnimationOptions) {\n const { direction = 'horizontal' } = options.namedEffect as WinkIn;\n const [fadeIn, winkInClip, winkInRotate] = getNames(options);\n\n const adjustedDirection = getAdjustedDirection(\n DIRECTIONS,\n direction,\n 0,\n ) as (typeof DIRECTIONS)[number];\n const { scaleX, scaleY } = PARAM_MAP[adjustedDirection];\n const easing = options.easing || 'quintInOut';\n\n const start = getClipPolygonParams({ direction, minimum: 100 });\n const end = getClipPolygonParams({ direction: 'initial' });\n\n const custom = {\n '--motion-scale-x': scaleX,\n '--motion-scale-y': scaleY,\n '--motion-clip-start': start,\n };\n\n return [\n {\n ...options,\n easing: 'quadOut',\n name: fadeIn,\n custom: {},\n keyframes: [{ offset: 0, opacity: 0 }, { opacity: 'var(--comp-opacity, 1)' }],\n },\n {\n ...options,\n easing,\n name: winkInClip,\n custom,\n keyframes: [\n {\n offset: INITIAL_FRAME_OFFSET,\n clipPath: `var(--motion-clip-start, ${custom['--motion-clip-start']})`,\n },\n {\n clipPath: end,\n },\n ],\n },\n {\n ...options,\n duration: options.duration! * 0.85,\n easing,\n name: winkInRotate,\n custom,\n keyframes: [\n {\n offset: INITIAL_FRAME_OFFSET,\n transform: `rotate(var(--comp-rotate-z, 0deg)) scale(var(--motion-scale-x, ${custom['--motion-scale-x']}), var(--motion-scale-y, ${custom['--motion-scale-y']}))`,\n },\n {\n transform: 'rotate(var(--comp-rotate-z, 0deg)) scale(1, 1)',\n },\n ],\n },\n ];\n}\n\nexport function prepare(options: TimeAnimationOptions, dom?: DomApi) {\n const { direction = 'horizontal' } = options.namedEffect as WinkIn;\n\n if (dom) {\n let scale = PARAM_MAP.horizontal;\n let rotatedClip = getClipPolygonParams({\n direction: 'horizontal',\n minimum: 100,\n });\n\n dom.measure((target) => {\n if (!target) {\n return;\n }\n\n const rotation = getComputedStyle(target).getPropertyValue('--comp-rotate-z') || '0';\n const rotatedDirection = getAdjustedDirection(\n DIRECTIONS,\n direction,\n parseInt(rotation, 10),\n ) as (typeof DIRECTIONS)[number];\n scale = PARAM_MAP[rotatedDirection];\n rotatedClip = getClipPolygonParams({\n direction: rotatedDirection,\n minimum: 100,\n });\n });\n\n dom.mutate((target) => {\n target?.style.setProperty('--motion-clip-start', rotatedClip);\n target?.style.setProperty('--motion-scale-x', `${scale.scaleX}`);\n target?.style.setProperty('--motion-scale-y', `${scale.scaleY}`);\n });\n }\n}\n","import * as ArcIn from './ArcIn';\nimport * as BlurIn from './BlurIn';\nimport * as ShuttersIn from './ShuttersIn';\nimport * as BounceIn from './BounceIn';\nimport * as CurveIn from './CurveIn';\nimport * as CircleIn from './CircleIn';\nimport * as DropIn from './DropIn';\nimport * as ExpandIn from './ExpandIn';\nimport * as FadeIn from './FadeIn';\nimport * as FlipIn from './FlipIn';\nimport * as FloatIn from './FloatIn';\nimport * as FoldIn from './FoldIn';\nimport * as GlideIn from './GlideIn';\nimport * as GlitchIn from './GlitchIn';\nimport * as GrowIn from './GrowIn';\nimport * as PunchIn from './PunchIn';\nimport * as ShapeIn from './ShapeIn';\nimport * as RevealIn from './RevealIn';\nimport * as SlideIn from './SlideIn';\nimport * as SpinIn from './SpinIn';\nimport * as TiltIn from './TiltIn';\nimport * as TurnIn from './TurnIn';\nimport * as WinkIn from './WinkIn';\nimport type { EntranceAnimations } from '../../types';\n\nexport const entranceAnimations: EntranceAnimations = {\n ArcIn,\n BlurIn,\n ShuttersIn,\n BounceIn,\n CurveIn,\n CircleIn,\n DropIn,\n ExpandIn,\n FadeIn,\n FlipIn,\n FloatIn,\n FoldIn,\n GlideIn,\n GlitchIn,\n GrowIn,\n PunchIn,\n ShapeIn,\n RevealIn,\n SlideIn,\n SpinIn,\n TiltIn,\n TurnIn,\n WinkIn,\n};\n","import type { TimeAnimationOptions, Bounce, AnimationExtraOptions, DomApi } from '../../types';\nimport { getEasing, getTimingFactor, toKeyframeValue, mapRange } from '../../utils';\n\nconst POWER_TO_BOUNCE_FACTOR_MAP = {\n soft: 1,\n medium: 2,\n hard: 3,\n};\n\nconst TRANSLATE_Y_KEYFRAMES = [\n { keyframe: 0, translateY: 0 },\n { keyframe: 8.8, translateY: -55 },\n { keyframe: 17.6, translateY: -87 },\n { keyframe: 26.5, translateY: -98 },\n { keyframe: 35.3, translateY: -87 },\n { keyframe: 44.1, translateY: -55 },\n { keyframe: 53.1, translateY: 0 },\n { keyframe: 66.2, translateY: -23 },\n { keyframe: 81, translateY: 0 },\n { keyframe: 86.8, translateY: -5 },\n { keyframe: 94.1, translateY: 0 },\n { keyframe: 97.1, translateY: -2 },\n { keyframe: 100, translateY: 0 },\n];\n\nexport function web(options: TimeAnimationOptions & AnimationExtraOptions, _dom?: DomApi) {\n return style(options, true);\n}\n\nexport function style(options: TimeAnimationOptions & AnimationExtraOptions, asWeb = false) {\n const { power = 'soft', intensity } = options.namedEffect as Bounce;\n\n const duration = options.duration || 1;\n const delay = options.delay || 0;\n const timingFactor = getTimingFactor(duration, delay) as number;\n const [name] = getNames(options);\n\n const bounceFactor = intensity\n ? mapRange(0, 1, POWER_TO_BOUNCE_FACTOR_MAP.soft, POWER_TO_BOUNCE_FACTOR_MAP.hard, intensity)\n : POWER_TO_BOUNCE_FACTOR_MAP[power];\n const easing = getEasing('sineOut');\n\n const custom = {\n '--motion-bounce-factor': bounceFactor,\n };\n\n const keyframes = TRANSLATE_Y_KEYFRAMES.map(({ keyframe, translateY }) => ({\n offset: (keyframe / 100) * timingFactor,\n translate: `0px calc(${translateY / 2}px * ${toKeyframeValue(\n custom,\n '--motion-bounce-factor',\n asWeb,\n )})`,\n easing,\n }));\n\n return [\n {\n ...options,\n name,\n delay: 0,\n easing: 'linear',\n duration: duration + delay,\n custom,\n keyframes,\n },\n ];\n}\n\nexport function getNames(options: TimeAnimationOptions & AnimationExtraOptions) {\n const timingFactor = getTimingFactor(options.duration!, options.delay!, true);\n\n return [`motion-bounce-${timingFactor}`];\n}\n","import type { TimeAnimationOptions, Breathe, DomApi, AnimationExtraOptions } from '../../types';\nimport {\n getCssUnits,\n getEasing,\n getEasingFamily,\n getTimingFactor,\n toKeyframeValue,\n} from '../../utils';\n\nconst DIRECTION_MAP = {\n vertical: { x: 0, y: 1, z: 0 },\n horizontal: { x: 1, y: 0, z: 0 },\n center: { x: 0, y: 0, z: 1 },\n};\n\nconst FACTORS_SEQUENCE = [\n { translateFactor: 1, timeFactor: 0.25 },\n { translateFactor: -1, timeFactor: 0.5 },\n { translateFactor: 1, timeFactor: 0.5 },\n { translateFactor: -0.7, timeFactor: 0.5 },\n { translateFactor: 0.6, timeFactor: 0.3333 },\n];\n\nexport function web(options: TimeAnimationOptions & AnimationExtraOptions, _dom?: DomApi) {\n return style(options, true);\n}\n\nexport function style(options: TimeAnimationOptions & AnimationExtraOptions, asWeb = false) {\n const { direction = 'vertical', distance = { value: 25, type: 'px' } } =\n options.namedEffect as Breathe;\n\n const easing = options.easing || 'sineInOut';\n const duration = options.duration || 1;\n const delay = options.delay || 0;\n const totalDurationWithDelay = 3.2 * duration + delay;\n const timingFactor = getTimingFactor(duration, totalDurationWithDelay - duration) as number;\n const [name] = getNames(options);\n\n const { x, y, z } = DIRECTION_MAP[direction];\n const ease = getEasingFamily(easing);\n const perspectiveTransform = direction === 'center' ? 'perspective(800px)' : '';\n\n // Create CSS custom properties for the Breathe configuration\n const custom: Record<string, string | number> = {\n '--motion-breathe-perspective': perspectiveTransform,\n '--motion-breathe-distance': `${distance.value}${getCssUnits(distance.type || 'px')}`,\n '--motion-breathe-x': x,\n '--motion-breathe-y': y,\n '--motion-breathe-z': z,\n };\n\n const breatheX = `${toKeyframeValue(custom, '--motion-breathe-x', asWeb)}`;\n const breatheY = `${toKeyframeValue(custom, '--motion-breathe-y', asWeb)}`;\n const breatheZ = `${toKeyframeValue(custom, '--motion-breathe-z', asWeb)}`;\n const breathePerspective = `${toKeyframeValue(\n custom,\n '--motion-breathe-perspective',\n asWeb,\n ' ',\n )}`;\n const breatheDistance = `${toKeyframeValue(custom, '--motion-breathe-distance', asWeb)}`;\n\n let currentOffset = 0;\n\n // in case a delay is applied, animate a different sequence which decays to a stop\n const keyframes = delay\n ? FACTORS_SEQUENCE.map(({ translateFactor, timeFactor }) => {\n const keyframeOffset = currentOffset + timeFactor * timingFactor;\n currentOffset = keyframeOffset;\n const distancePart = `${breatheDistance} * ${translateFactor}`;\n\n return {\n offset: keyframeOffset,\n easing: getEasing(ease.inOut),\n transform: `${breathePerspective} translate3d(calc(${breatheX} * ${distancePart}), calc(${breatheY} * ${distancePart}), calc(${breatheZ} * ${distancePart})) rotateZ(var(--comp-rotate-z, 0deg))`,\n };\n })\n : [\n {\n offset: 0.25,\n easing: getEasing(ease.inOut),\n transform: `${breathePerspective} translate3d(calc(${breatheX} * ${breatheDistance}), calc(${breatheY} * ${breatheDistance}), calc(${breatheZ} * ${breatheDistance})) rotateZ(var(--comp-rotate-z, 0deg))`,\n },\n {\n offset: 0.75,\n easing: getEasing(ease.in),\n transform: `${breathePerspective} translate3d(calc(${breatheX} * -1 * ${breatheDistance}), calc(${breatheY} * -1 * ${breatheDistance}), calc(${breatheZ} * -1 * ${breatheDistance})) rotateZ(var(--comp-rotate-z, 0deg))`,\n },\n ];\n\n return [\n {\n ...options,\n name,\n easing: 'linear',\n delay: 0,\n duration: delay ? totalDurationWithDelay : duration,\n custom,\n keyframes: [\n {\n offset: 0,\n easing: getEasing(ease.out),\n transform: `${breathePerspective} translate3d(0, 0, 0) rotateZ(var(--comp-rotate-z, 0deg))`,\n },\n ...keyframes,\n {\n offset: 1,\n transform: `${breathePerspective} translate3d(0, 0, 0) rotateZ(var(--comp-rotate-z, 0deg))`,\n },\n ],\n },\n ];\n}\n\nexport function getNames(options: TimeAnimationOptions & AnimationExtraOptions) {\n const timingFactor = getTimingFactor(options.duration!, options.delay!, true);\n\n return [`motion-breathe-${timingFactor}`];\n}\n","import type { Cross, DomApi, TimeAnimationOptions, AnimationExtraOptions } from '../../types';\nimport { getElementOffset, getTimingFactor } from '../../utils';\n\nconst FOUR_DIRECTIONS_TRANSLATIONS = {\n // 100cqw - left\n RIGHT: 'calc(var(--motion-parent-width, 100vw) - var(--motion-left, 0px))',\n // left * -1 - width\n LEFT: 'calc(var(--motion-left, 0px) * -1 - var(--motion-width, 100%))',\n // top * -1 - height\n TOP: 'calc(var(--motion-top, 0px) * -1 - var(--motion-height, 100%))',\n // 100cqh - top\n BOTTOM: 'calc(var(--motion-parent-height, 100vh) - var(--motion-top, 0px))',\n};\nconst { RIGHT, LEFT, TOP, BOTTOM } = FOUR_DIRECTIONS_TRANSLATIONS;\n\nconst FOUR_CORNERS_TRANSLATIONS = {\n 'top-left': {\n // min(100cqw - left, 100cqh - top)\n from: `min(${RIGHT}, ${BOTTOM})`,\n // min(abs(left * -1 - width), abs(top * -1 - height))\n to: `min(calc(${LEFT} * -1), calc(${TOP} * -1))`,\n },\n 'top-right': {\n // min(abs(left * -1 - width), 100cqh - top)\n from: `min(calc(${LEFT} * -1), ${BOTTOM})`,\n // min(100cqw - left, abs(top * -1 - height))\n to: `min(${RIGHT}, calc(${TOP} * -1))`,\n },\n 'bottom-left': {\n // min(100cqw - left, abs(top * -1 - height))\n from: `min(${RIGHT}, calc(${TOP} * -1))`,\n // min(abs(left * -1 - width), 100cqh - top)\n to: `min(calc(${LEFT} * -1), ${BOTTOM})`,\n },\n 'bottom-right': {\n // min(abs(left * -1 - width), abs(top * -1 - height))\n from: `min(calc(${LEFT} * -1), calc(${TOP} * -1))`,\n // min(100cqw - left, 100cqh - top)\n to: `min(${RIGHT}, ${BOTTOM})`,\n },\n};\n\nconst TRANSLATE_BY_DIRECTION_MAP = {\n left: {\n from: `${RIGHT} 0`,\n to: `${LEFT} 0`,\n },\n right: {\n from: `${LEFT} 0`,\n to: `${RIGHT} 0`,\n },\n top: {\n from: `0 ${BOTTOM}`,\n to: `0 ${TOP}`,\n },\n bottom: {\n from: `0 ${TOP}`,\n to: `0 ${BOTTOM}`,\n },\n};\n\ntype HorizontalOffsetByDirectionParams = {\n left: number;\n width: number;\n parentWidth: number;\n};\n\ntype VerticalOffsetByDirectionParams = {\n top: number;\n height: number;\n parentHeight: number;\n};\n\ntype OffsetByDirectionParams = HorizontalOffsetByDirectionParams & VerticalOffsetByDirectionParams;\n\nconst GET_OFFSET_BY_DIRECTION_MAP = {\n // (width + left) / (100cqw + width)\n left: ({ left, width, parentWidth }: HorizontalOffsetByDirectionParams) =>\n (width + left) / (parentWidth + width || 1),\n // (100cqw - left) / (100cqw + width)\n right: ({ left, width, parentWidth }: HorizontalOffsetByDirectionParams) =>\n (parentWidth - left) / (parentWidth + width || 1),\n // (100cqh - top) / (100cqh + height)\n bottom: ({ top, height, parentHeight }: VerticalOffsetByDirectionParams) =>\n (parentHeight - top) / (parentHeight + height || 1),\n // (height + top) / (100cqh + height)\n top: ({ top, height, parentHeight }: VerticalOffsetByDirectionParams) =>\n (height + top) / (parentHeight + height || 1),\n // min(<left>, <top>)\n 'bottom-right': ({\n left,\n top,\n width,\n height,\n parentWidth,\n parentHeight,\n }: OffsetByDirectionParams) => {\n const leftDistance = width + left;\n const topDistance = parentHeight - top;\n\n return leftDistance < topDistance\n ? leftDistance / (parentWidth + width || 1)\n : topDistance / (parentHeight + height || 1);\n },\n // min(<right>, <top>)\n 'bottom-left': ({\n left,\n top,\n width,\n height,\n parentWidth,\n parentHeight,\n }: OffsetByDirectionParams) => {\n const rightDistance = parentWidth - left;\n const topDistance = parentHeight - top;\n\n return rightDistance < topDistance\n ? rightDistance / (parentWidth + width || 1)\n : topDistance / (parentHeight + height || 1);\n },\n // min(<left>, <bottom>)\n 'top-right': ({\n left,\n top,\n width,\n height,\n parentWidth,\n parentHeight,\n }: OffsetByDirectionParams) => {\n const leftDistance = parentWidth - left;\n const bottomDistance = height + top;\n\n return leftDistance < bottomDistance\n ? leftDistance / (parentWidth + width || 1)\n : bottomDistance / (parentHeight + height || 1);\n },\n // min(<right>, <bottom>)\n 'top-left': ({\n left,\n top,\n width,\n height,\n parentWidth,\n parentHeight,\n }: OffsetByDirectionParams) => {\n const rightDistance = parentWidth - left;\n const bottomDistance = height + top;\n\n return rightDistance < bottomDistance\n ? rightDistance / (parentWidth + width || 1)\n : bottomDistance / (parentHeight + height || 1);\n },\n};\n\nfunction generateTranslate(direction: keyof typeof FOUR_CORNERS_TRANSLATIONS) {\n const _from = FOUR_CORNERS_TRANSLATIONS[direction].from;\n const _to = FOUR_CORNERS_TRANSLATIONS[direction].to;\n const fromYFactor = direction.startsWith('top') ? 1 : -1;\n const toYFactor = -fromYFactor;\n const fromXFactor = direction.endsWith('left') ? 1 : -1;\n const toXFactor = -fromXFactor;\n\n return {\n from: `calc(${_from} * ${fromXFactor}) calc(${_from} * ${fromYFactor})`,\n to: `calc(${_to} * ${toXFactor}) calc(${_to} * ${toYFactor})`,\n };\n}\n\nexport function web(options: TimeAnimationOptions & AnimationExtraOptions, dom?: DomApi) {\n const { direction = 'right' } = options.namedEffect as Cross;\n const duration = options.duration || 1;\n const delay = options.delay || 0;\n const timingFactor = getTimingFactor(duration, delay) as number;\n const [name] = getNames(options);\n\n // Create CSS custom properties for the Cross configuration\n const custom: Record<string, string | number> = {\n '--motion-left': '0px',\n '--motion-top': '0px',\n '--motion-width': '100%',\n '--motion-height': '100%',\n '--motion-parent-width': '100vw',\n '--motion-parent-height': '100vh',\n };\n\n /*\n * Prepare function\n */\n let left = 0;\n let top = 0;\n let width = 0;\n let height = 0;\n let parentWidth = 0;\n let parentHeight = 0;\n\n if (dom) {\n dom.measure((target) => {\n if (!target) {\n return;\n }\n\n const { width: targetWidth, height: targetHeight } = target.getBoundingClientRect();\n const parent = target.offsetParent as HTMLElement;\n const parentRect = parent?.getBoundingClientRect() || ({} as DOMRect);\n const offset = getElementOffset(target, parent);\n\n left = offset.left;\n top = offset.top;\n width = targetWidth;\n height = targetHeight;\n parentWidth = parentRect.width;\n parentHeight = parentRect.height;\n });\n\n dom.mutate((target) => {\n target?.style.setProperty('--motion-left', `${left}px`);\n target?.style.setProperty('--motion-top', `${top}px`);\n target?.style.setProperty('--motion-width', `${width}px`);\n target?.style.setProperty('--motion-height', `${height}px`);\n target?.style.setProperty('--motion-parent-width', `${parentWidth}px`);\n target?.style.setProperty('--motion-parent-height', `${parentHeight}px`);\n });\n }\n\n return [\n {\n ...options,\n name,\n delay: 0,\n easing: 'linear',\n duration: duration + delay,\n custom,\n get keyframes() {\n // Calculate the timing offset for keyframes\n const toDurationOffset =\n GET_OFFSET_BY_DIRECTION_MAP[direction]({\n left,\n top,\n width,\n height,\n parentWidth,\n parentHeight,\n }) * timingFactor;\n\n let from, to;\n if (direction in TRANSLATE_BY_DIRECTION_MAP) {\n from =\n TRANSLATE_BY_DIRECTION_MAP[direction as keyof typeof TRANSLATE_BY_DIRECTION_MAP].from;\n to = TRANSLATE_BY_DIRECTION_MAP[direction as keyof typeof TRANSLATE_BY_DIRECTION_MAP].to;\n } else {\n const cornerFromTo = generateTranslate(\n direction as keyof typeof FOUR_CORNERS_TRANSLATIONS,\n );\n from = cornerFromTo.from;\n to = cornerFromTo.to;\n }\n\n return [\n {\n offset: 0,\n translate: '0 0',\n },\n {\n offset: toDurationOffset,\n translate: to,\n easing: 'step-start',\n },\n {\n offset: toDurationOffset,\n translate: from,\n },\n {\n offset: timingFactor,\n translate: '0 0',\n },\n {\n offset: 1,\n translate: '0 0',\n },\n ];\n },\n },\n ];\n}\n\nexport function getNames(_: TimeAnimationOptions & AnimationExtraOptions) {\n return ['motion-cross'];\n}\n","import type { TimeAnimationOptions, DomApi, AnimationExtraOptions } from '../../types';\nimport { getEasing, getTimingFactor } from '../../utils';\n\nexport function web(options: TimeAnimationOptions & AnimationExtraOptions, _dom?: DomApi) {\n return style(options, true);\n}\n\nexport function style(options: TimeAnimationOptions & AnimationExtraOptions, _asWeb = false) {\n const duration = options.duration || 1;\n const delay = options.delay || 0;\n const easing = getEasing(options.easing || 'cubicInOut');\n const timingFactor = getTimingFactor(duration, delay) as number;\n const [name] = getNames(options);\n\n const keyframes = [\n {\n offset: 0,\n opacity: 1,\n easing,\n },\n {\n offset: 0.5 * timingFactor,\n opacity: 0,\n easing,\n },\n {\n offset: timingFactor,\n opacity: 1,\n },\n {\n offset: 1,\n opacity: 1,\n },\n ];\n\n return [\n {\n ...options,\n name,\n easing: 'linear',\n delay: 0,\n duration: duration + delay,\n keyframes,\n },\n ];\n}\n\nexport function getNames(options: TimeAnimationOptions & AnimationExtraOptions) {\n const timingFactor = getTimingFactor(options.duration!, options.delay!, true);\n\n return [`motion-flash-${timingFactor}`];\n}\n","import type { Flip, TimeAnimationOptions, DomApi, AnimationExtraOptions } from '../../types';\nimport { getEasing, getTimingFactor, toKeyframeValue } from '../../utils';\n\nconst POWER_EASING_MAP = {\n soft: 'linear',\n medium: 'quintInOut',\n hard: 'backOut',\n};\n\nconst DIRECTION_MAP = {\n vertical: { x: '1', y: '0' },\n horizontal: { x: '0', y: '1' },\n};\n\nexport function web(options: TimeAnimationOptions & AnimationExtraOptions, _dom?: DomApi) {\n return style(options, true);\n}\n\nexport function style(options: TimeAnimationOptions & AnimationExtraOptions, asWeb = false) {\n const { direction = 'horizontal', power } = options.namedEffect as Flip;\n\n const duration = options.duration || 1;\n const delay = options.delay || 0;\n const offset = getTimingFactor(duration, delay) as number;\n const [name] = getNames(options);\n\n const rotationAxes = DIRECTION_MAP[direction];\n const easing = (power && POWER_EASING_MAP[power]) || options.easing || 'linear';\n\n const custom = {\n '--motion-rotate-x': rotationAxes.x,\n '--motion-rotate-y': rotationAxes.y,\n };\n\n const rotateStart = `rotate3d(${toKeyframeValue(\n custom,\n '--motion-rotate-x',\n asWeb,\n )}, ${toKeyframeValue(custom, '--motion-rotate-y', asWeb)}, 0, 0deg)`;\n\n const rotateEnd = `rotate3d(${toKeyframeValue(\n custom,\n '--motion-rotate-x',\n asWeb,\n )}, ${toKeyframeValue(custom, '--motion-rotate-y', asWeb)}, 0, 360deg)`;\n\n return [\n {\n ...options,\n name,\n delay: 0,\n easing: 'linear',\n duration: duration + delay,\n custom,\n keyframes: [\n {\n offset: 0,\n transform: `perspective(800px) rotateZ(var(--comp-rotate-z, 0deg)) ${rotateStart}`,\n easing: getEasing(easing),\n },\n {\n offset,\n transform: `perspective(800px) rotateZ(var(--comp-rotate-z, 0deg)) ${rotateEnd}`,\n },\n {\n offset: 1,\n transform: `perspective(800px) rotateZ(var(--comp-rotate-z, 0deg)) ${rotateEnd}`,\n },\n ],\n },\n ];\n}\n\nexport function getNames(options: TimeAnimationOptions & AnimationExtraOptions) {\n const timingFactor = getTimingFactor(options.duration!, options.delay!, true);\n\n return [`motion-flip-${timingFactor}`];\n}\n","import type { Fold, TimeAnimationOptions, DomApi, AnimationExtraOptions } from '../../types';\nimport { getEasing, getEasingFamily, getTimingFactor, toKeyframeValue } from '../../utils';\n\nconst POWER_TO_ROTATION_FACTOR_MAP = {\n soft: 1,\n medium: 2,\n hard: 3,\n};\n\nconst DIRECTION_MAP = {\n top: {\n rotation: { x: 1, y: 0 },\n origin: { x: 0, y: -50 },\n },\n right: {\n rotation: { x: 0, y: 1 },\n origin: { x: 50, y: 0 },\n },\n bottom: {\n rotation: { x: 1, y: 0 },\n origin: { x: 0, y: 50 },\n },\n left: {\n rotation: { x: 0, y: 1 },\n origin: { x: -50, y: 0 },\n },\n};\n\nconst MIN_ROTATE_ANGLE = 15;\n\nconst KEYFRAME_FACTORS = [\n { fold: 1, frameFactor: 0.25 },\n { fold: -0.7, frameFactor: 0.5 },\n { fold: 0.6, frameFactor: 0.5 },\n { fold: -0.3, frameFactor: 0.45 },\n { fold: 0.2, frameFactor: 0.4 },\n { fold: -0.05, frameFactor: 0.5 },\n { fold: 0, frameFactor: 0.35 },\n];\n\nexport function web(options: TimeAnimationOptions & AnimationExtraOptions, _dom?: DomApi) {\n return style(options, true);\n}\n\nexport function style(options: TimeAnimationOptions & AnimationExtraOptions, asWeb = false) {\n const { direction = 'top', power, angle = MIN_ROTATE_ANGLE } = options.namedEffect as Fold;\n\n const easing = options.easing || 'cubicInOut';\n const duration = options.duration || 1;\n const delay = +(options.delay || 0);\n const [name] = getNames(options);\n\n const isResponsive = typeof power === 'undefined';\n const { rotation, origin } = DIRECTION_MAP[direction];\n const { x, y } = origin;\n const ease = getEasingFamily(isResponsive ? easing : 'cubicInOut');\n\n const rotateTransform = isResponsive\n ? angle\n : MIN_ROTATE_ANGLE * POWER_TO_ROTATION_FACTOR_MAP[power];\n\n const totalDurationWithDelay = 3.2 * duration + delay;\n const timingFactor = getTimingFactor(duration, totalDurationWithDelay - duration) as number;\n let currentOffset = 0;\n\n // Create CSS custom properties for the fold configuration\n const custom: Record<string, string | number> = {\n '--motion-origin-x': `${x}%`,\n '--motion-origin-y': `${y}%`,\n '--motion-rotate-angle': `${rotateTransform}deg`,\n '--motion-rotate-x': `${rotation.x}`,\n '--motion-rotate-y': `${rotation.y}`,\n };\n\n const transformLeft = `rotateZ(var(--comp-rotate-z, 0deg)) translateX(${toKeyframeValue(\n custom,\n '--motion-origin-x',\n asWeb,\n )}) translateY(${toKeyframeValue(custom, '--motion-origin-y', asWeb)}) perspective(800px)`;\n const transformRight = `translateX(calc(-1 * ${toKeyframeValue(\n custom,\n '--motion-origin-x',\n asWeb,\n )})) translateY(calc(-1 * ${toKeyframeValue(custom, '--motion-origin-y', asWeb)}))`;\n\n const getTransform = (value: number) =>\n `${transformLeft} rotateX(calc(${toKeyframeValue(\n custom,\n '--motion-rotate-x',\n asWeb,\n )} * ${value} * ${rotateTransform}deg)) rotateY(calc(${toKeyframeValue(\n custom,\n '--motion-rotate-y',\n asWeb,\n )} * ${value} * ${rotateTransform}deg)) ${transformRight}`;\n\n // in case a delay is applied, animate a different sequence which decays to a stop\n const keyframes = delay\n ? KEYFRAME_FACTORS.map(({ fold, frameFactor }) => {\n const keyframeOffset = currentOffset + frameFactor * timingFactor;\n currentOffset = keyframeOffset;\n return {\n offset: keyframeOffset,\n easing: getEasing('sineInOut'),\n transform: getTransform(fold),\n };\n })\n : [\n {\n offset: 0.25,\n easing: getEasing(ease.inOut),\n transform: getTransform(1),\n },\n {\n offset: 0.75,\n easing: getEasing(ease.in),\n transform: getTransform(-1),\n },\n ];\n\n const transform_0 = getTransform(0);\n\n return [\n {\n ...options,\n name,\n easing: 'linear',\n delay: 0,\n duration: delay ? totalDurationWithDelay : duration,\n custom,\n keyframes: [\n {\n offset: 0,\n easing: getEasing(ease.out),\n transform: transform_0,\n },\n ...keyframes,\n {\n offset: 1,\n transform: transform_0,\n },\n ],\n },\n ];\n}\n\nexport function getNames(options: TimeAnimationOptions & AnimationExtraOptions) {\n const duration = options.duration || 1;\n const delay = +(options.delay || 0);\n\n if (!delay) {\n return ['motion-fold'];\n }\n\n const totalDurationWithDelay = 3.2 * duration + delay;\n const timingFactor = getTimingFactor(duration, totalDurationWithDelay - duration, true) as string;\n\n return [`motion-fold-${timingFactor}`];\n}\n","import type { Jello, TimeAnimationOptions, DomApi, AnimationExtraOptions } from '../../types';\nimport { getTimingFactor, toKeyframeValue, mapRange } from '../../utils';\n\nconst POWER_TO_JELLO_FACTOR_MAP = {\n soft: 1,\n medium: 2,\n hard: 4,\n};\n\nconst SKEW_Y_KEYFRAMES = [\n { keyframe: 24, skewY: 7 },\n { keyframe: 38, skewY: -2 },\n { keyframe: 58, skewY: 4 },\n { keyframe: 80, skewY: -2 },\n { keyframe: 100, skewY: 0 },\n];\n\nexport function web(options: TimeAnimationOptions & AnimationExtraOptions, _dom?: DomApi) {\n return style(options, true);\n}\n\nexport function style(options: TimeAnimationOptions & AnimationExtraOptions, asWeb = false) {\n const { power, intensity = 0.25 } = options.namedEffect as Jello;\n\n const duration = options.duration || 1;\n const delay = options.delay || 0;\n const [name] = getNames(options);\n const timingFactor = getTimingFactor(duration, delay) as number;\n\n const responsiveJelloFactor = mapRange(\n 0,\n 1,\n POWER_TO_JELLO_FACTOR_MAP.soft,\n POWER_TO_JELLO_FACTOR_MAP.hard,\n intensity,\n );\n const jelloFactor = (power && POWER_TO_JELLO_FACTOR_MAP[power]) || responsiveJelloFactor;\n\n // Create CSS custom properties for the jello configuration\n const custom: Record<string, string | number> = {\n '--motion-skew-y': jelloFactor,\n };\n\n const keyframes = SKEW_Y_KEYFRAMES.map(({ keyframe, skewY }) => {\n const offset = (keyframe / 100) * timingFactor;\n\n return {\n offset,\n transform: `rotateZ(var(--comp-rotate-z, 0deg)) skewY(calc(${toKeyframeValue(\n custom,\n '--motion-skew-y',\n asWeb,\n )} * ${skewY}deg))`,\n };\n });\n\n return [\n {\n ...options,\n name,\n delay: 0,\n easing: 'linear',\n duration: duration + delay,\n custom,\n keyframes,\n },\n ];\n}\n\nexport function getNames(options: TimeAnimationOptions & AnimationExtraOptions) {\n const timingFactor = getTimingFactor(options.duration!, options.delay!, true);\n\n return [`motion-jello-${timingFactor}`];\n}\n","import type { Poke, TimeAnimationOptions, DomApi, AnimationExtraOptions } from '../../types';\nimport { getTimingFactor, toKeyframeValue, mapRange } from '../../utils';\n\nconst TRANSLATE_KEYFRAMES = [\n { keyframe: 17, translate: 7 },\n { keyframe: 32, translate: 25 },\n { keyframe: 48, translate: 8 },\n { keyframe: 56, translate: 11 },\n { keyframe: 66, translate: 25 },\n { keyframe: 83, translate: 4 },\n { keyframe: 100, translate: 0 },\n];\n\nconst POWER_TO_POKE_FACTOR_MAP = {\n soft: 1,\n medium: 2,\n hard: 4,\n};\n\nconst DIRECTION_MAP = {\n top: { x: 0, y: -1 },\n bottom: { x: 0, y: 1 },\n right: { x: 1, y: 0 },\n left: { x: -1, y: 0 },\n};\n\nexport function web(options: TimeAnimationOptions & AnimationExtraOptions, _dom?: DomApi) {\n return style(options, true);\n}\n\nexport function style(options: TimeAnimationOptions & AnimationExtraOptions, asWeb = false) {\n const { power, intensity = 0.5, direction = 'right' } = options.namedEffect as Poke;\n\n const duration = options.duration || 1;\n const delay = +(options.delay || 0);\n const { x, y } = DIRECTION_MAP[direction];\n const timingFactor = getTimingFactor(duration, delay) as number;\n const [name] = getNames(options);\n\n const responsivePokeFactor = mapRange(\n 0,\n 1,\n POWER_TO_POKE_FACTOR_MAP.soft,\n POWER_TO_POKE_FACTOR_MAP.hard,\n intensity,\n );\n\n const pokeFactor = power ? POWER_TO_POKE_FACTOR_MAP[power] : responsivePokeFactor;\n\n // Create CSS custom properties for the poke configuration\n const custom: Record<string, string | number> = {\n '--motion-translate-x': x * pokeFactor,\n '--motion-translate-y': y * pokeFactor,\n };\n\n const keyframes = TRANSLATE_KEYFRAMES.map(({ keyframe, translate }) => {\n const translateValue = `calc(${toKeyframeValue(\n custom,\n '--motion-translate-x',\n asWeb,\n )} * ${translate}px) calc(${toKeyframeValue(\n custom,\n '--motion-translate-y',\n asWeb,\n )} * ${translate}px)`;\n\n return {\n offset: (keyframe / 100) * timingFactor,\n translate: translateValue,\n };\n });\n\n return [\n {\n ...options,\n name,\n easing: 'linear',\n delay: 0,\n duration: duration + delay,\n custom,\n keyframes,\n },\n ];\n}\n\nexport function getNames(options: TimeAnimationOptions & AnimationExtraOptions) {\n const timingFactor = getTimingFactor(options.duration!, options.delay!, true) as string;\n\n return [`motion-poke-${timingFactor}`];\n}\n","import type { Rubber, TimeAnimationOptions, DomApi, AnimationExtraOptions } from '../../types';\nimport { getTimingFactor, roundNumber, toKeyframeValue, mapRange } from '../../utils';\n\nconst POWER_TO_RUBBER_OFFSET_MAP = {\n soft: 0,\n medium: 0.05,\n hard: 0.1,\n};\n\nconst SCALE_KEYFRAMES = [\n { keyframe: 45, scaleX: 1.03, scaleY: 0.93 },\n { keyframe: 56, scaleX: 0.9, scaleY: 1.03 },\n { keyframe: 66, scaleX: 1.02, scaleY: 0.96 },\n { keyframe: 78, scaleX: 0.98, scaleY: 1.02 },\n { keyframe: 89, scaleX: 1.005, scaleY: 0.9995 },\n { keyframe: 100, scaleX: 1, scaleY: 1 },\n];\n\nexport function web(options: TimeAnimationOptions & AnimationExtraOptions, _dom?: DomApi) {\n return style(options, true);\n}\n\nexport function style(options: TimeAnimationOptions & AnimationExtraOptions, asWeb = false) {\n const { power, intensity = 0.5 } = options.namedEffect as Rubber;\n\n const duration = options.duration || 1;\n const delay = options.delay || 0;\n const timingFactor = getTimingFactor(duration, delay) as number;\n const [name] = getNames(options);\n\n const responsiveRubberOffset = mapRange(\n 0,\n 1,\n POWER_TO_RUBBER_OFFSET_MAP.soft,\n POWER_TO_RUBBER_OFFSET_MAP.hard,\n intensity,\n );\n const rubberOffset =\n typeof power !== 'undefined' ? POWER_TO_RUBBER_OFFSET_MAP[power] : responsiveRubberOffset;\n\n // Create CSS custom properties for the rubber configuration\n const custom: Record<string, string | number> = {};\n\n const keyframes = SCALE_KEYFRAMES.map(({ keyframe, scaleX, scaleY }, index) => {\n const isLastKeyframe = index === SCALE_KEYFRAMES.length - 1;\n const isEvenKeyframe = index % 2 === 0;\n const offset = rubberOffset * (isLastKeyframe ? 0 : isEvenKeyframe ? 1 : -0.5);\n\n const adjustedScaleX = roundNumber(scaleX + offset, 4);\n const adjustedScaleY = roundNumber(scaleY - offset, 4);\n\n // Create custom property keys for this keyframe\n const scaleXKey = `--motion-scale-x-${keyframe}`;\n const scaleYKey = `--motion-scale-y-${keyframe}`;\n\n // Add the scale values to custom properties\n custom[scaleXKey] = adjustedScaleX;\n custom[scaleYKey] = adjustedScaleY;\n\n return {\n offset: (keyframe / 100) * timingFactor,\n transform: `rotateZ(var(--comp-rotate-z, 0deg)) scale(${toKeyframeValue(\n custom,\n scaleXKey,\n asWeb,\n )}, ${toKeyframeValue(custom, scaleYKey, asWeb)})`,\n };\n });\n\n return [\n {\n ...options,\n name,\n easing: 'linear',\n delay: 0,\n duration: duration + delay,\n custom,\n keyframes,\n },\n ];\n}\n\nexport function getNames(options: TimeAnimationOptions & AnimationExtraOptions) {\n const timingFactor = getTimingFactor(options.duration!, options.delay!, true);\n\n return [`motion-rubber-${timingFactor}`];\n}\n","import type { Pulse, TimeAnimationOptions, DomApi, AnimationExtraOptions } from '../../types';\nimport { getTimingFactor, toKeyframeValue, mapRange } from '../../utils';\n\nconst POWER_TO_PULSE_OFFSET_MAP = {\n soft: 0,\n medium: 0.06,\n hard: 0.12,\n};\n\nconst SCALE_KEYFRAMES = [\n { keyframe: 27, scale: 0.96 },\n { keyframe: 45, scale: 1 },\n { keyframe: 72, scale: 0.93 },\n { keyframe: 100, scale: 1 },\n];\n\nexport function web(options: TimeAnimationOptions & AnimationExtraOptions, _dom?: DomApi) {\n return style(options, true);\n}\n\nexport function style(options: TimeAnimationOptions & AnimationExtraOptions, asWeb = false) {\n const { power, intensity = 0 } = options.namedEffect as Pulse;\n\n const duration = options.duration || 1;\n const delay = options.delay || 0;\n const timingFactor = getTimingFactor(duration, delay) as number;\n const [name] = getNames(options);\n\n const responsivePulseOffset = mapRange(\n 0,\n 1,\n POWER_TO_PULSE_OFFSET_MAP.soft,\n POWER_TO_PULSE_OFFSET_MAP.hard,\n intensity,\n );\n\n const pulseOffset =\n typeof power !== 'undefined' ? POWER_TO_PULSE_OFFSET_MAP[power] : responsivePulseOffset;\n\n // Create CSS custom properties for the pulse configuration\n const custom: Record<string, string | number> = {\n '--motion-pulse-offset': pulseOffset,\n };\n\n const keyframes = SCALE_KEYFRAMES.map(({ keyframe, scale }) => {\n const offset = (keyframe / 100) * timingFactor;\n\n return {\n offset,\n transform: `scale(${\n scale < 1\n ? `calc(${scale} - ${toKeyframeValue(custom, '--motion-pulse-offset', asWeb)})`\n : '1'\n })`,\n };\n });\n\n if (timingFactor < 1) {\n keyframes.push({\n offset: 1,\n transform: 'scale(1)',\n });\n }\n\n return [\n {\n ...options,\n name,\n easing: 'linear',\n delay: 0,\n duration: duration + delay,\n custom,\n keyframes,\n },\n ];\n}\n\nexport function getNames(options: TimeAnimationOptions & AnimationExtraOptions) {\n const timingFactor = getTimingFactor(options.duration!, options.delay!, true);\n\n return [`motion-pulse-${timingFactor}`];\n}\n","import type { Spin, TimeAnimationOptions, DomApi, AnimationExtraOptions } from '../../types';\nimport { getEasing, getTimingFactor, toKeyframeValue } from '../../utils';\n\nconst POWER_EASING_MAP = {\n soft: 'linear',\n medium: 'quintInOut',\n hard: 'backOut',\n};\n\nconst DIRECTION_MAP = {\n clockwise: -1,\n 'counter-clockwise': 1,\n};\n\nexport function web(options: TimeAnimationOptions & AnimationExtraOptions, _dom?: DomApi) {\n return style(options, true);\n}\n\nexport function style(options: TimeAnimationOptions & AnimationExtraOptions, asWeb = false) {\n const { power, direction = 'clockwise' } = options.namedEffect as Spin;\n\n const duration = options.duration || 1;\n const delay = options.delay || 0;\n const timingFactor = getTimingFactor(duration, delay) as number;\n const [name] = getNames(options);\n\n const easing = (power && POWER_EASING_MAP[power]) || options.easing || 'linear';\n\n const transformRotate = (DIRECTION_MAP[direction] > 0 ? 1 : -1) * 360;\n\n const custom = {\n '--motion-rotate-start': `calc(var(--comp-rotate-z, 0deg) + ${transformRotate}deg)`,\n };\n\n return [\n {\n ...options,\n name,\n easing: 'linear',\n delay: 0,\n duration: duration + delay,\n custom,\n keyframes: [\n {\n offset: 0,\n easing: getEasing(easing),\n rotate: toKeyframeValue(custom, '--motion-rotate-start', asWeb),\n },\n {\n offset: timingFactor,\n rotate: `var(--comp-rotate-z, 0deg)`,\n },\n ],\n },\n ];\n}\n\nexport function getNames(options: TimeAnimationOptions & AnimationExtraOptions) {\n const timingFactor = getTimingFactor(options.duration!, options.delay!, true);\n\n return [`motion-spin-${timingFactor}`];\n}\n","import type { Swing, TimeAnimationOptions, DomApi, AnimationExtraOptions } from '../../types';\nimport { getEasing, getEasingFamily, getTimingFactor, toKeyframeValue } from '../../utils';\n\nconst POWER_TO_SWING_FACTOR_MAP = {\n soft: 1,\n medium: 2,\n hard: 3,\n};\n\nconst DIRECTION_MAP = {\n top: { x: 0, y: -1 },\n right: { x: 1, y: 0 },\n bottom: { x: 0, y: 1 },\n left: { x: -1, y: 0 },\n};\n\nconst TRANSLATE_DISTANCE = 50;\n\nconst FACTORS_SEQUENCE = [\n { factor: 1, timeFactor: 0.25 },\n { factor: -1, timeFactor: 0.5 },\n { factor: 0.6, timeFactor: 0.5 },\n { factor: -0.3, timeFactor: 0.5 },\n { factor: 0.2, timeFactor: 0.5 },\n { factor: -0.05, timeFactor: 0.5 },\n { factor: 0, timeFactor: 0.4 },\n];\n\nexport function web(options: TimeAnimationOptions & AnimationExtraOptions, _dom?: DomApi) {\n return style(options, true);\n}\n\nexport function style(options: TimeAnimationOptions & AnimationExtraOptions, asWeb = false) {\n const { power, swing = 20, direction = 'top' } = options.namedEffect as Swing;\n\n const duration = options.duration || 1;\n const delay = options.delay || 0;\n const easing = options.easing || 'sineInOut';\n const ease = getEasingFamily(easing);\n const [name] = getNames(options);\n\n const swingDeg = typeof power !== 'undefined' ? 20 * POWER_TO_SWING_FACTOR_MAP[power] : swing;\n\n const { x, y } = DIRECTION_MAP[direction];\n const totalDuration = 3.55 * duration + delay;\n const timingFactor = getTimingFactor(duration, totalDuration - duration) as number;\n\n // Create CSS custom properties for the swing configuration\n const custom: Record<string, string | number> = {\n '--motion-swing-deg': `${swingDeg}deg`,\n '--motion-trans-x': `${x * TRANSLATE_DISTANCE}%`,\n '--motion-trans-y': `${y * TRANSLATE_DISTANCE}%`,\n '--motion-ease-in': getEasing(ease.in),\n '--motion-ease-inout': getEasing(ease.inOut),\n '--motion-ease-out': getEasing(ease.out),\n };\n\n const translateBefore = `translate(${toKeyframeValue(\n custom,\n '--motion-trans-x',\n asWeb,\n )}, ${toKeyframeValue(custom, '--motion-trans-y', asWeb)})`;\n\n const translateAfter = `translate(calc(${toKeyframeValue(\n custom,\n '--motion-trans-x',\n asWeb,\n )} * -1), calc(${toKeyframeValue(custom, '--motion-trans-y', asWeb)} * -1))`;\n\n let currentOffset = 0;\n // in case a delay is applied, animate a different sequence which decays to a stop\n const keyframes = delay\n ? FACTORS_SEQUENCE.map(({ factor, timeFactor }) => {\n const keyframeOffset = currentOffset + timeFactor * timingFactor;\n currentOffset = keyframeOffset;\n\n return {\n offset: keyframeOffset,\n easing: toKeyframeValue(custom, '--motion-ease-inout', asWeb),\n transform: `rotate(var(--comp-rotate-z, 0deg)) ${translateBefore} rotate(calc(${toKeyframeValue(\n custom,\n '--motion-swing-deg',\n asWeb,\n )} * ${factor})) ${translateAfter}`,\n };\n })\n : [\n {\n offset: 0.25,\n easing: toKeyframeValue(custom, '--motion-ease-inout', asWeb),\n transform: `rotate(var(--comp-rotate-z, 0deg)) ${translateBefore} rotate(${toKeyframeValue(\n custom,\n '--motion-swing-deg',\n asWeb,\n )}) ${translateAfter}`,\n },\n {\n offset: 0.75,\n easing: toKeyframeValue(custom, '--motion-ease-in', asWeb),\n transform: `rotate(var(--comp-rotate-z, 0deg)) ${translateBefore} rotate(calc(${toKeyframeValue(\n custom,\n '--motion-swing-deg',\n asWeb,\n )} * -1)) ${translateAfter}`,\n },\n ];\n\n return [\n {\n ...options,\n name,\n easing: 'linear',\n delay: 0,\n duration: delay ? totalDuration : duration,\n custom,\n keyframes: [\n {\n offset: 0,\n easing: toKeyframeValue(custom, '--motion-ease-out', asWeb),\n transform: `rotateZ(var(--comp-rotate-z, 0deg)) ${translateBefore} rotate(0deg) ${translateAfter}`,\n },\n ...keyframes,\n {\n offset: 1,\n transform: `rotateZ(var(--comp-rotate-z, 0deg)) ${translateBefore} rotate(0deg) ${translateAfter}`,\n },\n ],\n },\n ];\n}\n\nexport function getNames(options: TimeAnimationOptions & AnimationExtraOptions) {\n const timingFactor = getTimingFactor(options.duration!, options.delay!, true);\n\n return [`motion-swing-${timingFactor}`];\n}\n","import type { Wiggle, TimeAnimationOptions, DomApi, AnimationExtraOptions } from '../../types';\nimport { getTimingFactor, roundNumber, toKeyframeValue, mapRange } from '../../utils';\n\nconst POWER_TO_WIGGLE_FACTOR_MAP = {\n soft: 1,\n medium: 2,\n hard: 4,\n};\n\nconst TRANSFORM_KEYFRAMES = [\n { keyframe: 18, transY: -10, accRotate: 10 },\n { keyframe: 35, transY: 0, accRotate: -18 },\n { keyframe: 53, transY: 0, accRotate: 14 },\n { keyframe: 73, transY: 0, accRotate: -10 },\n { keyframe: 100, transY: 0, accRotate: 4 },\n];\n\nexport function web(options: TimeAnimationOptions & AnimationExtraOptions, _dom?: DomApi) {\n return style(options, true);\n}\n\nexport function style(options: TimeAnimationOptions & AnimationExtraOptions, asWeb = false) {\n const { power, intensity = 0.5 } = options.namedEffect as Wiggle;\n const duration = options.duration || 1;\n const delay = options.delay || 0;\n const timingFactor = getTimingFactor(duration, delay) as number;\n const [name] = getNames(options);\n\n const responsiveWiggleFactor = mapRange(\n 0,\n 1,\n POWER_TO_WIGGLE_FACTOR_MAP.soft,\n POWER_TO_WIGGLE_FACTOR_MAP.hard,\n intensity,\n );\n const wiggleFactor = (power && POWER_TO_WIGGLE_FACTOR_MAP[power]) || responsiveWiggleFactor;\n\n let currentRotation = 0;\n\n // Create CSS custom properties for the wiggle configuration\n const custom: Record<string, string | number> = {\n '--motion-wiggle-factor': wiggleFactor,\n };\n\n const keyframes = TRANSFORM_KEYFRAMES.map(({ keyframe, transY, accRotate }) => {\n const offset = (keyframe / 100) * timingFactor;\n const rotateValue = `calc(var(--comp-rotate-z, 0deg) + ${roundNumber(\n currentRotation + accRotate * wiggleFactor,\n )}deg)`;\n const translateYValue = `${transY * wiggleFactor}px`;\n\n const rotateKey = `--motion-rotate-${keyframe}`;\n const translateYKey = `--motion-translate-y-${keyframe}`;\n\n // For non-web usage, add the values to custom properties\n custom[rotateKey] = rotateValue;\n custom[translateYKey] = translateYValue;\n\n currentRotation += accRotate * wiggleFactor;\n\n return {\n offset,\n transform: `rotate(${toKeyframeValue(\n custom,\n rotateKey,\n asWeb,\n )}) translateY(${toKeyframeValue(custom, translateYKey, asWeb)})`,\n };\n });\n\n return [\n {\n ...options,\n name,\n easing: 'linear',\n delay: 0,\n duration: duration + delay,\n custom,\n keyframes,\n },\n ];\n}\n\nexport function getNames(options: TimeAnimationOptions & AnimationExtraOptions) {\n const timingFactor = getTimingFactor(options.duration!, options.delay!, true);\n\n return [`motion-wiggle-${timingFactor}`];\n}\n","import type { OngoingAnimations } from '../../types';\nimport * as Bounce from './Bounce';\nimport * as Breathe from './Breathe';\nimport * as Cross from './Cross';\n// import * as DVD from './DVD';\nimport * as Flash from './Flash';\nimport * as Flip from './Flip';\nimport * as Fold from './Fold';\nimport * as Jello from './Jello';\nimport * as Poke from './Poke';\nimport * as Rubber from './Rubber';\nimport * as Pulse from './Pulse';\nimport * as Spin from './Spin';\nimport * as Swing from './Swing';\nimport * as Wiggle from './Wiggle';\n\nexport const ongoingAnimations: Partial<OngoingAnimations> = {\n Bounce,\n Breathe,\n Cross,\n // DVD,\n Flash,\n Flip,\n Fold,\n Jello,\n Poke,\n Rubber,\n Pulse,\n Spin,\n Swing,\n Wiggle,\n};\n","import type { AnimationExtraOptions, Progress, ScrubAnimationOptions } from '../../types';\n\nexport class CustomMouse {\n target: HTMLElement;\n options: Record<string, any>;\n currentProgress: Progress;\n\n constructor(target: HTMLElement, options?: Record<string, any>) {\n this.target = target;\n this.options = options || {};\n this.currentProgress = { x: 0.5, y: 0.5, v: { x: 0, y: 0 }, active: true };\n\n this.play();\n }\n\n progress({ x, y, v, active }: Progress) {\n this.currentProgress = { x, y, v, active };\n if (typeof this.options.customEffect === 'function') {\n this.options.customEffect(this.target, this.currentProgress);\n }\n }\n\n cancel() {\n this.currentProgress = { x: 0.5, y: 0.5, v: { x: 0, y: 0 } };\n }\n\n getProgress() {\n return this.currentProgress;\n }\n\n play() {\n if (this.options.transition && this.target) {\n this.target.style.transition = this.options.transition;\n }\n }\n}\n\nexport function create(options: ScrubAnimationOptions & AnimationExtraOptions) {\n return (target: HTMLElement) => new CustomMouse(target, options);\n}\n","import { getCssUnits, getMouseTransitionEasing, mapRange } from '../../utils';\nimport type {\n ScrubAnimationOptions,\n AiryMouse,\n AnimationExtraOptions,\n Progress,\n ScrubTransitionEasing,\n EffectPower,\n} from '../../types';\nimport { CustomMouse } from './CustomMouse';\n\nconst paramsMap: Record<EffectPower, { angle: number; easing: ScrubTransitionEasing }> = {\n soft: { angle: 10, easing: 'easeOut' },\n medium: { angle: 50, easing: 'easeOut' },\n hard: { angle: 85, easing: 'easeOut' },\n};\n\nclass AiryMouseAnimation extends CustomMouse {\n progress({ x: progressX, y: progressY }: Progress) {\n let translateX = 0;\n let translateY = 0;\n const { distance, invert, angle, axis } = this.options;\n\n if (axis !== 'vertical') {\n translateX = mapRange(0, 1, -distance.value, distance.value, progressX) * invert;\n }\n if (axis !== 'horizontal') {\n translateY = mapRange(0, 1, -distance.value, distance.value, progressY) * invert;\n }\n\n // if progress === 0, rotate === angle, if progress === 0.5, rotate === 0, if progress === 1, rotate === angle\n const rotate = mapRange(0, 1, -angle, angle, progressX) * invert;\n const units = getCssUnits(distance.type);\n\n this.target.style.transform = `translateX(${translateX}${units}) translateY(${translateY}${units}) rotate(calc(${rotate}deg + var(--comp-rotate-z, 0deg)))`;\n }\n\n cancel() {\n this.target.style.transform = '';\n this.target.style.transition = '';\n }\n}\n\nexport default function create(options: ScrubAnimationOptions & AnimationExtraOptions) {\n const { transitionDuration, transitionEasing } = options;\n const {\n power,\n inverted = false,\n distance = { value: 200, type: 'px' },\n angle = 30,\n axis = 'both',\n } = options.namedEffect as AiryMouse;\n const invert = inverted ? -1 : 1;\n const animationOptions = {\n transition: transitionDuration\n ? `transform ${transitionDuration}ms ${getMouseTransitionEasing(\n power ? paramsMap[power].easing : transitionEasing,\n )}`\n : '',\n invert,\n distance,\n angle: power ? paramsMap[power].angle : angle,\n axis,\n };\n\n return (target: HTMLElement) => new AiryMouseAnimation(target, animationOptions);\n}\n","import { getCssUnits, getMouseTransitionEasing, mapRange } from '../../utils';\nimport { CustomMouse } from './CustomMouse';\nimport {\n ScrubAnimationOptions,\n AnimationExtraOptions,\n BlobMouse,\n Progress,\n EffectPower,\n ScrubTransitionEasing,\n} from '../../types';\n\nconst paramsMap: Record<EffectPower, { scale: number; easing: ScrubTransitionEasing }> = {\n soft: { scale: 1.2, easing: 'easeOut' },\n medium: { scale: 1.6, easing: 'easeOut' },\n hard: { scale: 2.4, easing: 'easeOut' },\n};\n\nclass BlobMouseAnimation extends CustomMouse {\n progress({ x: progressX, y: progressY }: Progress) {\n const { distance, scale, invert } = this.options;\n const translateX = mapRange(0, 1, -distance.value, distance.value, progressX) * invert;\n const translateY = mapRange(0, 1, -distance.value, distance.value, progressY) * invert;\n\n // if progressX === 0 || progressX === 1, scaleX === scale, if progressX === 0.5, scaleX === 1\n const scaleX =\n progressX < 0.5\n ? mapRange(0, 0.5, scale, 1, progressX)\n : mapRange(0.5, 1, 1, scale, progressX);\n\n // if progressY === 0 || progressY === 1, scaleY === scale, if progressY === 0.5, scaleY === 1\n const scaleY =\n progressY < 0.5\n ? mapRange(0, 0.5, scale, 1, progressY)\n : mapRange(0.5, 1, 1, scale, progressY);\n\n const units = getCssUnits(distance.type);\n\n this.target.style.transform = `translateX(${translateX}${units}) translateY(${translateY}${units}) scale(${scaleX}, ${scaleY}) rotate(var(--comp-rotate-z, 0deg))`;\n }\n\n cancel() {\n this.target.style.transform = '';\n this.target.style.transition = '';\n }\n}\n\nexport default function create(options: ScrubAnimationOptions & AnimationExtraOptions) {\n const { transitionDuration, transitionEasing } = options;\n const {\n power,\n inverted = false,\n distance = { value: 200, type: 'px' },\n scale = 1.4,\n } = options.namedEffect as BlobMouse;\n const invert = inverted ? -1 : 1;\n const animationOptions = {\n transition: transitionDuration\n ? `transform ${transitionDuration}ms ${getMouseTransitionEasing(\n power ? paramsMap[power].easing : transitionEasing,\n )}`\n : '',\n invert,\n distance,\n scale: power ? paramsMap[power].scale : scale,\n };\n\n return (target: HTMLElement) => new BlobMouseAnimation(target, animationOptions);\n}\n","import { getCssUnits, getMouseTransitionEasing, distance2d, mapRange } from '../../utils';\nimport { quadInOut } from '../../easings';\nimport { CustomMouse } from './CustomMouse';\nimport {\n ScrubAnimationOptions,\n AnimationExtraOptions,\n BlurMouse,\n Progress,\n EffectPower,\n ScrubTransitionEasing,\n} from '../../types';\n\nconst paramsMap: Record<\n EffectPower,\n { angle: number; scale: number; easing: ScrubTransitionEasing }\n> = {\n soft: { angle: 0, scale: 1, easing: 'easeOut' },\n medium: { angle: 25, scale: 0.7, easing: 'easeOut' },\n hard: { angle: 65, scale: 0.25, easing: 'easeOut' },\n};\nclass BlurMouseAnimation extends CustomMouse {\n progress({ x: progressX, y: progressY }: Progress) {\n const { distance, angle, scale, invert, blur, perspective } = this.options;\n\n const translateX = mapRange(0, 1, -distance.value, distance.value, progressX) * invert;\n const translateY = mapRange(0, 1, -distance.value, distance.value, progressY) * invert;\n\n // if progressX === 0 || progressX === 1, scaleX === scale, if progressX === 0.5, scaleX === 1\n const scaleX =\n progressX < 0.5\n ? mapRange(0, 0.5, scale, 1, progressX)\n : mapRange(0.5, 1, 1, scale, progressX);\n\n // if progressY === 0 || progressY === 1, scaleY === scale, if progressY === 0.5, scaleY === 1\n const scaleY =\n progressY < 0.5\n ? mapRange(0, 0.5, scale, 1, progressY)\n : mapRange(0.5, 1, 1, scale, progressY);\n\n const maxScale = Math.min(scaleX, scaleY);\n\n // if progressX === 0, rotateX === -angle, if progressX === 0.5, rotateX === 0, if progressX === 1, rotateX === angle\n const rotateX = mapRange(0, 1, -angle, angle, progressY) * invert;\n const rotateY = mapRange(0, 1, angle, -angle, progressX) * invert;\n\n const units = getCssUnits(distance.type);\n\n const transform = `perspective(${perspective}px) translateX(${translateX}${units}) translateY(${translateY}${units}) scale(${maxScale}, ${maxScale}) rotateX(${rotateX}deg) rotateY(${rotateY}deg) rotate(var(--comp-rotate-z, 0deg))`;\n\n const progressDistance = distance2d([0.5, 0.5], [progressX, progressY]);\n const blurFilter = Math.round(mapRange(0, 1, 0, blur, quadInOut(progressDistance)));\n\n const filter = `blur(${blurFilter}px)`;\n\n this.target.style.transform = transform;\n this.target.style.filter = filter;\n }\n\n cancel() {\n this.target.style.transform = '';\n this.target.style.filter = '';\n this.target.style.transition = '';\n }\n}\n\nexport default function create(options: ScrubAnimationOptions & AnimationExtraOptions) {\n const { transitionDuration, transitionEasing } = options;\n const {\n power,\n inverted = false,\n distance = { value: 80, type: 'px' },\n angle = 5,\n scale = 0.3,\n blur = 20,\n perspective = 600,\n } = options.namedEffect as BlurMouse;\n const invert = inverted ? -1 : 1;\n const animationOptions = {\n transition: transitionDuration\n ? `transform ${transitionDuration}ms ${getMouseTransitionEasing(\n power ? paramsMap[power].easing : transitionEasing,\n )}, filter ${transitionDuration}ms ${getMouseTransitionEasing(\n power ? paramsMap[power].easing : transitionEasing,\n )}`\n : '',\n distance,\n angle: power ? paramsMap[power].angle : angle,\n scale: power ? paramsMap[power].scale : scale,\n blur,\n perspective,\n invert,\n };\n\n return (target: HTMLElement) => new BlurMouseAnimation(target, animationOptions);\n}\n","import {\n ScrubAnimationOptions,\n AnimationExtraOptions,\n TrackMouse,\n Progress,\n EffectPower,\n ScrubTransitionEasing,\n} from '../../types';\nimport { getCssUnits, getMouseTransitionEasing, mapRange } from '../../utils';\nimport { CustomMouse } from './CustomMouse';\n\nconst easingMap: Record<EffectPower, ScrubTransitionEasing> = {\n soft: 'linear',\n medium: 'easeOut',\n hard: 'hardBackOut',\n};\nclass TrackMouseAnimation extends CustomMouse {\n progress({ x: progressX, y: progressY }: Progress) {\n const { invert, distance, axis } = this.options;\n\n let translateX = 0;\n let translateY = 0;\n\n // if progressX === 0, translateX === -distance\n // if progressX === 0.5, translateX === 0\n // if progressX === 1, translateX === distance\n if (axis === 'both' || axis === 'horizontal') {\n translateX = mapRange(0, 1, -distance.value, distance.value, progressX) * invert;\n }\n\n if (axis === 'both' || axis === 'vertical') {\n translateY = mapRange(0, 1, -distance.value, distance.value, progressY) * invert;\n }\n\n const units = getCssUnits(distance.type);\n\n this.target.style.transform = `translateX(${translateX}${units}) translateY(${translateY}${units}) rotate(var(--comp-rotate-z, 0deg))`;\n }\n cancel() {\n this.target.style.transform = '';\n this.target.style.transition = '';\n }\n}\n\nexport default function create(options: ScrubAnimationOptions & AnimationExtraOptions) {\n const { transitionDuration, transitionEasing } = options;\n const {\n power,\n inverted = false,\n distance = { value: 200, type: 'px' },\n axis = 'both',\n } = options.namedEffect as TrackMouse;\n const invert = inverted ? -1 : 1;\n const animationOptions = {\n transition: transitionDuration\n ? `transform ${transitionDuration}ms ${getMouseTransitionEasing(\n power ? easingMap[power] : transitionEasing,\n )}`\n : '',\n invert,\n distance,\n axis,\n };\n\n return (target: HTMLElement) => new TrackMouseAnimation(target, animationOptions);\n}\n","import { ScrubAnimationOptions, AnimationExtraOptions, BounceMouse, TrackMouse } from '../../types';\nimport createTrack from './TrackMouse';\n\nexport default function create(options: ScrubAnimationOptions & AnimationExtraOptions) {\n const { distance = { value: 80, type: 'px' } } = options.namedEffect as BounceMouse;\n const { transitionEasing = 'elastic' } = options;\n return createTrack({\n ...options,\n transitionEasing,\n namedEffect: { ...options.namedEffect, distance } as TrackMouse,\n });\n}\n","import { getCssUnits, getMouseTransitionEasing, mapRange } from '../../utils';\nimport { CustomMouse } from './CustomMouse';\nimport {\n ScrubAnimationOptions,\n AnimationExtraOptions,\n ScaleMouse,\n Progress,\n EffectPower,\n ScrubTransitionEasing,\n} from '../../types';\n\nconst paramsMap: Record<\n ScaleMouse['scaleDirection'],\n Record<EffectPower, { scale: number; easing: ScrubTransitionEasing }>\n> = {\n down: {\n soft: { scale: 0.85, easing: 'easeOut' },\n medium: { scale: 0.5, easing: 'easeOut' },\n hard: { scale: 0, easing: 'easeOut' },\n },\n up: {\n soft: { scale: 1.2, easing: 'easeOut' },\n medium: { scale: 1.6, easing: 'easeOut' },\n hard: { scale: 2.4, easing: 'easeOut' },\n },\n};\n\nclass ScaleMouseAnimation extends CustomMouse {\n progress({ x: progressX, y: progressY }: Progress) {\n const { distance, scale, invert, axis } = this.options;\n\n let translateX = 0;\n let translateY = 0;\n let scaleX = 1;\n let scaleY = 1;\n\n if (axis === 'both' || axis === 'horizontal') {\n translateX = mapRange(0, 1, -distance.value, distance.value, progressX) * invert;\n scaleX =\n progressX < 0.5\n ? mapRange(0, 0.5, scale, 1, progressX)\n : mapRange(0.5, 1, 1, scale, progressX);\n }\n\n if (axis === 'both' || axis === 'vertical') {\n translateY = mapRange(0, 1, -distance.value, distance.value, progressY) * invert;\n scaleY =\n progressY < 0.5\n ? mapRange(0, 0.5, scale, 1, progressY)\n : mapRange(0.5, 1, 1, scale, progressY);\n }\n\n // scale is uniform so we use the smaller scale value if scale < 1\n // and the bigger scale value if scale > 1\n const scaleBoth = scale < 1 ? Math.min(scaleX, scaleY) : Math.max(scaleX, scaleY);\n\n const units = getCssUnits(distance.type);\n\n this.target.style.transform = `translateX(${translateX}${units}) translateY(${translateY}${units}) scale(${scaleBoth}) rotate(var(--comp-rotate-z, 0deg))`;\n }\n\n cancel() {\n this.target.style.transform = '';\n this.target.style.transition = '';\n }\n}\n\nexport default function create(options: ScrubAnimationOptions & AnimationExtraOptions) {\n const { transitionDuration, transitionEasing } = options;\n const {\n power,\n scaleDirection = 'down',\n inverted = false,\n distance = { value: 80, type: 'px' },\n axis = 'both',\n scale = 1.4,\n } = options.namedEffect as ScaleMouse;\n const invert = inverted ? -1 : 1;\n const animationOptions = {\n transition: transitionDuration\n ? `transform ${transitionDuration}ms ${getMouseTransitionEasing(\n power ? paramsMap[scaleDirection][power].easing : transitionEasing,\n )}`\n : '',\n invert,\n distance,\n axis,\n scale: power ? paramsMap[scaleDirection][power].scale : scale,\n };\n\n return (target: HTMLElement) => new ScaleMouseAnimation(target, animationOptions);\n}\n","import {\n ScrubAnimationOptions,\n AnimationExtraOptions,\n SkewMouse,\n Progress,\n ScrubTransitionEasing,\n EffectPower,\n} from '../../types';\nimport { getCssUnits, getMouseTransitionEasing, mapRange } from '../../utils';\nimport { circInOut } from '../../easings';\nimport { CustomMouse } from './CustomMouse';\n\nconst paramsMap: Record<EffectPower, { angle: number; easing: ScrubTransitionEasing }> = {\n soft: { angle: 10, easing: 'easeOut' },\n medium: { angle: 20, easing: 'easeOut' },\n hard: { angle: 45, easing: 'easeOut' },\n};\n\nclass SkewMouseAnimation extends CustomMouse {\n progress({ x: progressX, y: progressY }: Progress) {\n let translateX = 0;\n let translateY = 0;\n let skewX = 0;\n let skewY = 0;\n const { distance, angle, axis, invert } = this.options;\n\n // distance\n if (axis !== 'vertical') {\n translateX = mapRange(0, 1, -distance.value, distance.value, progressX) * invert;\n skewX = mapRange(0, 1, angle, -angle, progressX) * invert;\n }\n if (axis !== 'horizontal') {\n translateY = mapRange(0, 1, -distance.value, distance.value, progressY) * invert;\n skewY = mapRange(0, 1, angle, -angle, progressY) * invert;\n }\n if (axis === 'both') {\n // We want to do `skewX *= progressY < 0.5 ? 1 : -1`\n // but normalize it by y progress (so it will be 0 when y is 0.5)\n // and apply a circInOut easing on the progress so it will feel more natural\n skewX *= mapRange(0, 1, 1, -1, circInOut(progressY));\n\n // we want to do `skewY *= progressX < 0.5 ? 1 : -1`\n // but normalize it by x progress (so it will be 0 when x is 0.5)\n // and apply a circInOut easing on the progress so it will feel more natural\n skewY *= mapRange(0, 1, 1, -1, circInOut(progressX));\n }\n\n const units = getCssUnits(distance.type);\n\n const transform = `translateX(${translateX}${units}) translateY(${translateY}${units}) skew(${skewX}deg, ${skewY}deg) rotate(var(--comp-rotate-z, 0deg))`;\n\n this.target.style.transform = transform;\n }\n\n cancel() {\n this.target.style.transform = '';\n this.target.style.transition = '';\n }\n}\n\nexport default function create(options: ScrubAnimationOptions & AnimationExtraOptions) {\n const { transitionDuration, transitionEasing } = options;\n const {\n power,\n inverted = false,\n distance = { value: 200, type: 'px' },\n angle = 25,\n axis = 'both',\n } = options.namedEffect as SkewMouse;\n const invert = inverted ? -1 : 1;\n const animationOptions = {\n transition: transitionDuration\n ? `transform ${transitionDuration}ms ${getMouseTransitionEasing(\n power ? paramsMap[power].easing : transitionEasing,\n )}`\n : '',\n invert,\n distance,\n angle: power ? paramsMap[power].angle : angle,\n axis,\n };\n\n return (target: HTMLElement) => new SkewMouseAnimation(target, animationOptions);\n}\n","import { ScrubAnimationOptions, AnimationExtraOptions, SpinMouse, Progress } from '../../types';\nimport { getMouseTransitionEasing, getAngleInDeg } from '../../utils';\nimport { CustomMouse } from './CustomMouse';\n\nclass SpinMouseAnimation extends CustomMouse {\n progress({ x: progressX, y: progressY }: Progress) {\n const { invert, axis } = this.options;\n\n const rotation =\n getAngleInDeg(\n [0.5, 0.5],\n [axis === 'vertical' ? 0 : progressX, axis === 'horizontal' ? 0 : progressY],\n 90,\n ) * invert;\n\n this.target.style.transform = `rotate(calc(${rotation}deg + var(--comp-rotate-z, 0deg)))`;\n }\n\n cancel() {\n this.target.style.transform = '';\n this.target.style.transition = '';\n }\n}\n\nexport default function create(options: ScrubAnimationOptions & AnimationExtraOptions) {\n const { transitionDuration, transitionEasing = 'linear' } = options;\n const { inverted = false, axis = 'both' } = options.namedEffect as SpinMouse;\n const invert = inverted ? -1 : 1;\n const animationOptions = {\n transition: transitionDuration\n ? `transform ${transitionDuration}ms ${getMouseTransitionEasing(transitionEasing)}`\n : '',\n invert,\n axis,\n };\n\n return (target: HTMLElement) => new SpinMouseAnimation(target, animationOptions);\n}\n","import {\n ScrubAnimationOptions,\n AnimationExtraOptions,\n SwivelMouse,\n MousePivotAxis,\n Progress,\n EffectPower,\n ScrubTransitionEasing,\n} from '../../types';\nimport { getMouseTransitionEasing, mapRange } from '../../utils';\nimport { CustomMouse } from './CustomMouse';\n\nconst paramsMap: Record<\n EffectPower,\n { angle: number; perspective: number; easing: ScrubTransitionEasing }\n> = {\n soft: { angle: 25, perspective: 1000, easing: 'easeOut' },\n medium: { angle: 50, perspective: 700, easing: 'easeOut' },\n hard: { angle: 85, perspective: 300, easing: 'easeOut' },\n};\n\nconst transformOrigins: Record<MousePivotAxis, [number, number]> = {\n top: [0, -50],\n bottom: [0, 50],\n right: [50, 0],\n left: [-50, 0],\n 'center-horizontal': [0, 0],\n 'center-vertical': [0, 0],\n};\n\nclass SwivelMouseAnimation extends CustomMouse {\n progress({ x: progressX, y: progressY }: Progress) {\n let rotateAxis = 'rotateX';\n let progress = progressY;\n let invertVertical = -1;\n\n const { pivotAxis, angle, invert, perspective } = this.options;\n if (pivotAxis === 'center-horizontal' || pivotAxis === 'right' || pivotAxis === 'left') {\n rotateAxis = 'rotateY';\n progress = progressX;\n invertVertical = 1;\n }\n\n // if progress === 0, rotate === angle, if progress === 0.5, rotate === 0, if progress === 1, rotate === angle\n const rotate = mapRange(0, 1, -angle, angle, progress) * invertVertical * invert;\n\n const [translateX, translateY] = transformOrigins[pivotAxis as MousePivotAxis];\n const transform = `perspective(${perspective}px) translateX(${translateX}%) translateY(${translateY}%) ${rotateAxis}(${rotate}deg) translateX(${-translateX}%) translateY(${-translateY}%) rotate(var(--comp-rotate-z, 0deg))`;\n\n this.target.style.transform = transform;\n }\n\n cancel() {\n this.target.style.transform = '';\n this.target.style.transition = '';\n }\n}\n\nexport default function create(options: ScrubAnimationOptions & AnimationExtraOptions) {\n const { transitionDuration, transitionEasing } = options;\n const {\n power,\n inverted = false,\n angle = 5,\n perspective = 800,\n pivotAxis = 'center-horizontal',\n } = options.namedEffect as SwivelMouse;\n const invert = inverted ? -1 : 1;\n const animationOptions = {\n transition: transitionDuration\n ? `transform ${transitionDuration}ms ${getMouseTransitionEasing(\n power ? paramsMap[power].easing : transitionEasing,\n )}`\n : '',\n invert,\n angle: power ? paramsMap[power].angle : angle,\n perspective: power ? paramsMap[power].perspective : perspective,\n pivotAxis,\n };\n\n return (target: HTMLElement) => new SwivelMouseAnimation(target, animationOptions);\n}\n","import { getMouseTransitionEasing, mapRange } from '../../utils';\nimport { CustomMouse } from './CustomMouse';\nimport {\n ScrubAnimationOptions,\n AnimationExtraOptions,\n Tilt3DMouse,\n Progress,\n EffectPower,\n ScrubTransitionEasing,\n} from '../../types';\n\nconst paramsMap: Record<\n EffectPower,\n { angle: number; perspective: number; easing: ScrubTransitionEasing }\n> = {\n soft: { angle: 25, perspective: 1000, easing: 'easeOut' },\n medium: { angle: 50, perspective: 500, easing: 'easeOut' },\n hard: { angle: 85, perspective: 200, easing: 'easeOut' },\n};\n\nclass Tilt3DMouseAnimation extends CustomMouse {\n progress({ x: progressX, y: progressY }: Progress) {\n const { invert, angle, perspective } = this.options;\n\n // if progressX === 0, rotateX === -angle, if progressX === 0.5, rotateX === 0, if progressX === 1, rotateX === angle\n const rotateX = mapRange(0, 1, angle, -angle, progressY) * invert;\n const rotateY = mapRange(0, 1, -angle, angle, progressX) * invert;\n\n this.target.style.transform = `perspective(${perspective}px) rotateX(${rotateX}deg) rotateY(${rotateY}deg) rotate(var(--comp-rotate-z, 0deg))`;\n }\n\n cancel() {\n this.target.style.transform = '';\n this.target.style.transition = '';\n }\n}\n\nexport default function create(options: ScrubAnimationOptions & AnimationExtraOptions) {\n const { transitionDuration, transitionEasing } = options;\n const {\n power,\n inverted = false,\n angle = 5,\n perspective = 800,\n } = options.namedEffect as Tilt3DMouse;\n const invert = inverted ? -1 : 1;\n const animationOptions = {\n transition: transitionDuration\n ? `transform ${transitionDuration}ms ${getMouseTransitionEasing(\n power ? paramsMap[power].easing : transitionEasing,\n )}`\n : '',\n invert,\n angle: power ? paramsMap[power].angle : angle,\n perspective: power ? paramsMap[power].perspective : perspective,\n };\n\n return (target: HTMLElement) => new Tilt3DMouseAnimation(target, animationOptions);\n}\n","import {\n ScrubAnimationOptions,\n AnimationExtraOptions,\n Track3DMouse,\n Progress,\n EffectPower,\n ScrubTransitionEasing,\n} from '../../types';\nimport { getCssUnits, getMouseTransitionEasing, mapRange } from '../../utils';\nimport { CustomMouse } from './CustomMouse';\n\nconst paramsMap: Record<\n EffectPower,\n { angle: number; perspective: number; easing: ScrubTransitionEasing }\n> = {\n soft: { angle: 25, perspective: 1000, easing: 'easeOut' },\n medium: { angle: 50, perspective: 500, easing: 'easeOut' },\n hard: { angle: 85, perspective: 333, easing: 'easeOut' },\n};\n\nclass Track3DMouseAnimation extends CustomMouse {\n progress({ x: progressX, y: progressY }: Progress) {\n const { invert, distance, angle, axis, perspective } = this.options;\n\n let translateX = 0;\n let translateY = 0;\n let rotateX = 0;\n let rotateY = 0;\n // if progressX === 0, translateX === -distance\n // if progressX === 0.5, translateX === 0\n // if progressX === 1, translateX === distance\n // if progressX === 0, rotateX === -angle, if progressX === 0.5, rotateX === 0, if progressX === 1, rotateX === angle\n if (axis === 'both' || axis === 'horizontal') {\n translateX = mapRange(0, 1, -distance.value, distance.value, progressX);\n rotateY = mapRange(0, 1, -angle, angle, progressX) * invert;\n }\n if (axis === 'both' || axis === 'vertical') {\n translateY = mapRange(0, 1, -distance.value, distance.value, progressY);\n rotateX = mapRange(0, 1, angle, -angle, progressY) * invert;\n }\n const units = getCssUnits(distance.type);\n\n this.target.style.transform = `perspective(${perspective}px) translateX(${translateX}${units}) translateY(${translateY}${units}) rotateX(${rotateX}deg) rotateY(${rotateY}deg) rotate(var(--comp-rotate-z, 0deg))`;\n }\n\n cancel() {\n this.target.style.transform = '';\n this.target.style.transition = '';\n }\n}\n\nexport default function create(options: ScrubAnimationOptions & AnimationExtraOptions) {\n const { transitionDuration, transitionEasing } = options;\n const {\n power,\n inverted = false,\n distance = { value: 200, type: 'px' },\n angle = 5,\n axis = 'both',\n perspective = 800,\n } = options.namedEffect as Track3DMouse;\n const invert = inverted ? -1 : 1;\n const animationOptions = {\n transition: transitionDuration\n ? `transform ${transitionDuration}ms ${getMouseTransitionEasing(\n power ? paramsMap[power].easing : transitionEasing,\n )}`\n : '',\n invert,\n distance,\n axis,\n angle: power ? paramsMap[power].angle : angle,\n perspective: power ? paramsMap[power].perspective : perspective,\n };\n\n return (target: HTMLElement) => new Track3DMouseAnimation(target, animationOptions);\n}\n","import { create as CreateCustomMouse } from './CustomMouse';\nimport AiryMouse from './AiryMouse';\nimport BlobMouse from './BlobMouse';\nimport BlurMouse from './BlurMouse';\nimport BounceMouse from './BounceMouse';\nimport ScaleMouse from './ScaleMouse';\nimport SkewMouse from './SkewMouse';\nimport SpinMouse from './SpinMouse';\nimport SwivelMouse from './SwivelMouse';\nimport Tilt3DMouse from './Tilt3DMouse';\nimport Track3DMouse from './Track3DMouse';\nimport TrackMouse from './TrackMouse';\nimport type { MouseAnimations } from '../../types';\n\nexport const mouseAnimations: MouseAnimations = {\n AiryMouse,\n BlobMouse,\n BlurMouse,\n BounceMouse,\n CustomMouse: CreateCustomMouse,\n ScaleMouse,\n SkewMouse,\n SpinMouse,\n SwivelMouse,\n Tilt3DMouse,\n Track3DMouse,\n TrackMouse,\n};\n","import type { DomApi } from '../../types';\n\nexport function measureCompHeight(\n measures: { compHeight: number },\n dom: DomApi,\n assignToCss?: boolean,\n) {\n dom.measure((target) => {\n if (!target) {\n return;\n }\n measures.compHeight = target.offsetHeight;\n });\n if (assignToCss) {\n dom.mutate((target) => {\n target?.style.setProperty('--motion-comp-height', `${measures.compHeight}px`);\n });\n }\n}\n\nconst getMasterPage = (): HTMLElement | null => window!.document.getElementById('masterPage');\n\nconst getWixAdsHeight = () => {\n const wixAds = window!.document.getElementById('WIX_ADS');\n return wixAds ? wixAds.offsetHeight : 0;\n};\n\nconst getSiteHeight = (): number => {\n const masterPage = getMasterPage();\n return masterPage ? masterPage.offsetHeight + getWixAdsHeight() : 0; // probably tests that don't have masterPage created\n};\n\nexport function measureSiteHeight(measures: { siteHeight: number }, dom: DomApi) {\n dom.measure(() => {\n measures.siteHeight = getSiteHeight();\n });\n}\n\nexport function getScaleFromPerspectiveAndZ(z: number, perspective: number) {\n return z > perspective ? 0 : 1.0 / (1 - z / perspective);\n}\n","import type { BgCloseUp, DomApi, RangeOffset, ScrubAnimationOptions } from '../../types';\nimport { measureCompHeight } from './utils';\n\nexport default function create(options: ScrubAnimationOptions, dom?: DomApi) {\n const measures = { compHeight: 0 };\n if (dom) {\n measureCompHeight(measures, dom);\n }\n\n const easing = 'linear';\n const { scale = 80 } = options.namedEffect as BgCloseUp;\n\n return [\n {\n ...options,\n easing,\n part: 'BG_LAYER',\n startOffset: {\n name: 'cover',\n offset: { type: 'percentage', value: 0 },\n } as RangeOffset,\n get startOffsetAdd() {\n return `calc(50vh + ${Math.round(0.5 * measures.compHeight)}px)`;\n },\n endOffset: {\n name: 'cover',\n offset: { type: 'percentage', value: 0 },\n } as RangeOffset,\n get endOffsetAdd() {\n return `calc(100vh + ${measures.compHeight}px)`;\n },\n keyframes: [\n {\n opacity: 1,\n },\n {\n opacity: 0,\n },\n ],\n },\n {\n ...options,\n easing,\n part: 'BG_MEDIA',\n startOffset: {\n name: 'cover',\n offset: { type: 'percentage', value: 0 },\n } as RangeOffset,\n endOffset: {\n name: 'cover',\n offset: { type: 'percentage', value: 0 },\n } as RangeOffset,\n get endOffsetAdd() {\n return `calc(100vh + ${measures.compHeight}px)`;\n },\n keyframes: [\n {\n transform: 'perspective(100px) translateZ(0px)',\n },\n {\n transform: `perspective(100px) translateZ(${scale}px)`,\n },\n ],\n },\n ];\n}\n","import type { BgFade, DomApi, RangeOffset, ScrubAnimationOptions } from '../../types';\nimport { measureCompHeight } from './utils';\n\nconst EASE_IN = 'sineIn';\nconst EASE_OUT = 'sineOut';\n\nexport default function create(options: ScrubAnimationOptions, dom?: DomApi) {\n const measures = { compHeight: 0 };\n if (dom) {\n measureCompHeight(measures, dom);\n }\n\n const { range = 'in' } = options.namedEffect as BgFade;\n const isOut = range === 'out';\n const fromValue = isOut ? 1 : 0;\n const toValue = isOut ? 0 : 1;\n const easing = isOut ? EASE_OUT : EASE_IN;\n\n return [\n {\n ...options,\n part: 'BG_LAYER',\n easing,\n startOffset: {\n name: 'cover',\n offset: { type: 'percentage', value: 0 },\n } as RangeOffset,\n startOffsetAdd: isOut ? '100vh' : '0px',\n endOffset: {\n name: 'cover',\n offset: { type: 'percentage', value: 0 },\n } as RangeOffset,\n get endOffsetAdd() {\n return isOut\n ? `calc(100vh + ${measures.compHeight}px)`\n : `calc(50vh + ${Math.round(0.5 * measures.compHeight)}px)`;\n },\n keyframes: [\n {\n opacity: fromValue,\n },\n {\n opacity: toValue,\n },\n ],\n },\n ];\n}\n","import type { BgFadeBack, DomApi, RangeOffset, ScrubAnimationOptions } from '../../types';\nimport { measureCompHeight } from './utils';\n\nexport default function create(options: ScrubAnimationOptions, dom?: DomApi) {\n const measures = { compHeight: 0 };\n if (dom) {\n measureCompHeight(measures, dom);\n }\n\n const easing = 'sineOut';\n const { scale = 0.7 } = options.namedEffect as BgFadeBack;\n\n return [\n {\n ...options,\n easing: 'linear',\n part: 'BG_LAYER',\n startOffset: {\n name: 'cover',\n offset: { type: 'percentage', value: 0 },\n } as RangeOffset,\n startOffsetAdd: '100vh',\n endOffset: {\n name: 'cover',\n offset: { type: 'percentage', value: 0 },\n } as RangeOffset,\n get endOffsetAdd() {\n return `calc(100vh + ${measures.compHeight}px)`;\n },\n keyframes: [\n {\n opacity: 1,\n },\n {\n opacity: 0,\n },\n ],\n },\n {\n ...options,\n easing,\n part: 'BG_LAYER',\n startOffset: {\n name: 'cover',\n offset: { type: 'percentage', value: 0 },\n } as RangeOffset,\n startOffsetAdd: '100vh',\n endOffset: {\n name: 'cover',\n offset: { type: 'percentage', value: 0 },\n } as RangeOffset,\n get endOffsetAdd() {\n return `calc(100vh + ${Math.round(0.5 * measures.compHeight)}px)`;\n },\n keyframes: [\n {\n scale: 1,\n },\n {\n scale,\n },\n ],\n },\n ];\n}\n","import type { BgFake3D, RangeOffset, ScrubAnimationOptions, DomApi } from '../../types';\nimport { measureCompHeight, getScaleFromPerspectiveAndZ } from './utils';\n\nconst PERSPECTIVE = 100;\n\nexport default function create(options: ScrubAnimationOptions, dom?: DomApi) {\n const measures = { compHeight: 0 };\n if (dom) {\n measureCompHeight(measures, dom, true);\n }\n\n const { stretch = 1.3, zoom = 100 / 6 } = options.namedEffect as BgFake3D;\n const scale = getScaleFromPerspectiveAndZ(zoom, PERSPECTIVE);\n\n return [\n {\n ...options,\n part: 'BG_IMG',\n easing: 'sineOut',\n startOffset: {\n name: 'cover',\n offset: { type: 'percentage', value: 0 },\n } as RangeOffset,\n endOffset: {\n name: 'cover',\n offset: { type: 'percentage', value: 0 },\n } as RangeOffset,\n get endOffsetAdd() {\n return `calc(100svh + ${measures.compHeight}px)`;\n },\n get keyframes() {\n return [\n {\n transform: 'translateY(10svh)',\n },\n {\n transform: `translateY(calc(${parseFloat(\n (-0.1 * (2 - scale)).toFixed(2),\n )} * var(--motion-comp-height, ${measures.compHeight}px)))`,\n },\n ];\n },\n },\n {\n ...options,\n part: 'BG_IMG',\n easing: 'linear',\n composite: 'add' as const,\n startOffset: {\n name: 'cover',\n offset: { type: 'percentage', value: 0 },\n } as RangeOffset,\n endOffset: {\n name: 'cover',\n offset: { type: 'percentage', value: 0 },\n } as RangeOffset,\n get endOffsetAdd() {\n return `calc(100svh + ${measures.compHeight}px)`;\n },\n keyframes: [\n {\n transform: `scaleY(${stretch})`,\n },\n {\n transform: `scaleY(1)`,\n },\n ],\n },\n {\n ...options,\n part: 'BG_IMG',\n easing: 'sineIn',\n composite: 'add' as const,\n startOffset: {\n name: 'cover',\n offset: { type: 'percentage', value: 0 },\n } as RangeOffset,\n endOffset: {\n name: 'cover',\n offset: { type: 'percentage', value: 0 },\n } as RangeOffset,\n get endOffsetAdd() {\n return `calc(100svh + ${measures.compHeight}px)`;\n },\n keyframes: [\n {\n transform: `perspective(${PERSPECTIVE}px) translateZ(0px)`,\n },\n {\n transform: `perspective(${PERSPECTIVE}px) translateZ(${parseFloat(zoom.toFixed(2))}px)`,\n },\n ],\n },\n ];\n}\n","import type { BgPan, DomApi, RangeOffset, ScrubAnimationOptions } from '../../types';\nimport { measureCompHeight } from './utils';\n\nexport default function create(options: ScrubAnimationOptions, dom?: DomApi) {\n const measures = { compHeight: 0 };\n if (dom) {\n measureCompHeight(measures, dom);\n }\n\n const { direction = 'left', speed = 0.2 } = options.namedEffect as BgPan;\n const offsetPercentage = ((50 * speed) / (1 + speed)) | 0;\n let fromValue = `${offsetPercentage}%`;\n let toValue = `-${offsetPercentage}%`;\n if (direction === 'right') {\n [fromValue, toValue] = [toValue, fromValue];\n }\n\n return [\n {\n ...options,\n part: 'BG_MEDIA',\n startOffset: {\n name: 'cover',\n offset: { type: 'percentage', value: 0 },\n } as RangeOffset,\n endOffset: {\n name: 'cover',\n offset: { type: 'percentage', value: 0 },\n } as RangeOffset,\n get endOffsetAdd() {\n return `calc(100vh + ${measures.compHeight}px)`;\n },\n keyframes: [\n {\n transform: `translateX(${fromValue})`,\n },\n {\n transform: `translateX(${toValue})`,\n },\n ],\n },\n ];\n}\n","import type { BgParallax, RangeOffset, ScrubAnimationOptions, DomApi } from '../../types';\nimport { measureCompHeight } from './utils';\n\nexport default function create(options: ScrubAnimationOptions, dom?: DomApi) {\n const measures = { compHeight: 0 };\n if (dom) {\n measureCompHeight(measures, dom, true);\n }\n\n const { speed = 0.2 } = options.namedEffect as BgParallax;\n\n return [\n {\n ...options,\n part: 'BG_MEDIA',\n startOffset: {\n name: 'cover',\n offset: { type: 'percentage', value: 0 },\n } as RangeOffset,\n endOffset: {\n name: 'cover',\n offset: { type: 'percentage', value: 0 },\n } as RangeOffset,\n get endOffsetAdd() {\n return `calc(100svh + ${measures.compHeight}px)`;\n },\n keyframes: [\n {\n transform: `translateY(${100 * speed}svh)`,\n },\n {\n transform: `translateY(calc((100% - 200lvh) * ${-speed}))`,\n },\n ],\n },\n ];\n}\n","import type { BgPullBack, DomApi, RangeOffset, ScrubAnimationOptions } from '../../types';\nimport { measureCompHeight } from './utils';\n\nexport default function create(options: ScrubAnimationOptions, dom?: DomApi) {\n const measures = { compHeight: 0 };\n if (dom) {\n measureCompHeight(measures, dom);\n }\n\n const easing = 'linear';\n const { scale = 50 } = options.namedEffect as BgPullBack;\n\n return [\n {\n ...options,\n easing,\n part: 'BG_MEDIA',\n startOffset: {\n name: 'cover',\n offset: { type: 'percentage', value: 0 },\n } as RangeOffset,\n endOffset: {\n name: 'cover',\n offset: { type: 'percentage', value: 0 },\n } as RangeOffset,\n get endOffsetAdd() {\n return `${measures.compHeight}px`;\n },\n keyframes: [\n {\n transform: `perspective(100px) translate3d(0px, -${(scale / 3) | 0}%, ${scale}px)`,\n },\n {\n transform: 'perspective(100px) translate3d(0px, 0px, 0px)',\n },\n ],\n },\n ];\n}\n","import type { ScrubAnimationOptions, DomApi } from '../../types';\nimport { measureCompHeight } from './utils';\n\nexport default function create(_options: ScrubAnimationOptions, dom?: DomApi) {\n if (dom) {\n measureCompHeight({ compHeight: 0 }, dom, true);\n }\n return [];\n}\n","import type { BgRotate, RangeOffset, ScrubAnimationOptions } from '../../types';\n\nexport default function create(options: ScrubAnimationOptions) {\n const easing = 'sineOut';\n const { angle = 22, direction = 'counter-clockwise' } = options.namedEffect as BgRotate;\n\n return [\n {\n ...options,\n easing,\n part: 'BG_MEDIA',\n startOffset: {\n name: 'cover',\n offset: { type: 'percentage', value: 0 },\n } as RangeOffset,\n endOffset: {\n name: 'cover',\n offset: { type: 'percentage', value: 0 },\n } as RangeOffset,\n endOffsetAdd: '100vh',\n keyframes: [\n {\n transform: `rotate(${direction === 'counter-clockwise' ? angle : -angle}deg)`,\n },\n {\n transform: 'rotate(0deg)',\n },\n ],\n },\n ];\n}\n","import type { BgSkew, DomApi, RangeOffset, ScrubAnimationOptions } from '../../types';\nimport { measureCompHeight } from './utils';\n\nexport default function create(options: ScrubAnimationOptions, dom?: DomApi) {\n const measures = { compHeight: 0 };\n if (dom) {\n measureCompHeight(measures, dom);\n }\n\n const { angle = 20, direction = 'counter-clockwise' } = options.namedEffect as BgSkew;\n\n return [\n {\n ...options,\n part: 'BG_MEDIA',\n startOffset: {\n name: 'cover',\n offset: { type: 'percentage', value: 0 },\n } as RangeOffset,\n endOffset: {\n name: 'cover',\n offset: { type: 'percentage', value: 0 },\n } as RangeOffset,\n get endOffsetAdd() {\n return `calc(100vh + ${measures.compHeight}px)`;\n },\n keyframes: [\n {\n transform: `skewY(${direction === 'counter-clockwise' ? angle : -angle}deg)`,\n },\n {\n transform: `skewY(${direction === 'counter-clockwise' ? -angle : angle}deg)`,\n },\n ],\n },\n ];\n}\n","import type { BgZoom, RangeOffset, ScrubAnimationOptions, DomApi } from '../../types';\nimport { roundNumber } from '../../utils';\nimport { measureCompHeight, getScaleFromPerspectiveAndZ } from './utils';\n\nconst PERSPECTIVE = 100;\nconst DEFAULT_ZOOM = 40;\nconst ZOOM_OUT_FACTOR = 0.375; // 15/40 - this for using the same scale of values in the data\nconst DIRECTION_TO_PARAMS = {\n in: {\n easing: 'sineIn',\n fromY: '20svh',\n },\n out: {\n easing: 'sineInOut',\n fromY: '0px',\n },\n};\n\nexport default function create(options: ScrubAnimationOptions, dom?: DomApi) {\n const { direction = 'in' } = options.namedEffect as BgZoom;\n const isIn = direction === 'in';\n\n const measures = { compHeight: 0 };\n if (dom) {\n measureCompHeight(measures, dom, isIn);\n }\n\n const { easing, fromY } = DIRECTION_TO_PARAMS[direction];\n let { zoom = DEFAULT_ZOOM } = options.namedEffect as BgZoom;\n if (!isIn) {\n zoom *= ZOOM_OUT_FACTOR;\n }\n const fromZ = roundNumber(isIn ? 0 : zoom / 1.3);\n const toZ = roundNumber(isIn ? zoom : -zoom);\n const toScale = roundNumber(getScaleFromPerspectiveAndZ(toZ, PERSPECTIVE));\n\n return [\n {\n ...options,\n part: 'BG_MEDIA',\n easing: 'linear',\n startOffset: {\n name: 'cover',\n offset: { type: 'percentage', value: 0 },\n } as RangeOffset,\n endOffset: {\n name: 'cover',\n offset: { type: 'percentage', value: 0 },\n } as RangeOffset,\n keyframes: [\n {\n transform: 'translate3d(0, 0, 0)',\n },\n {\n transform: 'translate3d(0, 0, 0)',\n },\n ],\n },\n {\n ...options,\n part: 'BG_IMG',\n easing: 'linear',\n startOffset: {\n name: 'cover',\n offset: { type: 'percentage', value: 0 },\n } as RangeOffset,\n endOffset: {\n name: 'cover',\n offset: { type: 'percentage', value: 0 },\n } as RangeOffset,\n get endOffsetAdd() {\n return `calc(100svh + ${measures.compHeight}px)`;\n },\n get keyframes() {\n const toY = isIn\n ? `calc(-0.2 * var(--motion-comp-height, ${measures.compHeight}px) + 0.5 * ${\n zoom / PERSPECTIVE\n } * max(0px, 100lvh - var(--motion-comp-height, ${measures.compHeight}px)))`\n : '0px';\n return [\n {\n transform: `translateY(${fromY})`,\n },\n {\n transform: `translateY(calc(${toY} * ${toScale}))`,\n },\n ];\n },\n },\n {\n ...options,\n easing,\n part: 'BG_IMG',\n composite: isIn ? ('add' as const) : ('replace' as const),\n startOffset: {\n name: 'cover',\n offset: { type: 'percentage', value: 0 },\n } as RangeOffset,\n endOffset: {\n name: 'cover',\n offset: { type: 'percentage', value: 0 },\n } as RangeOffset,\n get endOffsetAdd() {\n return `calc(100svh + ${measures.compHeight}px)`;\n },\n keyframes: [\n {\n transform: `perspective(${PERSPECTIVE}px) translateZ(${fromZ}px)`,\n },\n {\n transform: `perspective(${PERSPECTIVE}px) translateZ(${toZ}px)`,\n },\n ],\n },\n ];\n}\n","import type { DomApi, ImageParallax, RangeOffset, ScrubAnimationOptions } from '../../types';\nimport { measureCompHeight, measureSiteHeight } from './utils';\n\nexport default function create(options: ScrubAnimationOptions, dom?: DomApi) {\n const { speed = 1.5, reverse = false, isPage = false } = options.namedEffect as ImageParallax;\n\n const measures = { compHeight: 0, siteHeight: 0 };\n if (dom) {\n if (isPage) {\n measureSiteHeight(measures, dom);\n } else {\n measureCompHeight(measures, dom);\n }\n }\n\n let start = -100 * (speed - 1);\n if (!isPage) {\n start = start / speed;\n }\n let end = 0;\n if (reverse) {\n [start, end] = [end, start];\n }\n\n return [\n {\n ...options,\n part: 'BG_MEDIA',\n startOffset: {\n name: isPage ? 'contain' : 'cover',\n offset: { type: 'percentage', value: 0 },\n } as RangeOffset,\n endOffset: {\n name: 'cover',\n offset: { type: 'percentage', value: 0 },\n } as RangeOffset,\n get endOffsetAdd() {\n return isPage ? `${measures.siteHeight}px` : `calc(100vh + ${measures.compHeight}px)`;\n },\n keyframes: [\n {\n transform: `translateY(${start | 0}%)`,\n },\n {\n transform: `translateY(${end | 0}%)`,\n },\n ],\n },\n ];\n}\n","import type { BackgroundScrollAnimations } from '../../types';\nimport BgCloseUp from './BgCloseUp';\nimport BgFade from './BgFade';\nimport BgFadeBack from './BgFadeBack';\nimport BgFake3D from './BgFake3D';\nimport BgPan from './BgPan';\nimport BgParallax from './BgParallax';\nimport BgPullBack from './BgPullBack';\nimport BgReveal from './BgReveal';\nimport BgRotate from './BgRotate';\nimport BgSkew from './BgSkew';\nimport BgZoom from './BgZoom';\nimport ImageParallax from './ImageParallax';\n\nexport const backgroundScrollAnimations: BackgroundScrollAnimations = {\n BgCloseUp,\n BgFade,\n BgFadeBack,\n BgFake3D,\n BgPan,\n BgParallax,\n BgPullBack,\n BgReveal,\n BgRotate,\n BgSkew,\n BgZoom,\n ImageParallax,\n};\n","!(function(win) {\n\n/**\n * FastDom\n *\n * Eliminates layout thrashing\n * by batching DOM read/write\n * interactions.\n *\n * @author Wilson Page <wilsonpage@me.com>\n * @author Kornel Lesinski <kornel.lesinski@ft.com>\n */\n\n'use strict';\n\n/**\n * Mini logger\n *\n * @return {Function}\n */\nvar debug = 0 ? console.log.bind(console, '[fastdom]') : function() {};\n\n/**\n * Normalized rAF\n *\n * @type {Function}\n */\nvar raf = win.requestAnimationFrame\n || win.webkitRequestAnimationFrame\n || win.mozRequestAnimationFrame\n || win.msRequestAnimationFrame\n || function(cb) { return setTimeout(cb, 16); };\n\n/**\n * Initialize a `FastDom`.\n *\n * @constructor\n */\nfunction FastDom() {\n var self = this;\n self.reads = [];\n self.writes = [];\n self.raf = raf.bind(win); // test hook\n debug('initialized', self);\n}\n\nFastDom.prototype = {\n constructor: FastDom,\n\n /**\n * We run this inside a try catch\n * so that if any jobs error, we\n * are able to recover and continue\n * to flush the batch until it's empty.\n *\n * @param {Array} tasks\n */\n runTasks: function(tasks) {\n debug('run tasks');\n var task; while (task = tasks.shift()) task();\n },\n\n /**\n * Adds a job to the read batch and\n * schedules a new frame if need be.\n *\n * @param {Function} fn\n * @param {Object} ctx the context to be bound to `fn` (optional).\n * @public\n */\n measure: function(fn, ctx) {\n debug('measure');\n var task = !ctx ? fn : fn.bind(ctx);\n this.reads.push(task);\n scheduleFlush(this);\n return task;\n },\n\n /**\n * Adds a job to the\n * write batch and schedules\n * a new frame if need be.\n *\n * @param {Function} fn\n * @param {Object} ctx the context to be bound to `fn` (optional).\n * @public\n */\n mutate: function(fn, ctx) {\n debug('mutate');\n var task = !ctx ? fn : fn.bind(ctx);\n this.writes.push(task);\n scheduleFlush(this);\n return task;\n },\n\n /**\n * Clears a scheduled 'read' or 'write' task.\n *\n * @param {Object} task\n * @return {Boolean} success\n * @public\n */\n clear: function(task) {\n debug('clear', task);\n return remove(this.reads, task) || remove(this.writes, task);\n },\n\n /**\n * Extend this FastDom with some\n * custom functionality.\n *\n * Because fastdom must *always* be a\n * singleton, we're actually extending\n * the fastdom instance. This means tasks\n * scheduled by an extension still enter\n * fastdom's global task queue.\n *\n * The 'super' instance can be accessed\n * from `this.fastdom`.\n *\n * @example\n *\n * var myFastdom = fastdom.extend({\n * initialize: function() {\n * // runs on creation\n * },\n *\n * // override a method\n * measure: function(fn) {\n * // do extra stuff ...\n *\n * // then call the original\n * return this.fastdom.measure(fn);\n * },\n *\n * ...\n * });\n *\n * @param {Object} props properties to mixin\n * @return {FastDom}\n */\n extend: function(props) {\n debug('extend', props);\n if (typeof props != 'object') throw new Error('expected object');\n\n var child = Object.create(this);\n mixin(child, props);\n child.fastdom = this;\n\n // run optional creation hook\n if (child.initialize) child.initialize();\n\n return child;\n },\n\n // override this with a function\n // to prevent Errors in console\n // when tasks throw\n catch: null\n};\n\n/**\n * Schedules a new read/write\n * batch if one isn't pending.\n *\n * @private\n */\nfunction scheduleFlush(fastdom) {\n if (!fastdom.scheduled) {\n fastdom.scheduled = true;\n fastdom.raf(flush.bind(null, fastdom));\n debug('flush scheduled');\n }\n}\n\n/**\n * Runs queued `read` and `write` tasks.\n *\n * Errors are caught and thrown by default.\n * If a `.catch` function has been defined\n * it is called instead.\n *\n * @private\n */\nfunction flush(fastdom) {\n debug('flush');\n\n var writes = fastdom.writes;\n var reads = fastdom.reads;\n var error;\n\n try {\n debug('flushing reads', reads.length);\n fastdom.runTasks(reads);\n debug('flushing writes', writes.length);\n fastdom.runTasks(writes);\n } catch (e) { error = e; }\n\n fastdom.scheduled = false;\n\n // If the batch errored we may still have tasks queued\n if (reads.length || writes.length) scheduleFlush(fastdom);\n\n if (error) {\n debug('task errored', error.message);\n if (fastdom.catch) fastdom.catch(error);\n else throw error;\n }\n}\n\n/**\n * Remove an item from an Array.\n *\n * @param {Array} array\n * @param {*} item\n * @return {Boolean}\n */\nfunction remove(array, item) {\n var index = array.indexOf(item);\n return !!~index && !!array.splice(index, 1);\n}\n\n/**\n * Mixin own properties of source\n * object into the target.\n *\n * @param {Object} target\n * @param {Object} source\n */\nfunction mixin(target, source) {\n for (var key in source) {\n if (source.hasOwnProperty(key)) target[key] = source[key];\n }\n}\n\n// There should never be more than\n// one instance of `FastDom` in an app\nvar exports = win.fastdom = (win.fastdom || new FastDom()); // jshint ignore:line\n\n// Expose to CJS & AMD\nif ((typeof define) == 'function') define(function() { return exports; });\nelse if ((typeof module) == 'object') module.exports = exports;\n\n})( typeof window !== 'undefined' ? window : typeof this != 'undefined' ? this : globalThis);\n","import type {\n AnimationData,\n AnimationDataForScrub,\n AnimationOptions,\n BackgroundScrollAnimations,\n EntranceAnimations,\n MeasureCallback,\n MouseAnimations,\n OngoingAnimations,\n RangeOffset,\n ScrollAnimations,\n TimeAnimationOptions,\n TriggerVariant,\n UnitLengthPercentage,\n} from '../types';\nimport { scrollAnimations } from '../library/scroll';\nimport { entranceAnimations } from '../library/entrance';\nimport { ongoingAnimations } from '../library/ongoing';\nimport { mouseAnimations } from '../library/mouse';\nimport { backgroundScrollAnimations } from '../library/backgroundScroll';\nimport { getCssUnits, getEasing } from '../utils';\nimport fastdom from 'fastdom';\n\nfunction getElement(id: string | null, ownerDocument?: Document): HTMLElement | null {\n return id ? (ownerDocument || document).getElementById(id) : null;\n}\n\nfunction getElementMotionPart(element: Element | null, part: string) {\n if (element?.matches(`[data-motion-part~=\"${part}\"]`)) {\n return element;\n }\n return element?.querySelector(`[data-motion-part~=\"${part}\"]`);\n}\n\nfunction getDirection(effect: AnimationData): KeyframeEffectOptions['direction'] {\n const alternate = effect.alternate ? 'alternate' : '';\n return effect.reversed\n ? (`${alternate ? `${alternate}-` : ''}reverse` as 'reverse' | 'alternate-reverse')\n : alternate || 'normal';\n}\n\nfunction getLength(length: UnitLengthPercentage): string {\n return `${length.value}${getCssUnits(length.type)}`;\n}\n\nfunction getRange(range: RangeOffset, add: string | undefined, isEnd?: boolean) {\n // according to the CSS spec if the end range is a <length> then it is calculated from the start of the named range\n // our model assumes that <length> in end range is calculated from the end of the named range\n return `${range.name || 'cover'} ${\n isEnd && range.offset!.type !== 'percentage'\n ? `calc(100% + ${getLength(range.offset!)}${add ? ` + ${add}` : ''})`\n : add\n ? `calc(${getLength(range.offset!)} + ${add})`\n : getLength(range.offset!)\n }`;\n}\n\nfunction getRanges(effect: AnimationDataForScrub) {\n return {\n start: getRange(effect.startOffset!, effect.startOffsetAdd),\n end: getRange(effect.endOffset!, effect.endOffsetAdd, true),\n };\n}\n\nfunction measure(target: HTMLElement | null): MeasureCallback {\n return (fn) => fastdom.measure(() => fn(target));\n}\n\nfunction mutate(target: HTMLElement | null): MeasureCallback {\n return (fn) => fastdom.mutate(() => fn(target));\n}\n\nfunction getNamedEffect(animation: AnimationOptions) {\n if (animation.namedEffect) {\n const name = animation.namedEffect.type;\n\n // check each preset library for the named effect\n if (name in scrollAnimations) {\n return scrollAnimations[name as keyof ScrollAnimations];\n } else if (name in entranceAnimations) {\n return entranceAnimations[name as keyof EntranceAnimations];\n } else if (name in ongoingAnimations) {\n return ongoingAnimations[name as keyof OngoingAnimations];\n } else if (name in mouseAnimations) {\n return mouseAnimations[name as keyof MouseAnimations];\n } else if (name in backgroundScrollAnimations) {\n return backgroundScrollAnimations[name as keyof BackgroundScrollAnimations];\n }\n } else if (animation.keyframeEffect) {\n const effect = (animation_: AnimationOptions) => {\n const { name, keyframes } = animation_.keyframeEffect!;\n\n return [{ ...animation_, name, keyframes }];\n };\n const getNames = (animation_: AnimationOptions) => {\n const { effectId } = animation_;\n const { name } = animation_.keyframeEffect!;\n const uid = name || effectId;\n\n return uid ? [uid] : [];\n };\n return { web: effect, style: effect, getNames };\n } else if (animation.customEffect) {\n return (animation_: AnimationOptions) => [{ ...animation_, keyframes: [] }];\n }\n return null;\n}\n\nfunction getEffectsData(\n animations: AnimationData[],\n trigger?: Partial<TriggerVariant>,\n effectId?: string,\n) {\n // process each AnimationData object into a KeyframeEffect object\n return animations.map((effect, index) => {\n // prepare the KeyframeEffectOptions object\n const effectOptions = {\n fill: effect.fill,\n easing: getEasing(effect.easing),\n iterations: effect.iterations === 0 ? Infinity : effect.iterations || 1,\n composite: effect.composite,\n direction: getDirection(effect),\n } as KeyframeEffectOptions & { rangeStart: string; rangeEnd: string };\n\n // if this is a time-based animation then set the duration and delay as time values\n if (isNotAScrubTrigger(trigger)) {\n effectOptions.duration = effect.duration as number;\n effectOptions.delay = (effect as TimeAnimationOptions).delay || 0;\n } else {\n // if ViewTimeline is supported\n if (window.ViewTimeline) {\n // set duration to 'auto'\n effectOptions.duration = 'auto';\n } else {\n // if ViewTimeline not supported then put a 100ms value in duration get a progress we can easily relate to\n // we split the duration to 99.99ms and delay of 0.01ms to get the fill-mode effect working\n effectOptions.duration = 99.99;\n effectOptions.delay = 0.01;\n }\n }\n\n return {\n effect,\n options: effectOptions,\n id: effectId && `${effectId}-${index + 1}`,\n part: effect.part,\n };\n });\n}\n\nfunction isNotAScrubTrigger(trigger?: Partial<TriggerVariant>) {\n return !trigger || (trigger.trigger !== 'pointer-move' && trigger.trigger !== 'view-progress');\n}\n\nexport {\n isNotAScrubTrigger,\n getElement,\n getElementMotionPart,\n getNamedEffect,\n getEffectsData,\n measure,\n mutate,\n getDirection,\n getLength,\n getRanges,\n};\n","import type {\n AnimationData,\n AnimationDataForScrub,\n AnimationEffectAPI,\n AnimationOptions,\n MouseAnimationFactory,\n MouseAnimationInstance,\n ScrubAnimationOptions,\n TriggerVariant,\n WebAnimationEffectFactory,\n} from '../types';\nimport { CustomAnimation } from '../CustomAnimation';\nimport { AnimationGroup } from '../AnimationGroup';\nimport {\n getElement,\n getElementMotionPart,\n measure,\n mutate,\n getRanges,\n getNamedEffect,\n getEffectsData,\n isNotAScrubTrigger,\n} from './common';\nimport fastdom from 'fastdom';\n\nfunction getWebAnimationEffect(\n preset: AnimationEffectAPI<any> | WebAnimationEffectFactory<any> | null,\n animation: AnimationOptions,\n target: HTMLElement | string | null,\n trigger?: Partial<TriggerVariant>,\n options?: Record<string, any>,\n): AnimationData[] | MouseAnimationFactory {\n if (preset) {\n // validate duration is a number over 0\n if (isNotAScrubTrigger(trigger)) {\n animation.duration = animation.duration || 1;\n\n if (options?.reducedMotion) {\n if (animation.iterations === 1 || animation.iterations == undefined) {\n animation = { ...animation, duration: 1 };\n } else {\n return [];\n }\n }\n }\n\n let domApi;\n if (target instanceof HTMLElement) {\n domApi = { measure: measure(target), mutate: mutate(target) };\n }\n\n return (preset as AnimationEffectAPI<any>).web\n ? (preset as AnimationEffectAPI<any>).web(animation, domApi, options)\n : (preset as WebAnimationEffectFactory<any>)(animation, domApi, options);\n }\n\n return [];\n}\n\nfunction getWebAnimation(\n target: HTMLElement | string | null,\n animationOptions: AnimationOptions,\n trigger?: Partial<TriggerVariant> & { element?: HTMLElement },\n options?: Record<string, any>,\n ownerDocument?: Document,\n): AnimationGroup | MouseAnimationInstance | null {\n const element = target instanceof HTMLElement ? target : getElement(target, ownerDocument);\n\n if (trigger?.trigger === 'pointer-move') {\n let effectOptions = animationOptions;\n\n if (animationOptions.customEffect) {\n effectOptions = {\n ...animationOptions,\n namedEffect: { id: '', type: 'CustomMouse' },\n };\n }\n\n // TODO: need to fix the type here, currently lying about the returned type to be WebAnimationEffectFactory instead of MouseAnimationFactoryCreate\n const mouseAnimationPreset = getNamedEffect(\n effectOptions,\n ) as WebAnimationEffectFactory<'scrub'>;\n const mouseAnimationFactory = getWebAnimationEffect(\n mouseAnimationPreset,\n animationOptions,\n element,\n trigger,\n options,\n ) as MouseAnimationFactory;\n\n // Return null if mouseAnimationFactory is not callable\n if (typeof mouseAnimationFactory !== 'function') {\n return null;\n }\n\n return mouseAnimationFactory(element as HTMLElement);\n }\n\n // get the preset for the given animation options\n const namedEffect = getNamedEffect(animationOptions) as AnimationEffectAPI<any> | null;\n\n const animationsData = getWebAnimationEffect(\n namedEffect,\n animationOptions,\n element,\n trigger,\n options,\n ) as AnimationData[];\n\n // Return null if animation data cannot be generated\n if (!animationsData || animationsData.length === 0) {\n return null;\n }\n\n const data = getEffectsData(animationsData, trigger, animationOptions.effectId);\n\n let timeline: typeof window.ViewTimeline | undefined;\n const isViewProgress = trigger?.trigger === 'view-progress';\n\n // if this is a ScrubAnimation with view-progress trigger and the browser supports the ViewTimeline API\n if (isViewProgress && window.ViewTimeline) {\n // generate the timeline object\n // @ts-expect-error\n timeline = new ViewTimeline({\n subject: trigger.element || getElement(trigger.componentId!),\n });\n }\n\n // generate an Animation object for each data object\n const animations = data.map(({ effect, options: effectOptions, id, part }) => {\n const effectTarget = part ? getElementMotionPart(element, part) : element;\n\n const keyframeEffect = new KeyframeEffect(effectTarget || null, [], effectOptions);\n\n // set the keyframes for the KeyframeEffect after measurements and mutations\n fastdom.mutate(() => {\n if ('timing' in effect) {\n keyframeEffect.updateTiming(effect.timing as OptionalEffectTiming);\n }\n\n keyframeEffect.setKeyframes(effect.keyframes);\n });\n\n const timingOptions =\n isViewProgress && timeline ? { timeline: timeline as AnimationTimeline } : {};\n const animation: Animation | CustomAnimation =\n typeof effect.customEffect === 'function'\n ? (new CustomAnimation(\n effect.customEffect,\n effectTarget || null,\n effectOptions,\n timingOptions,\n ) as Animation)\n : new Animation(keyframeEffect, timingOptions.timeline);\n\n // if this is a ScrubAnimation with view-progress trigger and the browser supports the ViewTimeline API\n if (isViewProgress) {\n if (timeline) {\n // set the ranges for the animation after measurements and mutations\n fastdom.mutate(() => {\n const { start, end } = getRanges(effect as AnimationDataForScrub);\n // @ts-expect-error\n animation.rangeStart = start;\n // @ts-expect-error\n animation.rangeEnd = end;\n\n animation.play();\n });\n } else {\n const { startOffset, endOffset } = animationOptions as ScrubAnimationOptions;\n\n // set the ranges for the animation after measurements and mutations\n fastdom.mutate(() => {\n const startOffsetToWrite = (effect as AnimationDataForScrub).startOffset || startOffset;\n const endOffsetToWrite = (effect as AnimationDataForScrub).endOffset || endOffset;\n\n Object.assign(animation, {\n start: {\n name: startOffsetToWrite!.name,\n offset: startOffsetToWrite!.offset?.value,\n add: (effect as AnimationDataForScrub)!.startOffsetAdd,\n },\n end: {\n name: endOffsetToWrite!.name,\n offset: endOffsetToWrite!.offset?.value,\n add: (effect as AnimationDataForScrub)!.endOffsetAdd,\n },\n });\n });\n }\n }\n\n if (id) {\n animation.id = id;\n }\n\n return animation;\n });\n\n // create an AnimationGroup with the generate animations\n return new AnimationGroup(animations, {\n ...animationOptions,\n trigger: { ...(trigger || ({} as Partial<TriggerVariant>)) },\n // make sure the group is ready after all animation targets are measured and mutated\n measured: new Promise((resolve) => fastdom.mutate(resolve)),\n });\n}\n\nexport { getWebAnimation };\n","import type {\n AnimationData,\n AnimationDataForScrub,\n AnimationEffectAPI,\n AnimationOptions,\n TriggerVariant,\n} from '../types';\nimport { getEffectsData, getRanges, getNamedEffect, isNotAScrubTrigger } from './common';\n\nfunction getAnimationTarget(target: string | null, part: string | undefined) {\n return target ? `#${target}${part ? `[data-motion-part~=\"${part}\"]` : ''}` : '';\n}\n\nfunction getAnimationAsCSS(\n data: {\n effect: AnimationData;\n options: KeyframeEffectOptions;\n id: string | undefined;\n part: string | undefined;\n },\n isRunning?: boolean,\n) {\n const { duration, delay, iterations = 1, fill, easing = 'linear', direction } = data.options;\n const animationName = data.effect.name;\n const isAutoDuration = duration === 'auto';\n\n return `${animationName} ${isAutoDuration ? 'auto' : `${duration}ms`}${\n isAutoDuration ? ' ' : ` ${delay || 1}ms `\n }${easing}${fill && fill !== 'none' ? ` ${fill}` : ''} ${\n !iterations || iterations === Infinity ? 'infinite' : iterations\n }${direction === 'normal' ? '' : ` ${direction}`} ${isRunning ? '' : 'paused'}`;\n}\n\nfunction getCSSAnimationEffect(\n preset: AnimationEffectAPI<any> | null,\n animation: AnimationOptions,\n trigger?: Partial<TriggerVariant>,\n): AnimationData[] {\n if (preset?.style) {\n // validate duration is a number over 0\n if (isNotAScrubTrigger(trigger)) {\n animation.duration = animation.duration || 1;\n }\n\n return preset.style(animation);\n }\n\n return [];\n}\n\nfunction getCSSAnimation(\n target: string | null,\n animationOptions: AnimationOptions,\n trigger?: TriggerVariant,\n) {\n // get the preset for the given animation options\n const namedEffect = getNamedEffect(animationOptions) as AnimationEffectAPI<any> | null;\n\n const animationsData = getCSSAnimationEffect(namedEffect, animationOptions);\n const data = getEffectsData(animationsData, trigger, animationOptions.effectId);\n const isViewProgress = trigger?.trigger === 'view-progress';\n\n return data.map((item, index) => {\n const { start, end }: { start?: string; end?: string } = isViewProgress\n ? getRanges(item.effect as AnimationDataForScrub)\n : {};\n\n return {\n target: getAnimationTarget(target, item.part),\n animation: getAnimationAsCSS(item, isViewProgress),\n composition: item.options.composite,\n custom: item.effect.custom,\n name: item.effect.name,\n keyframes: item.effect.keyframes,\n id: item.id && `${item.id}-${index + 1}`,\n animationTimeline: isViewProgress ? `--${trigger?.id}` : '',\n animationRange: start || end ? `${start} ${end}` : '',\n };\n });\n}\n\nexport { getCSSAnimation, getCSSAnimationEffect, getAnimationAsCSS };\n","import type { AnimationEffectAPI, AnimationOptions, TimeAnimationOptions } from '../types';\nimport { getElement, getNamedEffect, measure, mutate } from './common';\nimport fastdom from 'fastdom';\n\nfunction prepareAnimation(\n target: HTMLElement | string | null,\n animation: AnimationOptions,\n callback?: () => void,\n) {\n const preset = getNamedEffect(animation);\n const element = target instanceof HTMLElement ? target : getElement(target);\n\n if (preset && (preset as AnimationEffectAPI<'time'>).prepare && element) {\n const domApi = { measure: measure(element), mutate: mutate(element) };\n\n (preset as AnimationEffectAPI<'time'>).prepare!(animation as TimeAnimationOptions, domApi);\n }\n\n callback && fastdom.mutate(callback);\n}\n\nexport { prepareAnimation };\n","import type {\n AnimationOptions,\n ScrubAnimationOptions,\n TriggerVariant,\n MouseAnimationInstance,\n AnimationEffectAPI,\n CustomMouseAnimationInstance,\n ScrubScrollScene,\n ScrubPointerScene,\n} from './types';\nimport { AnimationGroup } from './AnimationGroup';\nimport { getEasing, getJsEasing } from './utils';\nimport { getWebAnimation } from './api/webAnimations';\nimport { getCSSAnimation } from './api/cssAnimations';\nimport { prepareAnimation } from './api/prepare';\nimport { getElement, getNamedEffect } from './api/common';\n\nfunction getElementCSSAnimation(\n target: HTMLElement | string | null,\n animationOptions: AnimationOptions,\n): AnimationGroup | null {\n const namedEffect = getNamedEffect(animationOptions) as AnimationEffectAPI<any> | null;\n\n if (!namedEffect) {\n return null;\n }\n\n if (!namedEffect.style) {\n // if this named effect does not have a style method, attempt to get group of Web Animations\n if (animationOptions.effectId && target) {\n return getElementAnimation(target, animationOptions.effectId);\n }\n\n return null;\n }\n\n const effectNames = namedEffect.getNames(animationOptions);\n const element = typeof target === 'string' ? getElement(target) : target;\n const animations = element?.getAnimations();\n const animationNames =\n animations?.map((anim) => (anim as CSSAnimation).animationName) || ([] as string[]);\n const filteredAnimations: CSSAnimation[] = [];\n\n effectNames.forEach((name) => {\n if (animationNames.includes(name)) {\n filteredAnimations.push(\n animations?.find((anim) => (anim as CSSAnimation).animationName === name) as CSSAnimation,\n );\n }\n });\n\n return filteredAnimations?.length ? new AnimationGroup(filteredAnimations) : null;\n}\n\nfunction getElementAnimation(\n target: HTMLElement | string,\n effectId: string,\n): AnimationGroup | null {\n const element = typeof target === 'string' ? getElement(target) : target;\n // somehow get the right animations\n const animations = element?.getAnimations().filter((anim: Animation | CSSAnimation) => {\n const id = anim.id || (anim as CSSAnimation).animationName;\n // if no id/name just return all animations\n return id ? id.startsWith(effectId) : true;\n });\n\n return animations?.length ? new AnimationGroup(animations) : null;\n}\n\nfunction getScrubScene(\n target: HTMLElement | string | null,\n animationOptions: AnimationOptions,\n trigger: Partial<TriggerVariant> & { element?: HTMLElement },\n sceneOptions: Record<string, any> = {},\n): ScrubScrollScene[] | ScrubPointerScene | null {\n const { disabled, allowActiveEvent, ...rest } = sceneOptions;\n const animation = getWebAnimation(target, animationOptions, trigger, rest);\n\n // Return null if animation could not be created\n if (!animation) {\n return null;\n }\n\n let typeSpecificOptions = {} as Record<string, any>;\n\n if (trigger.trigger === 'view-progress' && !window.ViewTimeline) {\n // TODO(ameerf): consider doing this only for bgscrub to not affect the other scroll effects\n const viewSource = trigger.element || getElement(trigger.componentId!);\n const { ready } = animation as AnimationGroup;\n\n return (animation as AnimationGroup).animations.map((partialAnimation) => {\n return {\n /* we use getters for start and end in order to access the animation's start and end\n only when initializing the scrub scene rather than immediately */\n get start() {\n return partialAnimation.start;\n },\n get end() {\n return partialAnimation.end;\n },\n viewSource,\n ready,\n getProgress() {\n return (animation as AnimationGroup).getProgress();\n },\n effect(__: any, p: number) {\n const { activeDuration } = partialAnimation.effect!.getComputedTiming();\n const { delay } = partialAnimation.effect!.getTiming();\n\n partialAnimation.currentTime = ((delay || 0) + ((activeDuration as number) || 0)) * p;\n },\n disabled,\n destroy() {\n partialAnimation.cancel();\n },\n } as ScrubScrollScene;\n });\n } else if (trigger.trigger === 'pointer-move') {\n const { centeredToTarget, transitionDuration, transitionEasing } =\n animationOptions as ScrubAnimationOptions;\n\n typeSpecificOptions = {\n target: (animation as MouseAnimationInstance).target,\n centeredToTarget,\n allowActiveEvent,\n };\n\n if (animationOptions.customEffect && transitionDuration) {\n typeSpecificOptions.transitionDuration = transitionDuration;\n typeSpecificOptions.transitionEasing = getJsEasing(transitionEasing);\n }\n }\n\n return {\n ...typeSpecificOptions,\n getProgress() {\n return (animation as AnimationGroup | CustomMouseAnimationInstance).getProgress();\n },\n effect(\n __: any,\n p: number | { x: number; y: number },\n v?: { x: number; y: number },\n active?: boolean,\n ) {\n animation.progress(\n v\n ? {\n // @ts-expect-error spread error on p\n ...p,\n v,\n active,\n }\n : p,\n );\n },\n disabled,\n destroy() {\n animation.cancel();\n },\n } as ScrubPointerScene;\n}\n\nfunction getAnimation(\n target: HTMLElement | string | null,\n animationOptions: AnimationOptions,\n trigger?: Partial<TriggerVariant> & { element?: HTMLElement },\n reducedMotion: boolean = false,\n): AnimationGroup | MouseAnimationInstance | null {\n const animation = getElementCSSAnimation(target, animationOptions);\n\n if (animation) {\n animation.ready = new Promise((resolve) => {\n prepareAnimation(target, animationOptions, resolve);\n });\n\n return animation;\n }\n\n return getWebAnimation(target, animationOptions, trigger, { reducedMotion });\n}\n\nexport {\n getCSSAnimation,\n getWebAnimation,\n getElementCSSAnimation,\n getElementAnimation,\n getScrubScene,\n prepareAnimation,\n getAnimation,\n getEasing,\n};\n\nexport type { AnimationGroup };\n"],"names":["AnimationGroup","animations","options","callback","animation","p","delay","duration","iterations","time","rate","a","target","endEvent","_error","linear","sineIn","sineOut","sineInOut","quadIn","quadOut","quadInOut","cubicIn","cubicOut","cubicInOut","quartIn","quartOut","quartInOut","quintIn","quintOut","quintInOut","expoIn","expoOut","expoInOut","circIn","circOut","circInOut","backIn","backOut","backInOut","k","jsEasings","cssEasings","mapRange","sourceMin","sourceMax","targetMin","targetMax","num","distance2d","x1","y1","x2","y2","getAngleInDeg","p1","p2","offset","angle","INITIAL_FRAME_OFFSET","CLIP_POLYGON_TEMPLATES","top","bottom","left","right","minimum","centerX","centerY","getClipPolygonParams","direction","scaleX","scaleY","getAdjustedDirection","availableDirections","angleInDeg","index","length","shiftBy","newIndex","transformPolarToXY","distance","radians","x","y","getCssUnits","type","getEasing","easing","getJsEasing","getEasingFamily","ease","MOUSE_TRANSITION_EASING_MAP","getMouseTransitionEasing","value","getOutOfScreenDistance","angleInRad","angleCos","angleSin","xDirection","yDirection","xDistance","yDistance","hypotenuse","hypotX","hypotY","getElementOffset","element","parent","offsetParent","generateShuttersClipPath","shutterCount","staggered","isTopOrLeft","iterStart","iterEnd","inc","isVerticalPath","clipPathStart","clipPathEnd","i","shutterEndPosInPercentage","clipStart","clipEnd","staggerFactor","getShuttersClipPaths","reverse","start","end","roundNumber","precision","toKeyframeValue","custom","key","useValue","fallback","getTimingFactor","asString","duration_","timingFactor","CustomAnimation","customEffect","effectOptions","timingOptions","effect","timeline","progress","_","error","speed","uid","tl","cb","playbackRate","listener","event","ROTATE_DIRECTION_MAP","ROTATION","RANGES_MAP","create","range","fill","rotateAxis","fromValue","toValue","BLUR_POWER_MAP","blur","power","blurFactor","opacity","isOut","ROTATE_POWER_MAP","rotate","rotationAxis","flipValue","MAX_Y_TRAVEL","POWER_MAP","directionMap","scaleFrom","_scaleTo","travelY","_scaleFrom","scaleTo","getScrubOffsets","scale","fromValues","toValues","trnsX","trnsY","travelX","travel","isTravelingDownwards","units","startOffsetAdd","endOffsetAdd","config","unit","DIRECTIONS","OFFSCREEN_POSITIONS","dom","startFromOffScreen","startX","endX","DEFAULT_SPEED","getOffsetAdd","factor","OPPOSITE_DIRECTION_MAP","initialClip","getClipFrom","getClipTo","clipFrom","clipTo","rotation","adjDirection","keyframes","SHAPES","RESPONSIVE_SHAPES_MAP","clipFactor","clip","clipNeg","KEYFRAMES_RANGE_MAP","shape","intensity","shutters","directionOpp","oppClipStart","oppClipEnd","DIRECTION_MAP","skewX","_endX","POSITIONS","skew","DIRECTION_TRANSLATION_MAP","translate","oppositeDirection","initialParams","spins","spinDirection","rotationZ","scaleFactor","isIn","easings","opacityKeyframesMap","stretch","ROTATION_X","ROTATION_Y","ROTATION_Z","UP","DOWN","ORIGINAL_LAYOUT","TRANSLATE_Y_POWER_MAP","DIRECTIONS_MAP","getYTravel","from","to","dir","rotateZFrom","rotateZTo","travelYFrom","travelYTo","rotationXFrom","rotationYFrom","rotationXTo","rotationYTo","ELEMENT_ROTATION","TRANSLATE_X_MAP","spin","transX","rotateZ","scaleFactors","scrollAnimations","ArcScroll","BlurScroll","FadeScroll","FlipScroll","GrowScroll","MoveScroll","PanScroll","ParallaxScroll","RevealScroll","ShapeScroll","ShuttersScroll","ShrinkScroll","SkewPanScroll","SlideScroll","Spin3dScroll","SpinScroll","StretchScroll","TiltScroll","TurnScroll","ROTATION_ANGLE","EASING_MAP","web","prepare","style","getNames","asWeb","fadeIn","arcIn","sign","z","width","height","rect","blurIn","shuttersIn","easeIn","easeOut","BOUNCE_KEYFRAMES","TRANSLATE_DIRECTION_MAP","bounceIn","distanceFactor","perspective","easeIn_","easeOut_","distanceFactor_","perspective_","directionX","directionY","directionZ","PARAMS_MAP","curveIn","rotationX","rotationY","circleXIn","circleYIn","customX","customY","initialScale","dropIn","SCALE_MAP","TRANSFORM_ORIGIN_MAP","expandIn","scale_","transY","POWER_TO_ROTATE_MAP","getRotateFrom","ROTATE_MAP","initialRotate","flipIn","adjustedDirection","floatIn","fromParams","translateX","translateY","PARAM_MAP","foldIn","origin","newRotate","glideIn","targetLeft","targetTop","getFixedDirection","duplicate","glideInWeb","glideInStyle","growIn","TRANSLATION_FACTORS_MAP","getMidPoint","punchIn","translationFactors","sourcePoint","_in","_out","shapes","shapeIn","getClipStart","clipDirection","revealIn","target_","INITIAL_TRANSLATE_MAP","initialTranslate","slideIn","spinIn","transformRotate","ROTATION_MAP","tiltInRotate","tiltInClip","translateZ","clipCustom","DIRECTION_TO_TRANSFORM_MAP","turnIn","invertedOrigin","winkInClip","winkInRotate","rotatedClip","rotatedDirection","entranceAnimations","ArcIn","BlurIn","ShuttersIn","BounceIn","CurveIn","CircleIn","DropIn","ExpandIn","FadeIn","FlipIn","FloatIn","FoldIn","GlideIn","GlitchIn","GrowIn","PunchIn","ShapeIn","RevealIn","SlideIn","SpinIn","TiltIn","TurnIn","WinkIn","POWER_TO_BOUNCE_FACTOR_MAP","TRANSLATE_Y_KEYFRAMES","_dom","name","bounceFactor","keyframe","FACTORS_SEQUENCE","totalDurationWithDelay","breatheX","breatheY","breatheZ","breathePerspective","breatheDistance","currentOffset","translateFactor","timeFactor","keyframeOffset","distancePart","FOUR_DIRECTIONS_TRANSLATIONS","RIGHT","LEFT","TOP","BOTTOM","FOUR_CORNERS_TRANSLATIONS","TRANSLATE_BY_DIRECTION_MAP","GET_OFFSET_BY_DIRECTION_MAP","parentWidth","parentHeight","leftDistance","topDistance","rightDistance","bottomDistance","generateTranslate","_from","_to","fromYFactor","toYFactor","fromXFactor","toXFactor","targetWidth","targetHeight","parentRect","toDurationOffset","cornerFromTo","_asWeb","POWER_EASING_MAP","rotationAxes","rotateStart","rotateEnd","POWER_TO_ROTATION_FACTOR_MAP","MIN_ROTATE_ANGLE","KEYFRAME_FACTORS","isResponsive","rotateTransform","transformLeft","transformRight","getTransform","fold","frameFactor","transform_0","POWER_TO_JELLO_FACTOR_MAP","SKEW_Y_KEYFRAMES","responsiveJelloFactor","skewY","TRANSLATE_KEYFRAMES","POWER_TO_POKE_FACTOR_MAP","responsivePokeFactor","pokeFactor","translateValue","POWER_TO_RUBBER_OFFSET_MAP","SCALE_KEYFRAMES","responsiveRubberOffset","rubberOffset","isLastKeyframe","isEvenKeyframe","adjustedScaleX","adjustedScaleY","scaleXKey","scaleYKey","POWER_TO_PULSE_OFFSET_MAP","responsivePulseOffset","POWER_TO_SWING_FACTOR_MAP","TRANSLATE_DISTANCE","swing","swingDeg","totalDuration","translateBefore","translateAfter","POWER_TO_WIGGLE_FACTOR_MAP","TRANSFORM_KEYFRAMES","responsiveWiggleFactor","wiggleFactor","currentRotation","accRotate","rotateValue","translateYValue","rotateKey","translateYKey","ongoingAnimations","Bounce","Breathe","Cross","Flash","Flip","Fold","Jello","Poke","Rubber","Pulse","Spin","Swing","Wiggle","CustomMouse","v","active","paramsMap","AiryMouseAnimation","progressX","progressY","invert","axis","transitionDuration","transitionEasing","inverted","animationOptions","BlobMouseAnimation","BlurMouseAnimation","maxScale","rotateX","rotateY","transform","progressDistance","filter","easingMap","TrackMouseAnimation","createTrack","ScaleMouseAnimation","scaleBoth","scaleDirection","SkewMouseAnimation","SpinMouseAnimation","transformOrigins","SwivelMouseAnimation","invertVertical","pivotAxis","Tilt3DMouseAnimation","Track3DMouseAnimation","mouseAnimations","AiryMouse","BlobMouse","BlurMouse","BounceMouse","CreateCustomMouse","ScaleMouse","SkewMouse","SpinMouse","SwivelMouse","Tilt3DMouse","Track3DMouse","TrackMouse","measureCompHeight","measures","assignToCss","getMasterPage","getWixAdsHeight","wixAds","getSiteHeight","masterPage","measureSiteHeight","getScaleFromPerspectiveAndZ","EASE_IN","EASE_OUT","PERSPECTIVE","zoom","offsetPercentage","_options","DEFAULT_ZOOM","ZOOM_OUT_FACTOR","DIRECTION_TO_PARAMS","fromY","fromZ","toZ","toScale","toY","isPage","backgroundScrollAnimations","BgCloseUp","BgFade","BgFadeBack","BgFake3D","BgPan","BgParallax","BgPullBack","BgReveal","BgRotate","BgSkew","BgZoom","ImageParallax","win","debug","raf","FastDom","self","tasks","task","fn","ctx","scheduleFlush","remove","props","child","mixin","fastdom","flush","writes","reads","e","array","item","source","exports","module","this","getElement","id","ownerDocument","getElementMotionPart","part","getDirection","alternate","getLength","getRange","add","isEnd","getRanges","measure","mutate","getNamedEffect","animation_","effectId","getEffectsData","trigger","isNotAScrubTrigger","getWebAnimationEffect","preset","domApi","getWebAnimation","mouseAnimationPreset","mouseAnimationFactory","namedEffect","animationsData","data","isViewProgress","effectTarget","keyframeEffect","startOffset","endOffset","startOffsetToWrite","endOffsetToWrite","resolve","getAnimationTarget","getAnimationAsCSS","isRunning","animationName","isAutoDuration","getCSSAnimationEffect","getCSSAnimation","prepareAnimation","getElementCSSAnimation","getElementAnimation","effectNames","animationNames","anim","filteredAnimations","getScrubScene","sceneOptions","disabled","allowActiveEvent","rest","typeSpecificOptions","viewSource","ready","partialAnimation","__","activeDuration","centeredToTarget","getAnimation","reducedMotion"],"mappings":"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","x_google_ignoreList":[89]}
|