@wix/motion 1.665.0 → 2.0.0-rc.3

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 (676) 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/motion.js +749 -0
  5. package/dist/es/motion.js.map +1 -0
  6. package/dist/tsconfig.build.tsbuildinfo +1 -0
  7. package/dist/types/AnimationGroup.d.ts.map +1 -1
  8. package/dist/types/CustomAnimation.d.ts +2 -2
  9. package/dist/types/CustomAnimation.d.ts.map +1 -1
  10. package/dist/types/api/common.d.ts +111 -111
  11. package/dist/types/api/common.d.ts.map +1 -1
  12. package/dist/types/api/cssAnimations.d.ts.map +1 -1
  13. package/dist/types/api/prepare.d.ts.map +1 -1
  14. package/dist/types/api/registry.d.ts +4 -0
  15. package/dist/types/api/registry.d.ts.map +1 -0
  16. package/dist/types/api/webAnimations.d.ts.map +1 -1
  17. package/dist/types/easings.d.ts.map +1 -1
  18. package/dist/types/index.d.ts +3 -0
  19. package/dist/types/index.d.ts.map +1 -1
  20. package/dist/types/motion.d.ts +1 -1
  21. package/dist/types/motion.d.ts.map +1 -1
  22. package/dist/types/types.d.ts +27 -400
  23. package/dist/types/types.d.ts.map +1 -1
  24. package/dist/types/utils.d.ts +0 -71
  25. package/dist/types/utils.d.ts.map +1 -1
  26. package/package.json +54 -74
  27. package/dist/cjs/AnimationGroup.js +0 -106
  28. package/dist/cjs/AnimationGroup.js.map +0 -1
  29. package/dist/cjs/CustomAnimation.js +0 -190
  30. package/dist/cjs/CustomAnimation.js.map +0 -1
  31. package/dist/cjs/api/common.js +0 -145
  32. package/dist/cjs/api/common.js.map +0 -1
  33. package/dist/cjs/api/cssAnimations.js +0 -58
  34. package/dist/cjs/api/cssAnimations.js.map +0 -1
  35. package/dist/cjs/api/prepare.js +0 -20
  36. package/dist/cjs/api/prepare.js.map +0 -1
  37. package/dist/cjs/api/webAnimations.js +0 -155
  38. package/dist/cjs/api/webAnimations.js.map +0 -1
  39. package/dist/cjs/easings.js +0 -272
  40. package/dist/cjs/easings.js.map +0 -1
  41. package/dist/cjs/external-types.d.js +0 -2
  42. package/dist/cjs/external-types.d.js.map +0 -1
  43. package/dist/cjs/index.js +0 -16
  44. package/dist/cjs/index.js.map +0 -1
  45. package/dist/cjs/library/backgroundScroll/BgCloseUp.js +0 -95
  46. package/dist/cjs/library/backgroundScroll/BgCloseUp.js.map +0 -1
  47. package/dist/cjs/library/backgroundScroll/BgFade.js +0 -68
  48. package/dist/cjs/library/backgroundScroll/BgFade.js.map +0 -1
  49. package/dist/cjs/library/backgroundScroll/BgFadeBack.js +0 -94
  50. package/dist/cjs/library/backgroundScroll/BgFadeBack.js.map +0 -1
  51. package/dist/cjs/library/backgroundScroll/BgFake3D.js +0 -131
  52. package/dist/cjs/library/backgroundScroll/BgFake3D.js.map +0 -1
  53. package/dist/cjs/library/backgroundScroll/BgPan.js +0 -64
  54. package/dist/cjs/library/backgroundScroll/BgPan.js.map +0 -1
  55. package/dist/cjs/library/backgroundScroll/BgParallax.js +0 -62
  56. package/dist/cjs/library/backgroundScroll/BgParallax.js.map +0 -1
  57. package/dist/cjs/library/backgroundScroll/BgPullBack.js +0 -66
  58. package/dist/cjs/library/backgroundScroll/BgPullBack.js.map +0 -1
  59. package/dist/cjs/library/backgroundScroll/BgReveal.js +0 -28
  60. package/dist/cjs/library/backgroundScroll/BgReveal.js.map +0 -1
  61. package/dist/cjs/library/backgroundScroll/BgRotate.js +0 -51
  62. package/dist/cjs/library/backgroundScroll/BgRotate.js.map +0 -1
  63. package/dist/cjs/library/backgroundScroll/BgSkew.js +0 -63
  64. package/dist/cjs/library/backgroundScroll/BgSkew.js.map +0 -1
  65. package/dist/cjs/library/backgroundScroll/BgZoom.js +0 -163
  66. package/dist/cjs/library/backgroundScroll/BgZoom.js.map +0 -1
  67. package/dist/cjs/library/backgroundScroll/ImageParallax.js +0 -81
  68. package/dist/cjs/library/backgroundScroll/ImageParallax.js.map +0 -1
  69. package/dist/cjs/library/backgroundScroll/index.js +0 -32
  70. package/dist/cjs/library/backgroundScroll/index.js.map +0 -1
  71. package/dist/cjs/library/backgroundScroll/test/testUtils.js +0 -8
  72. package/dist/cjs/library/backgroundScroll/test/testUtils.js.map +0 -1
  73. package/dist/cjs/library/backgroundScroll/utils.js +0 -48
  74. package/dist/cjs/library/backgroundScroll/utils.js.map +0 -1
  75. package/dist/cjs/library/entrance/ArcIn.js +0 -110
  76. package/dist/cjs/library/entrance/ArcIn.js.map +0 -1
  77. package/dist/cjs/library/entrance/BlurIn.js +0 -56
  78. package/dist/cjs/library/entrance/BlurIn.js.map +0 -1
  79. package/dist/cjs/library/entrance/BounceIn.js +0 -143
  80. package/dist/cjs/library/entrance/BounceIn.js.map +0 -1
  81. package/dist/cjs/library/entrance/CircleIn.js +0 -75
  82. package/dist/cjs/library/entrance/CircleIn.js.map +0 -1
  83. package/dist/cjs/library/entrance/CurveIn.js +0 -80
  84. package/dist/cjs/library/entrance/CurveIn.js.map +0 -1
  85. package/dist/cjs/library/entrance/DropIn.js +0 -64
  86. package/dist/cjs/library/entrance/DropIn.js.map +0 -1
  87. package/dist/cjs/library/entrance/ExpandIn.js +0 -121
  88. package/dist/cjs/library/entrance/ExpandIn.js.map +0 -1
  89. package/dist/cjs/library/entrance/FadeIn.js +0 -27
  90. package/dist/cjs/library/entrance/FadeIn.js.map +0 -1
  91. package/dist/cjs/library/entrance/FlipIn.js +0 -107
  92. package/dist/cjs/library/entrance/FlipIn.js.map +0 -1
  93. package/dist/cjs/library/entrance/FloatIn.js +0 -67
  94. package/dist/cjs/library/entrance/FloatIn.js.map +0 -1
  95. package/dist/cjs/library/entrance/FoldIn.js +0 -134
  96. package/dist/cjs/library/entrance/FoldIn.js.map +0 -1
  97. package/dist/cjs/library/entrance/GlideIn.js +0 -89
  98. package/dist/cjs/library/entrance/GlideIn.js.map +0 -1
  99. package/dist/cjs/library/entrance/GlitchIn.js +0 -29
  100. package/dist/cjs/library/entrance/GlitchIn.js.map +0 -1
  101. package/dist/cjs/library/entrance/GrowIn.js +0 -66
  102. package/dist/cjs/library/entrance/GrowIn.js.map +0 -1
  103. package/dist/cjs/library/entrance/PunchIn.js +0 -178
  104. package/dist/cjs/library/entrance/PunchIn.js.map +0 -1
  105. package/dist/cjs/library/entrance/RevealIn.js +0 -72
  106. package/dist/cjs/library/entrance/RevealIn.js.map +0 -1
  107. package/dist/cjs/library/entrance/ShapeIn.js +0 -75
  108. package/dist/cjs/library/entrance/ShapeIn.js.map +0 -1
  109. package/dist/cjs/library/entrance/ShuttersIn.js +0 -48
  110. package/dist/cjs/library/entrance/ShuttersIn.js.map +0 -1
  111. package/dist/cjs/library/entrance/SlideIn.js +0 -140
  112. package/dist/cjs/library/entrance/SlideIn.js.map +0 -1
  113. package/dist/cjs/library/entrance/SpinIn.js +0 -65
  114. package/dist/cjs/library/entrance/SpinIn.js.map +0 -1
  115. package/dist/cjs/library/entrance/TiltIn.js +0 -102
  116. package/dist/cjs/library/entrance/TiltIn.js.map +0 -1
  117. package/dist/cjs/library/entrance/TurnIn.js +0 -85
  118. package/dist/cjs/library/entrance/TurnIn.js.map +0 -1
  119. package/dist/cjs/library/entrance/WinkIn.js +0 -115
  120. package/dist/cjs/library/entrance/WinkIn.js.map +0 -1
  121. package/dist/cjs/library/entrance/index.js +0 -54
  122. package/dist/cjs/library/entrance/index.js.map +0 -1
  123. package/dist/cjs/library/entrance/test/testUtils.js +0 -8
  124. package/dist/cjs/library/entrance/test/testUtils.js.map +0 -1
  125. package/dist/cjs/library/mouse/AiryMouse.js +0 -76
  126. package/dist/cjs/library/mouse/AiryMouse.js.map +0 -1
  127. package/dist/cjs/library/mouse/BlobMouse.js +0 -70
  128. package/dist/cjs/library/mouse/BlobMouse.js.map +0 -1
  129. package/dist/cjs/library/mouse/BlurMouse.js +0 -94
  130. package/dist/cjs/library/mouse/BlurMouse.js.map +0 -1
  131. package/dist/cjs/library/mouse/BounceMouse.js +0 -26
  132. package/dist/cjs/library/mouse/BounceMouse.js.map +0 -1
  133. package/dist/cjs/library/mouse/CustomMouse.js +0 -65
  134. package/dist/cjs/library/mouse/CustomMouse.js.map +0 -1
  135. package/dist/cjs/library/mouse/ScaleMouse.js +0 -98
  136. package/dist/cjs/library/mouse/ScaleMouse.js.map +0 -1
  137. package/dist/cjs/library/mouse/SkewMouse.js +0 -92
  138. package/dist/cjs/library/mouse/SkewMouse.js.map +0 -1
  139. package/dist/cjs/library/mouse/SpinMouse.js +0 -41
  140. package/dist/cjs/library/mouse/SpinMouse.js.map +0 -1
  141. package/dist/cjs/library/mouse/SwivelMouse.js +0 -85
  142. package/dist/cjs/library/mouse/SwivelMouse.js.map +0 -1
  143. package/dist/cjs/library/mouse/Tilt3DMouse.js +0 -65
  144. package/dist/cjs/library/mouse/Tilt3DMouse.js.map +0 -1
  145. package/dist/cjs/library/mouse/Track3DMouse.js +0 -87
  146. package/dist/cjs/library/mouse/Track3DMouse.js.map +0 -1
  147. package/dist/cjs/library/mouse/TrackMouse.js +0 -65
  148. package/dist/cjs/library/mouse/TrackMouse.js.map +0 -1
  149. package/dist/cjs/library/mouse/index.js +0 -32
  150. package/dist/cjs/library/mouse/index.js.map +0 -1
  151. package/dist/cjs/library/ongoing/Blink.js +0 -120
  152. package/dist/cjs/library/ongoing/Blink.js.map +0 -1
  153. package/dist/cjs/library/ongoing/Bounce.js +0 -92
  154. package/dist/cjs/library/ongoing/Bounce.js.map +0 -1
  155. package/dist/cjs/library/ongoing/Breathe.js +0 -124
  156. package/dist/cjs/library/ongoing/Breathe.js.map +0 -1
  157. package/dist/cjs/library/ongoing/Cross.js +0 -262
  158. package/dist/cjs/library/ongoing/Cross.js.map +0 -1
  159. package/dist/cjs/library/ongoing/DVD.js +0 -84
  160. package/dist/cjs/library/ongoing/DVD.js.map +0 -1
  161. package/dist/cjs/library/ongoing/Flash.js +0 -45
  162. package/dist/cjs/library/ongoing/Flash.js.map +0 -1
  163. package/dist/cjs/library/ongoing/Flip.js +0 -67
  164. package/dist/cjs/library/ongoing/Flip.js.map +0 -1
  165. package/dist/cjs/library/ongoing/Fold.js +0 -167
  166. package/dist/cjs/library/ongoing/Fold.js.map +0 -1
  167. package/dist/cjs/library/ongoing/Jello.js +0 -72
  168. package/dist/cjs/library/ongoing/Jello.js.map +0 -1
  169. package/dist/cjs/library/ongoing/Poke.js +0 -102
  170. package/dist/cjs/library/ongoing/Poke.js.map +0 -1
  171. package/dist/cjs/library/ongoing/Pulse.js +0 -75
  172. package/dist/cjs/library/ongoing/Pulse.js.map +0 -1
  173. package/dist/cjs/library/ongoing/Rubber.js +0 -92
  174. package/dist/cjs/library/ongoing/Rubber.js.map +0 -1
  175. package/dist/cjs/library/ongoing/Spin.js +0 -55
  176. package/dist/cjs/library/ongoing/Spin.js.map +0 -1
  177. package/dist/cjs/library/ongoing/Swing.js +0 -130
  178. package/dist/cjs/library/ongoing/Swing.js.map +0 -1
  179. package/dist/cjs/library/ongoing/Wiggle.js +0 -88
  180. package/dist/cjs/library/ongoing/Wiggle.js.map +0 -1
  181. package/dist/cjs/library/ongoing/index.js +0 -40
  182. package/dist/cjs/library/ongoing/index.js.map +0 -1
  183. package/dist/cjs/library/ongoing/test/testUtils.js +0 -8
  184. package/dist/cjs/library/ongoing/test/testUtils.js.map +0 -1
  185. package/dist/cjs/library/scroll/ArcScroll.js +0 -43
  186. package/dist/cjs/library/scroll/ArcScroll.js.map +0 -1
  187. package/dist/cjs/library/scroll/BlurScroll.js +0 -49
  188. package/dist/cjs/library/scroll/BlurScroll.js.map +0 -1
  189. package/dist/cjs/library/scroll/FadeScroll.js +0 -42
  190. package/dist/cjs/library/scroll/FadeScroll.js.map +0 -1
  191. package/dist/cjs/library/scroll/FlipScroll.js +0 -50
  192. package/dist/cjs/library/scroll/FlipScroll.js.map +0 -1
  193. package/dist/cjs/library/scroll/GrowScroll.js +0 -99
  194. package/dist/cjs/library/scroll/GrowScroll.js.map +0 -1
  195. package/dist/cjs/library/scroll/MoveScroll.js +0 -95
  196. package/dist/cjs/library/scroll/MoveScroll.js.map +0 -1
  197. package/dist/cjs/library/scroll/PanScroll.js +0 -77
  198. package/dist/cjs/library/scroll/PanScroll.js.map +0 -1
  199. package/dist/cjs/library/scroll/ParallaxScroll.js +0 -43
  200. package/dist/cjs/library/scroll/ParallaxScroll.js.map +0 -1
  201. package/dist/cjs/library/scroll/RevealScroll.js +0 -59
  202. package/dist/cjs/library/scroll/RevealScroll.js.map +0 -1
  203. package/dist/cjs/library/scroll/ShapeScroll.js +0 -114
  204. package/dist/cjs/library/scroll/ShapeScroll.js.map +0 -1
  205. package/dist/cjs/library/scroll/ShrinkScroll.js +0 -99
  206. package/dist/cjs/library/scroll/ShrinkScroll.js.map +0 -1
  207. package/dist/cjs/library/scroll/ShuttersScroll.js +0 -75
  208. package/dist/cjs/library/scroll/ShuttersScroll.js.map +0 -1
  209. package/dist/cjs/library/scroll/SkewPanScroll.js +0 -76
  210. package/dist/cjs/library/scroll/SkewPanScroll.js.map +0 -1
  211. package/dist/cjs/library/scroll/SlideScroll.js +0 -92
  212. package/dist/cjs/library/scroll/SlideScroll.js.map +0 -1
  213. package/dist/cjs/library/scroll/Spin3dScroll.js +0 -87
  214. package/dist/cjs/library/scroll/Spin3dScroll.js.map +0 -1
  215. package/dist/cjs/library/scroll/SpinScroll.js +0 -55
  216. package/dist/cjs/library/scroll/SpinScroll.js.map +0 -1
  217. package/dist/cjs/library/scroll/StretchScroll.js +0 -121
  218. package/dist/cjs/library/scroll/StretchScroll.js.map +0 -1
  219. package/dist/cjs/library/scroll/TiltScroll.js +0 -88
  220. package/dist/cjs/library/scroll/TiltScroll.js.map +0 -1
  221. package/dist/cjs/library/scroll/TurnScroll.js +0 -98
  222. package/dist/cjs/library/scroll/TurnScroll.js.map +0 -1
  223. package/dist/cjs/library/scroll/index.js +0 -46
  224. package/dist/cjs/library/scroll/index.js.map +0 -1
  225. package/dist/cjs/library/scroll/test/testUtils.js +0 -8
  226. package/dist/cjs/library/scroll/test/testUtils.js.map +0 -1
  227. package/dist/cjs/playground/animationMotionBgScroll.stories.js +0 -369
  228. package/dist/cjs/playground/animationMotionBgScroll.stories.js.map +0 -1
  229. package/dist/cjs/playground/animationsMotion.stories.js +0 -199
  230. package/dist/cjs/playground/animationsMotion.stories.js.map +0 -1
  231. package/dist/cjs/playground/animationsMotionMouse.stories.js +0 -266
  232. package/dist/cjs/playground/animationsMotionMouse.stories.js.map +0 -1
  233. package/dist/cjs/playground/animationsMotionOngoing.stories.js +0 -195
  234. package/dist/cjs/playground/animationsMotionOngoing.stories.js.map +0 -1
  235. package/dist/cjs/playground/animationsMotionScroll.stories.js +0 -270
  236. package/dist/cjs/playground/animationsMotionScroll.stories.js.map +0 -1
  237. package/dist/cjs/playground/controls.js +0 -334
  238. package/dist/cjs/playground/controls.js.map +0 -1
  239. package/dist/cjs/playground/mouse-parallax-components/plastic.jpeg +0 -0
  240. package/dist/cjs/playground/mouse-parallax-components/vector.svg +0 -19
  241. package/dist/cjs/playground/mouseComponent.js +0 -113
  242. package/dist/cjs/playground/mouseComponent.js.map +0 -1
  243. package/dist/cjs/playground/playground-common.js +0 -84
  244. package/dist/cjs/playground/playground-common.js.map +0 -1
  245. package/dist/cjs/playground/playground.module.scss +0 -381
  246. package/dist/cjs/test-types.d.js +0 -2
  247. package/dist/cjs/test-types.d.js.map +0 -1
  248. package/dist/cjs/types.js +0 -4
  249. package/dist/cjs/types.js.map +0 -1
  250. package/dist/cjs/utils.js +0 -338
  251. package/dist/cjs/utils.js.map +0 -1
  252. package/dist/esm/AnimationGroup.js +0 -100
  253. package/dist/esm/AnimationGroup.js.map +0 -1
  254. package/dist/esm/CustomAnimation.js +0 -184
  255. package/dist/esm/CustomAnimation.js.map +0 -1
  256. package/dist/esm/api/common.js +0 -132
  257. package/dist/esm/api/common.js.map +0 -1
  258. package/dist/esm/api/cssAnimations.js +0 -53
  259. package/dist/esm/api/cssAnimations.js.map +0 -1
  260. package/dist/esm/api/prepare.js +0 -16
  261. package/dist/esm/api/prepare.js.map +0 -1
  262. package/dist/esm/api/webAnimations.js +0 -152
  263. package/dist/esm/api/webAnimations.js.map +0 -1
  264. package/dist/esm/easings.js +0 -248
  265. package/dist/esm/easings.js.map +0 -1
  266. package/dist/esm/external-types.d.js +0 -2
  267. package/dist/esm/external-types.d.js.map +0 -1
  268. package/dist/esm/index.js +0 -3
  269. package/dist/esm/index.js.map +0 -1
  270. package/dist/esm/library/backgroundScroll/BgCloseUp.js +0 -91
  271. package/dist/esm/library/backgroundScroll/BgCloseUp.js.map +0 -1
  272. package/dist/esm/library/backgroundScroll/BgFade.js +0 -64
  273. package/dist/esm/library/backgroundScroll/BgFade.js.map +0 -1
  274. package/dist/esm/library/backgroundScroll/BgFadeBack.js +0 -90
  275. package/dist/esm/library/backgroundScroll/BgFadeBack.js.map +0 -1
  276. package/dist/esm/library/backgroundScroll/BgFake3D.js +0 -127
  277. package/dist/esm/library/backgroundScroll/BgFake3D.js.map +0 -1
  278. package/dist/esm/library/backgroundScroll/BgPan.js +0 -60
  279. package/dist/esm/library/backgroundScroll/BgPan.js.map +0 -1
  280. package/dist/esm/library/backgroundScroll/BgParallax.js +0 -58
  281. package/dist/esm/library/backgroundScroll/BgParallax.js.map +0 -1
  282. package/dist/esm/library/backgroundScroll/BgPullBack.js +0 -62
  283. package/dist/esm/library/backgroundScroll/BgPullBack.js.map +0 -1
  284. package/dist/esm/library/backgroundScroll/BgReveal.js +0 -21
  285. package/dist/esm/library/backgroundScroll/BgReveal.js.map +0 -1
  286. package/dist/esm/library/backgroundScroll/BgRotate.js +0 -48
  287. package/dist/esm/library/backgroundScroll/BgRotate.js.map +0 -1
  288. package/dist/esm/library/backgroundScroll/BgSkew.js +0 -59
  289. package/dist/esm/library/backgroundScroll/BgSkew.js.map +0 -1
  290. package/dist/esm/library/backgroundScroll/BgZoom.js +0 -159
  291. package/dist/esm/library/backgroundScroll/BgZoom.js.map +0 -1
  292. package/dist/esm/library/backgroundScroll/ImageParallax.js +0 -77
  293. package/dist/esm/library/backgroundScroll/ImageParallax.js.map +0 -1
  294. package/dist/esm/library/backgroundScroll/index.js +0 -27
  295. package/dist/esm/library/backgroundScroll/index.js.map +0 -1
  296. package/dist/esm/library/backgroundScroll/test/testUtils.js +0 -4
  297. package/dist/esm/library/backgroundScroll/test/testUtils.js.map +0 -1
  298. package/dist/esm/library/backgroundScroll/utils.js +0 -42
  299. package/dist/esm/library/backgroundScroll/utils.js.map +0 -1
  300. package/dist/esm/library/entrance/ArcIn.js +0 -106
  301. package/dist/esm/library/entrance/ArcIn.js.map +0 -1
  302. package/dist/esm/library/entrance/BlurIn.js +0 -53
  303. package/dist/esm/library/entrance/BlurIn.js.map +0 -1
  304. package/dist/esm/library/entrance/BounceIn.js +0 -143
  305. package/dist/esm/library/entrance/BounceIn.js.map +0 -1
  306. package/dist/esm/library/entrance/CircleIn.js +0 -71
  307. package/dist/esm/library/entrance/CircleIn.js.map +0 -1
  308. package/dist/esm/library/entrance/CurveIn.js +0 -76
  309. package/dist/esm/library/entrance/CurveIn.js.map +0 -1
  310. package/dist/esm/library/entrance/DropIn.js +0 -61
  311. package/dist/esm/library/entrance/DropIn.js.map +0 -1
  312. package/dist/esm/library/entrance/ExpandIn.js +0 -117
  313. package/dist/esm/library/entrance/ExpandIn.js.map +0 -1
  314. package/dist/esm/library/entrance/FadeIn.js +0 -21
  315. package/dist/esm/library/entrance/FadeIn.js.map +0 -1
  316. package/dist/esm/library/entrance/FlipIn.js +0 -100
  317. package/dist/esm/library/entrance/FlipIn.js.map +0 -1
  318. package/dist/esm/library/entrance/FloatIn.js +0 -64
  319. package/dist/esm/library/entrance/FloatIn.js.map +0 -1
  320. package/dist/esm/library/entrance/FoldIn.js +0 -127
  321. package/dist/esm/library/entrance/FoldIn.js.map +0 -1
  322. package/dist/esm/library/entrance/GlideIn.js +0 -85
  323. package/dist/esm/library/entrance/GlideIn.js.map +0 -1
  324. package/dist/esm/library/entrance/GlitchIn.js +0 -22
  325. package/dist/esm/library/entrance/GlitchIn.js.map +0 -1
  326. package/dist/esm/library/entrance/GrowIn.js +0 -63
  327. package/dist/esm/library/entrance/GrowIn.js.map +0 -1
  328. package/dist/esm/library/entrance/PunchIn.js +0 -175
  329. package/dist/esm/library/entrance/PunchIn.js.map +0 -1
  330. package/dist/esm/library/entrance/RevealIn.js +0 -65
  331. package/dist/esm/library/entrance/RevealIn.js.map +0 -1
  332. package/dist/esm/library/entrance/ShapeIn.js +0 -72
  333. package/dist/esm/library/entrance/ShapeIn.js.map +0 -1
  334. package/dist/esm/library/entrance/ShuttersIn.js +0 -45
  335. package/dist/esm/library/entrance/ShuttersIn.js.map +0 -1
  336. package/dist/esm/library/entrance/SlideIn.js +0 -133
  337. package/dist/esm/library/entrance/SlideIn.js.map +0 -1
  338. package/dist/esm/library/entrance/SpinIn.js +0 -62
  339. package/dist/esm/library/entrance/SpinIn.js.map +0 -1
  340. package/dist/esm/library/entrance/TiltIn.js +0 -98
  341. package/dist/esm/library/entrance/TiltIn.js.map +0 -1
  342. package/dist/esm/library/entrance/TurnIn.js +0 -82
  343. package/dist/esm/library/entrance/TurnIn.js.map +0 -1
  344. package/dist/esm/library/entrance/WinkIn.js +0 -108
  345. package/dist/esm/library/entrance/WinkIn.js.map +0 -1
  346. package/dist/esm/library/entrance/index.js +0 -49
  347. package/dist/esm/library/entrance/index.js.map +0 -1
  348. package/dist/esm/library/entrance/test/testUtils.js +0 -4
  349. package/dist/esm/library/entrance/test/testUtils.js.map +0 -1
  350. package/dist/esm/library/mouse/AiryMouse.js +0 -73
  351. package/dist/esm/library/mouse/AiryMouse.js.map +0 -1
  352. package/dist/esm/library/mouse/BlobMouse.js +0 -67
  353. package/dist/esm/library/mouse/BlobMouse.js.map +0 -1
  354. package/dist/esm/library/mouse/BlurMouse.js +0 -91
  355. package/dist/esm/library/mouse/BlurMouse.js.map +0 -1
  356. package/dist/esm/library/mouse/BounceMouse.js +0 -21
  357. package/dist/esm/library/mouse/BounceMouse.js.map +0 -1
  358. package/dist/esm/library/mouse/CustomMouse.js +0 -59
  359. package/dist/esm/library/mouse/CustomMouse.js.map +0 -1
  360. package/dist/esm/library/mouse/ScaleMouse.js +0 -95
  361. package/dist/esm/library/mouse/ScaleMouse.js.map +0 -1
  362. package/dist/esm/library/mouse/SkewMouse.js +0 -89
  363. package/dist/esm/library/mouse/SkewMouse.js.map +0 -1
  364. package/dist/esm/library/mouse/SpinMouse.js +0 -38
  365. package/dist/esm/library/mouse/SpinMouse.js.map +0 -1
  366. package/dist/esm/library/mouse/SwivelMouse.js +0 -82
  367. package/dist/esm/library/mouse/SwivelMouse.js.map +0 -1
  368. package/dist/esm/library/mouse/Tilt3DMouse.js +0 -62
  369. package/dist/esm/library/mouse/Tilt3DMouse.js.map +0 -1
  370. package/dist/esm/library/mouse/Track3DMouse.js +0 -84
  371. package/dist/esm/library/mouse/Track3DMouse.js.map +0 -1
  372. package/dist/esm/library/mouse/TrackMouse.js +0 -62
  373. package/dist/esm/library/mouse/TrackMouse.js.map +0 -1
  374. package/dist/esm/library/mouse/index.js +0 -27
  375. package/dist/esm/library/mouse/index.js.map +0 -1
  376. package/dist/esm/library/ongoing/Blink.js +0 -115
  377. package/dist/esm/library/ongoing/Blink.js.map +0 -1
  378. package/dist/esm/library/ongoing/Bounce.js +0 -92
  379. package/dist/esm/library/ongoing/Bounce.js.map +0 -1
  380. package/dist/esm/library/ongoing/Breathe.js +0 -122
  381. package/dist/esm/library/ongoing/Breathe.js.map +0 -1
  382. package/dist/esm/library/ongoing/Cross.js +0 -273
  383. package/dist/esm/library/ongoing/Cross.js.map +0 -1
  384. package/dist/esm/library/ongoing/DVD.js +0 -79
  385. package/dist/esm/library/ongoing/DVD.js.map +0 -1
  386. package/dist/esm/library/ongoing/Flash.js +0 -42
  387. package/dist/esm/library/ongoing/Flash.js.map +0 -1
  388. package/dist/esm/library/ongoing/Flip.js +0 -64
  389. package/dist/esm/library/ongoing/Flip.js.map +0 -1
  390. package/dist/esm/library/ongoing/Fold.js +0 -165
  391. package/dist/esm/library/ongoing/Fold.js.map +0 -1
  392. package/dist/esm/library/ongoing/Jello.js +0 -70
  393. package/dist/esm/library/ongoing/Jello.js.map +0 -1
  394. package/dist/esm/library/ongoing/Poke.js +0 -100
  395. package/dist/esm/library/ongoing/Poke.js.map +0 -1
  396. package/dist/esm/library/ongoing/Pulse.js +0 -73
  397. package/dist/esm/library/ongoing/Pulse.js.map +0 -1
  398. package/dist/esm/library/ongoing/Rubber.js +0 -90
  399. package/dist/esm/library/ongoing/Rubber.js.map +0 -1
  400. package/dist/esm/library/ongoing/Spin.js +0 -52
  401. package/dist/esm/library/ongoing/Spin.js.map +0 -1
  402. package/dist/esm/library/ongoing/Swing.js +0 -128
  403. package/dist/esm/library/ongoing/Swing.js.map +0 -1
  404. package/dist/esm/library/ongoing/Wiggle.js +0 -86
  405. package/dist/esm/library/ongoing/Wiggle.js.map +0 -1
  406. package/dist/esm/library/ongoing/index.js +0 -33
  407. package/dist/esm/library/ongoing/index.js.map +0 -1
  408. package/dist/esm/library/ongoing/test/testUtils.js +0 -4
  409. package/dist/esm/library/ongoing/test/testUtils.js.map +0 -1
  410. package/dist/esm/library/scroll/ArcScroll.js +0 -40
  411. package/dist/esm/library/scroll/ArcScroll.js.map +0 -1
  412. package/dist/esm/library/scroll/BlurScroll.js +0 -46
  413. package/dist/esm/library/scroll/BlurScroll.js.map +0 -1
  414. package/dist/esm/library/scroll/FadeScroll.js +0 -39
  415. package/dist/esm/library/scroll/FadeScroll.js.map +0 -1
  416. package/dist/esm/library/scroll/FlipScroll.js +0 -47
  417. package/dist/esm/library/scroll/FlipScroll.js.map +0 -1
  418. package/dist/esm/library/scroll/GrowScroll.js +0 -96
  419. package/dist/esm/library/scroll/GrowScroll.js.map +0 -1
  420. package/dist/esm/library/scroll/MoveScroll.js +0 -92
  421. package/dist/esm/library/scroll/MoveScroll.js.map +0 -1
  422. package/dist/esm/library/scroll/PanScroll.js +0 -73
  423. package/dist/esm/library/scroll/PanScroll.js.map +0 -1
  424. package/dist/esm/library/scroll/ParallaxScroll.js +0 -40
  425. package/dist/esm/library/scroll/ParallaxScroll.js.map +0 -1
  426. package/dist/esm/library/scroll/RevealScroll.js +0 -52
  427. package/dist/esm/library/scroll/RevealScroll.js.map +0 -1
  428. package/dist/esm/library/scroll/ShapeScroll.js +0 -111
  429. package/dist/esm/library/scroll/ShapeScroll.js.map +0 -1
  430. package/dist/esm/library/scroll/ShrinkScroll.js +0 -96
  431. package/dist/esm/library/scroll/ShrinkScroll.js.map +0 -1
  432. package/dist/esm/library/scroll/ShuttersScroll.js +0 -72
  433. package/dist/esm/library/scroll/ShuttersScroll.js.map +0 -1
  434. package/dist/esm/library/scroll/SkewPanScroll.js +0 -72
  435. package/dist/esm/library/scroll/SkewPanScroll.js.map +0 -1
  436. package/dist/esm/library/scroll/SlideScroll.js +0 -88
  437. package/dist/esm/library/scroll/SlideScroll.js.map +0 -1
  438. package/dist/esm/library/scroll/Spin3dScroll.js +0 -84
  439. package/dist/esm/library/scroll/Spin3dScroll.js.map +0 -1
  440. package/dist/esm/library/scroll/SpinScroll.js +0 -52
  441. package/dist/esm/library/scroll/SpinScroll.js.map +0 -1
  442. package/dist/esm/library/scroll/StretchScroll.js +0 -118
  443. package/dist/esm/library/scroll/StretchScroll.js.map +0 -1
  444. package/dist/esm/library/scroll/TiltScroll.js +0 -85
  445. package/dist/esm/library/scroll/TiltScroll.js.map +0 -1
  446. package/dist/esm/library/scroll/TurnScroll.js +0 -94
  447. package/dist/esm/library/scroll/TurnScroll.js.map +0 -1
  448. package/dist/esm/library/scroll/index.js +0 -41
  449. package/dist/esm/library/scroll/index.js.map +0 -1
  450. package/dist/esm/library/scroll/test/testUtils.js +0 -4
  451. package/dist/esm/library/scroll/test/testUtils.js.map +0 -1
  452. package/dist/esm/motion.js +0 -142
  453. package/dist/esm/motion.js.map +0 -1
  454. package/dist/esm/playground/animationMotionBgScroll.stories.js +0 -284
  455. package/dist/esm/playground/animationMotionBgScroll.stories.js.map +0 -1
  456. package/dist/esm/playground/animationsMotion.stories.js +0 -132
  457. package/dist/esm/playground/animationsMotion.stories.js.map +0 -1
  458. package/dist/esm/playground/animationsMotionMouse.stories.js +0 -187
  459. package/dist/esm/playground/animationsMotionMouse.stories.js.map +0 -1
  460. package/dist/esm/playground/animationsMotionOngoing.stories.js +0 -128
  461. package/dist/esm/playground/animationsMotionOngoing.stories.js.map +0 -1
  462. package/dist/esm/playground/animationsMotionScroll.stories.js +0 -198
  463. package/dist/esm/playground/animationsMotionScroll.stories.js.map +0 -1
  464. package/dist/esm/playground/controls.js +0 -168
  465. package/dist/esm/playground/controls.js.map +0 -1
  466. package/dist/esm/playground/mouse-parallax-components/plastic.jpeg +0 -0
  467. package/dist/esm/playground/mouse-parallax-components/vector.svg +0 -19
  468. package/dist/esm/playground/mouseComponent.js +0 -61
  469. package/dist/esm/playground/mouseComponent.js.map +0 -1
  470. package/dist/esm/playground/playground-common.js +0 -91
  471. package/dist/esm/playground/playground-common.js.map +0 -1
  472. package/dist/esm/playground/playground.module.scss +0 -381
  473. package/dist/esm/test-types.d.js +0 -2
  474. package/dist/esm/test-types.d.js.map +0 -1
  475. package/dist/esm/types.js +0 -2
  476. package/dist/esm/types.js.map +0 -1
  477. package/dist/esm/utils.js +0 -361
  478. package/dist/esm/utils.js.map +0 -1
  479. package/dist/types/library/backgroundScroll/BgCloseUp.d.ts +0 -131
  480. package/dist/types/library/backgroundScroll/BgCloseUp.d.ts.map +0 -1
  481. package/dist/types/library/backgroundScroll/BgFade.d.ts +0 -71
  482. package/dist/types/library/backgroundScroll/BgFade.d.ts.map +0 -1
  483. package/dist/types/library/backgroundScroll/BgFadeBack.d.ts +0 -133
  484. package/dist/types/library/backgroundScroll/BgFadeBack.d.ts.map +0 -1
  485. package/dist/types/library/backgroundScroll/BgFake3D.d.ts +0 -130
  486. package/dist/types/library/backgroundScroll/BgFake3D.d.ts.map +0 -1
  487. package/dist/types/library/backgroundScroll/BgPan.d.ts +0 -68
  488. package/dist/types/library/backgroundScroll/BgPan.d.ts.map +0 -1
  489. package/dist/types/library/backgroundScroll/BgParallax.d.ts +0 -68
  490. package/dist/types/library/backgroundScroll/BgParallax.d.ts.map +0 -1
  491. package/dist/types/library/backgroundScroll/BgPullBack.d.ts +0 -68
  492. package/dist/types/library/backgroundScroll/BgPullBack.d.ts.map +0 -1
  493. package/dist/types/library/backgroundScroll/BgReveal.d.ts +0 -8
  494. package/dist/types/library/backgroundScroll/BgReveal.d.ts.map +0 -1
  495. package/dist/types/library/backgroundScroll/BgRotate.d.ts +0 -53
  496. package/dist/types/library/backgroundScroll/BgRotate.d.ts.map +0 -1
  497. package/dist/types/library/backgroundScroll/BgSkew.d.ts +0 -68
  498. package/dist/types/library/backgroundScroll/BgSkew.d.ts.map +0 -1
  499. package/dist/types/library/backgroundScroll/BgZoom.d.ts +0 -8
  500. package/dist/types/library/backgroundScroll/BgZoom.d.ts.map +0 -1
  501. package/dist/types/library/backgroundScroll/ImageParallax.d.ts +0 -69
  502. package/dist/types/library/backgroundScroll/ImageParallax.d.ts.map +0 -1
  503. package/dist/types/library/backgroundScroll/index.d.ts +0 -3
  504. package/dist/types/library/backgroundScroll/index.d.ts.map +0 -1
  505. package/dist/types/library/backgroundScroll/test/testUtils.d.ts +0 -3
  506. package/dist/types/library/backgroundScroll/test/testUtils.d.ts.map +0 -1
  507. package/dist/types/library/backgroundScroll/utils.d.ts +0 -10
  508. package/dist/types/library/backgroundScroll/utils.d.ts.map +0 -1
  509. package/dist/types/library/entrance/ArcIn.d.ts +0 -102
  510. package/dist/types/library/entrance/ArcIn.d.ts.map +0 -1
  511. package/dist/types/library/entrance/BlurIn.d.ts +0 -91
  512. package/dist/types/library/entrance/BlurIn.d.ts.map +0 -1
  513. package/dist/types/library/entrance/BounceIn.d.ts +0 -111
  514. package/dist/types/library/entrance/BounceIn.d.ts.map +0 -1
  515. package/dist/types/library/entrance/CircleIn.d.ts +0 -122
  516. package/dist/types/library/entrance/CircleIn.d.ts.map +0 -1
  517. package/dist/types/library/entrance/CurveIn.d.ts +0 -74
  518. package/dist/types/library/entrance/CurveIn.d.ts.map +0 -1
  519. package/dist/types/library/entrance/DropIn.d.ts +0 -97
  520. package/dist/types/library/entrance/DropIn.d.ts.map +0 -1
  521. package/dist/types/library/entrance/ExpandIn.d.ts +0 -102
  522. package/dist/types/library/entrance/ExpandIn.d.ts.map +0 -1
  523. package/dist/types/library/entrance/FadeIn.d.ts +0 -47
  524. package/dist/types/library/entrance/FadeIn.d.ts.map +0 -1
  525. package/dist/types/library/entrance/FlipIn.d.ts +0 -100
  526. package/dist/types/library/entrance/FlipIn.d.ts.map +0 -1
  527. package/dist/types/library/entrance/FloatIn.d.ts +0 -73
  528. package/dist/types/library/entrance/FloatIn.d.ts.map +0 -1
  529. package/dist/types/library/entrance/FoldIn.d.ts +0 -104
  530. package/dist/types/library/entrance/FoldIn.d.ts.map +0 -1
  531. package/dist/types/library/entrance/GlideIn.d.ts +0 -74
  532. package/dist/types/library/entrance/GlideIn.d.ts.map +0 -1
  533. package/dist/types/library/entrance/GlitchIn.d.ts +0 -73
  534. package/dist/types/library/entrance/GlitchIn.d.ts.map +0 -1
  535. package/dist/types/library/entrance/GrowIn.d.ts +0 -101
  536. package/dist/types/library/entrance/GrowIn.d.ts.map +0 -1
  537. package/dist/types/library/entrance/PunchIn.d.ts +0 -106
  538. package/dist/types/library/entrance/PunchIn.d.ts.map +0 -1
  539. package/dist/types/library/entrance/RevealIn.d.ts +0 -72
  540. package/dist/types/library/entrance/RevealIn.d.ts.map +0 -1
  541. package/dist/types/library/entrance/ShapeIn.d.ts +0 -99
  542. package/dist/types/library/entrance/ShapeIn.d.ts.map +0 -1
  543. package/dist/types/library/entrance/ShuttersIn.d.ts +0 -73
  544. package/dist/types/library/entrance/ShuttersIn.d.ts.map +0 -1
  545. package/dist/types/library/entrance/SlideIn.d.ts +0 -66
  546. package/dist/types/library/entrance/SlideIn.d.ts.map +0 -1
  547. package/dist/types/library/entrance/SpinIn.d.ts +0 -103
  548. package/dist/types/library/entrance/SpinIn.d.ts.map +0 -1
  549. package/dist/types/library/entrance/TiltIn.d.ts +0 -162
  550. package/dist/types/library/entrance/TiltIn.d.ts.map +0 -1
  551. package/dist/types/library/entrance/TurnIn.d.ts +0 -101
  552. package/dist/types/library/entrance/TurnIn.d.ts.map +0 -1
  553. package/dist/types/library/entrance/WinkIn.d.ts +0 -154
  554. package/dist/types/library/entrance/WinkIn.d.ts.map +0 -1
  555. package/dist/types/library/entrance/index.d.ts +0 -3
  556. package/dist/types/library/entrance/index.d.ts.map +0 -1
  557. package/dist/types/library/entrance/test/testUtils.d.ts +0 -3
  558. package/dist/types/library/entrance/test/testUtils.d.ts.map +0 -1
  559. package/dist/types/library/mouse/AiryMouse.d.ts +0 -9
  560. package/dist/types/library/mouse/AiryMouse.d.ts.map +0 -1
  561. package/dist/types/library/mouse/BlobMouse.d.ts +0 -9
  562. package/dist/types/library/mouse/BlobMouse.d.ts.map +0 -1
  563. package/dist/types/library/mouse/BlurMouse.d.ts +0 -9
  564. package/dist/types/library/mouse/BlurMouse.d.ts.map +0 -1
  565. package/dist/types/library/mouse/BounceMouse.d.ts +0 -11
  566. package/dist/types/library/mouse/BounceMouse.d.ts.map +0 -1
  567. package/dist/types/library/mouse/CustomMouse.d.ts +0 -13
  568. package/dist/types/library/mouse/CustomMouse.d.ts.map +0 -1
  569. package/dist/types/library/mouse/ScaleMouse.d.ts +0 -9
  570. package/dist/types/library/mouse/ScaleMouse.d.ts.map +0 -1
  571. package/dist/types/library/mouse/SkewMouse.d.ts +0 -9
  572. package/dist/types/library/mouse/SkewMouse.d.ts.map +0 -1
  573. package/dist/types/library/mouse/SpinMouse.d.ts +0 -9
  574. package/dist/types/library/mouse/SpinMouse.d.ts.map +0 -1
  575. package/dist/types/library/mouse/SwivelMouse.d.ts +0 -9
  576. package/dist/types/library/mouse/SwivelMouse.d.ts.map +0 -1
  577. package/dist/types/library/mouse/Tilt3DMouse.d.ts +0 -9
  578. package/dist/types/library/mouse/Tilt3DMouse.d.ts.map +0 -1
  579. package/dist/types/library/mouse/Track3DMouse.d.ts +0 -9
  580. package/dist/types/library/mouse/Track3DMouse.d.ts.map +0 -1
  581. package/dist/types/library/mouse/TrackMouse.d.ts +0 -9
  582. package/dist/types/library/mouse/TrackMouse.d.ts.map +0 -1
  583. package/dist/types/library/mouse/index.d.ts +0 -3
  584. package/dist/types/library/mouse/index.d.ts.map +0 -1
  585. package/dist/types/library/ongoing/Blink.d.ts +0 -19
  586. package/dist/types/library/ongoing/Blink.d.ts.map +0 -1
  587. package/dist/types/library/ongoing/Bounce.d.ts +0 -61
  588. package/dist/types/library/ongoing/Bounce.d.ts.map +0 -1
  589. package/dist/types/library/ongoing/Breathe.d.ts +0 -65
  590. package/dist/types/library/ongoing/Breathe.d.ts.map +0 -1
  591. package/dist/types/library/ongoing/Cross.d.ts +0 -34
  592. package/dist/types/library/ongoing/Cross.d.ts.map +0 -1
  593. package/dist/types/library/ongoing/DVD.d.ts +0 -45
  594. package/dist/types/library/ongoing/DVD.d.ts.map +0 -1
  595. package/dist/types/library/ongoing/Flash.d.ts +0 -63
  596. package/dist/types/library/ongoing/Flash.d.ts.map +0 -1
  597. package/dist/types/library/ongoing/Flip.d.ts +0 -71
  598. package/dist/types/library/ongoing/Flip.d.ts.map +0 -1
  599. package/dist/types/library/ongoing/Fold.d.ts +0 -65
  600. package/dist/types/library/ongoing/Fold.d.ts.map +0 -1
  601. package/dist/types/library/ongoing/Jello.d.ts +0 -55
  602. package/dist/types/library/ongoing/Jello.d.ts.map +0 -1
  603. package/dist/types/library/ongoing/Poke.d.ts +0 -55
  604. package/dist/types/library/ongoing/Poke.d.ts.map +0 -1
  605. package/dist/types/library/ongoing/Pulse.d.ts +0 -55
  606. package/dist/types/library/ongoing/Pulse.d.ts.map +0 -1
  607. package/dist/types/library/ongoing/Rubber.d.ts +0 -55
  608. package/dist/types/library/ongoing/Rubber.d.ts.map +0 -1
  609. package/dist/types/library/ongoing/Spin.d.ts +0 -69
  610. package/dist/types/library/ongoing/Spin.d.ts.map +0 -1
  611. package/dist/types/library/ongoing/Swing.d.ts +0 -65
  612. package/dist/types/library/ongoing/Swing.d.ts.map +0 -1
  613. package/dist/types/library/ongoing/Wiggle.d.ts +0 -55
  614. package/dist/types/library/ongoing/Wiggle.d.ts.map +0 -1
  615. package/dist/types/library/ongoing/index.d.ts +0 -3
  616. package/dist/types/library/ongoing/index.d.ts.map +0 -1
  617. package/dist/types/library/ongoing/test/testUtils.d.ts +0 -3
  618. package/dist/types/library/ongoing/test/testUtils.d.ts.map +0 -1
  619. package/dist/types/library/scroll/ArcScroll.d.ts +0 -57
  620. package/dist/types/library/scroll/ArcScroll.d.ts.map +0 -1
  621. package/dist/types/library/scroll/BlurScroll.d.ts +0 -59
  622. package/dist/types/library/scroll/BlurScroll.d.ts.map +0 -1
  623. package/dist/types/library/scroll/FadeScroll.d.ts +0 -57
  624. package/dist/types/library/scroll/FadeScroll.d.ts.map +0 -1
  625. package/dist/types/library/scroll/FlipScroll.d.ts +0 -57
  626. package/dist/types/library/scroll/FlipScroll.d.ts.map +0 -1
  627. package/dist/types/library/scroll/GrowScroll.d.ts +0 -69
  628. package/dist/types/library/scroll/GrowScroll.d.ts.map +0 -1
  629. package/dist/types/library/scroll/MoveScroll.d.ts +0 -65
  630. package/dist/types/library/scroll/MoveScroll.d.ts.map +0 -1
  631. package/dist/types/library/scroll/PanScroll.d.ts +0 -58
  632. package/dist/types/library/scroll/PanScroll.d.ts.map +0 -1
  633. package/dist/types/library/scroll/ParallaxScroll.d.ts +0 -59
  634. package/dist/types/library/scroll/ParallaxScroll.d.ts.map +0 -1
  635. package/dist/types/library/scroll/RevealScroll.d.ts +0 -58
  636. package/dist/types/library/scroll/RevealScroll.d.ts.map +0 -1
  637. package/dist/types/library/scroll/ShapeScroll.d.ts +0 -65
  638. package/dist/types/library/scroll/ShapeScroll.d.ts.map +0 -1
  639. package/dist/types/library/scroll/ShrinkScroll.d.ts +0 -69
  640. package/dist/types/library/scroll/ShrinkScroll.d.ts.map +0 -1
  641. package/dist/types/library/scroll/ShuttersScroll.d.ts +0 -61
  642. package/dist/types/library/scroll/ShuttersScroll.d.ts.map +0 -1
  643. package/dist/types/library/scroll/SkewPanScroll.d.ts +0 -62
  644. package/dist/types/library/scroll/SkewPanScroll.d.ts.map +0 -1
  645. package/dist/types/library/scroll/SlideScroll.d.ts +0 -52
  646. package/dist/types/library/scroll/SlideScroll.d.ts.map +0 -1
  647. package/dist/types/library/scroll/Spin3dScroll.d.ts +0 -73
  648. package/dist/types/library/scroll/Spin3dScroll.d.ts.map +0 -1
  649. package/dist/types/library/scroll/SpinScroll.d.ts +0 -61
  650. package/dist/types/library/scroll/SpinScroll.d.ts.map +0 -1
  651. package/dist/types/library/scroll/StretchScroll.d.ts +0 -125
  652. package/dist/types/library/scroll/StretchScroll.d.ts.map +0 -1
  653. package/dist/types/library/scroll/TiltScroll.d.ts +0 -143
  654. package/dist/types/library/scroll/TiltScroll.d.ts.map +0 -1
  655. package/dist/types/library/scroll/TurnScroll.d.ts +0 -66
  656. package/dist/types/library/scroll/TurnScroll.d.ts.map +0 -1
  657. package/dist/types/library/scroll/index.d.ts +0 -3
  658. package/dist/types/library/scroll/index.d.ts.map +0 -1
  659. package/dist/types/library/scroll/test/testUtils.d.ts +0 -3
  660. package/dist/types/library/scroll/test/testUtils.d.ts.map +0 -1
  661. package/dist/types/playground/animationMotionBgScroll.stories.d.ts +0 -6
  662. package/dist/types/playground/animationMotionBgScroll.stories.d.ts.map +0 -1
  663. package/dist/types/playground/animationsMotion.stories.d.ts +0 -6
  664. package/dist/types/playground/animationsMotion.stories.d.ts.map +0 -1
  665. package/dist/types/playground/animationsMotionMouse.stories.d.ts +0 -6
  666. package/dist/types/playground/animationsMotionMouse.stories.d.ts.map +0 -1
  667. package/dist/types/playground/animationsMotionOngoing.stories.d.ts +0 -6
  668. package/dist/types/playground/animationsMotionOngoing.stories.d.ts.map +0 -1
  669. package/dist/types/playground/animationsMotionScroll.stories.d.ts +0 -6
  670. package/dist/types/playground/animationsMotionScroll.stories.d.ts.map +0 -1
  671. package/dist/types/playground/controls.d.ts +0 -53
  672. package/dist/types/playground/controls.d.ts.map +0 -1
  673. package/dist/types/playground/mouseComponent.d.ts +0 -10
  674. package/dist/types/playground/mouseComponent.d.ts.map +0 -1
  675. package/dist/types/playground/playground-common.d.ts +0 -34
  676. package/dist/types/playground/playground-common.d.ts.map +0 -1
