@wix/motion-presets 1.0.0-0 → 1.0.0-1

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 (188) hide show
  1. package/dist/cjs/motion-presets.js +2 -0
  2. package/dist/cjs/motion-presets.js.map +1 -0
  3. package/dist/cjs/types.js +2 -0
  4. package/dist/cjs/types.js.map +1 -0
  5. package/dist/es/motion-presets.js +5411 -0
  6. package/dist/es/motion-presets.js.map +1 -0
  7. package/dist/es/types.js +2 -0
  8. package/dist/es/types.js.map +1 -0
  9. package/dist/tsconfig.build.tsbuildinfo +1 -0
  10. package/dist/types/index.d.ts +6 -0
  11. package/dist/types/index.d.ts.map +1 -0
  12. package/dist/types/library/backgroundScroll/BgCloseUp.d.ts +131 -0
  13. package/dist/types/library/backgroundScroll/BgCloseUp.d.ts.map +1 -0
  14. package/dist/types/library/backgroundScroll/BgFade.d.ts +71 -0
  15. package/dist/types/library/backgroundScroll/BgFade.d.ts.map +1 -0
  16. package/dist/types/library/backgroundScroll/BgFadeBack.d.ts +133 -0
  17. package/dist/types/library/backgroundScroll/BgFadeBack.d.ts.map +1 -0
  18. package/dist/types/library/backgroundScroll/BgFake3D.d.ts +130 -0
  19. package/dist/types/library/backgroundScroll/BgFake3D.d.ts.map +1 -0
  20. package/dist/types/library/backgroundScroll/BgPan.d.ts +68 -0
  21. package/dist/types/library/backgroundScroll/BgPan.d.ts.map +1 -0
  22. package/dist/types/library/backgroundScroll/BgParallax.d.ts +68 -0
  23. package/dist/types/library/backgroundScroll/BgParallax.d.ts.map +1 -0
  24. package/dist/types/library/backgroundScroll/BgPullBack.d.ts +68 -0
  25. package/dist/types/library/backgroundScroll/BgPullBack.d.ts.map +1 -0
  26. package/dist/types/library/backgroundScroll/BgReveal.d.ts +8 -0
  27. package/dist/types/library/backgroundScroll/BgReveal.d.ts.map +1 -0
  28. package/dist/types/library/backgroundScroll/BgRotate.d.ts +53 -0
  29. package/dist/types/library/backgroundScroll/BgRotate.d.ts.map +1 -0
  30. package/dist/types/library/backgroundScroll/BgSkew.d.ts +68 -0
  31. package/dist/types/library/backgroundScroll/BgSkew.d.ts.map +1 -0
  32. package/dist/types/library/backgroundScroll/BgZoom.d.ts +8 -0
  33. package/dist/types/library/backgroundScroll/BgZoom.d.ts.map +1 -0
  34. package/dist/types/library/backgroundScroll/ImageParallax.d.ts +69 -0
  35. package/dist/types/library/backgroundScroll/ImageParallax.d.ts.map +1 -0
  36. package/dist/types/library/backgroundScroll/index.d.ts +13 -0
  37. package/dist/types/library/backgroundScroll/index.d.ts.map +1 -0
  38. package/dist/types/library/backgroundScroll/utils.d.ts +10 -0
  39. package/dist/types/library/backgroundScroll/utils.d.ts.map +1 -0
  40. package/dist/types/library/entrance/ArcIn.d.ts +102 -0
  41. package/dist/types/library/entrance/ArcIn.d.ts.map +1 -0
  42. package/dist/types/library/entrance/BlurIn.d.ts +91 -0
  43. package/dist/types/library/entrance/BlurIn.d.ts.map +1 -0
  44. package/dist/types/library/entrance/BounceIn.d.ts +111 -0
  45. package/dist/types/library/entrance/BounceIn.d.ts.map +1 -0
  46. package/dist/types/library/entrance/CircleIn.d.ts +122 -0
  47. package/dist/types/library/entrance/CircleIn.d.ts.map +1 -0
  48. package/dist/types/library/entrance/CurveIn.d.ts +74 -0
  49. package/dist/types/library/entrance/CurveIn.d.ts.map +1 -0
  50. package/dist/types/library/entrance/DropIn.d.ts +97 -0
  51. package/dist/types/library/entrance/DropIn.d.ts.map +1 -0
  52. package/dist/types/library/entrance/ExpandIn.d.ts +102 -0
  53. package/dist/types/library/entrance/ExpandIn.d.ts.map +1 -0
  54. package/dist/types/library/entrance/FadeIn.d.ts +47 -0
  55. package/dist/types/library/entrance/FadeIn.d.ts.map +1 -0
  56. package/dist/types/library/entrance/FlipIn.d.ts +100 -0
  57. package/dist/types/library/entrance/FlipIn.d.ts.map +1 -0
  58. package/dist/types/library/entrance/FloatIn.d.ts +73 -0
  59. package/dist/types/library/entrance/FloatIn.d.ts.map +1 -0
  60. package/dist/types/library/entrance/FoldIn.d.ts +104 -0
  61. package/dist/types/library/entrance/FoldIn.d.ts.map +1 -0
  62. package/dist/types/library/entrance/GlideIn.d.ts +74 -0
  63. package/dist/types/library/entrance/GlideIn.d.ts.map +1 -0
  64. package/dist/types/library/entrance/GlitchIn.d.ts +73 -0
  65. package/dist/types/library/entrance/GlitchIn.d.ts.map +1 -0
  66. package/dist/types/library/entrance/GrowIn.d.ts +101 -0
  67. package/dist/types/library/entrance/GrowIn.d.ts.map +1 -0
  68. package/dist/types/library/entrance/PunchIn.d.ts +106 -0
  69. package/dist/types/library/entrance/PunchIn.d.ts.map +1 -0
  70. package/dist/types/library/entrance/RevealIn.d.ts +72 -0
  71. package/dist/types/library/entrance/RevealIn.d.ts.map +1 -0
  72. package/dist/types/library/entrance/ShapeIn.d.ts +99 -0
  73. package/dist/types/library/entrance/ShapeIn.d.ts.map +1 -0
  74. package/dist/types/library/entrance/ShuttersIn.d.ts +73 -0
  75. package/dist/types/library/entrance/ShuttersIn.d.ts.map +1 -0
  76. package/dist/types/library/entrance/SlideIn.d.ts +66 -0
  77. package/dist/types/library/entrance/SlideIn.d.ts.map +1 -0
  78. package/dist/types/library/entrance/SpinIn.d.ts +103 -0
  79. package/dist/types/library/entrance/SpinIn.d.ts.map +1 -0
  80. package/dist/types/library/entrance/TiltIn.d.ts +162 -0
  81. package/dist/types/library/entrance/TiltIn.d.ts.map +1 -0
  82. package/dist/types/library/entrance/TurnIn.d.ts +101 -0
  83. package/dist/types/library/entrance/TurnIn.d.ts.map +1 -0
  84. package/dist/types/library/entrance/WinkIn.d.ts +154 -0
  85. package/dist/types/library/entrance/WinkIn.d.ts.map +1 -0
  86. package/dist/types/library/entrance/index.d.ts +24 -0
  87. package/dist/types/library/entrance/index.d.ts.map +1 -0
  88. package/dist/types/library/mouse/AiryMouse.d.ts +9 -0
  89. package/dist/types/library/mouse/AiryMouse.d.ts.map +1 -0
  90. package/dist/types/library/mouse/BlobMouse.d.ts +9 -0
  91. package/dist/types/library/mouse/BlobMouse.d.ts.map +1 -0
  92. package/dist/types/library/mouse/BlurMouse.d.ts +9 -0
  93. package/dist/types/library/mouse/BlurMouse.d.ts.map +1 -0
  94. package/dist/types/library/mouse/BounceMouse.d.ts +11 -0
  95. package/dist/types/library/mouse/BounceMouse.d.ts.map +1 -0
  96. package/dist/types/library/mouse/CustomMouse.d.ts +13 -0
  97. package/dist/types/library/mouse/CustomMouse.d.ts.map +1 -0
  98. package/dist/types/library/mouse/ScaleMouse.d.ts +9 -0
  99. package/dist/types/library/mouse/ScaleMouse.d.ts.map +1 -0
  100. package/dist/types/library/mouse/SkewMouse.d.ts +9 -0
  101. package/dist/types/library/mouse/SkewMouse.d.ts.map +1 -0
  102. package/dist/types/library/mouse/SpinMouse.d.ts +10 -0
  103. package/dist/types/library/mouse/SpinMouse.d.ts.map +1 -0
  104. package/dist/types/library/mouse/SwivelMouse.d.ts +9 -0
  105. package/dist/types/library/mouse/SwivelMouse.d.ts.map +1 -0
  106. package/dist/types/library/mouse/Tilt3DMouse.d.ts +9 -0
  107. package/dist/types/library/mouse/Tilt3DMouse.d.ts.map +1 -0
  108. package/dist/types/library/mouse/Track3DMouse.d.ts +9 -0
  109. package/dist/types/library/mouse/Track3DMouse.d.ts.map +1 -0
  110. package/dist/types/library/mouse/TrackMouse.d.ts +9 -0
  111. package/dist/types/library/mouse/TrackMouse.d.ts.map +1 -0
  112. package/dist/types/library/mouse/index.d.ts +13 -0
  113. package/dist/types/library/mouse/index.d.ts.map +1 -0
  114. package/dist/types/library/ongoing/Bounce.d.ts +61 -0
  115. package/dist/types/library/ongoing/Bounce.d.ts.map +1 -0
  116. package/dist/types/library/ongoing/Breathe.d.ts +64 -0
  117. package/dist/types/library/ongoing/Breathe.d.ts.map +1 -0
  118. package/dist/types/library/ongoing/Cross.d.ts +34 -0
  119. package/dist/types/library/ongoing/Cross.d.ts.map +1 -0
  120. package/dist/types/library/ongoing/DVD.d.ts +45 -0
  121. package/dist/types/library/ongoing/DVD.d.ts.map +1 -0
  122. package/dist/types/library/ongoing/Flash.d.ts +63 -0
  123. package/dist/types/library/ongoing/Flash.d.ts.map +1 -0
  124. package/dist/types/library/ongoing/Flip.d.ts +71 -0
  125. package/dist/types/library/ongoing/Flip.d.ts.map +1 -0
  126. package/dist/types/library/ongoing/Fold.d.ts +64 -0
  127. package/dist/types/library/ongoing/Fold.d.ts.map +1 -0
  128. package/dist/types/library/ongoing/Jello.d.ts +55 -0
  129. package/dist/types/library/ongoing/Jello.d.ts.map +1 -0
  130. package/dist/types/library/ongoing/Poke.d.ts +55 -0
  131. package/dist/types/library/ongoing/Poke.d.ts.map +1 -0
  132. package/dist/types/library/ongoing/Pulse.d.ts +55 -0
  133. package/dist/types/library/ongoing/Pulse.d.ts.map +1 -0
  134. package/dist/types/library/ongoing/Rubber.d.ts +55 -0
  135. package/dist/types/library/ongoing/Rubber.d.ts.map +1 -0
  136. package/dist/types/library/ongoing/Spin.d.ts +69 -0
  137. package/dist/types/library/ongoing/Spin.d.ts.map +1 -0
  138. package/dist/types/library/ongoing/Swing.d.ts +64 -0
  139. package/dist/types/library/ongoing/Swing.d.ts.map +1 -0
  140. package/dist/types/library/ongoing/Wiggle.d.ts +55 -0
  141. package/dist/types/library/ongoing/Wiggle.d.ts.map +1 -0
  142. package/dist/types/library/ongoing/index.d.ts +14 -0
  143. package/dist/types/library/ongoing/index.d.ts.map +1 -0
  144. package/dist/types/library/scroll/ArcScroll.d.ts +57 -0
  145. package/dist/types/library/scroll/ArcScroll.d.ts.map +1 -0
  146. package/dist/types/library/scroll/BlurScroll.d.ts +59 -0
  147. package/dist/types/library/scroll/BlurScroll.d.ts.map +1 -0
  148. package/dist/types/library/scroll/FadeScroll.d.ts +57 -0
  149. package/dist/types/library/scroll/FadeScroll.d.ts.map +1 -0
  150. package/dist/types/library/scroll/FlipScroll.d.ts +57 -0
  151. package/dist/types/library/scroll/FlipScroll.d.ts.map +1 -0
  152. package/dist/types/library/scroll/GrowScroll.d.ts +69 -0
  153. package/dist/types/library/scroll/GrowScroll.d.ts.map +1 -0
  154. package/dist/types/library/scroll/MoveScroll.d.ts +65 -0
  155. package/dist/types/library/scroll/MoveScroll.d.ts.map +1 -0
  156. package/dist/types/library/scroll/PanScroll.d.ts +58 -0
  157. package/dist/types/library/scroll/PanScroll.d.ts.map +1 -0
  158. package/dist/types/library/scroll/ParallaxScroll.d.ts +59 -0
  159. package/dist/types/library/scroll/ParallaxScroll.d.ts.map +1 -0
  160. package/dist/types/library/scroll/RevealScroll.d.ts +58 -0
  161. package/dist/types/library/scroll/RevealScroll.d.ts.map +1 -0
  162. package/dist/types/library/scroll/ShapeScroll.d.ts +65 -0
  163. package/dist/types/library/scroll/ShapeScroll.d.ts.map +1 -0
  164. package/dist/types/library/scroll/ShrinkScroll.d.ts +69 -0
  165. package/dist/types/library/scroll/ShrinkScroll.d.ts.map +1 -0
  166. package/dist/types/library/scroll/ShuttersScroll.d.ts +61 -0
  167. package/dist/types/library/scroll/ShuttersScroll.d.ts.map +1 -0
  168. package/dist/types/library/scroll/SkewPanScroll.d.ts +62 -0
  169. package/dist/types/library/scroll/SkewPanScroll.d.ts.map +1 -0
  170. package/dist/types/library/scroll/SlideScroll.d.ts +52 -0
  171. package/dist/types/library/scroll/SlideScroll.d.ts.map +1 -0
  172. package/dist/types/library/scroll/Spin3dScroll.d.ts +73 -0
  173. package/dist/types/library/scroll/Spin3dScroll.d.ts.map +1 -0
  174. package/dist/types/library/scroll/SpinScroll.d.ts +61 -0
  175. package/dist/types/library/scroll/SpinScroll.d.ts.map +1 -0
  176. package/dist/types/library/scroll/StretchScroll.d.ts +125 -0
  177. package/dist/types/library/scroll/StretchScroll.d.ts.map +1 -0
  178. package/dist/types/library/scroll/TiltScroll.d.ts +143 -0
  179. package/dist/types/library/scroll/TiltScroll.d.ts.map +1 -0
  180. package/dist/types/library/scroll/TurnScroll.d.ts +66 -0
  181. package/dist/types/library/scroll/TurnScroll.d.ts.map +1 -0
  182. package/dist/types/library/scroll/index.d.ts +20 -0
  183. package/dist/types/library/scroll/index.d.ts.map +1 -0
  184. package/dist/types/types.d.ts +480 -0
  185. package/dist/types/types.d.ts.map +1 -0
  186. package/dist/types/utils.d.ts +64 -0
  187. package/dist/types/utils.d.ts.map +1 -0
  188. package/package.json +3 -8
