motion 10.4.0 → 10.5.0-alpha.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/README.md +0 -19
- package/dist/main.cjs.js +11 -13
- package/dist/main.es.js +7 -6
- package/dist/motion.min.js +1 -1
- package/dist/motion.umd.js +8 -1292
- package/dist/size-index.js +1 -0
- package/lib/index.js +5 -0
- package/lib/index.js.map +1 -0
- package/package.json +5 -138
- package/types/index.d.ts +3 -7
- package/types/index.d.ts.map +1 -0
- package/CHANGELOG.md +0 -103
- package/LICENSE +0 -21
- package/dist/react.cjs.js +0 -9
- package/dist/react.es.js +0 -1
- package/dist/size-animate-dom.js +0 -1
- package/dist/size-animate-style.js +0 -1
- package/dist/size-react.js +0 -1
- package/dist/size-spring.js +0 -1
- package/dist/size-timeline-dom.js +0 -1
- package/dist/size-webpack-animate.js +0 -1
- package/dist/targets/dom/animate-style.cjs.js +0 -182
- package/dist/targets/dom/animate-style.es.js +0 -178
- package/dist/targets/dom/animate.cjs.js +0 -42
- package/dist/targets/dom/animate.es.js +0 -38
- package/dist/targets/dom/data.cjs.js +0 -18
- package/dist/targets/dom/data.es.js +0 -14
- package/dist/targets/dom/style.cjs.js +0 -22
- package/dist/targets/dom/style.es.js +0 -18
- package/dist/targets/dom/timeline/index.cjs.js +0 -190
- package/dist/targets/dom/timeline/index.es.js +0 -185
- package/dist/targets/dom/timeline/utils/calc-time.cjs.js +0 -23
- package/dist/targets/dom/timeline/utils/calc-time.es.js +0 -19
- package/dist/targets/dom/timeline/utils/edit.cjs.js +0 -36
- package/dist/targets/dom/timeline/utils/edit.es.js +0 -31
- package/dist/targets/dom/timeline/utils/sort.cjs.js +0 -14
- package/dist/targets/dom/timeline/utils/sort.es.js +0 -10
- package/dist/targets/dom/utils/apply.cjs.js +0 -9
- package/dist/targets/dom/utils/apply.es.js +0 -4
- package/dist/targets/dom/utils/controls.cjs.js +0 -59
- package/dist/targets/dom/utils/controls.es.js +0 -54
- package/dist/targets/dom/utils/css-var.cjs.js +0 -29
- package/dist/targets/dom/utils/css-var.es.js +0 -23
- package/dist/targets/dom/utils/defaults.cjs.js +0 -13
- package/dist/targets/dom/utils/defaults.es.js +0 -9
- package/dist/targets/dom/utils/easing.cjs.js +0 -18
- package/dist/targets/dom/utils/easing.es.js +0 -10
- package/dist/targets/dom/utils/feature-detection.cjs.js +0 -31
- package/dist/targets/dom/utils/feature-detection.es.js +0 -27
- package/dist/targets/dom/utils/get-style-name.cjs.js +0 -13
- package/dist/targets/dom/utils/get-style-name.es.js +0 -9
- package/dist/targets/dom/utils/keyframes.cjs.js +0 -16
- package/dist/targets/dom/utils/keyframes.es.js +0 -11
- package/dist/targets/dom/utils/options.cjs.js +0 -13
- package/dist/targets/dom/utils/options.es.js +0 -9
- package/dist/targets/dom/utils/resolve-elements.cjs.js +0 -22
- package/dist/targets/dom/utils/resolve-elements.es.js +0 -18
- package/dist/targets/dom/utils/stop-animation.cjs.js +0 -19
- package/dist/targets/dom/utils/stop-animation.es.js +0 -15
- package/dist/targets/dom/utils/time.cjs.js +0 -7
- package/dist/targets/dom/utils/time.es.js +0 -3
- package/dist/targets/dom/utils/transforms.cjs.js +0 -85
- package/dist/targets/dom/utils/transforms.es.js +0 -74
- package/dist/targets/js/NumberAnimation.cjs.js +0 -144
- package/dist/targets/js/NumberAnimation.es.js +0 -140
- package/dist/targets/js/easing/cubic-bezier.cjs.js +0 -57
- package/dist/targets/js/easing/cubic-bezier.es.js +0 -53
- package/dist/targets/js/easing/glide/generator.cjs.js +0 -99
- package/dist/targets/js/easing/glide/generator.es.js +0 -95
- package/dist/targets/js/easing/glide/index.cjs.js +0 -10
- package/dist/targets/js/easing/glide/index.es.js +0 -6
- package/dist/targets/js/easing/spring/generator.cjs.js +0 -64
- package/dist/targets/js/easing/spring/generator.es.js +0 -57
- package/dist/targets/js/easing/spring/index.cjs.js +0 -10
- package/dist/targets/js/easing/spring/index.es.js +0 -6
- package/dist/targets/js/easing/steps.cjs.js +0 -15
- package/dist/targets/js/easing/steps.es.js +0 -11
- package/dist/targets/js/easing/utils/create-generator-easing.cjs.js +0 -71
- package/dist/targets/js/easing/utils/create-generator-easing.es.js +0 -67
- package/dist/targets/js/easing/utils/get-function.cjs.js +0 -37
- package/dist/targets/js/easing/utils/get-function.es.js +0 -33
- package/dist/targets/js/easing/utils/has-reached-target.cjs.js +0 -10
- package/dist/targets/js/easing/utils/has-reached-target.es.js +0 -6
- package/dist/targets/js/easing/utils/pregenerate-keyframes.cjs.js +0 -34
- package/dist/targets/js/easing/utils/pregenerate-keyframes.es.js +0 -30
- package/dist/targets/js/utils/get-easing.cjs.js +0 -14
- package/dist/targets/js/utils/get-easing.es.js +0 -10
- package/dist/targets/js/utils/interpolate.cjs.js +0 -35
- package/dist/targets/js/utils/interpolate.es.js +0 -31
- package/dist/targets/js/utils/offset.cjs.js +0 -22
- package/dist/targets/js/utils/offset.es.js +0 -17
- package/dist/targets/react/animated.cjs.js +0 -126
- package/dist/targets/react/animated.es.js +0 -101
- package/dist/targets/react/context.cjs.js +0 -9
- package/dist/targets/react/context.es.js +0 -5
- package/dist/targets/react/hooks/use-animation.cjs.js +0 -47
- package/dist/targets/react/hooks/use-animation.es.js +0 -43
- package/dist/targets/react/hooks/use-exit.cjs.js +0 -27
- package/dist/targets/react/hooks/use-exit.es.js +0 -23
- package/dist/targets/react/hooks/use-gesture-state.cjs.js +0 -17
- package/dist/targets/react/hooks/use-gesture-state.es.js +0 -13
- package/dist/targets/react/hooks/use-hover.cjs.js +0 -24
- package/dist/targets/react/hooks/use-hover.es.js +0 -20
- package/dist/targets/react/hooks/use-press.cjs.js +0 -25
- package/dist/targets/react/hooks/use-press.es.js +0 -21
- package/dist/targets/react/hooks/use-viewport.cjs.js +0 -37
- package/dist/targets/react/hooks/use-viewport.es.js +0 -33
- package/dist/targets/react/index.cjs.js +0 -17
- package/dist/targets/react/index.es.js +0 -13
- package/dist/targets/react/utils/has-changed.cjs.js +0 -24
- package/dist/targets/react/utils/has-changed.es.js +0 -19
- package/dist/targets/react/utils/keyframes.cjs.js +0 -38
- package/dist/targets/react/utils/keyframes.es.js +0 -34
- package/dist/targets/react/utils/poses.cjs.js +0 -14
- package/dist/targets/react/utils/poses.es.js +0 -10
- package/dist/targets/react/utils/update-target.cjs.js +0 -20
- package/dist/targets/react/utils/update-target.es.js +0 -16
- package/dist/utils/array.cjs.js +0 -14
- package/dist/utils/array.es.js +0 -9
- package/dist/utils/clamp.cjs.js +0 -7
- package/dist/utils/clamp.es.js +0 -3
- package/dist/utils/is-number.cjs.js +0 -7
- package/dist/utils/is-number.es.js +0 -3
- package/dist/utils/mix.cjs.js +0 -28
- package/dist/utils/mix.es.js +0 -24
- package/dist/utils/noop.cjs.js +0 -9
- package/dist/utils/noop.es.js +0 -4
- package/dist/utils/progress.cjs.js +0 -20
- package/dist/utils/progress.es.js +0 -16
- package/dist/utils/stagger.cjs.js +0 -38
- package/dist/utils/stagger.es.js +0 -32
- package/dist/utils/velocity-per-second.cjs.js +0 -15
- package/dist/utils/velocity-per-second.es.js +0 -11
- package/dist/utils/wrap.cjs.js +0 -10
- package/dist/utils/wrap.es.js +0 -6
- package/react/package.json +0 -6
- package/types/react-entry.d.ts +0 -2
- package/types/targets/dom/animate-style.d.ts +0 -2
- package/types/targets/dom/animate.d.ts +0 -2
- package/types/targets/dom/data.d.ts +0 -2
- package/types/targets/dom/style.d.ts +0 -3
- package/types/targets/dom/timeline/index.d.ts +0 -15
- package/types/targets/dom/timeline/types.d.ts +0 -13
- package/types/targets/dom/timeline/utils/calc-time.d.ts +0 -2
- package/types/targets/dom/timeline/utils/edit.d.ts +0 -4
- package/types/targets/dom/timeline/utils/sort.d.ts +0 -2
- package/types/targets/dom/types.d.ts +0 -114
- package/types/targets/dom/utils/apply.d.ts +0 -3
- package/types/targets/dom/utils/controls.d.ts +0 -12
- package/types/targets/dom/utils/css-var.d.ts +0 -3
- package/types/targets/dom/utils/defaults.d.ts +0 -8
- package/types/targets/dom/utils/easing.d.ts +0 -6
- package/types/targets/dom/utils/feature-detection.d.ts +0 -8
- package/types/targets/dom/utils/get-style-name.d.ts +0 -1
- package/types/targets/dom/utils/keyframes.d.ts +0 -3
- package/types/targets/dom/utils/options.d.ts +0 -2
- package/types/targets/dom/utils/resolve-elements.d.ts +0 -4
- package/types/targets/dom/utils/stop-animation.d.ts +0 -6
- package/types/targets/dom/utils/time.d.ts +0 -1
- package/types/targets/dom/utils/transforms.d.ts +0 -20
- package/types/targets/js/NumberAnimation.d.ts +0 -24
- package/types/targets/js/easing/cubic-bezier.d.ts +0 -1
- package/types/targets/js/easing/glide/generator.d.ts +0 -5
- package/types/targets/js/easing/glide/index.d.ts +0 -2
- package/types/targets/js/easing/glide/types.d.ts +0 -14
- package/types/targets/js/easing/spring/generator.d.ts +0 -6
- package/types/targets/js/easing/spring/index.d.ts +0 -2
- package/types/targets/js/easing/spring/types.d.ts +0 -10
- package/types/targets/js/easing/steps.d.ts +0 -3
- package/types/targets/js/easing/utils/create-generator-easing.d.ts +0 -3
- package/types/targets/js/easing/utils/get-function.d.ts +0 -3
- package/types/targets/js/easing/utils/has-reached-target.d.ts +0 -1
- package/types/targets/js/easing/utils/pregenerate-keyframes.d.ts +0 -7
- package/types/targets/js/types.d.ts +0 -12
- package/types/targets/js/utils/get-easing.d.ts +0 -1
- package/types/targets/js/utils/interpolate.d.ts +0 -2
- package/types/targets/js/utils/offset.d.ts +0 -2
- package/types/targets/react/animated.d.ts +0 -3
- package/types/targets/react/context.d.ts +0 -3
- package/types/targets/react/hooks/use-animation.d.ts +0 -4
- package/types/targets/react/hooks/use-exit.d.ts +0 -3
- package/types/targets/react/hooks/use-gesture-state.d.ts +0 -4
- package/types/targets/react/hooks/use-hover.d.ts +0 -4
- package/types/targets/react/hooks/use-press.d.ts +0 -4
- package/types/targets/react/hooks/use-viewport.d.ts +0 -4
- package/types/targets/react/index.d.ts +0 -2
- package/types/targets/react/types.d.ts +0 -108
- package/types/targets/react/utils/has-changed.d.ts +0 -2
- package/types/targets/react/utils/keyframes.d.ts +0 -3
- package/types/targets/react/utils/poses.d.ts +0 -2
- package/types/targets/react/utils/supported-elements.d.ts +0 -8
- package/types/targets/react/utils/update-target.d.ts +0 -3
- package/types/utils/array.d.ts +0 -2
- package/types/utils/clamp.d.ts +0 -1
- package/types/utils/interpolate.d.ts +0 -0
- package/types/utils/is-number.d.ts +0 -1
- package/types/utils/mix.d.ts +0 -1
- package/types/utils/noop.d.ts +0 -2
- package/types/utils/progress.d.ts +0 -1
- package/types/utils/stagger.d.ts +0 -12
- package/types/utils/value-types.d.ts +0 -0
- package/types/utils/velocity-per-second.d.ts +0 -1
- package/types/utils/wrap.d.ts +0 -1
|
@@ -1,99 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
-
|
|
5
|
-
var generator = require('../spring/generator.cjs.js');
|
|
6
|
-
var time = require('../../../dom/utils/time.cjs.js');
|
|
7
|
-
|
|
8
|
-
const createGlideGenerator = ({ from = 0, velocity = 0.0, power = 0.8, decay = 0.325, bounceDamping, bounceStiffness, changeTarget, min, max, restDistance = 0.5, restSpeed, }) => {
|
|
9
|
-
decay = time.ms(decay);
|
|
10
|
-
const state = {
|
|
11
|
-
value: from,
|
|
12
|
-
target: from,
|
|
13
|
-
velocity,
|
|
14
|
-
hasReachedTarget: false,
|
|
15
|
-
done: false,
|
|
16
|
-
};
|
|
17
|
-
const isOutOfBounds = (v) => (min !== undefined && v < min) || (max !== undefined && v > max);
|
|
18
|
-
const nearestBoundary = (v) => {
|
|
19
|
-
if (min === undefined)
|
|
20
|
-
return max;
|
|
21
|
-
if (max === undefined)
|
|
22
|
-
return min;
|
|
23
|
-
return Math.abs(min - v) < Math.abs(max - v) ? min : max;
|
|
24
|
-
};
|
|
25
|
-
let amplitude = power * velocity;
|
|
26
|
-
const ideal = from + amplitude;
|
|
27
|
-
const target = changeTarget === undefined ? ideal : changeTarget(ideal);
|
|
28
|
-
state.target = target;
|
|
29
|
-
/**
|
|
30
|
-
* If the target has changed we need to re-calculate the amplitude, otherwise
|
|
31
|
-
* the animation will start from the wrong position.
|
|
32
|
-
*/
|
|
33
|
-
if (target !== ideal)
|
|
34
|
-
amplitude = target - from;
|
|
35
|
-
const calcDelta = (t) => -amplitude * Math.exp(-t / decay);
|
|
36
|
-
const calcLatest = (t) => target + calcDelta(t);
|
|
37
|
-
const applyFriction = (t) => {
|
|
38
|
-
const delta = calcDelta(t);
|
|
39
|
-
const latest = calcLatest(t);
|
|
40
|
-
state.done = Math.abs(delta) <= restDistance;
|
|
41
|
-
state.value = state.done ? target : latest;
|
|
42
|
-
state.velocity =
|
|
43
|
-
t === 0 ? velocity : generator.calcVelocity(calcLatest, t, state.value);
|
|
44
|
-
};
|
|
45
|
-
/**
|
|
46
|
-
* Ideally this would resolve for t in a stateless way, we could
|
|
47
|
-
* do that by always precalculating the animation but as we know
|
|
48
|
-
* this will be done anyway we can assume that spring will
|
|
49
|
-
* be discovered during that.
|
|
50
|
-
*/
|
|
51
|
-
let timeReachedBoundary;
|
|
52
|
-
let spring;
|
|
53
|
-
const checkCatchBoundary = (t) => {
|
|
54
|
-
if (!isOutOfBounds(state.value))
|
|
55
|
-
return;
|
|
56
|
-
timeReachedBoundary = t;
|
|
57
|
-
spring = generator.createSpringGenerator({
|
|
58
|
-
from: state.value,
|
|
59
|
-
to: nearestBoundary(state.value),
|
|
60
|
-
velocity: state.velocity,
|
|
61
|
-
damping: bounceDamping,
|
|
62
|
-
stiffness: bounceStiffness,
|
|
63
|
-
restDistance,
|
|
64
|
-
restSpeed,
|
|
65
|
-
});
|
|
66
|
-
};
|
|
67
|
-
checkCatchBoundary(0);
|
|
68
|
-
return {
|
|
69
|
-
next: (t) => {
|
|
70
|
-
/**
|
|
71
|
-
* We need to resolve the friction to figure out if we need a
|
|
72
|
-
* spring but we don't want to do this twice per frame. So here
|
|
73
|
-
* we flag if we updated for this frame and later if we did
|
|
74
|
-
* we can skip doing it again.
|
|
75
|
-
*/
|
|
76
|
-
let hasUpdatedFrame = false;
|
|
77
|
-
if (!spring && timeReachedBoundary === undefined) {
|
|
78
|
-
hasUpdatedFrame = true;
|
|
79
|
-
applyFriction(t);
|
|
80
|
-
checkCatchBoundary(t);
|
|
81
|
-
}
|
|
82
|
-
/**
|
|
83
|
-
* If we have a spring and the provided t is beyond the moment the friction
|
|
84
|
-
* animation crossed the min/max boundary, use the spring.
|
|
85
|
-
*/
|
|
86
|
-
if (timeReachedBoundary !== undefined && t > timeReachedBoundary) {
|
|
87
|
-
state.hasReachedTarget = true;
|
|
88
|
-
return spring.next(t - timeReachedBoundary);
|
|
89
|
-
}
|
|
90
|
-
else {
|
|
91
|
-
state.hasReachedTarget = false;
|
|
92
|
-
!hasUpdatedFrame && applyFriction(t);
|
|
93
|
-
return state;
|
|
94
|
-
}
|
|
95
|
-
},
|
|
96
|
-
};
|
|
97
|
-
};
|
|
98
|
-
|
|
99
|
-
exports.createGlideGenerator = createGlideGenerator;
|
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
import { calcVelocity, createSpringGenerator } from '../spring/generator.es.js';
|
|
2
|
-
import { ms } from '../../../dom/utils/time.es.js';
|
|
3
|
-
|
|
4
|
-
const createGlideGenerator = ({ from = 0, velocity = 0.0, power = 0.8, decay = 0.325, bounceDamping, bounceStiffness, changeTarget, min, max, restDistance = 0.5, restSpeed, }) => {
|
|
5
|
-
decay = ms(decay);
|
|
6
|
-
const state = {
|
|
7
|
-
value: from,
|
|
8
|
-
target: from,
|
|
9
|
-
velocity,
|
|
10
|
-
hasReachedTarget: false,
|
|
11
|
-
done: false,
|
|
12
|
-
};
|
|
13
|
-
const isOutOfBounds = (v) => (min !== undefined && v < min) || (max !== undefined && v > max);
|
|
14
|
-
const nearestBoundary = (v) => {
|
|
15
|
-
if (min === undefined)
|
|
16
|
-
return max;
|
|
17
|
-
if (max === undefined)
|
|
18
|
-
return min;
|
|
19
|
-
return Math.abs(min - v) < Math.abs(max - v) ? min : max;
|
|
20
|
-
};
|
|
21
|
-
let amplitude = power * velocity;
|
|
22
|
-
const ideal = from + amplitude;
|
|
23
|
-
const target = changeTarget === undefined ? ideal : changeTarget(ideal);
|
|
24
|
-
state.target = target;
|
|
25
|
-
/**
|
|
26
|
-
* If the target has changed we need to re-calculate the amplitude, otherwise
|
|
27
|
-
* the animation will start from the wrong position.
|
|
28
|
-
*/
|
|
29
|
-
if (target !== ideal)
|
|
30
|
-
amplitude = target - from;
|
|
31
|
-
const calcDelta = (t) => -amplitude * Math.exp(-t / decay);
|
|
32
|
-
const calcLatest = (t) => target + calcDelta(t);
|
|
33
|
-
const applyFriction = (t) => {
|
|
34
|
-
const delta = calcDelta(t);
|
|
35
|
-
const latest = calcLatest(t);
|
|
36
|
-
state.done = Math.abs(delta) <= restDistance;
|
|
37
|
-
state.value = state.done ? target : latest;
|
|
38
|
-
state.velocity =
|
|
39
|
-
t === 0 ? velocity : calcVelocity(calcLatest, t, state.value);
|
|
40
|
-
};
|
|
41
|
-
/**
|
|
42
|
-
* Ideally this would resolve for t in a stateless way, we could
|
|
43
|
-
* do that by always precalculating the animation but as we know
|
|
44
|
-
* this will be done anyway we can assume that spring will
|
|
45
|
-
* be discovered during that.
|
|
46
|
-
*/
|
|
47
|
-
let timeReachedBoundary;
|
|
48
|
-
let spring;
|
|
49
|
-
const checkCatchBoundary = (t) => {
|
|
50
|
-
if (!isOutOfBounds(state.value))
|
|
51
|
-
return;
|
|
52
|
-
timeReachedBoundary = t;
|
|
53
|
-
spring = createSpringGenerator({
|
|
54
|
-
from: state.value,
|
|
55
|
-
to: nearestBoundary(state.value),
|
|
56
|
-
velocity: state.velocity,
|
|
57
|
-
damping: bounceDamping,
|
|
58
|
-
stiffness: bounceStiffness,
|
|
59
|
-
restDistance,
|
|
60
|
-
restSpeed,
|
|
61
|
-
});
|
|
62
|
-
};
|
|
63
|
-
checkCatchBoundary(0);
|
|
64
|
-
return {
|
|
65
|
-
next: (t) => {
|
|
66
|
-
/**
|
|
67
|
-
* We need to resolve the friction to figure out if we need a
|
|
68
|
-
* spring but we don't want to do this twice per frame. So here
|
|
69
|
-
* we flag if we updated for this frame and later if we did
|
|
70
|
-
* we can skip doing it again.
|
|
71
|
-
*/
|
|
72
|
-
let hasUpdatedFrame = false;
|
|
73
|
-
if (!spring && timeReachedBoundary === undefined) {
|
|
74
|
-
hasUpdatedFrame = true;
|
|
75
|
-
applyFriction(t);
|
|
76
|
-
checkCatchBoundary(t);
|
|
77
|
-
}
|
|
78
|
-
/**
|
|
79
|
-
* If we have a spring and the provided t is beyond the moment the friction
|
|
80
|
-
* animation crossed the min/max boundary, use the spring.
|
|
81
|
-
*/
|
|
82
|
-
if (timeReachedBoundary !== undefined && t > timeReachedBoundary) {
|
|
83
|
-
state.hasReachedTarget = true;
|
|
84
|
-
return spring.next(t - timeReachedBoundary);
|
|
85
|
-
}
|
|
86
|
-
else {
|
|
87
|
-
state.hasReachedTarget = false;
|
|
88
|
-
!hasUpdatedFrame && applyFriction(t);
|
|
89
|
-
return state;
|
|
90
|
-
}
|
|
91
|
-
},
|
|
92
|
-
};
|
|
93
|
-
};
|
|
94
|
-
|
|
95
|
-
export { createGlideGenerator };
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
-
|
|
5
|
-
var generator = require('./generator.cjs.js');
|
|
6
|
-
var createGeneratorEasing = require('../utils/create-generator-easing.cjs.js');
|
|
7
|
-
|
|
8
|
-
const glide = createGeneratorEasing.createGeneratorEasing(generator.createGlideGenerator);
|
|
9
|
-
|
|
10
|
-
exports.glide = glide;
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
-
|
|
5
|
-
var velocityPerSecond = require('../../../../utils/velocity-per-second.cjs.js');
|
|
6
|
-
var hasReachedTarget = require('../utils/has-reached-target.cjs.js');
|
|
7
|
-
|
|
8
|
-
const defaultStiffness = 100.0;
|
|
9
|
-
const defaultDamping = 10.0;
|
|
10
|
-
const defaultMass = 1.0;
|
|
11
|
-
const calcDampingRatio = (stiffness = defaultStiffness, damping = defaultDamping, mass = defaultMass) => damping / (2 * Math.sqrt(stiffness * mass));
|
|
12
|
-
const calcAngularFreq = (undampedFreq, dampingRatio) => undampedFreq * Math.sqrt(1 - dampingRatio * dampingRatio);
|
|
13
|
-
const createSpringGenerator = ({ stiffness = defaultStiffness, damping = defaultDamping, mass = defaultMass, from = 0, to = 1, velocity = 0.0, restSpeed = 2, restDistance = 0.5, } = {}) => {
|
|
14
|
-
velocity = velocity ? velocity / 1000 : 0.0;
|
|
15
|
-
const state = {
|
|
16
|
-
done: false,
|
|
17
|
-
value: from,
|
|
18
|
-
target: to,
|
|
19
|
-
velocity,
|
|
20
|
-
hasReachedTarget: false,
|
|
21
|
-
};
|
|
22
|
-
const dampingRatio = calcDampingRatio(stiffness, damping, mass);
|
|
23
|
-
const initialDelta = to - from;
|
|
24
|
-
const undampedAngularFreq = Math.sqrt(stiffness / mass) / 1000;
|
|
25
|
-
const angularFreq = calcAngularFreq(undampedAngularFreq, dampingRatio);
|
|
26
|
-
let resolveSpring;
|
|
27
|
-
if (dampingRatio < 1) {
|
|
28
|
-
// Underdamped spring (bouncy)
|
|
29
|
-
resolveSpring = (t) => to -
|
|
30
|
-
Math.exp(-dampingRatio * undampedAngularFreq * t) *
|
|
31
|
-
(((-velocity + dampingRatio * undampedAngularFreq * initialDelta) /
|
|
32
|
-
angularFreq) *
|
|
33
|
-
Math.sin(angularFreq * t) +
|
|
34
|
-
initialDelta * Math.cos(angularFreq * t));
|
|
35
|
-
}
|
|
36
|
-
else {
|
|
37
|
-
// Critically damped spring
|
|
38
|
-
resolveSpring = (t) => to -
|
|
39
|
-
Math.exp(-undampedAngularFreq * t) *
|
|
40
|
-
(initialDelta + (velocity + undampedAngularFreq * initialDelta) * t);
|
|
41
|
-
}
|
|
42
|
-
return {
|
|
43
|
-
next: (t) => {
|
|
44
|
-
state.value = resolveSpring(t);
|
|
45
|
-
state.velocity =
|
|
46
|
-
t === 0 ? velocity : calcVelocity(resolveSpring, t, state.value);
|
|
47
|
-
const isBelowVelocityThreshold = Math.abs(state.velocity) <= restSpeed;
|
|
48
|
-
const isBelowDisplacementThreshold = Math.abs(to - state.value) <= restDistance;
|
|
49
|
-
state.done = isBelowVelocityThreshold && isBelowDisplacementThreshold;
|
|
50
|
-
state.hasReachedTarget = hasReachedTarget.hasReachedTarget(from, to, state.value);
|
|
51
|
-
return state;
|
|
52
|
-
},
|
|
53
|
-
};
|
|
54
|
-
};
|
|
55
|
-
const sampleT = 5; // ms
|
|
56
|
-
function calcVelocity(resolveValue, t, current) {
|
|
57
|
-
const prevT = Math.max(t - sampleT, 0);
|
|
58
|
-
return velocityPerSecond.velocityPerSecond(current - resolveValue(prevT), 5);
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
exports.calcAngularFreq = calcAngularFreq;
|
|
62
|
-
exports.calcDampingRatio = calcDampingRatio;
|
|
63
|
-
exports.calcVelocity = calcVelocity;
|
|
64
|
-
exports.createSpringGenerator = createSpringGenerator;
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
import { velocityPerSecond } from '../../../../utils/velocity-per-second.es.js';
|
|
2
|
-
import { hasReachedTarget } from '../utils/has-reached-target.es.js';
|
|
3
|
-
|
|
4
|
-
const defaultStiffness = 100.0;
|
|
5
|
-
const defaultDamping = 10.0;
|
|
6
|
-
const defaultMass = 1.0;
|
|
7
|
-
const calcDampingRatio = (stiffness = defaultStiffness, damping = defaultDamping, mass = defaultMass) => damping / (2 * Math.sqrt(stiffness * mass));
|
|
8
|
-
const calcAngularFreq = (undampedFreq, dampingRatio) => undampedFreq * Math.sqrt(1 - dampingRatio * dampingRatio);
|
|
9
|
-
const createSpringGenerator = ({ stiffness = defaultStiffness, damping = defaultDamping, mass = defaultMass, from = 0, to = 1, velocity = 0.0, restSpeed = 2, restDistance = 0.5, } = {}) => {
|
|
10
|
-
velocity = velocity ? velocity / 1000 : 0.0;
|
|
11
|
-
const state = {
|
|
12
|
-
done: false,
|
|
13
|
-
value: from,
|
|
14
|
-
target: to,
|
|
15
|
-
velocity,
|
|
16
|
-
hasReachedTarget: false,
|
|
17
|
-
};
|
|
18
|
-
const dampingRatio = calcDampingRatio(stiffness, damping, mass);
|
|
19
|
-
const initialDelta = to - from;
|
|
20
|
-
const undampedAngularFreq = Math.sqrt(stiffness / mass) / 1000;
|
|
21
|
-
const angularFreq = calcAngularFreq(undampedAngularFreq, dampingRatio);
|
|
22
|
-
let resolveSpring;
|
|
23
|
-
if (dampingRatio < 1) {
|
|
24
|
-
// Underdamped spring (bouncy)
|
|
25
|
-
resolveSpring = (t) => to -
|
|
26
|
-
Math.exp(-dampingRatio * undampedAngularFreq * t) *
|
|
27
|
-
(((-velocity + dampingRatio * undampedAngularFreq * initialDelta) /
|
|
28
|
-
angularFreq) *
|
|
29
|
-
Math.sin(angularFreq * t) +
|
|
30
|
-
initialDelta * Math.cos(angularFreq * t));
|
|
31
|
-
}
|
|
32
|
-
else {
|
|
33
|
-
// Critically damped spring
|
|
34
|
-
resolveSpring = (t) => to -
|
|
35
|
-
Math.exp(-undampedAngularFreq * t) *
|
|
36
|
-
(initialDelta + (velocity + undampedAngularFreq * initialDelta) * t);
|
|
37
|
-
}
|
|
38
|
-
return {
|
|
39
|
-
next: (t) => {
|
|
40
|
-
state.value = resolveSpring(t);
|
|
41
|
-
state.velocity =
|
|
42
|
-
t === 0 ? velocity : calcVelocity(resolveSpring, t, state.value);
|
|
43
|
-
const isBelowVelocityThreshold = Math.abs(state.velocity) <= restSpeed;
|
|
44
|
-
const isBelowDisplacementThreshold = Math.abs(to - state.value) <= restDistance;
|
|
45
|
-
state.done = isBelowVelocityThreshold && isBelowDisplacementThreshold;
|
|
46
|
-
state.hasReachedTarget = hasReachedTarget(from, to, state.value);
|
|
47
|
-
return state;
|
|
48
|
-
},
|
|
49
|
-
};
|
|
50
|
-
};
|
|
51
|
-
const sampleT = 5; // ms
|
|
52
|
-
function calcVelocity(resolveValue, t, current) {
|
|
53
|
-
const prevT = Math.max(t - sampleT, 0);
|
|
54
|
-
return velocityPerSecond(current - resolveValue(prevT), 5);
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
export { calcAngularFreq, calcDampingRatio, calcVelocity, createSpringGenerator };
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
-
|
|
5
|
-
var generator = require('./generator.cjs.js');
|
|
6
|
-
var createGeneratorEasing = require('../utils/create-generator-easing.cjs.js');
|
|
7
|
-
|
|
8
|
-
const spring = createGeneratorEasing.createGeneratorEasing(generator.createSpringGenerator);
|
|
9
|
-
|
|
10
|
-
exports.spring = spring;
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
-
|
|
5
|
-
var clamp = require('../../../utils/clamp.cjs.js');
|
|
6
|
-
|
|
7
|
-
const steps = (steps, direction = "end") => (progress) => {
|
|
8
|
-
progress =
|
|
9
|
-
direction === "end" ? Math.min(progress, 0.999) : Math.max(progress, 0.001);
|
|
10
|
-
const expanded = progress * steps;
|
|
11
|
-
const rounded = direction === "end" ? Math.floor(expanded) : Math.ceil(expanded);
|
|
12
|
-
return clamp.clamp(0, 1, rounded / steps);
|
|
13
|
-
};
|
|
14
|
-
|
|
15
|
-
exports.steps = steps;
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { clamp } from '../../../utils/clamp.es.js';
|
|
2
|
-
|
|
3
|
-
const steps = (steps, direction = "end") => (progress) => {
|
|
4
|
-
progress =
|
|
5
|
-
direction === "end" ? Math.min(progress, 0.999) : Math.max(progress, 0.001);
|
|
6
|
-
const expanded = progress * steps;
|
|
7
|
-
const rounded = direction === "end" ? Math.floor(expanded) : Math.ceil(expanded);
|
|
8
|
-
return clamp(0, 1, rounded / steps);
|
|
9
|
-
};
|
|
10
|
-
|
|
11
|
-
export { steps };
|
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
-
|
|
5
|
-
var pregenerateKeyframes = require('./pregenerate-keyframes.cjs.js');
|
|
6
|
-
|
|
7
|
-
function createGeneratorEasing(createGenerator) {
|
|
8
|
-
const keyframesCache = new WeakMap();
|
|
9
|
-
return (options = {}) => {
|
|
10
|
-
const generatorCache = new Map();
|
|
11
|
-
const getGenerator = (from = 0, to = 100, velocity = 0, isScale = false) => {
|
|
12
|
-
const key = `${from}-${to}-${velocity}-${isScale}`;
|
|
13
|
-
if (!generatorCache.has(key)) {
|
|
14
|
-
generatorCache.set(key, createGenerator(Object.assign({ from,
|
|
15
|
-
to,
|
|
16
|
-
velocity, restSpeed: isScale ? 0.05 : 2, restDistance: isScale ? 0.01 : 0.5 }, options)));
|
|
17
|
-
}
|
|
18
|
-
return generatorCache.get(key);
|
|
19
|
-
};
|
|
20
|
-
const getKeyframes = (generator) => {
|
|
21
|
-
if (!keyframesCache.has(generator)) {
|
|
22
|
-
keyframesCache.set(generator, pregenerateKeyframes.pregenerateKeyframes(generator));
|
|
23
|
-
}
|
|
24
|
-
return keyframesCache.get(generator);
|
|
25
|
-
};
|
|
26
|
-
return {
|
|
27
|
-
createAnimation: (keyframes, getOrigin, canUseGenerator, name, data) => {
|
|
28
|
-
let settings;
|
|
29
|
-
let generator;
|
|
30
|
-
const numKeyframes = keyframes.length;
|
|
31
|
-
let shouldUseGenerator = canUseGenerator &&
|
|
32
|
-
numKeyframes <= 2 &&
|
|
33
|
-
keyframes.every(isNumberOrNull);
|
|
34
|
-
if (shouldUseGenerator) {
|
|
35
|
-
const prevAnimationState = name && data && data.prevGeneratorState[name];
|
|
36
|
-
const velocity = prevAnimationState &&
|
|
37
|
-
(numKeyframes === 1 ||
|
|
38
|
-
(numKeyframes === 2 && keyframes[0] === null))
|
|
39
|
-
? prevAnimationState.velocity
|
|
40
|
-
: 0;
|
|
41
|
-
const target = keyframes[numKeyframes - 1];
|
|
42
|
-
const unresolvedOrigin = numKeyframes === 1 ? null : keyframes[0];
|
|
43
|
-
const origin = unresolvedOrigin === null
|
|
44
|
-
? prevAnimationState
|
|
45
|
-
? prevAnimationState.value
|
|
46
|
-
: parseFloat(getOrigin())
|
|
47
|
-
: unresolvedOrigin;
|
|
48
|
-
generator = getGenerator(origin, target, velocity, name === null || name === void 0 ? void 0 : name.includes("scale"));
|
|
49
|
-
const keyframesMetadata = getKeyframes(generator);
|
|
50
|
-
settings = Object.assign(Object.assign({}, keyframesMetadata), { easing: "linear" });
|
|
51
|
-
}
|
|
52
|
-
else {
|
|
53
|
-
generator = getGenerator(0, 100);
|
|
54
|
-
const keyframesMetadata = getKeyframes(generator);
|
|
55
|
-
settings = {
|
|
56
|
-
easing: "ease",
|
|
57
|
-
duration: keyframesMetadata.overshootDuration,
|
|
58
|
-
};
|
|
59
|
-
}
|
|
60
|
-
// TODO Add test for this
|
|
61
|
-
if (generator && data && name) {
|
|
62
|
-
data.generators[name] = generator;
|
|
63
|
-
}
|
|
64
|
-
return settings;
|
|
65
|
-
},
|
|
66
|
-
};
|
|
67
|
-
};
|
|
68
|
-
}
|
|
69
|
-
const isNumberOrNull = (value) => typeof value !== "string";
|
|
70
|
-
|
|
71
|
-
exports.createGeneratorEasing = createGeneratorEasing;
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
import { pregenerateKeyframes } from './pregenerate-keyframes.es.js';
|
|
2
|
-
|
|
3
|
-
function createGeneratorEasing(createGenerator) {
|
|
4
|
-
const keyframesCache = new WeakMap();
|
|
5
|
-
return (options = {}) => {
|
|
6
|
-
const generatorCache = new Map();
|
|
7
|
-
const getGenerator = (from = 0, to = 100, velocity = 0, isScale = false) => {
|
|
8
|
-
const key = `${from}-${to}-${velocity}-${isScale}`;
|
|
9
|
-
if (!generatorCache.has(key)) {
|
|
10
|
-
generatorCache.set(key, createGenerator(Object.assign({ from,
|
|
11
|
-
to,
|
|
12
|
-
velocity, restSpeed: isScale ? 0.05 : 2, restDistance: isScale ? 0.01 : 0.5 }, options)));
|
|
13
|
-
}
|
|
14
|
-
return generatorCache.get(key);
|
|
15
|
-
};
|
|
16
|
-
const getKeyframes = (generator) => {
|
|
17
|
-
if (!keyframesCache.has(generator)) {
|
|
18
|
-
keyframesCache.set(generator, pregenerateKeyframes(generator));
|
|
19
|
-
}
|
|
20
|
-
return keyframesCache.get(generator);
|
|
21
|
-
};
|
|
22
|
-
return {
|
|
23
|
-
createAnimation: (keyframes, getOrigin, canUseGenerator, name, data) => {
|
|
24
|
-
let settings;
|
|
25
|
-
let generator;
|
|
26
|
-
const numKeyframes = keyframes.length;
|
|
27
|
-
let shouldUseGenerator = canUseGenerator &&
|
|
28
|
-
numKeyframes <= 2 &&
|
|
29
|
-
keyframes.every(isNumberOrNull);
|
|
30
|
-
if (shouldUseGenerator) {
|
|
31
|
-
const prevAnimationState = name && data && data.prevGeneratorState[name];
|
|
32
|
-
const velocity = prevAnimationState &&
|
|
33
|
-
(numKeyframes === 1 ||
|
|
34
|
-
(numKeyframes === 2 && keyframes[0] === null))
|
|
35
|
-
? prevAnimationState.velocity
|
|
36
|
-
: 0;
|
|
37
|
-
const target = keyframes[numKeyframes - 1];
|
|
38
|
-
const unresolvedOrigin = numKeyframes === 1 ? null : keyframes[0];
|
|
39
|
-
const origin = unresolvedOrigin === null
|
|
40
|
-
? prevAnimationState
|
|
41
|
-
? prevAnimationState.value
|
|
42
|
-
: parseFloat(getOrigin())
|
|
43
|
-
: unresolvedOrigin;
|
|
44
|
-
generator = getGenerator(origin, target, velocity, name === null || name === void 0 ? void 0 : name.includes("scale"));
|
|
45
|
-
const keyframesMetadata = getKeyframes(generator);
|
|
46
|
-
settings = Object.assign(Object.assign({}, keyframesMetadata), { easing: "linear" });
|
|
47
|
-
}
|
|
48
|
-
else {
|
|
49
|
-
generator = getGenerator(0, 100);
|
|
50
|
-
const keyframesMetadata = getKeyframes(generator);
|
|
51
|
-
settings = {
|
|
52
|
-
easing: "ease",
|
|
53
|
-
duration: keyframesMetadata.overshootDuration,
|
|
54
|
-
};
|
|
55
|
-
}
|
|
56
|
-
// TODO Add test for this
|
|
57
|
-
if (generator && data && name) {
|
|
58
|
-
data.generators[name] = generator;
|
|
59
|
-
}
|
|
60
|
-
return settings;
|
|
61
|
-
},
|
|
62
|
-
};
|
|
63
|
-
};
|
|
64
|
-
}
|
|
65
|
-
const isNumberOrNull = (value) => typeof value !== "string";
|
|
66
|
-
|
|
67
|
-
export { createGeneratorEasing };
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
-
|
|
5
|
-
var cubicBezier = require('../cubic-bezier.cjs.js');
|
|
6
|
-
var steps = require('../steps.cjs.js');
|
|
7
|
-
var noop = require('../../../../utils/noop.cjs.js');
|
|
8
|
-
|
|
9
|
-
const namedEasings = {
|
|
10
|
-
ease: cubicBezier.cubicBezier(0.25, 0.1, 0.25, 1.0),
|
|
11
|
-
"ease-in": cubicBezier.cubicBezier(0.42, 0.0, 1.0, 1.0),
|
|
12
|
-
"ease-in-out": cubicBezier.cubicBezier(0.42, 0.0, 0.58, 1.0),
|
|
13
|
-
"ease-out": cubicBezier.cubicBezier(0.0, 0.0, 0.58, 1.0),
|
|
14
|
-
};
|
|
15
|
-
const functionArgsRegex = /\((.*?)\)/;
|
|
16
|
-
function getEasingFunction(definition) {
|
|
17
|
-
// If already an easing function, return
|
|
18
|
-
if (typeof definition === "function")
|
|
19
|
-
return definition;
|
|
20
|
-
// If an easing curve definition, return bezier function
|
|
21
|
-
if (Array.isArray(definition))
|
|
22
|
-
return cubicBezier.cubicBezier(...definition);
|
|
23
|
-
// If we have a predefined easing function, return
|
|
24
|
-
if (namedEasings[definition])
|
|
25
|
-
return namedEasings[definition];
|
|
26
|
-
// If this is a steps function, attempt to create easing curve
|
|
27
|
-
if (definition.startsWith("steps")) {
|
|
28
|
-
const args = functionArgsRegex.exec(definition);
|
|
29
|
-
if (args) {
|
|
30
|
-
const argsArray = args[1].split(",");
|
|
31
|
-
return steps.steps(parseFloat(argsArray[0]), argsArray[1].trim());
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
return noop.noopReturn;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
exports.getEasingFunction = getEasingFunction;
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import { cubicBezier } from '../cubic-bezier.es.js';
|
|
2
|
-
import { steps } from '../steps.es.js';
|
|
3
|
-
import { noopReturn } from '../../../../utils/noop.es.js';
|
|
4
|
-
|
|
5
|
-
const namedEasings = {
|
|
6
|
-
ease: cubicBezier(0.25, 0.1, 0.25, 1.0),
|
|
7
|
-
"ease-in": cubicBezier(0.42, 0.0, 1.0, 1.0),
|
|
8
|
-
"ease-in-out": cubicBezier(0.42, 0.0, 0.58, 1.0),
|
|
9
|
-
"ease-out": cubicBezier(0.0, 0.0, 0.58, 1.0),
|
|
10
|
-
};
|
|
11
|
-
const functionArgsRegex = /\((.*?)\)/;
|
|
12
|
-
function getEasingFunction(definition) {
|
|
13
|
-
// If already an easing function, return
|
|
14
|
-
if (typeof definition === "function")
|
|
15
|
-
return definition;
|
|
16
|
-
// If an easing curve definition, return bezier function
|
|
17
|
-
if (Array.isArray(definition))
|
|
18
|
-
return cubicBezier(...definition);
|
|
19
|
-
// If we have a predefined easing function, return
|
|
20
|
-
if (namedEasings[definition])
|
|
21
|
-
return namedEasings[definition];
|
|
22
|
-
// If this is a steps function, attempt to create easing curve
|
|
23
|
-
if (definition.startsWith("steps")) {
|
|
24
|
-
const args = functionArgsRegex.exec(definition);
|
|
25
|
-
if (args) {
|
|
26
|
-
const argsArray = args[1].split(",");
|
|
27
|
-
return steps(parseFloat(argsArray[0]), argsArray[1].trim());
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
return noopReturn;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
export { getEasingFunction };
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
-
|
|
5
|
-
function hasReachedTarget(origin, target, current) {
|
|
6
|
-
return ((origin < target && current >= target) ||
|
|
7
|
-
(origin > target && current <= target));
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
exports.hasReachedTarget = hasReachedTarget;
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
-
|
|
5
|
-
const timeStep = 10;
|
|
6
|
-
const maxDuration = 10000;
|
|
7
|
-
function pregenerateKeyframes(generator) {
|
|
8
|
-
let overshootDuration = undefined;
|
|
9
|
-
let timestamp = timeStep;
|
|
10
|
-
let state = generator.next(0);
|
|
11
|
-
const keyframes = [state.value];
|
|
12
|
-
while (!state.done && timestamp < maxDuration) {
|
|
13
|
-
state = generator.next(timestamp);
|
|
14
|
-
keyframes.push(state.done ? state.target : state.value);
|
|
15
|
-
if (overshootDuration === undefined && state.hasReachedTarget) {
|
|
16
|
-
overshootDuration = timestamp;
|
|
17
|
-
}
|
|
18
|
-
timestamp += timeStep;
|
|
19
|
-
}
|
|
20
|
-
const duration = timestamp - timeStep;
|
|
21
|
-
/**
|
|
22
|
-
* If generating an animation that didn't actually move,
|
|
23
|
-
* generate a second keyframe so we have an origin and target.
|
|
24
|
-
*/
|
|
25
|
-
if (keyframes.length === 1)
|
|
26
|
-
keyframes.push(state.value);
|
|
27
|
-
return {
|
|
28
|
-
keyframes,
|
|
29
|
-
duration: duration / 1000,
|
|
30
|
-
overshootDuration: (overshootDuration !== null && overshootDuration !== void 0 ? overshootDuration : duration) / 1000,
|
|
31
|
-
};
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
exports.pregenerateKeyframes = pregenerateKeyframes;
|