@wix/motion 1.600.0 → 1.602.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +169 -1
- package/dist/cjs/library/mouse/BlurMouse.js.map +1 -1
- package/dist/cjs/motion.js +11 -0
- package/dist/cjs/motion.js.map +1 -1
- package/dist/esm/library/mouse/BlurMouse.js.map +1 -1
- package/dist/esm/motion.js +11 -1
- package/dist/esm/motion.js.map +1 -1
- package/dist/types/library/mouse/BlurMouse.d.ts.map +1 -1
- package/dist/types/motion.d.ts +5 -2
- package/dist/types/motion.d.ts.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -1,3 +1,171 @@
|
|
|
1
1
|
# Wix Motion
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
A comprehensive animation library featuring 82+ carefully crafted presets, designed for modern web applications, built on native browser technology.
|
|
4
|
+
|
|
5
|
+
## ✨ Features
|
|
6
|
+
|
|
7
|
+
- **Web Platform First** - Built on native browser technology for smooth 60fps animations
|
|
8
|
+
- **82+ Animation Presets** - Professionally designed animations ready to use
|
|
9
|
+
- **5 Animation Categories** - Entrance, Ongoing, Scroll, Mouse, and Background Scroll effects
|
|
10
|
+
- **TypeScript Support** - Complete type definitions with IntelliSense support
|
|
11
|
+
- **Dual Rendering** - Both Web Animations API and CSS-based rendering
|
|
12
|
+
- **Scroll Integration** - Advanced scroll-driven animations with ViewTimeline API support
|
|
13
|
+
- **Mouse Parallax** - Interactive pointer-based animations
|
|
14
|
+
- **Performance Optimized** - Uses fastdom to minimize layout thrashing
|
|
15
|
+
|
|
16
|
+
## 🚀 Quick Start
|
|
17
|
+
|
|
18
|
+
### Installation
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
npm install @wix/motion
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
### Basic Usage
|
|
25
|
+
|
|
26
|
+
```typescript
|
|
27
|
+
import { getWebAnimation } from '@wix/motion';
|
|
28
|
+
|
|
29
|
+
// Create a fade-in entrance animation
|
|
30
|
+
const animation = getWebAnimation(
|
|
31
|
+
document.getElementById('myElement'),
|
|
32
|
+
{
|
|
33
|
+
type: 'TimeAnimationOptions',
|
|
34
|
+
namedEffect: { type: 'FadeIn' },
|
|
35
|
+
duration: 1000,
|
|
36
|
+
easing: 'easeOut'
|
|
37
|
+
}
|
|
38
|
+
);
|
|
39
|
+
|
|
40
|
+
// Play the animation
|
|
41
|
+
await animation.play();
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
### Scroll-Driven Animation
|
|
45
|
+
|
|
46
|
+
```typescript
|
|
47
|
+
import { getScrubScene } from '@wix/motion';
|
|
48
|
+
|
|
49
|
+
// Create a scroll-driven parallax effect
|
|
50
|
+
const scene = getScrubScene(
|
|
51
|
+
document.getElementById('scrollElement'),
|
|
52
|
+
{
|
|
53
|
+
type: 'ScrubAnimationOptions',
|
|
54
|
+
namedEffect: {
|
|
55
|
+
type: 'ParallaxScroll',
|
|
56
|
+
speed: 0.5
|
|
57
|
+
}
|
|
58
|
+
},
|
|
59
|
+
{ trigger: 'view-progress', element: document.getElementById('viewport') }
|
|
60
|
+
);
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
## 📚 Animation Categories
|
|
64
|
+
|
|
65
|
+
### 🎭 Entrance Animations (24 presets)
|
|
66
|
+
Perfect for element reveals and page transitions:
|
|
67
|
+
- **FadeIn** - Simple opacity transition
|
|
68
|
+
- **ArcIn** - Curved motion with 3D rotation
|
|
69
|
+
- **BounceIn** - Spring-based entrance with bounce effect
|
|
70
|
+
- **SlideIn** - Directional slides from off-screen
|
|
71
|
+
- **FlipIn** - 3D flip transitions
|
|
72
|
+
- [See all entrance animations →](docs/categories/entrance-animations.md)
|
|
73
|
+
|
|
74
|
+
### 🔄 Ongoing Animations (16 presets)
|
|
75
|
+
Continuous looping animations for attention and delight:
|
|
76
|
+
- **Pulse** - Rhythmic scaling effect
|
|
77
|
+
- **Breathe** - Organic scaling animation
|
|
78
|
+
- **Spin** - Smooth rotation loops
|
|
79
|
+
- **Wiggle** - Playful shake motions
|
|
80
|
+
- **Float** - Gentle floating movement
|
|
81
|
+
- [See all ongoing animations →](docs/categories/ongoing-animations.md)
|
|
82
|
+
|
|
83
|
+
### 📜 Scroll Animations (19 presets)
|
|
84
|
+
Scroll-synchronized effects that respond to viewport position:
|
|
85
|
+
- **ParallaxScroll** - Classic parallax movement
|
|
86
|
+
- **FadeScroll** - Opacity changes on scroll
|
|
87
|
+
- **GrowScroll** - Scale transformations
|
|
88
|
+
- **RevealScroll** - Clip-path reveals
|
|
89
|
+
- **TiltScroll** - 3D perspective tilting
|
|
90
|
+
- [See all scroll animations →](docs/categories/scroll-animations.md)
|
|
91
|
+
|
|
92
|
+
### 🖱️ Mouse Animations (12 presets)
|
|
93
|
+
Interactive pointer-driven effects:
|
|
94
|
+
- **TrackMouse** - Element follows cursor
|
|
95
|
+
- **Tilt3DMouse** - 3D tilt based on pointer position
|
|
96
|
+
- **ScaleMouse** - Dynamic scaling on hover
|
|
97
|
+
- **BlurMouse** - Motion blur effects
|
|
98
|
+
- [See all mouse animations →](docs/categories/mouse-animations.md)
|
|
99
|
+
|
|
100
|
+
### 🖼️ Background Scroll Animations (12 presets)
|
|
101
|
+
Specialized effects for background media elements:
|
|
102
|
+
- **BgParallax** - Background parallax scrolling
|
|
103
|
+
- **BgZoom** - Dynamic background scaling
|
|
104
|
+
- **BgFade** - Background opacity transitions
|
|
105
|
+
- **BgRotate** - Background rotation effects
|
|
106
|
+
- [See all background animations →](docs/categories/background-scroll-animations.md)
|
|
107
|
+
|
|
108
|
+
## 🛠️ Core APIs
|
|
109
|
+
|
|
110
|
+
### Animation Creation
|
|
111
|
+
- `getWebAnimation()` - Create Web Animations API instances
|
|
112
|
+
- `getScrubScene()` - Generate scroll/pointer-driven scenes
|
|
113
|
+
- `prepareAnimation()` - Pre-calculate measurements for performance
|
|
114
|
+
|
|
115
|
+
### CSS Integration
|
|
116
|
+
- CSS custom properties for dynamic values
|
|
117
|
+
- CSS Animation API for stylesheet-based animations
|
|
118
|
+
- Automatic vendor prefixing and fallbacks
|
|
119
|
+
|
|
120
|
+
### TypeScript Support
|
|
121
|
+
Complete type definitions for all animation options:
|
|
122
|
+
```typescript
|
|
123
|
+
interface TimeAnimationOptions {
|
|
124
|
+
namedEffect: EntranceAnimation | OngoingAnimation;
|
|
125
|
+
duration?: number;
|
|
126
|
+
easing?: string;
|
|
127
|
+
// ... more options
|
|
128
|
+
}
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
## 📖 Documentation
|
|
132
|
+
|
|
133
|
+
- **[Getting Started](docs/getting-started.md)** - Setup and first animation
|
|
134
|
+
- **[Core Concepts](docs/core-concepts.md)** - Understanding the animation system
|
|
135
|
+
- **[API Reference](docs/api/)** - Complete function documentation
|
|
136
|
+
- **[Category Guides](docs/categories/)** - Detailed category overviews
|
|
137
|
+
- **[Preset Reference](docs/presets/)** - Individual animation documentation
|
|
138
|
+
- **[Advanced Usage](docs/guides/)** - Performance tips and patterns
|
|
139
|
+
|
|
140
|
+
## 🎮 Interactive Playground
|
|
141
|
+
|
|
142
|
+
Explore animations interactively in our Storybook playground:
|
|
143
|
+
```bash
|
|
144
|
+
yarn start # Opens interactive documentation
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
## 🔧 Framework Integration
|
|
148
|
+
|
|
149
|
+
Works seamlessly with popular frameworks:
|
|
150
|
+
- React/Vue/Angular components
|
|
151
|
+
- GSAP and Framer Motion compatibility
|
|
152
|
+
- CSS-in-JS libraries
|
|
153
|
+
- Server-side rendering support
|
|
154
|
+
|
|
155
|
+
## 🌐 Browser Support
|
|
156
|
+
|
|
157
|
+
- **Modern browsers** with Web Animations API
|
|
158
|
+
- **Progressive enhancement** with CSS fallbacks
|
|
159
|
+
- **ViewTimeline API** for advanced scroll effects (with polyfill)
|
|
160
|
+
|
|
161
|
+
## 🤝 Contributing
|
|
162
|
+
|
|
163
|
+
This package is part of the Wix wow-libs monorepo. See [contributing guidelines](../../CONTRIBUTING.md) for development setup and contribution process.
|
|
164
|
+
|
|
165
|
+
## 📄 License
|
|
166
|
+
|
|
167
|
+
UNLICENSED - Internal Wix package
|
|
168
|
+
|
|
169
|
+
---
|
|
170
|
+
|
|
171
|
+
**Built with ❤️ by the Wix wow!Team**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_utils","require","_easings","_CustomMouse","paramsMap","soft","angle","scale","easing","medium","hard","BlurMouseAnimation","CustomMouse","progress","x","progressX","y","progressY","distance","invert","blur","perspective","options","translateX","mapRange","value","translateY","scaleX","scaleY","maxScale","Math","min","rotateX","rotateY","units","getCssUnits","type","transform","progressDistance","distance2d","blurFilter","round","quadInOut","filter","target","style","cancel","transition","create","transitionDuration","transitionEasing","power","inverted","namedEffect","animationOptions","getMouseTransitionEasing"],"sources":["../../../../src/library/mouse/BlurMouse.ts"],"sourcesContent":["import {\n getCssUnits,\n getMouseTransitionEasing,\n distance2d,\n mapRange,\n} from '../../utils';\nimport { quadInOut } from '../../easings';\nimport { CustomMouse } from './CustomMouse';\nimport {\n ScrubAnimationOptions,\n AnimationExtraOptions,\n BlurMouse,\n Progress,\n EffectPower,\n ScrubTransitionEasing,\n} from '../../types';\n\nconst paramsMap: Record<\n EffectPower,\n { angle: number; scale: number; easing: ScrubTransitionEasing }\n> = {\n soft: { angle: 0, scale: 1, easing: 'easeOut' },\n medium: { angle: 25, scale: 0.7, easing: 'easeOut' },\n hard: { angle: 65, scale: 0.25, easing: 'easeOut' },\n};\nclass BlurMouseAnimation extends CustomMouse {\n progress({ x: progressX, y: progressY }: Progress) {\n const { distance, angle, scale, invert, blur, perspective } = this.options;\n\n const translateX =\n mapRange(0, 1, -distance.value, distance.value, progressX) * invert;\n const translateY =\n 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(
|
|
1
|
+
{"version":3,"names":["_utils","require","_easings","_CustomMouse","paramsMap","soft","angle","scale","easing","medium","hard","BlurMouseAnimation","CustomMouse","progress","x","progressX","y","progressY","distance","invert","blur","perspective","options","translateX","mapRange","value","translateY","scaleX","scaleY","maxScale","Math","min","rotateX","rotateY","units","getCssUnits","type","transform","progressDistance","distance2d","blurFilter","round","quadInOut","filter","target","style","cancel","transition","create","transitionDuration","transitionEasing","power","inverted","namedEffect","animationOptions","getMouseTransitionEasing"],"sources":["../../../../src/library/mouse/BlurMouse.ts"],"sourcesContent":["import {\n getCssUnits,\n getMouseTransitionEasing,\n distance2d,\n mapRange,\n} from '../../utils';\nimport { quadInOut } from '../../easings';\nimport { CustomMouse } from './CustomMouse';\nimport {\n ScrubAnimationOptions,\n AnimationExtraOptions,\n BlurMouse,\n Progress,\n EffectPower,\n ScrubTransitionEasing,\n} from '../../types';\n\nconst paramsMap: Record<\n EffectPower,\n { angle: number; scale: number; easing: ScrubTransitionEasing }\n> = {\n soft: { angle: 0, scale: 1, easing: 'easeOut' },\n medium: { angle: 25, scale: 0.7, easing: 'easeOut' },\n hard: { angle: 65, scale: 0.25, easing: 'easeOut' },\n};\nclass BlurMouseAnimation extends CustomMouse {\n progress({ x: progressX, y: progressY }: Progress) {\n const { distance, angle, scale, invert, blur, perspective } = this.options;\n\n const translateX =\n mapRange(0, 1, -distance.value, distance.value, progressX) * invert;\n const translateY =\n 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(\n mapRange(0, 1, 0, blur, quadInOut(progressDistance)),\n );\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(\n options: ScrubAnimationOptions & AnimationExtraOptions,\n) {\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) =>\n new BlurMouseAnimation(target, animationOptions);\n}\n"],"mappings":"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","ignoreList":[]}
|
package/dist/cjs/motion.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
exports.__esModule = true;
|
|
4
|
+
exports.getAnimation = getAnimation;
|
|
4
5
|
exports.getElementAnimation = getElementAnimation;
|
|
5
6
|
exports.getElementCSSAnimation = getElementCSSAnimation;
|
|
6
7
|
exports.getScrubScene = getScrubScene;
|
|
@@ -127,4 +128,14 @@ function getScrubScene(target, animationOptions, trigger, sceneOptions = {}) {
|
|
|
127
128
|
}
|
|
128
129
|
};
|
|
129
130
|
}
|
|
131
|
+
function getAnimation(target, animationOptions, trigger) {
|
|
132
|
+
const animation = getElementCSSAnimation(target, animationOptions);
|
|
133
|
+
if (animation) {
|
|
134
|
+
animation.ready = new Promise(resolve => {
|
|
135
|
+
(0, _prepare.prepareAnimation)(target, animationOptions, resolve);
|
|
136
|
+
});
|
|
137
|
+
return animation;
|
|
138
|
+
}
|
|
139
|
+
return (0, _webAnimations.getWebAnimation)(target, animationOptions, trigger);
|
|
140
|
+
}
|
|
130
141
|
//# sourceMappingURL=motion.js.map
|
package/dist/cjs/motion.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_AnimationGroup","require","_utils","exports","getEasing","_webAnimations","getWebAnimation","_cssAnimations","getCSSAnimation","_prepare","prepareAnimation","_common","getElementCSSAnimation","target","animationOptions","namedEffect","getNamedEffect","style","effectId","getElementAnimation","effectNames","getNames","element","getElement","animations","getAnimations","animationNames","map","anim","animationName","filteredAnimations","forEach","name","includes","push","find","length","AnimationGroup","filter","id","startsWith","getScrubScene","trigger","sceneOptions","disabled","allowActiveEvent","rest","animation","typeSpecificOptions","window","ViewTimeline","viewSource","componentId","ready","partialAnimation","start","end","getProgress","effect","__","p","activeDuration","getComputedTiming","delay","getTiming","currentTime","destroy","cancel","centeredToTarget","transitionDuration","transitionEasing","customEffect","getJsEasing","v","active","progress"],"sources":["../../src/motion.ts"],"sourcesContent":["import type {\n AnimationOptions,\n ScrubAnimationOptions,\n TriggerVariant,\n MouseAnimationInstance,\n AnimationEffectAPI,\n CustomMouseAnimationInstance,\n ScrubScrollScene,\n ScrubPointerScene,\n} from './types';\nimport { AnimationGroup } from './AnimationGroup';\nimport { getEasing, getJsEasing } from './utils';\nimport { getWebAnimation } from './api/webAnimations';\nimport { getCSSAnimation } from './api/cssAnimations';\nimport { prepareAnimation } from './api/prepare';\nimport { getElement, getNamedEffect } from './api/common';\n\nfunction getElementCSSAnimation(\n target: HTMLElement | string | null,\n animationOptions: AnimationOptions,\n): AnimationGroup | null {\n const namedEffect = getNamedEffect(\n animationOptions,\n ) as AnimationEffectAPI<any> | null;\n\n if (!namedEffect) {\n return null;\n }\n\n if (!namedEffect.style) {\n // if this named effect does not have a style method, attempt to get group of Web Animations\n if (animationOptions.effectId && target) {\n return getElementAnimation(target, animationOptions.effectId);\n }\n\n return null;\n }\n\n const effectNames = namedEffect.getNames(animationOptions);\n const element = typeof target === 'string' ? getElement(target) : target;\n const animations = element?.getAnimations();\n const animationNames =\n animations?.map((anim) => (anim as CSSAnimation).animationName) ||\n ([] as string[]);\n const filteredAnimations: CSSAnimation[] = [];\n\n effectNames.forEach((name) => {\n if (animationNames.includes(name)) {\n filteredAnimations.push(\n animations?.find(\n (anim) => (anim as CSSAnimation).animationName === name,\n ) as CSSAnimation,\n );\n }\n });\n\n return filteredAnimations?.length\n ? new AnimationGroup(filteredAnimations)\n : null;\n}\n\nfunction getElementAnimation(\n target: HTMLElement | string,\n effectId: string,\n): AnimationGroup | null {\n const element = typeof target === 'string' ? getElement(target) : target;\n // somehow get the right animations\n const animations = element\n ?.getAnimations()\n .filter((anim: Animation | CSSAnimation) => {\n const id = anim.id || (anim as CSSAnimation).animationName;\n // if no id/name just return all animations\n return id ? id.startsWith(effectId) : true;\n });\n\n return animations?.length ? new AnimationGroup(animations) : null;\n}\n\nfunction getScrubScene(\n target: HTMLElement | string | null,\n animationOptions: AnimationOptions,\n trigger: Partial<TriggerVariant> & { element?: HTMLElement },\n sceneOptions: Record<string, any> = {},\n): ScrubScrollScene[] | ScrubPointerScene {\n const { disabled, allowActiveEvent, ...rest } = sceneOptions;\n const animation = getWebAnimation(target, animationOptions, trigger, rest);\n\n let typeSpecificOptions = {} as Record<string, any>;\n\n if (trigger.trigger === 'view-progress' && !window.ViewTimeline) {\n // TODO(ameerf): consider doing this only for bgscrub to not affect the other scroll effects\n const viewSource = trigger.element || getElement(trigger.componentId!);\n const { ready } = animation as AnimationGroup;\n\n return (animation as AnimationGroup).animations.map((partialAnimation) => {\n return {\n /* we use getters for start and end in order to access the animation's start and end\n only when initializing the scrub scene rather than immediately */\n get start() {\n return partialAnimation.start;\n },\n get end() {\n return partialAnimation.end;\n },\n viewSource,\n ready,\n getProgress() {\n return (animation as AnimationGroup).getProgress();\n },\n effect(__: any, p: number) {\n const { activeDuration } =\n partialAnimation.effect!.getComputedTiming();\n const { delay } = partialAnimation.effect!.getTiming();\n\n partialAnimation.currentTime =\n ((delay || 0) + ((activeDuration as number) || 0)) * p;\n },\n disabled,\n destroy() {\n partialAnimation.cancel();\n },\n } as ScrubScrollScene;\n });\n } else if (trigger.trigger === 'pointer-move') {\n const { centeredToTarget, transitionDuration, transitionEasing } =\n animationOptions as ScrubAnimationOptions;\n\n typeSpecificOptions = {\n target: (animation as MouseAnimationInstance).target,\n centeredToTarget,\n allowActiveEvent,\n };\n\n if (animationOptions.customEffect && transitionDuration) {\n typeSpecificOptions.transitionDuration = transitionDuration;\n typeSpecificOptions.transitionEasing = getJsEasing(transitionEasing);\n }\n }\n\n return {\n ...typeSpecificOptions,\n getProgress() {\n return (\n animation as AnimationGroup | CustomMouseAnimationInstance\n ).getProgress();\n },\n effect(\n __: any,\n p: number | { x: number; y: number },\n v?: { x: number; y: number },\n active?: boolean,\n ) {\n animation.progress(\n v\n ? {\n // @ts-expect-error spread error on p\n ...p,\n v,\n active,\n }\n : p,\n );\n },\n disabled,\n destroy() {\n animation.cancel();\n },\n } as ScrubPointerScene;\n}\n\nexport {\n getCSSAnimation,\n getWebAnimation,\n getElementCSSAnimation,\n getElementAnimation,\n getScrubScene,\n prepareAnimation,\n getEasing,\n};\n\nexport type { AnimationGroup };\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_AnimationGroup","require","_utils","exports","getEasing","_webAnimations","getWebAnimation","_cssAnimations","getCSSAnimation","_prepare","prepareAnimation","_common","getElementCSSAnimation","target","animationOptions","namedEffect","getNamedEffect","style","effectId","getElementAnimation","effectNames","getNames","element","getElement","animations","getAnimations","animationNames","map","anim","animationName","filteredAnimations","forEach","name","includes","push","find","length","AnimationGroup","filter","id","startsWith","getScrubScene","trigger","sceneOptions","disabled","allowActiveEvent","rest","animation","typeSpecificOptions","window","ViewTimeline","viewSource","componentId","ready","partialAnimation","start","end","getProgress","effect","__","p","activeDuration","getComputedTiming","delay","getTiming","currentTime","destroy","cancel","centeredToTarget","transitionDuration","transitionEasing","customEffect","getJsEasing","v","active","progress","getAnimation","Promise","resolve"],"sources":["../../src/motion.ts"],"sourcesContent":["import type {\n AnimationOptions,\n ScrubAnimationOptions,\n TriggerVariant,\n MouseAnimationInstance,\n AnimationEffectAPI,\n CustomMouseAnimationInstance,\n ScrubScrollScene,\n ScrubPointerScene,\n} from './types';\nimport { AnimationGroup } from './AnimationGroup';\nimport { getEasing, getJsEasing } from './utils';\nimport { getWebAnimation } from './api/webAnimations';\nimport { getCSSAnimation } from './api/cssAnimations';\nimport { prepareAnimation } from './api/prepare';\nimport { getElement, getNamedEffect } from './api/common';\n\nfunction getElementCSSAnimation(\n target: HTMLElement | string | null,\n animationOptions: AnimationOptions,\n): AnimationGroup | null {\n const namedEffect = getNamedEffect(\n animationOptions,\n ) as AnimationEffectAPI<any> | null;\n\n if (!namedEffect) {\n return null;\n }\n\n if (!namedEffect.style) {\n // if this named effect does not have a style method, attempt to get group of Web Animations\n if (animationOptions.effectId && target) {\n return getElementAnimation(target, animationOptions.effectId);\n }\n\n return null;\n }\n\n const effectNames = namedEffect.getNames(animationOptions);\n const element = typeof target === 'string' ? getElement(target) : target;\n const animations = element?.getAnimations();\n const animationNames =\n animations?.map((anim) => (anim as CSSAnimation).animationName) ||\n ([] as string[]);\n const filteredAnimations: CSSAnimation[] = [];\n\n effectNames.forEach((name) => {\n if (animationNames.includes(name)) {\n filteredAnimations.push(\n animations?.find(\n (anim) => (anim as CSSAnimation).animationName === name,\n ) as CSSAnimation,\n );\n }\n });\n\n return filteredAnimations?.length\n ? new AnimationGroup(filteredAnimations)\n : null;\n}\n\nfunction getElementAnimation(\n target: HTMLElement | string,\n effectId: string,\n): AnimationGroup | null {\n const element = typeof target === 'string' ? getElement(target) : target;\n // somehow get the right animations\n const animations = element\n ?.getAnimations()\n .filter((anim: Animation | CSSAnimation) => {\n const id = anim.id || (anim as CSSAnimation).animationName;\n // if no id/name just return all animations\n return id ? id.startsWith(effectId) : true;\n });\n\n return animations?.length ? new AnimationGroup(animations) : null;\n}\n\nfunction getScrubScene(\n target: HTMLElement | string | null,\n animationOptions: AnimationOptions,\n trigger: Partial<TriggerVariant> & { element?: HTMLElement },\n sceneOptions: Record<string, any> = {},\n): ScrubScrollScene[] | ScrubPointerScene {\n const { disabled, allowActiveEvent, ...rest } = sceneOptions;\n const animation = getWebAnimation(target, animationOptions, trigger, rest);\n\n let typeSpecificOptions = {} as Record<string, any>;\n\n if (trigger.trigger === 'view-progress' && !window.ViewTimeline) {\n // TODO(ameerf): consider doing this only for bgscrub to not affect the other scroll effects\n const viewSource = trigger.element || getElement(trigger.componentId!);\n const { ready } = animation as AnimationGroup;\n\n return (animation as AnimationGroup).animations.map((partialAnimation) => {\n return {\n /* we use getters for start and end in order to access the animation's start and end\n only when initializing the scrub scene rather than immediately */\n get start() {\n return partialAnimation.start;\n },\n get end() {\n return partialAnimation.end;\n },\n viewSource,\n ready,\n getProgress() {\n return (animation as AnimationGroup).getProgress();\n },\n effect(__: any, p: number) {\n const { activeDuration } =\n partialAnimation.effect!.getComputedTiming();\n const { delay } = partialAnimation.effect!.getTiming();\n\n partialAnimation.currentTime =\n ((delay || 0) + ((activeDuration as number) || 0)) * p;\n },\n disabled,\n destroy() {\n partialAnimation.cancel();\n },\n } as ScrubScrollScene;\n });\n } else if (trigger.trigger === 'pointer-move') {\n const { centeredToTarget, transitionDuration, transitionEasing } =\n animationOptions as ScrubAnimationOptions;\n\n typeSpecificOptions = {\n target: (animation as MouseAnimationInstance).target,\n centeredToTarget,\n allowActiveEvent,\n };\n\n if (animationOptions.customEffect && transitionDuration) {\n typeSpecificOptions.transitionDuration = transitionDuration;\n typeSpecificOptions.transitionEasing = getJsEasing(transitionEasing);\n }\n }\n\n return {\n ...typeSpecificOptions,\n getProgress() {\n return (\n animation as AnimationGroup | CustomMouseAnimationInstance\n ).getProgress();\n },\n effect(\n __: any,\n p: number | { x: number; y: number },\n v?: { x: number; y: number },\n active?: boolean,\n ) {\n animation.progress(\n v\n ? {\n // @ts-expect-error spread error on p\n ...p,\n v,\n active,\n }\n : p,\n );\n },\n disabled,\n destroy() {\n animation.cancel();\n },\n } as ScrubPointerScene;\n}\n\nfunction getAnimation(\n target: HTMLElement | string | null,\n animationOptions: AnimationOptions,\n trigger?: Partial<TriggerVariant> & { element?: HTMLElement },\n): AnimationGroup | MouseAnimationInstance | null {\n const animation = getElementCSSAnimation(target, animationOptions);\n\n if (animation) {\n animation.ready = new Promise((resolve) => {\n prepareAnimation(target, animationOptions, resolve);\n });\n\n return animation;\n }\n\n return getWebAnimation(\n target,\n animationOptions,\n trigger,\n );\n}\n\nexport {\n getCSSAnimation,\n getWebAnimation,\n getElementCSSAnimation,\n getElementAnimation,\n getScrubScene,\n prepareAnimation,\n getAnimation,\n getEasing,\n};\n\nexport type { AnimationGroup };\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["getCssUnits","getMouseTransitionEasing","distance2d","mapRange","quadInOut","CustomMouse","paramsMap","soft","angle","scale","easing","medium","hard","BlurMouseAnimation","progress","_ref","x","progressX","y","progressY","distance","invert","blur","perspective","options","translateX","value","translateY","scaleX","scaleY","maxScale","Math","min","rotateX","rotateY","units","type","transform","progressDistance","blurFilter","round","filter","target","style","cancel","transition","create","transitionDuration","transitionEasing","power","inverted","namedEffect","animationOptions"],"sources":["../../../../src/library/mouse/BlurMouse.ts"],"sourcesContent":["import {\n getCssUnits,\n getMouseTransitionEasing,\n distance2d,\n mapRange,\n} from '../../utils';\nimport { quadInOut } from '../../easings';\nimport { CustomMouse } from './CustomMouse';\nimport {\n ScrubAnimationOptions,\n AnimationExtraOptions,\n BlurMouse,\n Progress,\n EffectPower,\n ScrubTransitionEasing,\n} from '../../types';\n\nconst paramsMap: Record<\n EffectPower,\n { angle: number; scale: number; easing: ScrubTransitionEasing }\n> = {\n soft: { angle: 0, scale: 1, easing: 'easeOut' },\n medium: { angle: 25, scale: 0.7, easing: 'easeOut' },\n hard: { angle: 65, scale: 0.25, easing: 'easeOut' },\n};\nclass BlurMouseAnimation extends CustomMouse {\n progress({ x: progressX, y: progressY }: Progress) {\n const { distance, angle, scale, invert, blur, perspective } = this.options;\n\n const translateX =\n mapRange(0, 1, -distance.value, distance.value, progressX) * invert;\n const translateY =\n 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(
|
|
1
|
+
{"version":3,"names":["getCssUnits","getMouseTransitionEasing","distance2d","mapRange","quadInOut","CustomMouse","paramsMap","soft","angle","scale","easing","medium","hard","BlurMouseAnimation","progress","_ref","x","progressX","y","progressY","distance","invert","blur","perspective","options","translateX","value","translateY","scaleX","scaleY","maxScale","Math","min","rotateX","rotateY","units","type","transform","progressDistance","blurFilter","round","filter","target","style","cancel","transition","create","transitionDuration","transitionEasing","power","inverted","namedEffect","animationOptions"],"sources":["../../../../src/library/mouse/BlurMouse.ts"],"sourcesContent":["import {\n getCssUnits,\n getMouseTransitionEasing,\n distance2d,\n mapRange,\n} from '../../utils';\nimport { quadInOut } from '../../easings';\nimport { CustomMouse } from './CustomMouse';\nimport {\n ScrubAnimationOptions,\n AnimationExtraOptions,\n BlurMouse,\n Progress,\n EffectPower,\n ScrubTransitionEasing,\n} from '../../types';\n\nconst paramsMap: Record<\n EffectPower,\n { angle: number; scale: number; easing: ScrubTransitionEasing }\n> = {\n soft: { angle: 0, scale: 1, easing: 'easeOut' },\n medium: { angle: 25, scale: 0.7, easing: 'easeOut' },\n hard: { angle: 65, scale: 0.25, easing: 'easeOut' },\n};\nclass BlurMouseAnimation extends CustomMouse {\n progress({ x: progressX, y: progressY }: Progress) {\n const { distance, angle, scale, invert, blur, perspective } = this.options;\n\n const translateX =\n mapRange(0, 1, -distance.value, distance.value, progressX) * invert;\n const translateY =\n 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(\n mapRange(0, 1, 0, blur, quadInOut(progressDistance)),\n );\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(\n options: ScrubAnimationOptions & AnimationExtraOptions,\n) {\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) =>\n new BlurMouseAnimation(target, animationOptions);\n}\n"],"mappings":"AAAA,SACEA,WAAW,EACXC,wBAAwB,EACxBC,UAAU,EACVC,QAAQ,QACH,aAAa;AACpB,SAASC,SAAS,QAAQ,eAAe;AACzC,SAASC,WAAW,QAAQ,eAAe;AAU3C,MAAMC,SAGL,GAAG;EACFC,IAAI,EAAE;IAAEC,KAAK,EAAE,CAAC;IAAEC,KAAK,EAAE,CAAC;IAAEC,MAAM,EAAE;EAAU,CAAC;EAC/CC,MAAM,EAAE;IAAEH,KAAK,EAAE,EAAE;IAAEC,KAAK,EAAE,GAAG;IAAEC,MAAM,EAAE;EAAU,CAAC;EACpDE,IAAI,EAAE;IAAEJ,KAAK,EAAE,EAAE;IAAEC,KAAK,EAAE,IAAI;IAAEC,MAAM,EAAE;EAAU;AACpD,CAAC;AACD,MAAMG,kBAAkB,SAASR,WAAW,CAAC;EAC3CS,QAAQA,CAAAC,IAAA,EAA2C;IAAA,IAA1C;MAAEC,CAAC,EAAEC,SAAS;MAAEC,CAAC,EAAEC;IAAoB,CAAC,GAAAJ,IAAA;IAC/C,MAAM;MAAEK,QAAQ;MAAEZ,KAAK;MAAEC,KAAK;MAAEY,MAAM;MAAEC,IAAI;MAAEC;IAAY,CAAC,GAAG,IAAI,CAACC,OAAO;IAE1E,MAAMC,UAAU,GACdtB,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAACiB,QAAQ,CAACM,KAAK,EAAEN,QAAQ,CAACM,KAAK,EAAET,SAAS,CAAC,GAAGI,MAAM;IACrE,MAAMM,UAAU,GACdxB,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAACiB,QAAQ,CAACM,KAAK,EAAEN,QAAQ,CAACM,KAAK,EAAEP,SAAS,CAAC,GAAGE,MAAM;;IAErE;IACA,MAAMO,MAAM,GACVX,SAAS,GAAG,GAAG,GACXd,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAEM,KAAK,EAAE,CAAC,EAAEQ,SAAS,CAAC,GACrCd,QAAQ,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAEM,KAAK,EAAEQ,SAAS,CAAC;;IAE3C;IACA,MAAMY,MAAM,GACVV,SAAS,GAAG,GAAG,GACXhB,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAEM,KAAK,EAAE,CAAC,EAAEU,SAAS,CAAC,GACrChB,QAAQ,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAEM,KAAK,EAAEU,SAAS,CAAC;IAE3C,MAAMW,QAAQ,GAAGC,IAAI,CAACC,GAAG,CAACJ,MAAM,EAAEC,MAAM,CAAC;;IAEzC;IACA,MAAMI,OAAO,GAAG9B,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAACK,KAAK,EAAEA,KAAK,EAAEW,SAAS,CAAC,GAAGE,MAAM;IACjE,MAAMa,OAAO,GAAG/B,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAEK,KAAK,EAAE,CAACA,KAAK,EAAES,SAAS,CAAC,GAAGI,MAAM;IAEjE,MAAMc,KAAK,GAAGnC,WAAW,CAACoB,QAAQ,CAACgB,IAAI,CAAC;IAExC,MAAMC,SAAS,GAAG,eAAed,WAAW,kBAAkBE,UAAU,GAAGU,KAAK,gBAAgBR,UAAU,GAAGQ,KAAK,WAAWL,QAAQ,KAAKA,QAAQ,aAAaG,OAAO,gBAAgBC,OAAO,yCAAyC;IAEtO,MAAMI,gBAAgB,GAAGpC,UAAU,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAACe,SAAS,EAAEE,SAAS,CAAC,CAAC;IACvE,MAAMoB,UAAU,GAAGR,IAAI,CAACS,KAAK,CAC3BrC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAEmB,IAAI,EAAElB,SAAS,CAACkC,gBAAgB,CAAC,CACrD,CAAC;IAED,MAAMG,MAAM,GAAG,QAAQF,UAAU,KAAK;IAEtC,IAAI,CAACG,MAAM,CAACC,KAAK,CAACN,SAAS,GAAGA,SAAS;IACvC,IAAI,CAACK,MAAM,CAACC,KAAK,CAACF,MAAM,GAAGA,MAAM;EACnC;EAEAG,MAAMA,CAAA,EAAG;IACP,IAAI,CAACF,MAAM,CAACC,KAAK,CAACN,SAAS,GAAG,EAAE;IAChC,IAAI,CAACK,MAAM,CAACC,KAAK,CAACF,MAAM,GAAG,EAAE;IAC7B,IAAI,CAACC,MAAM,CAACC,KAAK,CAACE,UAAU,GAAG,EAAE;EACnC;AACF;AAEA,eAAe,SAASC,MAAMA,CAC5BtB,OAAsD,EACtD;EACA,MAAM;IAAEuB,kBAAkB;IAAEC;EAAiB,CAAC,GAAGxB,OAAO;EACxD,MAAM;IACJyB,KAAK;IACLC,QAAQ,GAAG,KAAK;IAChB9B,QAAQ,GAAG;MAAEM,KAAK,EAAE,EAAE;MAAEU,IAAI,EAAE;IAAK,CAAC;IACpC5B,KAAK,GAAG,CAAC;IACTC,KAAK,GAAG,GAAG;IACXa,IAAI,GAAG,EAAE;IACTC,WAAW,GAAG;EAChB,CAAC,GAAGC,OAAO,CAAC2B,WAAwB;EACpC,MAAM9B,MAAM,GAAG6B,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC;EAChC,MAAME,gBAAgB,GAAG;IACvBP,UAAU,EAAEE,kBAAkB,GAC1B,aAAaA,kBAAkB,MAAM9C,wBAAwB,CAC3DgD,KAAK,GAAG3C,SAAS,CAAC2C,KAAK,CAAC,CAACvC,MAAM,GAAGsC,gBACpC,CAAC,YAAYD,kBAAkB,MAAM9C,wBAAwB,CAC3DgD,KAAK,GAAG3C,SAAS,CAAC2C,KAAK,CAAC,CAACvC,MAAM,GAAGsC,gBACpC,CAAC,EAAE,GACH,EAAE;IACN5B,QAAQ;IACRZ,KAAK,EAAEyC,KAAK,GAAG3C,SAAS,CAAC2C,KAAK,CAAC,CAACzC,KAAK,GAAGA,KAAK;IAC7CC,KAAK,EAAEwC,KAAK,GAAG3C,SAAS,CAAC2C,KAAK,CAAC,CAACxC,KAAK,GAAGA,KAAK;IAC7Ca,IAAI;IACJC,WAAW;IACXF;EACF,CAAC;EAED,OAAQqB,MAAmB,IACzB,IAAI7B,kBAAkB,CAAC6B,MAAM,EAAEU,gBAAgB,CAAC;AACpD","ignoreList":[]}
|
package/dist/esm/motion.js
CHANGED
|
@@ -120,5 +120,15 @@ function getScrubScene(target, animationOptions, trigger, sceneOptions) {
|
|
|
120
120
|
}
|
|
121
121
|
};
|
|
122
122
|
}
|
|
123
|
-
|
|
123
|
+
function getAnimation(target, animationOptions, trigger) {
|
|
124
|
+
const animation = getElementCSSAnimation(target, animationOptions);
|
|
125
|
+
if (animation) {
|
|
126
|
+
animation.ready = new Promise(resolve => {
|
|
127
|
+
prepareAnimation(target, animationOptions, resolve);
|
|
128
|
+
});
|
|
129
|
+
return animation;
|
|
130
|
+
}
|
|
131
|
+
return getWebAnimation(target, animationOptions, trigger);
|
|
132
|
+
}
|
|
133
|
+
export { getCSSAnimation, getWebAnimation, getElementCSSAnimation, getElementAnimation, getScrubScene, prepareAnimation, getAnimation, getEasing };
|
|
124
134
|
//# sourceMappingURL=motion.js.map
|
package/dist/esm/motion.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["AnimationGroup","getEasing","getJsEasing","getWebAnimation","getCSSAnimation","prepareAnimation","getElement","getNamedEffect","getElementCSSAnimation","target","animationOptions","namedEffect","style","effectId","getElementAnimation","effectNames","getNames","element","animations","getAnimations","animationNames","map","anim","animationName","filteredAnimations","forEach","name","includes","push","find","length","filter","id","startsWith","getScrubScene","trigger","sceneOptions","disabled","allowActiveEvent","rest","animation","typeSpecificOptions","window","ViewTimeline","viewSource","componentId","ready","partialAnimation","start","end","getProgress","effect","__","p","activeDuration","getComputedTiming","delay","getTiming","currentTime","destroy","cancel","centeredToTarget","transitionDuration","transitionEasing","customEffect","v","active","progress"],"sources":["../../src/motion.ts"],"sourcesContent":["import type {\n AnimationOptions,\n ScrubAnimationOptions,\n TriggerVariant,\n MouseAnimationInstance,\n AnimationEffectAPI,\n CustomMouseAnimationInstance,\n ScrubScrollScene,\n ScrubPointerScene,\n} from './types';\nimport { AnimationGroup } from './AnimationGroup';\nimport { getEasing, getJsEasing } from './utils';\nimport { getWebAnimation } from './api/webAnimations';\nimport { getCSSAnimation } from './api/cssAnimations';\nimport { prepareAnimation } from './api/prepare';\nimport { getElement, getNamedEffect } from './api/common';\n\nfunction getElementCSSAnimation(\n target: HTMLElement | string | null,\n animationOptions: AnimationOptions,\n): AnimationGroup | null {\n const namedEffect = getNamedEffect(\n animationOptions,\n ) as AnimationEffectAPI<any> | null;\n\n if (!namedEffect) {\n return null;\n }\n\n if (!namedEffect.style) {\n // if this named effect does not have a style method, attempt to get group of Web Animations\n if (animationOptions.effectId && target) {\n return getElementAnimation(target, animationOptions.effectId);\n }\n\n return null;\n }\n\n const effectNames = namedEffect.getNames(animationOptions);\n const element = typeof target === 'string' ? getElement(target) : target;\n const animations = element?.getAnimations();\n const animationNames =\n animations?.map((anim) => (anim as CSSAnimation).animationName) ||\n ([] as string[]);\n const filteredAnimations: CSSAnimation[] = [];\n\n effectNames.forEach((name) => {\n if (animationNames.includes(name)) {\n filteredAnimations.push(\n animations?.find(\n (anim) => (anim as CSSAnimation).animationName === name,\n ) as CSSAnimation,\n );\n }\n });\n\n return filteredAnimations?.length\n ? new AnimationGroup(filteredAnimations)\n : null;\n}\n\nfunction getElementAnimation(\n target: HTMLElement | string,\n effectId: string,\n): AnimationGroup | null {\n const element = typeof target === 'string' ? getElement(target) : target;\n // somehow get the right animations\n const animations = element\n ?.getAnimations()\n .filter((anim: Animation | CSSAnimation) => {\n const id = anim.id || (anim as CSSAnimation).animationName;\n // if no id/name just return all animations\n return id ? id.startsWith(effectId) : true;\n });\n\n return animations?.length ? new AnimationGroup(animations) : null;\n}\n\nfunction getScrubScene(\n target: HTMLElement | string | null,\n animationOptions: AnimationOptions,\n trigger: Partial<TriggerVariant> & { element?: HTMLElement },\n sceneOptions: Record<string, any> = {},\n): ScrubScrollScene[] | ScrubPointerScene {\n const { disabled, allowActiveEvent, ...rest } = sceneOptions;\n const animation = getWebAnimation(target, animationOptions, trigger, rest);\n\n let typeSpecificOptions = {} as Record<string, any>;\n\n if (trigger.trigger === 'view-progress' && !window.ViewTimeline) {\n // TODO(ameerf): consider doing this only for bgscrub to not affect the other scroll effects\n const viewSource = trigger.element || getElement(trigger.componentId!);\n const { ready } = animation as AnimationGroup;\n\n return (animation as AnimationGroup).animations.map((partialAnimation) => {\n return {\n /* we use getters for start and end in order to access the animation's start and end\n only when initializing the scrub scene rather than immediately */\n get start() {\n return partialAnimation.start;\n },\n get end() {\n return partialAnimation.end;\n },\n viewSource,\n ready,\n getProgress() {\n return (animation as AnimationGroup).getProgress();\n },\n effect(__: any, p: number) {\n const { activeDuration } =\n partialAnimation.effect!.getComputedTiming();\n const { delay } = partialAnimation.effect!.getTiming();\n\n partialAnimation.currentTime =\n ((delay || 0) + ((activeDuration as number) || 0)) * p;\n },\n disabled,\n destroy() {\n partialAnimation.cancel();\n },\n } as ScrubScrollScene;\n });\n } else if (trigger.trigger === 'pointer-move') {\n const { centeredToTarget, transitionDuration, transitionEasing } =\n animationOptions as ScrubAnimationOptions;\n\n typeSpecificOptions = {\n target: (animation as MouseAnimationInstance).target,\n centeredToTarget,\n allowActiveEvent,\n };\n\n if (animationOptions.customEffect && transitionDuration) {\n typeSpecificOptions.transitionDuration = transitionDuration;\n typeSpecificOptions.transitionEasing = getJsEasing(transitionEasing);\n }\n }\n\n return {\n ...typeSpecificOptions,\n getProgress() {\n return (\n animation as AnimationGroup | CustomMouseAnimationInstance\n ).getProgress();\n },\n effect(\n __: any,\n p: number | { x: number; y: number },\n v?: { x: number; y: number },\n active?: boolean,\n ) {\n animation.progress(\n v\n ? {\n // @ts-expect-error spread error on p\n ...p,\n v,\n active,\n }\n : p,\n );\n },\n disabled,\n destroy() {\n animation.cancel();\n },\n } as ScrubPointerScene;\n}\n\nexport {\n getCSSAnimation,\n getWebAnimation,\n getElementCSSAnimation,\n getElementAnimation,\n getScrubScene,\n prepareAnimation,\n getEasing,\n};\n\nexport type { AnimationGroup };\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["AnimationGroup","getEasing","getJsEasing","getWebAnimation","getCSSAnimation","prepareAnimation","getElement","getNamedEffect","getElementCSSAnimation","target","animationOptions","namedEffect","style","effectId","getElementAnimation","effectNames","getNames","element","animations","getAnimations","animationNames","map","anim","animationName","filteredAnimations","forEach","name","includes","push","find","length","filter","id","startsWith","getScrubScene","trigger","sceneOptions","disabled","allowActiveEvent","rest","animation","typeSpecificOptions","window","ViewTimeline","viewSource","componentId","ready","partialAnimation","start","end","getProgress","effect","__","p","activeDuration","getComputedTiming","delay","getTiming","currentTime","destroy","cancel","centeredToTarget","transitionDuration","transitionEasing","customEffect","v","active","progress","getAnimation","Promise","resolve"],"sources":["../../src/motion.ts"],"sourcesContent":["import type {\n AnimationOptions,\n ScrubAnimationOptions,\n TriggerVariant,\n MouseAnimationInstance,\n AnimationEffectAPI,\n CustomMouseAnimationInstance,\n ScrubScrollScene,\n ScrubPointerScene,\n} from './types';\nimport { AnimationGroup } from './AnimationGroup';\nimport { getEasing, getJsEasing } from './utils';\nimport { getWebAnimation } from './api/webAnimations';\nimport { getCSSAnimation } from './api/cssAnimations';\nimport { prepareAnimation } from './api/prepare';\nimport { getElement, getNamedEffect } from './api/common';\n\nfunction getElementCSSAnimation(\n target: HTMLElement | string | null,\n animationOptions: AnimationOptions,\n): AnimationGroup | null {\n const namedEffect = getNamedEffect(\n animationOptions,\n ) as AnimationEffectAPI<any> | null;\n\n if (!namedEffect) {\n return null;\n }\n\n if (!namedEffect.style) {\n // if this named effect does not have a style method, attempt to get group of Web Animations\n if (animationOptions.effectId && target) {\n return getElementAnimation(target, animationOptions.effectId);\n }\n\n return null;\n }\n\n const effectNames = namedEffect.getNames(animationOptions);\n const element = typeof target === 'string' ? getElement(target) : target;\n const animations = element?.getAnimations();\n const animationNames =\n animations?.map((anim) => (anim as CSSAnimation).animationName) ||\n ([] as string[]);\n const filteredAnimations: CSSAnimation[] = [];\n\n effectNames.forEach((name) => {\n if (animationNames.includes(name)) {\n filteredAnimations.push(\n animations?.find(\n (anim) => (anim as CSSAnimation).animationName === name,\n ) as CSSAnimation,\n );\n }\n });\n\n return filteredAnimations?.length\n ? new AnimationGroup(filteredAnimations)\n : null;\n}\n\nfunction getElementAnimation(\n target: HTMLElement | string,\n effectId: string,\n): AnimationGroup | null {\n const element = typeof target === 'string' ? getElement(target) : target;\n // somehow get the right animations\n const animations = element\n ?.getAnimations()\n .filter((anim: Animation | CSSAnimation) => {\n const id = anim.id || (anim as CSSAnimation).animationName;\n // if no id/name just return all animations\n return id ? id.startsWith(effectId) : true;\n });\n\n return animations?.length ? new AnimationGroup(animations) : null;\n}\n\nfunction getScrubScene(\n target: HTMLElement | string | null,\n animationOptions: AnimationOptions,\n trigger: Partial<TriggerVariant> & { element?: HTMLElement },\n sceneOptions: Record<string, any> = {},\n): ScrubScrollScene[] | ScrubPointerScene {\n const { disabled, allowActiveEvent, ...rest } = sceneOptions;\n const animation = getWebAnimation(target, animationOptions, trigger, rest);\n\n let typeSpecificOptions = {} as Record<string, any>;\n\n if (trigger.trigger === 'view-progress' && !window.ViewTimeline) {\n // TODO(ameerf): consider doing this only for bgscrub to not affect the other scroll effects\n const viewSource = trigger.element || getElement(trigger.componentId!);\n const { ready } = animation as AnimationGroup;\n\n return (animation as AnimationGroup).animations.map((partialAnimation) => {\n return {\n /* we use getters for start and end in order to access the animation's start and end\n only when initializing the scrub scene rather than immediately */\n get start() {\n return partialAnimation.start;\n },\n get end() {\n return partialAnimation.end;\n },\n viewSource,\n ready,\n getProgress() {\n return (animation as AnimationGroup).getProgress();\n },\n effect(__: any, p: number) {\n const { activeDuration } =\n partialAnimation.effect!.getComputedTiming();\n const { delay } = partialAnimation.effect!.getTiming();\n\n partialAnimation.currentTime =\n ((delay || 0) + ((activeDuration as number) || 0)) * p;\n },\n disabled,\n destroy() {\n partialAnimation.cancel();\n },\n } as ScrubScrollScene;\n });\n } else if (trigger.trigger === 'pointer-move') {\n const { centeredToTarget, transitionDuration, transitionEasing } =\n animationOptions as ScrubAnimationOptions;\n\n typeSpecificOptions = {\n target: (animation as MouseAnimationInstance).target,\n centeredToTarget,\n allowActiveEvent,\n };\n\n if (animationOptions.customEffect && transitionDuration) {\n typeSpecificOptions.transitionDuration = transitionDuration;\n typeSpecificOptions.transitionEasing = getJsEasing(transitionEasing);\n }\n }\n\n return {\n ...typeSpecificOptions,\n getProgress() {\n return (\n animation as AnimationGroup | CustomMouseAnimationInstance\n ).getProgress();\n },\n effect(\n __: any,\n p: number | { x: number; y: number },\n v?: { x: number; y: number },\n active?: boolean,\n ) {\n animation.progress(\n v\n ? {\n // @ts-expect-error spread error on p\n ...p,\n v,\n active,\n }\n : p,\n );\n },\n disabled,\n destroy() {\n animation.cancel();\n },\n } as ScrubPointerScene;\n}\n\nfunction getAnimation(\n target: HTMLElement | string | null,\n animationOptions: AnimationOptions,\n trigger?: Partial<TriggerVariant> & { element?: HTMLElement },\n): AnimationGroup | MouseAnimationInstance | null {\n const animation = getElementCSSAnimation(target, animationOptions);\n\n if (animation) {\n animation.ready = new Promise((resolve) => {\n prepareAnimation(target, animationOptions, resolve);\n });\n\n return animation;\n }\n\n return getWebAnimation(\n target,\n animationOptions,\n trigger,\n );\n}\n\nexport {\n getCSSAnimation,\n getWebAnimation,\n getElementCSSAnimation,\n getElementAnimation,\n getScrubScene,\n prepareAnimation,\n getAnimation,\n getEasing,\n};\n\nexport type { AnimationGroup };\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BlurMouse.d.ts","sourceRoot":"","sources":["../../../../src/library/mouse/BlurMouse.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EAErB,QAAQ,EAGT,MAAM,aAAa,CAAC;AAUrB,cAAM,kBAAmB,SAAQ,WAAW;IAC1C,QAAQ,CAAC,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,EAAE,QAAQ;
|
|
1
|
+
{"version":3,"file":"BlurMouse.d.ts","sourceRoot":"","sources":["../../../../src/library/mouse/BlurMouse.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EAErB,QAAQ,EAGT,MAAM,aAAa,CAAC;AAUrB,cAAM,kBAAmB,SAAQ,WAAW;IAC1C,QAAQ,CAAC,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,EAAE,QAAQ;IAyCjD,MAAM;CAKP;AAED,MAAM,CAAC,OAAO,UAAU,MAAM,CAC5B,OAAO,EAAE,qBAAqB,GAAG,qBAAqB,YA6BtC,WAAW,wBAE5B"}
|
package/dist/types/motion.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { AnimationOptions, TriggerVariant, ScrubScrollScene, ScrubPointerScene } from './types';
|
|
1
|
+
import type { AnimationOptions, TriggerVariant, MouseAnimationInstance, ScrubScrollScene, ScrubPointerScene } from './types';
|
|
2
2
|
import { AnimationGroup } from './AnimationGroup';
|
|
3
3
|
import { getEasing } from './utils';
|
|
4
4
|
import { getWebAnimation } from './api/webAnimations';
|
|
@@ -9,6 +9,9 @@ declare function getElementAnimation(target: HTMLElement | string, effectId: str
|
|
|
9
9
|
declare function getScrubScene(target: HTMLElement | string | null, animationOptions: AnimationOptions, trigger: Partial<TriggerVariant> & {
|
|
10
10
|
element?: HTMLElement;
|
|
11
11
|
}, sceneOptions?: Record<string, any>): ScrubScrollScene[] | ScrubPointerScene;
|
|
12
|
-
|
|
12
|
+
declare function getAnimation(target: HTMLElement | string | null, animationOptions: AnimationOptions, trigger?: Partial<TriggerVariant> & {
|
|
13
|
+
element?: HTMLElement;
|
|
14
|
+
}): AnimationGroup | MouseAnimationInstance | null;
|
|
15
|
+
export { getCSSAnimation, getWebAnimation, getElementCSSAnimation, getElementAnimation, getScrubScene, prepareAnimation, getAnimation, getEasing, };
|
|
13
16
|
export type { AnimationGroup };
|
|
14
17
|
//# sourceMappingURL=motion.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"motion.d.ts","sourceRoot":"","sources":["../../src/motion.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAEhB,cAAc,
|
|
1
|
+
{"version":3,"file":"motion.d.ts","sourceRoot":"","sources":["../../src/motion.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAEhB,cAAc,EACd,sBAAsB,EAGtB,gBAAgB,EAChB,iBAAiB,EAClB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAe,MAAM,SAAS,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAGjD,iBAAS,sBAAsB,CAC7B,MAAM,EAAE,WAAW,GAAG,MAAM,GAAG,IAAI,EACnC,gBAAgB,EAAE,gBAAgB,GACjC,cAAc,GAAG,IAAI,CAuCvB;AAED,iBAAS,mBAAmB,CAC1B,MAAM,EAAE,WAAW,GAAG,MAAM,EAC5B,QAAQ,EAAE,MAAM,GACf,cAAc,GAAG,IAAI,CAYvB;AAED,iBAAS,aAAa,CACpB,MAAM,EAAE,WAAW,GAAG,MAAM,GAAG,IAAI,EACnC,gBAAgB,EAAE,gBAAgB,EAClC,OAAO,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG;IAAE,OAAO,CAAC,EAAE,WAAW,CAAA;CAAE,EAC5D,YAAY,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM,GACrC,gBAAgB,EAAE,GAAG,iBAAiB,CAqFxC;AAED,iBAAS,YAAY,CACnB,MAAM,EAAE,WAAW,GAAG,MAAM,GAAG,IAAI,EACnC,gBAAgB,EAAE,gBAAgB,EAClC,OAAO,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG;IAAE,OAAO,CAAC,EAAE,WAAW,CAAA;CAAE,GAC5D,cAAc,GAAG,sBAAsB,GAAG,IAAI,CAgBhD;AAED,OAAO,EACL,eAAe,EACf,eAAe,EACf,sBAAsB,EACtB,mBAAmB,EACnB,aAAa,EACb,gBAAgB,EAChB,YAAY,EACZ,SAAS,GACV,CAAC;AAEF,YAAY,EAAE,cAAc,EAAE,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wix/motion",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.602.0",
|
|
4
4
|
"license": "UNLICENSED",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "wow!Team",
|
|
@@ -83,5 +83,5 @@
|
|
|
83
83
|
"wallaby": {
|
|
84
84
|
"autoDetect": true
|
|
85
85
|
},
|
|
86
|
-
"falconPackageHash": "
|
|
86
|
+
"falconPackageHash": "ee3298727e5bb0634ddc093e000d5d6e9afdf839369a2f87a12dcec8"
|
|
87
87
|
}
|