@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.
Files changed (930) hide show
  1. package/README.md +26 -13
  2. package/dist/cjs/motion.js +2 -146
  3. package/dist/cjs/motion.js.map +1 -1
  4. package/dist/es/AnimationGroup.js +91 -0
  5. package/dist/es/CustomAnimation.js +169 -0
  6. package/dist/es/api/common.js +125 -0
  7. package/dist/es/api/cssAnimations.js +44 -0
  8. package/dist/es/api/prepare.js +12 -0
  9. package/dist/es/api/webAnimations.js +128 -0
  10. package/dist/es/easings.js +218 -0
  11. package/dist/{esm → es}/index.js +0 -1
  12. package/dist/es/library/backgroundScroll/BgCloseUp.js +62 -0
  13. package/dist/es/library/backgroundScroll/BgFade.js +43 -0
  14. package/dist/es/library/backgroundScroll/BgFadeBack.js +61 -0
  15. package/dist/es/library/backgroundScroll/BgFake3D.js +88 -0
  16. package/dist/es/library/backgroundScroll/BgPan.js +39 -0
  17. package/dist/es/library/backgroundScroll/BgParallax.js +33 -0
  18. package/dist/es/library/backgroundScroll/BgPullBack.js +35 -0
  19. package/dist/es/library/backgroundScroll/BgReveal.js +7 -0
  20. package/dist/es/library/backgroundScroll/BgRotate.js +28 -0
  21. package/dist/es/library/backgroundScroll/BgSkew.js +33 -0
  22. package/dist/es/library/backgroundScroll/BgZoom.js +108 -0
  23. package/dist/es/library/backgroundScroll/ImageParallax.js +46 -0
  24. package/dist/{esm → es}/library/backgroundScroll/index.js +12 -13
  25. package/dist/es/library/backgroundScroll/test/BgCloseUp.spec.js +36 -0
  26. package/dist/es/library/backgroundScroll/test/BgFade.spec.js +34 -0
  27. package/dist/es/library/backgroundScroll/test/BgFadeBack.spec.js +36 -0
  28. package/dist/es/library/backgroundScroll/test/BgFake3D.spec.js +63 -0
  29. package/dist/es/library/backgroundScroll/test/BgPan.spec.js +47 -0
  30. package/dist/es/library/backgroundScroll/test/BgParallax.spec.js +44 -0
  31. package/dist/es/library/backgroundScroll/test/BgPullBack.spec.js +42 -0
  32. package/dist/es/library/backgroundScroll/test/BgRotate.spec.js +46 -0
  33. package/dist/es/library/backgroundScroll/test/BgSkew.spec.js +46 -0
  34. package/dist/es/library/backgroundScroll/test/BgZoom.spec.js +105 -0
  35. package/dist/es/library/backgroundScroll/test/ImageParallax.spec.js +46 -0
  36. package/dist/es/library/backgroundScroll/test/testUtils.js +3 -0
  37. package/dist/es/library/backgroundScroll/utils.js +30 -0
  38. package/dist/es/library/entrance/ArcIn.js +78 -0
  39. package/dist/es/library/entrance/BlurIn.js +46 -0
  40. package/dist/es/library/entrance/BounceIn.js +83 -0
  41. package/dist/es/library/entrance/CircleIn.js +77 -0
  42. package/dist/es/library/entrance/CurveIn.js +61 -0
  43. package/dist/es/library/entrance/DropIn.js +46 -0
  44. package/dist/es/library/entrance/ExpandIn.js +80 -0
  45. package/dist/es/library/entrance/FadeIn.js +17 -0
  46. package/dist/es/library/entrance/FlipIn.js +80 -0
  47. package/dist/es/library/entrance/FloatIn.js +48 -0
  48. package/dist/es/library/entrance/FoldIn.js +86 -0
  49. package/dist/es/library/entrance/GlideIn.js +75 -0
  50. package/dist/es/library/entrance/GlitchIn.js +20 -0
  51. package/dist/es/library/entrance/GrowIn.js +52 -0
  52. package/dist/es/library/entrance/PunchIn.js +103 -0
  53. package/dist/es/library/entrance/RevealIn.js +64 -0
  54. package/dist/es/library/entrance/ShapeIn.js +55 -0
  55. package/dist/es/library/entrance/ShuttersIn.js +40 -0
  56. package/dist/es/library/entrance/SlideIn.js +106 -0
  57. package/dist/es/library/entrance/SpinIn.js +54 -0
  58. package/dist/es/library/entrance/TiltIn.js +96 -0
  59. package/dist/es/library/entrance/TurnIn.js +73 -0
  60. package/dist/es/library/entrance/WinkIn.js +94 -0
  61. package/dist/{esm → es}/library/entrance/index.js +23 -24
  62. package/dist/es/library/entrance/test/ArcIn.spec.js +253 -0
  63. package/dist/es/library/entrance/test/BlurIn.spec.js +103 -0
  64. package/dist/es/library/entrance/test/BounceIn.spec.js +943 -0
  65. package/dist/es/library/entrance/test/CircleIn.spec.js +174 -0
  66. package/dist/es/library/entrance/test/CurveIn.spec.js +143 -0
  67. package/dist/es/library/entrance/test/DropIn.spec.js +172 -0
  68. package/dist/es/library/entrance/test/ExpandIn.spec.js +194 -0
  69. package/dist/es/library/entrance/test/FadeIn.spec.js +33 -0
  70. package/dist/es/library/entrance/test/FlipIn.spec.js +125 -0
  71. package/dist/es/library/entrance/test/FloatIn.spec.js +127 -0
  72. package/dist/es/library/entrance/test/FoldIn.spec.js +125 -0
  73. package/dist/es/library/entrance/test/GlideIn.spec.js +133 -0
  74. package/dist/es/library/entrance/test/GlitchIn.spec.js +216 -0
  75. package/dist/es/library/entrance/test/GrowIn.spec.js +121 -0
  76. package/dist/es/library/entrance/test/PunchIn.spec.js +888 -0
  77. package/dist/es/library/entrance/test/RevealIn.spec.js +121 -0
  78. package/dist/es/library/entrance/test/ShapeIn.spec.js +221 -0
  79. package/dist/es/library/entrance/test/ShuttersIn.spec.js +338 -0
  80. package/dist/es/library/entrance/test/SlideIn.spec.js +149 -0
  81. package/dist/es/library/entrance/test/SpinIn.spec.js +141 -0
  82. package/dist/es/library/entrance/test/TiltIn.spec.js +186 -0
  83. package/dist/es/library/entrance/test/TurnIn.spec.js +224 -0
  84. package/dist/es/library/entrance/test/WinkIn.spec.js +281 -0
  85. package/dist/es/library/entrance/test/testUtils.js +3 -0
  86. package/dist/es/library/mouse/AiryMouse.js +43 -0
  87. package/dist/es/library/mouse/BlobMouse.js +42 -0
  88. package/dist/es/library/mouse/BlurMouse.js +56 -0
  89. package/dist/es/library/mouse/BounceMouse.js +10 -0
  90. package/dist/es/library/mouse/CustomMouse.js +31 -0
  91. package/dist/es/library/mouse/ScaleMouse.js +61 -0
  92. package/dist/es/library/mouse/SkewMouse.js +58 -0
  93. package/dist/es/library/mouse/SpinMouse.js +26 -0
  94. package/dist/es/library/mouse/SwivelMouse.js +52 -0
  95. package/dist/es/library/mouse/Tilt3DMouse.js +34 -0
  96. package/dist/es/library/mouse/Track3DMouse.js +50 -0
  97. package/dist/es/library/mouse/TrackMouse.js +43 -0
  98. package/dist/{esm → es}/library/mouse/index.js +12 -13
  99. package/dist/es/library/ongoing/Bounce.js +58 -0
  100. package/dist/es/library/ongoing/Breathe.js +92 -0
  101. package/dist/es/library/ongoing/Cross.js +218 -0
  102. package/dist/es/library/ongoing/DVD.js +85 -0
  103. package/dist/es/library/ongoing/Flash.js +45 -0
  104. package/dist/es/library/ongoing/Flip.js +57 -0
  105. package/dist/es/library/ongoing/Fold.js +121 -0
  106. package/dist/es/library/ongoing/Jello.js +51 -0
  107. package/dist/es/library/ongoing/Poke.js +61 -0
  108. package/dist/es/library/ongoing/Pulse.js +58 -0
  109. package/dist/es/library/ongoing/Rubber.js +60 -0
  110. package/dist/es/library/ongoing/Spin.js +50 -0
  111. package/dist/es/library/ongoing/Swing.js +98 -0
  112. package/dist/es/library/ongoing/Wiggle.js +60 -0
  113. package/dist/{esm → es}/library/ongoing/index.js +14 -17
  114. package/dist/es/library/ongoing/test/Bounce.spec.js +771 -0
  115. package/dist/es/library/ongoing/test/Breathe.spec.js +542 -0
  116. package/dist/es/library/ongoing/test/Cross.spec.js +579 -0
  117. package/dist/es/library/ongoing/test/DVD.spec.js +63 -0
  118. package/dist/es/library/ongoing/test/Flash.spec.js +205 -0
  119. package/dist/es/library/ongoing/test/Flip.spec.js +324 -0
  120. package/dist/es/library/ongoing/test/Fold.spec.js +649 -0
  121. package/dist/es/library/ongoing/test/Jello.spec.js +373 -0
  122. package/dist/es/library/ongoing/test/Poke.spec.js +590 -0
  123. package/dist/es/library/ongoing/test/Pulse.spec.js +391 -0
  124. package/dist/es/library/ongoing/test/Rubber.spec.js +591 -0
  125. package/dist/es/library/ongoing/test/Spin.spec.js +414 -0
  126. package/dist/es/library/ongoing/test/Swing.spec.js +240 -0
  127. package/dist/es/library/ongoing/test/Wiggle.spec.js +464 -0
  128. package/dist/es/library/ongoing/test/testUtils.js +3 -0
  129. package/dist/es/library/scroll/ArcScroll.js +43 -0
  130. package/dist/es/library/scroll/BlurScroll.js +39 -0
  131. package/dist/es/library/scroll/FadeScroll.js +33 -0
  132. package/dist/es/library/scroll/FlipScroll.js +44 -0
  133. package/dist/es/library/scroll/GrowScroll.js +112 -0
  134. package/dist/es/library/scroll/MoveScroll.js +72 -0
  135. package/dist/es/library/scroll/PanScroll.js +67 -0
  136. package/dist/es/library/scroll/ParallaxScroll.js +48 -0
  137. package/dist/es/library/scroll/RevealScroll.js +87 -0
  138. package/dist/es/library/scroll/ShapeScroll.js +124 -0
  139. package/dist/es/library/scroll/ShrinkScroll.js +109 -0
  140. package/dist/es/library/scroll/ShuttersScroll.js +63 -0
  141. package/dist/es/library/scroll/SkewPanScroll.js +78 -0
  142. package/dist/es/library/scroll/SlideScroll.js +105 -0
  143. package/dist/es/library/scroll/Spin3dScroll.js +92 -0
  144. package/dist/es/library/scroll/SpinScroll.js +45 -0
  145. package/dist/es/library/scroll/StretchScroll.js +81 -0
  146. package/dist/es/library/scroll/TiltScroll.js +118 -0
  147. package/dist/es/library/scroll/TurnScroll.js +96 -0
  148. package/dist/{esm → es}/library/scroll/index.js +19 -20
  149. package/dist/es/library/scroll/test/ArcScroll.spec.js +89 -0
  150. package/dist/es/library/scroll/test/BlurScroll.spec.js +149 -0
  151. package/dist/es/library/scroll/test/FadeScroll.spec.js +90 -0
  152. package/dist/es/library/scroll/test/FlipScroll.spec.js +167 -0
  153. package/dist/es/library/scroll/test/GrowScroll.spec.js +299 -0
  154. package/dist/es/library/scroll/test/MoveScroll.spec.js +183 -0
  155. package/dist/es/library/scroll/test/PanScroll.spec.js +133 -0
  156. package/dist/es/library/scroll/test/ParallaxScroll.spec.js +51 -0
  157. package/dist/es/library/scroll/test/RevealScroll.spec.js +131 -0
  158. package/dist/es/library/scroll/test/ShapeScroll.spec.js +234 -0
  159. package/dist/es/library/scroll/test/ShrinkScroll.spec.js +180 -0
  160. package/dist/es/library/scroll/test/ShuttersScroll.spec.js +189 -0
  161. package/dist/es/library/scroll/test/SkewPanScroll.spec.js +168 -0
  162. package/dist/es/library/scroll/test/SlideScroll.spec.js +99 -0
  163. package/dist/es/library/scroll/test/Spin3dScroll.spec.js +184 -0
  164. package/dist/es/library/scroll/test/SpinScroll.spec.js +188 -0
  165. package/dist/es/library/scroll/test/StretchScroll.spec.js +235 -0
  166. package/dist/es/library/scroll/test/TiltScroll.spec.js +206 -0
  167. package/dist/es/library/scroll/test/TurnScroll.spec.js +148 -0
  168. package/dist/es/library/scroll/test/testUtils.js +3 -0
  169. package/dist/es/motion.js +5440 -0
  170. package/dist/es/motion.js.map +1 -0
  171. package/dist/es/types.js +1 -0
  172. package/dist/es/utils.js +251 -0
  173. package/dist/tsconfig.tsbuildinfo +1 -0
  174. package/dist/types/AnimationGroup.d.ts.map +1 -1
  175. package/dist/types/CustomAnimation.d.ts +2 -2
  176. package/dist/types/CustomAnimation.d.ts.map +1 -1
  177. package/dist/types/api/common.d.ts +109 -109
  178. package/dist/types/api/common.d.ts.map +1 -1
  179. package/dist/types/api/cssAnimations.d.ts.map +1 -1
  180. package/dist/types/api/prepare.d.ts.map +1 -1
  181. package/dist/types/api/webAnimations.d.ts.map +1 -1
  182. package/dist/types/easings.d.ts.map +1 -1
  183. package/dist/types/library/backgroundScroll/BgCloseUp.d.ts +28 -28
  184. package/dist/types/library/backgroundScroll/BgCloseUp.d.ts.map +1 -1
  185. package/dist/types/library/backgroundScroll/BgFade.d.ts +14 -14
  186. package/dist/types/library/backgroundScroll/BgFade.d.ts.map +1 -1
  187. package/dist/types/library/backgroundScroll/BgFadeBack.d.ts +28 -28
  188. package/dist/types/library/backgroundScroll/BgFadeBack.d.ts.map +1 -1
  189. package/dist/types/library/backgroundScroll/BgFake3D.d.ts +28 -28
  190. package/dist/types/library/backgroundScroll/BgFake3D.d.ts.map +1 -1
  191. package/dist/types/library/backgroundScroll/BgPan.d.ts +15 -15
  192. package/dist/types/library/backgroundScroll/BgPan.d.ts.map +1 -1
  193. package/dist/types/library/backgroundScroll/BgParallax.d.ts +15 -15
  194. package/dist/types/library/backgroundScroll/BgParallax.d.ts.map +1 -1
  195. package/dist/types/library/backgroundScroll/BgPullBack.d.ts +14 -14
  196. package/dist/types/library/backgroundScroll/BgPullBack.d.ts.map +1 -1
  197. package/dist/types/library/backgroundScroll/BgRotate.d.ts +14 -14
  198. package/dist/types/library/backgroundScroll/BgRotate.d.ts.map +1 -1
  199. package/dist/types/library/backgroundScroll/BgSkew.d.ts +15 -15
  200. package/dist/types/library/backgroundScroll/BgSkew.d.ts.map +1 -1
  201. package/dist/types/library/backgroundScroll/BgZoom.d.ts +42 -42
  202. package/dist/types/library/backgroundScroll/BgZoom.d.ts.map +1 -1
  203. package/dist/types/library/backgroundScroll/ImageParallax.d.ts +15 -15
  204. package/dist/types/library/backgroundScroll/ImageParallax.d.ts.map +1 -1
  205. package/dist/types/library/backgroundScroll/test/BgCloseUp.spec.d.ts +2 -0
  206. package/dist/types/library/backgroundScroll/test/BgCloseUp.spec.d.ts.map +1 -0
  207. package/dist/types/library/backgroundScroll/test/BgFade.spec.d.ts +2 -0
  208. package/dist/types/library/backgroundScroll/test/BgFade.spec.d.ts.map +1 -0
  209. package/dist/types/library/backgroundScroll/test/BgFadeBack.spec.d.ts +2 -0
  210. package/dist/types/library/backgroundScroll/test/BgFadeBack.spec.d.ts.map +1 -0
  211. package/dist/types/library/backgroundScroll/test/BgFake3D.spec.d.ts +2 -0
  212. package/dist/types/library/backgroundScroll/test/BgFake3D.spec.d.ts.map +1 -0
  213. package/dist/types/library/backgroundScroll/test/BgPan.spec.d.ts +2 -0
  214. package/dist/types/library/backgroundScroll/test/BgPan.spec.d.ts.map +1 -0
  215. package/dist/types/library/backgroundScroll/test/BgParallax.spec.d.ts +2 -0
  216. package/dist/types/library/backgroundScroll/test/BgParallax.spec.d.ts.map +1 -0
  217. package/dist/types/library/backgroundScroll/test/BgPullBack.spec.d.ts +2 -0
  218. package/dist/types/library/backgroundScroll/test/BgPullBack.spec.d.ts.map +1 -0
  219. package/dist/types/library/backgroundScroll/test/BgRotate.spec.d.ts +2 -0
  220. package/dist/types/library/backgroundScroll/test/BgRotate.spec.d.ts.map +1 -0
  221. package/dist/types/library/backgroundScroll/test/BgSkew.spec.d.ts +2 -0
  222. package/dist/types/library/backgroundScroll/test/BgSkew.spec.d.ts.map +1 -0
  223. package/dist/types/library/backgroundScroll/test/BgZoom.spec.d.ts +2 -0
  224. package/dist/types/library/backgroundScroll/test/BgZoom.spec.d.ts.map +1 -0
  225. package/dist/types/library/backgroundScroll/test/ImageParallax.spec.d.ts +2 -0
  226. package/dist/types/library/backgroundScroll/test/ImageParallax.spec.d.ts.map +1 -0
  227. package/dist/types/library/backgroundScroll/utils.d.ts.map +1 -1
  228. package/dist/types/library/entrance/ArcIn.d.ts +42 -42
  229. package/dist/types/library/entrance/ArcIn.d.ts.map +1 -1
  230. package/dist/types/library/entrance/BlurIn.d.ts +42 -42
  231. package/dist/types/library/entrance/BlurIn.d.ts.map +1 -1
  232. package/dist/types/library/entrance/BounceIn.d.ts +42 -42
  233. package/dist/types/library/entrance/BounceIn.d.ts.map +1 -1
  234. package/dist/types/library/entrance/CircleIn.d.ts +44 -44
  235. package/dist/types/library/entrance/CurveIn.d.ts +22 -22
  236. package/dist/types/library/entrance/DropIn.d.ts +42 -42
  237. package/dist/types/library/entrance/DropIn.d.ts.map +1 -1
  238. package/dist/types/library/entrance/ExpandIn.d.ts +44 -44
  239. package/dist/types/library/entrance/ExpandIn.d.ts.map +1 -1
  240. package/dist/types/library/entrance/FadeIn.d.ts +22 -22
  241. package/dist/types/library/entrance/FadeIn.d.ts.map +1 -1
  242. package/dist/types/library/entrance/FlipIn.d.ts +44 -44
  243. package/dist/types/library/entrance/FlipIn.d.ts.map +1 -1
  244. package/dist/types/library/entrance/FloatIn.d.ts +22 -22
  245. package/dist/types/library/entrance/FoldIn.d.ts +44 -44
  246. package/dist/types/library/entrance/FoldIn.d.ts.map +1 -1
  247. package/dist/types/library/entrance/GlideIn.d.ts +22 -22
  248. package/dist/types/library/entrance/GlideIn.d.ts.map +1 -1
  249. package/dist/types/library/entrance/GlitchIn.d.ts +22 -22
  250. package/dist/types/library/entrance/GlitchIn.d.ts.map +1 -1
  251. package/dist/types/library/entrance/GrowIn.d.ts +42 -42
  252. package/dist/types/library/entrance/GrowIn.d.ts.map +1 -1
  253. package/dist/types/library/entrance/PunchIn.d.ts +42 -42
  254. package/dist/types/library/entrance/PunchIn.d.ts.map +1 -1
  255. package/dist/types/library/entrance/RevealIn.d.ts +22 -22
  256. package/dist/types/library/entrance/RevealIn.d.ts.map +1 -1
  257. package/dist/types/library/entrance/ShapeIn.d.ts +42 -42
  258. package/dist/types/library/entrance/ShapeIn.d.ts.map +1 -1
  259. package/dist/types/library/entrance/ShuttersIn.d.ts +22 -22
  260. package/dist/types/library/entrance/ShuttersIn.d.ts.map +1 -1
  261. package/dist/types/library/entrance/SlideIn.d.ts +22 -22
  262. package/dist/types/library/entrance/SlideIn.d.ts.map +1 -1
  263. package/dist/types/library/entrance/SpinIn.d.ts +42 -42
  264. package/dist/types/library/entrance/SpinIn.d.ts.map +1 -1
  265. package/dist/types/library/entrance/TiltIn.d.ts +62 -62
  266. package/dist/types/library/entrance/TiltIn.d.ts.map +1 -1
  267. package/dist/types/library/entrance/TurnIn.d.ts +42 -42
  268. package/dist/types/library/entrance/TurnIn.d.ts.map +1 -1
  269. package/dist/types/library/entrance/WinkIn.d.ts +64 -64
  270. package/dist/types/library/entrance/WinkIn.d.ts.map +1 -1
  271. package/dist/types/library/entrance/test/ArcIn.spec.d.ts +2 -0
  272. package/dist/types/library/entrance/test/ArcIn.spec.d.ts.map +1 -0
  273. package/dist/types/library/entrance/test/BlurIn.spec.d.ts +2 -0
  274. package/dist/types/library/entrance/test/BlurIn.spec.d.ts.map +1 -0
  275. package/dist/types/library/entrance/test/BounceIn.spec.d.ts +2 -0
  276. package/dist/types/library/entrance/test/BounceIn.spec.d.ts.map +1 -0
  277. package/dist/types/library/entrance/test/CircleIn.spec.d.ts +2 -0
  278. package/dist/types/library/entrance/test/CircleIn.spec.d.ts.map +1 -0
  279. package/dist/types/library/entrance/test/CurveIn.spec.d.ts +2 -0
  280. package/dist/types/library/entrance/test/CurveIn.spec.d.ts.map +1 -0
  281. package/dist/types/library/entrance/test/DropIn.spec.d.ts +2 -0
  282. package/dist/types/library/entrance/test/DropIn.spec.d.ts.map +1 -0
  283. package/dist/types/library/entrance/test/ExpandIn.spec.d.ts +2 -0
  284. package/dist/types/library/entrance/test/ExpandIn.spec.d.ts.map +1 -0
  285. package/dist/types/library/entrance/test/FadeIn.spec.d.ts +2 -0
  286. package/dist/types/library/entrance/test/FadeIn.spec.d.ts.map +1 -0
  287. package/dist/types/library/entrance/test/FlipIn.spec.d.ts +2 -0
  288. package/dist/types/library/entrance/test/FlipIn.spec.d.ts.map +1 -0
  289. package/dist/types/library/entrance/test/FloatIn.spec.d.ts +2 -0
  290. package/dist/types/library/entrance/test/FloatIn.spec.d.ts.map +1 -0
  291. package/dist/types/library/entrance/test/FoldIn.spec.d.ts +2 -0
  292. package/dist/types/library/entrance/test/FoldIn.spec.d.ts.map +1 -0
  293. package/dist/types/library/entrance/test/GlideIn.spec.d.ts +2 -0
  294. package/dist/types/library/entrance/test/GlideIn.spec.d.ts.map +1 -0
  295. package/dist/types/library/entrance/test/GlitchIn.spec.d.ts +2 -0
  296. package/dist/types/library/entrance/test/GlitchIn.spec.d.ts.map +1 -0
  297. package/dist/types/library/entrance/test/GrowIn.spec.d.ts +2 -0
  298. package/dist/types/library/entrance/test/GrowIn.spec.d.ts.map +1 -0
  299. package/dist/types/library/entrance/test/PunchIn.spec.d.ts +2 -0
  300. package/dist/types/library/entrance/test/PunchIn.spec.d.ts.map +1 -0
  301. package/dist/types/library/entrance/test/RevealIn.spec.d.ts +2 -0
  302. package/dist/types/library/entrance/test/RevealIn.spec.d.ts.map +1 -0
  303. package/dist/types/library/entrance/test/ShapeIn.spec.d.ts +2 -0
  304. package/dist/types/library/entrance/test/ShapeIn.spec.d.ts.map +1 -0
  305. package/dist/types/library/entrance/test/ShuttersIn.spec.d.ts +2 -0
  306. package/dist/types/library/entrance/test/ShuttersIn.spec.d.ts.map +1 -0
  307. package/dist/types/library/entrance/test/SlideIn.spec.d.ts +2 -0
  308. package/dist/types/library/entrance/test/SlideIn.spec.d.ts.map +1 -0
  309. package/dist/types/library/entrance/test/SpinIn.spec.d.ts +2 -0
  310. package/dist/types/library/entrance/test/SpinIn.spec.d.ts.map +1 -0
  311. package/dist/types/library/entrance/test/TiltIn.spec.d.ts +2 -0
  312. package/dist/types/library/entrance/test/TiltIn.spec.d.ts.map +1 -0
  313. package/dist/types/library/entrance/test/TurnIn.spec.d.ts +2 -0
  314. package/dist/types/library/entrance/test/TurnIn.spec.d.ts.map +1 -0
  315. package/dist/types/library/entrance/test/WinkIn.spec.d.ts +2 -0
  316. package/dist/types/library/entrance/test/WinkIn.spec.d.ts.map +1 -0
  317. package/dist/types/library/mouse/AiryMouse.d.ts.map +1 -1
  318. package/dist/types/library/mouse/BlobMouse.d.ts.map +1 -1
  319. package/dist/types/library/mouse/BlurMouse.d.ts.map +1 -1
  320. package/dist/types/library/mouse/BounceMouse.d.ts.map +1 -1
  321. package/dist/types/library/mouse/CustomMouse.d.ts.map +1 -1
  322. package/dist/types/library/mouse/ScaleMouse.d.ts.map +1 -1
  323. package/dist/types/library/mouse/SkewMouse.d.ts.map +1 -1
  324. package/dist/types/library/mouse/SpinMouse.d.ts.map +1 -1
  325. package/dist/types/library/mouse/SwivelMouse.d.ts.map +1 -1
  326. package/dist/types/library/mouse/Tilt3DMouse.d.ts.map +1 -1
  327. package/dist/types/library/mouse/Track3DMouse.d.ts.map +1 -1
  328. package/dist/types/library/mouse/TrackMouse.d.ts.map +1 -1
  329. package/dist/types/library/ongoing/Bounce.d.ts +24 -24
  330. package/dist/types/library/ongoing/Bounce.d.ts.map +1 -1
  331. package/dist/types/library/ongoing/Breathe.d.ts +24 -25
  332. package/dist/types/library/ongoing/Breathe.d.ts.map +1 -1
  333. package/dist/types/library/ongoing/Cross.d.ts +12 -12
  334. package/dist/types/library/ongoing/Cross.d.ts.map +1 -1
  335. package/dist/types/library/ongoing/DVD.d.ts +16 -16
  336. package/dist/types/library/ongoing/Flash.d.ts +24 -24
  337. package/dist/types/library/ongoing/Flash.d.ts.map +1 -1
  338. package/dist/types/library/ongoing/Flip.d.ts +24 -24
  339. package/dist/types/library/ongoing/Flip.d.ts.map +1 -1
  340. package/dist/types/library/ongoing/Fold.d.ts +24 -25
  341. package/dist/types/library/ongoing/Fold.d.ts.map +1 -1
  342. package/dist/types/library/ongoing/Jello.d.ts +24 -24
  343. package/dist/types/library/ongoing/Jello.d.ts.map +1 -1
  344. package/dist/types/library/ongoing/Poke.d.ts +24 -24
  345. package/dist/types/library/ongoing/Poke.d.ts.map +1 -1
  346. package/dist/types/library/ongoing/Pulse.d.ts +24 -24
  347. package/dist/types/library/ongoing/Pulse.d.ts.map +1 -1
  348. package/dist/types/library/ongoing/Rubber.d.ts +24 -24
  349. package/dist/types/library/ongoing/Rubber.d.ts.map +1 -1
  350. package/dist/types/library/ongoing/Spin.d.ts +24 -24
  351. package/dist/types/library/ongoing/Spin.d.ts.map +1 -1
  352. package/dist/types/library/ongoing/Swing.d.ts +24 -25
  353. package/dist/types/library/ongoing/Swing.d.ts.map +1 -1
  354. package/dist/types/library/ongoing/Wiggle.d.ts +24 -24
  355. package/dist/types/library/ongoing/Wiggle.d.ts.map +1 -1
  356. package/dist/types/library/ongoing/index.d.ts.map +1 -1
  357. package/dist/types/library/ongoing/test/Bounce.spec.d.ts +2 -0
  358. package/dist/types/library/ongoing/test/Bounce.spec.d.ts.map +1 -0
  359. package/dist/types/library/ongoing/test/Breathe.spec.d.ts +2 -0
  360. package/dist/types/library/ongoing/test/Breathe.spec.d.ts.map +1 -0
  361. package/dist/types/library/ongoing/test/Cross.spec.d.ts +2 -0
  362. package/dist/types/library/ongoing/test/Cross.spec.d.ts.map +1 -0
  363. package/dist/types/library/ongoing/test/DVD.spec.d.ts +2 -0
  364. package/dist/types/library/ongoing/test/DVD.spec.d.ts.map +1 -0
  365. package/dist/types/library/ongoing/test/Flash.spec.d.ts +2 -0
  366. package/dist/types/library/ongoing/test/Flash.spec.d.ts.map +1 -0
  367. package/dist/types/library/ongoing/test/Flip.spec.d.ts +2 -0
  368. package/dist/types/library/ongoing/test/Flip.spec.d.ts.map +1 -0
  369. package/dist/types/library/ongoing/test/Fold.spec.d.ts +2 -0
  370. package/dist/types/library/ongoing/test/Fold.spec.d.ts.map +1 -0
  371. package/dist/types/library/ongoing/test/Jello.spec.d.ts +2 -0
  372. package/dist/types/library/ongoing/test/Jello.spec.d.ts.map +1 -0
  373. package/dist/types/library/ongoing/test/Poke.spec.d.ts +2 -0
  374. package/dist/types/library/ongoing/test/Poke.spec.d.ts.map +1 -0
  375. package/dist/types/library/ongoing/test/Pulse.spec.d.ts +2 -0
  376. package/dist/types/library/ongoing/test/Pulse.spec.d.ts.map +1 -0
  377. package/dist/types/library/ongoing/test/Rubber.spec.d.ts +2 -0
  378. package/dist/types/library/ongoing/test/Rubber.spec.d.ts.map +1 -0
  379. package/dist/types/library/ongoing/test/Spin.spec.d.ts +2 -0
  380. package/dist/types/library/ongoing/test/Spin.spec.d.ts.map +1 -0
  381. package/dist/types/library/ongoing/test/Swing.spec.d.ts +2 -0
  382. package/dist/types/library/ongoing/test/Swing.spec.d.ts.map +1 -0
  383. package/dist/types/library/ongoing/test/Wiggle.spec.d.ts +2 -0
  384. package/dist/types/library/ongoing/test/Wiggle.spec.d.ts.map +1 -0
  385. package/dist/types/library/scroll/ArcScroll.d.ts +15 -15
  386. package/dist/types/library/scroll/ArcScroll.d.ts.map +1 -1
  387. package/dist/types/library/scroll/BlurScroll.d.ts +15 -15
  388. package/dist/types/library/scroll/BlurScroll.d.ts.map +1 -1
  389. package/dist/types/library/scroll/FadeScroll.d.ts +15 -15
  390. package/dist/types/library/scroll/FadeScroll.d.ts.map +1 -1
  391. package/dist/types/library/scroll/FlipScroll.d.ts +15 -15
  392. package/dist/types/library/scroll/FlipScroll.d.ts.map +1 -1
  393. package/dist/types/library/scroll/GrowScroll.d.ts +15 -15
  394. package/dist/types/library/scroll/GrowScroll.d.ts.map +1 -1
  395. package/dist/types/library/scroll/MoveScroll.d.ts +15 -15
  396. package/dist/types/library/scroll/MoveScroll.d.ts.map +1 -1
  397. package/dist/types/library/scroll/PanScroll.d.ts +15 -15
  398. package/dist/types/library/scroll/PanScroll.d.ts.map +1 -1
  399. package/dist/types/library/scroll/ParallaxScroll.d.ts +15 -15
  400. package/dist/types/library/scroll/ParallaxScroll.d.ts.map +1 -1
  401. package/dist/types/library/scroll/RevealScroll.d.ts +15 -15
  402. package/dist/types/library/scroll/RevealScroll.d.ts.map +1 -1
  403. package/dist/types/library/scroll/ShapeScroll.d.ts +15 -15
  404. package/dist/types/library/scroll/ShapeScroll.d.ts.map +1 -1
  405. package/dist/types/library/scroll/ShrinkScroll.d.ts +15 -15
  406. package/dist/types/library/scroll/ShrinkScroll.d.ts.map +1 -1
  407. package/dist/types/library/scroll/ShuttersScroll.d.ts +15 -15
  408. package/dist/types/library/scroll/ShuttersScroll.d.ts.map +1 -1
  409. package/dist/types/library/scroll/SkewPanScroll.d.ts +15 -15
  410. package/dist/types/library/scroll/SkewPanScroll.d.ts.map +1 -1
  411. package/dist/types/library/scroll/SlideScroll.d.ts +15 -15
  412. package/dist/types/library/scroll/SlideScroll.d.ts.map +1 -1
  413. package/dist/types/library/scroll/Spin3dScroll.d.ts +15 -15
  414. package/dist/types/library/scroll/Spin3dScroll.d.ts.map +1 -1
  415. package/dist/types/library/scroll/SpinScroll.d.ts +15 -15
  416. package/dist/types/library/scroll/SpinScroll.d.ts.map +1 -1
  417. package/dist/types/library/scroll/StretchScroll.d.ts +30 -30
  418. package/dist/types/library/scroll/StretchScroll.d.ts.map +1 -1
  419. package/dist/types/library/scroll/TiltScroll.d.ts +30 -30
  420. package/dist/types/library/scroll/TiltScroll.d.ts.map +1 -1
  421. package/dist/types/library/scroll/TurnScroll.d.ts +18 -18
  422. package/dist/types/library/scroll/TurnScroll.d.ts.map +1 -1
  423. package/dist/types/library/scroll/test/ArcScroll.spec.d.ts +2 -0
  424. package/dist/types/library/scroll/test/ArcScroll.spec.d.ts.map +1 -0
  425. package/dist/types/library/scroll/test/BlurScroll.spec.d.ts +2 -0
  426. package/dist/types/library/scroll/test/BlurScroll.spec.d.ts.map +1 -0
  427. package/dist/types/library/scroll/test/FadeScroll.spec.d.ts +2 -0
  428. package/dist/types/library/scroll/test/FadeScroll.spec.d.ts.map +1 -0
  429. package/dist/types/library/scroll/test/FlipScroll.spec.d.ts +2 -0
  430. package/dist/types/library/scroll/test/FlipScroll.spec.d.ts.map +1 -0
  431. package/dist/types/library/scroll/test/GrowScroll.spec.d.ts +2 -0
  432. package/dist/types/library/scroll/test/GrowScroll.spec.d.ts.map +1 -0
  433. package/dist/types/library/scroll/test/MoveScroll.spec.d.ts +2 -0
  434. package/dist/types/library/scroll/test/MoveScroll.spec.d.ts.map +1 -0
  435. package/dist/types/library/scroll/test/PanScroll.spec.d.ts +2 -0
  436. package/dist/types/library/scroll/test/PanScroll.spec.d.ts.map +1 -0
  437. package/dist/types/library/scroll/test/ParallaxScroll.spec.d.ts +2 -0
  438. package/dist/types/library/scroll/test/ParallaxScroll.spec.d.ts.map +1 -0
  439. package/dist/types/library/scroll/test/RevealScroll.spec.d.ts +2 -0
  440. package/dist/types/library/scroll/test/RevealScroll.spec.d.ts.map +1 -0
  441. package/dist/types/library/scroll/test/ShapeScroll.spec.d.ts +2 -0
  442. package/dist/types/library/scroll/test/ShapeScroll.spec.d.ts.map +1 -0
  443. package/dist/types/library/scroll/test/ShrinkScroll.spec.d.ts +2 -0
  444. package/dist/types/library/scroll/test/ShrinkScroll.spec.d.ts.map +1 -0
  445. package/dist/types/library/scroll/test/ShuttersScroll.spec.d.ts +2 -0
  446. package/dist/types/library/scroll/test/ShuttersScroll.spec.d.ts.map +1 -0
  447. package/dist/types/library/scroll/test/SkewPanScroll.spec.d.ts +2 -0
  448. package/dist/types/library/scroll/test/SkewPanScroll.spec.d.ts.map +1 -0
  449. package/dist/types/library/scroll/test/SlideScroll.spec.d.ts +2 -0
  450. package/dist/types/library/scroll/test/SlideScroll.spec.d.ts.map +1 -0
  451. package/dist/types/library/scroll/test/Spin3dScroll.spec.d.ts +2 -0
  452. package/dist/types/library/scroll/test/Spin3dScroll.spec.d.ts.map +1 -0
  453. package/dist/types/library/scroll/test/SpinScroll.spec.d.ts +2 -0
  454. package/dist/types/library/scroll/test/SpinScroll.spec.d.ts.map +1 -0
  455. package/dist/types/library/scroll/test/StretchScroll.spec.d.ts +2 -0
  456. package/dist/types/library/scroll/test/StretchScroll.spec.d.ts.map +1 -0
  457. package/dist/types/library/scroll/test/TiltScroll.spec.d.ts +2 -0
  458. package/dist/types/library/scroll/test/TiltScroll.spec.d.ts.map +1 -0
  459. package/dist/types/library/scroll/test/TurnScroll.spec.d.ts +2 -0
  460. package/dist/types/library/scroll/test/TurnScroll.spec.d.ts.map +1 -0
  461. package/dist/types/motion.d.ts.map +1 -1
  462. package/dist/types/types.d.ts +3 -3
  463. package/dist/types/types.d.ts.map +1 -1
  464. package/dist/types/utils.d.ts +11 -0
  465. package/dist/types/utils.d.ts.map +1 -1
  466. package/package.json +54 -74
  467. package/dist/cjs/AnimationGroup.js +0 -106
  468. package/dist/cjs/AnimationGroup.js.map +0 -1
  469. package/dist/cjs/CustomAnimation.js +0 -190
  470. package/dist/cjs/CustomAnimation.js.map +0 -1
  471. package/dist/cjs/api/common.js +0 -145
  472. package/dist/cjs/api/common.js.map +0 -1
  473. package/dist/cjs/api/cssAnimations.js +0 -58
  474. package/dist/cjs/api/cssAnimations.js.map +0 -1
  475. package/dist/cjs/api/prepare.js +0 -20
  476. package/dist/cjs/api/prepare.js.map +0 -1
  477. package/dist/cjs/api/webAnimations.js +0 -155
  478. package/dist/cjs/api/webAnimations.js.map +0 -1
  479. package/dist/cjs/easings.js +0 -272
  480. package/dist/cjs/easings.js.map +0 -1
  481. package/dist/cjs/external-types.d.js +0 -2
  482. package/dist/cjs/external-types.d.js.map +0 -1
  483. package/dist/cjs/index.js +0 -16
  484. package/dist/cjs/index.js.map +0 -1
  485. package/dist/cjs/library/backgroundScroll/BgCloseUp.js +0 -74
  486. package/dist/cjs/library/backgroundScroll/BgCloseUp.js.map +0 -1
  487. package/dist/cjs/library/backgroundScroll/BgFade.js +0 -51
  488. package/dist/cjs/library/backgroundScroll/BgFade.js.map +0 -1
  489. package/dist/cjs/library/backgroundScroll/BgFadeBack.js +0 -73
  490. package/dist/cjs/library/backgroundScroll/BgFadeBack.js.map +0 -1
  491. package/dist/cjs/library/backgroundScroll/BgFake3D.js +0 -103
  492. package/dist/cjs/library/backgroundScroll/BgFake3D.js.map +0 -1
  493. package/dist/cjs/library/backgroundScroll/BgPan.js +0 -50
  494. package/dist/cjs/library/backgroundScroll/BgPan.js.map +0 -1
  495. package/dist/cjs/library/backgroundScroll/BgParallax.js +0 -43
  496. package/dist/cjs/library/backgroundScroll/BgParallax.js.map +0 -1
  497. package/dist/cjs/library/backgroundScroll/BgPullBack.js +0 -45
  498. package/dist/cjs/library/backgroundScroll/BgPullBack.js.map +0 -1
  499. package/dist/cjs/library/backgroundScroll/BgReveal.js +0 -14
  500. package/dist/cjs/library/backgroundScroll/BgReveal.js.map +0 -1
  501. package/dist/cjs/library/backgroundScroll/BgRotate.js +0 -37
  502. package/dist/cjs/library/backgroundScroll/BgRotate.js.map +0 -1
  503. package/dist/cjs/library/backgroundScroll/BgSkew.js +0 -44
  504. package/dist/cjs/library/backgroundScroll/BgSkew.js.map +0 -1
  505. package/dist/cjs/library/backgroundScroll/BgZoom.js +0 -125
  506. package/dist/cjs/library/backgroundScroll/BgZoom.js.map +0 -1
  507. package/dist/cjs/library/backgroundScroll/ImageParallax.js +0 -58
  508. package/dist/cjs/library/backgroundScroll/ImageParallax.js.map +0 -1
  509. package/dist/cjs/library/backgroundScroll/index.js +0 -32
  510. package/dist/cjs/library/backgroundScroll/index.js.map +0 -1
  511. package/dist/cjs/library/backgroundScroll/test/testUtils.js +0 -8
  512. package/dist/cjs/library/backgroundScroll/test/testUtils.js.map +0 -1
  513. package/dist/cjs/library/backgroundScroll/utils.js +0 -37
  514. package/dist/cjs/library/backgroundScroll/utils.js.map +0 -1
  515. package/dist/cjs/library/entrance/ArcIn.js +0 -110
  516. package/dist/cjs/library/entrance/ArcIn.js.map +0 -1
  517. package/dist/cjs/library/entrance/BlurIn.js +0 -56
  518. package/dist/cjs/library/entrance/BlurIn.js.map +0 -1
  519. package/dist/cjs/library/entrance/BounceIn.js +0 -143
  520. package/dist/cjs/library/entrance/BounceIn.js.map +0 -1
  521. package/dist/cjs/library/entrance/CircleIn.js +0 -75
  522. package/dist/cjs/library/entrance/CircleIn.js.map +0 -1
  523. package/dist/cjs/library/entrance/CurveIn.js +0 -80
  524. package/dist/cjs/library/entrance/CurveIn.js.map +0 -1
  525. package/dist/cjs/library/entrance/DropIn.js +0 -64
  526. package/dist/cjs/library/entrance/DropIn.js.map +0 -1
  527. package/dist/cjs/library/entrance/ExpandIn.js +0 -121
  528. package/dist/cjs/library/entrance/ExpandIn.js.map +0 -1
  529. package/dist/cjs/library/entrance/FadeIn.js +0 -27
  530. package/dist/cjs/library/entrance/FadeIn.js.map +0 -1
  531. package/dist/cjs/library/entrance/FlipIn.js +0 -107
  532. package/dist/cjs/library/entrance/FlipIn.js.map +0 -1
  533. package/dist/cjs/library/entrance/FloatIn.js +0 -67
  534. package/dist/cjs/library/entrance/FloatIn.js.map +0 -1
  535. package/dist/cjs/library/entrance/FoldIn.js +0 -134
  536. package/dist/cjs/library/entrance/FoldIn.js.map +0 -1
  537. package/dist/cjs/library/entrance/GlideIn.js +0 -89
  538. package/dist/cjs/library/entrance/GlideIn.js.map +0 -1
  539. package/dist/cjs/library/entrance/GlitchIn.js +0 -29
  540. package/dist/cjs/library/entrance/GlitchIn.js.map +0 -1
  541. package/dist/cjs/library/entrance/GrowIn.js +0 -66
  542. package/dist/cjs/library/entrance/GrowIn.js.map +0 -1
  543. package/dist/cjs/library/entrance/PunchIn.js +0 -178
  544. package/dist/cjs/library/entrance/PunchIn.js.map +0 -1
  545. package/dist/cjs/library/entrance/RevealIn.js +0 -72
  546. package/dist/cjs/library/entrance/RevealIn.js.map +0 -1
  547. package/dist/cjs/library/entrance/ShapeIn.js +0 -75
  548. package/dist/cjs/library/entrance/ShapeIn.js.map +0 -1
  549. package/dist/cjs/library/entrance/ShuttersIn.js +0 -48
  550. package/dist/cjs/library/entrance/ShuttersIn.js.map +0 -1
  551. package/dist/cjs/library/entrance/SlideIn.js +0 -140
  552. package/dist/cjs/library/entrance/SlideIn.js.map +0 -1
  553. package/dist/cjs/library/entrance/SpinIn.js +0 -65
  554. package/dist/cjs/library/entrance/SpinIn.js.map +0 -1
  555. package/dist/cjs/library/entrance/TiltIn.js +0 -102
  556. package/dist/cjs/library/entrance/TiltIn.js.map +0 -1
  557. package/dist/cjs/library/entrance/TurnIn.js +0 -85
  558. package/dist/cjs/library/entrance/TurnIn.js.map +0 -1
  559. package/dist/cjs/library/entrance/WinkIn.js +0 -115
  560. package/dist/cjs/library/entrance/WinkIn.js.map +0 -1
  561. package/dist/cjs/library/entrance/index.js +0 -55
  562. package/dist/cjs/library/entrance/index.js.map +0 -1
  563. package/dist/cjs/library/entrance/test/testUtils.js +0 -8
  564. package/dist/cjs/library/entrance/test/testUtils.js.map +0 -1
  565. package/dist/cjs/library/mouse/AiryMouse.js +0 -76
  566. package/dist/cjs/library/mouse/AiryMouse.js.map +0 -1
  567. package/dist/cjs/library/mouse/BlobMouse.js +0 -70
  568. package/dist/cjs/library/mouse/BlobMouse.js.map +0 -1
  569. package/dist/cjs/library/mouse/BlurMouse.js +0 -94
  570. package/dist/cjs/library/mouse/BlurMouse.js.map +0 -1
  571. package/dist/cjs/library/mouse/BounceMouse.js +0 -26
  572. package/dist/cjs/library/mouse/BounceMouse.js.map +0 -1
  573. package/dist/cjs/library/mouse/CustomMouse.js +0 -65
  574. package/dist/cjs/library/mouse/CustomMouse.js.map +0 -1
  575. package/dist/cjs/library/mouse/ScaleMouse.js +0 -98
  576. package/dist/cjs/library/mouse/ScaleMouse.js.map +0 -1
  577. package/dist/cjs/library/mouse/SkewMouse.js +0 -92
  578. package/dist/cjs/library/mouse/SkewMouse.js.map +0 -1
  579. package/dist/cjs/library/mouse/SpinMouse.js +0 -41
  580. package/dist/cjs/library/mouse/SpinMouse.js.map +0 -1
  581. package/dist/cjs/library/mouse/SwivelMouse.js +0 -85
  582. package/dist/cjs/library/mouse/SwivelMouse.js.map +0 -1
  583. package/dist/cjs/library/mouse/Tilt3DMouse.js +0 -65
  584. package/dist/cjs/library/mouse/Tilt3DMouse.js.map +0 -1
  585. package/dist/cjs/library/mouse/Track3DMouse.js +0 -87
  586. package/dist/cjs/library/mouse/Track3DMouse.js.map +0 -1
  587. package/dist/cjs/library/mouse/TrackMouse.js +0 -65
  588. package/dist/cjs/library/mouse/TrackMouse.js.map +0 -1
  589. package/dist/cjs/library/mouse/index.js +0 -32
  590. package/dist/cjs/library/mouse/index.js.map +0 -1
  591. package/dist/cjs/library/ongoing/Blink.js +0 -120
  592. package/dist/cjs/library/ongoing/Blink.js.map +0 -1
  593. package/dist/cjs/library/ongoing/Bounce.js +0 -92
  594. package/dist/cjs/library/ongoing/Bounce.js.map +0 -1
  595. package/dist/cjs/library/ongoing/Breathe.js +0 -124
  596. package/dist/cjs/library/ongoing/Breathe.js.map +0 -1
  597. package/dist/cjs/library/ongoing/Cross.js +0 -262
  598. package/dist/cjs/library/ongoing/Cross.js.map +0 -1
  599. package/dist/cjs/library/ongoing/DVD.js +0 -84
  600. package/dist/cjs/library/ongoing/DVD.js.map +0 -1
  601. package/dist/cjs/library/ongoing/Flash.js +0 -45
  602. package/dist/cjs/library/ongoing/Flash.js.map +0 -1
  603. package/dist/cjs/library/ongoing/Flip.js +0 -67
  604. package/dist/cjs/library/ongoing/Flip.js.map +0 -1
  605. package/dist/cjs/library/ongoing/Fold.js +0 -167
  606. package/dist/cjs/library/ongoing/Fold.js.map +0 -1
  607. package/dist/cjs/library/ongoing/Jello.js +0 -72
  608. package/dist/cjs/library/ongoing/Jello.js.map +0 -1
  609. package/dist/cjs/library/ongoing/Poke.js +0 -102
  610. package/dist/cjs/library/ongoing/Poke.js.map +0 -1
  611. package/dist/cjs/library/ongoing/Pulse.js +0 -75
  612. package/dist/cjs/library/ongoing/Pulse.js.map +0 -1
  613. package/dist/cjs/library/ongoing/Rubber.js +0 -92
  614. package/dist/cjs/library/ongoing/Rubber.js.map +0 -1
  615. package/dist/cjs/library/ongoing/Spin.js +0 -55
  616. package/dist/cjs/library/ongoing/Spin.js.map +0 -1
  617. package/dist/cjs/library/ongoing/Swing.js +0 -130
  618. package/dist/cjs/library/ongoing/Swing.js.map +0 -1
  619. package/dist/cjs/library/ongoing/Wiggle.js +0 -88
  620. package/dist/cjs/library/ongoing/Wiggle.js.map +0 -1
  621. package/dist/cjs/library/ongoing/index.js +0 -41
  622. package/dist/cjs/library/ongoing/index.js.map +0 -1
  623. package/dist/cjs/library/ongoing/test/testUtils.js +0 -8
  624. package/dist/cjs/library/ongoing/test/testUtils.js.map +0 -1
  625. package/dist/cjs/library/scroll/ArcScroll.js +0 -58
  626. package/dist/cjs/library/scroll/ArcScroll.js.map +0 -1
  627. package/dist/cjs/library/scroll/BlurScroll.js +0 -43
  628. package/dist/cjs/library/scroll/BlurScroll.js.map +0 -1
  629. package/dist/cjs/library/scroll/FadeScroll.js +0 -36
  630. package/dist/cjs/library/scroll/FadeScroll.js.map +0 -1
  631. package/dist/cjs/library/scroll/FlipScroll.js +0 -50
  632. package/dist/cjs/library/scroll/FlipScroll.js.map +0 -1
  633. package/dist/cjs/library/scroll/GrowScroll.js +0 -160
  634. package/dist/cjs/library/scroll/GrowScroll.js.map +0 -1
  635. package/dist/cjs/library/scroll/MoveScroll.js +0 -123
  636. package/dist/cjs/library/scroll/MoveScroll.js.map +0 -1
  637. package/dist/cjs/library/scroll/PanScroll.js +0 -77
  638. package/dist/cjs/library/scroll/PanScroll.js.map +0 -1
  639. package/dist/cjs/library/scroll/ParallaxScroll.js +0 -56
  640. package/dist/cjs/library/scroll/ParallaxScroll.js.map +0 -1
  641. package/dist/cjs/library/scroll/RevealScroll.js +0 -92
  642. package/dist/cjs/library/scroll/RevealScroll.js.map +0 -1
  643. package/dist/cjs/library/scroll/ShapeScroll.js +0 -114
  644. package/dist/cjs/library/scroll/ShapeScroll.js.map +0 -1
  645. package/dist/cjs/library/scroll/ShrinkScroll.js +0 -157
  646. package/dist/cjs/library/scroll/ShrinkScroll.js.map +0 -1
  647. package/dist/cjs/library/scroll/ShuttersScroll.js +0 -67
  648. package/dist/cjs/library/scroll/ShuttersScroll.js.map +0 -1
  649. package/dist/cjs/library/scroll/SkewPanScroll.js +0 -113
  650. package/dist/cjs/library/scroll/SkewPanScroll.js.map +0 -1
  651. package/dist/cjs/library/scroll/SlideScroll.js +0 -115
  652. package/dist/cjs/library/scroll/SlideScroll.js.map +0 -1
  653. package/dist/cjs/library/scroll/Spin3dScroll.js +0 -119
  654. package/dist/cjs/library/scroll/Spin3dScroll.js.map +0 -1
  655. package/dist/cjs/library/scroll/SpinScroll.js +0 -51
  656. package/dist/cjs/library/scroll/SpinScroll.js.map +0 -1
  657. package/dist/cjs/library/scroll/StretchScroll.js +0 -105
  658. package/dist/cjs/library/scroll/StretchScroll.js.map +0 -1
  659. package/dist/cjs/library/scroll/TiltScroll.js +0 -129
  660. package/dist/cjs/library/scroll/TiltScroll.js.map +0 -1
  661. package/dist/cjs/library/scroll/TurnScroll.js +0 -125
  662. package/dist/cjs/library/scroll/TurnScroll.js.map +0 -1
  663. package/dist/cjs/library/scroll/index.js +0 -46
  664. package/dist/cjs/library/scroll/index.js.map +0 -1
  665. package/dist/cjs/library/scroll/test/testUtils.js +0 -8
  666. package/dist/cjs/library/scroll/test/testUtils.js.map +0 -1
  667. package/dist/cjs/playground/animationMotionBgScroll.stories.js +0 -369
  668. package/dist/cjs/playground/animationMotionBgScroll.stories.js.map +0 -1
  669. package/dist/cjs/playground/animationsMotion.stories.js +0 -199
  670. package/dist/cjs/playground/animationsMotion.stories.js.map +0 -1
  671. package/dist/cjs/playground/animationsMotionMouse.stories.js +0 -266
  672. package/dist/cjs/playground/animationsMotionMouse.stories.js.map +0 -1
  673. package/dist/cjs/playground/animationsMotionOngoing.stories.js +0 -195
  674. package/dist/cjs/playground/animationsMotionOngoing.stories.js.map +0 -1
  675. package/dist/cjs/playground/animationsMotionScroll.stories.js +0 -270
  676. package/dist/cjs/playground/animationsMotionScroll.stories.js.map +0 -1
  677. package/dist/cjs/playground/controls.js +0 -334
  678. package/dist/cjs/playground/controls.js.map +0 -1
  679. package/dist/cjs/playground/mouse-parallax-components/plastic.jpeg +0 -0
  680. package/dist/cjs/playground/mouse-parallax-components/vector.svg +0 -19
  681. package/dist/cjs/playground/mouseComponent.js +0 -114
  682. package/dist/cjs/playground/mouseComponent.js.map +0 -1
  683. package/dist/cjs/playground/playground-common.js +0 -84
  684. package/dist/cjs/playground/playground-common.js.map +0 -1
  685. package/dist/cjs/playground/playground.module.scss +0 -381
  686. package/dist/cjs/test-types.d.js +0 -2
  687. package/dist/cjs/test-types.d.js.map +0 -1
  688. package/dist/cjs/types.js +0 -2
  689. package/dist/cjs/types.js.map +0 -1
  690. package/dist/cjs/utils.js +0 -305
  691. package/dist/cjs/utils.js.map +0 -1
  692. package/dist/esm/AnimationGroup.js +0 -100
  693. package/dist/esm/AnimationGroup.js.map +0 -1
  694. package/dist/esm/CustomAnimation.js +0 -184
  695. package/dist/esm/CustomAnimation.js.map +0 -1
  696. package/dist/esm/api/common.js +0 -132
  697. package/dist/esm/api/common.js.map +0 -1
  698. package/dist/esm/api/cssAnimations.js +0 -53
  699. package/dist/esm/api/cssAnimations.js.map +0 -1
  700. package/dist/esm/api/prepare.js +0 -16
  701. package/dist/esm/api/prepare.js.map +0 -1
  702. package/dist/esm/api/webAnimations.js +0 -152
  703. package/dist/esm/api/webAnimations.js.map +0 -1
  704. package/dist/esm/easings.js +0 -248
  705. package/dist/esm/easings.js.map +0 -1
  706. package/dist/esm/external-types.d.js +0 -2
  707. package/dist/esm/external-types.d.js.map +0 -1
  708. package/dist/esm/index.js.map +0 -1
  709. package/dist/esm/library/backgroundScroll/BgCloseUp.js +0 -70
  710. package/dist/esm/library/backgroundScroll/BgCloseUp.js.map +0 -1
  711. package/dist/esm/library/backgroundScroll/BgFade.js +0 -47
  712. package/dist/esm/library/backgroundScroll/BgFade.js.map +0 -1
  713. package/dist/esm/library/backgroundScroll/BgFadeBack.js +0 -69
  714. package/dist/esm/library/backgroundScroll/BgFadeBack.js.map +0 -1
  715. package/dist/esm/library/backgroundScroll/BgFake3D.js +0 -99
  716. package/dist/esm/library/backgroundScroll/BgFake3D.js.map +0 -1
  717. package/dist/esm/library/backgroundScroll/BgPan.js +0 -46
  718. package/dist/esm/library/backgroundScroll/BgPan.js.map +0 -1
  719. package/dist/esm/library/backgroundScroll/BgParallax.js +0 -39
  720. package/dist/esm/library/backgroundScroll/BgParallax.js.map +0 -1
  721. package/dist/esm/library/backgroundScroll/BgPullBack.js +0 -41
  722. package/dist/esm/library/backgroundScroll/BgPullBack.js.map +0 -1
  723. package/dist/esm/library/backgroundScroll/BgReveal.js +0 -10
  724. package/dist/esm/library/backgroundScroll/BgReveal.js.map +0 -1
  725. package/dist/esm/library/backgroundScroll/BgRotate.js +0 -33
  726. package/dist/esm/library/backgroundScroll/BgRotate.js.map +0 -1
  727. package/dist/esm/library/backgroundScroll/BgSkew.js +0 -40
  728. package/dist/esm/library/backgroundScroll/BgSkew.js.map +0 -1
  729. package/dist/esm/library/backgroundScroll/BgZoom.js +0 -121
  730. package/dist/esm/library/backgroundScroll/BgZoom.js.map +0 -1
  731. package/dist/esm/library/backgroundScroll/ImageParallax.js +0 -54
  732. package/dist/esm/library/backgroundScroll/ImageParallax.js.map +0 -1
  733. package/dist/esm/library/backgroundScroll/index.js.map +0 -1
  734. package/dist/esm/library/backgroundScroll/test/testUtils.js +0 -4
  735. package/dist/esm/library/backgroundScroll/test/testUtils.js.map +0 -1
  736. package/dist/esm/library/backgroundScroll/utils.js +0 -31
  737. package/dist/esm/library/backgroundScroll/utils.js.map +0 -1
  738. package/dist/esm/library/entrance/ArcIn.js +0 -106
  739. package/dist/esm/library/entrance/ArcIn.js.map +0 -1
  740. package/dist/esm/library/entrance/BlurIn.js +0 -53
  741. package/dist/esm/library/entrance/BlurIn.js.map +0 -1
  742. package/dist/esm/library/entrance/BounceIn.js +0 -143
  743. package/dist/esm/library/entrance/BounceIn.js.map +0 -1
  744. package/dist/esm/library/entrance/CircleIn.js +0 -71
  745. package/dist/esm/library/entrance/CircleIn.js.map +0 -1
  746. package/dist/esm/library/entrance/CurveIn.js +0 -76
  747. package/dist/esm/library/entrance/CurveIn.js.map +0 -1
  748. package/dist/esm/library/entrance/DropIn.js +0 -61
  749. package/dist/esm/library/entrance/DropIn.js.map +0 -1
  750. package/dist/esm/library/entrance/ExpandIn.js +0 -117
  751. package/dist/esm/library/entrance/ExpandIn.js.map +0 -1
  752. package/dist/esm/library/entrance/FadeIn.js +0 -21
  753. package/dist/esm/library/entrance/FadeIn.js.map +0 -1
  754. package/dist/esm/library/entrance/FlipIn.js +0 -100
  755. package/dist/esm/library/entrance/FlipIn.js.map +0 -1
  756. package/dist/esm/library/entrance/FloatIn.js +0 -64
  757. package/dist/esm/library/entrance/FloatIn.js.map +0 -1
  758. package/dist/esm/library/entrance/FoldIn.js +0 -127
  759. package/dist/esm/library/entrance/FoldIn.js.map +0 -1
  760. package/dist/esm/library/entrance/GlideIn.js +0 -85
  761. package/dist/esm/library/entrance/GlideIn.js.map +0 -1
  762. package/dist/esm/library/entrance/GlitchIn.js +0 -22
  763. package/dist/esm/library/entrance/GlitchIn.js.map +0 -1
  764. package/dist/esm/library/entrance/GrowIn.js +0 -63
  765. package/dist/esm/library/entrance/GrowIn.js.map +0 -1
  766. package/dist/esm/library/entrance/PunchIn.js +0 -175
  767. package/dist/esm/library/entrance/PunchIn.js.map +0 -1
  768. package/dist/esm/library/entrance/RevealIn.js +0 -65
  769. package/dist/esm/library/entrance/RevealIn.js.map +0 -1
  770. package/dist/esm/library/entrance/ShapeIn.js +0 -72
  771. package/dist/esm/library/entrance/ShapeIn.js.map +0 -1
  772. package/dist/esm/library/entrance/ShuttersIn.js +0 -45
  773. package/dist/esm/library/entrance/ShuttersIn.js.map +0 -1
  774. package/dist/esm/library/entrance/SlideIn.js +0 -133
  775. package/dist/esm/library/entrance/SlideIn.js.map +0 -1
  776. package/dist/esm/library/entrance/SpinIn.js +0 -62
  777. package/dist/esm/library/entrance/SpinIn.js.map +0 -1
  778. package/dist/esm/library/entrance/TiltIn.js +0 -98
  779. package/dist/esm/library/entrance/TiltIn.js.map +0 -1
  780. package/dist/esm/library/entrance/TurnIn.js +0 -82
  781. package/dist/esm/library/entrance/TurnIn.js.map +0 -1
  782. package/dist/esm/library/entrance/WinkIn.js +0 -108
  783. package/dist/esm/library/entrance/WinkIn.js.map +0 -1
  784. package/dist/esm/library/entrance/index.js.map +0 -1
  785. package/dist/esm/library/entrance/test/testUtils.js +0 -4
  786. package/dist/esm/library/entrance/test/testUtils.js.map +0 -1
  787. package/dist/esm/library/mouse/AiryMouse.js +0 -73
  788. package/dist/esm/library/mouse/AiryMouse.js.map +0 -1
  789. package/dist/esm/library/mouse/BlobMouse.js +0 -67
  790. package/dist/esm/library/mouse/BlobMouse.js.map +0 -1
  791. package/dist/esm/library/mouse/BlurMouse.js +0 -91
  792. package/dist/esm/library/mouse/BlurMouse.js.map +0 -1
  793. package/dist/esm/library/mouse/BounceMouse.js +0 -21
  794. package/dist/esm/library/mouse/BounceMouse.js.map +0 -1
  795. package/dist/esm/library/mouse/CustomMouse.js +0 -59
  796. package/dist/esm/library/mouse/CustomMouse.js.map +0 -1
  797. package/dist/esm/library/mouse/ScaleMouse.js +0 -95
  798. package/dist/esm/library/mouse/ScaleMouse.js.map +0 -1
  799. package/dist/esm/library/mouse/SkewMouse.js +0 -89
  800. package/dist/esm/library/mouse/SkewMouse.js.map +0 -1
  801. package/dist/esm/library/mouse/SpinMouse.js +0 -38
  802. package/dist/esm/library/mouse/SpinMouse.js.map +0 -1
  803. package/dist/esm/library/mouse/SwivelMouse.js +0 -82
  804. package/dist/esm/library/mouse/SwivelMouse.js.map +0 -1
  805. package/dist/esm/library/mouse/Tilt3DMouse.js +0 -62
  806. package/dist/esm/library/mouse/Tilt3DMouse.js.map +0 -1
  807. package/dist/esm/library/mouse/Track3DMouse.js +0 -84
  808. package/dist/esm/library/mouse/Track3DMouse.js.map +0 -1
  809. package/dist/esm/library/mouse/TrackMouse.js +0 -62
  810. package/dist/esm/library/mouse/TrackMouse.js.map +0 -1
  811. package/dist/esm/library/mouse/index.js.map +0 -1
  812. package/dist/esm/library/ongoing/Blink.js +0 -115
  813. package/dist/esm/library/ongoing/Blink.js.map +0 -1
  814. package/dist/esm/library/ongoing/Bounce.js +0 -92
  815. package/dist/esm/library/ongoing/Bounce.js.map +0 -1
  816. package/dist/esm/library/ongoing/Breathe.js +0 -122
  817. package/dist/esm/library/ongoing/Breathe.js.map +0 -1
  818. package/dist/esm/library/ongoing/Cross.js +0 -273
  819. package/dist/esm/library/ongoing/Cross.js.map +0 -1
  820. package/dist/esm/library/ongoing/DVD.js +0 -79
  821. package/dist/esm/library/ongoing/DVD.js.map +0 -1
  822. package/dist/esm/library/ongoing/Flash.js +0 -42
  823. package/dist/esm/library/ongoing/Flash.js.map +0 -1
  824. package/dist/esm/library/ongoing/Flip.js +0 -64
  825. package/dist/esm/library/ongoing/Flip.js.map +0 -1
  826. package/dist/esm/library/ongoing/Fold.js +0 -165
  827. package/dist/esm/library/ongoing/Fold.js.map +0 -1
  828. package/dist/esm/library/ongoing/Jello.js +0 -70
  829. package/dist/esm/library/ongoing/Jello.js.map +0 -1
  830. package/dist/esm/library/ongoing/Poke.js +0 -100
  831. package/dist/esm/library/ongoing/Poke.js.map +0 -1
  832. package/dist/esm/library/ongoing/Pulse.js +0 -73
  833. package/dist/esm/library/ongoing/Pulse.js.map +0 -1
  834. package/dist/esm/library/ongoing/Rubber.js +0 -90
  835. package/dist/esm/library/ongoing/Rubber.js.map +0 -1
  836. package/dist/esm/library/ongoing/Spin.js +0 -52
  837. package/dist/esm/library/ongoing/Spin.js.map +0 -1
  838. package/dist/esm/library/ongoing/Swing.js +0 -128
  839. package/dist/esm/library/ongoing/Swing.js.map +0 -1
  840. package/dist/esm/library/ongoing/Wiggle.js +0 -86
  841. package/dist/esm/library/ongoing/Wiggle.js.map +0 -1
  842. package/dist/esm/library/ongoing/index.js.map +0 -1
  843. package/dist/esm/library/ongoing/test/testUtils.js +0 -4
  844. package/dist/esm/library/ongoing/test/testUtils.js.map +0 -1
  845. package/dist/esm/library/scroll/ArcScroll.js +0 -54
  846. package/dist/esm/library/scroll/ArcScroll.js.map +0 -1
  847. package/dist/esm/library/scroll/BlurScroll.js +0 -39
  848. package/dist/esm/library/scroll/BlurScroll.js.map +0 -1
  849. package/dist/esm/library/scroll/FadeScroll.js +0 -32
  850. package/dist/esm/library/scroll/FadeScroll.js.map +0 -1
  851. package/dist/esm/library/scroll/FlipScroll.js +0 -46
  852. package/dist/esm/library/scroll/FlipScroll.js.map +0 -1
  853. package/dist/esm/library/scroll/GrowScroll.js +0 -157
  854. package/dist/esm/library/scroll/GrowScroll.js.map +0 -1
  855. package/dist/esm/library/scroll/MoveScroll.js +0 -120
  856. package/dist/esm/library/scroll/MoveScroll.js.map +0 -1
  857. package/dist/esm/library/scroll/PanScroll.js +0 -73
  858. package/dist/esm/library/scroll/PanScroll.js.map +0 -1
  859. package/dist/esm/library/scroll/ParallaxScroll.js +0 -53
  860. package/dist/esm/library/scroll/ParallaxScroll.js.map +0 -1
  861. package/dist/esm/library/scroll/RevealScroll.js +0 -88
  862. package/dist/esm/library/scroll/RevealScroll.js.map +0 -1
  863. package/dist/esm/library/scroll/ShapeScroll.js +0 -110
  864. package/dist/esm/library/scroll/ShapeScroll.js.map +0 -1
  865. package/dist/esm/library/scroll/ShrinkScroll.js +0 -154
  866. package/dist/esm/library/scroll/ShrinkScroll.js.map +0 -1
  867. package/dist/esm/library/scroll/ShuttersScroll.js +0 -63
  868. package/dist/esm/library/scroll/ShuttersScroll.js.map +0 -1
  869. package/dist/esm/library/scroll/SkewPanScroll.js +0 -109
  870. package/dist/esm/library/scroll/SkewPanScroll.js.map +0 -1
  871. package/dist/esm/library/scroll/SlideScroll.js +0 -111
  872. package/dist/esm/library/scroll/SlideScroll.js.map +0 -1
  873. package/dist/esm/library/scroll/Spin3dScroll.js +0 -116
  874. package/dist/esm/library/scroll/Spin3dScroll.js.map +0 -1
  875. package/dist/esm/library/scroll/SpinScroll.js +0 -47
  876. package/dist/esm/library/scroll/SpinScroll.js.map +0 -1
  877. package/dist/esm/library/scroll/StretchScroll.js +0 -101
  878. package/dist/esm/library/scroll/StretchScroll.js.map +0 -1
  879. package/dist/esm/library/scroll/TiltScroll.js +0 -126
  880. package/dist/esm/library/scroll/TiltScroll.js.map +0 -1
  881. package/dist/esm/library/scroll/TurnScroll.js +0 -121
  882. package/dist/esm/library/scroll/TurnScroll.js.map +0 -1
  883. package/dist/esm/library/scroll/index.js.map +0 -1
  884. package/dist/esm/library/scroll/test/testUtils.js +0 -4
  885. package/dist/esm/library/scroll/test/testUtils.js.map +0 -1
  886. package/dist/esm/motion.js +0 -142
  887. package/dist/esm/motion.js.map +0 -1
  888. package/dist/esm/playground/animationMotionBgScroll.stories.js +0 -284
  889. package/dist/esm/playground/animationMotionBgScroll.stories.js.map +0 -1
  890. package/dist/esm/playground/animationsMotion.stories.js +0 -132
  891. package/dist/esm/playground/animationsMotion.stories.js.map +0 -1
  892. package/dist/esm/playground/animationsMotionMouse.stories.js +0 -187
  893. package/dist/esm/playground/animationsMotionMouse.stories.js.map +0 -1
  894. package/dist/esm/playground/animationsMotionOngoing.stories.js +0 -128
  895. package/dist/esm/playground/animationsMotionOngoing.stories.js.map +0 -1
  896. package/dist/esm/playground/animationsMotionScroll.stories.js +0 -198
  897. package/dist/esm/playground/animationsMotionScroll.stories.js.map +0 -1
  898. package/dist/esm/playground/controls.js +0 -168
  899. package/dist/esm/playground/controls.js.map +0 -1
  900. package/dist/esm/playground/mouse-parallax-components/plastic.jpeg +0 -0
  901. package/dist/esm/playground/mouse-parallax-components/vector.svg +0 -19
  902. package/dist/esm/playground/mouseComponent.js +0 -61
  903. package/dist/esm/playground/mouseComponent.js.map +0 -1
  904. package/dist/esm/playground/playground-common.js +0 -91
  905. package/dist/esm/playground/playground-common.js.map +0 -1
  906. package/dist/esm/playground/playground.module.scss +0 -381
  907. package/dist/esm/test-types.d.js +0 -2
  908. package/dist/esm/test-types.d.js.map +0 -1
  909. package/dist/esm/types.js +0 -2
  910. package/dist/esm/types.js.map +0 -1
  911. package/dist/esm/utils.js +0 -332
  912. package/dist/esm/utils.js.map +0 -1
  913. package/dist/types/library/ongoing/Blink.d.ts +0 -19
  914. package/dist/types/library/ongoing/Blink.d.ts.map +0 -1
  915. package/dist/types/playground/animationMotionBgScroll.stories.d.ts +0 -6
  916. package/dist/types/playground/animationMotionBgScroll.stories.d.ts.map +0 -1
  917. package/dist/types/playground/animationsMotion.stories.d.ts +0 -6
  918. package/dist/types/playground/animationsMotion.stories.d.ts.map +0 -1
  919. package/dist/types/playground/animationsMotionMouse.stories.d.ts +0 -6
  920. package/dist/types/playground/animationsMotionMouse.stories.d.ts.map +0 -1
  921. package/dist/types/playground/animationsMotionOngoing.stories.d.ts +0 -6
  922. package/dist/types/playground/animationsMotionOngoing.stories.d.ts.map +0 -1
  923. package/dist/types/playground/animationsMotionScroll.stories.d.ts +0 -6
  924. package/dist/types/playground/animationsMotionScroll.stories.d.ts.map +0 -1
  925. package/dist/types/playground/controls.d.ts +0 -53
  926. package/dist/types/playground/controls.d.ts.map +0 -1
  927. package/dist/types/playground/mouseComponent.d.ts +0 -10
  928. package/dist/types/playground/mouseComponent.d.ts.map +0 -1
  929. package/dist/types/playground/playground-common.d.ts +0 -34
  930. package/dist/types/playground/playground-common.d.ts.map +0 -1
@@ -0,0 +1 @@
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]}