@hanzogui/cubic-bezier-animator 3.0.6 → 4.4.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/dist/cjs/cubicBezier.cjs +66 -31
- package/dist/cjs/cubicBezier.native.js +65 -32
- package/dist/cjs/cubicBezier.native.js.map +1 -1
- package/dist/cjs/index.cjs +35 -30
- package/dist/cjs/index.native.js +38 -33
- package/dist/cjs/index.native.js.map +1 -1
- package/dist/esm/cubicBezier.mjs +54 -21
- package/dist/esm/cubicBezier.mjs.map +1 -1
- package/dist/esm/cubicBezier.native.js +53 -22
- package/dist/esm/cubicBezier.native.js.map +1 -1
- package/dist/esm/index.js +23 -20
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/index.mjs +23 -20
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/index.native.js +26 -23
- package/dist/esm/index.native.js.map +1 -1
- package/package.json +2 -2
package/dist/cjs/cubicBezier.cjs
CHANGED
|
@@ -3,27 +3,35 @@ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
|
3
3
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
4
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
5
|
var __export = (target, all) => {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
6
|
+
for (var name in all) __defProp(target, name, {
|
|
7
|
+
get: all[name],
|
|
8
|
+
enumerable: true
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __copyProps = (to, from, except, desc) => {
|
|
12
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
+
for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
|
|
13
14
|
get: () => from[key],
|
|
14
15
|
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
15
16
|
});
|
|
16
|
-
|
|
17
|
-
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
18
20
|
var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
|
|
19
|
-
value:
|
|
21
|
+
value: true
|
|
20
22
|
}), mod);
|
|
21
23
|
var cubicBezier_exports = {};
|
|
22
24
|
__export(cubicBezier_exports, {
|
|
23
25
|
bezier: () => bezier
|
|
24
26
|
});
|
|
25
27
|
module.exports = __toCommonJS(cubicBezier_exports);
|
|
26
|
-
const
|
|
28
|
+
const NEWTON_ITERATIONS = 4;
|
|
29
|
+
const NEWTON_MIN_SLOPE = 1e-3;
|
|
30
|
+
const SUBDIVISION_PRECISION = 1e-7;
|
|
31
|
+
const SUBDIVISION_MAX_ITERATIONS = 10;
|
|
32
|
+
const kSplineTableSize = 11;
|
|
33
|
+
const kSampleStepSize = 1 / (kSplineTableSize - 1);
|
|
34
|
+
const float32ArraySupported = typeof Float32Array === "function";
|
|
27
35
|
function A(aA1, aA2) {
|
|
28
36
|
return 1 - 3 * aA2 + 3 * aA1;
|
|
29
37
|
}
|
|
@@ -40,16 +48,26 @@ function getSlope(aT, aA1, aA2) {
|
|
|
40
48
|
return 3 * A(aA1, aA2) * aT * aT + 2 * B(aA1, aA2) * aT + C(aA1);
|
|
41
49
|
}
|
|
42
50
|
function binarySubdivide(aX, aA, aB, mX1, mX2) {
|
|
43
|
-
let currentX
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
do
|
|
51
|
+
let currentX;
|
|
52
|
+
let currentT;
|
|
53
|
+
let i = 0;
|
|
54
|
+
do {
|
|
55
|
+
currentT = aA + (aB - aA) / 2;
|
|
56
|
+
currentX = calcBezier(currentT, mX1, mX2) - aX;
|
|
57
|
+
if (currentX > 0) {
|
|
58
|
+
aB = currentT;
|
|
59
|
+
} else {
|
|
60
|
+
aA = currentT;
|
|
61
|
+
}
|
|
62
|
+
} while (Math.abs(currentX) > SUBDIVISION_PRECISION && ++i < SUBDIVISION_MAX_ITERATIONS);
|
|
47
63
|
return currentT;
|
|
48
64
|
}
|
|
49
65
|
function newtonRaphsonIterate(aX, aGuessT, mX1, mX2) {
|
|
50
|
-
for (let i = 0; i <
|
|
66
|
+
for (let i = 0; i < NEWTON_ITERATIONS; ++i) {
|
|
51
67
|
const currentSlope = getSlope(aGuessT, mX1, mX2);
|
|
52
|
-
if (currentSlope === 0)
|
|
68
|
+
if (currentSlope === 0) {
|
|
69
|
+
return aGuessT;
|
|
70
|
+
}
|
|
53
71
|
const currentX = calcBezier(aGuessT, mX1, mX2) - aX;
|
|
54
72
|
aGuessT -= currentX / currentSlope;
|
|
55
73
|
}
|
|
@@ -59,22 +77,39 @@ function LinearEasing(x) {
|
|
|
59
77
|
return x;
|
|
60
78
|
}
|
|
61
79
|
function bezier(mX1, mY1, mX2, mY2) {
|
|
62
|
-
if (!(0 <= mX1 && mX1 <= 1 && 0 <= mX2 && mX2 <= 1))
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
80
|
+
if (!(0 <= mX1 && mX1 <= 1 && 0 <= mX2 && mX2 <= 1)) {
|
|
81
|
+
throw new Error("bezier x values must be in [0, 1] range");
|
|
82
|
+
}
|
|
83
|
+
if (mX1 === mY1 && mX2 === mY2) {
|
|
84
|
+
return LinearEasing;
|
|
85
|
+
}
|
|
86
|
+
const sampleValues = float32ArraySupported ? new Float32Array(kSplineTableSize) : new Array(kSplineTableSize);
|
|
87
|
+
for (let i = 0; i < kSplineTableSize; ++i) {
|
|
88
|
+
sampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);
|
|
89
|
+
}
|
|
66
90
|
function getTForX(aX) {
|
|
67
|
-
let intervalStart = 0
|
|
68
|
-
|
|
69
|
-
const lastSample =
|
|
70
|
-
for (; currentSample !== lastSample && sampleValues[currentSample] <= aX; ++currentSample)
|
|
91
|
+
let intervalStart = 0;
|
|
92
|
+
let currentSample = 1;
|
|
93
|
+
const lastSample = kSplineTableSize - 1;
|
|
94
|
+
for (; currentSample !== lastSample && sampleValues[currentSample] <= aX; ++currentSample) {
|
|
95
|
+
intervalStart += kSampleStepSize;
|
|
96
|
+
}
|
|
71
97
|
--currentSample;
|
|
72
|
-
const dist = (aX - sampleValues[currentSample]) / (sampleValues[currentSample + 1] - sampleValues[currentSample])
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
98
|
+
const dist = (aX - sampleValues[currentSample]) / (sampleValues[currentSample + 1] - sampleValues[currentSample]);
|
|
99
|
+
const guessForT = intervalStart + dist * kSampleStepSize;
|
|
100
|
+
const initialSlope = getSlope(guessForT, mX1, mX2);
|
|
101
|
+
if (initialSlope >= NEWTON_MIN_SLOPE) {
|
|
102
|
+
return newtonRaphsonIterate(aX, guessForT, mX1, mX2);
|
|
103
|
+
}
|
|
104
|
+
if (initialSlope === 0) {
|
|
105
|
+
return guessForT;
|
|
106
|
+
}
|
|
107
|
+
return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2);
|
|
76
108
|
}
|
|
77
|
-
return function (x) {
|
|
78
|
-
|
|
109
|
+
return function BezierEasing(x) {
|
|
110
|
+
if (x === 0 || x === 1) {
|
|
111
|
+
return x;
|
|
112
|
+
}
|
|
113
|
+
return calcBezier(getTForX(x), mY1, mY2);
|
|
79
114
|
};
|
|
80
115
|
}
|
|
@@ -5,33 +5,35 @@ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
|
5
5
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
6
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
7
|
var __export = (target, all) => {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
8
|
+
for (var name in all) __defProp(target, name, {
|
|
9
|
+
get: all[name],
|
|
10
|
+
enumerable: true
|
|
11
|
+
});
|
|
12
|
+
};
|
|
13
|
+
var __copyProps = (to, from, except, desc) => {
|
|
14
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
15
|
+
for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
|
|
15
16
|
get: () => from[key],
|
|
16
17
|
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
17
18
|
});
|
|
18
|
-
|
|
19
|
-
|
|
19
|
+
}
|
|
20
|
+
return to;
|
|
21
|
+
};
|
|
20
22
|
var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
|
|
21
|
-
value:
|
|
23
|
+
value: true
|
|
22
24
|
}), mod);
|
|
23
25
|
var cubicBezier_exports = {};
|
|
24
26
|
__export(cubicBezier_exports, {
|
|
25
27
|
bezier: () => bezier
|
|
26
28
|
});
|
|
27
29
|
module.exports = __toCommonJS(cubicBezier_exports);
|
|
28
|
-
var NEWTON_ITERATIONS = 4
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
30
|
+
var NEWTON_ITERATIONS = 4;
|
|
31
|
+
var NEWTON_MIN_SLOPE = 1e-3;
|
|
32
|
+
var SUBDIVISION_PRECISION = 1e-7;
|
|
33
|
+
var SUBDIVISION_MAX_ITERATIONS = 10;
|
|
34
|
+
var kSplineTableSize = 11;
|
|
35
|
+
var kSampleStepSize = 1 / (kSplineTableSize - 1);
|
|
36
|
+
var float32ArraySupported = typeof Float32Array === "function";
|
|
35
37
|
function A(aA1, aA2) {
|
|
36
38
|
return 1 - 3 * aA2 + 3 * aA1;
|
|
37
39
|
}
|
|
@@ -48,16 +50,26 @@ function getSlope(aT, aA1, aA2) {
|
|
|
48
50
|
return 3 * A(aA1, aA2) * aT * aT + 2 * B(aA1, aA2) * aT + C(aA1);
|
|
49
51
|
}
|
|
50
52
|
function binarySubdivide(aX, aA, aB, mX1, mX2) {
|
|
51
|
-
var currentX
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
do
|
|
53
|
+
var currentX;
|
|
54
|
+
var currentT;
|
|
55
|
+
var i = 0;
|
|
56
|
+
do {
|
|
57
|
+
currentT = aA + (aB - aA) / 2;
|
|
58
|
+
currentX = calcBezier(currentT, mX1, mX2) - aX;
|
|
59
|
+
if (currentX > 0) {
|
|
60
|
+
aB = currentT;
|
|
61
|
+
} else {
|
|
62
|
+
aA = currentT;
|
|
63
|
+
}
|
|
64
|
+
} while (Math.abs(currentX) > SUBDIVISION_PRECISION && ++i < SUBDIVISION_MAX_ITERATIONS);
|
|
55
65
|
return currentT;
|
|
56
66
|
}
|
|
57
67
|
function newtonRaphsonIterate(aX, aGuessT, mX1, mX2) {
|
|
58
68
|
for (var i = 0; i < NEWTON_ITERATIONS; ++i) {
|
|
59
69
|
var currentSlope = getSlope(aGuessT, mX1, mX2);
|
|
60
|
-
if (currentSlope === 0)
|
|
70
|
+
if (currentSlope === 0) {
|
|
71
|
+
return aGuessT;
|
|
72
|
+
}
|
|
61
73
|
var currentX = calcBezier(aGuessT, mX1, mX2) - aX;
|
|
62
74
|
aGuessT -= currentX / currentSlope;
|
|
63
75
|
}
|
|
@@ -67,19 +79,40 @@ function LinearEasing(x) {
|
|
|
67
79
|
return x;
|
|
68
80
|
}
|
|
69
81
|
function bezier(mX1, mY1, mX2, mY2) {
|
|
70
|
-
if (!(0 <= mX1 && mX1 <= 1 && 0 <= mX2 && mX2 <= 1))
|
|
71
|
-
|
|
72
|
-
|
|
82
|
+
if (!(0 <= mX1 && mX1 <= 1 && 0 <= mX2 && mX2 <= 1)) {
|
|
83
|
+
throw new Error("bezier x values must be in [0, 1] range");
|
|
84
|
+
}
|
|
85
|
+
if (mX1 === mY1 && mX2 === mY2) {
|
|
86
|
+
return LinearEasing;
|
|
87
|
+
}
|
|
88
|
+
var sampleValues = float32ArraySupported ? new Float32Array(kSplineTableSize) : new Array(kSplineTableSize);
|
|
89
|
+
for (var i = 0; i < kSplineTableSize; ++i) {
|
|
90
|
+
sampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);
|
|
91
|
+
}
|
|
73
92
|
function getTForX(aX) {
|
|
74
|
-
|
|
93
|
+
var intervalStart = 0;
|
|
94
|
+
var currentSample = 1;
|
|
95
|
+
var lastSample = kSplineTableSize - 1;
|
|
96
|
+
for (; currentSample !== lastSample && sampleValues[currentSample] <= aX; ++currentSample) {
|
|
97
|
+
intervalStart += kSampleStepSize;
|
|
98
|
+
}
|
|
75
99
|
--currentSample;
|
|
76
|
-
var dist = (aX - sampleValues[currentSample]) / (sampleValues[currentSample + 1] - sampleValues[currentSample])
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
100
|
+
var dist = (aX - sampleValues[currentSample]) / (sampleValues[currentSample + 1] - sampleValues[currentSample]);
|
|
101
|
+
var guessForT = intervalStart + dist * kSampleStepSize;
|
|
102
|
+
var initialSlope = getSlope(guessForT, mX1, mX2);
|
|
103
|
+
if (initialSlope >= NEWTON_MIN_SLOPE) {
|
|
104
|
+
return newtonRaphsonIterate(aX, guessForT, mX1, mX2);
|
|
105
|
+
}
|
|
106
|
+
if (initialSlope === 0) {
|
|
107
|
+
return guessForT;
|
|
108
|
+
}
|
|
109
|
+
return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2);
|
|
80
110
|
}
|
|
81
|
-
return function (x) {
|
|
82
|
-
|
|
111
|
+
return function BezierEasing(x) {
|
|
112
|
+
if (x === 0 || x === 1) {
|
|
113
|
+
return x;
|
|
114
|
+
}
|
|
115
|
+
return calcBezier(getTForX(x), mY1, mY2);
|
|
83
116
|
};
|
|
84
117
|
}
|
|
85
118
|
//# sourceMappingURL=cubicBezier.native.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","cubicBezier_exports","__export","bezier","module","exports","NEWTON_ITERATIONS","NEWTON_MIN_SLOPE","SUBDIVISION_PRECISION","SUBDIVISION_MAX_ITERATIONS","kSplineTableSize","kSampleStepSize","float32ArraySupported","Float32Array","A","aA1","aA2","B","C","calcBezier","aT","getSlope","binarySubdivide","aX","aA","aB","mX1","mX2","currentX","currentT","i","Math","abs","newtonRaphsonIterate","aGuessT","currentSlope","LinearEasing","x","mY1","mY2","Error","sampleValues","Array","getTForX","intervalStart","currentSample","lastSample","dist","guessForT","initialSlope"],"sources":["../../src/cubicBezier.tsx"],"sourcesContent":[null],"mappings":"
|
|
1
|
+
{"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","cubicBezier_exports","__export","bezier","module","exports","NEWTON_ITERATIONS","NEWTON_MIN_SLOPE","SUBDIVISION_PRECISION","SUBDIVISION_MAX_ITERATIONS","kSplineTableSize","kSampleStepSize","float32ArraySupported","Float32Array","A","aA1","aA2","B","C","calcBezier","aT","getSlope","binarySubdivide","aX","aA","aB","mX1","mX2","currentX","currentT","i","Math","abs","newtonRaphsonIterate","aGuessT","currentSlope","LinearEasing","x","mY1","mY2","Error","sampleValues","Array","getTForX","intervalStart","currentSample","lastSample","dist","guessForT","initialSlope","BezierEasing"],"sources":["../../src/cubicBezier.tsx"],"sourcesContent":[null],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,YAAA,GAAAC,GAAA,IAAAC,WAAA,CAAAC,SAAA;EAAAC,KAAA;AAAA,IAAAH,GAAA;AAAA,IAAAI,mBAAA;AAAAC,QAAA,CAAAD,mBAAA;EAAAE,MAAA,EAAAA,CAAA,KAAAA;AAAA;AAOAC,MAAM,CAAAC,OAAA,GAAAT,YAAoB,CAAAK,mBAAA;AAC1B,IAAAK,iBAAM,IAAmB;AACzB,IAAAC,gBAAM;AACN,IAAAC,qBAAM;AAEN,IAAAC,0BAAyB;AACzB,IAAAC,gBAAM,KAAkB;AAExB,IAAAC,eAAM,QAAAD,gBAA+B;AAErC,IAAAE,qBAAqC,UAAAC,YAAA;AACnC,SAAOC,EAAAC,GAAM,EAAAC,GAAM;EACrB,eAAAA,GAAA,OAAAD,GAAA;AACA;AACE,SAAOE,EAAAF,GAAM,EAAAC,GAAM;EACrB,WAAAA,GAAA,OAAAD,GAAA;AACA;AACE,SAAOG,EAAAH,GAAM;EACf,WAAAA,GAAA;AAGA;AACE,SAAAI,UAAgBA,CAAAC,EAAG,EAAAL,GAAI,EAAAC,GAAO;EAChC,SAAAF,CAAA,CAAAC,GAAA,EAAAC,GAAA,IAAAI,EAAA,GAAAH,CAAA,CAAAF,GAAA,EAAAC,GAAA,KAAAI,EAAA,GAAAF,CAAA,CAAAH,GAAA,KAAAK,EAAA;AAGA;AACE,SAAOC,QAAQA,CAAAD,EAAK,EAAAL,GAAG,EAAIC,GAAA,EAAK;EAClC,WAAAF,CAAA,CAAAC,GAAA,EAAAC,GAAA,IAAAI,EAAA,GAAAA,EAAA,OAAAH,CAAA,CAAAF,GAAA,EAAAC,GAAA,IAAAI,EAAA,GAAAF,CAAA,CAAAH,GAAA;AAEA;AACE,SAAIO,gBAAAC,EAAA,EAAAC,EAAA,EAAAC,EAAA,EAAAC,GAAA,EAAAC,GAAA;EACJ,IAAIC,QAAA;EACJ,IAAIC,QAAI;EACR,IAAGC,CAAA;EACD;IACAD,QAAA,GAAWL,EAAA,IAAAC,EAAA,GAAWD,EAAA;IACtBI,QAAI,GAAAT,UAAgB,CAAAU,QAAA,EAAAH,GAAA,EAAAC,GAAA,IAAAJ,EAAA;IAClB,IAAAK,QAAK;MACPH,EAAA,GAAOI,QAAA;IACL,OAAK;MACPL,EAAA,GAAAK,QAAA;IACF;EACA,SAAOE,IAAA,CAAAC,GAAA,CAAAJ,QAAA,IAAApB,qBAAA,MAAAsB,CAAA,GAAArB,0BAAA;EACT,OAAAoB,QAAA;AAEA;AACE,SAAAI,oBAAoBA,CAAAV,EAAA,EAAAW,OAAmB,EAAER,GAAG,EAAAC,GAAA;EAC1C,SAAMG,CAAA,MAAAA,CAAA,GAAAxB,iBAAwB,IAASwB,CAAA;IACvC,IAAIK,YAAA,GAAAd,QAAsB,CAAAa,OAAA,EAAAR,GAAA,EAAAC,GAAA;IACxB,IAAAQ,YAAO;MACT,OAAAD,OAAA;IACA;IACA,IAAAN,QAAW,GAAAT,UAAW,CAAAe,OAAA,EAAAR,GAAA,EAAAC,GAAA,IAAAJ,EAAA;IACxBW,OAAA,IAAAN,QAAA,GAAAO,YAAA;EACA;EACF,OAAAD,OAAA;AAEA;AACE,SAAOE,aAAAC,CAAA;EACT,OAAAA,CAAA;AAEO;AAML,SAAMlC,MAAKA,CAAAuB,GAAA,EAAOY,GAAA,EAAAX,GAAO,EAAAY,GAAK;EAC5B,WAAMb,GAAI,IAAMA,GAAA,cAAAC,GAAA,IAAAA,GAAA;IAClB,UAAAa,KAAA;EAEA;EACE,IAAAd,GAAA,KAAOY,GAAA,IAAAX,GAAA,KAAAY,GAAA;IACT,OAAAH,YAAA;EAGA;EAGA,IAAAK,YAAgB,GAAA7B,qBAAwB,GAAG,IAAAC,YAAA,CAAAH,gBAAA,QAAAgC,KAAA,CAAAhC,gBAAA;EACzC,SAAAoB,CAAA,MAAcA,CAAA,GAAIpB,gBAAe,IAAAoB,CAAA;IACnCW,YAAA,CAAAX,CAAA,IAAAX,UAAA,CAAAW,CAAA,GAAAnB,eAAA,EAAAe,GAAA,EAAAC,GAAA;EAEA;EACE,SAAIgB,SAAApB,EAAA,EAAgB;IACpB,IAAIqB,aAAA,GAAgB;IACpB,IAAAC,aAAM,GAAa;IAEnB,IAAAC,UAEE,GAAApC,gBAAkB;IAGlB,OAAAmC,aAAiB,KAAAC,UAAA,IAAAL,YAAA,CAAAI,aAAA,KAAAtB,EAAA,IAAAsB,aAAA;MACnBD,aAAA,IAAAjC,eAAA;IACA;IAGA,EAAAkC,aACG;IAEH,IAAAE,IAAM,IAAAxB,EAAA,GAAAkB,YAAY,CAAAI,aAAuB,MAAAJ,YAAA,CAAAI,aAAA,QAAAJ,YAAA,CAAAI,aAAA;IAEzC,IAAAG,SAAM,GAAAJ,aAAe,GAASG,IAAA,GAAApC,eAAmB;IACjD,IAAIsC,YAAA,GAAA5B,QAAgB,CAAA2B,SAAA,EAAkBtB,GAAA,EAAAC,GAAA;IACpC,IAAAsB,YAAO,IAAA1C,gBAAyB;MAClC,OAAA0B,oBAAA,CAAAV,EAAA,EAAAyB,SAAA,EAAAtB,GAAA,EAAAC,GAAA;IACA;IACE,IAAAsB,YAAO;MACT,OAAAD,SAAA;IACA;IACF,OAAA1B,eAAA,CAAAC,EAAA,EAAAqB,aAAA,EAAAA,aAAA,GAAAjC,eAAA,EAAAe,GAAA,EAAAC,GAAA;EAEA;EAEE,OAAI,SAAMuB,YAAcA,CAAAb,CAAA;IACtB,IAAAA,CAAA,KAAO,KAAAA,CAAA;MACT,OAAAA,CAAA;IACA;IACF,OAAAlB,UAAA,CAAAwB,QAAA,CAAAN,CAAA,GAAAC,GAAA,EAAAC,GAAA;EACF","ignoreList":[]}
|
package/dist/cjs/index.cjs
CHANGED
|
@@ -3,20 +3,22 @@ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
|
3
3
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
4
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
5
|
var __export = (target, all) => {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
6
|
+
for (var name in all) __defProp(target, name, {
|
|
7
|
+
get: all[name],
|
|
8
|
+
enumerable: true
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __copyProps = (to, from, except, desc) => {
|
|
12
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
+
for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
|
|
13
14
|
get: () => from[key],
|
|
14
15
|
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
15
16
|
});
|
|
16
|
-
|
|
17
|
-
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
18
20
|
var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
|
|
19
|
-
value:
|
|
21
|
+
value: true
|
|
20
22
|
}), mod);
|
|
21
23
|
var index_exports = {};
|
|
22
24
|
__export(index_exports, {
|
|
@@ -26,32 +28,35 @@ module.exports = __toCommonJS(index_exports);
|
|
|
26
28
|
var import_cubicBezier = require("./cubicBezier.cjs");
|
|
27
29
|
function animate(param) {
|
|
28
30
|
let start = null;
|
|
29
|
-
const easing = param.cubicBezier ? (0, import_cubicBezier.bezier)(...param.cubicBezier) : v => v
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
31
|
+
const easing = param.cubicBezier ? (0, import_cubicBezier.bezier)(...param.cubicBezier) : v => v;
|
|
32
|
+
const {
|
|
33
|
+
x: fromX,
|
|
34
|
+
y: fromY,
|
|
35
|
+
scaleX: fromScaleX,
|
|
36
|
+
scaleY: fromScaleY
|
|
37
|
+
} = param.from;
|
|
38
|
+
const {
|
|
39
|
+
x: toX,
|
|
40
|
+
y: toY,
|
|
41
|
+
scaleX: toScaleX,
|
|
42
|
+
scaleY: toScaleY
|
|
43
|
+
} = param.to;
|
|
42
44
|
function frame(timestamp) {
|
|
43
|
-
|
|
44
|
-
const progress = timestamp - start
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
45
|
+
if (!start) start = timestamp;
|
|
46
|
+
const progress = timestamp - start;
|
|
47
|
+
const x = toX !== void 0 ? fromX + (toX - fromX) * easing(progress / param.duration) : void 0;
|
|
48
|
+
const y = toY !== void 0 ? fromY + (toY - fromY) * easing(progress / param.duration) : void 0;
|
|
49
|
+
const scaleX = toScaleX !== void 0 ? fromScaleX + (toScaleX - fromScaleX) * easing(progress / param.duration) : void 0;
|
|
50
|
+
const scaleY = toScaleY !== void 0 ? fromScaleY + (toScaleY - fromScaleY) * easing(progress / param.duration) : void 0;
|
|
49
51
|
param.onUpdate({
|
|
50
52
|
x,
|
|
51
53
|
y,
|
|
52
54
|
scaleX,
|
|
53
55
|
scaleY
|
|
54
|
-
})
|
|
56
|
+
});
|
|
57
|
+
if (progress < param.duration) {
|
|
58
|
+
requestAnimationFrame(frame);
|
|
59
|
+
}
|
|
55
60
|
}
|
|
56
61
|
requestAnimationFrame(frame);
|
|
57
62
|
}
|
package/dist/cjs/index.native.js
CHANGED
|
@@ -5,20 +5,22 @@ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
|
5
5
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
6
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
7
|
var __export = (target, all) => {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
8
|
+
for (var name in all) __defProp(target, name, {
|
|
9
|
+
get: all[name],
|
|
10
|
+
enumerable: true
|
|
11
|
+
});
|
|
12
|
+
};
|
|
13
|
+
var __copyProps = (to, from, except, desc) => {
|
|
14
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
15
|
+
for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
|
|
15
16
|
get: () => from[key],
|
|
16
17
|
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
17
18
|
});
|
|
18
|
-
|
|
19
|
-
|
|
19
|
+
}
|
|
20
|
+
return to;
|
|
21
|
+
};
|
|
20
22
|
var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
|
|
21
|
-
value:
|
|
23
|
+
value: true
|
|
22
24
|
}), mod);
|
|
23
25
|
var index_exports = {};
|
|
24
26
|
__export(index_exports, {
|
|
@@ -27,35 +29,38 @@ __export(index_exports, {
|
|
|
27
29
|
module.exports = __toCommonJS(index_exports);
|
|
28
30
|
var import_cubicBezier = require("./cubicBezier.native.js");
|
|
29
31
|
function animate(param) {
|
|
30
|
-
var start = null
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
32
|
+
var start = null;
|
|
33
|
+
var easing = param.cubicBezier ? (0, import_cubicBezier.bezier)(...param.cubicBezier) : function (v) {
|
|
34
|
+
return v;
|
|
35
|
+
};
|
|
36
|
+
var {
|
|
37
|
+
x: fromX,
|
|
38
|
+
y: fromY,
|
|
39
|
+
scaleX: fromScaleX,
|
|
40
|
+
scaleY: fromScaleY
|
|
41
|
+
} = param.from;
|
|
42
|
+
var {
|
|
43
|
+
x: toX,
|
|
44
|
+
y: toY,
|
|
45
|
+
scaleX: toScaleX,
|
|
46
|
+
scaleY: toScaleY
|
|
47
|
+
} = param.to;
|
|
46
48
|
function frame(timestamp) {
|
|
47
|
-
|
|
48
|
-
var progress = timestamp - start
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
49
|
+
if (!start) start = timestamp;
|
|
50
|
+
var progress = timestamp - start;
|
|
51
|
+
var x = toX !== void 0 ? fromX + (toX - fromX) * easing(progress / param.duration) : void 0;
|
|
52
|
+
var y = toY !== void 0 ? fromY + (toY - fromY) * easing(progress / param.duration) : void 0;
|
|
53
|
+
var scaleX = toScaleX !== void 0 ? fromScaleX + (toScaleX - fromScaleX) * easing(progress / param.duration) : void 0;
|
|
54
|
+
var scaleY = toScaleY !== void 0 ? fromScaleY + (toScaleY - fromScaleY) * easing(progress / param.duration) : void 0;
|
|
53
55
|
param.onUpdate({
|
|
54
56
|
x,
|
|
55
57
|
y,
|
|
56
58
|
scaleX,
|
|
57
59
|
scaleY
|
|
58
|
-
})
|
|
60
|
+
});
|
|
61
|
+
if (progress < param.duration) {
|
|
62
|
+
requestAnimationFrame(frame);
|
|
63
|
+
}
|
|
59
64
|
}
|
|
60
65
|
requestAnimationFrame(frame);
|
|
61
66
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","index_exports","__export","animate","module","exports","import_cubicBezier","require","param","start","easing","cubicBezier","bezier","v","x","fromX","y","fromY","scaleX","fromScaleX","scaleY","fromScaleY","from","toX","toY","toScaleX","toScaleY","to","frame","timestamp","progress","duration","onUpdate"],"sources":["../../src/index.tsx"],"sourcesContent":[null],"mappings":"
|
|
1
|
+
{"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","index_exports","__export","animate","module","exports","import_cubicBezier","require","param","start","easing","cubicBezier","bezier","v","x","fromX","y","fromY","scaleX","fromScaleX","scaleY","fromScaleY","from","toX","toY","toScaleX","toScaleY","to","frame","timestamp","progress","duration","onUpdate"],"sources":["../../src/index.tsx"],"sourcesContent":[null],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,YAAA,GAAAC,GAAA,IAAAC,WAAA,CAAAC,SAAA;EAAAC,KAAA;AAAA,IAAAH,GAAA;AAAA,IAAAI,aAAA;AAAAC,QAAA,CAAAD,aAAA;EAAAE,OAAA,EAAAA,CAAA,KAAAA;AAAA;AAAAC,MAAA,CAAAC,OAAA,GAAAT,YAAuB,CAAAK,aAAA;AAmBhB,IAAAK,kBAAiB,GAA2BC,OAAA;AACjD,SAAIJ,OAAQA,CAAAK,KAAA;EACZ,IAAAC,KAAM,OAAS;EAEf,IAAAC,MAAQ,GAAGF,KAAO,CAAAG,WAAU,OAAQL,kBAAY,CAAQM,MAAA,KAAWJ,KAAI,CAAAG,WAAM,cAAAE,CAAA;IAC7E,OAAQA,CAAA;EAER;EACE;IAAIC,CAAC,EAAAC,KAAO;IAAAC,CAAA,EAAAC,KAAQ;IAAAC,MAAA,EAAAC,UAAA;IAAAC,MAAA,EAAAC;EAAA,IAAAb,KAAA,CAAAc,IAAA;EACpB;IAAAR,CAAA,EAAMS,GAAA;IAAAP,CAAA,EAAAQ,GAAW;IAAAN,MAAA,EAAAO,QAAY;IAAAL,MAAA,EAAAM;EAAA,IAAAlB,KAAA,CAAAmB,EAAA;EAC7B,SAAMC,KACJA,CAAAC,SAAQ;IAGV,KAAApB,KACE,EAAAA,KAAA,GAAQoB,SACJ;IAEN,IAAAC,QAAM,GACJD,SAAA,GAAApB,KAAa;IAGf,IAAAK,CAAA,GAAMS,GAAA,KACJ,SAAAR,KAAa,IAAAQ,GACT,GAAAR,KAAA,IAAAL,MAAe,CAAAoB,QAAW,GAAAtB,KAAA,CAAAuB,QAAe,IAAO;IAEtD,IAAAf,CAAA,GAAMQ,GAAA,KAAS,KAAK,IAAGP,KAAA,GAAQ,CAAAO,GAAA,GAAQP,KAAA,IAAAP,MAAA,CAAAoB,QAAA,GAAAtB,KAAA,CAAAuB,QAAA;IAEvC,IAAIb,MAAA,GAAAO,QAAiB,UAAU,IAAAN,UAAA,IAAAM,QAAA,GAAAN,UAAA,IAAAT,MAAA,CAAAoB,QAAA,GAAAtB,KAAA,CAAAuB,QAAA;IAC7B,IAAAX,MAAA,GAAAM,QAAA,KAAsB,KAAK,IAAAL,UAAA,IAAAK,QAAA,GAAAL,UAAA,IAAAX,MAAA,CAAAoB,QAAA,GAAAtB,KAAA,CAAAuB,QAAA;IAC7BvB,KAAA,CAAAwB,QAAA;MACFlB,CAAA;MACAE,CAAA;MACFE,MAAA","ignoreList":[]}
|
package/dist/esm/cubicBezier.mjs
CHANGED
|
@@ -1,4 +1,10 @@
|
|
|
1
|
-
const
|
|
1
|
+
const NEWTON_ITERATIONS = 4;
|
|
2
|
+
const NEWTON_MIN_SLOPE = 1e-3;
|
|
3
|
+
const SUBDIVISION_PRECISION = 1e-7;
|
|
4
|
+
const SUBDIVISION_MAX_ITERATIONS = 10;
|
|
5
|
+
const kSplineTableSize = 11;
|
|
6
|
+
const kSampleStepSize = 1 / (kSplineTableSize - 1);
|
|
7
|
+
const float32ArraySupported = typeof Float32Array === "function";
|
|
2
8
|
function A(aA1, aA2) {
|
|
3
9
|
return 1 - 3 * aA2 + 3 * aA1;
|
|
4
10
|
}
|
|
@@ -15,16 +21,26 @@ function getSlope(aT, aA1, aA2) {
|
|
|
15
21
|
return 3 * A(aA1, aA2) * aT * aT + 2 * B(aA1, aA2) * aT + C(aA1);
|
|
16
22
|
}
|
|
17
23
|
function binarySubdivide(aX, aA, aB, mX1, mX2) {
|
|
18
|
-
let currentX
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
do
|
|
24
|
+
let currentX;
|
|
25
|
+
let currentT;
|
|
26
|
+
let i = 0;
|
|
27
|
+
do {
|
|
28
|
+
currentT = aA + (aB - aA) / 2;
|
|
29
|
+
currentX = calcBezier(currentT, mX1, mX2) - aX;
|
|
30
|
+
if (currentX > 0) {
|
|
31
|
+
aB = currentT;
|
|
32
|
+
} else {
|
|
33
|
+
aA = currentT;
|
|
34
|
+
}
|
|
35
|
+
} while (Math.abs(currentX) > SUBDIVISION_PRECISION && ++i < SUBDIVISION_MAX_ITERATIONS);
|
|
22
36
|
return currentT;
|
|
23
37
|
}
|
|
24
38
|
function newtonRaphsonIterate(aX, aGuessT, mX1, mX2) {
|
|
25
|
-
for (let i = 0; i <
|
|
39
|
+
for (let i = 0; i < NEWTON_ITERATIONS; ++i) {
|
|
26
40
|
const currentSlope = getSlope(aGuessT, mX1, mX2);
|
|
27
|
-
if (currentSlope === 0)
|
|
41
|
+
if (currentSlope === 0) {
|
|
42
|
+
return aGuessT;
|
|
43
|
+
}
|
|
28
44
|
const currentX = calcBezier(aGuessT, mX1, mX2) - aX;
|
|
29
45
|
aGuessT -= currentX / currentSlope;
|
|
30
46
|
}
|
|
@@ -34,23 +50,40 @@ function LinearEasing(x) {
|
|
|
34
50
|
return x;
|
|
35
51
|
}
|
|
36
52
|
function bezier(mX1, mY1, mX2, mY2) {
|
|
37
|
-
if (!(0 <= mX1 && mX1 <= 1 && 0 <= mX2 && mX2 <= 1))
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
53
|
+
if (!(0 <= mX1 && mX1 <= 1 && 0 <= mX2 && mX2 <= 1)) {
|
|
54
|
+
throw new Error("bezier x values must be in [0, 1] range");
|
|
55
|
+
}
|
|
56
|
+
if (mX1 === mY1 && mX2 === mY2) {
|
|
57
|
+
return LinearEasing;
|
|
58
|
+
}
|
|
59
|
+
const sampleValues = float32ArraySupported ? new Float32Array(kSplineTableSize) : new Array(kSplineTableSize);
|
|
60
|
+
for (let i = 0; i < kSplineTableSize; ++i) {
|
|
61
|
+
sampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);
|
|
62
|
+
}
|
|
41
63
|
function getTForX(aX) {
|
|
42
|
-
let intervalStart = 0
|
|
43
|
-
|
|
44
|
-
const lastSample =
|
|
45
|
-
for (; currentSample !== lastSample && sampleValues[currentSample] <= aX; ++currentSample)
|
|
64
|
+
let intervalStart = 0;
|
|
65
|
+
let currentSample = 1;
|
|
66
|
+
const lastSample = kSplineTableSize - 1;
|
|
67
|
+
for (; currentSample !== lastSample && sampleValues[currentSample] <= aX; ++currentSample) {
|
|
68
|
+
intervalStart += kSampleStepSize;
|
|
69
|
+
}
|
|
46
70
|
--currentSample;
|
|
47
|
-
const dist = (aX - sampleValues[currentSample]) / (sampleValues[currentSample + 1] - sampleValues[currentSample])
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
71
|
+
const dist = (aX - sampleValues[currentSample]) / (sampleValues[currentSample + 1] - sampleValues[currentSample]);
|
|
72
|
+
const guessForT = intervalStart + dist * kSampleStepSize;
|
|
73
|
+
const initialSlope = getSlope(guessForT, mX1, mX2);
|
|
74
|
+
if (initialSlope >= NEWTON_MIN_SLOPE) {
|
|
75
|
+
return newtonRaphsonIterate(aX, guessForT, mX1, mX2);
|
|
76
|
+
}
|
|
77
|
+
if (initialSlope === 0) {
|
|
78
|
+
return guessForT;
|
|
79
|
+
}
|
|
80
|
+
return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2);
|
|
51
81
|
}
|
|
52
|
-
return function (x) {
|
|
53
|
-
|
|
82
|
+
return function BezierEasing(x) {
|
|
83
|
+
if (x === 0 || x === 1) {
|
|
84
|
+
return x;
|
|
85
|
+
}
|
|
86
|
+
return calcBezier(getTForX(x), mY1, mY2);
|
|
54
87
|
};
|
|
55
88
|
}
|
|
56
89
|
export { bezier };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["float32ArraySupported","Float32Array","A","aA1","aA2","B","C","calcBezier","aT","getSlope","binarySubdivide","aX","aA","aB","mX1","mX2","currentX","currentT","i","Math","abs","newtonRaphsonIterate","aGuessT","currentSlope","LinearEasing","x","bezier","mY1","mY2","Error","sampleValues","Array","getTForX","intervalStart","currentSample","lastSample","dist","guessForT","initialSlope"],"sources":["../../src/cubicBezier.tsx"],"sourcesContent":[null],"mappings":"
|
|
1
|
+
{"version":3,"names":["NEWTON_ITERATIONS","NEWTON_MIN_SLOPE","SUBDIVISION_PRECISION","SUBDIVISION_MAX_ITERATIONS","kSplineTableSize","kSampleStepSize","float32ArraySupported","Float32Array","A","aA1","aA2","B","C","calcBezier","aT","getSlope","binarySubdivide","aX","aA","aB","mX1","mX2","currentX","currentT","i","Math","abs","newtonRaphsonIterate","aGuessT","currentSlope","LinearEasing","x","bezier","mY1","mY2","Error","sampleValues","Array","getTForX","intervalStart","currentSample","lastSample","dist","guessForT","initialSlope","BezierEasing"],"sources":["../../src/cubicBezier.tsx"],"sourcesContent":[null],"mappings":"AAOA,MAAMA,iBAAA,GAAoB;AAC1B,MAAMC,gBAAA,GAAmB;AACzB,MAAMC,qBAAA,GAAwB;AAC9B,MAAMC,0BAAA,GAA6B;AAEnC,MAAMC,gBAAA,GAAmB;AACzB,MAAMC,eAAA,GAAkB,KAAOD,gBAAA,GAAmB;AAElD,MAAME,qBAAA,GAAwB,OAAOC,YAAA,KAAiB;AAEtD,SAASC,EAAEC,GAAA,EAAaC,GAAA,EAAa;EACnC,OAAO,IAAM,IAAMA,GAAA,GAAM,IAAMD,GAAA;AACjC;AACA,SAASE,EAAEF,GAAA,EAAaC,GAAA,EAAa;EACnC,OAAO,IAAMA,GAAA,GAAM,IAAMD,GAAA;AAC3B;AACA,SAASG,EAAEH,GAAA,EAAa;EACtB,OAAO,IAAMA,GAAA;AACf;AAGA,SAASI,WAAWC,EAAA,EAAYL,GAAA,EAAaC,GAAA,EAAa;EACxD,SAASF,CAAA,CAAEC,GAAA,EAAKC,GAAG,IAAII,EAAA,GAAKH,CAAA,CAAEF,GAAA,EAAKC,GAAG,KAAKI,EAAA,GAAKF,CAAA,CAAEH,GAAG,KAAKK,EAAA;AAC5D;AAGA,SAASC,SAASD,EAAA,EAAYL,GAAA,EAAaC,GAAA,EAAa;EACtD,OAAO,IAAMF,CAAA,CAAEC,GAAA,EAAKC,GAAG,IAAII,EAAA,GAAKA,EAAA,GAAK,IAAMH,CAAA,CAAEF,GAAA,EAAKC,GAAG,IAAII,EAAA,GAAKF,CAAA,CAAEH,GAAG;AACrE;AAEA,SAASO,gBAAgBC,EAAA,EAAYC,EAAA,EAAYC,EAAA,EAAYC,GAAA,EAAaC,GAAA,EAAa;EACrF,IAAIC,QAAA;EACJ,IAAIC,QAAA;EACJ,IAAIC,CAAA,GAAI;EACR,GAAG;IACDD,QAAA,GAAWL,EAAA,IAAMC,EAAA,GAAKD,EAAA,IAAM;IAC5BI,QAAA,GAAWT,UAAA,CAAWU,QAAA,EAAUH,GAAA,EAAKC,GAAG,IAAIJ,EAAA;IAC5C,IAAIK,QAAA,GAAW,GAAK;MAClBH,EAAA,GAAKI,QAAA;IACP,OAAO;MACLL,EAAA,GAAKK,QAAA;IACP;EACF,SAASE,IAAA,CAAKC,GAAA,CAAIJ,QAAQ,IAAIpB,qBAAA,IAAyB,EAAEsB,CAAA,GAAIrB,0BAAA;EAC7D,OAAOoB,QAAA;AACT;AAEA,SAASI,qBAAqBV,EAAA,EAAYW,OAAA,EAAiBR,GAAA,EAAaC,GAAA,EAAa;EACnF,SAASG,CAAA,GAAI,GAAGA,CAAA,GAAIxB,iBAAA,EAAmB,EAAEwB,CAAA,EAAG;IAC1C,MAAMK,YAAA,GAAed,QAAA,CAASa,OAAA,EAASR,GAAA,EAAKC,GAAG;IAC/C,IAAIQ,YAAA,KAAiB,GAAK;MACxB,OAAOD,OAAA;IACT;IACA,MAAMN,QAAA,GAAWT,UAAA,CAAWe,OAAA,EAASR,GAAA,EAAKC,GAAG,IAAIJ,EAAA;IACjDW,OAAA,IAAWN,QAAA,GAAWO,YAAA;EACxB;EACA,OAAOD,OAAA;AACT;AAEA,SAASE,aAAaC,CAAA,EAAmB;EACvC,OAAOA,CAAA;AACT;AAEO,SAASC,OACdZ,GAAA,EACAa,GAAA,EACAZ,GAAA,EACAa,GAAA,EACuB;EACvB,IAAI,EAAE,KAAKd,GAAA,IAAOA,GAAA,IAAO,KAAK,KAAKC,GAAA,IAAOA,GAAA,IAAO,IAAI;IACnD,MAAM,IAAIc,KAAA,CAAM,yCAAyC;EAC3D;EAEA,IAAIf,GAAA,KAAQa,GAAA,IAAOZ,GAAA,KAAQa,GAAA,EAAK;IAC9B,OAAOJ,YAAA;EACT;EAGA,MAAMM,YAAA,GAAe9B,qBAAA,GACjB,IAAIC,YAAA,CAAaH,gBAAgB,IACjC,IAAIiC,KAAA,CAAMjC,gBAAgB;EAC9B,SAASoB,CAAA,GAAI,GAAGA,CAAA,GAAIpB,gBAAA,EAAkB,EAAEoB,CAAA,EAAG;IACzCY,YAAA,CAAaZ,CAAC,IAAIX,UAAA,CAAWW,CAAA,GAAInB,eAAA,EAAiBe,GAAA,EAAKC,GAAG;EAC5D;EAEA,SAASiB,SAASrB,EAAA,EAAI;IACpB,IAAIsB,aAAA,GAAgB;IACpB,IAAIC,aAAA,GAAgB;IACpB,MAAMC,UAAA,GAAarC,gBAAA,GAAmB;IAEtC,OAEEoC,aAAA,KAAkBC,UAAA,IAAcL,YAAA,CAAaI,aAAa,KAAKvB,EAAA,EAC/D,EAAEuB,aAAA,EACF;MACAD,aAAA,IAAiBlC,eAAA;IACnB;IACA,EAAEmC,aAAA;IAGF,MAAME,IAAA,IACHzB,EAAA,GAAKmB,YAAA,CAAaI,aAAa,MAC/BJ,YAAA,CAAaI,aAAA,GAAgB,CAAC,IAAIJ,YAAA,CAAaI,aAAa;IAC/D,MAAMG,SAAA,GAAYJ,aAAA,GAAgBG,IAAA,GAAOrC,eAAA;IAEzC,MAAMuC,YAAA,GAAe7B,QAAA,CAAS4B,SAAA,EAAWvB,GAAA,EAAKC,GAAG;IACjD,IAAIuB,YAAA,IAAgB3C,gBAAA,EAAkB;MACpC,OAAO0B,oBAAA,CAAqBV,EAAA,EAAI0B,SAAA,EAAWvB,GAAA,EAAKC,GAAG;IACrD;IACA,IAAIuB,YAAA,KAAiB,GAAK;MACxB,OAAOD,SAAA;IACT;IACA,OAAO3B,eAAA,CAAgBC,EAAA,EAAIsB,aAAA,EAAeA,aAAA,GAAgBlC,eAAA,EAAiBe,GAAA,EAAKC,GAAG;EACrF;EAEA,OAAO,SAASwB,aAAad,CAAA,EAAW;IAEtC,IAAIA,CAAA,KAAM,KAAKA,CAAA,KAAM,GAAG;MACtB,OAAOA,CAAA;IACT;IACA,OAAOlB,UAAA,CAAWyB,QAAA,CAASP,CAAC,GAAGE,GAAA,EAAKC,GAAG;EACzC;AACF","ignoreList":[]}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
var NEWTON_ITERATIONS = 4
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
1
|
+
var NEWTON_ITERATIONS = 4;
|
|
2
|
+
var NEWTON_MIN_SLOPE = 1e-3;
|
|
3
|
+
var SUBDIVISION_PRECISION = 1e-7;
|
|
4
|
+
var SUBDIVISION_MAX_ITERATIONS = 10;
|
|
5
|
+
var kSplineTableSize = 11;
|
|
6
|
+
var kSampleStepSize = 1 / (kSplineTableSize - 1);
|
|
7
|
+
var float32ArraySupported = typeof Float32Array === "function";
|
|
8
8
|
function A(aA1, aA2) {
|
|
9
9
|
return 1 - 3 * aA2 + 3 * aA1;
|
|
10
10
|
}
|
|
@@ -21,16 +21,26 @@ function getSlope(aT, aA1, aA2) {
|
|
|
21
21
|
return 3 * A(aA1, aA2) * aT * aT + 2 * B(aA1, aA2) * aT + C(aA1);
|
|
22
22
|
}
|
|
23
23
|
function binarySubdivide(aX, aA, aB, mX1, mX2) {
|
|
24
|
-
var currentX
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
do
|
|
24
|
+
var currentX;
|
|
25
|
+
var currentT;
|
|
26
|
+
var i = 0;
|
|
27
|
+
do {
|
|
28
|
+
currentT = aA + (aB - aA) / 2;
|
|
29
|
+
currentX = calcBezier(currentT, mX1, mX2) - aX;
|
|
30
|
+
if (currentX > 0) {
|
|
31
|
+
aB = currentT;
|
|
32
|
+
} else {
|
|
33
|
+
aA = currentT;
|
|
34
|
+
}
|
|
35
|
+
} while (Math.abs(currentX) > SUBDIVISION_PRECISION && ++i < SUBDIVISION_MAX_ITERATIONS);
|
|
28
36
|
return currentT;
|
|
29
37
|
}
|
|
30
38
|
function newtonRaphsonIterate(aX, aGuessT, mX1, mX2) {
|
|
31
39
|
for (var i = 0; i < NEWTON_ITERATIONS; ++i) {
|
|
32
40
|
var currentSlope = getSlope(aGuessT, mX1, mX2);
|
|
33
|
-
if (currentSlope === 0)
|
|
41
|
+
if (currentSlope === 0) {
|
|
42
|
+
return aGuessT;
|
|
43
|
+
}
|
|
34
44
|
var currentX = calcBezier(aGuessT, mX1, mX2) - aX;
|
|
35
45
|
aGuessT -= currentX / currentSlope;
|
|
36
46
|
}
|
|
@@ -40,19 +50,40 @@ function LinearEasing(x) {
|
|
|
40
50
|
return x;
|
|
41
51
|
}
|
|
42
52
|
function bezier(mX1, mY1, mX2, mY2) {
|
|
43
|
-
if (!(0 <= mX1 && mX1 <= 1 && 0 <= mX2 && mX2 <= 1))
|
|
44
|
-
|
|
45
|
-
|
|
53
|
+
if (!(0 <= mX1 && mX1 <= 1 && 0 <= mX2 && mX2 <= 1)) {
|
|
54
|
+
throw new Error("bezier x values must be in [0, 1] range");
|
|
55
|
+
}
|
|
56
|
+
if (mX1 === mY1 && mX2 === mY2) {
|
|
57
|
+
return LinearEasing;
|
|
58
|
+
}
|
|
59
|
+
var sampleValues = float32ArraySupported ? new Float32Array(kSplineTableSize) : new Array(kSplineTableSize);
|
|
60
|
+
for (var i = 0; i < kSplineTableSize; ++i) {
|
|
61
|
+
sampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);
|
|
62
|
+
}
|
|
46
63
|
function getTForX(aX) {
|
|
47
|
-
|
|
64
|
+
var intervalStart = 0;
|
|
65
|
+
var currentSample = 1;
|
|
66
|
+
var lastSample = kSplineTableSize - 1;
|
|
67
|
+
for (; currentSample !== lastSample && sampleValues[currentSample] <= aX; ++currentSample) {
|
|
68
|
+
intervalStart += kSampleStepSize;
|
|
69
|
+
}
|
|
48
70
|
--currentSample;
|
|
49
|
-
var dist = (aX - sampleValues[currentSample]) / (sampleValues[currentSample + 1] - sampleValues[currentSample])
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
71
|
+
var dist = (aX - sampleValues[currentSample]) / (sampleValues[currentSample + 1] - sampleValues[currentSample]);
|
|
72
|
+
var guessForT = intervalStart + dist * kSampleStepSize;
|
|
73
|
+
var initialSlope = getSlope(guessForT, mX1, mX2);
|
|
74
|
+
if (initialSlope >= NEWTON_MIN_SLOPE) {
|
|
75
|
+
return newtonRaphsonIterate(aX, guessForT, mX1, mX2);
|
|
76
|
+
}
|
|
77
|
+
if (initialSlope === 0) {
|
|
78
|
+
return guessForT;
|
|
79
|
+
}
|
|
80
|
+
return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2);
|
|
53
81
|
}
|
|
54
|
-
return function (x) {
|
|
55
|
-
|
|
82
|
+
return function BezierEasing(x) {
|
|
83
|
+
if (x === 0 || x === 1) {
|
|
84
|
+
return x;
|
|
85
|
+
}
|
|
86
|
+
return calcBezier(getTForX(x), mY1, mY2);
|
|
56
87
|
};
|
|
57
88
|
}
|
|
58
89
|
export { bezier };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["NEWTON_ITERATIONS","NEWTON_MIN_SLOPE","SUBDIVISION_PRECISION","SUBDIVISION_MAX_ITERATIONS","kSplineTableSize","kSampleStepSize","float32ArraySupported","Float32Array","A","aA1","aA2","B","C","calcBezier","aT","getSlope","binarySubdivide","aX","aA","aB","mX1","mX2","currentX","currentT","i","Math","abs","newtonRaphsonIterate","aGuessT","currentSlope","LinearEasing","x","bezier","mY1","mY2","Error","sampleValues","Array","getTForX","intervalStart","currentSample","lastSample","dist","guessForT","initialSlope"],"sources":["../../src/cubicBezier.tsx"],"sourcesContent":[null],"mappings":"
|
|
1
|
+
{"version":3,"names":["NEWTON_ITERATIONS","NEWTON_MIN_SLOPE","SUBDIVISION_PRECISION","SUBDIVISION_MAX_ITERATIONS","kSplineTableSize","kSampleStepSize","float32ArraySupported","Float32Array","A","aA1","aA2","B","C","calcBezier","aT","getSlope","binarySubdivide","aX","aA","aB","mX1","mX2","currentX","currentT","i","Math","abs","newtonRaphsonIterate","aGuessT","currentSlope","LinearEasing","x","bezier","mY1","mY2","Error","sampleValues","Array","getTForX","intervalStart","currentSample","lastSample","dist","guessForT","initialSlope","BezierEasing"],"sources":["../../src/cubicBezier.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
package/dist/esm/index.js
CHANGED
|
@@ -1,32 +1,35 @@
|
|
|
1
1
|
import { bezier } from "./cubicBezier.mjs";
|
|
2
2
|
function animate(param) {
|
|
3
3
|
let start = null;
|
|
4
|
-
const easing = param.cubicBezier ? bezier(...param.cubicBezier) : v => v
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
4
|
+
const easing = param.cubicBezier ? bezier(...param.cubicBezier) : v => v;
|
|
5
|
+
const {
|
|
6
|
+
x: fromX,
|
|
7
|
+
y: fromY,
|
|
8
|
+
scaleX: fromScaleX,
|
|
9
|
+
scaleY: fromScaleY
|
|
10
|
+
} = param.from;
|
|
11
|
+
const {
|
|
12
|
+
x: toX,
|
|
13
|
+
y: toY,
|
|
14
|
+
scaleX: toScaleX,
|
|
15
|
+
scaleY: toScaleY
|
|
16
|
+
} = param.to;
|
|
17
17
|
function frame(timestamp) {
|
|
18
|
-
|
|
19
|
-
const progress = timestamp - start
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
18
|
+
if (!start) start = timestamp;
|
|
19
|
+
const progress = timestamp - start;
|
|
20
|
+
const x = toX !== void 0 ? fromX + (toX - fromX) * easing(progress / param.duration) : void 0;
|
|
21
|
+
const y = toY !== void 0 ? fromY + (toY - fromY) * easing(progress / param.duration) : void 0;
|
|
22
|
+
const scaleX = toScaleX !== void 0 ? fromScaleX + (toScaleX - fromScaleX) * easing(progress / param.duration) : void 0;
|
|
23
|
+
const scaleY = toScaleY !== void 0 ? fromScaleY + (toScaleY - fromScaleY) * easing(progress / param.duration) : void 0;
|
|
24
24
|
param.onUpdate({
|
|
25
25
|
x,
|
|
26
26
|
y,
|
|
27
27
|
scaleX,
|
|
28
28
|
scaleY
|
|
29
|
-
})
|
|
29
|
+
});
|
|
30
|
+
if (progress < param.duration) {
|
|
31
|
+
requestAnimationFrame(frame);
|
|
32
|
+
}
|
|
30
33
|
}
|
|
31
34
|
requestAnimationFrame(frame);
|
|
32
35
|
}
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["bezier","animate","param","start","easing","cubicBezier","v","x","fromX","y","fromY","scaleX","fromScaleX","scaleY","fromScaleY","from","toX","toY","toScaleX","toScaleY","to","frame","timestamp","progress","duration","onUpdate","requestAnimationFrame"],"sources":["../../src/index.tsx"],"sourcesContent":[null],"mappings":"AAAA,SAASA,MAAA,QAAc;AAmBhB,SAASC,QAAQC,KAAA,EAA2B;EACjD,IAAIC,KAAA,GAAQ;EACZ,MAAMC,MAAA,GAASF,KAAA,CAAMG,WAAA,GAAcL,MAAA,CAAO,GAAGE,KAAA,CAAMG,WAAW,IAAKC,CAAA,IAAcA,CAAA;
|
|
1
|
+
{"version":3,"names":["bezier","animate","param","start","easing","cubicBezier","v","x","fromX","y","fromY","scaleX","fromScaleX","scaleY","fromScaleY","from","toX","toY","toScaleX","toScaleY","to","frame","timestamp","progress","duration","onUpdate","requestAnimationFrame"],"sources":["../../src/index.tsx"],"sourcesContent":[null],"mappings":"AAAA,SAASA,MAAA,QAAc;AAmBhB,SAASC,QAAQC,KAAA,EAA2B;EACjD,IAAIC,KAAA,GAAQ;EACZ,MAAMC,MAAA,GAASF,KAAA,CAAMG,WAAA,GAAcL,MAAA,CAAO,GAAGE,KAAA,CAAMG,WAAW,IAAKC,CAAA,IAAcA,CAAA;EAEjF,MAAM;IAAEC,CAAA,EAAGC,KAAA;IAAOC,CAAA,EAAGC,KAAA;IAAOC,MAAA,EAAQC,UAAA;IAAYC,MAAA,EAAQC;EAAW,IAAIZ,KAAA,CAAMa,IAAA;EAC7E,MAAM;IAAER,CAAA,EAAGS,GAAA;IAAKP,CAAA,EAAGQ,GAAA;IAAKN,MAAA,EAAQO,QAAA;IAAUL,MAAA,EAAQM;EAAS,IAAIjB,KAAA,CAAMkB,EAAA;EAErE,SAASC,MAAMC,SAAA,EAAW;IACxB,IAAI,CAACnB,KAAA,EAAOA,KAAA,GAAQmB,SAAA;IACpB,MAAMC,QAAA,GAAWD,SAAA,GAAYnB,KAAA;IAC7B,MAAMI,CAAA,GACJS,GAAA,KAAQ,SACJR,KAAA,IAAUQ,GAAA,GAAMR,KAAA,IAAUJ,MAAA,CAAOmB,QAAA,GAAWrB,KAAA,CAAMsB,QAAQ,IAC1D;IACN,MAAMf,CAAA,GACJQ,GAAA,KAAQ,SACJP,KAAA,IAAUO,GAAA,GAAMP,KAAA,IAAUN,MAAA,CAAOmB,QAAA,GAAWrB,KAAA,CAAMsB,QAAQ,IAC1D;IACN,MAAMb,MAAA,GACJO,QAAA,KAAa,SACTN,UAAA,IAAeM,QAAA,GAAWN,UAAA,IAAeR,MAAA,CAAOmB,QAAA,GAAWrB,KAAA,CAAMsB,QAAQ,IACzE;IACN,MAAMX,MAAA,GACJM,QAAA,KAAa,SACTL,UAAA,IAAeK,QAAA,GAAWL,UAAA,IAAeV,MAAA,CAAOmB,QAAA,GAAWrB,KAAA,CAAMsB,QAAQ,IACzE;IACNtB,KAAA,CAAMuB,QAAA,CAAS;MAAElB,CAAA;MAAGE,CAAA;MAAGE,MAAA;MAAQE;IAAO,CAAC;IAEvC,IAAIU,QAAA,GAAWrB,KAAA,CAAMsB,QAAA,EAAU;MAC7BE,qBAAA,CAAsBL,KAAK;IAC7B;EACF;EACAK,qBAAA,CAAsBL,KAAK;AAC7B","ignoreList":[]}
|
package/dist/esm/index.mjs
CHANGED
|
@@ -1,32 +1,35 @@
|
|
|
1
1
|
import { bezier } from "./cubicBezier.mjs";
|
|
2
2
|
function animate(param) {
|
|
3
3
|
let start = null;
|
|
4
|
-
const easing = param.cubicBezier ? bezier(...param.cubicBezier) : v => v
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
4
|
+
const easing = param.cubicBezier ? bezier(...param.cubicBezier) : v => v;
|
|
5
|
+
const {
|
|
6
|
+
x: fromX,
|
|
7
|
+
y: fromY,
|
|
8
|
+
scaleX: fromScaleX,
|
|
9
|
+
scaleY: fromScaleY
|
|
10
|
+
} = param.from;
|
|
11
|
+
const {
|
|
12
|
+
x: toX,
|
|
13
|
+
y: toY,
|
|
14
|
+
scaleX: toScaleX,
|
|
15
|
+
scaleY: toScaleY
|
|
16
|
+
} = param.to;
|
|
17
17
|
function frame(timestamp) {
|
|
18
|
-
|
|
19
|
-
const progress = timestamp - start
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
18
|
+
if (!start) start = timestamp;
|
|
19
|
+
const progress = timestamp - start;
|
|
20
|
+
const x = toX !== void 0 ? fromX + (toX - fromX) * easing(progress / param.duration) : void 0;
|
|
21
|
+
const y = toY !== void 0 ? fromY + (toY - fromY) * easing(progress / param.duration) : void 0;
|
|
22
|
+
const scaleX = toScaleX !== void 0 ? fromScaleX + (toScaleX - fromScaleX) * easing(progress / param.duration) : void 0;
|
|
23
|
+
const scaleY = toScaleY !== void 0 ? fromScaleY + (toScaleY - fromScaleY) * easing(progress / param.duration) : void 0;
|
|
24
24
|
param.onUpdate({
|
|
25
25
|
x,
|
|
26
26
|
y,
|
|
27
27
|
scaleX,
|
|
28
28
|
scaleY
|
|
29
|
-
})
|
|
29
|
+
});
|
|
30
|
+
if (progress < param.duration) {
|
|
31
|
+
requestAnimationFrame(frame);
|
|
32
|
+
}
|
|
30
33
|
}
|
|
31
34
|
requestAnimationFrame(frame);
|
|
32
35
|
}
|
package/dist/esm/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["bezier","animate","param","start","easing","cubicBezier","v","x","fromX","y","fromY","scaleX","fromScaleX","scaleY","fromScaleY","from","toX","toY","toScaleX","toScaleY","to","frame","timestamp","progress","duration","onUpdate","requestAnimationFrame"],"sources":["../../src/index.tsx"],"sourcesContent":[null],"mappings":"AAAA,SAASA,MAAA,QAAc;AAmBhB,SAASC,QAAQC,KAAA,EAA2B;EACjD,IAAIC,KAAA,GAAQ;EACZ,MAAMC,MAAA,GAASF,KAAA,CAAMG,WAAA,GAAcL,MAAA,CAAO,GAAGE,KAAA,CAAMG,WAAW,IAAKC,CAAA,IAAcA,CAAA;
|
|
1
|
+
{"version":3,"names":["bezier","animate","param","start","easing","cubicBezier","v","x","fromX","y","fromY","scaleX","fromScaleX","scaleY","fromScaleY","from","toX","toY","toScaleX","toScaleY","to","frame","timestamp","progress","duration","onUpdate","requestAnimationFrame"],"sources":["../../src/index.tsx"],"sourcesContent":[null],"mappings":"AAAA,SAASA,MAAA,QAAc;AAmBhB,SAASC,QAAQC,KAAA,EAA2B;EACjD,IAAIC,KAAA,GAAQ;EACZ,MAAMC,MAAA,GAASF,KAAA,CAAMG,WAAA,GAAcL,MAAA,CAAO,GAAGE,KAAA,CAAMG,WAAW,IAAKC,CAAA,IAAcA,CAAA;EAEjF,MAAM;IAAEC,CAAA,EAAGC,KAAA;IAAOC,CAAA,EAAGC,KAAA;IAAOC,MAAA,EAAQC,UAAA;IAAYC,MAAA,EAAQC;EAAW,IAAIZ,KAAA,CAAMa,IAAA;EAC7E,MAAM;IAAER,CAAA,EAAGS,GAAA;IAAKP,CAAA,EAAGQ,GAAA;IAAKN,MAAA,EAAQO,QAAA;IAAUL,MAAA,EAAQM;EAAS,IAAIjB,KAAA,CAAMkB,EAAA;EAErE,SAASC,MAAMC,SAAA,EAAW;IACxB,IAAI,CAACnB,KAAA,EAAOA,KAAA,GAAQmB,SAAA;IACpB,MAAMC,QAAA,GAAWD,SAAA,GAAYnB,KAAA;IAC7B,MAAMI,CAAA,GACJS,GAAA,KAAQ,SACJR,KAAA,IAAUQ,GAAA,GAAMR,KAAA,IAAUJ,MAAA,CAAOmB,QAAA,GAAWrB,KAAA,CAAMsB,QAAQ,IAC1D;IACN,MAAMf,CAAA,GACJQ,GAAA,KAAQ,SACJP,KAAA,IAAUO,GAAA,GAAMP,KAAA,IAAUN,MAAA,CAAOmB,QAAA,GAAWrB,KAAA,CAAMsB,QAAQ,IAC1D;IACN,MAAMb,MAAA,GACJO,QAAA,KAAa,SACTN,UAAA,IAAeM,QAAA,GAAWN,UAAA,IAAeR,MAAA,CAAOmB,QAAA,GAAWrB,KAAA,CAAMsB,QAAQ,IACzE;IACN,MAAMX,MAAA,GACJM,QAAA,KAAa,SACTL,UAAA,IAAeK,QAAA,GAAWL,UAAA,IAAeV,MAAA,CAAOmB,QAAA,GAAWrB,KAAA,CAAMsB,QAAQ,IACzE;IACNtB,KAAA,CAAMuB,QAAA,CAAS;MAAElB,CAAA;MAAGE,CAAA;MAAGE,MAAA;MAAQE;IAAO,CAAC;IAEvC,IAAIU,QAAA,GAAWrB,KAAA,CAAMsB,QAAA,EAAU;MAC7BE,qBAAA,CAAsBL,KAAK;IAC7B;EACF;EACAK,qBAAA,CAAsBL,KAAK;AAC7B","ignoreList":[]}
|
package/dist/esm/index.native.js
CHANGED
|
@@ -1,34 +1,37 @@
|
|
|
1
1
|
import { bezier } from "./cubicBezier.native.js";
|
|
2
2
|
function animate(param) {
|
|
3
|
-
var start = null
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
3
|
+
var start = null;
|
|
4
|
+
var easing = param.cubicBezier ? bezier(...param.cubicBezier) : function (v) {
|
|
5
|
+
return v;
|
|
6
|
+
};
|
|
7
|
+
var {
|
|
8
|
+
x: fromX,
|
|
9
|
+
y: fromY,
|
|
10
|
+
scaleX: fromScaleX,
|
|
11
|
+
scaleY: fromScaleY
|
|
12
|
+
} = param.from;
|
|
13
|
+
var {
|
|
14
|
+
x: toX,
|
|
15
|
+
y: toY,
|
|
16
|
+
scaleX: toScaleX,
|
|
17
|
+
scaleY: toScaleY
|
|
18
|
+
} = param.to;
|
|
19
19
|
function frame(timestamp) {
|
|
20
|
-
|
|
21
|
-
var progress = timestamp - start
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
20
|
+
if (!start) start = timestamp;
|
|
21
|
+
var progress = timestamp - start;
|
|
22
|
+
var x = toX !== void 0 ? fromX + (toX - fromX) * easing(progress / param.duration) : void 0;
|
|
23
|
+
var y = toY !== void 0 ? fromY + (toY - fromY) * easing(progress / param.duration) : void 0;
|
|
24
|
+
var scaleX = toScaleX !== void 0 ? fromScaleX + (toScaleX - fromScaleX) * easing(progress / param.duration) : void 0;
|
|
25
|
+
var scaleY = toScaleY !== void 0 ? fromScaleY + (toScaleY - fromScaleY) * easing(progress / param.duration) : void 0;
|
|
26
26
|
param.onUpdate({
|
|
27
27
|
x,
|
|
28
28
|
y,
|
|
29
29
|
scaleX,
|
|
30
30
|
scaleY
|
|
31
|
-
})
|
|
31
|
+
});
|
|
32
|
+
if (progress < param.duration) {
|
|
33
|
+
requestAnimationFrame(frame);
|
|
34
|
+
}
|
|
32
35
|
}
|
|
33
36
|
requestAnimationFrame(frame);
|
|
34
37
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["bezier","animate","param","start","easing","cubicBezier","v","x","fromX","y","fromY","scaleX","fromScaleX","scaleY","fromScaleY","from","toX","toY","toScaleX","toScaleY","to","frame","timestamp","progress","duration","onUpdate"],"sources":["../../src/index.tsx"],"sourcesContent":[null],"mappings":"AAAA,SAASA,MAAA,QAAc;AAmBhB,SAASC,QAAQC,KAAA,EAA2B;EACjD,IAAIC,KAAA,GAAQ;IAAAC,
|
|
1
|
+
{"version":3,"names":["bezier","animate","param","start","easing","cubicBezier","v","x","fromX","y","fromY","scaleX","fromScaleX","scaleY","fromScaleY","from","toX","toY","toScaleX","toScaleY","to","frame","timestamp","progress","duration","onUpdate"],"sources":["../../src/index.tsx"],"sourcesContent":[null],"mappings":"AAAA,SAASA,MAAA,QAAc;AAmBhB,SAASC,QAAQC,KAAA,EAA2B;EACjD,IAAIC,KAAA,GAAQ;EACZ,IAAAC,MAAM,GAAAF,KAAS,CAAAG,WAAM,GAAAL,MAAc,IAAOE,KAAG,CAAAG,WAAM,IAAW,UAAmBC,CAAA;IAEjF,OAAQA,CAAA;EACR;EAEA;IAAAC,CAAA,EAASC,KAAA;IAAMC,CAAA,EAAAC,KAAA;IAAWC,MAAA,EAAAC,UAAA;IAAAC,MAAA,EAAAC;EAAA,IAAAZ,KAAA,CAAAa,IAAA;EACxB;IAAIR,CAAC,EAAAS,GAAA;IAAOP,CAAA,EAAAQ,GAAA;IAAQN,MAAA,EAAAO,QAAA;IAAAL,MAAA,EAAAM;EAAA,IAAAjB,KAAA,CAAAkB,EAAA;EACpB,SAAMC,MAAAC,SAAW;IACjB,KAAAnB,KACE,EAAAA,KAAA,GAAQmB,SACJ;IAEN,IAAAC,QACE,GAAAD,SAAQ,GACJnB,KAAA;IAEN,IAAAI,CAAA,GAAMS,GAAA,KACJ,SAAAR,KAAa,IAAAQ,GACT,GAAAR,KAAA,IAAAJ,MAAe,CAAAmB,QAAW,GAAArB,KAAA,CAAAsB,QAAe,IAAO;IAEtD,IAAAf,CAAA,GAAMQ,GAAA,KACJ,SAAAP,KAAa,IAAAO,GACT,GAAAP,KAAA,IAAAN,MAAe,CAAAmB,QAAW,GAAArB,KAAA,CAAAsB,QAAe,IAAO;IAEtD,IAAAb,MAAM,GAAAO,QAAc,KAAG,KAAQ,IAAAN,UAAQ,IAAAM,QAAA,GAAAN,UAAA,IAAAR,MAAA,CAAAmB,QAAA,GAAArB,KAAA,CAAAsB,QAAA;IAEvC,IAAIX,MAAA,GAAAM,QAAiB,UAAU,IAAAL,UAAA,IAAAK,QAAA,GAAAL,UAAA,IAAAV,MAAA,CAAAmB,QAAA,GAAArB,KAAA,CAAAsB,QAAA;IAC7BtB,KAAA,CAAAuB,QAAA;MACFlB,CAAA;MACFE,CAAA;MACAE,MAAA;MACFE","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hanzogui/cubic-bezier-animator",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "4.4.0",
|
|
4
4
|
"source": "src/index.tsx",
|
|
5
5
|
"files": [
|
|
6
6
|
"src",
|
|
@@ -34,6 +34,6 @@
|
|
|
34
34
|
"clean:build": "hanzo-gui-build clean:build"
|
|
35
35
|
},
|
|
36
36
|
"devDependencies": {
|
|
37
|
-
"@hanzogui/build": "
|
|
37
|
+
"@hanzogui/build": "4.4.0"
|
|
38
38
|
}
|
|
39
39
|
}
|