package/README.md CHANGED
@@ -27,14 +27,11 @@ npm install @wix/motion
27
27
  import { getWebAnimation } from '@wix/motion';
28
28
 
29
29
  // Create a fade-in entrance animation
30
- const animation = getWebAnimation(
31
- document.getElementById('myElement'),
32
- {
33
- namedEffect: { type: 'FadeIn' },
34
- duration: 1000,
35
- easing: 'easeOut'
36
- }
37
- );
30
+ const animation = getWebAnimation(document.getElementById('myElement'), {
31
+ namedEffect: { type: 'FadeIn' },
32
+ duration: 1000,
33
+ easing: 'easeOut',
34
+ });
38
35
 
39
36
  // Play the animation
40
37
  await animation.play();
@@ -49,19 +46,21 @@ import { getScrubScene } from '@wix/motion';
49
46
  const scene = getScrubScene(
50
47
  document.getElementById('scrollElement'),
51
48
  {
52
- namedEffect: {
49
+ namedEffect: {
53
50
  type: 'ParallaxScroll',
54
- speed: 0.5
55
- }
51
+ speed: 0.5,
52
+ },
56
53
  },
57
- { trigger: 'view-progress', element: document.getElementById('viewport') }
54
+ { trigger: 'view-progress', element: document.getElementById('viewport') },
58
55
  );
