@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.
- package/dist/cjs/motion-presets.js +2 -0
- package/dist/cjs/motion-presets.js.map +1 -0
- package/dist/cjs/types.js +2 -0
- package/dist/cjs/types.js.map +1 -0
- package/dist/es/motion-presets.js +5411 -0
- package/dist/es/motion-presets.js.map +1 -0
- package/dist/es/types.js +2 -0
- package/dist/es/types.js.map +1 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -0
- package/dist/types/index.d.ts +6 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/library/backgroundScroll/BgCloseUp.d.ts +131 -0
- package/dist/types/library/backgroundScroll/BgCloseUp.d.ts.map +1 -0
- package/dist/types/library/backgroundScroll/BgFade.d.ts +71 -0
- package/dist/types/library/backgroundScroll/BgFade.d.ts.map +1 -0
- package/dist/types/library/backgroundScroll/BgFadeBack.d.ts +133 -0
- package/dist/types/library/backgroundScroll/BgFadeBack.d.ts.map +1 -0
- package/dist/types/library/backgroundScroll/BgFake3D.d.ts +130 -0
- package/dist/types/library/backgroundScroll/BgFake3D.d.ts.map +1 -0
- package/dist/types/library/backgroundScroll/BgPan.d.ts +68 -0
- package/dist/types/library/backgroundScroll/BgPan.d.ts.map +1 -0
- package/dist/types/library/backgroundScroll/BgParallax.d.ts +68 -0
- package/dist/types/library/backgroundScroll/BgParallax.d.ts.map +1 -0
- package/dist/types/library/backgroundScroll/BgPullBack.d.ts +68 -0
- package/dist/types/library/backgroundScroll/BgPullBack.d.ts.map +1 -0
- package/dist/types/library/backgroundScroll/BgReveal.d.ts +8 -0
- package/dist/types/library/backgroundScroll/BgReveal.d.ts.map +1 -0
- package/dist/types/library/backgroundScroll/BgRotate.d.ts +53 -0
- package/dist/types/library/backgroundScroll/BgRotate.d.ts.map +1 -0
- package/dist/types/library/backgroundScroll/BgSkew.d.ts +68 -0
- package/dist/types/library/backgroundScroll/BgSkew.d.ts.map +1 -0
- package/dist/types/library/backgroundScroll/BgZoom.d.ts +8 -0
- package/dist/types/library/backgroundScroll/BgZoom.d.ts.map +1 -0
- package/dist/types/library/backgroundScroll/ImageParallax.d.ts +69 -0
- package/dist/types/library/backgroundScroll/ImageParallax.d.ts.map +1 -0
- package/dist/types/library/backgroundScroll/index.d.ts +13 -0
- package/dist/types/library/backgroundScroll/index.d.ts.map +1 -0
- package/dist/types/library/backgroundScroll/utils.d.ts +10 -0
- package/dist/types/library/backgroundScroll/utils.d.ts.map +1 -0
- package/dist/types/library/entrance/ArcIn.d.ts +102 -0
- package/dist/types/library/entrance/ArcIn.d.ts.map +1 -0
- package/dist/types/library/entrance/BlurIn.d.ts +91 -0
- package/dist/types/library/entrance/BlurIn.d.ts.map +1 -0
- package/dist/types/library/entrance/BounceIn.d.ts +111 -0
- package/dist/types/library/entrance/BounceIn.d.ts.map +1 -0
- package/dist/types/library/entrance/CircleIn.d.ts +122 -0
- package/dist/types/library/entrance/CircleIn.d.ts.map +1 -0
- package/dist/types/library/entrance/CurveIn.d.ts +74 -0
- package/dist/types/library/entrance/CurveIn.d.ts.map +1 -0
- package/dist/types/library/entrance/DropIn.d.ts +97 -0
- package/dist/types/library/entrance/DropIn.d.ts.map +1 -0
- package/dist/types/library/entrance/ExpandIn.d.ts +102 -0
- package/dist/types/library/entrance/ExpandIn.d.ts.map +1 -0
- package/dist/types/library/entrance/FadeIn.d.ts +47 -0
- package/dist/types/library/entrance/FadeIn.d.ts.map +1 -0
- package/dist/types/library/entrance/FlipIn.d.ts +100 -0
- package/dist/types/library/entrance/FlipIn.d.ts.map +1 -0
- package/dist/types/library/entrance/FloatIn.d.ts +73 -0
- package/dist/types/library/entrance/FloatIn.d.ts.map +1 -0
- package/dist/types/library/entrance/FoldIn.d.ts +104 -0
- package/dist/types/library/entrance/FoldIn.d.ts.map +1 -0
- package/dist/types/library/entrance/GlideIn.d.ts +74 -0
- package/dist/types/library/entrance/GlideIn.d.ts.map +1 -0
- package/dist/types/library/entrance/GlitchIn.d.ts +73 -0
- package/dist/types/library/entrance/GlitchIn.d.ts.map +1 -0
- package/dist/types/library/entrance/GrowIn.d.ts +101 -0
- package/dist/types/library/entrance/GrowIn.d.ts.map +1 -0
- package/dist/types/library/entrance/PunchIn.d.ts +106 -0
- package/dist/types/library/entrance/PunchIn.d.ts.map +1 -0
- package/dist/types/library/entrance/RevealIn.d.ts +72 -0
- package/dist/types/library/entrance/RevealIn.d.ts.map +1 -0
- package/dist/types/library/entrance/ShapeIn.d.ts +99 -0
- package/dist/types/library/entrance/ShapeIn.d.ts.map +1 -0
- package/dist/types/library/entrance/ShuttersIn.d.ts +73 -0
- package/dist/types/library/entrance/ShuttersIn.d.ts.map +1 -0
- package/dist/types/library/entrance/SlideIn.d.ts +66 -0
- package/dist/types/library/entrance/SlideIn.d.ts.map +1 -0
- package/dist/types/library/entrance/SpinIn.d.ts +103 -0
- package/dist/types/library/entrance/SpinIn.d.ts.map +1 -0
- package/dist/types/library/entrance/TiltIn.d.ts +162 -0
- package/dist/types/library/entrance/TiltIn.d.ts.map +1 -0
- package/dist/types/library/entrance/TurnIn.d.ts +101 -0
- package/dist/types/library/entrance/TurnIn.d.ts.map +1 -0
- package/dist/types/library/entrance/WinkIn.d.ts +154 -0
- package/dist/types/library/entrance/WinkIn.d.ts.map +1 -0
- package/dist/types/library/entrance/index.d.ts +24 -0
- package/dist/types/library/entrance/index.d.ts.map +1 -0
- package/dist/types/library/mouse/AiryMouse.d.ts +9 -0
- package/dist/types/library/mouse/AiryMouse.d.ts.map +1 -0
- package/dist/types/library/mouse/BlobMouse.d.ts +9 -0
- package/dist/types/library/mouse/BlobMouse.d.ts.map +1 -0
- package/dist/types/library/mouse/BlurMouse.d.ts +9 -0
- package/dist/types/library/mouse/BlurMouse.d.ts.map +1 -0
- package/dist/types/library/mouse/BounceMouse.d.ts +11 -0
- package/dist/types/library/mouse/BounceMouse.d.ts.map +1 -0
- package/dist/types/library/mouse/CustomMouse.d.ts +13 -0
- package/dist/types/library/mouse/CustomMouse.d.ts.map +1 -0
- package/dist/types/library/mouse/ScaleMouse.d.ts +9 -0
- package/dist/types/library/mouse/ScaleMouse.d.ts.map +1 -0
- package/dist/types/library/mouse/SkewMouse.d.ts +9 -0
- package/dist/types/library/mouse/SkewMouse.d.ts.map +1 -0
- package/dist/types/library/mouse/SpinMouse.d.ts +10 -0
- package/dist/types/library/mouse/SpinMouse.d.ts.map +1 -0
- package/dist/types/library/mouse/SwivelMouse.d.ts +9 -0
- package/dist/types/library/mouse/SwivelMouse.d.ts.map +1 -0
- package/dist/types/library/mouse/Tilt3DMouse.d.ts +9 -0
- package/dist/types/library/mouse/Tilt3DMouse.d.ts.map +1 -0
- package/dist/types/library/mouse/Track3DMouse.d.ts +9 -0
- package/dist/types/library/mouse/Track3DMouse.d.ts.map +1 -0
- package/dist/types/library/mouse/TrackMouse.d.ts +9 -0
- package/dist/types/library/mouse/TrackMouse.d.ts.map +1 -0
- package/dist/types/library/mouse/index.d.ts +13 -0
- package/dist/types/library/mouse/index.d.ts.map +1 -0
- package/dist/types/library/ongoing/Bounce.d.ts +61 -0
- package/dist/types/library/ongoing/Bounce.d.ts.map +1 -0
- package/dist/types/library/ongoing/Breathe.d.ts +64 -0
- package/dist/types/library/ongoing/Breathe.d.ts.map +1 -0
- package/dist/types/library/ongoing/Cross.d.ts +34 -0
- package/dist/types/library/ongoing/Cross.d.ts.map +1 -0
- package/dist/types/library/ongoing/DVD.d.ts +45 -0
- package/dist/types/library/ongoing/DVD.d.ts.map +1 -0
- package/dist/types/library/ongoing/Flash.d.ts +63 -0
- package/dist/types/library/ongoing/Flash.d.ts.map +1 -0
- package/dist/types/library/ongoing/Flip.d.ts +71 -0
- package/dist/types/library/ongoing/Flip.d.ts.map +1 -0
- package/dist/types/library/ongoing/Fold.d.ts +64 -0
- package/dist/types/library/ongoing/Fold.d.ts.map +1 -0
- package/dist/types/library/ongoing/Jello.d.ts +55 -0
- package/dist/types/library/ongoing/Jello.d.ts.map +1 -0
- package/dist/types/library/ongoing/Poke.d.ts +55 -0
- package/dist/types/library/ongoing/Poke.d.ts.map +1 -0
- package/dist/types/library/ongoing/Pulse.d.ts +55 -0
- package/dist/types/library/ongoing/Pulse.d.ts.map +1 -0
- package/dist/types/library/ongoing/Rubber.d.ts +55 -0
- package/dist/types/library/ongoing/Rubber.d.ts.map +1 -0
- package/dist/types/library/ongoing/Spin.d.ts +69 -0
- package/dist/types/library/ongoing/Spin.d.ts.map +1 -0
- package/dist/types/library/ongoing/Swing.d.ts +64 -0
- package/dist/types/library/ongoing/Swing.d.ts.map +1 -0
- package/dist/types/library/ongoing/Wiggle.d.ts +55 -0
- package/dist/types/library/ongoing/Wiggle.d.ts.map +1 -0
- package/dist/types/library/ongoing/index.d.ts +14 -0
- package/dist/types/library/ongoing/index.d.ts.map +1 -0
- package/dist/types/library/scroll/ArcScroll.d.ts +57 -0
- package/dist/types/library/scroll/ArcScroll.d.ts.map +1 -0
- package/dist/types/library/scroll/BlurScroll.d.ts +59 -0
- package/dist/types/library/scroll/BlurScroll.d.ts.map +1 -0
- package/dist/types/library/scroll/FadeScroll.d.ts +57 -0
- package/dist/types/library/scroll/FadeScroll.d.ts.map +1 -0
- package/dist/types/library/scroll/FlipScroll.d.ts +57 -0
- package/dist/types/library/scroll/FlipScroll.d.ts.map +1 -0
- package/dist/types/library/scroll/GrowScroll.d.ts +69 -0
- package/dist/types/library/scroll/GrowScroll.d.ts.map +1 -0
- package/dist/types/library/scroll/MoveScroll.d.ts +65 -0
- package/dist/types/library/scroll/MoveScroll.d.ts.map +1 -0
- package/dist/types/library/scroll/PanScroll.d.ts +58 -0
- package/dist/types/library/scroll/PanScroll.d.ts.map +1 -0
- package/dist/types/library/scroll/ParallaxScroll.d.ts +59 -0
- package/dist/types/library/scroll/ParallaxScroll.d.ts.map +1 -0
- package/dist/types/library/scroll/RevealScroll.d.ts +58 -0
- package/dist/types/library/scroll/RevealScroll.d.ts.map +1 -0
- package/dist/types/library/scroll/ShapeScroll.d.ts +65 -0
- package/dist/types/library/scroll/ShapeScroll.d.ts.map +1 -0
- package/dist/types/library/scroll/ShrinkScroll.d.ts +69 -0
- package/dist/types/library/scroll/ShrinkScroll.d.ts.map +1 -0
- package/dist/types/library/scroll/ShuttersScroll.d.ts +61 -0
- package/dist/types/library/scroll/ShuttersScroll.d.ts.map +1 -0
- package/dist/types/library/scroll/SkewPanScroll.d.ts +62 -0
- package/dist/types/library/scroll/SkewPanScroll.d.ts.map +1 -0
- package/dist/types/library/scroll/SlideScroll.d.ts +52 -0
- package/dist/types/library/scroll/SlideScroll.d.ts.map +1 -0
- package/dist/types/library/scroll/Spin3dScroll.d.ts +73 -0
- package/dist/types/library/scroll/Spin3dScroll.d.ts.map +1 -0
- package/dist/types/library/scroll/SpinScroll.d.ts +61 -0
- package/dist/types/library/scroll/SpinScroll.d.ts.map +1 -0
- package/dist/types/library/scroll/StretchScroll.d.ts +125 -0
- package/dist/types/library/scroll/StretchScroll.d.ts.map +1 -0
- package/dist/types/library/scroll/TiltScroll.d.ts +143 -0
- package/dist/types/library/scroll/TiltScroll.d.ts.map +1 -0
- package/dist/types/library/scroll/TurnScroll.d.ts +66 -0
- package/dist/types/library/scroll/TurnScroll.d.ts.map +1 -0
- package/dist/types/library/scroll/index.d.ts +20 -0
- package/dist/types/library/scroll/index.d.ts.map +1 -0
- package/dist/types/types.d.ts +480 -0
- package/dist/types/types.d.ts.map +1 -0
- package/dist/types/utils.d.ts +64 -0
- package/dist/types/utils.d.ts.map +1 -0
- 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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"}
|