@@ -0,0 +1 @@
1
+ {"version":3,"file":"motion-presets.js","sources":["../../src/utils.ts","../../src/library/mouse/CustomMouse.ts","../../src/library/mouse/AiryMouse.ts","../../src/library/mouse/BlobMouse.ts","../../src/library/mouse/BlurMouse.ts","../../src/library/mouse/TrackMouse.ts","../../src/library/mouse/BounceMouse.ts","../../src/library/mouse/ScaleMouse.ts","../../src/library/mouse/SkewMouse.ts","../../src/library/mouse/SpinMouse.ts","../../src/library/mouse/SwivelMouse.ts","../../src/library/mouse/Tilt3DMouse.ts","../../src/library/mouse/Track3DMouse.ts","../../src/library/backgroundScroll/utils.ts","../../src/library/backgroundScroll/BgCloseUp.ts","../../src/library/backgroundScroll/BgFade.ts","../../src/library/backgroundScroll/BgFadeBack.ts","../../src/library/backgroundScroll/BgFake3D.ts","../../src/library/backgroundScroll/BgPan.ts","../../src/library/backgroundScroll/BgParallax.ts","../../src/library/backgroundScroll/BgPullBack.ts","../../src/library/backgroundScroll/BgReveal.ts","../../src/library/backgroundScroll/BgRotate.ts","../../src/library/backgroundScroll/BgSkew.ts","../../src/library/backgroundScroll/BgZoom.ts","../../src/library/backgroundScroll/ImageParallax.ts","../../src/library/ongoing/Bounce.ts","../../src/library/ongoing/Breathe.ts","../../src/library/ongoing/Cross.ts","../../src/library/ongoing/Flash.ts","../../src/library/ongoing/Flip.ts","../../src/library/ongoing/Fold.ts","../../src/library/ongoing/Jello.ts","../../src/library/ongoing/Poke.ts","../../src/library/ongoing/Rubber.ts","../../src/library/ongoing/Pulse.ts","../../src/library/ongoing/Spin.ts","../../src/library/ongoing/Swing.ts","../../src/library/ongoing/Wiggle.ts","../../src/library/scroll/ArcScroll.ts","../../src/library/scroll/BlurScroll.ts","../../src/library/scroll/FadeScroll.ts","../../src/library/scroll/FlipScroll.ts","../../src/library/scroll/GrowScroll.ts","../../src/library/scroll/MoveScroll.ts","../../src/library/scroll/PanScroll.ts","../../src/library/scroll/ParallaxScroll.ts","../../src/library/scroll/RevealScroll.ts","../../src/library/scroll/ShapeScroll.ts","../../src/library/scroll/ShuttersScroll.ts","../../src/library/scroll/ShrinkScroll.ts","../../src/library/scroll/SkewPanScroll.ts","../../src/library/scroll/SlideScroll.ts","../../src/library/scroll/Spin3dScroll.ts","../../src/library/scroll/SpinScroll.ts","../../src/library/scroll/StretchScroll.ts","../../src/library/scroll/TiltScroll.ts","../../src/library/scroll/TurnScroll.ts","../../src/library/entrance/ArcIn.ts","../../src/library/entrance/BlurIn.ts","../../src/library/entrance/ShuttersIn.ts","../../src/library/entrance/BounceIn.ts","../../src/library/entrance/CurveIn.ts","../../src/library/entrance/CircleIn.ts","../../src/library/entrance/DropIn.ts","../../src/library/entrance/ExpandIn.ts","../../src/library/entrance/FadeIn.ts","../../src/library/entrance/FlipIn.ts","../../src/library/entrance/FloatIn.ts","../../src/library/entrance/FoldIn.ts","../../src/library/entrance/GlideIn.ts","../../src/library/entrance/GlitchIn.ts","../../src/library/entrance/GrowIn.ts","../../src/library/entrance/PunchIn.ts","../../src/library/entrance/ShapeIn.ts","../../src/library/entrance/RevealIn.ts","../../src/library/entrance/SlideIn.ts","../../src/library/entrance/SpinIn.ts","../../src/library/entrance/TiltIn.ts","../../src/library/entrance/TurnIn.ts","../../src/library/entrance/WinkIn.ts"],"sourcesContent":["import { cssEasings, jsEasings } from '@wix/motion';\nimport type {\n EffectFourDirections,\n EffectScrollRange,\n Point,\n ScrubTransitionEasing,\n DomApi,\n} from '@wix/motion';\n\nexport const INITIAL_FRAME_OFFSET = 1e-6;\n\nexport type Direction =\n | 'initial'\n | 'top'\n | 'right'\n | 'center'\n | 'bottom'\n | 'left'\n | 'vertical'\n | 'horizontal';\n\n/**\n * Map a value from one range 'a' to different range 'b'\n */\nexport function mapRange(\n sourceMin: number,\n sourceMax: number,\n targetMin: number,\n targetMax: number,\n num: number,\n): number {\n return ((num - sourceMin) * (targetMax - targetMin)) / (sourceMax - sourceMin) + targetMin;\n}\n\nexport function distance2d([x1, y1]: Point, [x2, y2]: Point): number {\n return Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2);\n}\n\nexport function getAngleInDeg(p1: Point = [0, 0], p2: Point = [0, 0], offset: number = 0): number {\n const angle = (Math.atan2(p2[1] - p1[1], p2[0] - p1[0]) * 180) / Math.PI;\n return (360 + offset + angle) % 360;\n}\n\ntype ClipPolygonTemplateParams = {\n top: number;\n bottom: number;\n left: number;\n right: number;\n centerX: number;\n centerY: number;\n minimum: number;\n};\n\nconst CLIP_POLYGON_TEMPLATES: Record<Direction, (params: ClipPolygonTemplateParams) => string> = {\n initial: ({ top, bottom, left, right }) =>\n `${left}% ${top}%, ${right}% ${top}%, ${right}% ${bottom}%, ${left}% ${bottom}%`,\n top: ({ top, left, right, minimum }) =>\n `${left}% ${top}%, ${right}% ${top}%, ${right}% ${top + minimum}%, ${left}% ${top + minimum}%`,\n right: ({ top, bottom, right, minimum }) =>\n `${right - minimum}% ${top}%, ${right}% ${top}%, ${right}% ${bottom}%, ${\n right - minimum\n }% ${bottom}%`,\n center: ({ centerX, centerY, minimum }) =>\n `${centerX - minimum / 2}% ${centerY - minimum / 2}%, ${\n centerX + minimum / 2\n }% ${centerY - minimum / 2}%, ${centerX + minimum / 2}% ${\n centerY + minimum / 2\n }%, ${centerX - minimum / 2}% ${centerY + minimum / 2}%`,\n bottom: ({ bottom, left, right, minimum }) =>\n `${left}% ${bottom - minimum}%, ${right}% ${\n bottom - minimum\n }%, ${right}% ${bottom}%, ${left}% ${bottom}%`,\n left: ({ top, bottom, left, minimum }) =>\n `${left}% ${top}%, ${left + minimum}% ${top}%, ${\n left + minimum\n }% ${bottom}%, ${left}% ${bottom}%`,\n vertical: ({ top, bottom, left, right, minimum }) =>\n `${left}% ${top + minimum / 2}%, ${right}% ${\n top + minimum / 2\n }%, ${right}% ${bottom - minimum / 2}%, ${left}% ${bottom - minimum / 2}%`,\n horizontal: ({ top, bottom, left, right, minimum }) =>\n `${left + minimum / 2}% ${top}%, ${right - minimum / 2}% ${top}%, ${\n right - minimum / 2\n }% ${bottom}%, ${left + minimum / 2}% ${bottom}%`,\n};\n\nexport function getClipPolygonParams({\n direction,\n scaleX = 1,\n scaleY = 1,\n minimum = 0,\n}: {\n direction: Direction;\n scaleX?: number;\n scaleY?: number;\n minimum?: number;\n}) {\n const top = ((1 - scaleY) / 2) * 100;\n const left = ((1 - scaleX) / 2) * 100;\n const right = 100 + left - (1 - scaleX) * 100;\n const bottom = 100 + top - (1 - scaleY) * 100;\n const centerX = (right + left) / 2;\n const centerY = (bottom + top) / 2;\n\n return `polygon(${CLIP_POLYGON_TEMPLATES[direction]({\n top,\n bottom,\n left,\n right,\n centerX,\n centerY,\n minimum,\n })})`;\n}\n\nexport const INITIAL_CLIP = 'polygon(0% 0%, 100% 0%, 100% 100%, 0% 100%)';\nexport const FOUR_DIRECTIONS: EffectFourDirections[] = ['bottom', 'left', 'top', 'right'];\n\nexport function getRevealClipFrom(direction: EffectFourDirections, range: EffectScrollRange) {\n return range === 'out'\n ? INITIAL_CLIP\n : getClipPolygonParams({\n direction: getOppositeDirection(FOUR_DIRECTIONS, direction),\n });\n}\n\nexport function getRevealClipTo(direction: EffectFourDirections, range: EffectScrollRange) {\n return range === 'in'\n ? INITIAL_CLIP\n : getClipPolygonParams({\n direction: range === 'out' ? getOppositeDirection(FOUR_DIRECTIONS, direction) : direction,\n });\n}\n\nexport function applyRotationAdjustedClip(\n dom: DomApi,\n direction: EffectFourDirections,\n range: EffectScrollRange,\n) {\n dom.measure((target) => {\n if (!target) {\n return;\n }\n\n const rotation = parseInt(\n getComputedStyle(target).getPropertyValue('--comp-rotate-z') || '0',\n 10,\n );\n dom.mutate(() => {\n const adjDirection = getAdjustedDirection(\n FOUR_DIRECTIONS,\n direction,\n rotation,\n ) as EffectFourDirections;\n target.style.setProperty('--motion-clip-from', getRevealClipFrom(adjDirection, range));\n target.style.setProperty('--motion-clip-to', getRevealClipTo(adjDirection, range));\n });\n });\n}\n\nexport function getAdjustedDirection(\n availableDirections: string[],\n direction: string,\n angleInDeg: number,\n) {\n const index = availableDirections.indexOf(direction);\n const length = availableDirections.length;\n const shiftBy = Math.round(((angleInDeg || 0) / 360) * length);\n const newIndex = (index + (length - 1) * shiftBy) % length;\n return availableDirections[newIndex];\n}\n\nexport function getOppositeDirection<T>(availableDirections: T[], direction: T) {\n const index = Math.max(0, availableDirections.indexOf(direction));\n const length = availableDirections.length;\n return availableDirections[(index + (length >> 1)) % length];\n}\n\nexport function transformPolarToXY(angle: number, distance: number) {\n const radians = (angle * Math.PI) / 180;\n const x = Math.cos(radians) * distance;\n const y = Math.sin(radians) * distance;\n return [x, y];\n}\n\nexport function getCssUnits(type: 'percentage' | string) {\n return type === 'percentage' ? '%' : type || 'px';\n}\n\nexport function getEasing(easing?: keyof typeof cssEasings | string): string {\n return easing ? cssEasings[easing as keyof typeof cssEasings] || easing : cssEasings.linear;\n}\n\nexport function getJsEasing(\n easing?: keyof typeof jsEasings | string,\n): ((t: number) => number) | undefined {\n return easing ? jsEasings[easing as keyof typeof jsEasings] : undefined;\n}\n\nexport function getCssUnitValue(length: { value: number; type: string }) {\n return `${length.value}${getCssUnits(length.type)}`;\n}\n\nexport function getEasingFamily(easing: string) {\n if (!cssEasings[easing as keyof typeof cssEasings]) {\n return {\n in: easing,\n inOut: easing,\n out: easing,\n };\n }\n\n const ease = easing.replace(/In|Out/g, '');\n if (ease === 'linear') {\n return {\n in: `linear`,\n inOut: `linear`,\n out: `linear`,\n };\n }\n\n return {\n in: `${ease}In`,\n inOut: `${ease}InOut`,\n out: `${ease}Out`,\n };\n}\n\nconst MOUSE_TRANSITION_EASING_MAP: Record<ScrubTransitionEasing, string> = {\n linear: 'linear',\n easeOut: 'ease-out',\n hardBackOut: 'cubic-bezier(0.58, 2.5, 0, 0.95)',\n elastic:\n 'linear( 0, 0.2178 2.1%, 1.1144 8.49%, 1.2959 10.7%, 1.3463 11.81%, 1.3705 12.94%, 1.3726, 1.3643 14.48%, 1.3151 16.2%, 1.0317 21.81%, 0.941 24.01%, 0.8912 25.91%, 0.8694 27.84%, 0.8698 29.21%, 0.8824 30.71%, 1.0122 38.33%, 1.0357, 1.046 42.71%, 1.0416 45.7%, 0.9961 53.26%, 0.9839 57.54%, 0.9853 60.71%, 1.0012 68.14%, 1.0056 72.24%, 0.9981 86.66%, 1 )',\n bounce:\n 'linear( 0, 0.0039, 0.0157, 0.0352, 0.0625 9.09%, 0.1407, 0.25, 0.3908, 0.5625, 0.7654, 1, 0.8907, 0.8125 45.45%, 0.7852, 0.7657, 0.7539, 0.75, 0.7539, 0.7657, 0.7852, 0.8125 63.64%, 0.8905, 1 72.73%, 0.9727, 0.9532, 0.9414, 0.9375, 0.9414, 0.9531, 0.9726, 1, 0.9883, 0.9844, 0.9883, 1 )',\n};\n\nexport function getMouseTransitionEasing(value?: ScrubTransitionEasing) {\n return (value && MOUSE_TRANSITION_EASING_MAP[value]) || 'linear';\n}\n\nexport function deg2rad(angleInDeg: number): number {\n return (angleInDeg * Math.PI) / 180;\n}\n\nexport function getTransformParams(\n originDirection: { dx: number; dy: number },\n angleInRad: number,\n scale: number = 1,\n) {\n const x = `calc(var(--motion-height, 100%) * ${\n scale * originDirection.dy * Math.sin(-angleInRad)\n } + var(--motion-width, 100%) * ${scale * originDirection.dx * Math.cos(angleInRad)})`;\n\n const y = `calc(var(--motion-height, 100%) * ${\n scale * originDirection.dy * Math.cos(-angleInRad)\n } + var(--motion-width, 100%) * ${scale * originDirection.dx * Math.sin(angleInRad)})`;\n\n return { x, y };\n}\n\nexport function getOutOfScreenDistance(angle: number) {\n const angleInRad = (angle * Math.PI) / 180;\n const angleCos = Math.round(Math.cos(angleInRad) * 10) / 10;\n const angleSin = Math.round(Math.sin(angleInRad) * 10) / 10;\n\n // Calculate x and y direction based on angle\n const xDirection = Math.sign(angleCos);\n const yDirection = Math.sign(angleSin);\n const left = `var(--motion-left, 0px)`;\n const top = `var(--motion-top, 0px)`;\n\n // Calculate x and y distances between component and stage\n const xDistance = xDirection\n ? xDirection === -1\n ? `(-1 * ${left} - 100%)`\n : `(100vw - ${left})`\n : 0;\n const yDistance = yDirection\n ? yDirection === -1\n ? `(-1 * ${top} - 100%)`\n : `(100vh - ${top})`\n : 0;\n\n // Calculate hypotenuse\n let hypotenuse;\n const hypotX = `calc(${xDistance} / ${angleCos})`;\n const hypotY = `calc(${yDistance} / ${angleSin})`;\n\n if (!angleCos) {\n hypotenuse = hypotY;\n } else if (!angleSin) {\n hypotenuse = hypotX;\n } else {\n hypotenuse = `min(${hypotY}, ${hypotX})`;\n }\n\n return {\n x: `calc(${hypotenuse} * ${angleCos})`,\n y: `calc(${hypotenuse} * ${angleSin})`,\n };\n}\n\nexport function keyframesToDuration(\n keyframes_translation: { keyframe: number }[],\n duration: number,\n) {\n return keyframes_translation.map(({ keyframe }, idx) => {\n const stepDuration = keyframe - (idx > 0 ? keyframes_translation[idx - 1].keyframe : 0);\n return duration * (stepDuration / 100);\n });\n}\n\nexport function getElementOffset(element: HTMLElement, parent?: HTMLElement) {\n let left = element.offsetLeft;\n let top = element.offsetTop;\n let offsetParent = element.offsetParent as HTMLElement;\n\n while (offsetParent) {\n if (parent && offsetParent === parent) {\n break;\n }\n\n left += offsetParent.offsetLeft;\n top += offsetParent.offsetTop;\n offsetParent = offsetParent.offsetParent as HTMLElement;\n }\n\n return { left, top };\n}\n\nconst generateShuttersClipPath = (\n direction: EffectFourDirections,\n shutterCount: number,\n staggered: boolean,\n) => {\n const isTopOrLeft = direction === 'top' || direction === 'left';\n const iterStart = isTopOrLeft ? shutterCount : 0;\n const iterEnd = isTopOrLeft ? 0 : shutterCount;\n const inc = isTopOrLeft ? -1 : 1;\n\n const isVerticalPath = direction === 'top' || direction === 'bottom';\n\n const clipPathStart = [];\n const clipPathEnd = [];\n\n for (let i = iterStart; i !== iterEnd; i += inc) {\n const shutterEndPosInPercentage = 100 * ((i + inc) / shutterCount);\n const clipStart = (100 * (i / shutterCount)) | 0;\n let clipEnd;\n\n if (staggered) {\n const staggerFactor = isTopOrLeft\n ? 1 + (shutterCount - i) / shutterCount\n : 1 + i / shutterCount;\n\n clipEnd = isTopOrLeft\n ? 100 - (100 - shutterEndPosInPercentage) * staggerFactor\n : shutterEndPosInPercentage * staggerFactor;\n } else {\n clipEnd = shutterEndPosInPercentage;\n }\n\n clipEnd |= 0;\n\n if (isVerticalPath) {\n clipPathStart.push(\n `0% ${clipStart}%, 100% ${clipStart}%, 100% ${clipStart}%, 0% ${clipStart}%`,\n );\n clipPathEnd.push(`0% ${clipStart}%, 100% ${clipStart}%, 100% ${clipEnd}%, 0% ${clipEnd}%`);\n } else {\n clipPathStart.push(\n `${clipStart}% 0%, ${clipStart}% 100%, ${clipStart}% 100%, ${clipStart}% 0%`,\n );\n clipPathEnd.push(`${clipStart}% 0%, ${clipStart}% 100%, ${clipEnd}% 100%, ${clipEnd}% 0%`);\n }\n }\n\n return { start: clipPathStart, end: clipPathEnd };\n};\n\nexport function getShuttersClipPaths(\n direction: EffectFourDirections,\n shutterCount: number,\n staggered: boolean,\n reverse?: boolean,\n) {\n const { start, end } = generateShuttersClipPath(direction, shutterCount, staggered);\n\n if (reverse) {\n start.reverse();\n end.reverse();\n }\n\n return {\n clipStart: `polygon(${start.join(', ')})`,\n clipEnd: `polygon(${end.join(', ')})`,\n };\n}\n\nexport function roundNumber(num: number, precision = 2) {\n return parseFloat(num.toFixed(precision));\n}\n\nexport function toKeyframeValue(\n custom: Record<string, string | number>,\n key: string,\n useValue: boolean | undefined = false,\n fallback: string | undefined = undefined,\n) {\n return useValue ? custom[key] : `var(${key}${fallback !== undefined ? `, ${fallback}` : ''})`;\n}\n\nexport function getTimingFactor(\n duration: number,\n delay: number,\n asString = false,\n): number | string {\n const duration_ = duration || 1;\n const delay_ = delay || 0;\n const timingFactor = roundNumber(duration_ / (duration_ + delay_));\n return asString ? timingFactor.toString().replace(/\\./g, '') : timingFactor;\n}\n","import type { AnimationExtraOptions, Progress, ScrubAnimationOptions } from '../../types';\n\nexport class CustomMouse {\n target: HTMLElement;\n options: Record<string, any>;\n currentProgress: Progress;\n\n constructor(target: HTMLElement, options?: Record<string, any>) {\n this.target = target;\n this.options = options || {};\n this.currentProgress = { x: 0.5, y: 0.5, v: { x: 0, y: 0 }, active: true };\n\n this.play();\n }\n\n progress({ x, y, v, active }: Progress) {\n this.currentProgress = { x, y, v, active };\n if (typeof this.options.customEffect === 'function') {\n this.options.customEffect(this.target, this.currentProgress);\n }\n }\n\n cancel() {\n this.currentProgress = { x: 0.5, y: 0.5, v: { x: 0, y: 0 } };\n }\n\n getProgress() {\n return this.currentProgress;\n }\n\n play() {\n if (this.options.transition && this.target) {\n this.target.style.transition = this.options.transition;\n }\n }\n}\n\nexport function create(options: ScrubAnimationOptions & AnimationExtraOptions) {\n return (target: HTMLElement) => new CustomMouse(target, options);\n}\n","import { getCssUnits, getMouseTransitionEasing, mapRange } from '../../utils';\nimport type {\n ScrubAnimationOptions,\n AiryMouse,\n AnimationExtraOptions,\n Progress,\n ScrubTransitionEasing,\n EffectPower,\n} from '../../types';\nimport { CustomMouse } from './CustomMouse';\n\nconst paramsMap: Record<EffectPower, { angle: number; easing: ScrubTransitionEasing }> = {\n soft: { angle: 10, easing: 'easeOut' },\n medium: { angle: 50, easing: 'easeOut' },\n hard: { angle: 85, easing: 'easeOut' },\n};\n\nclass AiryMouseAnimation extends CustomMouse {\n progress({ x: progressX, y: progressY }: Progress) {\n let translateX = 0;\n let translateY = 0;\n const { distance, invert, angle, axis } = this.options;\n\n if (axis !== 'vertical') {\n translateX = mapRange(0, 1, -distance.value, distance.value, progressX) * invert;\n }\n if (axis !== 'horizontal') {\n translateY = mapRange(0, 1, -distance.value, distance.value, progressY) * invert;\n }\n\n // if progress === 0, rotate === angle, if progress === 0.5, rotate === 0, if progress === 1, rotate === angle\n const rotate = mapRange(0, 1, -angle, angle, progressX) * invert;\n const units = getCssUnits(distance.type);\n\n this.target.style.transform = `translateX(${translateX}${units}) translateY(${translateY}${units}) rotate(calc(${rotate}deg + var(--comp-rotate-z, 0deg)))`;\n }\n\n cancel() {\n this.target.style.transform = '';\n this.target.style.transition = '';\n }\n}\n\nexport default function create(options: ScrubAnimationOptions & AnimationExtraOptions) {\n const { transitionDuration, transitionEasing } = options;\n const {\n power,\n inverted = false,\n distance = { value: 200, type: 'px' },\n angle = 30,\n axis = 'both',\n } = options.namedEffect as AiryMouse;\n const invert = inverted ? -1 : 1;\n const animationOptions = {\n transition: transitionDuration\n ? `transform ${transitionDuration}ms ${getMouseTransitionEasing(\n power ? paramsMap[power].easing : transitionEasing,\n )}`\n : '',\n invert,\n distance,\n angle: power ? paramsMap[power].angle : angle,\n axis,\n };\n\n return (target: HTMLElement) => new AiryMouseAnimation(target, animationOptions);\n}\n","import { getCssUnits, getMouseTransitionEasing, mapRange } from '../../utils';\nimport { CustomMouse } from './CustomMouse';\nimport {\n ScrubAnimationOptions,\n AnimationExtraOptions,\n BlobMouse,\n Progress,\n EffectPower,\n ScrubTransitionEasing,\n} from '../../types';\n\nconst paramsMap: Record<EffectPower, { scale: number; easing: ScrubTransitionEasing }> = {\n soft: { scale: 1.2, easing: 'easeOut' },\n medium: { scale: 1.6, easing: 'easeOut' },\n hard: { scale: 2.4, easing: 'easeOut' },\n};\n\nclass BlobMouseAnimation extends CustomMouse {\n progress({ x: progressX, y: progressY }: Progress) {\n const { distance, scale, invert } = this.options;\n const translateX = mapRange(0, 1, -distance.value, distance.value, progressX) * invert;\n const translateY = mapRange(0, 1, -distance.value, distance.value, progressY) * invert;\n\n // if progressX === 0 || progressX === 1, scaleX === scale, if progressX === 0.5, scaleX === 1\n const scaleX =\n progressX < 0.5\n ? mapRange(0, 0.5, scale, 1, progressX)\n : mapRange(0.5, 1, 1, scale, progressX);\n\n // if progressY === 0 || progressY === 1, scaleY === scale, if progressY === 0.5, scaleY === 1\n const scaleY =\n progressY < 0.5\n ? mapRange(0, 0.5, scale, 1, progressY)\n : mapRange(0.5, 1, 1, scale, progressY);\n\n const units = getCssUnits(distance.type);\n\n this.target.style.transform = `translateX(${translateX}${units}) translateY(${translateY}${units}) scale(${scaleX}, ${scaleY}) rotate(var(--comp-rotate-z, 0deg))`;\n }\n\n cancel() {\n this.target.style.transform = '';\n this.target.style.transition = '';\n }\n}\n\nexport default function create(options: ScrubAnimationOptions & AnimationExtraOptions) {\n const { transitionDuration, transitionEasing } = options;\n const {\n power,\n inverted = false,\n distance = { value: 200, type: 'px' },\n scale = 1.4,\n } = options.namedEffect as BlobMouse;\n const invert = inverted ? -1 : 1;\n const animationOptions = {\n transition: transitionDuration\n ? `transform ${transitionDuration}ms ${getMouseTransitionEasing(\n power ? paramsMap[power].easing : transitionEasing,\n )}`\n : '',\n invert,\n distance,\n scale: power ? paramsMap[power].scale : scale,\n };\n\n return (target: HTMLElement) => new BlobMouseAnimation(target, animationOptions);\n}\n","import { getCssUnits, getMouseTransitionEasing, distance2d, mapRange } from '../../utils';\nimport { quadInOut } from '@wix/motion';\nimport { CustomMouse } from './CustomMouse';\nimport {\n ScrubAnimationOptions,\n AnimationExtraOptions,\n BlurMouse,\n Progress,\n EffectPower,\n ScrubTransitionEasing,\n} from '../../types';\n\nconst paramsMap: Record<\n EffectPower,\n { angle: number; scale: number; easing: ScrubTransitionEasing }\n> = {\n soft: { angle: 0, scale: 1, easing: 'easeOut' },\n medium: { angle: 25, scale: 0.7, easing: 'easeOut' },\n hard: { angle: 65, scale: 0.25, easing: 'easeOut' },\n};\nclass BlurMouseAnimation extends CustomMouse {\n progress({ x: progressX, y: progressY }: Progress) {\n const { distance, angle, scale, invert, blur, perspective } = this.options;\n\n const translateX = mapRange(0, 1, -distance.value, distance.value, progressX) * invert;\n const translateY = mapRange(0, 1, -distance.value, distance.value, progressY) * invert;\n\n // if progressX === 0 || progressX === 1, scaleX === scale, if progressX === 0.5, scaleX === 1\n const scaleX =\n progressX < 0.5\n ? mapRange(0, 0.5, scale, 1, progressX)\n : mapRange(0.5, 1, 1, scale, progressX);\n\n // if progressY === 0 || progressY === 1, scaleY === scale, if progressY === 0.5, scaleY === 1\n const scaleY =\n progressY < 0.5\n ? mapRange(0, 0.5, scale, 1, progressY)\n : mapRange(0.5, 1, 1, scale, progressY);\n\n const maxScale = Math.min(scaleX, scaleY);\n\n // if progressX === 0, rotateX === -angle, if progressX === 0.5, rotateX === 0, if progressX === 1, rotateX === angle\n const rotateX = mapRange(0, 1, -angle, angle, progressY) * invert;\n const rotateY = mapRange(0, 1, angle, -angle, progressX) * invert;\n\n const units = getCssUnits(distance.type);\n\n const transform = `perspective(${perspective}px) translateX(${translateX}${units}) translateY(${translateY}${units}) scale(${maxScale}, ${maxScale}) rotateX(${rotateX}deg) rotateY(${rotateY}deg) rotate(var(--comp-rotate-z, 0deg))`;\n\n const progressDistance = distance2d([0.5, 0.5], [progressX, progressY]);\n const blurFilter = Math.round(mapRange(0, 1, 0, blur, quadInOut(progressDistance)));\n\n const filter = `blur(${blurFilter}px)`;\n\n this.target.style.transform = transform;\n this.target.style.filter = filter;\n }\n\n cancel() {\n this.target.style.transform = '';\n this.target.style.filter = '';\n this.target.style.transition = '';\n }\n}\n\nexport default function create(options: ScrubAnimationOptions & AnimationExtraOptions) {\n const { transitionDuration, transitionEasing } = options;\n const {\n power,\n inverted = false,\n distance = { value: 80, type: 'px' },\n angle = 5,\n scale = 0.3,\n blur = 20,\n perspective = 600,\n } = options.namedEffect as BlurMouse;\n const invert = inverted ? -1 : 1;\n const animationOptions = {\n transition: transitionDuration\n ? `transform ${transitionDuration}ms ${getMouseTransitionEasing(\n power ? paramsMap[power].easing : transitionEasing,\n )}, filter ${transitionDuration}ms ${getMouseTransitionEasing(\n power ? paramsMap[power].easing : transitionEasing,\n )}`\n : '',\n distance,\n angle: power ? paramsMap[power].angle : angle,\n scale: power ? paramsMap[power].scale : scale,\n blur,\n perspective,\n invert,\n };\n\n return (target: HTMLElement) => new BlurMouseAnimation(target, animationOptions);\n}\n","import {\n ScrubAnimationOptions,\n AnimationExtraOptions,\n TrackMouse,\n Progress,\n EffectPower,\n ScrubTransitionEasing,\n} from '../../types';\nimport { getCssUnits, getMouseTransitionEasing, mapRange } from '../../utils';\nimport { CustomMouse } from './CustomMouse';\n\nconst easingMap: Record<EffectPower, ScrubTransitionEasing> = {\n soft: 'linear',\n medium: 'easeOut',\n hard: 'hardBackOut',\n};\nclass TrackMouseAnimation extends CustomMouse {\n progress({ x: progressX, y: progressY }: Progress) {\n const { invert, distance, axis } = this.options;\n\n let translateX = 0;\n let translateY = 0;\n\n // if progressX === 0, translateX === -distance\n // if progressX === 0.5, translateX === 0\n // if progressX === 1, translateX === distance\n if (axis === 'both' || axis === 'horizontal') {\n translateX = mapRange(0, 1, -distance.value, distance.value, progressX) * invert;\n }\n\n if (axis === 'both' || axis === 'vertical') {\n translateY = mapRange(0, 1, -distance.value, distance.value, progressY) * invert;\n }\n\n const units = getCssUnits(distance.type);\n\n this.target.style.transform = `translateX(${translateX}${units}) translateY(${translateY}${units}) rotate(var(--comp-rotate-z, 0deg))`;\n }\n cancel() {\n this.target.style.transform = '';\n this.target.style.transition = '';\n }\n}\n\nexport default function create(options: ScrubAnimationOptions & AnimationExtraOptions) {\n const { transitionDuration, transitionEasing } = options;\n const {\n power,\n inverted = false,\n distance = { value: 200, type: 'px' },\n axis = 'both',\n } = options.namedEffect as TrackMouse;\n const invert = inverted ? -1 : 1;\n const animationOptions = {\n transition: transitionDuration\n ? `transform ${transitionDuration}ms ${getMouseTransitionEasing(\n power ? easingMap[power] : transitionEasing,\n )}`\n : '',\n invert,\n distance,\n axis,\n };\n\n return (target: HTMLElement) => new TrackMouseAnimation(target, animationOptions);\n}\n","import { ScrubAnimationOptions, AnimationExtraOptions, BounceMouse, TrackMouse } from '../../types';\nimport createTrack from './TrackMouse';\n\nexport default function create(options: ScrubAnimationOptions & AnimationExtraOptions) {\n const { distance = { value: 80, type: 'px' } } = options.namedEffect as BounceMouse;\n const { transitionEasing = 'elastic' } = options;\n return createTrack({\n ...options,\n transitionEasing,\n namedEffect: { ...options.namedEffect, distance } as TrackMouse,\n });\n}\n","import { getCssUnits, getMouseTransitionEasing, mapRange } from '../../utils';\nimport { CustomMouse } from './CustomMouse';\nimport {\n ScrubAnimationOptions,\n AnimationExtraOptions,\n ScaleMouse,\n Progress,\n EffectPower,\n ScrubTransitionEasing,\n} from '../../types';\n\nconst paramsMap: Record<\n ScaleMouse['scaleDirection'],\n Record<EffectPower, { scale: number; easing: ScrubTransitionEasing }>\n> = {\n down: {\n soft: { scale: 0.85, easing: 'easeOut' },\n medium: { scale: 0.5, easing: 'easeOut' },\n hard: { scale: 0, easing: 'easeOut' },\n },\n up: {\n soft: { scale: 1.2, easing: 'easeOut' },\n medium: { scale: 1.6, easing: 'easeOut' },\n hard: { scale: 2.4, easing: 'easeOut' },\n },\n};\n\nclass ScaleMouseAnimation extends CustomMouse {\n progress({ x: progressX, y: progressY }: Progress) {\n const { distance, scale, invert, axis } = this.options;\n\n let translateX = 0;\n let translateY = 0;\n let scaleX = 1;\n let scaleY = 1;\n\n if (axis === 'both' || axis === 'horizontal') {\n translateX = mapRange(0, 1, -distance.value, distance.value, progressX) * invert;\n scaleX =\n progressX < 0.5\n ? mapRange(0, 0.5, scale, 1, progressX)\n : mapRange(0.5, 1, 1, scale, progressX);\n }\n\n if (axis === 'both' || axis === 'vertical') {\n translateY = mapRange(0, 1, -distance.value, distance.value, progressY) * invert;\n scaleY =\n progressY < 0.5\n ? mapRange(0, 0.5, scale, 1, progressY)\n : mapRange(0.5, 1, 1, scale, progressY);\n }\n\n // scale is uniform so we use the smaller scale value if scale < 1\n // and the bigger scale value if scale > 1\n const scaleBoth = scale < 1 ? Math.min(scaleX, scaleY) : Math.max(scaleX, scaleY);\n\n const units = getCssUnits(distance.type);\n\n this.target.style.transform = `translateX(${translateX}${units}) translateY(${translateY}${units}) scale(${scaleBoth}) rotate(var(--comp-rotate-z, 0deg))`;\n }\n\n cancel() {\n this.target.style.transform = '';\n this.target.style.transition = '';\n }\n}\n\nexport default function create(options: ScrubAnimationOptions & AnimationExtraOptions) {\n const { transitionDuration, transitionEasing } = options;\n const {\n power,\n scaleDirection = 'down',\n inverted = false,\n distance = { value: 80, type: 'px' },\n axis = 'both',\n scale = 1.4,\n } = options.namedEffect as ScaleMouse;\n const invert = inverted ? -1 : 1;\n const animationOptions = {\n transition: transitionDuration\n ? `transform ${transitionDuration}ms ${getMouseTransitionEasing(\n power ? paramsMap[scaleDirection][power].easing : transitionEasing,\n )}`\n : '',\n invert,\n distance,\n axis,\n scale: power ? paramsMap[scaleDirection][power].scale : scale,\n };\n\n return (target: HTMLElement) => new ScaleMouseAnimation(target, animationOptions);\n}\n","import {\n ScrubAnimationOptions,\n AnimationExtraOptions,\n SkewMouse,\n Progress,\n ScrubTransitionEasing,\n EffectPower,\n} from '../../types';\nimport { getCssUnits, getMouseTransitionEasing, mapRange } from '../../utils';\nimport { circInOut } from '@wix/motion';\nimport { CustomMouse } from './CustomMouse';\n\nconst paramsMap: Record<EffectPower, { angle: number; easing: ScrubTransitionEasing }> = {\n soft: { angle: 10, easing: 'easeOut' },\n medium: { angle: 20, easing: 'easeOut' },\n hard: { angle: 45, easing: 'easeOut' },\n};\n\nclass SkewMouseAnimation extends CustomMouse {\n progress({ x: progressX, y: progressY }: Progress) {\n let translateX = 0;\n let translateY = 0;\n let skewX = 0;\n let skewY = 0;\n const { distance, angle, axis, invert } = this.options;\n\n // distance\n if (axis !== 'vertical') {\n translateX = mapRange(0, 1, -distance.value, distance.value, progressX) * invert;\n skewX = mapRange(0, 1, angle, -angle, progressX) * invert;\n }\n if (axis !== 'horizontal') {\n translateY = mapRange(0, 1, -distance.value, distance.value, progressY) * invert;\n skewY = mapRange(0, 1, angle, -angle, progressY) * invert;\n }\n if (axis === 'both') {\n // We want to do `skewX *= progressY < 0.5 ? 1 : -1`\n // but normalize it by y progress (so it will be 0 when y is 0.5)\n // and apply a circInOut easing on the progress so it will feel more natural\n skewX *= mapRange(0, 1, 1, -1, circInOut(progressY));\n\n // we want to do `skewY *= progressX < 0.5 ? 1 : -1`\n // but normalize it by x progress (so it will be 0 when x is 0.5)\n // and apply a circInOut easing on the progress so it will feel more natural\n skewY *= mapRange(0, 1, 1, -1, circInOut(progressX));\n }\n\n const units = getCssUnits(distance.type);\n\n const transform = `translateX(${translateX}${units}) translateY(${translateY}${units}) skew(${skewX}deg, ${skewY}deg) rotate(var(--comp-rotate-z, 0deg))`;\n\n this.target.style.transform = transform;\n }\n\n cancel() {\n this.target.style.transform = '';\n this.target.style.transition = '';\n }\n}\n\nexport default function create(options: ScrubAnimationOptions & AnimationExtraOptions) {\n const { transitionDuration, transitionEasing } = options;\n const {\n power,\n inverted = false,\n distance = { value: 200, type: 'px' },\n angle = 25,\n axis = 'both',\n } = options.namedEffect as SkewMouse;\n const invert = inverted ? -1 : 1;\n const animationOptions = {\n transition: transitionDuration\n ? `transform ${transitionDuration}ms ${getMouseTransitionEasing(\n power ? paramsMap[power].easing : transitionEasing,\n )}`\n : '',\n invert,\n distance,\n angle: power ? paramsMap[power].angle : angle,\n axis,\n };\n\n return (target: HTMLElement) => new SkewMouseAnimation(target, animationOptions);\n}\n","import { ScrubAnimationOptions, AnimationExtraOptions, SpinMouse, Progress } from '../../types';\nimport { getMouseTransitionEasing, getAngleInDeg } from '../../utils';\nimport { CustomMouse } from './CustomMouse';\n\nclass SpinMouseAnimation extends CustomMouse {\n progress({ x: progressX, y: progressY }: Progress) {\n const { invert, axis } = this.options;\n\n const rotation =\n getAngleInDeg(\n [0.5, 0.5],\n [axis === 'vertical' ? 0 : progressX, axis === 'horizontal' ? 0 : progressY],\n 90,\n ) * invert;\n\n this.target.style.transform = `rotate(calc(${rotation}deg + var(--comp-rotate-z, 0deg)))`;\n }\n\n cancel() {\n this.target.style.transform = '';\n this.target.style.transition = '';\n }\n}\n\nexport default function create(options: ScrubAnimationOptions & AnimationExtraOptions) {\n const { transitionDuration, transitionEasing = 'linear' } = options;\n const { inverted = false, axis = 'both' } = options.namedEffect as SpinMouse;\n const invert = inverted ? -1 : 1;\n const animationOptions = {\n transition: transitionDuration\n ? `transform ${transitionDuration}ms ${getMouseTransitionEasing(transitionEasing)}`\n : '',\n invert,\n axis,\n };\n\n return (target: HTMLElement) => new SpinMouseAnimation(target, animationOptions);\n}\n\nexport function web(options: ScrubAnimationOptions & AnimationExtraOptions) {\n return create(options);\n}\n","import {\n ScrubAnimationOptions,\n AnimationExtraOptions,\n SwivelMouse,\n MousePivotAxis,\n Progress,\n EffectPower,\n ScrubTransitionEasing,\n} from '../../types';\nimport { getMouseTransitionEasing, mapRange } from '../../utils';\nimport { CustomMouse } from './CustomMouse';\n\nconst paramsMap: Record<\n EffectPower,\n { angle: number; perspective: number; easing: ScrubTransitionEasing }\n> = {\n soft: { angle: 25, perspective: 1000, easing: 'easeOut' },\n medium: { angle: 50, perspective: 700, easing: 'easeOut' },\n hard: { angle: 85, perspective: 300, easing: 'easeOut' },\n};\n\nconst transformOrigins: Record<MousePivotAxis, [number, number]> = {\n top: [0, -50],\n bottom: [0, 50],\n right: [50, 0],\n left: [-50, 0],\n 'center-horizontal': [0, 0],\n 'center-vertical': [0, 0],\n};\n\nclass SwivelMouseAnimation extends CustomMouse {\n progress({ x: progressX, y: progressY }: Progress) {\n let rotateAxis = 'rotateX';\n let progress = progressY;\n let invertVertical = -1;\n\n const { pivotAxis, angle, invert, perspective } = this.options;\n if (pivotAxis === 'center-horizontal' || pivotAxis === 'right' || pivotAxis === 'left') {\n rotateAxis = 'rotateY';\n progress = progressX;\n invertVertical = 1;\n }\n\n // if progress === 0, rotate === angle, if progress === 0.5, rotate === 0, if progress === 1, rotate === angle\n const rotate = mapRange(0, 1, -angle, angle, progress) * invertVertical * invert;\n\n const [translateX, translateY] = transformOrigins[pivotAxis as MousePivotAxis];\n const transform = `perspective(${perspective}px) translateX(${translateX}%) translateY(${translateY}%) ${rotateAxis}(${rotate}deg) translateX(${-translateX}%) translateY(${-translateY}%) rotate(var(--comp-rotate-z, 0deg))`;\n\n this.target.style.transform = transform;\n }\n\n cancel() {\n this.target.style.transform = '';\n this.target.style.transition = '';\n }\n}\n\nexport default function create(options: ScrubAnimationOptions & AnimationExtraOptions) {\n const { transitionDuration, transitionEasing } = options;\n const {\n power,\n inverted = false,\n angle = 5,\n perspective = 800,\n pivotAxis = 'center-horizontal',\n } = options.namedEffect as SwivelMouse;\n const invert = inverted ? -1 : 1;\n const animationOptions = {\n transition: transitionDuration\n ? `transform ${transitionDuration}ms ${getMouseTransitionEasing(\n power ? paramsMap[power].easing : transitionEasing,\n )}`\n : '',\n invert,\n angle: power ? paramsMap[power].angle : angle,\n perspective: power ? paramsMap[power].perspective : perspective,\n pivotAxis,\n };\n\n return (target: HTMLElement) => new SwivelMouseAnimation(target, animationOptions);\n}\n","import { getMouseTransitionEasing, mapRange } from '../../utils';\nimport { CustomMouse } from './CustomMouse';\nimport {\n ScrubAnimationOptions,\n AnimationExtraOptions,\n Tilt3DMouse,\n Progress,\n EffectPower,\n ScrubTransitionEasing,\n} from '../../types';\n\nconst paramsMap: Record<\n EffectPower,\n { angle: number; perspective: number; easing: ScrubTransitionEasing }\n> = {\n soft: { angle: 25, perspective: 1000, easing: 'easeOut' },\n medium: { angle: 50, perspective: 500, easing: 'easeOut' },\n hard: { angle: 85, perspective: 200, easing: 'easeOut' },\n};\n\nclass Tilt3DMouseAnimation extends CustomMouse {\n progress({ x: progressX, y: progressY }: Progress) {\n const { invert, angle, perspective } = this.options;\n\n // if progressX === 0, rotateX === -angle, if progressX === 0.5, rotateX === 0, if progressX === 1, rotateX === angle\n const rotateX = mapRange(0, 1, angle, -angle, progressY) * invert;\n const rotateY = mapRange(0, 1, -angle, angle, progressX) * invert;\n\n this.target.style.transform = `perspective(${perspective}px) rotateX(${rotateX}deg) rotateY(${rotateY}deg) rotate(var(--comp-rotate-z, 0deg))`;\n }\n\n cancel() {\n this.target.style.transform = '';\n this.target.style.transition = '';\n }\n}\n\nexport default function create(options: ScrubAnimationOptions & AnimationExtraOptions) {\n const { transitionDuration, transitionEasing } = options;\n const {\n power,\n inverted = false,\n angle = 5,\n perspective = 800,\n } = options.namedEffect as Tilt3DMouse;\n const invert = inverted ? -1 : 1;\n const animationOptions = {\n transition: transitionDuration\n ? `transform ${transitionDuration}ms ${getMouseTransitionEasing(\n power ? paramsMap[power].easing : transitionEasing,\n )}`\n : '',\n invert,\n angle: power ? paramsMap[power].angle : angle,\n perspective: power ? paramsMap[power].perspective : perspective,\n };\n\n return (target: HTMLElement) => new Tilt3DMouseAnimation(target, animationOptions);\n}\n","import {\n ScrubAnimationOptions,\n AnimationExtraOptions,\n Track3DMouse,\n Progress,\n EffectPower,\n ScrubTransitionEasing,\n} from '../../types';\nimport { getCssUnits, getMouseTransitionEasing, mapRange } from '../../utils';\nimport { CustomMouse } from './CustomMouse';\n\nconst paramsMap: Record<\n EffectPower,\n { angle: number; perspective: number; easing: ScrubTransitionEasing }\n> = {\n soft: { angle: 25, perspective: 1000, easing: 'easeOut' },\n medium: { angle: 50, perspective: 500, easing: 'easeOut' },\n hard: { angle: 85, perspective: 333, easing: 'easeOut' },\n};\n\nclass Track3DMouseAnimation extends CustomMouse {\n progress({ x: progressX, y: progressY }: Progress) {\n const { invert, distance, angle, axis, perspective } = this.options;\n\n let translateX = 0;\n let translateY = 0;\n let rotateX = 0;\n let rotateY = 0;\n // if progressX === 0, translateX === -distance\n // if progressX === 0.5, translateX === 0\n // if progressX === 1, translateX === distance\n // if progressX === 0, rotateX === -angle, if progressX === 0.5, rotateX === 0, if progressX === 1, rotateX === angle\n if (axis === 'both' || axis === 'horizontal') {\n translateX = mapRange(0, 1, -distance.value, distance.value, progressX);\n rotateY = mapRange(0, 1, -angle, angle, progressX) * invert;\n }\n if (axis === 'both' || axis === 'vertical') {\n translateY = mapRange(0, 1, -distance.value, distance.value, progressY);\n rotateX = mapRange(0, 1, angle, -angle, progressY) * invert;\n }\n const units = getCssUnits(distance.type);\n\n this.target.style.transform = `perspective(${perspective}px) translateX(${translateX}${units}) translateY(${translateY}${units}) rotateX(${rotateX}deg) rotateY(${rotateY}deg) rotate(var(--comp-rotate-z, 0deg))`;\n }\n\n cancel() {\n this.target.style.transform = '';\n this.target.style.transition = '';\n }\n}\n\nexport default function create(options: ScrubAnimationOptions & AnimationExtraOptions) {\n const { transitionDuration, transitionEasing } = options;\n const {\n power,\n inverted = false,\n distance = { value: 200, type: 'px' },\n angle = 5,\n axis = 'both',\n perspective = 800,\n } = options.namedEffect as Track3DMouse;\n const invert = inverted ? -1 : 1;\n const animationOptions = {\n transition: transitionDuration\n ? `transform ${transitionDuration}ms ${getMouseTransitionEasing(\n power ? paramsMap[power].easing : transitionEasing,\n )}`\n : '',\n invert,\n distance,\n axis,\n angle: power ? paramsMap[power].angle : angle,\n perspective: power ? paramsMap[power].perspective : perspective,\n };\n\n return (target: HTMLElement) => new Track3DMouseAnimation(target, animationOptions);\n}\n","import type { DomApi } from '../../types';\n\nexport function measureCompHeight(\n measures: {\n '--motion-comp-height': string;\n // TODO: (ameerf) - remove this once we support scalar multiplication in values passed to fizban or once SDA is widely available\n '--motion-comp-half-height'?: string;\n },\n dom: DomApi,\n assignToCss?: boolean,\n) {\n dom.measure((target) => {\n if (!target) {\n return;\n }\n measures['--motion-comp-height'] = `${target.offsetHeight}px`;\n if (measures['--motion-comp-half-height']) {\n measures['--motion-comp-half-height'] = `${Math.round(0.5 * target.offsetHeight)}px`;\n }\n });\n if (assignToCss) {\n dom.mutate((target) => {\n target?.style.setProperty('--motion-comp-height', measures['--motion-comp-height']);\n if (measures['--motion-comp-half-height']) {\n target?.style.setProperty(\n '--motion-comp-half-height',\n measures['--motion-comp-half-height'],\n );\n }\n });\n }\n}\n\nconst getMasterPage = (): HTMLElement | null => window!.document.getElementById('masterPage');\n\nconst getWixAdsHeight = () => {\n const wixAds = window!.document.getElementById('WIX_ADS');\n return wixAds ? wixAds.offsetHeight : 0;\n};\n\nconst getSiteHeight = (): number => {\n const masterPage = getMasterPage();\n return masterPage ? masterPage.offsetHeight + getWixAdsHeight() : 0; // probably tests that don't have masterPage created\n};\n\nexport function measureSiteHeight(\n measures: { '--motion-site-height': string },\n dom: DomApi,\n assignToCss?: boolean,\n) {\n dom.measure(() => {\n measures['--motion-site-height'] = `${getSiteHeight()}px`;\n });\n if (assignToCss) {\n dom.mutate((target) => {\n target?.style.setProperty('--motion-site-height', measures['--motion-site-height']);\n });\n }\n}\n\nexport function getScaleFromPerspectiveAndZ(z: number, perspective: number) {\n return z > perspective ? 0 : 1.0 / (1 - z / perspective);\n}\n","import type {\n BgCloseUp,\n DomApi,\n RangeOffset,\n AnimationExtraOptions,\n ScrubAnimationOptions,\n} from '../../types';\nimport { measureCompHeight } from './utils';\nimport { toKeyframeValue } from '../../utils';\n\nexport function getNames(_: ScrubAnimationOptions) {\n return ['motion-bgCloseUpOpacity', 'motion-bgCloseUpZoom'];\n}\n\nexport function prepare(_: ScrubAnimationOptions, dom?: DomApi) {\n const measures = {\n '--motion-comp-height': '0px',\n '--motion-comp-half-height': '0px',\n };\n if (dom) {\n measureCompHeight(measures, dom, true);\n }\n return measures;\n}\n\nexport function web(options: ScrubAnimationOptions & AnimationExtraOptions, dom?: DomApi) {\n options.measures = prepare(options, dom);\n\n return style(options, true);\n}\n\nexport function style(options: ScrubAnimationOptions & AnimationExtraOptions, asWeb = false) {\n const easing = 'linear';\n const { scale = 80 } = options.namedEffect as BgCloseUp;\n\n const custom = { '--motion-trans-z': `${scale}px` };\n\n const [bgCloseUpOpacity, bgCloseUpZoom] = getNames(options);\n\n return [\n {\n ...options,\n name: bgCloseUpOpacity,\n easing,\n part: 'BG_LAYER',\n startOffset: {\n name: 'cover',\n offset: { type: 'percentage', value: 0 },\n } as RangeOffset,\n get startOffsetAdd() {\n return `calc(50vh + ${toKeyframeValue(\n options.measures || {},\n '--motion-comp-half-height',\n asWeb,\n )})`;\n },\n endOffset: {\n name: 'cover',\n offset: { type: 'percentage', value: 0 },\n } as RangeOffset,\n get endOffsetAdd() {\n return `calc(100vh + ${toKeyframeValue(\n options.measures || {},\n '--motion-comp-height',\n asWeb,\n )})`;\n },\n keyframes: [\n {\n opacity: 1,\n },\n {\n opacity: 0,\n },\n ],\n },\n {\n ...options,\n name: bgCloseUpZoom,\n easing,\n part: 'BG_MEDIA',\n startOffset: {\n name: 'cover',\n offset: { type: 'percentage', value: 0 },\n } as RangeOffset,\n endOffset: {\n name: 'cover',\n offset: { type: 'percentage', value: 0 },\n } as RangeOffset,\n get endOffsetAdd() {\n return `calc(100vh + ${toKeyframeValue(\n options.measures || {},\n '--motion-comp-height',\n asWeb,\n )})`;\n },\n keyframes: [\n {\n transform: 'perspective(100px) translateZ(0px)',\n },\n {\n transform: `perspective(100px) translateZ(${toKeyframeValue(\n custom,\n '--motion-trans-z',\n asWeb,\n )})`,\n },\n ],\n },\n ];\n}\n","import type {\n BgFade,\n DomApi,\n RangeOffset,\n AnimationExtraOptions,\n ScrubAnimationOptions,\n} from '../../types';\nimport { toKeyframeValue } from '../../utils';\nimport { measureCompHeight } from './utils';\n\nexport function getNames(_: ScrubAnimationOptions) {\n return ['motion-bgFade'];\n}\n\nexport function prepare(_: ScrubAnimationOptions, dom?: DomApi) {\n const measures = {\n '--motion-comp-height': '0px',\n '--motion-comp-half-height': '0px',\n };\n if (dom) {\n measureCompHeight(measures, dom, true);\n }\n return measures;\n}\n\nexport function web(options: ScrubAnimationOptions & AnimationExtraOptions, dom?: DomApi) {\n options.measures = prepare(options, dom);\n\n return style(options, true);\n}\n\nexport function style(options: ScrubAnimationOptions & AnimationExtraOptions, asWeb = false) {\n const { range = 'in' } = options.namedEffect as BgFade;\n const isOut = range === 'out';\n const easing = isOut ? 'sineOut' : 'sineIn';\n\n const custom = {\n '--motion-bg-fade-from': isOut ? 1 : 0,\n '--motion-bg-fade-to': isOut ? 0 : 1,\n };\n\n const [bgFade] = getNames(options);\n\n return [\n {\n ...options,\n name: bgFade,\n part: 'BG_LAYER',\n easing,\n startOffset: {\n name: 'cover',\n offset: { type: 'percentage', value: 0 },\n } as RangeOffset,\n startOffsetAdd: isOut ? '100vh' : '0px',\n endOffset: {\n name: 'cover',\n offset: { type: 'percentage', value: 0 },\n } as RangeOffset,\n get endOffsetAdd() {\n return isOut\n ? `calc(100vh + ${toKeyframeValue(\n options.measures || {},\n '--motion-comp-height',\n asWeb,\n )})`\n : `calc(50vh + ${toKeyframeValue(\n options.measures || {},\n '--motion-comp-half-height',\n asWeb,\n )})`;\n },\n keyframes: [\n {\n opacity: toKeyframeValue(custom, '--motion-bg-fade-from', asWeb),\n },\n {\n opacity: toKeyframeValue(custom, '--motion-bg-fade-to', asWeb),\n },\n ],\n },\n ];\n}\n","import type {\n BgFadeBack,\n DomApi,\n RangeOffset,\n AnimationExtraOptions,\n ScrubAnimationOptions,\n} from '../../types';\nimport { toKeyframeValue } from '../../utils';\nimport { measureCompHeight } from './utils';\n\nexport function getNames(_: ScrubAnimationOptions) {\n return ['motion-bgFadeBackOpacity', 'motion-bgFadeBackScale'];\n}\n\nexport function prepare(_: ScrubAnimationOptions, dom?: DomApi) {\n const measures = {\n '--motion-comp-height': '0px',\n '--motion-comp-half-height': '0px',\n };\n if (dom) {\n measureCompHeight(measures, dom, true);\n }\n return measures;\n}\n\nexport function web(options: ScrubAnimationOptions & AnimationExtraOptions, dom?: DomApi) {\n options.measures = prepare(options, dom);\n\n return style(options, true);\n}\n\nexport function style(options: ScrubAnimationOptions & AnimationExtraOptions, asWeb = false) {\n const easing = 'sineOut';\n const { scale = 0.7 } = options.namedEffect as BgFadeBack;\n\n const custom = { '--motion-scale': scale };\n\n const [bgFadeBackOpacity, bgFadeBackScale] = getNames(options);\n\n return [\n {\n ...options,\n name: bgFadeBackOpacity,\n easing: 'linear',\n part: 'BG_LAYER',\n startOffset: {\n name: 'cover',\n offset: { type: 'percentage', value: 0 },\n } as RangeOffset,\n startOffsetAdd: '100vh',\n endOffset: {\n name: 'cover',\n offset: { type: 'percentage', value: 0 },\n } as RangeOffset,\n get endOffsetAdd() {\n return `calc(100vh + ${toKeyframeValue(\n options.measures || {},\n '--motion-comp-height',\n asWeb,\n )})`;\n },\n keyframes: [\n {\n opacity: 1,\n },\n {\n opacity: 0,\n },\n ],\n },\n {\n ...options,\n name: bgFadeBackScale,\n easing,\n part: 'BG_LAYER',\n startOffset: {\n name: 'cover',\n offset: { type: 'percentage', value: 0 },\n } as RangeOffset,\n startOffsetAdd: '100vh',\n endOffset: {\n name: 'cover',\n offset: { type: 'percentage', value: 0 },\n } as RangeOffset,\n get endOffsetAdd() {\n return `calc(100vh + ${toKeyframeValue(\n options.measures || {},\n '--motion-comp-half-height',\n asWeb,\n )})`;\n },\n keyframes: [\n {\n scale: 1,\n },\n {\n scale: toKeyframeValue(custom, '--motion-scale', asWeb),\n },\n ],\n },\n ];\n}\n","import type {\n BgFake3D,\n RangeOffset,\n AnimationExtraOptions,\n ScrubAnimationOptions,\n DomApi,\n} from '../../types';\nimport { roundNumber, toKeyframeValue } from '../../utils';\nimport { measureCompHeight, getScaleFromPerspectiveAndZ } from './utils';\n\nconst PERSPECTIVE = 100;\n\nexport function getNames(_: ScrubAnimationOptions) {\n return ['motion-bgFake3DParallax', 'motion-bgFake3DStretch', 'motion-bgFake3DZoom'];\n}\n\nexport function prepare(_: ScrubAnimationOptions, dom?: DomApi) {\n const measures = { '--motion-comp-height': '0px' };\n if (dom) {\n measureCompHeight(measures, dom, true);\n }\n return measures;\n}\n\nexport function web(options: ScrubAnimationOptions & AnimationExtraOptions, dom?: DomApi) {\n options.measures = prepare(options, dom);\n\n return style(options, true);\n}\n\nexport function style(options: ScrubAnimationOptions & AnimationExtraOptions, asWeb = false) {\n const { stretch = 1.3, zoom = 100 / 6 } = options.namedEffect as BgFake3D;\n const scale = getScaleFromPerspectiveAndZ(zoom, PERSPECTIVE);\n\n const custom = {\n '--motion-scale-y': stretch,\n '--motion-trans-z': `${roundNumber(zoom)}px`,\n '--motion-trans-y-factor': roundNumber(-0.1 * (2 - scale)),\n };\n\n const [bgFake3DParallax, bgFake3DStretch, bgFake3DZoom] = getNames(options);\n const { measures = { '--motion-comp-height': '0px' } } = options;\n\n return [\n {\n ...options,\n name: bgFake3DParallax,\n part: 'BG_IMG',\n easing: 'sineOut',\n startOffset: {\n name: 'cover',\n offset: { type: 'percentage', value: 0 },\n } as RangeOffset,\n endOffset: {\n name: 'cover',\n offset: { type: 'percentage', value: 0 },\n } as RangeOffset,\n get endOffsetAdd() {\n return `calc(100svh + ${toKeyframeValue(measures, '--motion-comp-height', asWeb)})`;\n },\n get keyframes() {\n return [\n {\n transform: 'translateY(10svh)',\n },\n {\n transform: `translateY(calc(${toKeyframeValue(\n custom,\n '--motion-trans-y-factor',\n asWeb,\n )} * ${toKeyframeValue(\n measures,\n '--motion-comp-height',\n false,\n measures!['--motion-comp-height'] as string,\n )}))`,\n },\n ];\n },\n },\n {\n ...options,\n name: bgFake3DStretch,\n part: 'BG_IMG',\n easing: 'linear',\n composite: 'add' as const,\n startOffset: {\n name: 'cover',\n offset: { type: 'percentage', value: 0 },\n } as RangeOffset,\n endOffset: {\n name: 'cover',\n offset: { type: 'percentage', value: 0 },\n } as RangeOffset,\n get endOffsetAdd() {\n return `calc(100svh + ${toKeyframeValue(measures, '--motion-comp-height', asWeb)})`;\n },\n keyframes: [\n {\n transform: `scaleY(${toKeyframeValue(custom, '--motion-scale-y', asWeb)})`,\n },\n {\n transform: `scaleY(1)`,\n },\n ],\n },\n {\n ...options,\n name: bgFake3DZoom,\n part: 'BG_IMG',\n easing: 'sineIn',\n composite: 'add' as const,\n startOffset: {\n name: 'cover',\n offset: { type: 'percentage', value: 0 },\n } as RangeOffset,\n endOffset: {\n name: 'cover',\n offset: { type: 'percentage', value: 0 },\n } as RangeOffset,\n get endOffsetAdd() {\n return `calc(100svh + ${toKeyframeValue(measures, '--motion-comp-height', asWeb)})`;\n },\n keyframes: [\n {\n transform: `perspective(${PERSPECTIVE}px) translateZ(0px)`,\n },\n {\n transform: `perspective(${PERSPECTIVE}px) translateZ(${toKeyframeValue(\n custom,\n '--motion-trans-z',\n asWeb,\n )})`,\n },\n ],\n },\n ];\n}\n","import type {\n BgPan,\n DomApi,\n RangeOffset,\n AnimationExtraOptions,\n ScrubAnimationOptions,\n} from '../../types';\nimport { toKeyframeValue } from '../../utils';\nimport { measureCompHeight } from './utils';\n\nexport function getNames(_: ScrubAnimationOptions) {\n return ['motion-bgPan'];\n}\n\nexport function prepare(_: ScrubAnimationOptions, dom?: DomApi) {\n const measures = { '--motion-comp-height': '0px' };\n if (dom) {\n measureCompHeight(measures, dom, true);\n }\n return measures;\n}\n\nexport function web(options: ScrubAnimationOptions & AnimationExtraOptions, dom?: DomApi) {\n options.measures = prepare(options, dom);\n\n return style(options, true);\n}\n\nexport function style(options: ScrubAnimationOptions & AnimationExtraOptions, asWeb = false) {\n const { direction = 'left', speed = 0.2 } = options.namedEffect as BgPan;\n const offsetPercentage = ((50 * speed) / (1 + speed)) | 0;\n\n const custom = {\n '--motion-trans-x': direction === 'left' ? `${offsetPercentage}%` : `${-offsetPercentage}%`,\n };\n\n const [bgPan] = getNames(options);\n\n return [\n {\n ...options,\n name: bgPan,\n part: 'BG_MEDIA',\n startOffset: {\n name: 'cover',\n offset: { type: 'percentage', value: 0 },\n } as RangeOffset,\n endOffset: {\n name: 'cover',\n offset: { type: 'percentage', value: 0 },\n } as RangeOffset,\n get endOffsetAdd() {\n return `calc(100vh + ${toKeyframeValue(\n options.measures || {},\n '--motion-comp-height',\n asWeb,\n )})`;\n },\n keyframes: [\n {\n transform: `translateX(${toKeyframeValue(custom, '--motion-trans-x', asWeb)})`,\n },\n {\n transform: `translateX(calc(-1 * ${toKeyframeValue(custom, '--motion-trans-x', asWeb)}))`,\n },\n ],\n },\n ];\n}\n","import type {\n BgParallax,\n RangeOffset,\n AnimationExtraOptions,\n ScrubAnimationOptions,\n DomApi,\n} from '../../types';\nimport { toKeyframeValue } from '../../utils';\nimport { measureCompHeight } from './utils';\n\nexport function getNames(_: ScrubAnimationOptions) {\n return ['motion-bgParallax'];\n}\n\nexport function prepare(_: ScrubAnimationOptions, dom?: DomApi) {\n const measures = { '--motion-comp-height': '0px' };\n if (dom) {\n measureCompHeight(measures, dom, true);\n }\n return measures;\n}\n\nexport function web(options: ScrubAnimationOptions & AnimationExtraOptions, dom?: DomApi) {\n options.measures = prepare(options, dom);\n\n return style(options, true);\n}\n\nexport function style(options: ScrubAnimationOptions & AnimationExtraOptions, asWeb = false) {\n const { speed = 0.2 } = options.namedEffect as BgParallax;\n const custom = {\n '--motion-parallax-speed': speed,\n };\n\n const [bgParallax] = getNames(options);\n\n return [\n {\n ...options,\n name: bgParallax,\n part: 'BG_MEDIA',\n startOffset: {\n name: 'cover',\n offset: { type: 'percentage', value: 0 },\n } as RangeOffset,\n endOffset: {\n name: 'cover',\n offset: { type: 'percentage', value: 0 },\n } as RangeOffset,\n get endOffsetAdd() {\n return `calc(100svh + ${toKeyframeValue(\n options.measures || {},\n '--motion-comp-height',\n asWeb,\n )})`;\n },\n keyframes: [\n {\n transform: `translateY(calc(${toKeyframeValue(\n custom,\n '--motion-parallax-speed',\n asWeb,\n )} * 100svh))`,\n },\n {\n transform: `translateY(calc((200lvh - 100%) * ${toKeyframeValue(\n custom,\n '--motion-parallax-speed',\n asWeb,\n )}))`,\n },\n ],\n },\n ];\n}\n","import type {\n BgPullBack,\n DomApi,\n RangeOffset,\n AnimationExtraOptions,\n ScrubAnimationOptions,\n} from '../../types';\nimport { toKeyframeValue } from '../../utils';\nimport { measureCompHeight } from './utils';\n\nexport function getNames(_: ScrubAnimationOptions) {\n return ['motion-bgPullBack'];\n}\n\nexport function prepare(_: ScrubAnimationOptions, dom?: DomApi) {\n const measures = { '--motion-comp-height': '0px' };\n if (dom) {\n measureCompHeight(measures, dom, true);\n }\n return measures;\n}\n\nexport function web(options: ScrubAnimationOptions & AnimationExtraOptions, dom?: DomApi) {\n options.measures = prepare(options, dom);\n\n return style(options, true);\n}\n\nexport function style(options: ScrubAnimationOptions & AnimationExtraOptions, asWeb = false) {\n const easing = 'linear';\n const { scale = 50 } = options.namedEffect as BgPullBack;\n\n const custom = {\n '--motion-trans-z': `${scale}px`,\n // TODO: (ameerf) - remove and use only scale once CSS round is widely available\n '--motion-trans-y': `-${(scale / 3) | 0}%`,\n };\n\n const [bgPullBack] = getNames(options);\n\n return [\n {\n ...options,\n name: bgPullBack,\n easing,\n part: 'BG_MEDIA',\n startOffset: {\n name: 'cover',\n offset: { type: 'percentage', value: 0 },\n } as RangeOffset,\n endOffset: {\n name: 'cover',\n offset: { type: 'percentage', value: 0 },\n } as RangeOffset,\n get endOffsetAdd() {\n return `${toKeyframeValue(options.measures || {}, '--motion-comp-height', asWeb)}`;\n },\n keyframes: [\n {\n transform: `perspective(100px) translate3d(0px, ${toKeyframeValue(\n custom,\n '--motion-trans-y',\n asWeb,\n )}, ${toKeyframeValue(custom, '--motion-trans-z', asWeb)})`,\n },\n {\n transform: 'perspective(100px) translate3d(0px, 0px, 0px)',\n },\n ],\n },\n ];\n}\n","import type { ScrubAnimationOptions, DomApi } from '../../types';\nimport { measureCompHeight } from './utils';\n\nexport function getNames(_: ScrubAnimationOptions) {\n return [];\n}\n\nexport function prepare(_: ScrubAnimationOptions, dom?: DomApi) {\n const measures = { '--motion-comp-height': '0px' };\n if (dom) {\n measureCompHeight(measures, dom, true);\n }\n return measures;\n}\n\nexport function web(options: ScrubAnimationOptions, dom?: DomApi) {\n prepare(options, dom);\n\n return style(options);\n}\n\nexport function style(_options: ScrubAnimationOptions) {\n return [];\n}\n","import type { BgRotate, RangeOffset, ScrubAnimationOptions } from '../../types';\nimport { toKeyframeValue } from '../../utils';\n\nexport function getNames(_: ScrubAnimationOptions) {\n return ['motion-bgRotate'];\n}\n\nexport function web(options: ScrubAnimationOptions) {\n return style(options, true);\n}\n\nexport function style(options: ScrubAnimationOptions, asWeb = false) {\n const easing = 'sineOut';\n const { angle = 22, direction = 'counter-clockwise' } = options.namedEffect as BgRotate;\n\n const custom = {\n '--motion-rot-from': `${direction === 'counter-clockwise' ? angle : -angle}deg`,\n };\n\n const [bgRotate] = getNames(options);\n\n return [\n {\n ...options,\n name: bgRotate,\n easing,\n part: 'BG_MEDIA',\n startOffset: {\n name: 'cover',\n offset: { type: 'percentage', value: 0 },\n } as RangeOffset,\n endOffset: {\n name: 'cover',\n offset: { type: 'percentage', value: 0 },\n } as RangeOffset,\n endOffsetAdd: '100vh',\n keyframes: [\n {\n transform: `rotate(${toKeyframeValue(custom, '--motion-rot-from', asWeb)})`,\n },\n {\n transform: 'rotate(0deg)',\n },\n ],\n },\n ];\n}\n","import type {\n BgSkew,\n DomApi,\n RangeOffset,\n AnimationExtraOptions,\n ScrubAnimationOptions,\n} from '../../types';\nimport { toKeyframeValue } from '../../utils';\nimport { measureCompHeight } from './utils';\n\nexport function getNames(_: ScrubAnimationOptions) {\n return ['motion-bgSkew'];\n}\n\nexport function prepare(_: ScrubAnimationOptions, dom?: DomApi) {\n const measures = { '--motion-comp-height': '0px' };\n if (dom) {\n measureCompHeight(measures, dom, true);\n }\n return measures;\n}\n\nexport function web(options: ScrubAnimationOptions & AnimationExtraOptions, dom?: DomApi) {\n options.measures = prepare(options, dom);\n\n return style(options, true);\n}\n\nexport function style(options: ScrubAnimationOptions & AnimationExtraOptions, asWeb = false) {\n const { angle = 20, direction = 'counter-clockwise' } = options.namedEffect as BgSkew;\n\n const custom = {\n '--motion-skew': `${direction === 'counter-clockwise' ? angle : -angle}deg`,\n };\n\n const [bgSkew] = getNames(options);\n\n return [\n {\n ...options,\n name: bgSkew,\n part: 'BG_MEDIA',\n startOffset: {\n name: 'cover',\n offset: { type: 'percentage', value: 0 },\n } as RangeOffset,\n endOffset: {\n name: 'cover',\n offset: { type: 'percentage', value: 0 },\n } as RangeOffset,\n get endOffsetAdd() {\n return `calc(100vh + ${toKeyframeValue(\n options.measures || {},\n '--motion-comp-height',\n asWeb,\n )})`;\n },\n keyframes: [\n {\n transform: `skewY(${toKeyframeValue(custom, '--motion-skew', asWeb)})`,\n },\n {\n transform: `skewY(calc(-1 * ${toKeyframeValue(custom, '--motion-skew', asWeb)}))`,\n },\n ],\n },\n ];\n}\n","import type {\n AnimationData,\n BgZoom,\n RangeOffset,\n AnimationExtraOptions,\n ScrubAnimationOptions,\n DomApi,\n} from '../../types';\nimport { roundNumber, toKeyframeValue } from '../../utils';\nimport { measureCompHeight, getScaleFromPerspectiveAndZ } from './utils';\n\nconst PERSPECTIVE = 100;\nconst DEFAULT_ZOOM = 40;\nconst ZOOM_OUT_FACTOR = 0.375; // 15/40 - this for using the same scale of values in the data\nconst DIRECTION_TO_PARAMS = {\n in: {\n easing: 'sineIn',\n fromY: '20svh',\n },\n out: {\n easing: 'sineInOut',\n fromY: '0px',\n },\n};\n\nexport function getNames(options: ScrubAnimationOptions) {\n const { direction = 'in' } = options.namedEffect as BgZoom;\n const names = ['motion-bgZoomMedia', 'motion-bgZoomImg'];\n\n if (direction === 'in') {\n names.splice(1, 0, 'motion-bgZoomParallax');\n }\n\n return names;\n}\n\nexport function prepare(_: ScrubAnimationOptions, dom?: DomApi) {\n const measures = { '--motion-comp-height': '0px' };\n if (dom) {\n measureCompHeight(measures, dom, true);\n }\n return measures;\n}\n\nexport function web(options: ScrubAnimationOptions & AnimationExtraOptions, dom?: DomApi) {\n options.measures = prepare(options, dom);\n\n return style(options, true);\n}\n\nexport function style(options: ScrubAnimationOptions & AnimationExtraOptions, asWeb = false) {\n let { direction = 'in', zoom = DEFAULT_ZOOM } = options.namedEffect as BgZoom;\n const isIn = direction === 'in';\n if (!isIn) {\n direction = 'out';\n zoom *= ZOOM_OUT_FACTOR;\n }\n\n const { easing, fromY } = DIRECTION_TO_PARAMS[direction];\n const fromZ = isIn ? 0 : zoom / 1.3;\n const toZ = isIn ? zoom : -zoom;\n const toScale = roundNumber(getScaleFromPerspectiveAndZ(toZ, PERSPECTIVE));\n\n const custom = {\n '--motion-zoom-over-pers': (0.5 * zoom) / PERSPECTIVE,\n '--motion-scale-to': toScale,\n '--motion-trans-y-from': fromY,\n '--motion-trans-z-from': `${roundNumber(fromZ)}px`,\n '--motion-trans-z-to': `${roundNumber(toZ)}px`,\n };\n\n const { measures = { '--motion-comp-height': '0px' } } = options;\n\n const animations: AnimationData[] = [\n {\n ...options,\n part: 'BG_MEDIA',\n easing: 'linear',\n startOffset: {\n name: 'cover',\n offset: { type: 'percentage', value: 0 },\n } as RangeOffset,\n endOffset: {\n name: 'cover',\n offset: { type: 'percentage', value: 0 },\n } as RangeOffset,\n keyframes: [\n {\n transform: 'translate3d(0, 0, 0)',\n },\n {\n transform: 'translate3d(0, 0, 0)',\n },\n ],\n },\n {\n ...options,\n easing,\n part: 'BG_IMG',\n composite: isIn ? ('add' as const) : ('replace' as const),\n startOffset: {\n name: 'cover',\n offset: { type: 'percentage', value: 0 },\n } as RangeOffset,\n endOffset: {\n name: 'cover',\n offset: { type: 'percentage', value: 0 },\n } as RangeOffset,\n get endOffsetAdd() {\n return `calc(100svh + ${toKeyframeValue(measures, '--motion-comp-height', asWeb)})`;\n },\n keyframes: [\n {\n transform: `perspective(${PERSPECTIVE}px) translateZ(${toKeyframeValue(\n custom,\n '--motion-trans-z-from',\n asWeb,\n )})`,\n },\n {\n transform: `perspective(${PERSPECTIVE}px) translateZ(${toKeyframeValue(\n custom,\n '--motion-trans-z-to',\n asWeb,\n )})`,\n },\n ],\n },\n ];\n\n if (isIn) {\n animations.splice(1, 0, {\n ...options,\n part: 'BG_IMG',\n easing: 'linear',\n startOffset: {\n name: 'cover',\n offset: { type: 'percentage', value: 0 },\n } as RangeOffset,\n endOffset: {\n name: 'cover',\n offset: { type: 'percentage', value: 0 },\n } as RangeOffset,\n get endOffsetAdd() {\n return `calc(100svh + ${toKeyframeValue(measures, '--motion-comp-height', asWeb)})`;\n },\n get keyframes() {\n return [\n {\n transform: `translateY(${toKeyframeValue(custom, '--motion-trans-y-from', asWeb)})`,\n },\n {\n transform: `translateY(calc(${toKeyframeValue(\n custom,\n '--motion-scale-to',\n asWeb,\n )} * (-0.2 * ${toKeyframeValue(\n measures,\n '--motion-comp-height',\n false,\n measures['--motion-comp-height'] as string,\n )} + ${toKeyframeValue(\n custom,\n '--motion-zoom-over-pers',\n asWeb,\n )} * max(0px, 100lvh - ${toKeyframeValue(\n measures,\n '--motion-comp-height',\n false,\n measures['--motion-comp-height'] as string,\n )}))))`,\n },\n ];\n },\n });\n }\n\n const names = getNames(options);\n animations.forEach((animation, index) => {\n animation.name = names[index];\n });\n\n return animations;\n}\n","import type {\n DomApi,\n ImageParallax,\n RangeOffset,\n AnimationExtraOptions,\n ScrubAnimationOptions,\n} from '../../types';\nimport { toKeyframeValue } from '../../utils';\nimport { measureCompHeight, measureSiteHeight } from './utils';\n\nexport function getNames(_: ScrubAnimationOptions) {\n return ['motion-imageParallax'];\n}\n\nexport function prepare(options: ScrubAnimationOptions, dom?: DomApi) {\n const measures = {\n '--motion-comp-height': '0px',\n '--motion-site-height': '0',\n };\n const { isPage = false } = options.namedEffect as ImageParallax;\n if (dom) {\n if (isPage) {\n measureSiteHeight(measures, dom, true);\n } else {\n measureCompHeight(measures, dom, true);\n }\n }\n return measures;\n}\n\nexport function web(options: ScrubAnimationOptions & AnimationExtraOptions, dom?: DomApi) {\n options.measures = prepare(options, dom);\n\n return style(options, true);\n}\n\nexport function style(options: ScrubAnimationOptions & AnimationExtraOptions, asWeb = false) {\n const { speed = 1.5, reverse = false, isPage = false } = options.namedEffect as ImageParallax;\n\n let start = -100 * (speed - 1);\n if (!isPage) {\n start = start / speed;\n }\n let end = 0;\n if (reverse) {\n [start, end] = [end, start];\n }\n\n const custom = {\n '--motion-trans-y-from': `${start | 0}%`,\n '--motion-trans-y-to': `${end | 0}%`,\n };\n\n const [imageParallax] = getNames(options);\n\n return [\n {\n ...options,\n name: imageParallax,\n part: 'BG_MEDIA',\n startOffset: {\n name: isPage ? 'contain' : 'cover',\n offset: { type: 'percentage', value: 0 },\n } as RangeOffset,\n endOffset: {\n name: 'cover',\n offset: { type: 'percentage', value: 0 },\n } as RangeOffset,\n get endOffsetAdd() {\n return isPage\n ? `${toKeyframeValue(options.measures || {}, '--motion-site-height', asWeb)}`\n : `calc(100vh + ${toKeyframeValue(\n options.measures || {},\n '--motion-comp-height',\n asWeb,\n )})`;\n },\n keyframes: [\n {\n transform: `translateY(${toKeyframeValue(custom, '--motion-trans-y-from', asWeb)})`,\n },\n {\n transform: `translateY(${toKeyframeValue(custom, '--motion-trans-y-to', asWeb)})`,\n },\n ],\n },\n ];\n}\n","import type { TimeAnimationOptions, Bounce, AnimationExtraOptions, DomApi } from '../../types';\nimport { getEasing, getTimingFactor, toKeyframeValue, mapRange } from '../../utils';\n\nconst POWER_TO_BOUNCE_FACTOR_MAP = {\n soft: 1,\n medium: 2,\n hard: 3,\n};\n\nconst TRANSLATE_Y_KEYFRAMES = [\n { keyframe: 0, translateY: 0 },\n { keyframe: 8.8, translateY: -55 },\n { keyframe: 17.6, translateY: -87 },\n { keyframe: 26.5, translateY: -98 },\n { keyframe: 35.3, translateY: -87 },\n { keyframe: 44.1, translateY: -55 },\n { keyframe: 53.1, translateY: 0 },\n { keyframe: 66.2, translateY: -23 },\n { keyframe: 81, translateY: 0 },\n { keyframe: 86.8, translateY: -5 },\n { keyframe: 94.1, translateY: 0 },\n { keyframe: 97.1, translateY: -2 },\n { keyframe: 100, translateY: 0 },\n];\n\nexport function web(options: TimeAnimationOptions & AnimationExtraOptions, _dom?: DomApi) {\n return style(options, true);\n}\n\nexport function style(options: TimeAnimationOptions & AnimationExtraOptions, asWeb = false) {\n const { power = 'soft', intensity } = options.namedEffect as Bounce;\n\n const duration = options.duration || 1;\n const delay = options.delay || 0;\n const timingFactor = getTimingFactor(duration, delay) as number;\n const [name] = getNames(options);\n\n const bounceFactor = intensity\n ? mapRange(0, 1, POWER_TO_BOUNCE_FACTOR_MAP.soft, POWER_TO_BOUNCE_FACTOR_MAP.hard, intensity)\n : POWER_TO_BOUNCE_FACTOR_MAP[power];\n const easing = getEasing('sineOut');\n\n const custom = {\n '--motion-bounce-factor': bounceFactor,\n };\n\n const keyframes = TRANSLATE_Y_KEYFRAMES.map(({ keyframe, translateY }) => ({\n offset: (keyframe / 100) * timingFactor,\n translate: `0px calc(${translateY / 2}px * ${toKeyframeValue(\n custom,\n '--motion-bounce-factor',\n asWeb,\n )})`,\n easing,\n }));\n\n return [\n {\n ...options,\n name,\n delay: 0,\n easing: 'linear',\n duration: duration + delay,\n custom,\n keyframes,\n },\n ];\n}\n\nexport function getNames(options: TimeAnimationOptions & AnimationExtraOptions) {\n const timingFactor = getTimingFactor(options.duration!, options.delay!, true);\n\n return [`motion-bounce-${timingFactor}`];\n}\n","import type { TimeAnimationOptions, Breathe, DomApi, AnimationExtraOptions } from '../../types';\nimport {\n getCssUnits,\n getEasing,\n getEasingFamily,\n getTimingFactor,\n toKeyframeValue,\n} from '../../utils';\n\nconst DIRECTION_MAP = {\n vertical: { x: 0, y: 1, z: 0 },\n horizontal: { x: 1, y: 0, z: 0 },\n center: { x: 0, y: 0, z: 1 },\n};\n\nconst FACTORS_SEQUENCE = [\n { translateFactor: 1, timeFactor: 0.25 },\n { translateFactor: -1, timeFactor: 0.5 },\n { translateFactor: 1, timeFactor: 0.5 },\n { translateFactor: -0.7, timeFactor: 0.5 },\n { translateFactor: 0.6, timeFactor: 0.3333 },\n];\n\nexport function web(options: TimeAnimationOptions & AnimationExtraOptions, _dom?: DomApi) {\n return style(options, true);\n}\n\nexport function style(options: TimeAnimationOptions & AnimationExtraOptions, asWeb = false) {\n const { direction = 'vertical', distance = { value: 25, type: 'px' } } =\n options.namedEffect as Breathe;\n\n const easing = options.easing || 'sineInOut';\n const duration = options.duration || 1;\n const delay = options.delay || 0;\n const totalDurationWithDelay = 3.2 * duration + delay;\n const timingFactor = getTimingFactor(duration, totalDurationWithDelay - duration) as number;\n const [name] = getNames(options);\n\n const { x, y, z } = DIRECTION_MAP[direction];\n const ease = getEasingFamily(easing);\n const perspectiveTransform = direction === 'center' ? 'perspective(800px)' : '';\n\n // Create CSS custom properties for the Breathe configuration\n const custom: Record<string, string | number> = {\n '--motion-breathe-perspective': perspectiveTransform,\n '--motion-breathe-distance': `${distance.value}${getCssUnits(distance.type || 'px')}`,\n '--motion-breathe-x': x,\n '--motion-breathe-y': y,\n '--motion-breathe-z': z,\n };\n\n const breatheX = `${toKeyframeValue(custom, '--motion-breathe-x', asWeb)}`;\n const breatheY = `${toKeyframeValue(custom, '--motion-breathe-y', asWeb)}`;\n const breatheZ = `${toKeyframeValue(custom, '--motion-breathe-z', asWeb)}`;\n const breathePerspective = `${toKeyframeValue(\n custom,\n '--motion-breathe-perspective',\n asWeb,\n '',\n )}`;\n const breatheDistance = `${toKeyframeValue(custom, '--motion-breathe-distance', asWeb)}`;\n\n let currentOffset = 0;\n\n // in case a delay is applied, animate a different sequence which decays to a stop\n const keyframes = delay\n ? FACTORS_SEQUENCE.map(({ translateFactor, timeFactor }) => {\n const keyframeOffset = currentOffset + timeFactor * timingFactor;\n currentOffset = keyframeOffset;\n const distancePart = `${breatheDistance} * ${translateFactor}`;\n\n return {\n offset: keyframeOffset,\n easing: getEasing(ease.inOut),\n transform: `${breathePerspective} translate3d(calc(${breatheX} * ${distancePart}), calc(${breatheY} * ${distancePart}), calc(${breatheZ} * ${distancePart})) rotateZ(var(--comp-rotate-z, 0deg))`,\n };\n })\n : [\n {\n offset: 0.25,\n easing: getEasing(ease.inOut),\n transform: `${breathePerspective} translate3d(calc(${breatheX} * ${breatheDistance}), calc(${breatheY} * ${breatheDistance}), calc(${breatheZ} * ${breatheDistance})) rotateZ(var(--comp-rotate-z, 0deg))`,\n },\n {\n offset: 0.75,\n easing: getEasing(ease.in),\n transform: `${breathePerspective} translate3d(calc(${breatheX} * -1 * ${breatheDistance}), calc(${breatheY} * -1 * ${breatheDistance}), calc(${breatheZ} * -1 * ${breatheDistance})) rotateZ(var(--comp-rotate-z, 0deg))`,\n },\n ];\n\n return [\n {\n ...options,\n name,\n easing: 'linear',\n delay: 0,\n duration: delay ? totalDurationWithDelay : duration,\n custom,\n keyframes: [\n {\n offset: 0,\n easing: getEasing(ease.out),\n transform: `${breathePerspective} translate3d(0, 0, 0) rotateZ(var(--comp-rotate-z, 0deg))`,\n },\n ...keyframes,\n {\n offset: 1,\n transform: `${breathePerspective} translate3d(0, 0, 0) rotateZ(var(--comp-rotate-z, 0deg))`,\n },\n ],\n },\n ];\n}\n\nexport function getNames(options: TimeAnimationOptions & AnimationExtraOptions) {\n const timingFactor = getTimingFactor(options.duration!, options.delay!, true);\n\n return [`motion-breathe-${timingFactor}`];\n}\n","import type { Cross, DomApi, TimeAnimationOptions, AnimationExtraOptions } from '../../types';\nimport { getElementOffset, getTimingFactor } from '../../utils';\n\nconst FOUR_DIRECTIONS_TRANSLATIONS = {\n // 100cqw - left\n RIGHT: 'calc(var(--motion-parent-width, 100vw) - var(--motion-left, 0px))',\n // left * -1 - width\n LEFT: 'calc(var(--motion-left, 0px) * -1 - var(--motion-width, 100%))',\n // top * -1 - height\n TOP: 'calc(var(--motion-top, 0px) * -1 - var(--motion-height, 100%))',\n // 100cqh - top\n BOTTOM: 'calc(var(--motion-parent-height, 100vh) - var(--motion-top, 0px))',\n};\nconst { RIGHT, LEFT, TOP, BOTTOM } = FOUR_DIRECTIONS_TRANSLATIONS;\n\nconst FOUR_CORNERS_TRANSLATIONS = {\n 'top-left': {\n // min(100cqw - left, 100cqh - top)\n from: `min(${RIGHT}, ${BOTTOM})`,\n // min(abs(left * -1 - width), abs(top * -1 - height))\n to: `min(calc(${LEFT} * -1), calc(${TOP} * -1))`,\n },\n 'top-right': {\n // min(abs(left * -1 - width), 100cqh - top)\n from: `min(calc(${LEFT} * -1), ${BOTTOM})`,\n // min(100cqw - left, abs(top * -1 - height))\n to: `min(${RIGHT}, calc(${TOP} * -1))`,\n },\n 'bottom-left': {\n // min(100cqw - left, abs(top * -1 - height))\n from: `min(${RIGHT}, calc(${TOP} * -1))`,\n // min(abs(left * -1 - width), 100cqh - top)\n to: `min(calc(${LEFT} * -1), ${BOTTOM})`,\n },\n 'bottom-right': {\n // min(abs(left * -1 - width), abs(top * -1 - height))\n from: `min(calc(${LEFT} * -1), calc(${TOP} * -1))`,\n // min(100cqw - left, 100cqh - top)\n to: `min(${RIGHT}, ${BOTTOM})`,\n },\n};\n\nconst TRANSLATE_BY_DIRECTION_MAP = {\n left: {\n from: `${RIGHT} 0`,\n to: `${LEFT} 0`,\n },\n right: {\n from: `${LEFT} 0`,\n to: `${RIGHT} 0`,\n },\n top: {\n from: `0 ${BOTTOM}`,\n to: `0 ${TOP}`,\n },\n bottom: {\n from: `0 ${TOP}`,\n to: `0 ${BOTTOM}`,\n },\n};\n\ntype HorizontalOffsetByDirectionParams = {\n left: number;\n width: number;\n parentWidth: number;\n};\n\ntype VerticalOffsetByDirectionParams = {\n top: number;\n height: number;\n parentHeight: number;\n};\n\ntype OffsetByDirectionParams = HorizontalOffsetByDirectionParams & VerticalOffsetByDirectionParams;\n\nconst GET_OFFSET_BY_DIRECTION_MAP = {\n // (width + left) / (100cqw + width)\n left: ({ left, width, parentWidth }: HorizontalOffsetByDirectionParams) =>\n (width + left) / (parentWidth + width || 1),\n // (100cqw - left) / (100cqw + width)\n right: ({ left, width, parentWidth }: HorizontalOffsetByDirectionParams) =>\n (parentWidth - left) / (parentWidth + width || 1),\n // (100cqh - top) / (100cqh + height)\n bottom: ({ top, height, parentHeight }: VerticalOffsetByDirectionParams) =>\n (parentHeight - top) / (parentHeight + height || 1),\n // (height + top) / (100cqh + height)\n top: ({ top, height, parentHeight }: VerticalOffsetByDirectionParams) =>\n (height + top) / (parentHeight + height || 1),\n // min(<left>, <top>)\n 'bottom-right': ({\n left,\n top,\n width,\n height,\n parentWidth,\n parentHeight,\n }: OffsetByDirectionParams) => {\n const leftDistance = width + left;\n const topDistance = parentHeight - top;\n\n return leftDistance < topDistance\n ? leftDistance / (parentWidth + width || 1)\n : topDistance / (parentHeight + height || 1);\n },\n // min(<right>, <top>)\n 'bottom-left': ({\n left,\n top,\n width,\n height,\n parentWidth,\n parentHeight,\n }: OffsetByDirectionParams) => {\n const rightDistance = parentWidth - left;\n const topDistance = parentHeight - top;\n\n return rightDistance < topDistance\n ? rightDistance / (parentWidth + width || 1)\n : topDistance / (parentHeight + height || 1);\n },\n // min(<left>, <bottom>)\n 'top-right': ({\n left,\n top,\n width,\n height,\n parentWidth,\n parentHeight,\n }: OffsetByDirectionParams) => {\n const leftDistance = parentWidth - left;\n const bottomDistance = height + top;\n\n return leftDistance < bottomDistance\n ? leftDistance / (parentWidth + width || 1)\n : bottomDistance / (parentHeight + height || 1);\n },\n // min(<right>, <bottom>)\n 'top-left': ({\n left,\n top,\n width,\n height,\n parentWidth,\n parentHeight,\n }: OffsetByDirectionParams) => {\n const rightDistance = parentWidth - left;\n const bottomDistance = height + top;\n\n return rightDistance < bottomDistance\n ? rightDistance / (parentWidth + width || 1)\n : bottomDistance / (parentHeight + height || 1);\n },\n};\n\nfunction generateTranslate(direction: keyof typeof FOUR_CORNERS_TRANSLATIONS) {\n const _from = FOUR_CORNERS_TRANSLATIONS[direction].from;\n const _to = FOUR_CORNERS_TRANSLATIONS[direction].to;\n const fromYFactor = direction.startsWith('top') ? 1 : -1;\n const toYFactor = -fromYFactor;\n const fromXFactor = direction.endsWith('left') ? 1 : -1;\n const toXFactor = -fromXFactor;\n\n return {\n from: `calc(${_from} * ${fromXFactor}) calc(${_from} * ${fromYFactor})`,\n to: `calc(${_to} * ${toXFactor}) calc(${_to} * ${toYFactor})`,\n };\n}\n\nexport function web(options: TimeAnimationOptions & AnimationExtraOptions, dom?: DomApi) {\n const { direction = 'right' } = options.namedEffect as Cross;\n const duration = options.duration || 1;\n const delay = options.delay || 0;\n const timingFactor = getTimingFactor(duration, delay) as number;\n const [name] = getNames(options);\n\n // Create CSS custom properties for the Cross configuration\n const custom: Record<string, string | number> = {\n '--motion-left': '0px',\n '--motion-top': '0px',\n '--motion-width': '100%',\n '--motion-height': '100%',\n '--motion-parent-width': '100vw',\n '--motion-parent-height': '100vh',\n };\n\n /*\n * Prepare function\n */\n let left = 0;\n let top = 0;\n let width = 0;\n let height = 0;\n let parentWidth = 0;\n let parentHeight = 0;\n\n if (dom) {\n dom.measure((target) => {\n if (!target) {\n return;\n }\n\n const { width: targetWidth, height: targetHeight } = target.getBoundingClientRect();\n const parent = target.offsetParent as HTMLElement;\n const parentRect = parent?.getBoundingClientRect() || ({} as DOMRect);\n const offset = getElementOffset(target, parent);\n\n left = offset.left;\n top = offset.top;\n width = targetWidth;\n height = targetHeight;\n parentWidth = parentRect.width;\n parentHeight = parentRect.height;\n });\n\n dom.mutate((target) => {\n target?.style.setProperty('--motion-left', `${left}px`);\n target?.style.setProperty('--motion-top', `${top}px`);\n target?.style.setProperty('--motion-width', `${width}px`);\n target?.style.setProperty('--motion-height', `${height}px`);\n target?.style.setProperty('--motion-parent-width', `${parentWidth}px`);\n target?.style.setProperty('--motion-parent-height', `${parentHeight}px`);\n });\n }\n\n return [\n {\n ...options,\n name,\n delay: 0,\n easing: 'linear',\n duration: duration + delay,\n custom,\n get keyframes() {\n // Calculate the timing offset for keyframes\n const toDurationOffset =\n GET_OFFSET_BY_DIRECTION_MAP[direction]({\n left,\n top,\n width,\n height,\n parentWidth,\n parentHeight,\n }) * timingFactor;\n\n let from, to;\n if (direction in TRANSLATE_BY_DIRECTION_MAP) {\n from =\n TRANSLATE_BY_DIRECTION_MAP[direction as keyof typeof TRANSLATE_BY_DIRECTION_MAP].from;\n to = TRANSLATE_BY_DIRECTION_MAP[direction as keyof typeof TRANSLATE_BY_DIRECTION_MAP].to;\n } else {\n const cornerFromTo = generateTranslate(\n direction as keyof typeof FOUR_CORNERS_TRANSLATIONS,\n );\n from = cornerFromTo.from;\n to = cornerFromTo.to;\n }\n\n return [\n {\n offset: 0,\n translate: '0 0',\n },\n {\n offset: toDurationOffset,\n translate: to,\n easing: 'step-start',\n },\n {\n offset: toDurationOffset,\n translate: from,\n },\n {\n offset: timingFactor,\n translate: '0 0',\n },\n {\n offset: 1,\n translate: '0 0',\n },\n ];\n },\n },\n ];\n}\n\nexport function getNames(_: TimeAnimationOptions & AnimationExtraOptions) {\n return ['motion-cross'];\n}\n","import type { TimeAnimationOptions, DomApi, AnimationExtraOptions } from '../../types';\nimport { getEasing, getTimingFactor } from '../../utils';\n\nexport function web(options: TimeAnimationOptions & AnimationExtraOptions, _dom?: DomApi) {\n return style(options, true);\n}\n\nexport function style(options: TimeAnimationOptions & AnimationExtraOptions, _asWeb = false) {\n const duration = options.duration || 1;\n const delay = options.delay || 0;\n const easing = getEasing(options.easing || 'cubicInOut');\n const timingFactor = getTimingFactor(duration, delay) as number;\n const [name] = getNames(options);\n\n const keyframes = [\n {\n offset: 0,\n opacity: 1,\n easing,\n },\n {\n offset: 0.5 * timingFactor,\n opacity: 0,\n easing,\n },\n {\n offset: timingFactor,\n opacity: 1,\n },\n {\n offset: 1,\n opacity: 1,\n },\n ];\n\n return [\n {\n ...options,\n name,\n easing: 'linear',\n delay: 0,\n duration: duration + delay,\n keyframes,\n },\n ];\n}\n\nexport function getNames(options: TimeAnimationOptions & AnimationExtraOptions) {\n const timingFactor = getTimingFactor(options.duration!, options.delay!, true);\n\n return [`motion-flash-${timingFactor}`];\n}\n","import type { Flip, TimeAnimationOptions, DomApi, AnimationExtraOptions } from '../../types';\nimport { getEasing, getTimingFactor, toKeyframeValue } from '../../utils';\n\nconst POWER_EASING_MAP = {\n soft: 'linear',\n medium: 'quintInOut',\n hard: 'backOut',\n};\n\nconst DIRECTION_MAP = {\n vertical: { x: '1', y: '0' },\n horizontal: { x: '0', y: '1' },\n};\n\nexport function web(options: TimeAnimationOptions & AnimationExtraOptions, _dom?: DomApi) {\n return style(options, true);\n}\n\nexport function style(options: TimeAnimationOptions & AnimationExtraOptions, asWeb = false) {\n const { direction = 'horizontal', power } = options.namedEffect as Flip;\n\n const duration = options.duration || 1;\n const delay = options.delay || 0;\n const offset = getTimingFactor(duration, delay) as number;\n const [name] = getNames(options);\n\n const rotationAxes = DIRECTION_MAP[direction];\n const easing = (power && POWER_EASING_MAP[power]) || options.easing || 'linear';\n\n const custom = {\n '--motion-rotate-x': rotationAxes.x,\n '--motion-rotate-y': rotationAxes.y,\n };\n\n const rotateStart = `rotate3d(${toKeyframeValue(\n custom,\n '--motion-rotate-x',\n asWeb,\n )}, ${toKeyframeValue(custom, '--motion-rotate-y', asWeb)}, 0, 0deg)`;\n\n const rotateEnd = `rotate3d(${toKeyframeValue(\n custom,\n '--motion-rotate-x',\n asWeb,\n )}, ${toKeyframeValue(custom, '--motion-rotate-y', asWeb)}, 0, 360deg)`;\n\n return [\n {\n ...options,\n name,\n delay: 0,\n easing: 'linear',\n duration: duration + delay,\n custom,\n keyframes: [\n {\n offset: 0,\n transform: `perspective(800px) rotateZ(var(--comp-rotate-z, 0deg)) ${rotateStart}`,\n easing: getEasing(easing),\n },\n {\n offset,\n transform: `perspective(800px) rotateZ(var(--comp-rotate-z, 0deg)) ${rotateEnd}`,\n },\n {\n offset: 1,\n transform: `perspective(800px) rotateZ(var(--comp-rotate-z, 0deg)) ${rotateEnd}`,\n },\n ],\n },\n ];\n}\n\nexport function getNames(options: TimeAnimationOptions & AnimationExtraOptions) {\n const timingFactor = getTimingFactor(options.duration!, options.delay!, true);\n\n return [`motion-flip-${timingFactor}`];\n}\n","import type { Fold, TimeAnimationOptions, DomApi, AnimationExtraOptions } from '../../types';\nimport { getEasing, getEasingFamily, getTimingFactor, toKeyframeValue } from '../../utils';\n\nconst POWER_TO_ROTATION_FACTOR_MAP = {\n soft: 1,\n medium: 2,\n hard: 3,\n};\n\nconst DIRECTION_MAP = {\n top: {\n rotation: { x: 1, y: 0 },\n origin: { x: 0, y: -50 },\n },\n right: {\n rotation: { x: 0, y: 1 },\n origin: { x: 50, y: 0 },\n },\n bottom: {\n rotation: { x: 1, y: 0 },\n origin: { x: 0, y: 50 },\n },\n left: {\n rotation: { x: 0, y: 1 },\n origin: { x: -50, y: 0 },\n },\n};\n\nconst MIN_ROTATE_ANGLE = 15;\n\nconst KEYFRAME_FACTORS = [\n { fold: 1, frameFactor: 0.25 },\n { fold: -0.7, frameFactor: 0.5 },\n { fold: 0.6, frameFactor: 0.5 },\n { fold: -0.3, frameFactor: 0.45 },\n { fold: 0.2, frameFactor: 0.4 },\n { fold: -0.05, frameFactor: 0.5 },\n { fold: 0, frameFactor: 0.35 },\n];\n\nexport function web(options: TimeAnimationOptions & AnimationExtraOptions, _dom?: DomApi) {\n return style(options, true);\n}\n\nexport function style(options: TimeAnimationOptions & AnimationExtraOptions, asWeb = false) {\n const { direction = 'top', power, angle = MIN_ROTATE_ANGLE } = options.namedEffect as Fold;\n\n const easing = options.easing || 'cubicInOut';\n const duration = options.duration || 1;\n const delay = +(options.delay || 0);\n const [name] = getNames(options);\n\n const isResponsive = typeof power === 'undefined';\n const { rotation, origin } = DIRECTION_MAP[direction];\n const { x, y } = origin;\n const ease = getEasingFamily(isResponsive ? easing : 'cubicInOut');\n\n const rotateTransform = isResponsive\n ? angle\n : MIN_ROTATE_ANGLE * POWER_TO_ROTATION_FACTOR_MAP[power];\n\n const totalDurationWithDelay = 3.2 * duration + delay;\n const timingFactor = getTimingFactor(duration, totalDurationWithDelay - duration) as number;\n let currentOffset = 0;\n\n // Create CSS custom properties for the fold configuration\n const custom: Record<string, string | number> = {\n '--motion-origin-x': `${x}%`,\n '--motion-origin-y': `${y}%`,\n '--motion-rotate-angle': `${rotateTransform}deg`,\n '--motion-rotate-x': `${rotation.x}`,\n '--motion-rotate-y': `${rotation.y}`,\n };\n\n const transformLeft = `rotateZ(var(--comp-rotate-z, 0deg)) translateX(${toKeyframeValue(\n custom,\n '--motion-origin-x',\n asWeb,\n )}) translateY(${toKeyframeValue(custom, '--motion-origin-y', asWeb)}) perspective(800px)`;\n const transformRight = `translateX(calc(-1 * ${toKeyframeValue(\n custom,\n '--motion-origin-x',\n asWeb,\n )})) translateY(calc(-1 * ${toKeyframeValue(custom, '--motion-origin-y', asWeb)}))`;\n\n const getTransform = (value: number) =>\n `${transformLeft} rotateX(calc(${toKeyframeValue(\n custom,\n '--motion-rotate-x',\n asWeb,\n )} * ${value} * ${rotateTransform}deg)) rotateY(calc(${toKeyframeValue(\n custom,\n '--motion-rotate-y',\n asWeb,\n )} * ${value} * ${rotateTransform}deg)) ${transformRight}`;\n\n // in case a delay is applied, animate a different sequence which decays to a stop\n const keyframes = delay\n ? KEYFRAME_FACTORS.map(({ fold, frameFactor }) => {\n const keyframeOffset = currentOffset + frameFactor * timingFactor;\n currentOffset = keyframeOffset;\n return {\n offset: keyframeOffset,\n easing: getEasing('sineInOut'),\n transform: getTransform(fold),\n };\n })\n : [\n {\n offset: 0.25,\n easing: getEasing(ease.inOut),\n transform: getTransform(1),\n },\n {\n offset: 0.75,\n easing: getEasing(ease.in),\n transform: getTransform(-1),\n },\n ];\n\n const transform_0 = getTransform(0);\n\n return [\n {\n ...options,\n name,\n easing: 'linear',\n delay: 0,\n duration: delay ? totalDurationWithDelay : duration,\n custom,\n keyframes: [\n {\n offset: 0,\n easing: getEasing(ease.out),\n transform: transform_0,\n },\n ...keyframes,\n {\n offset: 1,\n transform: transform_0,\n },\n ],\n },\n ];\n}\n\nexport function getNames(options: TimeAnimationOptions & AnimationExtraOptions) {\n const duration = options.duration || 1;\n const delay = +(options.delay || 0);\n\n if (!delay) {\n return ['motion-fold'];\n }\n\n const totalDurationWithDelay = 3.2 * duration + delay;\n const timingFactor = getTimingFactor(duration, totalDurationWithDelay - duration, true) as string;\n\n return [`motion-fold-${timingFactor}`];\n}\n","import type { Jello, TimeAnimationOptions, DomApi, AnimationExtraOptions } from '../../types';\nimport { getTimingFactor, toKeyframeValue, mapRange } from '../../utils';\n\nconst POWER_TO_JELLO_FACTOR_MAP = {\n soft: 1,\n medium: 2,\n hard: 4,\n};\n\nconst SKEW_Y_KEYFRAMES = [\n { keyframe: 24, skewY: 7 },\n { keyframe: 38, skewY: -2 },\n { keyframe: 58, skewY: 4 },\n { keyframe: 80, skewY: -2 },\n { keyframe: 100, skewY: 0 },\n];\n\nexport function web(options: TimeAnimationOptions & AnimationExtraOptions, _dom?: DomApi) {\n return style(options, true);\n}\n\nexport function style(options: TimeAnimationOptions & AnimationExtraOptions, asWeb = false) {\n const { power, intensity = 0.25 } = options.namedEffect as Jello;\n\n const duration = options.duration || 1;\n const delay = options.delay || 0;\n const [name] = getNames(options);\n const timingFactor = getTimingFactor(duration, delay) as number;\n\n const responsiveJelloFactor = mapRange(\n 0,\n 1,\n POWER_TO_JELLO_FACTOR_MAP.soft,\n POWER_TO_JELLO_FACTOR_MAP.hard,\n intensity,\n );\n const jelloFactor = (power && POWER_TO_JELLO_FACTOR_MAP[power]) || responsiveJelloFactor;\n\n // Create CSS custom properties for the jello configuration\n const custom: Record<string, string | number> = {\n '--motion-skew-y': jelloFactor,\n };\n\n const keyframes = SKEW_Y_KEYFRAMES.map(({ keyframe, skewY }) => {\n const offset = (keyframe / 100) * timingFactor;\n\n return {\n offset,\n transform: `rotateZ(var(--comp-rotate-z, 0deg)) skewY(calc(${toKeyframeValue(\n custom,\n '--motion-skew-y',\n asWeb,\n )} * ${skewY}deg))`,\n };\n });\n\n return [\n {\n ...options,\n name,\n delay: 0,\n easing: 'linear',\n duration: duration + delay,\n custom,\n keyframes,\n },\n ];\n}\n\nexport function getNames(options: TimeAnimationOptions & AnimationExtraOptions) {\n const timingFactor = getTimingFactor(options.duration!, options.delay!, true);\n\n return [`motion-jello-${timingFactor}`];\n}\n","import type { Poke, TimeAnimationOptions, DomApi, AnimationExtraOptions } from '../../types';\nimport { getTimingFactor, toKeyframeValue, mapRange } from '../../utils';\n\nconst TRANSLATE_KEYFRAMES = [\n { keyframe: 17, translate: 7 },\n { keyframe: 32, translate: 25 },\n { keyframe: 48, translate: 8 },\n { keyframe: 56, translate: 11 },\n { keyframe: 66, translate: 25 },\n { keyframe: 83, translate: 4 },\n { keyframe: 100, translate: 0 },\n];\n\nconst POWER_TO_POKE_FACTOR_MAP = {\n soft: 1,\n medium: 2,\n hard: 4,\n};\n\nconst DIRECTION_MAP = {\n top: { x: 0, y: -1 },\n bottom: { x: 0, y: 1 },\n right: { x: 1, y: 0 },\n left: { x: -1, y: 0 },\n};\n\nexport function web(options: TimeAnimationOptions & AnimationExtraOptions, _dom?: DomApi) {\n return style(options, true);\n}\n\nexport function style(options: TimeAnimationOptions & AnimationExtraOptions, asWeb = false) {\n const { power, intensity = 0.5, direction = 'right' } = options.namedEffect as Poke;\n\n const duration = options.duration || 1;\n const delay = +(options.delay || 0);\n const { x, y } = DIRECTION_MAP[direction];\n const timingFactor = getTimingFactor(duration, delay) as number;\n const [name] = getNames(options);\n\n const responsivePokeFactor = mapRange(\n 0,\n 1,\n POWER_TO_POKE_FACTOR_MAP.soft,\n POWER_TO_POKE_FACTOR_MAP.hard,\n intensity,\n );\n\n const pokeFactor = power ? POWER_TO_POKE_FACTOR_MAP[power] : responsivePokeFactor;\n\n // Create CSS custom properties for the poke configuration\n const custom: Record<string, string | number> = {\n '--motion-translate-x': x * pokeFactor,\n '--motion-translate-y': y * pokeFactor,\n };\n\n const keyframes = TRANSLATE_KEYFRAMES.map(({ keyframe, translate }) => {\n const translateValue = `calc(${toKeyframeValue(\n custom,\n '--motion-translate-x',\n asWeb,\n )} * ${translate}px) calc(${toKeyframeValue(\n custom,\n '--motion-translate-y',\n asWeb,\n )} * ${translate}px)`;\n\n return {\n offset: (keyframe / 100) * timingFactor,\n translate: translateValue,\n };\n });\n\n return [\n {\n ...options,\n name,\n easing: 'linear',\n delay: 0,\n duration: duration + delay,\n custom,\n keyframes,\n },\n ];\n}\n\nexport function getNames(options: TimeAnimationOptions & AnimationExtraOptions) {\n const timingFactor = getTimingFactor(options.duration!, options.delay!, true) as string;\n\n return [`motion-poke-${timingFactor}`];\n}\n","import type { Rubber, TimeAnimationOptions, DomApi, AnimationExtraOptions } from '../../types';\nimport { getTimingFactor, roundNumber, toKeyframeValue, mapRange } from '../../utils';\n\nconst POWER_TO_RUBBER_OFFSET_MAP = {\n soft: 0,\n medium: 0.05,\n hard: 0.1,\n};\n\nconst SCALE_KEYFRAMES = [\n { keyframe: 45, scaleX: 1.03, scaleY: 0.93 },\n { keyframe: 56, scaleX: 0.9, scaleY: 1.03 },\n { keyframe: 66, scaleX: 1.02, scaleY: 0.96 },\n { keyframe: 78, scaleX: 0.98, scaleY: 1.02 },\n { keyframe: 89, scaleX: 1.005, scaleY: 0.9995 },\n { keyframe: 100, scaleX: 1, scaleY: 1 },\n];\n\nexport function web(options: TimeAnimationOptions & AnimationExtraOptions, _dom?: DomApi) {\n return style(options, true);\n}\n\nexport function style(options: TimeAnimationOptions & AnimationExtraOptions, asWeb = false) {\n const { power, intensity = 0.5 } = options.namedEffect as Rubber;\n\n const duration = options.duration || 1;\n const delay = options.delay || 0;\n const timingFactor = getTimingFactor(duration, delay) as number;\n const [name] = getNames(options);\n\n const responsiveRubberOffset = mapRange(\n 0,\n 1,\n POWER_TO_RUBBER_OFFSET_MAP.soft,\n POWER_TO_RUBBER_OFFSET_MAP.hard,\n intensity,\n );\n const rubberOffset =\n typeof power !== 'undefined' ? POWER_TO_RUBBER_OFFSET_MAP[power] : responsiveRubberOffset;\n\n // Create CSS custom properties for the rubber configuration\n const custom: Record<string, string | number> = {};\n\n const keyframes = SCALE_KEYFRAMES.map(({ keyframe, scaleX, scaleY }, index) => {\n const isLastKeyframe = index === SCALE_KEYFRAMES.length - 1;\n const isEvenKeyframe = index % 2 === 0;\n const offset = rubberOffset * (isLastKeyframe ? 0 : isEvenKeyframe ? 1 : -0.5);\n\n const adjustedScaleX = roundNumber(scaleX + offset, 4);\n const adjustedScaleY = roundNumber(scaleY - offset, 4);\n\n // Create custom property keys for this keyframe\n const scaleXKey = `--motion-scale-x-${keyframe}`;\n const scaleYKey = `--motion-scale-y-${keyframe}`;\n\n // Add the scale values to custom properties\n custom[scaleXKey] = adjustedScaleX;\n custom[scaleYKey] = adjustedScaleY;\n\n return {\n offset: (keyframe / 100) * timingFactor,\n transform: `rotateZ(var(--comp-rotate-z, 0deg)) scale(${toKeyframeValue(\n custom,\n scaleXKey,\n asWeb,\n )}, ${toKeyframeValue(custom, scaleYKey, asWeb)})`,\n };\n });\n\n return [\n {\n ...options,\n name,\n easing: 'linear',\n delay: 0,\n duration: duration + delay,\n custom,\n keyframes,\n },\n ];\n}\n\nexport function getNames(options: TimeAnimationOptions & AnimationExtraOptions) {\n const timingFactor = getTimingFactor(options.duration!, options.delay!, true);\n\n return [`motion-rubber-${timingFactor}`];\n}\n","import type { Pulse, TimeAnimationOptions, DomApi, AnimationExtraOptions } from '../../types';\nimport { getTimingFactor, toKeyframeValue, mapRange } from '../../utils';\n\nconst POWER_TO_PULSE_OFFSET_MAP = {\n soft: 0,\n medium: 0.06,\n hard: 0.12,\n};\n\nconst SCALE_KEYFRAMES = [\n { keyframe: 27, scale: 0.96 },\n { keyframe: 45, scale: 1 },\n { keyframe: 72, scale: 0.93 },\n { keyframe: 100, scale: 1 },\n];\n\nexport function web(options: TimeAnimationOptions & AnimationExtraOptions, _dom?: DomApi) {\n return style(options, true);\n}\n\nexport function style(options: TimeAnimationOptions & AnimationExtraOptions, asWeb = false) {\n const { power, intensity = 0 } = options.namedEffect as Pulse;\n\n const duration = options.duration || 1;\n const delay = options.delay || 0;\n const timingFactor = getTimingFactor(duration, delay) as number;\n const [name] = getNames(options);\n\n const responsivePulseOffset = mapRange(\n 0,\n 1,\n POWER_TO_PULSE_OFFSET_MAP.soft,\n POWER_TO_PULSE_OFFSET_MAP.hard,\n intensity,\n );\n\n const pulseOffset =\n typeof power !== 'undefined' ? POWER_TO_PULSE_OFFSET_MAP[power] : responsivePulseOffset;\n\n // Create CSS custom properties for the pulse configuration\n const custom: Record<string, string | number> = {\n '--motion-pulse-offset': pulseOffset,\n };\n\n const keyframes = SCALE_KEYFRAMES.map(({ keyframe, scale }) => {\n const offset = (keyframe / 100) * timingFactor;\n\n return {\n offset,\n transform: `scale(${\n scale < 1\n ? `calc(${scale} - ${toKeyframeValue(custom, '--motion-pulse-offset', asWeb)})`\n : '1'\n })`,\n };\n });\n\n if (timingFactor < 1) {\n keyframes.push({\n offset: 1,\n transform: 'scale(1)',\n });\n }\n\n return [\n {\n ...options,\n name,\n easing: 'linear',\n delay: 0,\n duration: duration + delay,\n custom,\n keyframes,\n },\n ];\n}\n\nexport function getNames(options: TimeAnimationOptions & AnimationExtraOptions) {\n const timingFactor = getTimingFactor(options.duration!, options.delay!, true);\n\n return [`motion-pulse-${timingFactor}`];\n}\n","import type { Spin, TimeAnimationOptions, DomApi, AnimationExtraOptions } from '../../types';\nimport { getEasing, getTimingFactor, toKeyframeValue } from '../../utils';\n\nconst POWER_EASING_MAP = {\n soft: 'linear',\n medium: 'quintInOut',\n hard: 'backOut',\n};\n\nconst DIRECTION_MAP = {\n clockwise: -1,\n 'counter-clockwise': 1,\n};\n\nexport function web(options: TimeAnimationOptions & AnimationExtraOptions, _dom?: DomApi) {\n return style(options, true);\n}\n\nexport function style(options: TimeAnimationOptions & AnimationExtraOptions, asWeb = false) {\n const { power, direction = 'clockwise' } = options.namedEffect as Spin;\n\n const duration = options.duration || 1;\n const delay = options.delay || 0;\n const timingFactor = getTimingFactor(duration, delay) as number;\n const [name] = getNames(options);\n\n const easing = (power && POWER_EASING_MAP[power]) || options.easing || 'linear';\n\n const transformRotate = (DIRECTION_MAP[direction] > 0 ? 1 : -1) * 360;\n\n const custom = {\n '--motion-rotate-start': `calc(var(--comp-rotate-z, 0deg) + ${transformRotate}deg)`,\n };\n\n return [\n {\n ...options,\n name,\n easing: 'linear',\n delay: 0,\n duration: duration + delay,\n custom,\n keyframes: [\n {\n offset: 0,\n easing: getEasing(easing),\n rotate: toKeyframeValue(custom, '--motion-rotate-start', asWeb),\n },\n {\n offset: timingFactor,\n rotate: `var(--comp-rotate-z, 0deg)`,\n },\n ],\n },\n ];\n}\n\nexport function getNames(options: TimeAnimationOptions & AnimationExtraOptions) {\n const timingFactor = getTimingFactor(options.duration!, options.delay!, true);\n\n return [`motion-spin-${timingFactor}`];\n}\n","import type { Swing, TimeAnimationOptions, DomApi, AnimationExtraOptions } from '../../types';\nimport { getEasing, getEasingFamily, getTimingFactor, toKeyframeValue } from '../../utils';\n\nconst POWER_TO_SWING_FACTOR_MAP = {\n soft: 1,\n medium: 2,\n hard: 3,\n};\n\nconst DIRECTION_MAP = {\n top: { x: 0, y: -1 },\n right: { x: 1, y: 0 },\n bottom: { x: 0, y: 1 },\n left: { x: -1, y: 0 },\n};\n\nconst TRANSLATE_DISTANCE = 50;\n\nconst FACTORS_SEQUENCE = [\n { factor: 1, timeFactor: 0.25 },\n { factor: -1, timeFactor: 0.5 },\n { factor: 0.6, timeFactor: 0.5 },\n { factor: -0.3, timeFactor: 0.5 },\n { factor: 0.2, timeFactor: 0.5 },\n { factor: -0.05, timeFactor: 0.5 },\n { factor: 0, timeFactor: 0.4 },\n];\n\nexport function web(options: TimeAnimationOptions & AnimationExtraOptions, _dom?: DomApi) {\n return style(options, true);\n}\n\nexport function style(options: TimeAnimationOptions & AnimationExtraOptions, asWeb = false) {\n const { power, swing = 20, direction = 'top' } = options.namedEffect as Swing;\n\n const duration = options.duration || 1;\n const delay = options.delay || 0;\n const easing = options.easing || 'sineInOut';\n const ease = getEasingFamily(easing);\n const [name] = getNames(options);\n\n const swingDeg = typeof power !== 'undefined' ? 20 * POWER_TO_SWING_FACTOR_MAP[power] : swing;\n\n const { x, y } = DIRECTION_MAP[direction];\n const totalDuration = 3.55 * duration + delay;\n const timingFactor = getTimingFactor(duration, totalDuration - duration) as number;\n\n // Create CSS custom properties for the swing configuration\n const custom: Record<string, string | number> = {\n '--motion-swing-deg': `${swingDeg}deg`,\n '--motion-trans-x': `${x * TRANSLATE_DISTANCE}%`,\n '--motion-trans-y': `${y * TRANSLATE_DISTANCE}%`,\n '--motion-ease-in': getEasing(ease.in),\n '--motion-ease-inout': getEasing(ease.inOut),\n '--motion-ease-out': getEasing(ease.out),\n };\n\n const translateBefore = `translate(${toKeyframeValue(\n custom,\n '--motion-trans-x',\n asWeb,\n )}, ${toKeyframeValue(custom, '--motion-trans-y', asWeb)})`;\n\n const translateAfter = `translate(calc(${toKeyframeValue(\n custom,\n '--motion-trans-x',\n asWeb,\n )} * -1), calc(${toKeyframeValue(custom, '--motion-trans-y', asWeb)} * -1))`;\n\n let currentOffset = 0;\n // in case a delay is applied, animate a different sequence which decays to a stop\n const keyframes = delay\n ? FACTORS_SEQUENCE.map(({ factor, timeFactor }) => {\n const keyframeOffset = currentOffset + timeFactor * timingFactor;\n currentOffset = keyframeOffset;\n\n return {\n offset: keyframeOffset,\n easing: toKeyframeValue(custom, '--motion-ease-inout', asWeb),\n transform: `rotate(var(--comp-rotate-z, 0deg)) ${translateBefore} rotate(calc(${toKeyframeValue(\n custom,\n '--motion-swing-deg',\n asWeb,\n )} * ${factor})) ${translateAfter}`,\n };\n })\n : [\n {\n offset: 0.25,\n easing: toKeyframeValue(custom, '--motion-ease-inout', asWeb),\n transform: `rotate(var(--comp-rotate-z, 0deg)) ${translateBefore} rotate(${toKeyframeValue(\n custom,\n '--motion-swing-deg',\n asWeb,\n )}) ${translateAfter}`,\n },\n {\n offset: 0.75,\n easing: toKeyframeValue(custom, '--motion-ease-in', asWeb),\n transform: `rotate(var(--comp-rotate-z, 0deg)) ${translateBefore} rotate(calc(${toKeyframeValue(\n custom,\n '--motion-swing-deg',\n asWeb,\n )} * -1)) ${translateAfter}`,\n },\n ];\n\n return [\n {\n ...options,\n name,\n easing: 'linear',\n delay: 0,\n duration: delay ? totalDuration : duration,\n custom,\n keyframes: [\n {\n offset: 0,\n easing: toKeyframeValue(custom, '--motion-ease-out', asWeb),\n transform: `rotateZ(var(--comp-rotate-z, 0deg)) ${translateBefore} rotate(0deg) ${translateAfter}`,\n },\n ...keyframes,\n {\n offset: 1,\n transform: `rotateZ(var(--comp-rotate-z, 0deg)) ${translateBefore} rotate(0deg) ${translateAfter}`,\n },\n ],\n },\n ];\n}\n\nexport function getNames(options: TimeAnimationOptions & AnimationExtraOptions) {\n const timingFactor = getTimingFactor(options.duration!, options.delay!, true);\n\n return [`motion-swing-${timingFactor}`];\n}\n","import type { Wiggle, TimeAnimationOptions, DomApi, AnimationExtraOptions } from '../../types';\nimport { getTimingFactor, roundNumber, toKeyframeValue, mapRange } from '../../utils';\n\nconst POWER_TO_WIGGLE_FACTOR_MAP = {\n soft: 1,\n medium: 2,\n hard: 4,\n};\n\nconst TRANSFORM_KEYFRAMES = [\n { keyframe: 18, transY: -10, accRotate: 10 },\n { keyframe: 35, transY: 0, accRotate: -18 },\n { keyframe: 53, transY: 0, accRotate: 14 },\n { keyframe: 73, transY: 0, accRotate: -10 },\n { keyframe: 100, transY: 0, accRotate: 4 },\n];\n\nexport function web(options: TimeAnimationOptions & AnimationExtraOptions, _dom?: DomApi) {\n return style(options, true);\n}\n\nexport function style(options: TimeAnimationOptions & AnimationExtraOptions, asWeb = false) {\n const { power, intensity = 0.5 } = options.namedEffect as Wiggle;\n const duration = options.duration || 1;\n const delay = options.delay || 0;\n const timingFactor = getTimingFactor(duration, delay) as number;\n const [name] = getNames(options);\n\n const responsiveWiggleFactor = mapRange(\n 0,\n 1,\n POWER_TO_WIGGLE_FACTOR_MAP.soft,\n POWER_TO_WIGGLE_FACTOR_MAP.hard,\n intensity,\n );\n const wiggleFactor = (power && POWER_TO_WIGGLE_FACTOR_MAP[power]) || responsiveWiggleFactor;\n\n let currentRotation = 0;\n\n // Create CSS custom properties for the wiggle configuration\n const custom: Record<string, string | number> = {\n '--motion-wiggle-factor': wiggleFactor,\n };\n\n const keyframes = TRANSFORM_KEYFRAMES.map(({ keyframe, transY, accRotate }) => {\n const offset = (keyframe / 100) * timingFactor;\n const rotateValue = `calc(var(--comp-rotate-z, 0deg) + ${roundNumber(\n currentRotation + accRotate * wiggleFactor,\n )}deg)`;\n const translateYValue = `${transY * wiggleFactor}px`;\n\n const rotateKey = `--motion-rotate-${keyframe}`;\n const translateYKey = `--motion-translate-y-${keyframe}`;\n\n // For non-web usage, add the values to custom properties\n custom[rotateKey] = rotateValue;\n custom[translateYKey] = translateYValue;\n\n currentRotation += accRotate * wiggleFactor;\n\n return {\n offset,\n transform: `rotate(${toKeyframeValue(\n custom,\n rotateKey,\n asWeb,\n )}) translateY(${toKeyframeValue(custom, translateYKey, asWeb)})`,\n };\n });\n\n return [\n {\n ...options,\n name,\n easing: 'linear',\n delay: 0,\n duration: duration + delay,\n custom,\n keyframes,\n },\n ];\n}\n\nexport function getNames(options: TimeAnimationOptions & AnimationExtraOptions) {\n const timingFactor = getTimingFactor(options.duration!, options.delay!, true);\n\n return [`motion-wiggle-${timingFactor}`];\n}\n","import type { ScrubAnimationOptions, ArcScroll, AnimationFillMode, DomApi } from '../../types';\nimport { toKeyframeValue } from '../../utils';\n\nconst ROTATION = 68;\n\nexport function getNames(_: ScrubAnimationOptions) {\n return ['motion-arcScroll'];\n}\n\nexport function web(options: ScrubAnimationOptions, _dom?: DomApi) {\n return style(options, true);\n}\n\nexport function style(options: ScrubAnimationOptions, asWeb = false) {\n const { direction = 'horizontal', range = 'in' } = options.namedEffect as ArcScroll;\n const fill = (\n range === 'out' ? 'forwards' : range === 'in' ? 'backwards' : options.fill\n ) as AnimationFillMode;\n\n const rotAxisString = `rotate${direction === 'vertical' ? 'X' : 'Y'}`;\n const fromValue = range === 'out' ? 0 : -ROTATION;\n const toValue = range === 'in' ? 0 : ROTATION;\n\n const easing = 'linear';\n\n const [arcScroll] = getNames(options);\n\n const custom = {\n '--motion-arc-from': `${rotAxisString}(${fromValue}deg)`,\n '--motion-arc-to': `${rotAxisString}(${toValue}deg)`,\n };\n\n return [\n {\n ...options,\n name: arcScroll,\n fill,\n easing,\n custom,\n keyframes: [\n {\n transform: `perspective(500px) translateZ(-300px) ${toKeyframeValue(\n custom,\n '--motion-arc-from',\n asWeb,\n )} translateZ(300px) rotate(${toKeyframeValue({}, '--comp-rotate-z', false, '0deg')})`,\n },\n {\n transform: `perspective(500px) translateZ(-300px) ${toKeyframeValue(\n custom,\n '--motion-arc-to',\n asWeb,\n )} translateZ(300px) rotate(${toKeyframeValue({}, '--comp-rotate-z', false, '0deg')})`,\n },\n ],\n },\n ];\n}\n","import type { AnimationFillMode, BlurScroll, ScrubAnimationOptions, DomApi } from '../../types';\nimport { toKeyframeValue } from '../../utils';\n\nconst BLUR_POWER_MAP = {\n soft: 6,\n medium: 25,\n hard: 50,\n};\n\nexport function getNames(_: ScrubAnimationOptions) {\n return ['motion-blurScroll'];\n}\n\nexport function web(options: ScrubAnimationOptions, _dom?: DomApi) {\n return style(options, true);\n}\n\nexport function style(options: ScrubAnimationOptions, asWeb = false) {\n const { blur = 6, power, range = 'in' } = options.namedEffect as BlurScroll;\n const blurFactor = power && BLUR_POWER_MAP[power] ? BLUR_POWER_MAP[power] : blur;\n\n const fromValue = range === 'out' ? 0 : blurFactor;\n const toValue = range === 'out' ? blurFactor : 0;\n const easing = 'linear';\n const fill = (\n range === 'out' ? 'forwards' : range === 'in' ? 'backwards' : options.fill\n ) as AnimationFillMode;\n\n const [blurScroll] = getNames(options);\n\n const custom = {\n '--motion-blur-from': `${fromValue}px`,\n '--motion-blur-to': `${toValue}px`,\n };\n\n return [\n {\n ...options,\n name: blurScroll,\n fill,\n easing,\n composite: 'add' as const,\n custom,\n keyframes: [\n {\n filter: `blur(${toKeyframeValue(custom, '--motion-blur-from', asWeb)})`,\n },\n {\n filter: `blur(${toKeyframeValue(custom, '--motion-blur-to', asWeb)})`,\n },\n ],\n },\n ];\n}\n","import type { FadeScroll, ScrubAnimationOptions, AnimationFillMode, DomApi } from '../../types';\nimport { toKeyframeValue } from '../../utils';\n\nexport function getNames(_: ScrubAnimationOptions) {\n return ['motion-fadeScroll'];\n}\n\nexport function web(options: ScrubAnimationOptions, _dom?: DomApi) {\n return style(options, true);\n}\n\nexport function style(options: ScrubAnimationOptions, asWeb = false) {\n const { opacity = 0, range = 'in' } = options.namedEffect as FadeScroll;\n const isOut = range === 'out';\n const fromValue = isOut ? toKeyframeValue({}, '--comp-opacity', false, '1') : opacity;\n const toValue = isOut ? opacity : toKeyframeValue({}, '--comp-opacity', false, '1');\n const easing = 'linear';\n const fill = (\n range === 'out' ? 'forwards' : range === 'in' ? 'backwards' : options.fill\n ) as AnimationFillMode;\n\n const [fadeScroll] = getNames(options);\n\n const custom = {\n '--motion-fade-from': fromValue,\n '--motion-fade-to': toValue,\n };\n\n return [\n {\n ...options,\n name: fadeScroll,\n fill,\n easing,\n custom,\n keyframes: [\n {\n opacity: toKeyframeValue(custom, '--motion-fade-from', asWeb),\n },\n {\n opacity: toKeyframeValue(custom, '--motion-fade-to', asWeb),\n },\n ],\n },\n ];\n}\n","import type { AnimationFillMode, FlipScroll, ScrubAnimationOptions, DomApi } from '../../types';\nimport { toKeyframeValue } from '../../utils';\n\nconst ROTATE_POWER_MAP = {\n soft: 60,\n medium: 120,\n hard: 420,\n};\n\nexport function getNames(_: ScrubAnimationOptions) {\n return ['motion-flipScroll'];\n}\n\nexport function web(options: ScrubAnimationOptions, _dom?: DomApi) {\n return style(options, true);\n}\n\nexport function style(options: ScrubAnimationOptions, asWeb = false) {\n const {\n rotate = 240,\n direction = 'horizontal',\n power,\n range = 'continuous',\n } = options.namedEffect as FlipScroll;\n\n const rotAxisString = `rotate${direction === 'vertical' ? 'X' : 'Y'}`;\n const flipValue = power && ROTATE_POWER_MAP[power] ? ROTATE_POWER_MAP[power] : rotate;\n\n const fromValue = range === 'out' ? 0 : -flipValue;\n const toValue = range === 'in' ? 0 : flipValue;\n const easing = 'linear';\n const fill = (\n range === 'out' ? 'forwards' : range === 'in' ? 'backwards' : options.fill\n ) as AnimationFillMode;\n\n const [flipScroll] = getNames(options);\n\n const custom = {\n '--motion-flip-from': `${rotAxisString}(${fromValue}deg)`,\n '--motion-flip-to': `${rotAxisString}(${toValue}deg)`,\n };\n\n return [\n {\n ...options,\n name: flipScroll,\n fill,\n easing,\n custom,\n keyframes: [\n {\n transform: `perspective(800px) ${toKeyframeValue(\n custom,\n '--motion-flip-from',\n asWeb,\n )} rotate(${toKeyframeValue({}, '--comp-rotate-z', false, '0deg')})`,\n },\n {\n transform: `perspective(800px) ${toKeyframeValue(\n custom,\n '--motion-flip-to',\n asWeb,\n )} rotate(${toKeyframeValue({}, '--comp-rotate-z', false, '0deg')})`,\n },\n ],\n },\n ];\n}\n","import type { AnimationFillMode, GrowScroll, ScrubAnimationOptions, DomApi } from '../../types';\nimport { toKeyframeValue } from '../../utils';\n\nconst MAX_Y_TRAVEL = 40;\nconst POWER_MAP = {\n soft: { scaleFrom: 0.8, scaleTo: 1.2, travelY: 0 },\n medium: { scaleFrom: 0.3, scaleTo: 1.7, travelY: 0.75 },\n hard: { scaleFrom: 0, scaleTo: 4, travelY: 1 },\n};\n\nconst directionMap = {\n top: [0, -50],\n 'top-right': [50, -50],\n right: [50, 0],\n 'bottom-right': [50, 50],\n bottom: [0, 50],\n 'bottom-left': [-50, 50],\n left: [-50, 0],\n 'top-left': [-50, -50],\n center: [0, 0],\n};\n\nexport function getNames(_: ScrubAnimationOptions) {\n return ['motion-growScroll'];\n}\n\nexport function web(options: ScrubAnimationOptions, _dom?: DomApi) {\n return style(options, true);\n}\n\nexport function style(options: ScrubAnimationOptions, asWeb = false) {\n const {\n power,\n range = 'in',\n scale = range === 'in' ? POWER_MAP.hard.scaleFrom : POWER_MAP.hard.scaleTo,\n direction = 'center',\n speed = 0,\n } = options.namedEffect as GrowScroll;\n const easing = 'linear';\n const fill = (\n range === 'out' ? 'forwards' : range === 'in' ? 'backwards' : options.fill\n ) as AnimationFillMode;\n\n const { scaleFrom, scaleTo, travelY } =\n power && POWER_MAP[power]\n ? POWER_MAP[power]\n : {\n scaleFrom: scale,\n scaleTo: scale,\n travelY: speed,\n };\n const travel = travelY * MAX_Y_TRAVEL;\n\n const fromValues = {\n scale: range === 'out' ? 1 : scaleFrom,\n travel: range === 'out' ? 0 : -travel,\n };\n const toValues = {\n scale: range === 'in' ? 1 : scaleTo,\n travel: range === 'in' ? 0 : travel,\n };\n\n const offset = Math.abs(power && POWER_MAP[power] ? POWER_MAP[power].travelY : travel);\n const startOffsetAdd = range === 'out' ? '0px' : `${-offset}vh`;\n const endOffsetAdd = range === 'in' ? '0px' : `${offset}vh`;\n\n const [trnsX, trnsY] = directionMap[direction] || [0, 0];\n\n const [growScroll] = getNames(options);\n\n const custom = {\n '--motion-travel-from': `${fromValues.travel}vh`,\n '--motion-travel-to': `${toValues.travel}vh`,\n '--motion-grow-from': fromValues.scale,\n '--motion-grow-to': toValues.scale,\n '--motion-trans-x': `${trnsX}%`,\n '--motion-trans-y': `${trnsY}%`,\n };\n\n return [\n {\n ...options,\n name: growScroll,\n fill,\n easing,\n startOffsetAdd,\n endOffsetAdd,\n custom,\n keyframes: [\n {\n transform: `translateY(${toKeyframeValue(\n custom,\n '--motion-travel-from',\n asWeb,\n )}) translate(${toKeyframeValue(custom, '--motion-trans-x', asWeb)}, ${toKeyframeValue(\n custom,\n '--motion-trans-y',\n asWeb,\n )}) scale(${toKeyframeValue(\n custom,\n '--motion-grow-from',\n asWeb,\n )}) translate(calc(-1 * ${toKeyframeValue(\n custom,\n '--motion-trans-x',\n asWeb,\n )}), calc(-1 * ${toKeyframeValue(\n custom,\n '--motion-trans-y',\n asWeb,\n )})) rotate(${toKeyframeValue({}, '--comp-rotate-z', false, '0')})`,\n },\n {\n transform: `translateY(${toKeyframeValue(\n custom,\n '--motion-travel-to',\n asWeb,\n )}) translate(${toKeyframeValue(custom, '--motion-trans-x', asWeb)}, ${toKeyframeValue(\n custom,\n '--motion-trans-y',\n asWeb,\n )}) scale(${toKeyframeValue(\n custom,\n '--motion-grow-to',\n asWeb,\n )}) translate(calc(-1 * ${toKeyframeValue(\n custom,\n '--motion-trans-x',\n asWeb,\n )}), calc(-1 * ${toKeyframeValue(\n custom,\n '--motion-trans-y',\n asWeb,\n )})) rotate(${toKeyframeValue({}, '--comp-rotate-z', false, '0')})`,\n },\n ],\n },\n ];\n}\n","import type { AnimationFillMode, DomApi, MoveScroll, ScrubAnimationOptions } from '../../types';\nimport { getCssUnits, transformPolarToXY, toKeyframeValue } from '../../utils';\n\nconst POWER_MAP = {\n soft: { value: 150, type: 'px' },\n medium: { value: 400, type: 'px' },\n hard: { value: 800, type: 'px' },\n};\n\nexport function getNames(_: ScrubAnimationOptions) {\n return ['motion-moveScroll'];\n}\n\nexport function web(options: ScrubAnimationOptions, _?: DomApi, config?: Record<string, any>) {\n return style(options, config, true);\n}\n\nexport function style(options: ScrubAnimationOptions, config?: Record<string, any>, asWeb = false) {\n const { power, angle = 210, range = 'in' } = options.namedEffect as MoveScroll;\n\n const easing = 'linear';\n const fill = (\n range === 'out' ? 'forwards' : range === 'in' ? 'backwards' : options.fill\n ) as AnimationFillMode;\n\n const { distance: inputDistance = { value: 400, type: 'px' } } =\n options.namedEffect as MoveScroll;\n const distance = {\n value: inputDistance.value || 0,\n type: inputDistance.type || 'px',\n };\n\n const travel = power && POWER_MAP[power] ? POWER_MAP[power] : distance;\n let [travelX, travelY] = transformPolarToXY(angle - 90, travel.value);\n const unit = getCssUnits(travel.type);\n\n let startOffsetAdd = '',\n endOffsetAdd = '';\n if (!config?.ignoreScrollMoveOffsets) {\n if (travelY < 0 && range !== 'out') {\n startOffsetAdd = `${travelY}${unit}`;\n if (range !== 'in') {\n endOffsetAdd = `${Math.abs(travelY)}${unit}`;\n }\n }\n if (travelY > 0 && range === 'out') {\n endOffsetAdd = `${Math.abs(travelY)}${unit}`;\n }\n }\n\n [travelX, travelY] = [travelX, travelY].map(Math.round);\n const fromValue = {\n x: range === 'out' ? 0 : travelX,\n y: range === 'out' ? 0 : travelY,\n };\n const toValue = {\n x: range === 'in' ? 0 : range === 'out' ? travelX : -travelX,\n y: range === 'in' ? 0 : range === 'out' ? travelY : -travelY,\n };\n\n const [moveScroll] = getNames(options);\n\n const custom = {\n '--motion-move-from-x': `${fromValue.x}${unit}`,\n '--motion-move-from-y': `${fromValue.y}${unit}`,\n '--motion-move-to-x': `${toValue.x}${unit}`,\n '--motion-move-to-y': `${toValue.y}${unit}`,\n };\n\n // use transform: translate(<value>) and not translate: <value> because of WebKit bug: https://bugs.webkit.org/show_bug.cgi?id=276281\n return [\n {\n ...options,\n name: moveScroll,\n fill,\n easing,\n startOffsetAdd,\n endOffsetAdd,\n custom,\n keyframes: [\n {\n transform: `translate(${toKeyframeValue(\n custom,\n '--motion-move-from-x',\n asWeb,\n )}, ${toKeyframeValue(\n custom,\n '--motion-move-from-y',\n asWeb,\n )}) rotate(${toKeyframeValue({}, '--comp-rotate-z', false, '0')})`,\n },\n {\n transform: `translate(${toKeyframeValue(\n custom,\n '--motion-move-to-x',\n asWeb,\n )}, ${toKeyframeValue(\n custom,\n '--motion-move-to-y',\n asWeb,\n )}) rotate(${toKeyframeValue({}, '--comp-rotate-z', false, '0')})`,\n },\n ],\n },\n ];\n}\n","import { PanScroll, ScrubAnimationOptions, DomApi, AnimationFillMode } from '../../types';\nimport { getCssUnits, toKeyframeValue } from '../../utils';\n\nexport function getNames(_: ScrubAnimationOptions) {\n return ['motion-panScroll'];\n}\n\nexport function prepare(options: ScrubAnimationOptions, dom?: DomApi) {\n if (options.namedEffect && (options.namedEffect as PanScroll).startFromOffScreen && dom) {\n let left = 0;\n dom.measure((target) => {\n if (!target) {\n return;\n }\n left = target.getBoundingClientRect().left;\n });\n dom.mutate((target) => {\n target?.style.setProperty('--motion-left', `${left}px`);\n });\n }\n}\n\nexport function web(options: ScrubAnimationOptions, dom?: DomApi) {\n prepare(options, dom);\n\n return style(options, true);\n}\n\nexport function style(options: ScrubAnimationOptions, asWeb = false) {\n const {\n direction = 'left',\n startFromOffScreen = true,\n range = 'in',\n } = options.namedEffect as PanScroll;\n let { distance } = options.namedEffect as PanScroll;\n if (!distance || !distance.value || !distance.type) {\n distance = { value: 400, type: 'px' };\n }\n const travel = distance.value * (direction === 'left' ? 1 : -1);\n let startX = `${-travel}${getCssUnits(distance.type)}`;\n let endX = `${travel}${getCssUnits(distance.type)}`;\n if (startFromOffScreen) {\n const startXLeft = `calc(${toKeyframeValue(\n {},\n '--motion-left',\n false,\n 'calc(100vw - 100%)',\n )} * -1 - 100%)`;\n const endXLeft = `calc(100vw - ${toKeyframeValue({}, '--motion-left', false, '0px')})`;\n [startX, endX] = direction === 'left' ? [startXLeft, endXLeft] : [endXLeft, startXLeft];\n }\n\n const fromValue = range === 'out' ? 0 : startX;\n const toValue = range === 'in' ? 0 : range === 'out' ? startX : endX;\n const easing = 'linear';\n const fill = (\n range === 'out' ? 'forwards' : range === 'in' ? 'backwards' : options.fill\n ) as AnimationFillMode;\n\n const [panScroll] = getNames(options);\n\n const custom = {\n '--motion-pan-from': fromValue,\n '--motion-pan-to': toValue,\n };\n\n // use transform: translateX(<value>) and not translate: <value> because of WebKit bug: https://bugs.webkit.org/show_bug.cgi?id=276281\n return [\n {\n ...options,\n name: panScroll,\n fill,\n easing,\n custom,\n keyframes: [\n {\n transform: `translateX(${toKeyframeValue(\n custom,\n '--motion-pan-from',\n asWeb,\n )}) rotate(${toKeyframeValue({}, '--comp-rotate-z', false, '0')})`,\n },\n {\n transform: `translateX(${toKeyframeValue(\n custom,\n '--motion-pan-to',\n asWeb,\n )}) rotate(${toKeyframeValue({}, '--comp-rotate-z', false, '0')})`,\n },\n ],\n },\n ];\n}\n","import type { ScrubAnimationOptions, ParallaxScroll, AnimationFillMode, DomApi } from '../../types';\nimport { toKeyframeValue } from '../../utils';\n\nconst DEFAULT_SPEED = 0.5;\n\nexport function getNames(_: ScrubAnimationOptions) {\n return ['motion-parallaxScroll'];\n}\n\nexport function web(options: ScrubAnimationOptions, _dom?: DomApi) {\n return style(options, true);\n}\n\nexport function style(options: ScrubAnimationOptions, asWeb = false) {\n const { speed = DEFAULT_SPEED } = options.namedEffect as ParallaxScroll;\n const easing = 'linear';\n\n const start = `${-50 * speed}vh`;\n const end = `${50 * speed}vh`;\n\n const [parallaxScroll] = getNames(options);\n\n const custom = {\n '--motion-parallax-to': end,\n };\n\n // use transform: translateY(<value>) and not translate: 0 <value> because of WebKit bug: https://bugs.webkit.org/show_bug.cgi?id=276281\n return [\n {\n ...options,\n name: parallaxScroll,\n fill: 'both' as AnimationFillMode,\n easing,\n startOffsetAdd: start,\n endOffsetAdd: end,\n custom,\n keyframes: [\n {\n transform: `translateY(calc(-1 * ${toKeyframeValue(\n custom,\n '--motion-parallax-to',\n asWeb,\n )})) rotate(${toKeyframeValue({}, '--comp-rotate-z', false, '0')})`,\n },\n {\n transform: `translateY(${toKeyframeValue(\n custom,\n '--motion-parallax-to',\n asWeb,\n )}) rotate(${toKeyframeValue({}, '--comp-rotate-z', false, '0')})`,\n },\n ],\n },\n ];\n}\n","import type { AnimationFillMode, ScrubAnimationOptions, RevealScroll, DomApi } from '../../types';\nimport {\n applyRotationAdjustedClip,\n getRevealClipFrom,\n getRevealClipTo,\n toKeyframeValue,\n INITIAL_CLIP,\n} from '../../utils';\n\nexport function getNames(options: ScrubAnimationOptions) {\n const { range = 'in' } = options.namedEffect as RevealScroll;\n return [`motion-revealScroll${range === 'continuous' ? '-continuous' : ''}`];\n}\n\nexport function prepare(options: ScrubAnimationOptions, dom?: DomApi) {\n if (dom) {\n const { direction = 'bottom', range = 'in' } = options.namedEffect as RevealScroll;\n applyRotationAdjustedClip(dom, direction, range);\n }\n}\n\nexport function web(options: ScrubAnimationOptions, dom?: DomApi) {\n prepare(options, dom);\n\n return style(options);\n}\n\nexport function style(options: ScrubAnimationOptions) {\n const { direction = 'bottom', range = 'in' } = options.namedEffect as RevealScroll;\n const easing = 'linear';\n const fill = (\n range === 'out' ? 'forwards' : range === 'in' ? 'backwards' : options.fill\n ) as AnimationFillMode;\n\n const [revealScroll] = getNames(options);\n\n const custom = {\n '--motion-clip-from': getRevealClipFrom(direction, range),\n '--motion-clip-to': getRevealClipTo(direction, range),\n };\n\n const keyframes = [\n {\n clipPath: toKeyframeValue({}, '--motion-clip-from', false, custom['--motion-clip-from']),\n },\n {\n clipPath: toKeyframeValue({}, '--motion-clip-to', false, custom['--motion-clip-to']),\n },\n ];\n\n if (range === 'continuous') {\n keyframes.splice(1, 0, { clipPath: INITIAL_CLIP });\n }\n\n return [\n {\n ...options,\n name: revealScroll,\n fill,\n easing,\n custom,\n keyframes,\n },\n ];\n}\n","import type {\n AnimationFillMode,\n EffectPower,\n ScrubAnimationOptions,\n ShapeScroll,\n DomApi,\n} from '../../types';\nimport { toKeyframeValue, getEasing } from '../../utils';\n\nconst SHAPES: Record<ShapeScroll['shape'], { start: Record<EffectPower, string>; end: string }> = {\n diamond: {\n start: {\n soft: 'polygon(50% 20%, 80% 50%, 50% 80%, 20% 50%)',\n medium: 'polygon(50% 40%, 60% 50%, 50% 60%, 40% 50%)',\n hard: 'polygon(50% 50%, 50% 50%, 50% 50%, 50% 50%)',\n },\n end: 'polygon(50% -50%, 150% 50%, 50% 150%, -50% 50%)',\n },\n window: {\n start: {\n soft: 'inset(20% round 50% 50% 0% 0%)',\n medium: 'inset(35% round 50% 50% 0% 0%)',\n hard: 'inset(50% round 50% 50% 0% 0%)',\n },\n end: 'inset(-20% round 50% 50% 0% 0%)',\n },\n rectangle: {\n start: {\n soft: 'inset(20%)',\n medium: 'inset(50%)',\n hard: 'inset(80%)',\n },\n end: 'inset(0%)',\n },\n circle: {\n start: {\n soft: 'circle(40%)',\n medium: 'circle(25%)',\n hard: 'circle(0%)',\n },\n end: 'circle(75%)',\n },\n ellipse: {\n start: {\n soft: 'ellipse(50% 50%)',\n medium: 'ellipse(30% 30%)',\n hard: 'ellipse(0% 0%)',\n },\n end: 'ellipse(75% 75%)',\n },\n};\n\nconst RESPONSIVE_SHAPES_MAP = {\n diamond: (clipFactor: number) => {\n const clip = clipFactor / 2;\n const clipNeg = 100 - clip;\n return [\n `polygon(50% ${clip}%, ${clipNeg}% 50%, 50% ${clipNeg}%, ${clip}% 50%)`,\n 'polygon(50% -50%, 150% 50%, 50% 150%, -50% 50%)',\n ];\n },\n window: (clipFactor: number) => [\n `inset(${clipFactor / 2}% round 50% 50% 0% 0%)`,\n 'inset(-20% round 50% 50% 0% 0%)',\n ],\n rectangle: (clipFactor: number) => [`inset(${clipFactor}%)`, `inset(0%)`],\n circle: (clipFactor: number) => [`circle(${100 - clipFactor}%)`, `circle(75%)`],\n ellipse: (clipFactor: number) => {\n const clip = 50 - clipFactor / 2;\n return [`ellipse(${clip}% ${clip}%)`, `ellipse(75% 75%)`];\n },\n};\n\nexport function getNames(options: ScrubAnimationOptions) {\n const { range = 'in' } = options.namedEffect as ShapeScroll;\n return [`motion-shapeScroll${range === 'continuous' ? '-continuous' : ''}`];\n}\n\nexport function web(options: ScrubAnimationOptions, _dom?: DomApi) {\n return style(options, true);\n}\n\nexport function style(options: ScrubAnimationOptions, asWeb = false) {\n const { power, intensity = 0.5, range = 'in' } = options.namedEffect as ShapeScroll;\n let { shape = 'circle' } = options.namedEffect as ShapeScroll;\n if (!(shape in SHAPES)) {\n shape = 'circle';\n }\n\n const fill = (\n range === 'out' ? 'forwards' : range === 'in' ? 'backwards' : options.fill\n ) as AnimationFillMode;\n\n const [start, end] =\n power && SHAPES[shape].start[power]\n ? [SHAPES[shape].start[power], SHAPES[shape].end]\n : RESPONSIVE_SHAPES_MAP[shape](intensity * 100);\n\n const [shapeScroll] = getNames(options);\n\n const custom = {\n '--motion-clip-from': range === 'out' ? end : start,\n '--motion-clip-to': range === 'out' ? start : end,\n };\n\n const easing = getEasing('circInOut');\n\n const keyframes = [\n {\n clipPath: toKeyframeValue(custom, `--motion-clip-from`, asWeb),\n easing,\n },\n { clipPath: toKeyframeValue(custom, `--motion-clip-to`, asWeb) },\n ];\n\n if (range === 'continuous') {\n keyframes[1].easing = easing;\n keyframes.push({\n clipPath: toKeyframeValue(custom, `--motion-clip-from`, asWeb),\n });\n }\n\n return [\n {\n ...options,\n name: shapeScroll,\n fill,\n easing: 'linear',\n custom,\n keyframes,\n },\n ];\n}\n","import type { AnimationFillMode, ScrubAnimationOptions, ShuttersScroll, DomApi } from '../../types';\nimport {\n getOppositeDirection,\n getShuttersClipPaths,\n getEasing,\n toKeyframeValue,\n FOUR_DIRECTIONS,\n} from '../../utils';\n\nexport function getNames(options: ScrubAnimationOptions) {\n const { range = 'in' } = options.namedEffect as ShuttersScroll;\n return [`motion-shuttersScroll-${range === 'continuous' ? '-continuous' : ''}`];\n}\n\nexport function web(options: ScrubAnimationOptions, _dom?: DomApi) {\n return style(options, true);\n}\n\nexport function style(options: ScrubAnimationOptions, asWeb = false) {\n const {\n direction = 'right',\n shutters = 12,\n staggered = true,\n range = 'in',\n } = options.namedEffect as ShuttersScroll;\n const fill = (\n range === 'out' ? 'forwards' : range === 'in' ? 'backwards' : options.fill\n ) as AnimationFillMode;\n\n const easing = range === 'in' ? getEasing('sineIn') : getEasing('sineOut');\n\n const directionOpp = getOppositeDirection(FOUR_DIRECTIONS, direction);\n\n const { clipStart, clipEnd } = getShuttersClipPaths(\n range === 'out' ? directionOpp : direction,\n shutters,\n staggered,\n );\n\n const custom = {\n '--motion-shutters-clip-start': range === 'out' ? clipEnd : clipStart,\n '--motion-shutters-clip-end': range === 'out' ? clipStart : clipEnd,\n };\n\n const [shuttersScroll] = getNames(options);\n\n const keyframes: {\n clipPath: string | number;\n easing?: string;\n offset?: number;\n }[] = [\n {\n clipPath: toKeyframeValue(custom, '--motion-shutters-clip-start', asWeb),\n easing,\n },\n {\n clipPath: toKeyframeValue(custom, '--motion-shutters-clip-end', asWeb),\n },\n ];\n\n if (range === 'continuous') {\n keyframes[1].easing = easing;\n keyframes[1].offset = staggered ? 0.45 : 0.4;\n\n const { clipStart: oppClipStart, clipEnd: oppClipEnd } = getShuttersClipPaths(\n directionOpp,\n shutters,\n staggered,\n true,\n );\n Object.assign(custom, {\n '--motion-shutters-clip-opp-end': oppClipEnd,\n '--motion-shutters-clip-opp-start': oppClipStart,\n });\n\n const secondOffset = staggered ? 0.55 : 0.6;\n keyframes.push(\n {\n clipPath: toKeyframeValue(custom, '--motion-shutters-clip-end', asWeb),\n offset: secondOffset,\n easing,\n },\n {\n clipPath: toKeyframeValue(custom, '--motion-shutters-clip-opp-end', asWeb),\n offset: secondOffset,\n easing,\n },\n {\n clipPath: toKeyframeValue(custom, '--motion-shutters-clip-opp-start', asWeb),\n },\n );\n }\n\n return [\n {\n ...options,\n name: shuttersScroll,\n fill,\n easing: 'linear',\n custom,\n keyframes,\n },\n ];\n}\n","import type { AnimationFillMode, ScrubAnimationOptions, ShrinkScroll, DomApi } from '../../types';\nimport { toKeyframeValue } from '../../utils';\n\nconst MAX_Y_TRAVEL = 40;\nconst POWER_MAP = {\n soft: { scaleFrom: 1.2, scaleTo: 0.8, travelY: 0 },\n medium: { scaleFrom: 1.7, scaleTo: 0.3, travelY: 0.5 },\n hard: { scaleFrom: 3.5, scaleTo: 0, travelY: 1 },\n};\n\nconst directionMap = {\n top: [0, -50],\n 'top-right': [50, -50],\n right: [50, 0],\n 'bottom-right': [50, 50],\n bottom: [0, 50],\n 'bottom-left': [-50, 50],\n left: [-50, 0],\n 'top-left': [-50, -50],\n center: [0, 0],\n};\n\nexport function getNames(_: ScrubAnimationOptions) {\n return ['motion-shrinkScroll'];\n}\n\nexport function web(options: ScrubAnimationOptions, _dom?: DomApi) {\n return style(options, true);\n}\n\nexport function style(options: ScrubAnimationOptions, asWeb = false) {\n const {\n power,\n range = 'in',\n scale = range === 'in' ? 1.2 : 0.8,\n direction = 'center',\n speed = 0,\n } = options.namedEffect as ShrinkScroll;\n const easing = 'linear';\n const fill = (\n range === 'out' ? 'forwards' : range === 'in' ? 'backwards' : options.fill\n ) as AnimationFillMode;\n\n const { scaleFrom, scaleTo, travelY } =\n power && POWER_MAP[power]\n ? POWER_MAP[power]\n : {\n scaleFrom: scale,\n scaleTo: scale,\n travelY: speed,\n };\n const travel = travelY * MAX_Y_TRAVEL;\n\n const fromValues = {\n scale: range === 'out' ? 1 : scaleFrom,\n travel: range === 'out' ? 0 : -travel,\n };\n const toValues = {\n scale: range === 'in' ? 1 : scaleTo,\n travel: range === 'in' ? 0 : travel,\n };\n\n const offset = Math.abs(power && POWER_MAP[power] ? POWER_MAP[power].travelY : travel);\n const startOffsetAdd = range === 'out' ? '0px' : `${-offset}vh`;\n const endOffsetAdd = range === 'in' ? '0px' : `${offset}vh`;\n\n const [trnsX, trnsY] = directionMap[direction] || [0, 0];\n\n const [shrinkScroll] = getNames(options);\n\n const custom = {\n '--motion-travel-from': `${fromValues.travel}vh`,\n '--motion-travel-to': `${toValues.travel}vh`,\n '--motion-shrink-from': fromValues.scale,\n '--motion-shrink-to': toValues.scale,\n '--motion-trans-x': `${trnsX}%`,\n '--motion-trans-y': `${trnsY}%`,\n };\n\n return [\n {\n ...options,\n name: shrinkScroll,\n fill,\n easing,\n custom,\n startOffsetAdd,\n endOffsetAdd,\n keyframes: [\n {\n transform: `translateY(${toKeyframeValue(\n custom,\n '--motion-travel-from',\n asWeb,\n )}) translate(${toKeyframeValue(custom, '--motion-trans-x', asWeb)}, ${toKeyframeValue(\n custom,\n '--motion-trans-y',\n asWeb,\n )}) scale(${toKeyframeValue(\n custom,\n '--motion-shrink-from',\n asWeb,\n )}) translate(calc(-1 * ${toKeyframeValue(\n custom,\n '--motion-trans-x',\n asWeb,\n )}), calc(-1 * ${toKeyframeValue(\n custom,\n '--motion-trans-y',\n asWeb,\n )})) rotate(${toKeyframeValue({}, '--comp-rotate-z', false, '0')})`,\n },\n {\n transform: `translateY(${toKeyframeValue(\n custom,\n '--motion-travel-to',\n asWeb,\n )}) translate(${toKeyframeValue(custom, '--motion-trans-x', asWeb)}, ${toKeyframeValue(\n custom,\n '--motion-trans-y',\n asWeb,\n )}) scale(${toKeyframeValue(\n custom,\n '--motion-shrink-to',\n asWeb,\n )}) translate(calc(-1 * ${toKeyframeValue(\n custom,\n '--motion-trans-x',\n asWeb,\n )}), calc(-1 * ${toKeyframeValue(\n custom,\n '--motion-trans-y',\n asWeb,\n )})) rotate(${toKeyframeValue({}, '--comp-rotate-z', false, '0')})`,\n },\n ],\n },\n ];\n}\n","import type { AnimationFillMode, DomApi, ScrubAnimationOptions, SkewPanScroll } from '../../types';\nimport { toKeyframeValue } from '../../utils';\n\nconst POWER_MAP = {\n soft: 10,\n medium: 17,\n hard: 24,\n};\n\nexport function getNames(_: ScrubAnimationOptions) {\n return ['motion-skewPanScroll'];\n}\n\nexport function prepare(_: ScrubAnimationOptions, dom?: DomApi) {\n if (dom) {\n let left = 0;\n dom.measure((target) => {\n if (!target) {\n return;\n }\n left = target.getBoundingClientRect().left;\n });\n dom.mutate((target) => {\n target?.style.setProperty('--motion-left', `${left}px`);\n });\n }\n}\n\nexport function web(options: ScrubAnimationOptions, dom?: DomApi) {\n prepare(options, dom);\n\n return style(options, true);\n}\n\nexport function style(options: ScrubAnimationOptions, asWeb = false) {\n const {\n skew = 10,\n direction = 'right',\n power,\n range = 'in',\n } = options.namedEffect as SkewPanScroll;\n const easing = 'linear';\n const fill = (\n range === 'out' ? 'forwards' : range === 'in' ? 'backwards' : options.fill\n ) as AnimationFillMode;\n\n const skewX =\n (power && POWER_MAP[power] ? POWER_MAP[power] : skew) * (direction === 'left' ? 1 : -1);\n const startXLeft = `calc(${toKeyframeValue(\n {},\n '--motion-left',\n false,\n 'calc(100vw - 100%)',\n )} * -1 - 100%)`;\n const endXLeft = `calc(100vw - ${toKeyframeValue({}, '--motion-left', false, '0px')})`;\n const [startX, endX] = direction === 'left' ? [startXLeft, endXLeft] : [endXLeft, startXLeft];\n\n const fromValues = {\n skew: range === 'out' ? 0 : skewX,\n translate: range === 'out' ? 0 : startX,\n };\n const toValues = {\n skew: range === 'in' ? 0 : -skewX,\n translate: range === 'in' ? 0 : range === 'out' ? startX : endX,\n };\n\n const [skewPanScroll] = getNames(options);\n\n const custom = {\n '--motion-skewpan-start-x': fromValues.translate,\n '--motion-skewpan-end-x': toValues.translate,\n '--motion-skewpan-from-skew': `${fromValues.skew}deg`,\n '--motion-skewpan-to-skew': `${toValues.skew}deg`,\n };\n\n return [\n {\n ...options,\n name: skewPanScroll,\n fill,\n easing,\n custom,\n keyframes: [\n {\n transform: `translateX(${toKeyframeValue(\n custom,\n '--motion-skewpan-start-x',\n asWeb,\n )}) skewX(${toKeyframeValue(\n custom,\n '--motion-skewpan-from-skew',\n asWeb,\n )}) rotate(${toKeyframeValue({}, '--comp-rotate-z', false, '0')})`,\n },\n {\n transform: `translateX(${toKeyframeValue(\n custom,\n '--motion-skewpan-end-x',\n asWeb,\n )}) skewX(${toKeyframeValue(\n custom,\n '--motion-skewpan-to-skew',\n asWeb,\n )}) rotate(${toKeyframeValue({}, '--comp-rotate-z', false, '0')})`,\n },\n ],\n },\n ];\n}\n","import type {\n ScrubAnimationOptions,\n SlideScroll,\n EffectFourDirections,\n DomApi,\n AnimationFillMode,\n} from '../../types';\nimport {\n getOppositeDirection,\n applyRotationAdjustedClip,\n getRevealClipFrom,\n getRevealClipTo,\n toKeyframeValue,\n INITIAL_CLIP,\n FOUR_DIRECTIONS,\n} from '../../utils';\n\ntype Translate = { x: string; y: string };\n\nconst DIRECTION_TRANSLATION_MAP: Record<EffectFourDirections, Translate> = {\n bottom: { x: '0', y: '100%' },\n left: { x: '-100%', y: '0' },\n top: { x: '0', y: '-100%' },\n right: { x: '100%', y: '0' },\n};\n\nexport function getNames(options: ScrubAnimationOptions) {\n const { range = 'in' } = options.namedEffect as SlideScroll;\n return [`motion-slideScroll${range === 'continuous' ? '-continuous' : ''}`];\n}\n\nexport function prepare(options: ScrubAnimationOptions, dom?: DomApi) {\n if (dom) {\n const { direction = 'bottom', range = 'in' } = options.namedEffect as SlideScroll;\n applyRotationAdjustedClip(dom, direction, range);\n }\n}\n\nexport function web(options: ScrubAnimationOptions, dom?: DomApi) {\n prepare(options, dom);\n\n return style(options, true);\n}\n\nexport function style(options: ScrubAnimationOptions, asWeb = false) {\n const { direction = 'bottom', range = 'in' } = options.namedEffect as SlideScroll;\n const easing = 'linear';\n const fill = (\n range === 'out' ? 'forwards' : range === 'in' ? 'backwards' : options.fill\n ) as AnimationFillMode;\n const oppositeDirection = getOppositeDirection(FOUR_DIRECTIONS, direction);\n\n const translateFrom = range === 'out' ? { x: '0', y: '0' } : DIRECTION_TRANSLATION_MAP[direction];\n const translateTo =\n range === 'in'\n ? { x: '0', y: '0' }\n : DIRECTION_TRANSLATION_MAP[range === 'out' ? direction : oppositeDirection];\n\n const custom = {\n '--motion-clip-from': getRevealClipFrom(direction, range),\n '--motion-clip-to': getRevealClipTo(direction, range),\n '--motion-translate-from-x': translateFrom.x,\n '--motion-translate-from-y': translateFrom.y,\n '--motion-translate-to-x': translateTo.x,\n '--motion-translate-to-y': translateTo.y,\n };\n\n const keyframes = [\n {\n clipPath: toKeyframeValue({}, '--motion-clip-from', false, custom['--motion-clip-from']),\n transform: `rotate(${toKeyframeValue(\n {},\n '--comp-rotate-z',\n false,\n '0',\n )}) translate(${toKeyframeValue(\n custom,\n `--motion-translate-from-x`,\n asWeb,\n )}, ${toKeyframeValue(custom, `--motion-translate-from-y`, asWeb)})`,\n },\n {\n clipPath: toKeyframeValue({}, '--motion-clip-to', false, custom['--motion-clip-to']),\n transform: `rotate(${toKeyframeValue(\n {},\n '--comp-rotate-z',\n false,\n '0',\n )}) translate(${toKeyframeValue(\n custom,\n `--motion-translate-to-x`,\n asWeb,\n )}, ${toKeyframeValue(custom, `--motion-translate-to-y`, asWeb)})`,\n },\n ];\n\n if (range === 'continuous') {\n keyframes.splice(1, 0, {\n clipPath: INITIAL_CLIP,\n transform: `rotate(${toKeyframeValue({}, '--comp-rotate-z', false, '0')}) translate(0, 0)`,\n });\n }\n\n const [slideScroll] = getNames(options);\n\n return [\n {\n ...options,\n name: slideScroll,\n fill,\n easing,\n keyframes,\n },\n ];\n}\n","import type { AnimationFillMode, ScrubAnimationOptions, Spin3dScroll, DomApi } from '../../types';\nimport { toKeyframeValue } from '../../utils';\n\nconst MAX_Y_TRAVEL = 40;\n\nconst POWER_MAP = {\n soft: { rotationZ: 45, travelY: 0 },\n medium: { rotationZ: 100, travelY: 0.5 },\n hard: { rotationZ: 200, travelY: 1 },\n};\n\nexport function getNames(_: ScrubAnimationOptions) {\n return ['motion-spin3dScroll'];\n}\n\nexport function web(options: ScrubAnimationOptions, _dom?: DomApi) {\n return style(options, true);\n}\n\nexport function style(options: ScrubAnimationOptions, asWeb = false) {\n const { rotate = -100, speed = 0, power, range = 'in' } = options.namedEffect as Spin3dScroll;\n const easing = 'linear';\n const fill = (\n range === 'out' ? 'forwards' : range === 'in' ? 'backwards' : options.fill\n ) as AnimationFillMode;\n\n const { rotationZ, travelY } =\n power && POWER_MAP[power] ? POWER_MAP[power] : { rotationZ: rotate, travelY: speed };\n const travel = travelY * MAX_Y_TRAVEL;\n\n const fromValues = {\n rotationX: range === 'out' ? 0 : -2 * rotationZ,\n rotationY: range === 'out' ? 0 : -rotationZ,\n rotationZ: range === 'out' ? 0 : -rotationZ,\n travel: range === 'out' ? 0 : -travel,\n };\n const toValues = {\n rotationX: rotationZ * (range === 'in' ? 0 : range === 'out' ? 3 : 1.8),\n rotationY: rotationZ * (range === 'in' ? 0 : range === 'out' ? 2 : 1),\n rotationZ: rotationZ * (range === 'in' ? 0 : range === 'out' ? 1 : 2),\n travel: range === 'in' ? 0 : travel,\n };\n\n const offset = Math.abs(travel);\n const startOffsetAdd = range === 'out' ? '0px' : `${-offset}vh`;\n const endOffsetAdd = range === 'in' ? '0px' : `${offset}vh`;\n\n const [spin3dScroll] = getNames(options);\n\n const custom = {\n '--motion-travel-from': `${fromValues.travel}vh`,\n '--motion-travel-to': `${toValues.travel}vh`,\n '--motion-rot-x-from': `${fromValues.rotationX}deg`,\n '--motion-rot-x-to': `${toValues.rotationX}deg`,\n '--motion-rot-y-from': `${fromValues.rotationY}deg`,\n '--motion-rot-y-to': `${toValues.rotationY}deg`,\n '--motion-rot-z-from': `${fromValues.rotationZ}deg`,\n '--motion-rot-z-to': `${toValues.rotationZ}deg`,\n };\n\n return [\n {\n ...options,\n name: spin3dScroll,\n fill,\n easing,\n custom,\n startOffsetAdd,\n endOffsetAdd,\n keyframes: [\n {\n transform: `perspective(1000px) translateY(${toKeyframeValue(\n custom,\n '--motion-travel-from',\n asWeb,\n )}) rotateZ(calc(${toKeyframeValue(\n {},\n '--comp-rotate-z',\n false,\n '0deg',\n )} + ${toKeyframeValue(custom, '--motion-rot-z-from', asWeb)})) rotateY(${toKeyframeValue(\n custom,\n '--motion-rot-y-from',\n asWeb,\n )}) rotateX(${toKeyframeValue(custom, '--motion-rot-x-from', asWeb)})`,\n },\n {\n transform: `perspective(1000px) translateY(${toKeyframeValue(\n custom,\n '--motion-travel-to',\n asWeb,\n )}) rotateZ(calc(${toKeyframeValue(\n {},\n '--comp-rotate-z',\n false,\n '0deg',\n )} + ${toKeyframeValue(custom, '--motion-rot-z-to', asWeb)})) rotateY(${toKeyframeValue(\n custom,\n '--motion-rot-y-to',\n asWeb,\n )}) rotateX(${toKeyframeValue(custom, '--motion-rot-x-to', asWeb)})`,\n },\n ],\n },\n ];\n}\n","import type { AnimationFillMode, ScrubAnimationOptions, SpinScroll, DomApi } from '../../types';\nimport { toKeyframeValue } from '../../utils';\n\nconst POWER_MAP = {\n soft: 1,\n medium: 0.7,\n hard: 0.4,\n};\n\nexport function getNames(_: ScrubAnimationOptions) {\n return ['motion-spinScroll'];\n}\n\nexport function web(options: ScrubAnimationOptions, _dom?: DomApi) {\n return style(options, true);\n}\n\nexport function style(options: ScrubAnimationOptions, asWeb = false) {\n const {\n spins = 0.15,\n scale = 1,\n direction = 'clockwise',\n power,\n range = 'in',\n } = options.namedEffect as SpinScroll;\n const easing = 'linear';\n const fill = (\n range === 'out' ? 'forwards' : range === 'in' ? 'backwards' : options.fill\n ) as AnimationFillMode;\n\n const rotationZ = 360 * spins;\n const scaleFactor = power && POWER_MAP[power] ? POWER_MAP[power] : scale;\n\n const isIn = range === 'in';\n const fromValue = isIn ? -rotationZ : range === 'out' ? 0 : -rotationZ / 2;\n const toValue = isIn ? 0 : range === 'out' ? rotationZ : rotationZ / 2;\n const spinDirection = direction === 'clockwise' ? 1 : -1;\n\n const [spinScroll] = getNames(options);\n\n const custom = {\n '--motion-spin-from': `${spinDirection * fromValue}deg`,\n '--motion-spin-to': `${spinDirection * toValue}deg`,\n '--motion-spin-scale-from': isIn ? scaleFactor : 1,\n '--motion-spin-scale-to': isIn ? 1 : scaleFactor,\n };\n\n return [\n {\n ...options,\n name: spinScroll,\n fill,\n easing,\n custom,\n keyframes: [\n {\n transform: `scale(${toKeyframeValue(\n custom,\n '--motion-spin-scale-from',\n asWeb,\n )}) rotate(calc(${toKeyframeValue(\n {},\n '--comp-rotate-z',\n false,\n '0deg',\n )} + ${toKeyframeValue(custom, '--motion-spin-from', asWeb)}))`,\n },\n {\n transform: `scale(${toKeyframeValue(\n custom,\n '--motion-spin-scale-to',\n asWeb,\n )}) rotate(calc(${toKeyframeValue(\n {},\n '--comp-rotate-z',\n false,\n '0deg',\n )} + ${toKeyframeValue(custom, '--motion-spin-to', asWeb)}))`,\n },\n ],\n },\n ];\n}\n","import { cssEasings as easings } from '@wix/motion';\nimport type { AnimationFillMode, ScrubAnimationOptions, StretchScroll, DomApi } from '../../types';\nimport { roundNumber, toKeyframeValue } from '../../utils';\n\nconst POWER_MAP = {\n soft: { scaleY: 1.2, scaleX: 0.8 },\n medium: { scaleY: 1.5, scaleX: 0.6 },\n hard: { scaleY: 2, scaleX: 0.4 },\n};\n\nconst opacityKeyframesMap = {\n in: [\n { opacity: 0, offset: 0 },\n { opacity: 1, offset: 0.65 },\n ],\n out: [\n { opacity: 1, offset: 0.35 },\n { opacity: 0, offset: 1 },\n ],\n continuous: [\n { opacity: 0, offset: 0 },\n { opacity: 1, offset: 0.325 },\n { opacity: 1, offset: 0.7 },\n { opacity: 0, offset: 1 },\n ],\n};\n\nexport function getNames(options: ScrubAnimationOptions) {\n const { range = 'out' } = options.namedEffect as StretchScroll;\n return [\n `motion-stretchScrollScale${range === 'continuous' ? '-continuous' : ''}`,\n `motion-stretchScrollOpacity-${range}`,\n ];\n}\n\nexport function web(options: ScrubAnimationOptions, _dom?: DomApi) {\n return style(options, true);\n}\n\nexport function style(options: ScrubAnimationOptions, asWeb = false) {\n const { power, stretch = 0.6, range = 'out' } = options.namedEffect as StretchScroll;\n const easing = range === 'continuous' ? 'linear' : 'backInOut';\n const fill = (\n range === 'out' ? 'forwards' : range === 'in' ? 'backwards' : options.fill\n ) as AnimationFillMode;\n\n const { scaleX, scaleY } =\n power && POWER_MAP[power] ? POWER_MAP[power] : { scaleX: 1 - stretch, scaleY: 1 + stretch };\n\n const [stretchScrollScale, stretchScrollOpacity] = getNames(options);\n\n const isOut = range === 'out';\n const roundedScaleX = roundNumber(scaleX);\n const roundedScaleY = roundNumber(scaleY);\n\n const custom = {\n '--motion-stretch-scale-x-from': isOut ? 1 : roundedScaleX,\n '--motion-stretch-scale-y-from': isOut ? 1 : roundedScaleY,\n '--motion-stretch-scale-x-to': isOut ? roundedScaleX : 1,\n '--motion-stretch-scale-y-to': isOut ? roundedScaleY : 1,\n '--motion-stretch-trans-from': isOut ? 0 : `calc(-100% * (1 - ${roundedScaleY}))`,\n '--motion-stretch-trans-to': isOut ? `calc(100% * (1 - ${roundedScaleY}))` : 0,\n };\n\n const stretchKeyframes = [\n {\n scale: `${toKeyframeValue(\n custom,\n '--motion-stretch-scale-x-from',\n asWeb,\n )} ${toKeyframeValue(custom, '--motion-stretch-scale-y-from', asWeb)}`,\n translate: `0 ${toKeyframeValue(custom, '--motion-stretch-trans-from', asWeb)}`,\n },\n {\n scale: `${toKeyframeValue(\n custom,\n '--motion-stretch-scale-x-to',\n asWeb,\n )} ${toKeyframeValue(custom, '--motion-stretch-scale-y-to', asWeb)}`,\n translate: `0 ${toKeyframeValue(custom, '--motion-stretch-trans-to', asWeb)}`,\n },\n ];\n\n if (range === 'continuous') {\n stretchKeyframes.forEach((frame) => {\n Object.assign(frame, { easing: easings.backInOut });\n });\n\n stretchKeyframes.push({\n scale: `${toKeyframeValue(\n custom,\n '--motion-stretch-scale-x-from',\n asWeb,\n )} ${toKeyframeValue(custom, '--motion-stretch-scale-y-from', asWeb)}`,\n translate: `0 calc(100% * (1 - ${toKeyframeValue(\n custom,\n '--motion-stretch-scale-y-from',\n asWeb,\n )}))`,\n });\n }\n\n return [\n {\n ...options,\n name: stretchScrollScale,\n fill,\n easing,\n custom,\n keyframes: stretchKeyframes,\n },\n {\n ...options,\n name: stretchScrollOpacity,\n fill,\n easing,\n keyframes: opacityKeyframesMap[range] || opacityKeyframesMap.out,\n },\n ];\n}\n","import type { AnimationFillMode, ScrubAnimationOptions, TiltScroll, DomApi } from '../../types';\nimport { cssEasings as easings } from '@wix/motion';\nimport { toKeyframeValue } from '../../utils';\n\nconst MAX_Y_TRAVEL = 40;\n\nconst [ROTATION_X, ROTATION_Y, ROTATION_Z] = [10, 25, 25];\n\nconst TRANSLATE_Y_POWER_MAP = {\n soft: 0,\n medium: 0.5,\n hard: 1,\n};\n\nexport function getNames(_: ScrubAnimationOptions) {\n return ['motion-tiltScrollTranslate', 'motion-tiltScrollRotate'];\n}\n\nexport function web(options: ScrubAnimationOptions, _dom?: DomApi) {\n return style(options, true);\n}\n\nexport function style(options: ScrubAnimationOptions, asWeb = false) {\n const {\n power,\n distance = 0,\n range = 'in',\n direction = 'right',\n } = options.namedEffect as TiltScroll;\n const easing = 'linear';\n const fill = (\n range === 'out' ? 'forwards' : range === 'in' ? 'backwards' : options.fill\n ) as AnimationFillMode;\n\n const travelY =\n MAX_Y_TRAVEL *\n (power && power in TRANSLATE_Y_POWER_MAP ? TRANSLATE_Y_POWER_MAP[power] : distance);\n const dir = direction === 'left' ? -1 : 1;\n\n const from = {\n x: ROTATION_X * (range === 'out' ? 0 : -1),\n y: ROTATION_Y * (range === 'out' ? 0 : -1),\n z: ROTATION_Z * dir * (range === 'out' ? 0 : range === 'in' ? 1 : -1),\n transY: range === 'out' ? 0 : travelY,\n };\n const to = {\n x: ROTATION_X * (range === 'in' ? 0 : range === 'out' ? -1 : 1),\n y: ROTATION_Y * (range === 'in' ? 0 : range === 'out' ? -1 : 0.5),\n z: ROTATION_Z * dir * (range === 'in' ? 0 : range === 'out' ? 1 : 1.25),\n transY: range === 'in' ? 0 : -1 * travelY,\n };\n\n const startOffsetAdd = range === 'out' ? '0px' : `${-1 * Math.abs(travelY)}vh`;\n const endOffsetAdd = range === 'in' ? '0px' : `${Math.abs(travelY)}vh`;\n\n const [tiltScrollTranslate, tiltScrollRotate] = getNames(options);\n\n const custom = {\n '--motion-tilt-y-from': `${from.transY}vh`,\n '--motion-tilt-y-to': `${to.transY}vh`,\n '--motion-tilt-x-from': `${from.x}deg`,\n '--motion-tilt-x-to': `${to.x}deg`,\n '--motion-tilt-y-rot-from': `${from.y}deg`,\n '--motion-tilt-y-rot-to': `${to.y}deg`,\n '--motion-tilt-z-from': `${from.z}deg`,\n '--motion-tilt-z-to': `${to.z}deg`,\n };\n\n return [\n {\n ...options,\n name: tiltScrollTranslate,\n fill,\n easing,\n startOffsetAdd,\n endOffsetAdd,\n custom,\n keyframes: [\n {\n transform: `perspective(400px) translateY(${toKeyframeValue(\n custom,\n '--motion-tilt-y-from',\n asWeb,\n )}) rotateX(${toKeyframeValue(\n custom,\n '--motion-tilt-x-from',\n asWeb,\n )}) rotateY(${toKeyframeValue(custom, '--motion-tilt-y-rot-from', asWeb)})`,\n },\n {\n transform: `perspective(400px) translateY(${toKeyframeValue(\n custom,\n '--motion-tilt-y-to',\n asWeb,\n )}) rotateX(${toKeyframeValue(\n custom,\n '--motion-tilt-x-to',\n asWeb,\n )}) rotateY(${toKeyframeValue(custom, '--motion-tilt-y-rot-to', asWeb)})`,\n },\n ],\n },\n {\n ...options,\n name: tiltScrollRotate,\n fill,\n easing: easings.sineInOut,\n startOffsetAdd,\n endOffsetAdd,\n composite: 'add' as const, // add this animation on top of the previous one\n custom,\n keyframes: [\n {\n transform: `rotate(calc(${toKeyframeValue(\n {},\n '--comp-rotate-z',\n false,\n '0deg',\n )} + ${toKeyframeValue(custom, '--motion-tilt-z-from', asWeb)}))`,\n },\n {\n transform: `rotate(calc(${toKeyframeValue(\n {},\n '--comp-rotate-z',\n false,\n '0deg',\n )} + ${toKeyframeValue(custom, '--motion-tilt-z-to', asWeb)}))`,\n },\n ],\n },\n ];\n}\n","import type { TurnScroll, ScrubAnimationOptions, DomApi, AnimationFillMode } from '../../types';\nimport { toKeyframeValue } from '../../utils';\n\nconst ELEMENT_ROTATION = 45;\n\nconst POWER_MAP = {\n soft: { scaleFrom: 1, scaleTo: 1 },\n medium: { scaleFrom: 0.7, scaleTo: 1.3 },\n hard: { scaleFrom: 0.4, scaleTo: 1.6 },\n};\n\nexport function getNames(_: ScrubAnimationOptions) {\n return ['motion-turnScroll'];\n}\n\nexport function prepare(_: ScrubAnimationOptions, dom?: DomApi) {\n if (dom) {\n let left = 0;\n dom.measure((target) => {\n if (!target) {\n return;\n }\n left = target.getBoundingClientRect().left;\n });\n dom.mutate((target) => {\n target?.style.setProperty('--motion-left', `${left}px`);\n });\n }\n}\n\nexport function web(options: ScrubAnimationOptions, dom?: DomApi) {\n prepare(options, dom);\n\n return style(options, true);\n}\n\nexport function style(options: ScrubAnimationOptions, asWeb = false) {\n const {\n power,\n spin = 'clockwise',\n direction = 'right',\n scale = 1,\n range = 'in',\n } = options.namedEffect as TurnScroll;\n const easing = 'linear';\n const fill = (\n range === 'out' ? 'forwards' : range === 'in' ? 'backwards' : options.fill\n ) as AnimationFillMode;\n\n const startXLeft = `calc(-1 * ${toKeyframeValue(\n {},\n '--motion-left',\n false,\n 'calc(100vw - 100%)',\n )} - 100%)`;\n const endXLeft = `calc(100vw - ${toKeyframeValue({}, '--motion-left', false, '0px')})`;\n const [startX, endX] = direction === 'left' ? [startXLeft, endXLeft] : [endXLeft, startXLeft];\n\n const rotate = spin === 'clockwise' ? ELEMENT_ROTATION : -1 * ELEMENT_ROTATION;\n\n const { scaleFrom, scaleTo } =\n power && POWER_MAP[power] ? POWER_MAP[power] : { scaleFrom: scale, scaleTo: scale };\n\n const fromValues = {\n rotation: range === 'out' ? 0 : -rotate,\n scale: range === 'out' ? 1 : scaleFrom,\n translate: range === 'out' ? '0px' : startX,\n };\n const toValues = {\n rotation: range === 'in' ? 0 : rotate,\n scale: range === 'in' ? 1 : range === 'continuous' ? scaleTo : scaleFrom,\n translate: range === 'in' ? '0px' : endX,\n };\n\n const [turnScroll] = getNames(options);\n\n const custom = {\n '--motion-turn-translate-from': fromValues.translate,\n '--motion-turn-translate-to': toValues.translate,\n '--motion-turn-scale-from': fromValues.scale,\n '--motion-turn-scale-to': toValues.scale,\n '--motion-turn-rotation-from': `${fromValues.rotation}deg`,\n '--motion-turn-rotation-to': `${toValues.rotation}deg`,\n };\n\n return [\n {\n ...options,\n name: turnScroll,\n fill,\n easing,\n custom,\n keyframes: [\n {\n transform: `translateX(${toKeyframeValue(\n custom,\n '--motion-turn-translate-from',\n asWeb,\n )}) scale(${toKeyframeValue(\n custom,\n '--motion-turn-scale-from',\n asWeb,\n )}) rotate(calc(${toKeyframeValue(\n {},\n '--comp-rotate-z',\n false,\n '0deg',\n )} + ${toKeyframeValue(custom, '--motion-turn-rotation-from', asWeb)}))`,\n },\n {\n transform: `translateX(${toKeyframeValue(\n custom,\n '--motion-turn-translate-to',\n asWeb,\n )}) scale(${toKeyframeValue(\n custom,\n '--motion-turn-scale-to',\n asWeb,\n )}) rotate(calc(${toKeyframeValue(\n {},\n '--comp-rotate-z',\n false,\n '0deg',\n )} + ${toKeyframeValue(custom, '--motion-turn-rotation-to', asWeb)}))`,\n },\n ],\n },\n ];\n}\n","import type { ArcIn, TimeAnimationOptions, EffectFourDirections, DomApi } from '../../types';\nimport { INITIAL_FRAME_OFFSET, toKeyframeValue } from '../../utils';\n\nconst ROTATION_ANGLE = 80;\nconst DIRECTION_MAP: Record<EffectFourDirections, { x: number; y: number; sign: number }> = {\n top: { x: 1, y: 0, sign: 1 },\n right: { x: 0, y: 1, sign: 1 },\n bottom: { x: 1, y: 0, sign: -1 },\n left: { x: 0, y: 1, sign: -1 },\n};\n\nconst EASING_MAP = {\n soft: 'cubicInOut',\n medium: 'quintInOut',\n hard: 'backOut',\n};\n\nexport function web(options: TimeAnimationOptions, dom?: DomApi) {\n prepare(options, dom);\n\n return style(options, true);\n}\n\nexport function getNames(_: TimeAnimationOptions) {\n return ['motion-fadeIn', 'motion-arcIn'];\n}\n\nexport function style(options: TimeAnimationOptions, asWeb = false) {\n const { power, direction = 'right' } = options.namedEffect as ArcIn;\n const [fadeIn, arcIn] = getNames(options);\n\n const easing = (power && EASING_MAP[power]) || options.easing || 'quintInOut';\n\n // we can remove dependency on measurement here if we use a \"layout wrapper\" as a `container`: https://jsbin.com/mulojuwogi/edit?css,output\n // we could also consider a fixed value for z, e.g. 300px like in ArcScroll\n // const { width, height } = element.getBoundingClientRect();\n\n const { x, y, sign } = DIRECTION_MAP[direction];\n // const z = rotateX ? height / 2 : width / 2;\n const z = `(-1 * (var(--motion-height, 100vh) * var(--motion-arc-x, 1) + var(--motion-width, 100vw) * var(--motion-arc-y, 0))) / 2`;\n\n const custom = {\n '--motion-arc-x': `${x}`,\n '--motion-arc-y': `${y}`,\n '--motion-arc-sign': `${sign}`,\n };\n\n return [\n {\n ...options,\n name: fadeIn,\n duration: options.duration! * 0.7,\n easing: 'sineIn',\n custom: {},\n keyframes: [{ offset: 0, opacity: 0 }, { opacity: 'var(--comp-opacity, 1)' }],\n },\n {\n ...options,\n name: arcIn,\n easing,\n custom,\n keyframes: [\n {\n offset: INITIAL_FRAME_OFFSET,\n transform: `perspective(800px) translateZ(calc(${z})) rotateX(calc(${toKeyframeValue(\n custom,\n '--motion-arc-x',\n asWeb,\n )} * ${toKeyframeValue(\n custom,\n '--motion-arc-sign',\n asWeb,\n )} * ${ROTATION_ANGLE}deg)) rotateY(calc(${toKeyframeValue(\n custom,\n '--motion-arc-y',\n asWeb,\n )} * ${toKeyframeValue(\n custom,\n '--motion-arc-sign',\n asWeb,\n )} * ${ROTATION_ANGLE}deg)) translateZ(calc(-1 * ${z})) rotate(var(--comp-rotate-z, 0deg))`,\n },\n {\n transform: `perspective(800px) translateZ(calc(${z})) rotateX(0deg) rotateY(0deg) translateZ(calc(-1 * ${z})) rotate(var(--comp-rotate-z, 0deg))`,\n },\n ],\n },\n ];\n}\n\nexport function prepare(_: TimeAnimationOptions, dom?: DomApi) {\n if (dom) {\n let width: number, height: number;\n\n dom.measure((target) => {\n if (!target) {\n return;\n }\n\n const rect = target.getBoundingClientRect();\n width = rect.width;\n height = rect.height;\n });\n\n dom.mutate((target) => {\n target?.style.setProperty('--motion-height', `${height}px`);\n target?.style.setProperty('--motion-width', `${width}px`);\n });\n }\n}\n","import type { BlurIn, TimeAnimationOptions } from '../../types';\nimport { toKeyframeValue } from '../../utils';\n\nconst BLUR_POWER_MAP = {\n soft: 6,\n medium: 25,\n hard: 50,\n};\n\nexport function getNames(_: TimeAnimationOptions) {\n return ['motion-fadeIn', 'motion-blurIn'];\n}\n\nexport function web(options: TimeAnimationOptions) {\n return style(options, true);\n}\n\nexport function style(options: TimeAnimationOptions, asWeb = false) {\n const { blur = 6, power } = options.namedEffect as BlurIn;\n const [fadeIn, blurIn] = getNames(options);\n\n const easing = options.easing || 'linear';\n const blurFactor = power && BLUR_POWER_MAP[power] ? BLUR_POWER_MAP[power] : blur;\n\n const custom = {\n '--motion-blur': `${blurFactor}px`,\n };\n\n return [\n {\n ...options,\n name: fadeIn,\n duration: options.duration! * 0.7,\n easing: 'sineIn',\n custom: {},\n keyframes: [{ offset: 0, opacity: 0 }, { opacity: 'var(--comp-opacity, 1)' }],\n },\n {\n ...options,\n name: blurIn,\n easing,\n composite: 'add' as const, // make sure we don't override existing filters on the component\n custom,\n keyframes: [\n {\n filter: `blur(${toKeyframeValue(custom, '--motion-blur', asWeb)})`,\n },\n {\n filter: 'blur(0px)',\n },\n ],\n },\n ];\n}\n","import { ShuttersIn, TimeAnimationOptions } from '../../types';\nimport {\n getShuttersClipPaths,\n getEasing,\n toKeyframeValue,\n INITIAL_FRAME_OFFSET,\n} from '../../utils';\n\nexport function getNames(_: TimeAnimationOptions) {\n return ['motion-shuttersIn'];\n}\n\nexport function web(options: TimeAnimationOptions) {\n return style(options, true);\n}\n\nexport function style(options: TimeAnimationOptions, asWeb = false) {\n const {\n direction = 'right',\n shutters = 12,\n staggered = true,\n } = options.namedEffect as ShuttersIn;\n const [shuttersIn] = getNames(options);\n\n const { clipStart, clipEnd } = getShuttersClipPaths(direction, shutters, staggered);\n\n const custom = {\n '--motion-shutters-start': clipStart,\n '--motion-shutters-end': clipEnd,\n };\n\n const easing = getEasing(options.easing || 'sineIn');\n\n return [\n {\n ...options,\n easing,\n name: shuttersIn,\n custom,\n keyframes: [\n {\n offset: 0,\n opacity: 0,\n easing: 'step-end',\n },\n {\n offset: INITIAL_FRAME_OFFSET,\n opacity: 'var(--comp-opacity, 1)',\n clipPath: toKeyframeValue(custom, '--motion-shutters-start', asWeb),\n },\n {\n clipPath: toKeyframeValue(custom, '--motion-shutters-end', asWeb),\n },\n ],\n },\n ];\n}\n","import { getEasingFamily, getEasing, toKeyframeValue, INITIAL_FRAME_OFFSET } from '../../utils';\nimport type { BounceIn, TimeAnimationOptions } from '../../types';\n\nexport function getNames(_: TimeAnimationOptions) {\n return ['motion-fadeIn', 'motion-bounceIn'];\n}\n\nconst { in: easeIn, out: easeOut } = getEasingFamily('sineIn');\nconst BOUNCE_KEYFRAMES = [\n { offset: INITIAL_FRAME_OFFSET * 100, translate: 100 },\n { offset: 30, translate: 0 },\n { offset: 42, translate: 35 },\n { offset: 54, translate: 0 },\n { offset: 62, translate: 21 },\n { offset: 74, translate: 0 },\n { offset: 82, translate: 9 },\n { offset: 90, translate: 0 },\n { offset: 95, translate: 2 },\n { offset: 100, translate: 0, isIn: true },\n];\n\nconst POWER_MAP = {\n soft: 1,\n medium: 2,\n hard: 3,\n};\n\nconst TRANSLATE_DIRECTION_MAP = {\n top: { y: -1, x: 0, z: 0 },\n right: { y: 0, x: 1, z: 0 },\n bottom: { y: 1, x: 0, z: 0 },\n left: { y: 0, x: -1, z: 0 },\n center: { x: 0, y: 0, z: -1 },\n};\n\nexport function web(options: TimeAnimationOptions) {\n return style(options, true);\n}\n\nexport function style(options: TimeAnimationOptions, asWeb = false) {\n const {\n power,\n distanceFactor: distance = 1,\n direction = 'bottom',\n } = options.namedEffect as BounceIn;\n const [fadeIn, bounceIn] = getNames(options);\n const distanceFactor = (power && POWER_MAP[power]) || distance;\n const perspective = direction === 'center' ? 'perspective(800px)' : ' ';\n const { x, y, z } = TRANSLATE_DIRECTION_MAP[direction];\n\n const custom = {\n '--motion-direction-x': x,\n '--motion-direction-y': y,\n '--motion-direction-z': z,\n '--motion-distance-factor': distanceFactor,\n '--motion-perspective': perspective,\n '--motion-ease-in': getEasing(easeOut),\n '--motion-ease-out': getEasing(easeIn),\n };\n\n const easeIn_ = toKeyframeValue(custom, '--motion-ease-in', asWeb);\n const easeOut_ = toKeyframeValue(custom, '--motion-ease-out', asWeb);\n const distanceFactor_ = toKeyframeValue(custom, '--motion-distance-factor', asWeb);\n const perspective_ = toKeyframeValue(custom, '--motion-perspective', asWeb, '');\n const directionX = toKeyframeValue(custom, '--motion-direction-x', asWeb);\n const directionY = toKeyframeValue(custom, '--motion-direction-y', asWeb);\n const directionZ = toKeyframeValue(custom, '--motion-direction-z', asWeb);\n\n const keyframes = BOUNCE_KEYFRAMES.map(({ offset, translate }, index) => ({\n offset: offset / 100,\n animationTimingFunction: index % 2 ? easeIn_ : easeOut_,\n transform: `${(\n perspective_ as string\n ).trim()} translate3d(calc(${directionX} * ${distanceFactor_} * ${\n translate / 2\n }px), calc(${directionY} * ${distanceFactor_} * ${\n translate / 2\n }px), calc(${directionZ} * ${distanceFactor_} * ${\n translate / 2\n }px)) rotateZ(var(--comp-rotate-z, 0deg))`,\n }));\n\n return [\n {\n ...options,\n name: fadeIn,\n easing: 'quadOut',\n duration: (options.duration! * BOUNCE_KEYFRAMES[3].offset) / 100,\n custom: {},\n keyframes: [{ offset: 0, opacity: 0 }, { opacity: 'var(--comp-opacity, 1)' }],\n },\n {\n ...options,\n name: bounceIn,\n easing: 'linear',\n custom,\n keyframes: [\n {\n offset: 0,\n transform: `perspective(800px) translate3d(0, 0, 0) rotateZ(var(--comp-rotate-z, 0deg))`,\n },\n ...keyframes,\n ],\n },\n ];\n}\n","import type { CurveIn, TimeAnimationOptions, DomApi } from '../../types';\nimport { INITIAL_FRAME_OFFSET, toKeyframeValue } from '../../utils';\n\nexport function getNames(_: TimeAnimationOptions) {\n return ['motion-curveIn'];\n}\n\nconst PARAMS_MAP = {\n pseudoRight: { rotationX: '180', rotationY: '0' },\n right: { rotationX: '0', rotationY: '180' },\n pseudoLeft: { rotationX: '-180', rotationY: '0' },\n left: { rotationX: '0', rotationY: '-180' },\n};\n\nexport function web(options: TimeAnimationOptions, dom?: DomApi) {\n prepare(options, dom);\n\n return style(options, true);\n}\n\nexport function style(options: TimeAnimationOptions, asWeb = false) {\n const { direction = 'right' } = options.namedEffect as CurveIn;\n const [curveIn] = getNames(options);\n\n const { rotationX, rotationY } = PARAMS_MAP[direction];\n\n const custom = {\n '--motion-rotate-x': `${rotationX}deg`,\n '--motion-rotate-y': `${rotationY}deg`,\n };\n\n return [\n {\n ...options,\n name: curveIn,\n easing: 'quadOut',\n custom,\n keyframes: [\n {\n offset: 0,\n opacity: 0,\n easing: 'step-end',\n },\n {\n offset: INITIAL_FRAME_OFFSET,\n opacity: 0,\n transform: `perspective(200px) translateZ(calc(var(--motion-width, 300px) * -3)) rotateX(${toKeyframeValue(\n custom,\n '--motion-rotate-x',\n asWeb,\n )}) rotateY(${toKeyframeValue(\n custom,\n '--motion-rotate-y',\n asWeb,\n )}) translateZ(calc(var(--motion-width, 300px) * 3)) rotateZ(var(--comp-rotate-z, 0deg))`,\n },\n {\n opacity: 'var(--comp-opacity, 1)',\n transform:\n 'perspective(200px) translateZ(calc(var(--motion-width, 300px) * -3)) rotateX(0deg) rotateY(0deg) translateZ(calc(var(--motion-width, 300px) * 3)) rotateZ(var(--comp-rotate-z, 0deg))',\n },\n ],\n },\n ];\n}\n\nexport function prepare(_: TimeAnimationOptions, dom?: DomApi) {\n if (dom) {\n let width: number;\n\n dom.measure((target) => {\n if (!target) {\n return;\n }\n\n width = target.getBoundingClientRect().width;\n });\n\n dom.mutate((target) => {\n target?.style.setProperty('--motion-width', `${width}px`);\n });\n }\n}\n","import type { TimeAnimationOptions, CircleIn, DomApi } from '../../types';\nimport { INITIAL_FRAME_OFFSET, toKeyframeValue } from '../../utils';\n\nexport function getNames(_: TimeAnimationOptions) {\n return ['motion-circleXIn', 'motion-circleYIn'];\n}\n\nconst ROTATION = 45;\n\nexport function web(options: TimeAnimationOptions, dom?: DomApi) {\n prepare(options, dom);\n\n return style(options, true);\n}\n\nexport function style(options: TimeAnimationOptions, asWeb = false) {\n const { direction = 'right' } = options.namedEffect as CircleIn;\n const [circleXIn, circleYIn] = getNames(options);\n\n const x =\n direction === 'right'\n ? 'calc(100vw - var(--motion-left, 0px))'\n : 'calc(var(--motion-left, 0px) * -1 - 100%)';\n const y = 'min(calc(100% * -1.5), max(-300px, calc(100% * -5.5)))';\n\n const customX = {\n '--motion-translate-x': x,\n };\n const customY = {\n '--motion-translate-y': y,\n '--motion-rotate-z': `${(direction === 'right' ? 1 : -1) * ROTATION}deg`,\n };\n\n return [\n {\n ...options,\n name: circleXIn,\n easing: 'circOut',\n custom: customX,\n keyframes: [\n {\n offset: INITIAL_FRAME_OFFSET,\n translate: toKeyframeValue(customX, '--motion-translate-x', asWeb),\n },\n {\n translate: '0',\n },\n ],\n },\n {\n ...options,\n name: circleYIn,\n easing: 'linear',\n custom: customY,\n keyframes: [\n {\n offset: 0,\n opacity: 0,\n easing: 'step-end',\n },\n {\n offset: INITIAL_FRAME_OFFSET,\n opacity: 0,\n transform: `translateY(${toKeyframeValue(\n customY,\n '--motion-translate-y',\n asWeb,\n )}) rotate(calc(var(--comp-rotate-z, 0deg) + ${toKeyframeValue(\n customY,\n '--motion-rotate-z',\n asWeb,\n )}))`,\n },\n {\n opacity: 'var(--comp-opacity, 1)',\n transform: `translateY(0) rotate(var(--comp-rotate-z, 0deg))`,\n },\n ],\n },\n ];\n}\n\nexport function prepare(_: TimeAnimationOptions, dom?: DomApi) {\n if (dom) {\n let left = 0;\n\n dom.measure((target) => {\n if (!target) {\n return;\n }\n\n left = target.getBoundingClientRect().left;\n });\n\n dom.mutate((target) => {\n target?.style.setProperty('--motion-left', `${left}px`);\n });\n }\n}\n","import type { TimeAnimationOptions, DropIn } from '../../types';\nimport { INITIAL_FRAME_OFFSET, toKeyframeValue } from '../../utils';\n\nexport function getNames(_: TimeAnimationOptions) {\n return ['motion-fadeIn', 'motion-dropIn'];\n}\n\nconst PARAMS_MAP = {\n soft: { scale: 1.2, ease: 'cubicInOut' },\n medium: { scale: 1.6, ease: 'quintInOut' },\n hard: { scale: 2, ease: 'backOut' },\n};\n\nexport function web(options: TimeAnimationOptions) {\n return style(options, true);\n}\n\nexport function style(options: TimeAnimationOptions, asWeb = false) {\n const { power, initialScale = PARAMS_MAP.medium.scale } = options.namedEffect as DropIn;\n const [fadeIn, dropIn] = getNames(options);\n\n const scale = (power && PARAMS_MAP[power].scale) || initialScale;\n const easing = (power && PARAMS_MAP[power].ease) || options.easing || 'quintInOut';\n\n const custom = {\n '--motion-scale': `${scale}`,\n };\n\n return [\n {\n ...options,\n name: fadeIn,\n easing: 'quadOut',\n duration: options.duration! * 0.8,\n custom: {},\n keyframes: [{ offset: 0, opacity: 0 }, { opacity: 'var(--comp-opacity, 1)' }],\n },\n {\n ...options,\n name: dropIn,\n easing,\n custom,\n keyframes: [\n {\n offset: INITIAL_FRAME_OFFSET,\n scale: toKeyframeValue(custom, '--motion-scale', asWeb),\n },\n {\n scale: '1',\n },\n ],\n },\n ];\n}\n","import type { DomApi, ExpandIn, TimeAnimationOptions } from '../../types';\nimport { INITIAL_FRAME_OFFSET, toKeyframeValue } from '../../utils';\n\nexport function getNames(_: TimeAnimationOptions) {\n return ['motion-fadeIn', 'motion-expandIn'];\n}\n\nconst SCALE_MAP = {\n soft: 0.8,\n medium: 0.6,\n hard: 0,\n};\n\nconst TRANSFORM_ORIGIN_MAP = {\n top: { x: 0, y: -0.5 },\n 'top-right': { x: 0.5, y: -0.5 },\n right: { x: 0.5, y: 0 },\n 'bottom-right': { x: 0.5, y: 0.5 },\n bottom: { x: 0, y: 0.5 },\n 'bottom-left': { x: -0.5, y: 0.5 },\n left: { x: -0.5, y: 0 },\n 'top-left': { x: -0.5, y: -0.5 },\n center: { x: 0, y: 0 },\n};\n\nexport function web(options: TimeAnimationOptions, dom?: DomApi) {\n prepare(options, dom);\n\n return style(options, true);\n}\n\nexport function style(options: TimeAnimationOptions, asWeb = false) {\n const { power, initialScale = 0, direction = 'center' } = options.namedEffect as ExpandIn;\n const [fadeIn, expandIn] = getNames(options);\n\n const easing = options.easing || 'cubicInOut';\n const scale_ = power && power in SCALE_MAP ? SCALE_MAP[power] : initialScale;\n const { x, y } = TRANSFORM_ORIGIN_MAP[direction];\n\n const custom = {\n '--motion-translate-x': x,\n '--motion-translate-y': y,\n '--motion-scale': scale_,\n };\n\n const transX = toKeyframeValue(custom, '--motion-translate-x', asWeb);\n const transY = toKeyframeValue(custom, '--motion-translate-y', asWeb);\n const scale = toKeyframeValue(custom, '--motion-scale', asWeb);\n\n return [\n {\n ...options,\n name: fadeIn,\n easing: 'linear',\n custom: {},\n keyframes: [{ offset: 0, opacity: 0 }, { opacity: 'var(--comp-opacity, 1)' }],\n },\n {\n ...options,\n name: expandIn,\n easing,\n custom,\n keyframes: [\n {\n offset: INITIAL_FRAME_OFFSET,\n transform: `translateX(calc(var(--motion-width, 100%) * ${transX})) translateY(calc(var(--motion-height, 100%) * ${transY})) scale(${scale}) translateX(calc(var(--motion-width, 100%) * -1 * ${transX})) translateY(calc(var(--motion-height, 100%) * -1 * ${transY})) rotate(var(--comp-rotate-z, 0deg))`,\n },\n {\n transform: `translateX(calc(var(--motion-width, 100%) * ${transX})) translateY(calc(var(--motion-height, 100%) * ${transY})) scale(1) translateX(calc(var(--motion-width, 100%) * -1 * ${transX})) translateY(calc(var(--motion-height, 100%) * -1 * ${transY})) rotate(var(--comp-rotate-z, 0deg))`,\n },\n ],\n },\n ];\n}\n\nexport function prepare(_: TimeAnimationOptions, dom?: DomApi) {\n if (dom) {\n let width: number, height: number;\n\n dom.measure((target) => {\n if (!target) {\n return;\n }\n\n const rect = target.getBoundingClientRect();\n width = rect.width;\n height = rect.height;\n });\n\n dom.mutate((target) => {\n target?.style.setProperty('--motion-width', `${width}px`);\n target?.style.setProperty('--motion-height', `${height}px`);\n });\n }\n}\n","import { TimeAnimationOptions } from '../../types';\n\nexport function getNames(_: TimeAnimationOptions) {\n return ['motion-fadeIn'];\n}\n\nexport function web(options: TimeAnimationOptions) {\n return style(options);\n}\n\nexport function style(options: TimeAnimationOptions) {\n const [fadeIn] = getNames(options);\n\n return [\n {\n ...options,\n name: fadeIn,\n easing: 'sineInOut',\n keyframes: [{ offset: 0, opacity: 0 }, { opacity: 'var(--comp-opacity, 1)' }],\n },\n ];\n}\n","import { getAdjustedDirection, INITIAL_FRAME_OFFSET } from '../../utils';\nimport type { FlipIn, TimeAnimationOptions, DomApi } from '../../types';\n\nexport function getNames(_: TimeAnimationOptions) {\n return ['motion-fadeIn', 'motion-flipIn'];\n}\n\nconst DIRECTIONS = ['top', 'right', 'bottom', 'left'];\n\ntype Direction = (typeof DIRECTIONS)[number];\n\nconst POWER_TO_ROTATE_MAP = {\n soft: 45,\n medium: 90,\n hard: 270,\n};\n\nfunction getRotateFrom(direction: Direction, rotate: number) {\n return {\n x: ROTATE_MAP[direction].x * rotate,\n y: ROTATE_MAP[direction].y * rotate,\n };\n}\n\nconst ROTATE_MAP: Record<Direction, { x: number; y: number }> = {\n top: { x: 1, y: 0 },\n right: { x: 0, y: 1 },\n bottom: { x: -1, y: 0 },\n left: { x: 0, y: -1 },\n};\n\nexport function web(options: TimeAnimationOptions, dom?: DomApi) {\n prepare(options, dom);\n\n return style(options);\n}\n\nexport function style(options: TimeAnimationOptions) {\n const { direction = 'top', power, initialRotate = 90 } = options.namedEffect as FlipIn;\n const [fadeIn, flipIn] = getNames(options);\n const rotate = (power && POWER_TO_ROTATE_MAP[power]) || initialRotate;\n const easing = options.easing || 'backOut';\n\n const from = getRotateFrom(direction, rotate);\n\n const custom = {\n '--motion-rotate-x': `${from.x}deg`,\n '--motion-rotate-y': `${from.y}deg`,\n };\n\n return [\n {\n ...options,\n easing: 'quadOut',\n name: fadeIn,\n custom: {},\n keyframes: [{ offset: 0, opacity: 0 }, { opacity: 'var(--comp-opacity, 1)' }],\n },\n {\n ...options,\n easing,\n name: flipIn,\n custom,\n keyframes: [\n {\n offset: INITIAL_FRAME_OFFSET,\n transform: `perspective(800px) rotate(var(--comp-rotate-z, 0deg)) rotateX(var(--motion-rotate-x , ${custom['--motion-rotate-x']})) rotateY(var(--motion-rotate-y , ${custom['--motion-rotate-y']}))`,\n },\n {\n transform: `perspective(800px) rotate(var(--comp-rotate-z, 0deg)) rotateX(0deg) rotateY(0deg)`,\n },\n ],\n },\n ];\n}\n\nexport function prepare(options: TimeAnimationOptions, dom?: DomApi) {\n const { direction = 'top', power, initialRotate = 90 } = options.namedEffect as FlipIn;\n\n const rotate = (power && POWER_TO_ROTATE_MAP[power]) || initialRotate;\n\n if (dom) {\n let adjustedDirection: string = direction;\n\n dom.measure((target) => {\n if (!target) {\n return;\n }\n\n const rotation = getComputedStyle(target).getPropertyValue('--comp-rotate-z') || '0deg';\n adjustedDirection = getAdjustedDirection(\n DIRECTIONS,\n direction,\n parseInt(rotation, 10),\n ) as (typeof DIRECTIONS)[number];\n });\n\n dom.mutate((target) => {\n const from = getRotateFrom(adjustedDirection, rotate);\n\n target?.style.setProperty('--motion-rotate-x', `${from.x}deg`);\n target?.style.setProperty('--motion-rotate-y', `${from.y}deg`);\n });\n }\n}\n","import type { TimeAnimationOptions, FloatIn } from '../../types';\nimport { INITIAL_FRAME_OFFSET, toKeyframeValue } from '../../utils';\n\nexport function getNames(_: TimeAnimationOptions) {\n return ['motion-floatIn'];\n}\n\nconst PARAMS_MAP = {\n top: { dx: 0, dy: -1, distance: 120 },\n right: { dx: 1, dy: 0, distance: 120 },\n bottom: { dx: 0, dy: 1, distance: 120 },\n left: { dx: -1, dy: 0, distance: 120 },\n};\n\nexport function web(options: TimeAnimationOptions) {\n return style(options, true);\n}\n\nexport function style(options: TimeAnimationOptions, asWeb = false) {\n const { direction = 'left' } = options.namedEffect as FloatIn;\n const [floatIn] = getNames(options);\n const fromParams = PARAMS_MAP[direction];\n\n const translateX = fromParams.dx * fromParams.distance;\n const translateY = fromParams.dy * fromParams.distance;\n\n const custom = {\n '--motion-translate-x': `${translateX}px`,\n '--motion-translate-y': `${translateY}px`,\n };\n\n return [\n {\n ...options,\n name: floatIn,\n easing: 'sineInOut',\n custom,\n keyframes: [\n {\n offset: 0,\n opacity: 0,\n easing: 'step-end',\n },\n {\n offset: INITIAL_FRAME_OFFSET,\n opacity: 0,\n transform: `translate(${toKeyframeValue(\n custom,\n '--motion-translate-x',\n asWeb,\n )}, ${toKeyframeValue(\n custom,\n '--motion-translate-y',\n asWeb,\n )}) rotate(var(--comp-rotate-z, 0deg))`,\n },\n {\n opacity: 'var(--comp-opacity, 1)',\n transform: 'translate(0, 0) rotate(var(--comp-rotate-z, 0deg))',\n },\n ],\n },\n ];\n}\n","import type { FoldIn, TimeAnimationOptions, DomApi } from '../../types';\nimport { getAdjustedDirection, INITIAL_FRAME_OFFSET } from '../../utils';\n\nexport function getNames(_: TimeAnimationOptions) {\n return ['motion-fadeIn', 'motion-foldIn'];\n}\n\nconst POWER_TO_ROTATE_MAP = {\n soft: 35,\n medium: 60,\n hard: 90,\n};\n\nconst DIRECTIONS = ['top', 'right', 'bottom', 'left'];\n\ntype Direction = (typeof DIRECTIONS)[number];\n\nconst PARAM_MAP: Record<Direction, { x: number; y: number; origin: { x: number; y: number } }> = {\n top: { x: -1, y: 0, origin: { x: 0, y: -50 } },\n right: { x: 0, y: -1, origin: { x: 50, y: 0 } },\n bottom: { x: 1, y: 0, origin: { x: 0, y: 50 } },\n left: { x: 0, y: 1, origin: { x: -50, y: 0 } },\n};\n\nfunction getRotateFrom(direction: Direction, rotate: number) {\n return {\n x: PARAM_MAP[direction].x * rotate,\n y: PARAM_MAP[direction].y * rotate,\n };\n}\n\nexport function web(options: TimeAnimationOptions, dom?: DomApi) {\n prepare(options, dom);\n\n return style(options);\n}\n\nexport function style(options: TimeAnimationOptions) {\n const { direction = 'top', power, initialRotate = 90 } = options.namedEffect as FoldIn;\n const [fadeIn, foldIn] = getNames(options);\n const easing = options.easing || 'backOut';\n const rotate = (power && POWER_TO_ROTATE_MAP[power]) || initialRotate;\n const { x, y } = PARAM_MAP[direction].origin;\n\n const from = getRotateFrom(direction, rotate);\n\n const custom = {\n '--motion-origin-x': `${x}%`,\n '--motion-origin-y': `${y}%`,\n '--motion-rotate-x': `${from.x}deg`,\n '--motion-rotate-y': `${from.y}deg`,\n };\n\n return [\n {\n ...options,\n easing: 'quadOut',\n name: fadeIn,\n custom: {},\n keyframes: [{ offset: 0, opacity: 0 }, { opacity: 'var(--comp-opacity, 1)' }],\n },\n {\n ...options,\n easing,\n name: foldIn,\n custom,\n keyframes: [\n {\n offset: INITIAL_FRAME_OFFSET,\n transform: `rotate(var(--comp-rotate-z, 0deg)) translate(var(--motion-origin-x ,${custom['--motion-origin-x']}), var(--motion-origin-y, ${custom['--motion-origin-y']})) perspective(800px) rotateX(var(--motion-rotate-x, ${custom['--motion-rotate-x']})) rotateY(var(--motion-rotate-y, ${custom['--motion-rotate-y']})) translate(calc(-1 * var(--motion-origin-x ,${custom['--motion-origin-x']})), calc(-1 * var(--motion-origin-y, ${custom['--motion-origin-y']})))`,\n },\n {\n transform: `rotate(var(--comp-rotate-z, 0deg)) translate(var(--motion-origin-x ,${custom['--motion-origin-x']}), var(--motion-origin-y, ${custom['--motion-origin-y']})) perspective(800px) rotateX(0deg) rotateY(0deg) translate(calc(-1 * var(--motion-origin-x ,${custom['--motion-origin-x']})), calc(-1 * var(--motion-origin-y, ${custom['--motion-origin-y']})))`,\n },\n ],\n },\n ];\n}\n\nexport function prepare(options: TimeAnimationOptions, dom?: DomApi) {\n const { direction = 'top', power, initialRotate = 90 } = options.namedEffect as FoldIn;\n const rotate = (power && POWER_TO_ROTATE_MAP[power]) || initialRotate;\n\n if (dom) {\n let adjustedDirection: Direction = direction;\n\n dom.measure((target) => {\n if (!target) {\n return;\n }\n\n const rotation = getComputedStyle(target).getPropertyValue('--comp-rotate-z') || '0deg';\n\n adjustedDirection = getAdjustedDirection(\n DIRECTIONS,\n direction,\n parseInt(rotation, 10),\n ) as Direction;\n });\n\n dom.mutate((target) => {\n const { origin } = PARAM_MAP[adjustedDirection];\n const newRotate = getRotateFrom(adjustedDirection, rotate);\n\n target?.style.setProperty('--motion-origin-x', `${origin.x}%`);\n target?.style.setProperty('--motion-origin-y', `${origin.y}%`);\n target?.style.setProperty('--motion-rotate-x', `${newRotate.x}deg`);\n target?.style.setProperty('--motion-rotate-y', `${newRotate.y}deg`);\n });\n }\n}\n","import type { AnimationExtraOptions, DomApi, TimeAnimationOptions, GlideIn } from '../../types';\nimport {\n getCssUnits,\n getOutOfScreenDistance,\n INITIAL_FRAME_OFFSET,\n toKeyframeValue,\n} from '../../utils';\n\nexport function getNames(_: TimeAnimationOptions) {\n return ['motion-glideIn'];\n}\n\nconst EASING_MAP = {\n soft: 'cubicInOut',\n medium: 'quintInOut',\n hard: 'backOut',\n};\n\nexport function web(options: TimeAnimationOptions & AnimationExtraOptions, dom?: DomApi) {\n prepare(options, dom);\n\n return style(options, true);\n}\n\nexport function style(options: TimeAnimationOptions, asWeb = false) {\n const {\n direction = 0,\n distance = { value: 100, type: 'percentage' },\n power,\n startFromOffScreen = false,\n } = options.namedEffect as GlideIn;\n const [glideIn] = getNames(options);\n\n const angleInRad = (direction * Math.PI) / 180;\n const unit = getCssUnits(distance.type);\n\n const easing = (power && EASING_MAP[power]) || options.easing || 'quintInOut';\n const { x, y } = getOutOfScreenDistance(direction);\n\n const translateX = startFromOffScreen\n ? x\n : `${(Math.sin(angleInRad) * distance.value) | 0}${unit}`;\n const translateY = startFromOffScreen\n ? y\n : `${(Math.cos(angleInRad) * distance.value * -1) | 0}${unit}`;\n\n const custom = {\n '--motion-translate-x': `${translateX}`,\n '--motion-translate-y': `${translateY}`,\n };\n\n return [\n {\n ...options,\n name: glideIn,\n easing,\n custom,\n keyframes: [\n {\n offset: 0,\n opacity: 0,\n easing: 'step-end',\n },\n {\n offset: INITIAL_FRAME_OFFSET,\n // TODO: remove opacity when not necessary to override hard-coded opacity:0 in style\n opacity: 'var(--comp-opacity, 1)',\n transform: `translate(${toKeyframeValue(\n custom,\n '--motion-translate-x',\n asWeb,\n )}, ${toKeyframeValue(\n custom,\n '--motion-translate-y',\n asWeb,\n )}) rotate(var(--comp-rotate-z, 0deg))`,\n },\n {\n opacity: 'var(--comp-opacity, 1)',\n transform: 'translate(0, 0) rotate(var(--comp-rotate-z, 0deg))',\n },\n ],\n },\n ];\n}\n\nexport function prepare(options: TimeAnimationOptions, dom?: DomApi) {\n const { startFromOffScreen = false } = options.namedEffect as GlideIn;\n\n if (dom && startFromOffScreen) {\n let left = 0;\n let top = 0;\n\n dom.measure((target) => {\n if (!target) {\n return;\n }\n\n const { left: targetLeft, top: targetTop } = target.getBoundingClientRect();\n left = targetLeft;\n top = targetTop;\n });\n\n dom.mutate((target) => {\n target?.style.setProperty('--motion-left', `${left}px`);\n target?.style.setProperty('--motion-top', `${top}px`);\n });\n }\n}\n","import { AnimationExtraOptions, DomApi, TimeAnimationOptions } from '../../types';\nimport type { GlitchIn } from '../../types';\nimport { web as glideInWeb, style as glideInStyle } from './GlideIn';\n\nexport { prepare, getNames } from './GlideIn';\n\nfunction getFixedDirection(options: TimeAnimationOptions) {\n // TODO replace with structuredClone() when possible\n const duplicate = JSON.parse(JSON.stringify(options));\n const { direction } = duplicate.namedEffect as GlitchIn;\n\n if ((duplicate.namedEffect as GlitchIn).startFromOffScreen) {\n (duplicate.namedEffect as GlitchIn).direction = (direction ?? 270) - 90;\n } else if (typeof direction === 'undefined') {\n (duplicate.namedEffect as GlitchIn).direction = 270;\n }\n\n return duplicate;\n}\n\nexport function web(options: TimeAnimationOptions & AnimationExtraOptions, dom?: DomApi) {\n return glideInWeb(getFixedDirection(options), dom);\n}\n\nexport function style(options: TimeAnimationOptions) {\n return glideInStyle(getFixedDirection(options));\n}\n","import type { GrowIn, TimeAnimationOptions } from '../../types';\nimport { getCssUnits, INITIAL_FRAME_OFFSET, toKeyframeValue } from '../../utils';\n\nexport function getNames(_: TimeAnimationOptions) {\n return ['motion-fadeIn', 'motion-growIn'];\n}\n\nconst SCALE_MAP = {\n soft: 0.8,\n medium: 0.6,\n hard: 0,\n};\n\nexport function web(options: TimeAnimationOptions) {\n return style(options, true);\n}\n\nexport function style(options: TimeAnimationOptions, asWeb = false) {\n const {\n power,\n initialScale = 0,\n distance = { value: 120, type: 'percentage' },\n direction = 0,\n } = options.namedEffect as GrowIn;\n const [fadeIn, growIn] = getNames(options);\n\n const easing = options.easing || 'cubicInOut';\n const scale = typeof power !== 'undefined' ? SCALE_MAP[power] : initialScale;\n const angleInRad = (direction * Math.PI) / 180;\n const unit = getCssUnits(distance.type);\n\n const x = `${(Math.sin(angleInRad) * distance.value) | 0}${unit}`;\n const y = `${(Math.cos(angleInRad) * distance.value * -1) | 0}${unit}`;\n\n const custom = {\n '--motion-translate-x': `${x}`,\n '--motion-translate-y': `${y}`,\n '--motion-scale': `${scale}`,\n };\n\n return [\n {\n ...options,\n easing,\n duration: options.duration! * scale,\n name: fadeIn,\n custom: {},\n keyframes: [{ offset: 0, opacity: 0 }, { opacity: 'var(--comp-opacity, 1)' }],\n },\n {\n ...options,\n easing,\n name: growIn,\n custom,\n keyframes: [\n {\n offset: INITIAL_FRAME_OFFSET,\n transform: `translate(${toKeyframeValue(\n custom,\n '--motion-translate-x',\n asWeb,\n )}, ${toKeyframeValue(\n custom,\n '--motion-translate-y',\n asWeb,\n )}) rotate(var(--comp-rotate-z, 0deg)) scale(${toKeyframeValue(\n custom,\n '--motion-scale',\n asWeb,\n )})`,\n },\n {\n transform: 'translate(0px, 0px) rotate(var(--comp-rotate-z, 0deg)) scale(1)',\n },\n ],\n },\n ];\n}\n","import { getEasingFamily, getEasing, toKeyframeValue, INITIAL_FRAME_OFFSET } from '../../utils';\nimport type { PunchIn, TimeAnimationOptions, DomApi } from '../../types';\nimport { cssEasings as easings } from '@wix/motion';\n\nexport function getNames(_: TimeAnimationOptions) {\n return ['motion-fadeIn', 'motion-punchIn'];\n}\n\nconst TRANSLATION_FACTORS_MAP: Record<PunchIn['direction'], { x: number; y: number }> = {\n 'top-left': { y: -1, x: -1 },\n 'top-right': { y: -1, x: 1 },\n 'bottom-right': { y: 1, x: 1 },\n 'bottom-left': { y: 1, x: -1 },\n center: { y: 0, x: 0 },\n};\n\nconst POWER_MAP = {\n soft: 'sineIn',\n medium: 'quadIn',\n hard: 'quintIn',\n};\n\nfunction getMidPoint(x: number, y: number, factor: number) {\n return {\n x: `calc(var(--motion-width, 100%) * 1.1 / 3 * ${x} * ${factor})`,\n y: `calc(var(--motion-height, 100%) * 1.1 / 3 * ${y} * ${factor})`,\n };\n}\n\nexport function web(options: TimeAnimationOptions, dom?: DomApi) {\n prepare(options, dom);\n\n return style(options, true);\n}\n\nexport function style(options: TimeAnimationOptions, asWeb = false) {\n const { direction = 'top-right', power = 'medium' } = options.namedEffect as PunchIn;\n const [fadeIn, punchIn] = getNames(options);\n const translationFactors = TRANSLATION_FACTORS_MAP[direction];\n\n const sourcePoint = {\n x: `calc(var(--motion-width, 100%) * 1.1 / 2 * ${translationFactors.x})`,\n y: `calc(var(--motion-height, 100%) * 1.1 / 2 * ${translationFactors.y})`,\n };\n\n const { in: _in, out: _out } = getEasingFamily(POWER_MAP[power]);\n\n const KEYFRAMES = [\n { offset: 30, scale: 0.3, factor: 1, ease: 'linear' },\n { offset: 45, scale: 1.4, factor: -0.4, ease: _out },\n { offset: 62.65, scale: 0.8, factor: 0.2, ease: _in },\n { offset: 77.27, scale: 1.1, factor: -0.1, ease: _out },\n { offset: 86.23, scale: 0.94, factor: 0.06, ease: _in },\n { offset: 91.73, scale: 1.03, factor: -0.03, ease: _out },\n { offset: 95.11, scale: 0.98, factor: 0.02, ease: _in },\n { offset: 97.18, scale: 1.01, factor: -0.01, ease: _out },\n { offset: 98.45, scale: 0.99, factor: 0.01, ease: _in },\n { offset: 100, scale: 1, factor: 0, ease: _out },\n ];\n\n const keyframes = KEYFRAMES.map(({ offset, scale, ease, factor }) => {\n const { x, y } = getMidPoint(translationFactors.x, translationFactors.y, factor);\n\n return {\n offset: offset / 100,\n easing: getEasing(ease),\n scale: `${scale}`,\n translate: `${x} ${y}`,\n };\n });\n\n const custom = {\n '--motion-translate': `${sourcePoint.x} ${sourcePoint.y}`,\n };\n\n return [\n {\n ...options,\n easing: 'cubicIn',\n duration: options.duration! * 0.3,\n name: fadeIn,\n custom: {},\n keyframes: [{ offset: 0, opacity: 0 }, { opacity: 'var(--comp-opacity, 1)' }],\n },\n {\n ...options,\n easing: 'linear',\n name: punchIn,\n custom,\n keyframes: [\n {\n offset: INITIAL_FRAME_OFFSET,\n translate: toKeyframeValue(custom, '--motion-translate', asWeb),\n scale: '0',\n // TODO: refactor easings\n easing: easings.expoIn,\n },\n ...keyframes,\n ],\n },\n ];\n}\n\nexport function prepare(_: TimeAnimationOptions, dom?: DomApi) {\n if (dom) {\n let width: number, height: number;\n\n dom.measure((target) => {\n if (!target) {\n return;\n }\n\n const rect = target.getBoundingClientRect();\n width = rect.width;\n height = rect.height;\n });\n\n dom.mutate((target) => {\n target?.style.setProperty('--motion-width', `${width}px`);\n target?.style.setProperty('--motion-height', `${height}px`);\n });\n }\n}\n","import type { Shape, ShapeIn, TimeAnimationOptions } from '../../types';\nimport { INITIAL_FRAME_OFFSET, toKeyframeValue } from '../../utils';\n\nexport function getNames(_: TimeAnimationOptions) {\n return ['motion-fadeIn', 'motion-shapeIn'];\n}\n\nconst shapes: Record<Shape, { start: string; end: string }> = {\n diamond: {\n start: 'polygon(50% 50%, 50% 50%, 50% 50%, 50% 50%)',\n end: 'polygon(50% -50%, 150% 50%, 50% 150%, -50% 50%)',\n },\n window: {\n start: 'inset(50% round 50% 50% 0% 0%)',\n end: 'inset(-20% round 50% 50% 0% 0%)',\n },\n rectangle: { start: 'inset(50%)', end: 'inset(0%)' },\n circle: { start: 'circle(0%)', end: 'circle(75%)' },\n ellipse: { start: 'ellipse(0% 0%)', end: 'ellipse(75% 75%)' },\n};\n\nexport function web(options: TimeAnimationOptions) {\n return style(options, true);\n}\n\nexport function style(options: TimeAnimationOptions, asWeb = false) {\n const { shape = 'rectangle' } = options.namedEffect as ShapeIn;\n const [fadeIn, shapeIn] = getNames(options);\n const easing = options.easing || 'cubicInOut';\n\n const { start, end } = shapes[shape];\n\n const custom = {\n '--motion-shape-start': start,\n '--motion-shape-end': end,\n };\n\n return [\n {\n ...options,\n name: fadeIn,\n easing: 'quadOut',\n duration: options.duration! * 0.8,\n custom: {},\n keyframes: [{ offset: 0, opacity: 0 }, { opacity: 'var(--comp-opacity, 1)' }],\n },\n {\n ...options,\n name: shapeIn,\n easing,\n custom,\n keyframes: [\n {\n offset: INITIAL_FRAME_OFFSET,\n clipPath: toKeyframeValue(custom, '--motion-shape-start', asWeb),\n },\n {\n clipPath: toKeyframeValue(custom, '--motion-shape-end', asWeb),\n },\n ],\n },\n ];\n}\n","import type { RevealIn, AnimationExtraOptions, DomApi, TimeAnimationOptions } from '../../types';\nimport type { Direction } from '../../utils';\nimport { getAdjustedDirection, getClipPolygonParams, INITIAL_FRAME_OFFSET } from '../../utils';\n\nexport function getNames(_: TimeAnimationOptions) {\n return ['motion-revealIn'];\n}\n\nconst DIRECTIONS = ['top', 'right', 'bottom', 'left'] as Direction[];\n\nfunction getClipStart(rotateZ: number, direction: Direction) {\n const clipDirection = getAdjustedDirection(\n DIRECTIONS,\n direction,\n rotateZ,\n ) as (typeof DIRECTIONS)[number];\n\n return getClipPolygonParams({\n direction: clipDirection,\n minimum: 0,\n });\n}\n\nexport function web(options: TimeAnimationOptions & AnimationExtraOptions, dom?: DomApi) {\n prepare(options, dom);\n\n return style(options);\n}\n\nexport function style(options: TimeAnimationOptions) {\n const { direction = 'left' } = options.namedEffect as RevealIn;\n const [revealIn] = getNames(options);\n const easing = options.easing || 'cubicInOut';\n\n const start = getClipStart(0, direction);\n const end = getClipPolygonParams({ direction: 'initial' });\n\n const custom = {\n '--motion-clip-start': start,\n };\n\n return [\n {\n ...options,\n easing,\n name: revealIn,\n custom,\n keyframes: [\n {\n offset: 0,\n opacity: 0,\n easing: 'step-end',\n },\n {\n offset: INITIAL_FRAME_OFFSET,\n opacity: 'var(--comp-opacity, 1)',\n clipPath: `var(--motion-clip-start, ${start})`,\n },\n {\n clipPath: end,\n },\n ],\n },\n ];\n}\n\nexport function prepare(options: TimeAnimationOptions, dom?: DomApi) {\n const { direction = 'left' } = options.namedEffect as RevealIn;\n\n if (dom) {\n let rotation = '0deg';\n\n dom.measure((target) => {\n if (!target) {\n return;\n }\n\n rotation = getComputedStyle(target).getPropertyValue('--comp-rotate-z') || '0deg';\n });\n\n dom.mutate((target_) => {\n target_?.style.setProperty(\n '--motion-clip-start',\n getClipStart(parseInt(rotation, 10), direction),\n );\n });\n }\n}\n","import type { SlideIn, AnimationExtraOptions, DomApi, TimeAnimationOptions } from '../../types';\nimport {\n getAdjustedDirection,\n getClipPolygonParams,\n INITIAL_FRAME_OFFSET,\n type Direction,\n} from '../../utils';\n\nexport function getNames(options: TimeAnimationOptions) {\n const { power } = options.namedEffect as SlideIn;\n return power !== 'hard' ? ['motion-slideIn', 'motion-fadeIn'] : ['motion-slideIn'];\n}\n\nconst PARAM_MAP = {\n top: { dx: 0, dy: -1, clip: 'bottom' },\n right: { dx: 1, dy: 0, clip: 'left' },\n bottom: { dx: 0, dy: 1, clip: 'top' },\n left: { dx: -1, dy: 0, clip: 'right' },\n};\n\nconst DIRECTIONS = ['top', 'right', 'bottom', 'left'] as (keyof typeof PARAM_MAP)[];\n\nconst INITIAL_TRANSLATE_MAP = {\n soft: 0.2,\n medium: 0.8,\n hard: 1,\n};\n\nexport function web(options: TimeAnimationOptions & AnimationExtraOptions, dom?: DomApi) {\n const animations = style(options);\n\n prepare(options, dom);\n\n return animations;\n}\n\nexport function style(options: TimeAnimationOptions) {\n const { direction = 'left', power, initialTranslate = 1 } = options.namedEffect as SlideIn;\n const [slideIn, fadeIn] = getNames(options);\n\n const easing = options.easing || 'cubicInOut';\n const scale = (power && INITIAL_TRANSLATE_MAP[power]) || initialTranslate;\n const minimum = 100 - scale * 100;\n\n const start = getClipPolygonParams({\n direction,\n minimum,\n });\n const clipEnd = getClipPolygonParams({ direction: 'initial' });\n\n const custom = {\n '--motion-clip-start': start,\n '--motion-translate-x': `${PARAM_MAP[direction].dx * 100}%`,\n '--motion-translate-y': `${PARAM_MAP[direction].dy * 100}%`,\n };\n\n const animations = [\n {\n ...options,\n name: slideIn,\n easing,\n custom,\n keyframes: [\n {\n offset: INITIAL_FRAME_OFFSET,\n opacity: 'var(--comp-opacity, 1)',\n transform: `rotate(var(--comp-rotate-z, 0deg)) translate(var(--motion-translate-x, -100%), var(--motion-translate-y, 0%))`,\n clipPath: `var(--motion-clip-start, ${custom['--motion-clip-start']})`,\n },\n {\n transform: 'rotate(var(--comp-rotate-z, 0deg)) translate(0px, 0px)',\n clipPath: clipEnd,\n },\n ],\n },\n ];\n\n if (power !== 'hard') {\n animations.push({\n ...options,\n easing: 'cubicInOut',\n name: fadeIn,\n // @ts-expect-error\n custom: {},\n keyframes: [\n // @ts-expect-error\n { offset: 0, opacity: 0 },\n // @ts-expect-error\n { opacity: 'var(--comp-opacity, 1)' },\n ],\n });\n } else {\n animations[0].keyframes.unshift({\n offset: 0,\n // @ts-expect-error\n opacity: 0,\n easing: 'step-end',\n });\n }\n\n return animations;\n}\n\nexport function prepare(options: TimeAnimationOptions, dom?: DomApi) {\n const { direction = 'left', power, initialTranslate = 1 } = options.namedEffect as SlideIn;\n\n const scale = (power && INITIAL_TRANSLATE_MAP[power]) || initialTranslate;\n const minimum = 100 - scale * 100;\n\n if (dom) {\n let rotation = 0;\n\n dom.measure((target) => {\n if (!target) {\n return;\n }\n rotation = parseInt(\n getComputedStyle(target).getPropertyValue('--comp-rotate-z') || '0deg',\n 10,\n );\n });\n\n dom.mutate((target) => {\n const adjustedDirection = getAdjustedDirection(\n DIRECTIONS,\n direction,\n rotation,\n ) as (typeof DIRECTIONS)[number];\n\n target?.style.setProperty(\n '--motion-clip-start',\n getClipPolygonParams({\n direction: PARAM_MAP[adjustedDirection].clip as Direction,\n minimum,\n }),\n );\n target?.style.setProperty(\n '--motion-translate-x',\n `${PARAM_MAP[adjustedDirection].dx * 100}%`,\n );\n target?.style.setProperty(\n '--motion-translate-y',\n `${PARAM_MAP[adjustedDirection].dy * 100}%`,\n );\n });\n }\n}\n","import type { SpinIn, AnimationExtraOptions, TimeAnimationOptions } from '../../types';\nimport { INITIAL_FRAME_OFFSET, toKeyframeValue } from '../../utils';\n\nexport function getNames(_: TimeAnimationOptions) {\n return ['motion-fadeIn', 'motion-spinIn'];\n}\n\nconst SCALE_MAP = {\n soft: 1,\n medium: 0.6,\n hard: 0,\n};\n\nconst DIRECTION_MAP = {\n clockwise: -1,\n 'counter-clockwise': 1,\n};\n\nexport function web(options: TimeAnimationOptions & AnimationExtraOptions) {\n return style(options, true);\n}\n\nexport function style(options: TimeAnimationOptions, asWeb = false) {\n const {\n direction = 'clockwise',\n spins = 0.5,\n initialScale = 0,\n power,\n } = options.namedEffect as SpinIn;\n const [fadeIn, spinIn] = getNames(options);\n\n const easing = options.easing || 'cubicInOut';\n const scale = typeof power !== 'undefined' ? SCALE_MAP[power] : initialScale;\n const transformRotate = (DIRECTION_MAP[direction] > 0 ? 1 : -1) * 360 * spins;\n\n const custom = {\n '--motion-scale': `${scale}`,\n '--motion-rotate': `${transformRotate}deg`,\n };\n\n return [\n {\n ...options,\n name: fadeIn,\n easing: 'cubicIn',\n duration: options.duration! * scale,\n custom: {},\n keyframes: [{ offset: 0, opacity: 0 }, { opacity: 'var(--comp-opacity, 1)' }],\n },\n {\n ...options,\n name: spinIn,\n easing,\n custom,\n keyframes: [\n {\n offset: INITIAL_FRAME_OFFSET,\n scale: toKeyframeValue(custom, '--motion-scale', asWeb),\n rotate: toKeyframeValue(custom, '--motion-rotate', asWeb),\n },\n {\n scale: '1',\n rotate: `0deg`,\n },\n ],\n },\n ];\n}\n","import {\n getAdjustedDirection,\n getClipPolygonParams,\n INITIAL_FRAME_OFFSET,\n toKeyframeValue,\n} from '../../utils';\nimport type { TiltIn, TimeAnimationOptions, DomApi } from '../../types';\n\nexport function getNames(_: TimeAnimationOptions) {\n return ['motion-fadeIn', 'motion-tiltInRotate', 'motion-tiltInClip'];\n}\n\nconst ROTATION_MAP = {\n left: 30,\n right: -30,\n};\n\nconst DIRECTIONS = ['top', 'right', 'bottom', 'left'] as (keyof typeof ROTATION_MAP)[];\n\nfunction getClipStart(rotateZ: number) {\n const clipDirection = getAdjustedDirection(\n DIRECTIONS,\n 'top',\n rotateZ,\n ) as (typeof DIRECTIONS)[number];\n\n return getClipPolygonParams({\n direction: clipDirection,\n minimum: 0,\n });\n}\n\nexport function web(options: TimeAnimationOptions, dom?: DomApi) {\n prepare(options, dom);\n\n return style(options, true);\n}\n\nexport function style(options: TimeAnimationOptions, asWeb = false) {\n const { direction = 'left' } = options.namedEffect as TiltIn;\n const [fadeIn, tiltInRotate, tiltInClip] = getNames(options);\n\n const easing = options.easing || 'cubicOut';\n const clipStart = getClipStart(0);\n const rotationZ = ROTATION_MAP[direction];\n const clipEnd = getClipPolygonParams({ direction: 'initial' });\n const translateZ = '(var(--motion-height, 200px) / 2)';\n\n const clipCustom = {\n '--motion-rotate-z': `${rotationZ}deg`,\n '--motion-clip-start': clipStart,\n };\n\n return [\n {\n ...options,\n name: fadeIn,\n duration: options.duration! * 0.2,\n easing: 'cubicOut',\n custom: {},\n keyframes: [{ offset: 0, opacity: 0 }, { opacity: 'var(--comp-opacity, 1)' }],\n },\n {\n ...options,\n name: tiltInRotate,\n easing,\n custom: {},\n keyframes: [\n {\n offset: 0,\n easing: 'step-end',\n transform: 'perspective(800px)',\n },\n {\n offset: INITIAL_FRAME_OFFSET,\n transform: `perspective(800px) translateZ(calc(${translateZ} * -1)) rotateX(-90deg) translateZ(calc${translateZ}) rotate(var(--comp-rotate-z, 0deg))`,\n },\n {\n transform: `perspective(800px) translateZ(calc(${translateZ} * -1)) rotateX(0deg) translateZ(calc${translateZ}) rotate(var(--comp-rotate-z, 0deg))`,\n },\n ],\n },\n {\n ...options,\n name: tiltInClip,\n easing,\n composite: 'add' as const,\n duration: options.duration! * 0.8,\n custom: clipCustom,\n keyframes: [\n {\n offset: INITIAL_FRAME_OFFSET,\n clipPath: `var(--motion-clip-start, ${clipCustom['--motion-clip-start']})`,\n transform: `rotateZ(${toKeyframeValue(clipCustom, '--motion-rotate-z', asWeb)})`,\n },\n {\n clipPath: clipEnd,\n transform: `rotateZ(0deg)`,\n },\n ],\n },\n ];\n}\n\nexport function prepare(_: TimeAnimationOptions, dom?: DomApi) {\n if (dom) {\n let rotation = '0deg';\n\n dom.measure((target) => {\n if (!target) {\n return;\n }\n rotation = getComputedStyle(target).getPropertyValue('--comp-rotate-z') || '0deg';\n });\n\n dom.mutate((target_) => {\n target_?.style.setProperty('--motion-clip-start', getClipStart(parseInt(rotation, 10)));\n });\n }\n}\n","import type { TurnIn, TimeAnimationOptions, EffectFourCorners } from '../../types';\nimport { INITIAL_FRAME_OFFSET, toKeyframeValue } from '../../utils';\n\nexport function getNames(_: TimeAnimationOptions) {\n return ['motion-fadeIn', 'motion-turnIn'];\n}\n\nconst EASING_MAP = {\n soft: 'cubicInOut',\n medium: 'quintInOut',\n hard: 'backOut',\n};\n\nconst DIRECTION_TO_TRANSFORM_MAP: Record<\n EffectFourCorners,\n {\n x: number;\n y: number;\n angle?: number;\n }\n> = {\n 'top-left': {\n angle: -50,\n x: -50,\n y: -50,\n },\n 'top-right': {\n angle: 50,\n x: 50,\n y: -50,\n },\n 'bottom-right': {\n angle: 50,\n x: 50,\n y: 50,\n },\n 'bottom-left': {\n angle: -50,\n x: -50,\n y: 50,\n },\n};\n\nexport function web(options: TimeAnimationOptions) {\n return style(options, true);\n}\n\nexport function style(options: TimeAnimationOptions, asWeb = false) {\n const { direction = 'top-left', power } = options.namedEffect as TurnIn;\n const [fadeIn, turnIn] = getNames(options);\n\n const easing = power && EASING_MAP[power] ? EASING_MAP[power] : options.easing || 'backOut';\n const { x, y } = DIRECTION_TO_TRANSFORM_MAP[direction];\n const transformRotate = DIRECTION_TO_TRANSFORM_MAP[direction].angle;\n\n const custom = {\n '--motion-origin': `${x}%, ${y}%`,\n '--motion-origin-invert': `${-x}%, ${-y}%`,\n '--motion-rotate-z': `${transformRotate}deg`,\n };\n\n const origin = toKeyframeValue(custom, '--motion-origin', asWeb);\n const invertedOrigin = toKeyframeValue(custom, '--motion-origin-invert', asWeb);\n\n return [\n {\n ...options,\n name: fadeIn,\n duration: options.duration! * 0.6,\n easing: 'sineIn',\n custom: {},\n keyframes: [{ offset: 0, opacity: 0 }, { opacity: 'var(--comp-opacity, 1)' }],\n },\n {\n ...options,\n name: turnIn,\n easing,\n custom,\n keyframes: [\n {\n offset: INITIAL_FRAME_OFFSET,\n transform: `translate(${origin}) rotate(${toKeyframeValue(\n custom,\n '--motion-rotate-z',\n asWeb,\n )}) translate(${invertedOrigin}) rotate(var(--comp-rotate-z, 0deg))`,\n },\n {\n transform: `translate(${origin}) rotate(0deg) translate(${invertedOrigin}) rotate(var(--comp-rotate-z, 0deg))`,\n },\n ],\n },\n ];\n}\n","import { getClipPolygonParams, getAdjustedDirection, INITIAL_FRAME_OFFSET } from '../../utils';\nimport type { WinkIn, TimeAnimationOptions, DomApi } from '../../types';\n\nexport function getNames(_: TimeAnimationOptions) {\n return ['motion-fadeIn', 'motion-winkInClip', 'motion-winkInRotate'];\n}\n\nconst PARAM_MAP = {\n vertical: { scaleY: 0, scaleX: 1 },\n horizontal: { scaleY: 1, scaleX: 0 },\n};\nconst DIRECTIONS = ['vertical', 'horizontal'] as (keyof typeof PARAM_MAP)[];\n\nexport function web(options: TimeAnimationOptions, dom?: DomApi) {\n prepare(options, dom);\n\n return style(options);\n}\n\nexport function style(options: TimeAnimationOptions) {\n const { direction = 'horizontal' } = options.namedEffect as WinkIn;\n const [fadeIn, winkInClip, winkInRotate] = getNames(options);\n\n const adjustedDirection = getAdjustedDirection(\n DIRECTIONS,\n direction,\n 0,\n ) as (typeof DIRECTIONS)[number];\n const { scaleX, scaleY } = PARAM_MAP[adjustedDirection];\n const easing = options.easing || 'quintInOut';\n\n const start = getClipPolygonParams({ direction, minimum: 100 });\n const end = getClipPolygonParams({ direction: 'initial' });\n\n const custom = {\n '--motion-scale-x': scaleX,\n '--motion-scale-y': scaleY,\n '--motion-clip-start': start,\n };\n\n return [\n {\n ...options,\n easing: 'quadOut',\n name: fadeIn,\n custom: {},\n keyframes: [{ offset: 0, opacity: 0 }, { opacity: 'var(--comp-opacity, 1)' }],\n },\n {\n ...options,\n easing,\n name: winkInClip,\n custom,\n keyframes: [\n {\n offset: INITIAL_FRAME_OFFSET,\n clipPath: `var(--motion-clip-start, ${custom['--motion-clip-start']})`,\n },\n {\n clipPath: end,\n },\n ],\n },\n {\n ...options,\n duration: options.duration! * 0.85,\n easing,\n name: winkInRotate,\n custom,\n keyframes: [\n {\n offset: INITIAL_FRAME_OFFSET,\n transform: `rotate(var(--comp-rotate-z, 0deg)) scale(var(--motion-scale-x, ${custom['--motion-scale-x']}), var(--motion-scale-y, ${custom['--motion-scale-y']}))`,\n },\n {\n transform: 'rotate(var(--comp-rotate-z, 0deg)) scale(1, 1)',\n },\n ],\n },\n ];\n}\n\nexport function prepare(options: TimeAnimationOptions, dom?: DomApi) {\n const { direction = 'horizontal' } = options.namedEffect as WinkIn;\n\n if (dom) {\n let scale = PARAM_MAP.horizontal;\n let rotatedClip = getClipPolygonParams({\n direction: 'horizontal',\n minimum: 100,\n });\n\n dom.measure((target) => {\n if (!target) {\n return;\n }\n\n const rotation = getComputedStyle(target).getPropertyValue('--comp-rotate-z') || '0';\n const rotatedDirection = getAdjustedDirection(\n DIRECTIONS,\n direction,\n parseInt(rotation, 10),\n ) as (typeof DIRECTIONS)[number];\n scale = PARAM_MAP[rotatedDirection];\n rotatedClip = getClipPolygonParams({\n direction: rotatedDirection,\n minimum: 100,\n });\n });\n\n dom.mutate((target) => {\n target?.style.setProperty('--motion-clip-start', rotatedClip);\n target?.style.setProperty('--motion-scale-x', `${scale.scaleX}`);\n target?.style.setProperty('--motion-scale-y', `${scale.scaleY}`);\n });\n }\n}\n"],"names":["INITIAL_FRAME_OFFSET","mapRange","sourceMin","sourceMax","targetMin","targetMax","num","distance2d","x1","y1","x2","y2","getAngleInDeg","p1","p2","offset","angle","CLIP_POLYGON_TEMPLATES","top","bottom","left","right","minimum","centerX","centerY","getClipPolygonParams","direction","scaleX","scaleY","INITIAL_CLIP","FOUR_DIRECTIONS","getRevealClipFrom","range","getOppositeDirection","getRevealClipTo","applyRotationAdjustedClip","dom","target","rotation","adjDirection","getAdjustedDirection","availableDirections","angleInDeg","index","length","shiftBy","newIndex","transformPolarToXY","distance","radians","x","y","getCssUnits","type","getEasing","easing","cssEasings","getEasingFamily","ease","MOUSE_TRANSITION_EASING_MAP","getMouseTransitionEasing","value","getOutOfScreenDistance","angleInRad","angleCos","angleSin","xDirection","yDirection","xDistance","yDistance","hypotenuse","hypotX","hypotY","getElementOffset","element","parent","offsetParent","generateShuttersClipPath","shutterCount","staggered","isTopOrLeft","iterStart","iterEnd","inc","isVerticalPath","clipPathStart","clipPathEnd","i","shutterEndPosInPercentage","clipStart","clipEnd","staggerFactor","getShuttersClipPaths","reverse","start","end","roundNumber","precision","toKeyframeValue","custom","key","useValue","fallback","getTimingFactor","duration","delay","asString","duration_","timingFactor","CustomMouse","options","v","active","create","paramsMap","AiryMouseAnimation","progressX","progressY","translateX","translateY","invert","axis","rotate","units","transitionDuration","transitionEasing","power","inverted","animationOptions","BlobMouseAnimation","scale","BlurMouseAnimation","blur","perspective","maxScale","rotateX","rotateY","transform","progressDistance","filter","quadInOut","easingMap","TrackMouseAnimation","createTrack","ScaleMouseAnimation","scaleBoth","scaleDirection","SkewMouseAnimation","skewX","skewY","circInOut","SpinMouseAnimation","transformOrigins","SwivelMouseAnimation","rotateAxis","progress","invertVertical","pivotAxis","Tilt3DMouseAnimation","Track3DMouseAnimation","measureCompHeight","measures","assignToCss","getMasterPage","getWixAdsHeight","wixAds","getSiteHeight","masterPage","measureSiteHeight","getScaleFromPerspectiveAndZ","z","getNames","_","prepare","web","style","asWeb","bgCloseUpOpacity","bgCloseUpZoom","isOut","bgFade","bgFadeBackOpacity","bgFadeBackScale","PERSPECTIVE","stretch","zoom","bgFake3DParallax","bgFake3DStretch","bgFake3DZoom","speed","offsetPercentage","bgPan","bgParallax","bgPullBack","_options","bgRotate","bgSkew","DEFAULT_ZOOM","ZOOM_OUT_FACTOR","DIRECTION_TO_PARAMS","names","isIn","fromY","fromZ","toZ","toScale","animations","animation","isPage","imageParallax","POWER_TO_BOUNCE_FACTOR_MAP","TRANSLATE_Y_KEYFRAMES","_dom","intensity","name","bounceFactor","keyframes","keyframe","DIRECTION_MAP","FACTORS_SEQUENCE","totalDurationWithDelay","breatheX","breatheY","breatheZ","breathePerspective","breatheDistance","currentOffset","translateFactor","timeFactor","keyframeOffset","distancePart","FOUR_DIRECTIONS_TRANSLATIONS","RIGHT","LEFT","TOP","BOTTOM","FOUR_CORNERS_TRANSLATIONS","TRANSLATE_BY_DIRECTION_MAP","GET_OFFSET_BY_DIRECTION_MAP","width","parentWidth","height","parentHeight","leftDistance","topDistance","rightDistance","bottomDistance","generateTranslate","_from","_to","fromYFactor","toYFactor","fromXFactor","toXFactor","targetWidth","targetHeight","parentRect","toDurationOffset","from","to","cornerFromTo","_asWeb","POWER_EASING_MAP","rotationAxes","rotateStart","rotateEnd","POWER_TO_ROTATION_FACTOR_MAP","MIN_ROTATE_ANGLE","KEYFRAME_FACTORS","isResponsive","origin","rotateTransform","transformLeft","transformRight","getTransform","fold","frameFactor","transform_0","POWER_TO_JELLO_FACTOR_MAP","SKEW_Y_KEYFRAMES","responsiveJelloFactor","TRANSLATE_KEYFRAMES","POWER_TO_POKE_FACTOR_MAP","responsivePokeFactor","pokeFactor","translate","translateValue","POWER_TO_RUBBER_OFFSET_MAP","SCALE_KEYFRAMES","responsiveRubberOffset","rubberOffset","isLastKeyframe","isEvenKeyframe","adjustedScaleX","adjustedScaleY","scaleXKey","scaleYKey","POWER_TO_PULSE_OFFSET_MAP","responsivePulseOffset","POWER_TO_SWING_FACTOR_MAP","TRANSLATE_DISTANCE","swing","swingDeg","totalDuration","translateBefore","translateAfter","factor","POWER_TO_WIGGLE_FACTOR_MAP","TRANSFORM_KEYFRAMES","responsiveWiggleFactor","wiggleFactor","currentRotation","transY","accRotate","rotateValue","translateYValue","rotateKey","translateYKey","ROTATION","fill","rotAxisString","fromValue","toValue","arcScroll","BLUR_POWER_MAP","blurFactor","blurScroll","opacity","fadeScroll","ROTATE_POWER_MAP","flipValue","flipScroll","MAX_Y_TRAVEL","POWER_MAP","directionMap","scaleFrom","scaleTo","travelY","travel","fromValues","toValues","startOffsetAdd","endOffsetAdd","trnsX","trnsY","growScroll","config","inputDistance","travelX","unit","moveScroll","startFromOffScreen","startX","endX","startXLeft","endXLeft","panScroll","DEFAULT_SPEED","parallaxScroll","revealScroll","SHAPES","RESPONSIVE_SHAPES_MAP","clipFactor","clip","clipNeg","shape","shapeScroll","shutters","directionOpp","shuttersScroll","oppClipStart","oppClipEnd","secondOffset","shrinkScroll","skew","skewPanScroll","DIRECTION_TRANSLATION_MAP","oppositeDirection","translateFrom","translateTo","slideScroll","rotationZ","spin3dScroll","spins","scaleFactor","spinDirection","spinScroll","opacityKeyframesMap","stretchScrollScale","stretchScrollOpacity","roundedScaleX","roundedScaleY","stretchKeyframes","frame","easings","ROTATION_X","ROTATION_Y","ROTATION_Z","TRANSLATE_Y_POWER_MAP","dir","tiltScrollTranslate","tiltScrollRotate","ELEMENT_ROTATION","spin","turnScroll","ROTATION_ANGLE","EASING_MAP","fadeIn","arcIn","sign","rect","blurIn","shuttersIn","easeIn","easeOut","BOUNCE_KEYFRAMES","TRANSLATE_DIRECTION_MAP","bounceIn","distanceFactor","easeIn_","easeOut_","distanceFactor_","perspective_","directionX","directionY","directionZ","PARAMS_MAP","curveIn","rotationX","rotationY","circleXIn","circleYIn","customX","customY","initialScale","dropIn","SCALE_MAP","TRANSFORM_ORIGIN_MAP","expandIn","scale_","transX","DIRECTIONS","POWER_TO_ROTATE_MAP","getRotateFrom","ROTATE_MAP","initialRotate","flipIn","adjustedDirection","floatIn","fromParams","PARAM_MAP","foldIn","newRotate","glideIn","targetLeft","targetTop","getFixedDirection","duplicate","glideInWeb","glideInStyle","growIn","TRANSLATION_FACTORS_MAP","getMidPoint","punchIn","translationFactors","sourcePoint","_in","_out","shapes","shapeIn","getClipStart","rotateZ","clipDirection","revealIn","target_","INITIAL_TRANSLATE_MAP","initialTranslate","slideIn","spinIn","transformRotate","ROTATION_MAP","tiltInRotate","tiltInClip","translateZ","clipCustom","DIRECTION_TO_TRANSFORM_MAP","turnIn","invertedOrigin","winkInClip","winkInRotate","rotatedClip","rotatedDirection"],"mappings":"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"}