59
56
  ```
60
57
 
61
58
  ## 📚 Animation Categories
62
59
 
63
60
  ### 🎭 Entrance Animations (24 presets)
61
+
64
62
  Perfect for element reveals and page transitions:
63
+
65
64
  - **FadeIn** - Simple opacity transition
66
65
  - **ArcIn** - Curved motion with 3D rotation
67
66
  - **BounceIn** - Spring-based entrance with bounce effect
@@ -69,8 +68,10 @@ Perfect for element reveals and page transitions:
69
68
  - **FlipIn** - 3D flip transitions
70
69
  - [See all entrance animations →](docs/categories/entrance-animations.md)
71
70
 
72
- ### 🔄 Ongoing Animations (16 presets)
71
+ ### 🔄 Ongoing Animations (16 presets)
72
+
73
73
  Continuous looping animations for attention and delight:
74
+
74
75
  - **Pulse** - Rhythmic scaling effect
75
76
  - **Breathe** - Organic scaling animation
76
77
  - **Spin** - Smooth rotation loops
@@ -79,7 +80,9 @@ Continuous looping animations for attention and delight:
79
80
  - [See all ongoing animations →](docs/categories/ongoing-animations.md)
80
81
 
81
82
  ### 📜 Scroll Animations (19 presets)
83
+
82
84
  Scroll-synchronized effects that respond to viewport position:
85
+
83
86
  - **ParallaxScroll** - Classic parallax movement
84
87
  - **FadeScroll** - Opacity changes on scroll
85
88
  - **GrowScroll** - Scale transformations
@@ -88,7 +91,9 @@ Scroll-synchronized effects that respond to viewport position:
88
91
  - [See all scroll animations →](docs/categories/scroll-animations.md)
89
92
 
90
93
  ### 🖱️ Mouse Animations (12 presets)
94
+
91
95
  Interactive pointer-driven effects:
96
+
92
97
  - **TrackMouse** - Element follows cursor
93
98
  - **Tilt3DMouse** - 3D tilt based on pointer position
94
99
  - **ScaleMouse** - Dynamic scaling on hover
@@ -96,7 +101,9 @@ Interactive pointer-driven effects:
96
101
  - [See all mouse animations →](docs/categories/mouse-animations.md)
97
102
 
98
103
  ### 🖼️ Background Scroll Animations (12 presets)
104
+
99
105
  Specialized effects for background media elements:
106
+
100
107
  - **BgParallax** - Background parallax scrolling
101
108
  - **BgZoom** - Dynamic background scaling
102
109
  - **BgFade** - Background opacity transitions
@@ -106,17 +113,21 @@ Specialized effects for background media elements:
106
113
  ## 🛠️ Core APIs
107
114
 
108
115
  ### Animation Creation
116
+
109
117
  - `getWebAnimation()` - Create Web Animations API instances
110
118
  - `getScrubScene()` - Generate scroll/pointer-driven scenes
111
119
  - `prepareAnimation()` - Pre-calculate measurements for performance
112
120
 
113
121
  ### CSS Integration
122
+
114
123
  - CSS custom properties for dynamic values
115
124
  - CSS Animation API for stylesheet-based animations
116
125
  - Automatic vendor prefixing and fallbacks
117
126
 
118
127
  ### TypeScript Support
128
+
119
129
  Complete type definitions for all animation options:
130
+
120
131
  ```typescript
121
132
  interface TimeAnimationOptions {
122
133
  namedEffect: EntranceAnimation | OngoingAnimation;
@@ -138,6 +149,7 @@ interface TimeAnimationOptions {
138
149
  ## 🎮 Interactive Playground
139
150
 
140
151
  Explore animations interactively in our Storybook playground:
152
+
141
153
  ```bash
142
154
  yarn start # Opens interactive documentation
143
155
  ```
@@ -145,6 +157,7 @@ yarn start # Opens interactive documentation
145
157
  ## 🔧 Framework Integration
146
158
 
147
159
  Works seamlessly with popular frameworks:
160
+
148
161
  - React/Vue/Angular components
149
162
  - GSAP and Framer Motion compatibility
150
163
  - CSS-in-JS libraries
@@ -1,146 +1,2 @@
1
- "use strict";
2
-
3
- exports.__esModule = true;
4
- exports.getAnimation = getAnimation;
5
- exports.getElementAnimation = getElementAnimation;
6
- exports.getElementCSSAnimation = getElementCSSAnimation;
7
- exports.getScrubScene = getScrubScene;
8
- var _AnimationGroup = require("./AnimationGroup");
9
- var _utils = require("./utils");
10
- exports.getEasing = _utils.getEasing;
11
- var _webAnimations = require("./api/webAnimations");
12
- exports.getWebAnimation = _webAnimations.getWebAnimation;
13
- var _cssAnimations = require("./api/cssAnimations");
14
- exports.getCSSAnimation = _cssAnimations.getCSSAnimation;
15
- var _prepare = require("./api/prepare");
16
- exports.prepareAnimation = _prepare.prepareAnimation;
17
- var _common = require("./api/common");
18
- function getElementCSSAnimation(target, animationOptions) {
19
- const namedEffect = (0, _common.getNamedEffect)(animationOptions);
20
- if (!namedEffect) {
21
- return null;
22
- }
23
- if (!namedEffect.style) {
24
- // if this named effect does not have a style method, attempt to get group of Web Animations
25
- if (animationOptions.effectId && target) {
26
- return getElementAnimation(target, animationOptions.effectId);
27
- }
28
- return null;
29
- }
30
- const effectNames = namedEffect.getNames(animationOptions);
31
- const element = typeof target === 'string' ? (0, _common.getElement)(target) : target;
32
- const animations = element == null ? void 0 : element.getAnimations();
33
- const animationNames = (animations == null ? void 0 : animations.map(anim => anim.animationName)) || [];
34
- const filteredAnimations = [];
35
- effectNames.forEach(name => {
36
- if (animationNames.includes(name)) {
37
- filteredAnimations.push(animations == null ? void 0 : animations.find(anim => anim.animationName === name));
38
- }
39
- });
40
- return filteredAnimations != null && filteredAnimations.length ? new _AnimationGroup.AnimationGroup(filteredAnimations) : null;
41
- }
42
- function getElementAnimation(target, effectId) {
43
- const element = typeof target === 'string' ? (0, _common.getElement)(target) : target;
44
- // somehow get the right animations
45
- const animations = element == null ? void 0 : element.getAnimations().filter(anim => {
46
- const id = anim.id || anim.animationName;
47
- // if no id/name just return all animations
48
- return id ? id.startsWith(effectId) : true;
49
- });
50
- return animations != null && animations.length ? new _AnimationGroup.AnimationGroup(animations) : null;
51
- }
52
- function getScrubScene(target, animationOptions, trigger, sceneOptions = {}) {
53
- const {
54
- disabled,
55
- allowActiveEvent,
56
- ...rest
57
- } = sceneOptions;
58
- const animation = (0, _webAnimations.getWebAnimation)(target, animationOptions, trigger, rest);
59
- if (!animation) {
60
- return null;
61
- }
62
- let typeSpecificOptions = {};
63
- if (trigger.trigger === 'view-progress' && !window.ViewTimeline) {
64
- // TODO(ameerf): consider doing this only for bgscrub to not affect the other scroll effects
65
- const viewSource = trigger.element || (0, _common.getElement)(trigger.componentId);
66
- const {
67
- ready
68
- } = animation;
69
- return animation.animations.map(partialAnimation => {
70
- return {
71
- /* we use getters for start and end in order to access the animation's start and end
72
- only when initializing the scrub scene rather than immediately */
73
- get start() {
74
- return partialAnimation.start;
75
- },
76
- get end() {
77
- return partialAnimation.end;
78
- },
79
- viewSource,
80
- ready,
81
- getProgress() {
82
- return animation.getProgress();
83
- },
84
- effect(__, p) {
85
- const {
86
- activeDuration
87
- } = partialAnimation.effect.getComputedTiming();
88
- const {
89
- delay
90
- } = partialAnimation.effect.getTiming();
91
- partialAnimation.currentTime = ((delay || 0) + (activeDuration || 0)) * p;
92
- },
93
- disabled,
94
- destroy() {
95
- partialAnimation.cancel();
96
- }
97
- };
98
- });
99
- } else if (trigger.trigger === 'pointer-move') {
100
- const {
101
- centeredToTarget,
102
- transitionDuration,
103
- transitionEasing
104
- } = animationOptions;
105
- typeSpecificOptions = {
106
- target: animation.target,
107
- centeredToTarget,
108
- allowActiveEvent
109
- };
110
- if (animationOptions.customEffect && transitionDuration) {
111
- typeSpecificOptions.transitionDuration = transitionDuration;
112
- typeSpecificOptions.transitionEasing = (0, _utils.getJsEasing)(transitionEasing);
113
- }
114
- }
115
- return {
116
- ...typeSpecificOptions,
117
- getProgress() {
118
- return animation.getProgress();
119
- },
120
- effect(__, p, v, active) {
121
- animation.progress(v ? {
122
- // @ts-expect-error spread error on p
123
- ...p,
124
- v,
125
- active
126
- } : p);
127
- },
128
- disabled,
129
- destroy() {
130
- animation.cancel();
131
- }
132
- };
133
- }
134
- function getAnimation(target, animationOptions, trigger, reducedMotion = false) {
135
- const animation = getElementCSSAnimation(target, animationOptions);
136
- if (animation) {
137
- animation.ready = new Promise(resolve => {
138
- (0, _prepare.prepareAnimation)(target, animationOptions, resolve);
139
- });
140
- return animation;
141
- }
142
- return (0, _webAnimations.getWebAnimation)(target, animationOptions, trigger, {
143
- reducedMotion
144
- });
145
- }
146
- //# sourceMappingURL=motion.js.map
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});class S{animations;options;ready;isCSS;constructor(e,n){this.animations=e,this.options=n,this.ready=n?.measured||Promise.resolve(),this.isCSS=e[0]instanceof CSSAnimation}getProgress(){return this.animations[0]?.effect?.getComputedTiming().progress||0}async play(e){await this.ready;for(const n of this.animations)n.play();await Promise.all(this.animations.map(n=>n.ready)),e&&e()}pause(){for(const e of this.animations)e.pause()}async reverse(e){await this.ready;for(const n of this.animations)n.reverse();await Promise.all(this.animations.map(n=>n.ready)),e&&e()}progress(e){for(const n of this.animations){const{delay:i,duration:a,iterations:r}=n.effect.getTiming(),f=(Number.isFinite(a)?a:0)*(Number.isFinite(r)?r:1);n.currentTime=((i||0)+f)*e}}cancel(){for(const e of this.animations)e.cancel()}setPlaybackRate(e){for(const n of this.animations)n.playbackRate=e}async onFinish(e){try{await Promise.all(this.animations.map(i=>i.finished));const n=this.animations[0];if(n&&!this.isCSS){const i=n.effect?.target;if(i){const a=new Event("animationend");i.dispatchEvent(a)}}e()}catch(n){console.warn("animation was interrupted - aborting onFinish callback - ",n)}}get finished(){return Promise.all(this.animations.map(e=>e.finished))}get playState(){return this.animations[0]?.playState}}const N=t=>t,L=t=>1-Math.cos(t*Math.PI/2),j=t=>Math.sin(t*Math.PI/2),D=t=>-(Math.cos(Math.PI*t)-1)/2,H=t=>t**2,V=t=>1-(1-t)**2,W=t=>t<.5?2*t**2:1-(-2*t+2)**2/2,K=t=>t**3,G=t=>1-(1-t)**3,J=t=>t<.5?4*t**3:1-(-2*t+2)**3/2,U=t=>t**4,B=t=>1-(1-t)**4,Q=t=>t<.5?8*t**4:1-(-2*t+2)**4/2,X=t=>t**5,Y=t=>1-(1-t)**5,Z=t=>t<.5?16*t**5:1-(-2*t+2)**5/2,tt=t=>t===0?0:2**(10*t-10),et=t=>t===1?1:1-2**(-10*t),nt=t=>t===0?0:t===1?1:t<.5?2**(20*t-10)/2:(2-2**(-20*t+10))/2,it=t=>1-Math.sqrt(1-t**2),st=t=>Math.sqrt(1-(t-1)**2),rt=t=>t<.5?(1-Math.sqrt(1-4*t**2))/2:(Math.sqrt(-(2*t-3)*(2*t-1))+1)/2,at=t=>2.70158*t**3-1.70158*t**2,ot=t=>1+2.70158*(t-1)**3+1.70158*(t-1)**2,ct=(t,e=1.70158*1.525)=>t<.5?(2*t)**2*((e+1)*2*t-e)/2:((2*t-2)**2*((e+1)*(t*2-2)+e)+2)/2,ut={linear:N,sineIn:L,sineOut:j,sineInOut:D,quadIn:H,quadOut:V,quadInOut:W,cubicIn:K,cubicOut:G,cubicInOut:J,quartIn:U,quartOut:B,quartInOut:Q,quintIn:X,quintOut:Y,quintInOut:Z,expoIn:tt,expoOut:et,expoInOut:nt,circIn:it,circOut:st,circInOut:rt,backIn:at,backOut:ot,backInOut:ct},$={linear:"linear",ease:"ease",easeIn:"ease-in",easeOut:"ease-out",easeInOut:"ease-in-out",sineIn:"cubic-bezier(0.47, 0, 0.745, 0.715)",sineOut:"cubic-bezier(0.39, 0.575, 0.565, 1)",sineInOut:"cubic-bezier(0.445, 0.05, 0.55, 0.95)",quadIn:"cubic-bezier(0.55, 0.085, 0.68, 0.53)",quadOut:"cubic-bezier(0.25, 0.46, 0.45, 0.94)",quadInOut:"cubic-bezier(0.455, 0.03, 0.515, 0.955)",cubicIn:"cubic-bezier(0.55, 0.055, 0.675, 0.19)",cubicOut:"cubic-bezier(0.215, 0.61, 0.355, 1)",cubicInOut:"cubic-bezier(0.645, 0.045, 0.355, 1)",quartIn:"cubic-bezier(0.895, 0.03, 0.685, 0.22)",quartOut:"cubic-bezier(0.165, 0.84, 0.44, 1)",quartInOut:"cubic-bezier(0.77, 0, 0.175, 1)",quintIn:"cubic-bezier(0.755, 0.05, 0.855, 0.06)",quintOut:"cubic-bezier(0.23, 1, 0.32, 1)",quintInOut:"cubic-bezier(0.86, 0, 0.07, 1)",expoIn:"cubic-bezier(0.95, 0.05, 0.795, 0.035)",expoOut:"cubic-bezier(0.19, 1, 0.22, 1)",expoInOut:"cubic-bezier(1, 0, 0, 1)",circIn:"cubic-bezier(0.6, 0.04, 0.98, 0.335)",circOut:"cubic-bezier(0.075, 0.82, 0.165, 1)",circInOut:"cubic-bezier(0.785, 0.135, 0.15, 0.86)",backIn:"cubic-bezier(0.6, -0.28, 0.735, 0.045)",backOut:"cubic-bezier(0.175, 0.885, 0.32, 1.275)",backInOut:"cubic-bezier(0.68, -0.55, 0.265, 1.55)"};function ft(t){return t==="percentage"?"%":t||"px"}function mt(t){return t?$[t]||t:$.linear}function lt(t){return t?ut[t]:void 0}class Et{_animation;customEffect;progress;_tickCbId;_finishHandler;constructor(e,n,i,a){const r=new KeyframeEffect(n,[],{...i,composite:"add"}),{timeline:f}=a;this._animation=new Animation(r,f),this._tickCbId=null,this.progress=null,this.customEffect=u=>e(r.target,u),this._finishHandler=u=>{this.effect.target?.getAnimations().find(m=>m===this._animation)||this.cancel()},this.addEventListener("finish",this._finishHandler),this.addEventListener("remove",this._finishHandler)}_tick(){try{const e=this.effect?.getComputedTiming().progress??null;e!==this.progress&&(this.customEffect?.(e),this.progress=e),this._tickCbId=requestAnimationFrame(()=>{this._tick()})}catch(e){this._tickCbId=null,console.error(`failed to run customEffect! effectId: ${this.id}, error: ${e instanceof Error?e.message:e}`)}}get currentTime(){return this._animation.currentTime}set currentTime(e){this._animation.currentTime=e}get startTime(){return this._animation.startTime}set startTime(e){this._animation.startTime=e}get playbackRate(){return this._animation.playbackRate}set playbackRate(e){this._animation.playbackRate=e}get id(){return this._animation.id}set id(e){this._animation.id=e}get effect(){return this._animation.effect}set effect(e){this._animation.effect=e}get timeline(){return this._animation.timeline}set timeline(e){this._animation.timeline=e}get finished(){return this._animation.finished}get pending(){return this._animation.pending}get playState(){return this._animation.playState}get ready(){return this._animation.ready}get replaceState(){return this._animation.replaceState}get oncancel(){return this._animation.oncancel}set oncancel(e){this._animation.oncancel=e}get onfinish(){return this._animation.onfinish}set onfinish(e){this._animation.onfinish=e}get onremove(){return this._animation.onremove}set onremove(e){this._animation.onremove=e}play(){this._animation.play(),cancelAnimationFrame(this._tickCbId),this._tickCbId=requestAnimationFrame(()=>this._tick())}pause(){this._animation.pause(),cancelAnimationFrame(this._tickCbId),this._tickCbId=null}cancel(){this.removeEventListener("finish",this._finishHandler),this.removeEventListener("remove",this._finishHandler),this._animation.cancel(),this.customEffect(null),cancelAnimationFrame(this._tickCbId),this._tickCbId=null}commitStyles(){console.warn("CustomEffect animations do not support commitStyles method as they have no style to commit")}finish(){this._animation.finish()}persist(){this._animation.persist()}reverse(){this._animation.reverse()}updatePlaybackRate(e){this._animation.updatePlaybackRate(e)}addEventListener(e,n,i){this._animation.addEventListener(e,n,i)}removeEventListener(e,n,i){this._animation.removeEventListener(e,n,i)}dispatchEvent(e){return this._animation.dispatchEvent(e)}}function vt(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var _={exports:{}},x=_.exports,F;function _t(){return F||(F=1,(function(t){(function(e){var n=function(){},i=e.requestAnimationFrame||e.webkitRequestAnimationFrame||e.mozRequestAnimationFrame||e.msRequestAnimationFrame||function(s){return setTimeout(s,16)};function a(){var s=this;s.reads=[],s.writes=[],s.raf=i.bind(e)}a.prototype={constructor:a,runTasks:function(s){for(var o;o=s.shift();)o()},measure:function(s,o){var c=o?s.bind(o):s;return this.reads.push(c),r(this),c},mutate:function(s,o){var c=o?s.bind(o):s;return this.writes.push(c),r(this),c},clear:function(s){return u(this.reads,s)||u(this.writes,s)},extend:function(s){if(typeof s!="object")throw new Error("expected object");var o=Object.create(this);return m(o,s),o.fastdom=this,o.initialize&&o.initialize(),o},catch:null};function r(s){s.scheduled||(s.scheduled=!0,s.raf(f.bind(null,s)))}function f(s){var o=s.writes,c=s.reads,d;try{n("flushing reads",c.length),s.runTasks(c),n("flushing writes",o.length),s.runTasks(o)}catch(h){d=h}if(s.scheduled=!1,(c.length||o.length)&&r(s),d)if(n("task errored",d.message),s.catch)s.catch(d);else throw d}function u(s,o){var c=s.indexOf(o);return!!~c&&!!s.splice(c,1)}function m(s,o){for(var c in o)o.hasOwnProperty(c)&&(s[c]=o[c])}var l=e.fastdom=e.fastdom||new a;t.exports=l})(typeof window<"u"?window:typeof x<"u"?x:globalThis)})(_)),_.exports}var Ot=_t();const g=vt(Ot),q={};function wt(t){Object.assign(q,t)}function kt(t){return t in q?q[t]:(console.warn(`${t} not found in registry. Please make sure to import and register the preset.`),null)}function y(t,e){return t?(e||document).getElementById(t):null}function At(t,e){return t?.matches(`[data-motion-part~="${e}"]`)?t:t?.querySelector(`[data-motion-part~="${e}"]`)}function $t(t){const e=t.alternate?"alternate":"";return t.reversed?`${e?`${e}-`:""}reverse`:e||"normal"}function A(t){return`${t.value}${ft(t.type)}`}function M(t,e,n){return`${t.name||"cover"} ${n&&t.offset.type!=="percentage"?`calc(100% + ${A(t.offset)}${e?` + ${e}`:""})`:e?`calc(${A(t.offset)} + ${e})`:A(t.offset)}`}function dt(t){return{start:M(t.startOffset,t.startOffsetAdd),end:M(t.endOffset,t.endOffsetAdd,!0)}}function ht(t){return e=>g.measure(()=>e(t))}function gt(t){return e=>g.mutate(()=>e(t))}function v(t){if(t.namedEffect){const e=t.namedEffect.type;return typeof e=="string"?kt(e):null}else if(t.keyframeEffect){const e=i=>{const{name:a,keyframes:r}=i.keyframeEffect;return[{...i,name:a,keyframes:r}]};return{web:e,style:e,getNames:i=>{const{effectId:a}=i,{name:r}=i.keyframeEffect,f=r||a;return f?[f]:[]}}}else if(t.customEffect)return e=>[{...e,keyframes:[]}];return null}function bt(t,e,n){return t.map((i,a)=>{const r={fill:i.fill,easing:mt(i.easing),iterations:i.iterations===0?1/0:i.iterations||1,composite:i.composite,direction:$t(i)};return T(e)?(r.duration=i.duration,r.delay=i.delay||0):window.ViewTimeline&&e?.trigger==="view-progress"?r.duration="auto":(r.duration=99.99,r.delay=.01),{effect:i,options:r,id:n&&`${n}-${a+1}`,part:i.part}})}function T(t){return!t||t.trigger!=="pointer-move"&&t.trigger!=="view-progress"}function R(t,e,n,i,a){if(t){if(T(i)&&(e.duration=e.duration||1,a?.reducedMotion))if(e.iterations===1||e.iterations==null)e={...e,duration:1};else return[];let r;return n instanceof HTMLElement&&(r={measure:ht(n),mutate:gt(n)}),t.web?t.web(e,r,a):t(e,r,a)}return[]}function P(t,e,n,i,a){const r=t instanceof HTMLElement?t:y(t,a);if(n?.trigger==="pointer-move"&&!e.keyframeEffect){let c=e;e.customEffect&&(c={...e,namedEffect:{id:"",type:"CustomMouse"}});const d=v(c),h=R(d,e,r,n,i);return typeof h!="function"?null:h(r)}const f=v(e),u=R(f,e,r,n,i);if(!u||u.length===0)return null;const m=bt(u,n,e.effectId);let l;const s=n?.trigger==="view-progress";s&&window.ViewTimeline&&(l=new ViewTimeline({subject:n.element||y(n.componentId)}));const o=m.map(({effect:c,options:d,id:h,part:I})=>{const O=I?At(r,I):r,b=new KeyframeEffect(O||null,[],d);g.mutate(()=>{"timing"in c&&b.updateTiming(c.timing),b.setKeyframes(c.keyframes)});const E=s&&l?{timeline:l}:{},p=typeof c.customEffect=="function"?new Et(c.customEffect,O||null,d,E):new Animation(b,E.timeline);if(s)if(l)g.mutate(()=>{const{start:w,end:k}=dt(c);p.rangeStart=w,p.rangeEnd=k,p.play()});else{const{startOffset:w,endOffset:k}=e;g.mutate(()=>{const C=c.startOffset||w,z=c.endOffset||k;Object.assign(p,{start:{name:C.name,offset:C.offset?.value,add:c.startOffsetAdd},end:{name:z.name,offset:z.offset?.value,add:c.endOffsetAdd}})})}return h&&(p.id=h),p});return new S(o,{...e,trigger:{...n||{}},measured:new Promise(c=>g.mutate(c))})}function qt(t,e){return t?`#${t}${e?`[data-motion-part~="${e}"]`:""}`:""}function St(t,e){const{duration:n,delay:i,iterations:a=1,fill:r,easing:f="linear",direction:u}=t.options,m=t.effect.name,l=n==="auto";return`${m} ${l?"auto":`${n}ms`}${l?" ":` ${i||1}ms `}${f}${r&&r!=="none"?` ${r}`:""} ${!a||a===1/0?"infinite":a}${u==="normal"?"":` ${u}`} ${e?"":"paused"}`}function Tt(t,e,n){return t?.style?(T(n)&&(e.duration=e.duration||1),t.style(e)):[]}function Pt(t,e,n){const i=v(e),a=Tt(i,e),r=bt(a,n,e.effectId),f=n?.trigger==="view-progress";return r.map((u,m)=>{const{start:l,end:s}=f?dt(u.effect):{};return{target:qt(t,u.part),animation:St(u,f),composition:u.options.composite,custom:u.effect.custom,name:u.effect.name,keyframes:u.effect.keyframes,id:u.id&&`${u.id}-${m+1}`,animationTimeline:f?`--${n?.id}`:"",animationRange:l||s?`${l} ${s}`:""}})}function pt(t,e,n){const i=v(e),a=t instanceof HTMLElement?t:y(t);if(i&&i.prepare&&a){const r={measure:ht(a),mutate:gt(a)};i.prepare(e,r)}n&&g.mutate(n)}function yt(t,e){const n=v(e);if(!n)return null;if(!n.style)return e.effectId&&t?It(t,e.effectId):null;const i=n.getNames(e),r=(typeof t=="string"?y(t):t)?.getAnimations(),f=r?.map(m=>m.animationName)||[],u=[];return i.forEach(m=>{f.includes(m)&&u.push(r?.find(l=>l.animationName===m))}),u?.length?new S(u):null}function It(t,e){const i=(typeof t=="string"?y(t):t)?.getAnimations().filter(a=>{const r=a.id||a.animationName;return r?r.startsWith(e):!0});return i?.length?new S(i):null}function Ct(t,e,n,i={}){const{disabled:a,allowActiveEvent:r,...f}=i,u=P(t,e,n,f);if(!u)return null;let m={};if(n.trigger==="view-progress"&&!window.ViewTimeline){const l=n.element||y(n.componentId),{ready:s}=u;return u.animations.map(o=>({get start(){return o.start},get end(){return o.end},viewSource:l,ready:s,getProgress(){return u.getProgress()},effect(c,d){const{activeDuration:h}=o.effect.getComputedTiming(),{delay:I}=o.effect.getTiming();o.currentTime=((I||0)+(h||0))*d},disabled:a,destroy(){o.cancel()}}))}else if(n.trigger==="pointer-move"){const l=e,{centeredToTarget:s,transitionDuration:o,transitionEasing:c}=l,d=n.axis;if(l.keyframeEffect){const h=u;return h.animations?.length===0?null:{target:void 0,centeredToTarget:s,ready:h.ready,_currentProgress:0,getProgress(){return this._currentProgress},effect(O,b){const E=d==="x"?b.x:b.y;this._currentProgress=E,h.progress(E)},disabled:a??!1,destroy(){h.cancel()}}}m={centeredToTarget:s,allowActiveEvent:r},e.customEffect&&o&&(m.transitionDuration=o,m.transitionEasing=lt(c)),m.target=u.target}return{...m,getProgress(){return u.getProgress()},effect(l,s,o,c){u.progress(o?{...s,v:o,active:c}:s)},disabled:a,destroy(){u.cancel()}}}function zt(t,e,n,i=!1){const a=yt(t,e);return a?(a.ready=new Promise(r=>{pt(t,e,r)}),a):P(t,e,n,{reducedMotion:i})}exports.backIn=at;exports.backInOut=ct;exports.backOut=ot;exports.circIn=it;exports.circInOut=rt;exports.circOut=st;exports.cssEasings=$;exports.cubicIn=K;exports.cubicInOut=J;exports.cubicOut=G;exports.expoIn=tt;exports.expoInOut=nt;exports.expoOut=et;exports.getAnimation=zt;exports.getCSSAnimation=Pt;exports.getCssUnits=ft;exports.getEasing=mt;exports.getElementAnimation=It;exports.getElementCSSAnimation=yt;exports.getJsEasing=lt;exports.getScrubScene=Ct;exports.getWebAnimation=P;exports.jsEasings=ut;exports.linear=N;exports.prepareAnimation=pt;exports.quadIn=H;exports.quadInOut=W;exports.quadOut=V;exports.quartIn=U;exports.quartInOut=Q;exports.quartOut=B;exports.quintIn=X;exports.quintInOut=Z;exports.quintOut=Y;exports.registerEffects=wt;exports.sineIn=L;exports.sineInOut=D;exports.sineOut=j;
2
+ //# sourceMappingURL=motion.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_AnimationGroup","require","_utils","exports","getEasing","_webAnimations","getWebAnimation","_cssAnimations","getCSSAnimation","_prepare","prepareAnimation","_common","getElementCSSAnimation","target","animationOptions","namedEffect","getNamedEffect","style","effectId","getElementAnimation","effectNames","getNames","element","getElement","animations","getAnimations","animationNames","map","anim","animationName","filteredAnimations","forEach","name","includes","push","find","length","AnimationGroup","filter","id","startsWith","getScrubScene","trigger","sceneOptions","disabled","allowActiveEvent","rest","animation","typeSpecificOptions","window","ViewTimeline","viewSource","componentId","ready","partialAnimation","start","end","getProgress","effect","__","p","activeDuration","getComputedTiming","delay","getTiming","currentTime","destroy","cancel","centeredToTarget","transitionDuration","transitionEasing","customEffect","getJsEasing","v","active","progress","getAnimation","reducedMotion","Promise","resolve"],"sources":["../../src/motion.ts"],"sourcesContent":["import type {\n AnimationOptions,\n ScrubAnimationOptions,\n TriggerVariant,\n MouseAnimationInstance,\n AnimationEffectAPI,\n CustomMouseAnimationInstance,\n ScrubScrollScene,\n ScrubPointerScene,\n} from './types';\nimport { AnimationGroup } from './AnimationGroup';\nimport { getEasing, getJsEasing } from './utils';\nimport { getWebAnimation } from './api/webAnimations';\nimport { getCSSAnimation } from './api/cssAnimations';\nimport { prepareAnimation } from './api/prepare';\nimport { getElement, getNamedEffect } from './api/common';\n\nfunction getElementCSSAnimation(\n target: HTMLElement | string | null,\n animationOptions: AnimationOptions,\n): AnimationGroup | null {\n const namedEffect = getNamedEffect(\n animationOptions,\n ) as AnimationEffectAPI<any> | null;\n\n if (!namedEffect) {\n return null;\n }\n\n if (!namedEffect.style) {\n // if this named effect does not have a style method, attempt to get group of Web Animations\n if (animationOptions.effectId && target) {\n return getElementAnimation(target, animationOptions.effectId);\n }\n\n return null;\n }\n\n const effectNames = namedEffect.getNames(animationOptions);\n const element = typeof target === 'string' ? getElement(target) : target;\n const animations = element?.getAnimations();\n const animationNames =\n animations?.map((anim) => (anim as CSSAnimation).animationName) ||\n ([] as string[]);\n const filteredAnimations: CSSAnimation[] = [];\n\n effectNames.forEach((name) => {\n if (animationNames.includes(name)) {\n filteredAnimations.push(\n animations?.find(\n (anim) => (anim as CSSAnimation).animationName === name,\n ) as CSSAnimation,\n );\n }\n });\n\n return filteredAnimations?.length\n ? new AnimationGroup(filteredAnimations)\n : null;\n}\n\nfunction getElementAnimation(\n target: HTMLElement | string,\n effectId: string,\n): AnimationGroup | null {\n const element = typeof target === 'string' ? getElement(target) : target;\n // somehow get the right animations\n const animations = element\n ?.getAnimations()\n .filter((anim: Animation | CSSAnimation) => {\n const id = anim.id || (anim as CSSAnimation).animationName;\n // if no id/name just return all animations\n return id ? id.startsWith(effectId) : true;\n });\n\n return animations?.length ? new AnimationGroup(animations) : null;\n}\n\nfunction getScrubScene(\n target: HTMLElement | string | null,\n animationOptions: AnimationOptions,\n trigger: Partial<TriggerVariant> & { element?: HTMLElement },\n sceneOptions: Record<string, any> = {},\n): ScrubScrollScene[] | ScrubPointerScene | null {\n const { disabled, allowActiveEvent, ...rest } = sceneOptions;\n const animation = getWebAnimation(target, animationOptions, trigger, rest);\n\n if (!animation) {\n return null;\n }\n\n let typeSpecificOptions = {} as Record<string, any>;\n\n if (trigger.trigger === 'view-progress' && !window.ViewTimeline) {\n // TODO(ameerf): consider doing this only for bgscrub to not affect the other scroll effects\n const viewSource = trigger.element || getElement(trigger.componentId!);\n const { ready } = animation as AnimationGroup;\n\n return (animation as AnimationGroup).animations.map((partialAnimation) => {\n return {\n /* we use getters for start and end in order to access the animation's start and end\n only when initializing the scrub scene rather than immediately */\n get start() {\n return partialAnimation.start;\n },\n get end() {\n return partialAnimation.end;\n },\n viewSource,\n ready,\n getProgress() {\n return (animation as AnimationGroup).getProgress();\n },\n effect(__: any, p: number) {\n const { activeDuration } =\n partialAnimation.effect!.getComputedTiming();\n const { delay } = partialAnimation.effect!.getTiming();\n\n partialAnimation.currentTime =\n ((delay || 0) + ((activeDuration as number) || 0)) * p;\n },\n disabled,\n destroy() {\n partialAnimation.cancel();\n },\n } as ScrubScrollScene;\n });\n } else if (trigger.trigger === 'pointer-move') {\n const { centeredToTarget, transitionDuration, transitionEasing } =\n animationOptions as ScrubAnimationOptions;\n\n typeSpecificOptions = {\n target: (animation as MouseAnimationInstance).target,\n centeredToTarget,\n allowActiveEvent,\n };\n\n if (animationOptions.customEffect && transitionDuration) {\n typeSpecificOptions.transitionDuration = transitionDuration;\n typeSpecificOptions.transitionEasing = getJsEasing(transitionEasing);\n }\n }\n\n return {\n ...typeSpecificOptions,\n getProgress() {\n return (\n animation as AnimationGroup | CustomMouseAnimationInstance\n ).getProgress();\n },\n effect(\n __: any,\n p: number | { x: number; y: number },\n v?: { x: number; y: number },\n active?: boolean,\n ) {\n animation.progress(\n v\n ? {\n // @ts-expect-error spread error on p\n ...p,\n v,\n active,\n }\n : p,\n );\n },\n disabled,\n destroy() {\n animation.cancel();\n },\n } as ScrubPointerScene;\n}\n\nfunction getAnimation(\n target: HTMLElement | string | null,\n animationOptions: AnimationOptions,\n trigger?: Partial<TriggerVariant> & { element?: HTMLElement },\n reducedMotion: boolean = false,\n): AnimationGroup | MouseAnimationInstance | null {\n const animation = getElementCSSAnimation(target, animationOptions);\n\n if (animation) {\n animation.ready = new Promise((resolve) => {\n prepareAnimation(target, animationOptions, resolve);\n });\n\n return animation;\n }\n\n return getWebAnimation(target, animationOptions, trigger, { reducedMotion });\n}\n\nexport {\n getCSSAnimation,\n getWebAnimation,\n getElementCSSAnimation,\n getElementAnimation,\n getScrubScene,\n prepareAnimation,\n getAnimation,\n getEasing,\n};\n\nexport type { AnimationGroup };\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"motion.js","sources":["../../src/AnimationGroup.ts","../../src/easings.ts","../../src/utils.ts","../../src/CustomAnimation.ts","../../../../node_modules/fastdom/fastdom.js","../../src/api/registry.ts","../../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';\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","/**\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","!(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 { EffectModule } from '../types';\n\nconst registry: Record<string, EffectModule> = {};\n\nexport function registerEffects(effects: Record<string, EffectModule>) {\n Object.assign(registry, effects);\n}\n\nexport function getRegisteredEffect(name: string) {\n if (name in registry) {\n return registry[name];\n } else {\n console.warn(\n `${name} not found in registry. Please make sure to import and register the preset.`,\n );\n return null;\n }\n}\n","import type {\n AnimationData,\n AnimationDataForScrub,\n AnimationOptions,\n MeasureCallback,\n RangeOffset,\n TimeAnimationOptions,\n TriggerVariant,\n UnitLengthPercentage,\n} from '../types';\nimport { getCssUnits, getEasing } from '../utils';\nimport fastdom from 'fastdom';\nimport { getRegisteredEffect } from './registry';\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 effectName = animation.namedEffect.type;\n return typeof effectName === 'string' ? getRegisteredEffect(effectName) : null;\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 AND this is a view-progress trigger\n if (window.ViewTimeline && trigger?.trigger === 'view-progress') {\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' && !animationOptions.keyframeEffect) {\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 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 PointerMoveAxis,\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 | 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 scrubOptions = animationOptions as ScrubAnimationOptions;\n const { centeredToTarget, transitionDuration, transitionEasing } = scrubOptions;\n const axis = (trigger as { axis?: PointerMoveAxis }).axis;\n\n if (scrubOptions.keyframeEffect) {\n const animationGroup = animation as AnimationGroup;\n\n if (animationGroup.animations?.length === 0) {\n return null;\n }\n\n const scene: ScrubPointerScene & { _currentProgress: number } = {\n target: undefined,\n centeredToTarget,\n ready: animationGroup.ready,\n _currentProgress: 0,\n getProgress() {\n return this._currentProgress;\n },\n effect(__: any, p: { x: number; y: number }) {\n const linearProgress = axis === 'x' ? p.x : p.y;\n this._currentProgress = linearProgress;\n animationGroup.progress(linearProgress);\n },\n disabled: disabled ?? false,\n destroy() {\n animationGroup.cancel();\n },\n };\n\n return scene;\n }\n\n typeSpecificOptions = {\n centeredToTarget,\n allowActiveEvent,\n };\n\n if (animationOptions.customEffect && transitionDuration) {\n typeSpecificOptions.transitionDuration = transitionDuration;\n // TODO: refactor js easings\n typeSpecificOptions.transitionEasing = getJsEasing(transitionEasing);\n }\n typeSpecificOptions.target = (animation as MouseAnimationInstance).target;\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","getCssUnits","type","getEasing","easing","getJsEasing","CustomAnimation","customEffect","effectOptions","timingOptions","effect","timeline","progress","_","error","speed","uid","tl","cb","playbackRate","listener","event","win","debug","raf","FastDom","self","tasks","task","fn","ctx","scheduleFlush","remove","props","child","mixin","fastdom","flush","writes","reads","e","array","item","index","source","key","exports","module","this","registry","registerEffects","effects","getRegisteredEffect","name","getElement","id","ownerDocument","getElementMotionPart","element","part","getDirection","alternate","getLength","length","getRange","range","add","isEnd","getRanges","measure","mutate","getNamedEffect","effectName","animation_","keyframes","effectId","getEffectsData","trigger","isNotAScrubTrigger","getWebAnimationEffect","preset","domApi","getWebAnimation","animationOptions","mouseAnimationPreset","mouseAnimationFactory","namedEffect","animationsData","data","isViewProgress","effectTarget","keyframeEffect","start","end","startOffset","endOffset","startOffsetToWrite","endOffsetToWrite","resolve","getAnimationTarget","getAnimationAsCSS","isRunning","fill","direction","animationName","isAutoDuration","getCSSAnimationEffect","getCSSAnimation","prepareAnimation","getElementCSSAnimation","getElementAnimation","effectNames","animationNames","anim","filteredAnimations","getScrubScene","sceneOptions","disabled","allowActiveEvent","rest","typeSpecificOptions","viewSource","ready","partialAnimation","__","activeDuration","scrubOptions","centeredToTarget","transitionDuration","transitionEasing","axis","animationGroup","linearProgress","v","active","getAnimation","reducedMotion"],"mappings":"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","x_google_ignoreList":[4]}