@tamagui/cubic-bezier-animator 1.61.2 → 1.62.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.js +25 -60
- package/dist/cjs/cubicBezier.js.map +1 -1
- package/dist/cjs/cubicBezier.native.js +82 -0
- package/dist/cjs/cubicBezier.native.js.map +6 -0
- package/dist/cjs/index.js +9 -23
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/index.native.js +36 -0
- package/dist/cjs/index.native.js.map +6 -0
- package/dist/esm/cubicBezier.js +20 -51
- package/dist/esm/cubicBezier.js.map +1 -1
- package/dist/esm/index.js +4 -14
- package/dist/esm/index.js.map +1 -1
- package/dist/jsx/cubicBezier.js +20 -51
- package/dist/jsx/cubicBezier.js.map +1 -1
- package/dist/jsx/cubicBezier.native.js +61 -0
- package/dist/jsx/cubicBezier.native.js.map +6 -0
- package/dist/jsx/index.js +4 -14
- package/dist/jsx/index.js.map +1 -1
- package/dist/jsx/index.native.js +15 -0
- package/dist/jsx/index.native.js.map +6 -0
- package/package.json +2 -2
package/dist/cjs/cubicBezier.js
CHANGED
|
@@ -1,33 +1,23 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
var __defProp = Object.defineProperty;
|
|
3
2
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
3
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
4
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
5
|
var __export = (target, all) => {
|
|
7
6
|
for (var name in all)
|
|
8
|
-
__defProp(target, name, { get: all[name], enumerable:
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
7
|
+
__defProp(target, name, { get: all[name], enumerable: !0 });
|
|
8
|
+
}, __copyProps = (to, from, except, desc) => {
|
|
9
|
+
if (from && typeof from == "object" || typeof from == "function")
|
|
12
10
|
for (let key of __getOwnPropNames(from))
|
|
13
|
-
|
|
14
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
-
}
|
|
11
|
+
!__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
16
12
|
return to;
|
|
17
13
|
};
|
|
18
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value:
|
|
14
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: !0 }), mod);
|
|
19
15
|
var cubicBezier_exports = {};
|
|
20
16
|
__export(cubicBezier_exports, {
|
|
21
17
|
bezier: () => bezier
|
|
22
18
|
});
|
|
23
19
|
module.exports = __toCommonJS(cubicBezier_exports);
|
|
24
|
-
const
|
|
25
|
-
const NEWTON_MIN_SLOPE = 1e-3;
|
|
26
|
-
const SUBDIVISION_PRECISION = 1e-7;
|
|
27
|
-
const SUBDIVISION_MAX_ITERATIONS = 10;
|
|
28
|
-
const kSplineTableSize = 11;
|
|
29
|
-
const kSampleStepSize = 1 / (kSplineTableSize - 1);
|
|
30
|
-
const float32ArraySupported = typeof Float32Array === "function";
|
|
20
|
+
const float32ArraySupported = typeof Float32Array == "function";
|
|
31
21
|
function A(aA1, aA2) {
|
|
32
22
|
return 1 - 3 * aA2 + 3 * aA1;
|
|
33
23
|
}
|
|
@@ -44,26 +34,17 @@ function getSlope(aT, aA1, aA2) {
|
|
|
44
34
|
return 3 * A(aA1, aA2) * aT * aT + 2 * B(aA1, aA2) * aT + C(aA1);
|
|
45
35
|
}
|
|
46
36
|
function binarySubdivide(aX, aA, aB, mX1, mX2) {
|
|
47
|
-
let currentX;
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
currentT = aA + (aB - aA) / 2;
|
|
52
|
-
currentX = calcBezier(currentT, mX1, mX2) - aX;
|
|
53
|
-
if (currentX > 0) {
|
|
54
|
-
aB = currentT;
|
|
55
|
-
} else {
|
|
56
|
-
aA = currentT;
|
|
57
|
-
}
|
|
58
|
-
} while (Math.abs(currentX) > SUBDIVISION_PRECISION && ++i < SUBDIVISION_MAX_ITERATIONS);
|
|
37
|
+
let currentX, currentT, i = 0;
|
|
38
|
+
do
|
|
39
|
+
currentT = aA + (aB - aA) / 2, currentX = calcBezier(currentT, mX1, mX2) - aX, currentX > 0 ? aB = currentT : aA = currentT;
|
|
40
|
+
while (Math.abs(currentX) > 1e-7 && ++i < 10);
|
|
59
41
|
return currentT;
|
|
60
42
|
}
|
|
61
43
|
function newtonRaphsonIterate(aX, aGuessT, mX1, mX2) {
|
|
62
|
-
for (let i = 0; i <
|
|
44
|
+
for (let i = 0; i < 4; ++i) {
|
|
63
45
|
const currentSlope = getSlope(aGuessT, mX1, mX2);
|
|
64
|
-
if (currentSlope === 0)
|
|
46
|
+
if (currentSlope === 0)
|
|
65
47
|
return aGuessT;
|
|
66
|
-
}
|
|
67
48
|
const currentX = calcBezier(aGuessT, mX1, mX2) - aX;
|
|
68
49
|
aGuessT -= currentX / currentSlope;
|
|
69
50
|
}
|
|
@@ -73,40 +54,24 @@ function LinearEasing(x) {
|
|
|
73
54
|
return x;
|
|
74
55
|
}
|
|
75
56
|
function bezier(mX1, mY1, mX2, mY2) {
|
|
76
|
-
if (!(0 <= mX1 && mX1 <= 1 && 0 <= mX2 && mX2 <= 1))
|
|
57
|
+
if (!(0 <= mX1 && mX1 <= 1 && 0 <= mX2 && mX2 <= 1))
|
|
77
58
|
throw new Error("bezier x values must be in [0, 1] range");
|
|
78
|
-
|
|
79
|
-
if (mX1 === mY1 && mX2 === mY2) {
|
|
59
|
+
if (mX1 === mY1 && mX2 === mY2)
|
|
80
60
|
return LinearEasing;
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
sampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);
|
|
85
|
-
}
|
|
61
|
+
const sampleValues = float32ArraySupported ? new Float32Array(11) : new Array(11);
|
|
62
|
+
for (let i = 0; i < 11; ++i)
|
|
63
|
+
sampleValues[i] = calcBezier(i * 0.1, mX1, mX2);
|
|
86
64
|
function getTForX(aX) {
|
|
87
|
-
let intervalStart = 0;
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
intervalStart += kSampleStepSize;
|
|
92
|
-
}
|
|
65
|
+
let intervalStart = 0, currentSample = 1;
|
|
66
|
+
const lastSample = 11 - 1;
|
|
67
|
+
for (; currentSample !== lastSample && sampleValues[currentSample] <= aX; ++currentSample)
|
|
68
|
+
intervalStart += 0.1;
|
|
93
69
|
--currentSample;
|
|
94
|
-
const dist = (aX - sampleValues[currentSample]) / (sampleValues[currentSample + 1] - sampleValues[currentSample]);
|
|
95
|
-
|
|
96
|
-
const initialSlope = getSlope(guessForT, mX1, mX2);
|
|
97
|
-
if (initialSlope >= NEWTON_MIN_SLOPE) {
|
|
98
|
-
return newtonRaphsonIterate(aX, guessForT, mX1, mX2);
|
|
99
|
-
} else if (initialSlope === 0) {
|
|
100
|
-
return guessForT;
|
|
101
|
-
} else {
|
|
102
|
-
return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2);
|
|
103
|
-
}
|
|
70
|
+
const dist = (aX - sampleValues[currentSample]) / (sampleValues[currentSample + 1] - sampleValues[currentSample]), guessForT = intervalStart + dist * 0.1, initialSlope = getSlope(guessForT, mX1, mX2);
|
|
71
|
+
return initialSlope >= 1e-3 ? newtonRaphsonIterate(aX, guessForT, mX1, mX2) : initialSlope === 0 ? guessForT : binarySubdivide(aX, intervalStart, intervalStart + 0.1, mX1, mX2);
|
|
104
72
|
}
|
|
105
|
-
return function
|
|
106
|
-
|
|
107
|
-
return x;
|
|
108
|
-
}
|
|
109
|
-
return calcBezier(getTForX(x), mY1, mY2);
|
|
73
|
+
return function(x) {
|
|
74
|
+
return x === 0 || x === 1 ? x : calcBezier(getTForX(x), mY1, mY2);
|
|
110
75
|
};
|
|
111
76
|
}
|
|
112
77
|
// Annotate the CommonJS export names for ESM import in node:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/cubicBezier.tsx"],
|
|
4
|
-
"mappings": "
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAeA,MAAM,wBAAwB,OAAO,gBAAiB;AAEtD,SAAS,EAAE,KAAa,KAAa;AACnC,SAAO,IAAM,IAAM,MAAM,IAAM;AACjC;AACA,SAAS,EAAE,KAAa,KAAa;AACnC,SAAO,IAAM,MAAM,IAAM;AAC3B;AACA,SAAS,EAAE,KAAa;AACtB,SAAO,IAAM;AACf;AAGA,SAAS,WAAW,IAAY,KAAa,KAAa;AACxD,WAAS,EAAE,KAAK,GAAG,IAAI,KAAK,EAAE,KAAK,GAAG,KAAK,KAAK,EAAE,GAAG,KAAK;AAC5D;AAGA,SAAS,SAAS,IAAY,KAAa,KAAa;AACtD,SAAO,IAAM,EAAE,KAAK,GAAG,IAAI,KAAK,KAAK,IAAM,EAAE,KAAK,GAAG,IAAI,KAAK,EAAE,GAAG;AACrE;AAEA,SAAS,gBAAgB,IAAY,IAAY,IAAY,KAAa,KAAa;AACrF,MAAI,UACA,UACA,IAAI;AACR;AACE,eAAW,MAAM,KAAK,MAAM,GAC5B,WAAW,WAAW,UAAU,KAAK,GAAG,IAAI,IACxC,WAAW,IACb,KAAK,WAEL,KAAK;AAAA,SAEA,KAAK,IAAI,QAAQ,IAAI,QAAyB,EAAE,IAAI;AAC7D,SAAO;AACT;AAEA,SAAS,qBAAqB,IAAY,SAAiB,KAAa,KAAa;AACnF,WAAS,IAAI,GAAG,IAAI,GAAmB,EAAE,GAAG;AAC1C,UAAM,eAAe,SAAS,SAAS,KAAK,GAAG;AAC/C,QAAI,iBAAiB;AACnB,aAAO;AAET,UAAM,WAAW,WAAW,SAAS,KAAK,GAAG,IAAI;AACjD,eAAW,WAAW;AAAA,EACxB;AACA,SAAO;AACT;AAEA,SAAS,aAAa,GAAW;AAC/B,SAAO;AACT;AAEO,SAAS,OAAO,KAAa,KAAa,KAAa,KAAa;AACzE,MAAI,EAAE,KAAK,OAAO,OAAO,KAAK,KAAK,OAAO,OAAO;AAC/C,UAAM,IAAI,MAAM,yCAAyC;AAG3D,MAAI,QAAQ,OAAO,QAAQ;AACzB,WAAO;AAIT,QAAM,eAAe,wBACjB,IAAI,aAAa,EAAgB,IACjC,IAAI,MAAM,EAAgB;AAC9B,WAAS,IAAI,GAAG,IAAI,IAAkB,EAAE;AACtC,iBAAa,CAAC,IAAI,WAAW,IAAI,KAAiB,KAAK,GAAG;AAG5D,WAAS,SAAS,IAAI;AACpB,QAAI,gBAAgB,GAChB,gBAAgB;AACpB,UAAM,aAAa,KAAmB;AAEtC,WAEE,kBAAkB,cAAc,aAAa,aAAa,KAAK,IAC/D,EAAE;AAEF,uBAAiB;AAEnB,MAAE;AAGF,UAAM,QACH,KAAK,aAAa,aAAa,MAC/B,aAAa,gBAAgB,CAAC,IAAI,aAAa,aAAa,IACzD,YAAY,gBAAgB,OAAO,KAEnC,eAAe,SAAS,WAAW,KAAK,GAAG;AACjD,WAAI,gBAAgB,OACX,qBAAqB,IAAI,WAAW,KAAK,GAAG,IAC1C,iBAAiB,IACnB,YAEA,gBAAgB,IAAI,eAAe,gBAAgB,KAAiB,KAAK,GAAG;AAAA,EAEvF;AAEA,SAAO,SAAsB,GAAW;AAEtC,WAAI,MAAM,KAAK,MAAM,IACZ,IAEF,WAAW,SAAS,CAAC,GAAG,KAAK,GAAG;AAAA,EACzC;AACF;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: !0 });
|
|
9
|
+
}, __copyProps = (to, from, except, desc) => {
|
|
10
|
+
if (from && typeof from == "object" || typeof from == "function")
|
|
11
|
+
for (let key of __getOwnPropNames(from))
|
|
12
|
+
!__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
13
|
+
return to;
|
|
14
|
+
};
|
|
15
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: !0 }), mod);
|
|
16
|
+
var cubicBezier_exports = {};
|
|
17
|
+
__export(cubicBezier_exports, {
|
|
18
|
+
bezier: () => bezier
|
|
19
|
+
});
|
|
20
|
+
module.exports = __toCommonJS(cubicBezier_exports);
|
|
21
|
+
const float32ArraySupported = typeof Float32Array == "function";
|
|
22
|
+
function A(aA1, aA2) {
|
|
23
|
+
return 1 - 3 * aA2 + 3 * aA1;
|
|
24
|
+
}
|
|
25
|
+
function B(aA1, aA2) {
|
|
26
|
+
return 3 * aA2 - 6 * aA1;
|
|
27
|
+
}
|
|
28
|
+
function C(aA1) {
|
|
29
|
+
return 3 * aA1;
|
|
30
|
+
}
|
|
31
|
+
function calcBezier(aT, aA1, aA2) {
|
|
32
|
+
return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT;
|
|
33
|
+
}
|
|
34
|
+
function getSlope(aT, aA1, aA2) {
|
|
35
|
+
return 3 * A(aA1, aA2) * aT * aT + 2 * B(aA1, aA2) * aT + C(aA1);
|
|
36
|
+
}
|
|
37
|
+
function binarySubdivide(aX, aA, aB, mX1, mX2) {
|
|
38
|
+
let currentX, currentT, i = 0;
|
|
39
|
+
do
|
|
40
|
+
currentT = aA + (aB - aA) / 2, currentX = calcBezier(currentT, mX1, mX2) - aX, currentX > 0 ? aB = currentT : aA = currentT;
|
|
41
|
+
while (Math.abs(currentX) > 1e-7 && ++i < 10);
|
|
42
|
+
return currentT;
|
|
43
|
+
}
|
|
44
|
+
function newtonRaphsonIterate(aX, aGuessT, mX1, mX2) {
|
|
45
|
+
for (let i = 0; i < 4; ++i) {
|
|
46
|
+
const currentSlope = getSlope(aGuessT, mX1, mX2);
|
|
47
|
+
if (currentSlope === 0)
|
|
48
|
+
return aGuessT;
|
|
49
|
+
const currentX = calcBezier(aGuessT, mX1, mX2) - aX;
|
|
50
|
+
aGuessT -= currentX / currentSlope;
|
|
51
|
+
}
|
|
52
|
+
return aGuessT;
|
|
53
|
+
}
|
|
54
|
+
function LinearEasing(x) {
|
|
55
|
+
return x;
|
|
56
|
+
}
|
|
57
|
+
function bezier(mX1, mY1, mX2, mY2) {
|
|
58
|
+
if (!(0 <= mX1 && mX1 <= 1 && 0 <= mX2 && mX2 <= 1))
|
|
59
|
+
throw new Error("bezier x values must be in [0, 1] range");
|
|
60
|
+
if (mX1 === mY1 && mX2 === mY2)
|
|
61
|
+
return LinearEasing;
|
|
62
|
+
const sampleValues = float32ArraySupported ? new Float32Array(11) : new Array(11);
|
|
63
|
+
for (let i = 0; i < 11; ++i)
|
|
64
|
+
sampleValues[i] = calcBezier(i * 0.1, mX1, mX2);
|
|
65
|
+
function getTForX(aX) {
|
|
66
|
+
let intervalStart = 0, currentSample = 1;
|
|
67
|
+
const lastSample = 11 - 1;
|
|
68
|
+
for (; currentSample !== lastSample && sampleValues[currentSample] <= aX; ++currentSample)
|
|
69
|
+
intervalStart += 0.1;
|
|
70
|
+
--currentSample;
|
|
71
|
+
const dist = (aX - sampleValues[currentSample]) / (sampleValues[currentSample + 1] - sampleValues[currentSample]), guessForT = intervalStart + dist * 0.1, initialSlope = getSlope(guessForT, mX1, mX2);
|
|
72
|
+
return initialSlope >= 1e-3 ? newtonRaphsonIterate(aX, guessForT, mX1, mX2) : initialSlope === 0 ? guessForT : binarySubdivide(aX, intervalStart, intervalStart + 0.1, mX1, mX2);
|
|
73
|
+
}
|
|
74
|
+
return function(x) {
|
|
75
|
+
return x === 0 || x === 1 ? x : calcBezier(getTForX(x), mY1, mY2);
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
79
|
+
0 && (module.exports = {
|
|
80
|
+
bezier
|
|
81
|
+
});
|
|
82
|
+
//# sourceMappingURL=cubicBezier.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/cubicBezier.tsx"],
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAeA,MAAM,wBAAwB,OAAO,gBAAiB;AAEtD,SAAS,EAAE,KAAa,KAAa;AACnC,SAAO,IAAM,IAAM,MAAM,IAAM;AACjC;AACA,SAAS,EAAE,KAAa,KAAa;AACnC,SAAO,IAAM,MAAM,IAAM;AAC3B;AACA,SAAS,EAAE,KAAa;AACtB,SAAO,IAAM;AACf;AAGA,SAAS,WAAW,IAAY,KAAa,KAAa;AACxD,WAAS,EAAE,KAAK,GAAG,IAAI,KAAK,EAAE,KAAK,GAAG,KAAK,KAAK,EAAE,GAAG,KAAK;AAC5D;AAGA,SAAS,SAAS,IAAY,KAAa,KAAa;AACtD,SAAO,IAAM,EAAE,KAAK,GAAG,IAAI,KAAK,KAAK,IAAM,EAAE,KAAK,GAAG,IAAI,KAAK,EAAE,GAAG;AACrE;AAEA,SAAS,gBAAgB,IAAY,IAAY,IAAY,KAAa,KAAa;AACrF,MAAI,UACA,UACA,IAAI;AACR;AACE,eAAW,MAAM,KAAK,MAAM,GAC5B,WAAW,WAAW,UAAU,KAAK,GAAG,IAAI,IACxC,WAAW,IACb,KAAK,WAEL,KAAK;AAAA,SAEA,KAAK,IAAI,QAAQ,IAAI,QAAyB,EAAE,IAAI;AAC7D,SAAO;AACT;AAEA,SAAS,qBAAqB,IAAY,SAAiB,KAAa,KAAa;AACnF,WAAS,IAAI,GAAG,IAAI,GAAmB,EAAE,GAAG;AAC1C,UAAM,eAAe,SAAS,SAAS,KAAK,GAAG;AAC/C,QAAI,iBAAiB;AACnB,aAAO;AAET,UAAM,WAAW,WAAW,SAAS,KAAK,GAAG,IAAI;AACjD,eAAW,WAAW;AAAA,EACxB;AACA,SAAO;AACT;AAEA,SAAS,aAAa,GAAW;AAC/B,SAAO;AACT;AAEO,SAAS,OAAO,KAAa,KAAa,KAAa,KAAa;AACzE,MAAI,EAAE,KAAK,OAAO,OAAO,KAAK,KAAK,OAAO,OAAO;AAC/C,UAAM,IAAI,MAAM,yCAAyC;AAG3D,MAAI,QAAQ,OAAO,QAAQ;AACzB,WAAO;AAIT,QAAM,eAAe,wBACjB,IAAI,aAAa,EAAgB,IACjC,IAAI,MAAM,EAAgB;AAC9B,WAAS,IAAI,GAAG,IAAI,IAAkB,EAAE;AACtC,iBAAa,CAAC,IAAI,WAAW,IAAI,KAAiB,KAAK,GAAG;AAG5D,WAAS,SAAS,IAAI;AACpB,QAAI,gBAAgB,GAChB,gBAAgB;AACpB,UAAM,aAAa,KAAmB;AAEtC,WAEE,kBAAkB,cAAc,aAAa,aAAa,KAAK,IAC/D,EAAE;AAEF,uBAAiB;AAEnB,MAAE;AAGF,UAAM,QACH,KAAK,aAAa,aAAa,MAC/B,aAAa,gBAAgB,CAAC,IAAI,aAAa,aAAa,IACzD,YAAY,gBAAgB,OAAO,KAEnC,eAAe,SAAS,WAAW,KAAK,GAAG;AACjD,WAAI,gBAAgB,OACX,qBAAqB,IAAI,WAAW,KAAK,GAAG,IAC1C,iBAAiB,IACnB,YAEA,gBAAgB,IAAI,eAAe,gBAAgB,KAAiB,KAAK,GAAG;AAAA,EAEvF;AAEA,SAAO,SAAsB,GAAW;AAEtC,WAAI,MAAM,KAAK,MAAM,IACZ,IAEF,WAAW,SAAS,CAAC,GAAG,KAAK,GAAG;AAAA,EACzC;AACF;",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|
package/dist/cjs/index.js
CHANGED
|
@@ -1,21 +1,17 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
var __defProp = Object.defineProperty;
|
|
3
2
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
3
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
4
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
5
|
var __export = (target, all) => {
|
|
7
6
|
for (var name in all)
|
|
8
|
-
__defProp(target, name, { get: all[name], enumerable:
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
7
|
+
__defProp(target, name, { get: all[name], enumerable: !0 });
|
|
8
|
+
}, __copyProps = (to, from, except, desc) => {
|
|
9
|
+
if (from && typeof from == "object" || typeof from == "function")
|
|
12
10
|
for (let key of __getOwnPropNames(from))
|
|
13
|
-
|
|
14
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
-
}
|
|
11
|
+
!__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
16
12
|
return to;
|
|
17
13
|
};
|
|
18
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value:
|
|
14
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: !0 }), mod);
|
|
19
15
|
var src_exports = {};
|
|
20
16
|
__export(src_exports, {
|
|
21
17
|
animate: () => animate
|
|
@@ -24,21 +20,11 @@ module.exports = __toCommonJS(src_exports);
|
|
|
24
20
|
var import_cubicBezier = require("./cubicBezier");
|
|
25
21
|
function animate(param) {
|
|
26
22
|
let start = null;
|
|
27
|
-
const easing = param.cubicBezier ? (0, import_cubicBezier.bezier)(...param.cubicBezier) : (v) => v;
|
|
28
|
-
const { x: fromX, y: fromY, scaleX: fromScaleX, scaleY: fromScaleY } = param.from;
|
|
29
|
-
const { x: toX, y: toY, scaleX: toScaleX, scaleY: toScaleY } = param.to;
|
|
23
|
+
const easing = param.cubicBezier ? (0, import_cubicBezier.bezier)(...param.cubicBezier) : (v) => v, { x: fromX, y: fromY, scaleX: fromScaleX, scaleY: fromScaleY } = param.from, { x: toX, y: toY, scaleX: toScaleX, scaleY: toScaleY } = param.to;
|
|
30
24
|
function frame(timestamp) {
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
const x = toX !== void 0 ? fromX + (toX - fromX) * easing(progress / param.duration) : void 0;
|
|
35
|
-
const y = toY !== void 0 ? fromY + (toY - fromY) * easing(progress / param.duration) : void 0;
|
|
36
|
-
const scaleX = toScaleX !== void 0 ? fromScaleX + (toScaleX - fromScaleX) * easing(progress / param.duration) : void 0;
|
|
37
|
-
const scaleY = toScaleY !== void 0 ? fromScaleY + (toScaleY - fromScaleY) * easing(progress / param.duration) : void 0;
|
|
38
|
-
param.onUpdate({ x, y, scaleX, scaleY });
|
|
39
|
-
if (progress < param.duration) {
|
|
40
|
-
requestAnimationFrame(frame);
|
|
41
|
-
}
|
|
25
|
+
start || (start = timestamp);
|
|
26
|
+
const progress = timestamp - start, x = toX !== void 0 ? fromX + (toX - fromX) * easing(progress / param.duration) : void 0, y = toY !== void 0 ? fromY + (toY - fromY) * easing(progress / param.duration) : void 0, scaleX = toScaleX !== void 0 ? fromScaleX + (toScaleX - fromScaleX) * easing(progress / param.duration) : void 0, scaleY = toScaleY !== void 0 ? fromScaleY + (toScaleY - fromScaleY) * easing(progress / param.duration) : void 0;
|
|
27
|
+
param.onUpdate({ x, y, scaleX, scaleY }), progress < param.duration && requestAnimationFrame(frame);
|
|
42
28
|
}
|
|
43
29
|
requestAnimationFrame(frame);
|
|
44
30
|
}
|
package/dist/cjs/index.js.map
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/index.tsx"],
|
|
4
|
-
"mappings": "
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,yBAAuB;AAiBhB,SAAS,QAAQ,OAAqB;AAC3C,MAAI,QAAQ;AACZ,QAAM,SAAS,MAAM,kBAAc,2BAAO,GAAG,MAAM,WAAW,IAAI,CAAC,MAAc,GAE3E,EAAE,GAAG,OAAO,GAAG,OAAO,QAAQ,YAAY,QAAQ,WAAW,IAAI,MAAM,MACvE,EAAE,GAAG,KAAK,GAAG,KAAK,QAAQ,UAAU,QAAQ,SAAS,IAAI,MAAM;AAErE,WAAS,MAAM,WAAW;AACxB,IAAK,UAAO,QAAQ;AACpB,UAAM,WAAW,YAAY,OACvB,IACJ,QAAQ,SACJ,SAAU,MAAM,SAAU,OAAO,WAAW,MAAM,QAAQ,IAC1D,QACA,IACJ,QAAQ,SACJ,SAAU,MAAM,SAAU,OAAO,WAAW,MAAM,QAAQ,IAC1D,QACA,SACJ,aAAa,SACT,cAAe,WAAW,cAAe,OAAO,WAAW,MAAM,QAAQ,IACzE,QACA,SACJ,aAAa,SACT,cAAe,WAAW,cAAe,OAAO,WAAW,MAAM,QAAQ,IACzE;AACN,UAAM,SAAS,EAAE,GAAG,GAAG,QAAQ,OAAO,CAAC,GAEnC,WAAW,MAAM,YACnB,sBAAsB,KAAK;AAAA,EAE/B;AACA,wBAAsB,KAAK;AAC7B;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: !0 });
|
|
9
|
+
}, __copyProps = (to, from, except, desc) => {
|
|
10
|
+
if (from && typeof from == "object" || typeof from == "function")
|
|
11
|
+
for (let key of __getOwnPropNames(from))
|
|
12
|
+
!__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
13
|
+
return to;
|
|
14
|
+
};
|
|
15
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: !0 }), mod);
|
|
16
|
+
var src_exports = {};
|
|
17
|
+
__export(src_exports, {
|
|
18
|
+
animate: () => animate
|
|
19
|
+
});
|
|
20
|
+
module.exports = __toCommonJS(src_exports);
|
|
21
|
+
var import_cubicBezier = require("./cubicBezier");
|
|
22
|
+
function animate(param) {
|
|
23
|
+
let start = null;
|
|
24
|
+
const easing = param.cubicBezier ? (0, import_cubicBezier.bezier)(...param.cubicBezier) : (v) => v, { x: fromX, y: fromY, scaleX: fromScaleX, scaleY: fromScaleY } = param.from, { x: toX, y: toY, scaleX: toScaleX, scaleY: toScaleY } = param.to;
|
|
25
|
+
function frame(timestamp) {
|
|
26
|
+
start || (start = timestamp);
|
|
27
|
+
const progress = timestamp - start, x = toX !== void 0 ? fromX + (toX - fromX) * easing(progress / param.duration) : void 0, y = toY !== void 0 ? fromY + (toY - fromY) * easing(progress / param.duration) : void 0, scaleX = toScaleX !== void 0 ? fromScaleX + (toScaleX - fromScaleX) * easing(progress / param.duration) : void 0, scaleY = toScaleY !== void 0 ? fromScaleY + (toScaleY - fromScaleY) * easing(progress / param.duration) : void 0;
|
|
28
|
+
param.onUpdate({ x, y, scaleX, scaleY }), progress < param.duration && requestAnimationFrame(frame);
|
|
29
|
+
}
|
|
30
|
+
requestAnimationFrame(frame);
|
|
31
|
+
}
|
|
32
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
33
|
+
0 && (module.exports = {
|
|
34
|
+
animate
|
|
35
|
+
});
|
|
36
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/index.tsx"],
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,yBAAuB;AAiBhB,SAAS,QAAQ,OAAqB;AAC3C,MAAI,QAAQ;AACZ,QAAM,SAAS,MAAM,kBAAc,2BAAO,GAAG,MAAM,WAAW,IAAI,CAAC,MAAc,GAE3E,EAAE,GAAG,OAAO,GAAG,OAAO,QAAQ,YAAY,QAAQ,WAAW,IAAI,MAAM,MACvE,EAAE,GAAG,KAAK,GAAG,KAAK,QAAQ,UAAU,QAAQ,SAAS,IAAI,MAAM;AAErE,WAAS,MAAM,WAAW;AACxB,IAAK,UAAO,QAAQ;AACpB,UAAM,WAAW,YAAY,OACvB,IACJ,QAAQ,SACJ,SAAU,MAAM,SAAU,OAAO,WAAW,MAAM,QAAQ,IAC1D,QACA,IACJ,QAAQ,SACJ,SAAU,MAAM,SAAU,OAAO,WAAW,MAAM,QAAQ,IAC1D,QACA,SACJ,aAAa,SACT,cAAe,WAAW,cAAe,OAAO,WAAW,MAAM,QAAQ,IACzE,QACA,SACJ,aAAa,SACT,cAAe,WAAW,cAAe,OAAO,WAAW,MAAM,QAAQ,IACzE;AACN,UAAM,SAAS,EAAE,GAAG,GAAG,QAAQ,OAAO,CAAC,GAEnC,WAAW,MAAM,YACnB,sBAAsB,KAAK;AAAA,EAE/B;AACA,wBAAsB,KAAK;AAC7B;",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|
package/dist/esm/cubicBezier.js
CHANGED
|
@@ -1,10 +1,4 @@
|
|
|
1
|
-
const
|
|
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";
|
|
1
|
+
const float32ArraySupported = typeof Float32Array == "function";
|
|
8
2
|
function A(aA1, aA2) {
|
|
9
3
|
return 1 - 3 * aA2 + 3 * aA1;
|
|
10
4
|
}
|
|
@@ -21,26 +15,17 @@ function getSlope(aT, aA1, aA2) {
|
|
|
21
15
|
return 3 * A(aA1, aA2) * aT * aT + 2 * B(aA1, aA2) * aT + C(aA1);
|
|
22
16
|
}
|
|
23
17
|
function binarySubdivide(aX, aA, aB, mX1, mX2) {
|
|
24
|
-
let currentX;
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
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);
|
|
18
|
+
let currentX, currentT, i = 0;
|
|
19
|
+
do
|
|
20
|
+
currentT = aA + (aB - aA) / 2, currentX = calcBezier(currentT, mX1, mX2) - aX, currentX > 0 ? aB = currentT : aA = currentT;
|
|
21
|
+
while (Math.abs(currentX) > 1e-7 && ++i < 10);
|
|
36
22
|
return currentT;
|
|
37
23
|
}
|
|
38
24
|
function newtonRaphsonIterate(aX, aGuessT, mX1, mX2) {
|
|
39
|
-
for (let i = 0; i <
|
|
25
|
+
for (let i = 0; i < 4; ++i) {
|
|
40
26
|
const currentSlope = getSlope(aGuessT, mX1, mX2);
|
|
41
|
-
if (currentSlope === 0)
|
|
27
|
+
if (currentSlope === 0)
|
|
42
28
|
return aGuessT;
|
|
43
|
-
}
|
|
44
29
|
const currentX = calcBezier(aGuessT, mX1, mX2) - aX;
|
|
45
30
|
aGuessT -= currentX / currentSlope;
|
|
46
31
|
}
|
|
@@ -50,40 +35,24 @@ function LinearEasing(x) {
|
|
|
50
35
|
return x;
|
|
51
36
|
}
|
|
52
37
|
function bezier(mX1, mY1, mX2, mY2) {
|
|
53
|
-
if (!(0 <= mX1 && mX1 <= 1 && 0 <= mX2 && mX2 <= 1))
|
|
38
|
+
if (!(0 <= mX1 && mX1 <= 1 && 0 <= mX2 && mX2 <= 1))
|
|
54
39
|
throw new Error("bezier x values must be in [0, 1] range");
|
|
55
|
-
|
|
56
|
-
if (mX1 === mY1 && mX2 === mY2) {
|
|
40
|
+
if (mX1 === mY1 && mX2 === mY2)
|
|
57
41
|
return LinearEasing;
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
sampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);
|
|
62
|
-
}
|
|
42
|
+
const sampleValues = float32ArraySupported ? new Float32Array(11) : new Array(11);
|
|
43
|
+
for (let i = 0; i < 11; ++i)
|
|
44
|
+
sampleValues[i] = calcBezier(i * 0.1, mX1, mX2);
|
|
63
45
|
function getTForX(aX) {
|
|
64
|
-
let intervalStart = 0;
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
intervalStart += kSampleStepSize;
|
|
69
|
-
}
|
|
46
|
+
let intervalStart = 0, currentSample = 1;
|
|
47
|
+
const lastSample = 11 - 1;
|
|
48
|
+
for (; currentSample !== lastSample && sampleValues[currentSample] <= aX; ++currentSample)
|
|
49
|
+
intervalStart += 0.1;
|
|
70
50
|
--currentSample;
|
|
71
|
-
const dist = (aX - sampleValues[currentSample]) / (sampleValues[currentSample + 1] - sampleValues[currentSample]);
|
|
72
|
-
|
|
73
|
-
const initialSlope = getSlope(guessForT, mX1, mX2);
|
|
74
|
-
if (initialSlope >= NEWTON_MIN_SLOPE) {
|
|
75
|
-
return newtonRaphsonIterate(aX, guessForT, mX1, mX2);
|
|
76
|
-
} else if (initialSlope === 0) {
|
|
77
|
-
return guessForT;
|
|
78
|
-
} else {
|
|
79
|
-
return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2);
|
|
80
|
-
}
|
|
51
|
+
const dist = (aX - sampleValues[currentSample]) / (sampleValues[currentSample + 1] - sampleValues[currentSample]), guessForT = intervalStart + dist * 0.1, initialSlope = getSlope(guessForT, mX1, mX2);
|
|
52
|
+
return initialSlope >= 1e-3 ? newtonRaphsonIterate(aX, guessForT, mX1, mX2) : initialSlope === 0 ? guessForT : binarySubdivide(aX, intervalStart, intervalStart + 0.1, mX1, mX2);
|
|
81
53
|
}
|
|
82
|
-
return function
|
|
83
|
-
|
|
84
|
-
return x;
|
|
85
|
-
}
|
|
86
|
-
return calcBezier(getTForX(x), mY1, mY2);
|
|
54
|
+
return function(x) {
|
|
55
|
+
return x === 0 || x === 1 ? x : calcBezier(getTForX(x), mY1, mY2);
|
|
87
56
|
};
|
|
88
57
|
}
|
|
89
58
|
export {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/cubicBezier.tsx"],
|
|
4
|
-
"mappings": "
|
|
4
|
+
"mappings": "AAeA,MAAM,wBAAwB,OAAO,gBAAiB;AAEtD,SAAS,EAAE,KAAa,KAAa;AACnC,SAAO,IAAM,IAAM,MAAM,IAAM;AACjC;AACA,SAAS,EAAE,KAAa,KAAa;AACnC,SAAO,IAAM,MAAM,IAAM;AAC3B;AACA,SAAS,EAAE,KAAa;AACtB,SAAO,IAAM;AACf;AAGA,SAAS,WAAW,IAAY,KAAa,KAAa;AACxD,WAAS,EAAE,KAAK,GAAG,IAAI,KAAK,EAAE,KAAK,GAAG,KAAK,KAAK,EAAE,GAAG,KAAK;AAC5D;AAGA,SAAS,SAAS,IAAY,KAAa,KAAa;AACtD,SAAO,IAAM,EAAE,KAAK,GAAG,IAAI,KAAK,KAAK,IAAM,EAAE,KAAK,GAAG,IAAI,KAAK,EAAE,GAAG;AACrE;AAEA,SAAS,gBAAgB,IAAY,IAAY,IAAY,KAAa,KAAa;AACrF,MAAI,UACA,UACA,IAAI;AACR;AACE,eAAW,MAAM,KAAK,MAAM,GAC5B,WAAW,WAAW,UAAU,KAAK,GAAG,IAAI,IACxC,WAAW,IACb,KAAK,WAEL,KAAK;AAAA,SAEA,KAAK,IAAI,QAAQ,IAAI,QAAyB,EAAE,IAAI;AAC7D,SAAO;AACT;AAEA,SAAS,qBAAqB,IAAY,SAAiB,KAAa,KAAa;AACnF,WAAS,IAAI,GAAG,IAAI,GAAmB,EAAE,GAAG;AAC1C,UAAM,eAAe,SAAS,SAAS,KAAK,GAAG;AAC/C,QAAI,iBAAiB;AACnB,aAAO;AAET,UAAM,WAAW,WAAW,SAAS,KAAK,GAAG,IAAI;AACjD,eAAW,WAAW;AAAA,EACxB;AACA,SAAO;AACT;AAEA,SAAS,aAAa,GAAW;AAC/B,SAAO;AACT;AAEO,SAAS,OAAO,KAAa,KAAa,KAAa,KAAa;AACzE,MAAI,EAAE,KAAK,OAAO,OAAO,KAAK,KAAK,OAAO,OAAO;AAC/C,UAAM,IAAI,MAAM,yCAAyC;AAG3D,MAAI,QAAQ,OAAO,QAAQ;AACzB,WAAO;AAIT,QAAM,eAAe,wBACjB,IAAI,aAAa,EAAgB,IACjC,IAAI,MAAM,EAAgB;AAC9B,WAAS,IAAI,GAAG,IAAI,IAAkB,EAAE;AACtC,iBAAa,CAAC,IAAI,WAAW,IAAI,KAAiB,KAAK,GAAG;AAG5D,WAAS,SAAS,IAAI;AACpB,QAAI,gBAAgB,GAChB,gBAAgB;AACpB,UAAM,aAAa,KAAmB;AAEtC,WAEE,kBAAkB,cAAc,aAAa,aAAa,KAAK,IAC/D,EAAE;AAEF,uBAAiB;AAEnB,MAAE;AAGF,UAAM,QACH,KAAK,aAAa,aAAa,MAC/B,aAAa,gBAAgB,CAAC,IAAI,aAAa,aAAa,IACzD,YAAY,gBAAgB,OAAO,KAEnC,eAAe,SAAS,WAAW,KAAK,GAAG;AACjD,WAAI,gBAAgB,OACX,qBAAqB,IAAI,WAAW,KAAK,GAAG,IAC1C,iBAAiB,IACnB,YAEA,gBAAgB,IAAI,eAAe,gBAAgB,KAAiB,KAAK,GAAG;AAAA,EAEvF;AAEA,SAAO,SAAsB,GAAW;AAEtC,WAAI,MAAM,KAAK,MAAM,IACZ,IAEF,WAAW,SAAS,CAAC,GAAG,KAAK,GAAG;AAAA,EACzC;AACF;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
package/dist/esm/index.js
CHANGED
|
@@ -1,21 +1,11 @@
|
|
|
1
1
|
import { bezier } from "./cubicBezier";
|
|
2
2
|
function animate(param) {
|
|
3
3
|
let start = null;
|
|
4
|
-
const easing = param.cubicBezier ? bezier(...param.cubicBezier) : (v) => v;
|
|
5
|
-
const { x: fromX, y: fromY, scaleX: fromScaleX, scaleY: fromScaleY } = param.from;
|
|
6
|
-
const { x: toX, y: toY, scaleX: toScaleX, scaleY: toScaleY } = param.to;
|
|
4
|
+
const easing = param.cubicBezier ? bezier(...param.cubicBezier) : (v) => v, { x: fromX, y: fromY, scaleX: fromScaleX, scaleY: fromScaleY } = param.from, { x: toX, y: toY, scaleX: toScaleX, scaleY: toScaleY } = param.to;
|
|
7
5
|
function frame(timestamp) {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
const x = toX !== void 0 ? fromX + (toX - fromX) * easing(progress / param.duration) : void 0;
|
|
12
|
-
const y = toY !== void 0 ? fromY + (toY - fromY) * easing(progress / param.duration) : void 0;
|
|
13
|
-
const scaleX = toScaleX !== void 0 ? fromScaleX + (toScaleX - fromScaleX) * easing(progress / param.duration) : void 0;
|
|
14
|
-
const scaleY = toScaleY !== void 0 ? fromScaleY + (toScaleY - fromScaleY) * easing(progress / param.duration) : void 0;
|
|
15
|
-
param.onUpdate({ x, y, scaleX, scaleY });
|
|
16
|
-
if (progress < param.duration) {
|
|
17
|
-
requestAnimationFrame(frame);
|
|
18
|
-
}
|
|
6
|
+
start || (start = timestamp);
|
|
7
|
+
const progress = timestamp - start, x = toX !== void 0 ? fromX + (toX - fromX) * easing(progress / param.duration) : void 0, y = toY !== void 0 ? fromY + (toY - fromY) * easing(progress / param.duration) : void 0, scaleX = toScaleX !== void 0 ? fromScaleX + (toScaleX - fromScaleX) * easing(progress / param.duration) : void 0, scaleY = toScaleY !== void 0 ? fromScaleY + (toScaleY - fromScaleY) * easing(progress / param.duration) : void 0;
|
|
8
|
+
param.onUpdate({ x, y, scaleX, scaleY }), progress < param.duration && requestAnimationFrame(frame);
|
|
19
9
|
}
|
|
20
10
|
requestAnimationFrame(frame);
|
|
21
11
|
}
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/index.tsx"],
|
|
4
|
-
"mappings": "AAAA,SAAS,cAAc;AAiBhB,SAAS,QAAQ,OAAqB;AAC3C,MAAI,QAAQ;AACZ,QAAM,SAAS,MAAM,cAAc,OAAO,GAAG,MAAM,WAAW,IAAI,CAAC,MAAc
|
|
4
|
+
"mappings": "AAAA,SAAS,cAAc;AAiBhB,SAAS,QAAQ,OAAqB;AAC3C,MAAI,QAAQ;AACZ,QAAM,SAAS,MAAM,cAAc,OAAO,GAAG,MAAM,WAAW,IAAI,CAAC,MAAc,GAE3E,EAAE,GAAG,OAAO,GAAG,OAAO,QAAQ,YAAY,QAAQ,WAAW,IAAI,MAAM,MACvE,EAAE,GAAG,KAAK,GAAG,KAAK,QAAQ,UAAU,QAAQ,SAAS,IAAI,MAAM;AAErE,WAAS,MAAM,WAAW;AACxB,IAAK,UAAO,QAAQ;AACpB,UAAM,WAAW,YAAY,OACvB,IACJ,QAAQ,SACJ,SAAU,MAAM,SAAU,OAAO,WAAW,MAAM,QAAQ,IAC1D,QACA,IACJ,QAAQ,SACJ,SAAU,MAAM,SAAU,OAAO,WAAW,MAAM,QAAQ,IAC1D,QACA,SACJ,aAAa,SACT,cAAe,WAAW,cAAe,OAAO,WAAW,MAAM,QAAQ,IACzE,QACA,SACJ,aAAa,SACT,cAAe,WAAW,cAAe,OAAO,WAAW,MAAM,QAAQ,IACzE;AACN,UAAM,SAAS,EAAE,GAAG,GAAG,QAAQ,OAAO,CAAC,GAEnC,WAAW,MAAM,YACnB,sBAAsB,KAAK;AAAA,EAE/B;AACA,wBAAsB,KAAK;AAC7B;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
package/dist/jsx/cubicBezier.js
CHANGED
|
@@ -1,10 +1,4 @@
|
|
|
1
|
-
const
|
|
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";
|
|
1
|
+
const float32ArraySupported = typeof Float32Array == "function";
|
|
8
2
|
function A(aA1, aA2) {
|
|
9
3
|
return 1 - 3 * aA2 + 3 * aA1;
|
|
10
4
|
}
|
|
@@ -21,26 +15,17 @@ function getSlope(aT, aA1, aA2) {
|
|
|
21
15
|
return 3 * A(aA1, aA2) * aT * aT + 2 * B(aA1, aA2) * aT + C(aA1);
|
|
22
16
|
}
|
|
23
17
|
function binarySubdivide(aX, aA, aB, mX1, mX2) {
|
|
24
|
-
let currentX;
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
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);
|
|
18
|
+
let currentX, currentT, i = 0;
|
|
19
|
+
do
|
|
20
|
+
currentT = aA + (aB - aA) / 2, currentX = calcBezier(currentT, mX1, mX2) - aX, currentX > 0 ? aB = currentT : aA = currentT;
|
|
21
|
+
while (Math.abs(currentX) > 1e-7 && ++i < 10);
|
|
36
22
|
return currentT;
|
|
37
23
|
}
|
|
38
24
|
function newtonRaphsonIterate(aX, aGuessT, mX1, mX2) {
|
|
39
|
-
for (let i = 0; i <
|
|
25
|
+
for (let i = 0; i < 4; ++i) {
|
|
40
26
|
const currentSlope = getSlope(aGuessT, mX1, mX2);
|
|
41
|
-
if (currentSlope === 0)
|
|
27
|
+
if (currentSlope === 0)
|
|
42
28
|
return aGuessT;
|
|
43
|
-
}
|
|
44
29
|
const currentX = calcBezier(aGuessT, mX1, mX2) - aX;
|
|
45
30
|
aGuessT -= currentX / currentSlope;
|
|
46
31
|
}
|
|
@@ -50,40 +35,24 @@ function LinearEasing(x) {
|
|
|
50
35
|
return x;
|
|
51
36
|
}
|
|
52
37
|
function bezier(mX1, mY1, mX2, mY2) {
|
|
53
|
-
if (!(0 <= mX1 && mX1 <= 1 && 0 <= mX2 && mX2 <= 1))
|
|
38
|
+
if (!(0 <= mX1 && mX1 <= 1 && 0 <= mX2 && mX2 <= 1))
|
|
54
39
|
throw new Error("bezier x values must be in [0, 1] range");
|
|
55
|
-
|
|
56
|
-
if (mX1 === mY1 && mX2 === mY2) {
|
|
40
|
+
if (mX1 === mY1 && mX2 === mY2)
|
|
57
41
|
return LinearEasing;
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
sampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);
|
|
62
|
-
}
|
|
42
|
+
const sampleValues = float32ArraySupported ? new Float32Array(11) : new Array(11);
|
|
43
|
+
for (let i = 0; i < 11; ++i)
|
|
44
|
+
sampleValues[i] = calcBezier(i * 0.1, mX1, mX2);
|
|
63
45
|
function getTForX(aX) {
|
|
64
|
-
let intervalStart = 0;
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
intervalStart += kSampleStepSize;
|
|
69
|
-
}
|
|
46
|
+
let intervalStart = 0, currentSample = 1;
|
|
47
|
+
const lastSample = 11 - 1;
|
|
48
|
+
for (; currentSample !== lastSample && sampleValues[currentSample] <= aX; ++currentSample)
|
|
49
|
+
intervalStart += 0.1;
|
|
70
50
|
--currentSample;
|
|
71
|
-
const dist = (aX - sampleValues[currentSample]) / (sampleValues[currentSample + 1] - sampleValues[currentSample]);
|
|
72
|
-
|
|
73
|
-
const initialSlope = getSlope(guessForT, mX1, mX2);
|
|
74
|
-
if (initialSlope >= NEWTON_MIN_SLOPE) {
|
|
75
|
-
return newtonRaphsonIterate(aX, guessForT, mX1, mX2);
|
|
76
|
-
} else if (initialSlope === 0) {
|
|
77
|
-
return guessForT;
|
|
78
|
-
} else {
|
|
79
|
-
return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2);
|
|
80
|
-
}
|
|
51
|
+
const dist = (aX - sampleValues[currentSample]) / (sampleValues[currentSample + 1] - sampleValues[currentSample]), guessForT = intervalStart + dist * 0.1, initialSlope = getSlope(guessForT, mX1, mX2);
|
|
52
|
+
return initialSlope >= 1e-3 ? newtonRaphsonIterate(aX, guessForT, mX1, mX2) : initialSlope === 0 ? guessForT : binarySubdivide(aX, intervalStart, intervalStart + 0.1, mX1, mX2);
|
|
81
53
|
}
|
|
82
|
-
return function
|
|
83
|
-
|
|
84
|
-
return x;
|
|
85
|
-
}
|
|
86
|
-
return calcBezier(getTForX(x), mY1, mY2);
|
|
54
|
+
return function(x) {
|
|
55
|
+
return x === 0 || x === 1 ? x : calcBezier(getTForX(x), mY1, mY2);
|
|
87
56
|
};
|
|
88
57
|
}
|
|
89
58
|
export {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/cubicBezier.tsx"],
|
|
4
|
-
"mappings": "
|
|
4
|
+
"mappings": "AAeA,MAAM,wBAAwB,OAAO,gBAAiB;AAEtD,SAAS,EAAE,KAAa,KAAa;AACnC,SAAO,IAAM,IAAM,MAAM,IAAM;AACjC;AACA,SAAS,EAAE,KAAa,KAAa;AACnC,SAAO,IAAM,MAAM,IAAM;AAC3B;AACA,SAAS,EAAE,KAAa;AACtB,SAAO,IAAM;AACf;AAGA,SAAS,WAAW,IAAY,KAAa,KAAa;AACxD,WAAS,EAAE,KAAK,GAAG,IAAI,KAAK,EAAE,KAAK,GAAG,KAAK,KAAK,EAAE,GAAG,KAAK;AAC5D;AAGA,SAAS,SAAS,IAAY,KAAa,KAAa;AACtD,SAAO,IAAM,EAAE,KAAK,GAAG,IAAI,KAAK,KAAK,IAAM,EAAE,KAAK,GAAG,IAAI,KAAK,EAAE,GAAG;AACrE;AAEA,SAAS,gBAAgB,IAAY,IAAY,IAAY,KAAa,KAAa;AACrF,MAAI,UACA,UACA,IAAI;AACR;AACE,eAAW,MAAM,KAAK,MAAM,GAC5B,WAAW,WAAW,UAAU,KAAK,GAAG,IAAI,IACxC,WAAW,IACb,KAAK,WAEL,KAAK;AAAA,SAEA,KAAK,IAAI,QAAQ,IAAI,QAAyB,EAAE,IAAI;AAC7D,SAAO;AACT;AAEA,SAAS,qBAAqB,IAAY,SAAiB,KAAa,KAAa;AACnF,WAAS,IAAI,GAAG,IAAI,GAAmB,EAAE,GAAG;AAC1C,UAAM,eAAe,SAAS,SAAS,KAAK,GAAG;AAC/C,QAAI,iBAAiB;AACnB,aAAO;AAET,UAAM,WAAW,WAAW,SAAS,KAAK,GAAG,IAAI;AACjD,eAAW,WAAW;AAAA,EACxB;AACA,SAAO;AACT;AAEA,SAAS,aAAa,GAAW;AAC/B,SAAO;AACT;AAEO,SAAS,OAAO,KAAa,KAAa,KAAa,KAAa;AACzE,MAAI,EAAE,KAAK,OAAO,OAAO,KAAK,KAAK,OAAO,OAAO;AAC/C,UAAM,IAAI,MAAM,yCAAyC;AAG3D,MAAI,QAAQ,OAAO,QAAQ;AACzB,WAAO;AAIT,QAAM,eAAe,wBACjB,IAAI,aAAa,EAAgB,IACjC,IAAI,MAAM,EAAgB;AAC9B,WAAS,IAAI,GAAG,IAAI,IAAkB,EAAE;AACtC,iBAAa,CAAC,IAAI,WAAW,IAAI,KAAiB,KAAK,GAAG;AAG5D,WAAS,SAAS,IAAI;AACpB,QAAI,gBAAgB,GAChB,gBAAgB;AACpB,UAAM,aAAa,KAAmB;AAEtC,WAEE,kBAAkB,cAAc,aAAa,aAAa,KAAK,IAC/D,EAAE;AAEF,uBAAiB;AAEnB,MAAE;AAGF,UAAM,QACH,KAAK,aAAa,aAAa,MAC/B,aAAa,gBAAgB,CAAC,IAAI,aAAa,aAAa,IACzD,YAAY,gBAAgB,OAAO,KAEnC,eAAe,SAAS,WAAW,KAAK,GAAG;AACjD,WAAI,gBAAgB,OACX,qBAAqB,IAAI,WAAW,KAAK,GAAG,IAC1C,iBAAiB,IACnB,YAEA,gBAAgB,IAAI,eAAe,gBAAgB,KAAiB,KAAK,GAAG;AAAA,EAEvF;AAEA,SAAO,SAAsB,GAAW;AAEtC,WAAI,MAAM,KAAK,MAAM,IACZ,IAEF,WAAW,SAAS,CAAC,GAAG,KAAK,GAAG;AAAA,EACzC;AACF;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
const float32ArraySupported = typeof Float32Array == "function";
|
|
2
|
+
function A(aA1, aA2) {
|
|
3
|
+
return 1 - 3 * aA2 + 3 * aA1;
|
|
4
|
+
}
|
|
5
|
+
function B(aA1, aA2) {
|
|
6
|
+
return 3 * aA2 - 6 * aA1;
|
|
7
|
+
}
|
|
8
|
+
function C(aA1) {
|
|
9
|
+
return 3 * aA1;
|
|
10
|
+
}
|
|
11
|
+
function calcBezier(aT, aA1, aA2) {
|
|
12
|
+
return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT;
|
|
13
|
+
}
|
|
14
|
+
function getSlope(aT, aA1, aA2) {
|
|
15
|
+
return 3 * A(aA1, aA2) * aT * aT + 2 * B(aA1, aA2) * aT + C(aA1);
|
|
16
|
+
}
|
|
17
|
+
function binarySubdivide(aX, aA, aB, mX1, mX2) {
|
|
18
|
+
let currentX, currentT, i = 0;
|
|
19
|
+
do
|
|
20
|
+
currentT = aA + (aB - aA) / 2, currentX = calcBezier(currentT, mX1, mX2) - aX, currentX > 0 ? aB = currentT : aA = currentT;
|
|
21
|
+
while (Math.abs(currentX) > 1e-7 && ++i < 10);
|
|
22
|
+
return currentT;
|
|
23
|
+
}
|
|
24
|
+
function newtonRaphsonIterate(aX, aGuessT, mX1, mX2) {
|
|
25
|
+
for (let i = 0; i < 4; ++i) {
|
|
26
|
+
const currentSlope = getSlope(aGuessT, mX1, mX2);
|
|
27
|
+
if (currentSlope === 0)
|
|
28
|
+
return aGuessT;
|
|
29
|
+
const currentX = calcBezier(aGuessT, mX1, mX2) - aX;
|
|
30
|
+
aGuessT -= currentX / currentSlope;
|
|
31
|
+
}
|
|
32
|
+
return aGuessT;
|
|
33
|
+
}
|
|
34
|
+
function LinearEasing(x) {
|
|
35
|
+
return x;
|
|
36
|
+
}
|
|
37
|
+
function bezier(mX1, mY1, mX2, mY2) {
|
|
38
|
+
if (!(0 <= mX1 && mX1 <= 1 && 0 <= mX2 && mX2 <= 1))
|
|
39
|
+
throw new Error("bezier x values must be in [0, 1] range");
|
|
40
|
+
if (mX1 === mY1 && mX2 === mY2)
|
|
41
|
+
return LinearEasing;
|
|
42
|
+
const sampleValues = float32ArraySupported ? new Float32Array(11) : new Array(11);
|
|
43
|
+
for (let i = 0; i < 11; ++i)
|
|
44
|
+
sampleValues[i] = calcBezier(i * 0.1, mX1, mX2);
|
|
45
|
+
function getTForX(aX) {
|
|
46
|
+
let intervalStart = 0, currentSample = 1;
|
|
47
|
+
const lastSample = 11 - 1;
|
|
48
|
+
for (; currentSample !== lastSample && sampleValues[currentSample] <= aX; ++currentSample)
|
|
49
|
+
intervalStart += 0.1;
|
|
50
|
+
--currentSample;
|
|
51
|
+
const dist = (aX - sampleValues[currentSample]) / (sampleValues[currentSample + 1] - sampleValues[currentSample]), guessForT = intervalStart + dist * 0.1, initialSlope = getSlope(guessForT, mX1, mX2);
|
|
52
|
+
return initialSlope >= 1e-3 ? newtonRaphsonIterate(aX, guessForT, mX1, mX2) : initialSlope === 0 ? guessForT : binarySubdivide(aX, intervalStart, intervalStart + 0.1, mX1, mX2);
|
|
53
|
+
}
|
|
54
|
+
return function(x) {
|
|
55
|
+
return x === 0 || x === 1 ? x : calcBezier(getTForX(x), mY1, mY2);
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
export {
|
|
59
|
+
bezier
|
|
60
|
+
};
|
|
61
|
+
//# sourceMappingURL=cubicBezier.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/cubicBezier.tsx"],
|
|
4
|
+
"mappings": "AAeA,MAAM,wBAAwB,OAAO,gBAAiB;AAEtD,SAAS,EAAE,KAAa,KAAa;AACnC,SAAO,IAAM,IAAM,MAAM,IAAM;AACjC;AACA,SAAS,EAAE,KAAa,KAAa;AACnC,SAAO,IAAM,MAAM,IAAM;AAC3B;AACA,SAAS,EAAE,KAAa;AACtB,SAAO,IAAM;AACf;AAGA,SAAS,WAAW,IAAY,KAAa,KAAa;AACxD,WAAS,EAAE,KAAK,GAAG,IAAI,KAAK,EAAE,KAAK,GAAG,KAAK,KAAK,EAAE,GAAG,KAAK;AAC5D;AAGA,SAAS,SAAS,IAAY,KAAa,KAAa;AACtD,SAAO,IAAM,EAAE,KAAK,GAAG,IAAI,KAAK,KAAK,IAAM,EAAE,KAAK,GAAG,IAAI,KAAK,EAAE,GAAG;AACrE;AAEA,SAAS,gBAAgB,IAAY,IAAY,IAAY,KAAa,KAAa;AACrF,MAAI,UACA,UACA,IAAI;AACR;AACE,eAAW,MAAM,KAAK,MAAM,GAC5B,WAAW,WAAW,UAAU,KAAK,GAAG,IAAI,IACxC,WAAW,IACb,KAAK,WAEL,KAAK;AAAA,SAEA,KAAK,IAAI,QAAQ,IAAI,QAAyB,EAAE,IAAI;AAC7D,SAAO;AACT;AAEA,SAAS,qBAAqB,IAAY,SAAiB,KAAa,KAAa;AACnF,WAAS,IAAI,GAAG,IAAI,GAAmB,EAAE,GAAG;AAC1C,UAAM,eAAe,SAAS,SAAS,KAAK,GAAG;AAC/C,QAAI,iBAAiB;AACnB,aAAO;AAET,UAAM,WAAW,WAAW,SAAS,KAAK,GAAG,IAAI;AACjD,eAAW,WAAW;AAAA,EACxB;AACA,SAAO;AACT;AAEA,SAAS,aAAa,GAAW;AAC/B,SAAO;AACT;AAEO,SAAS,OAAO,KAAa,KAAa,KAAa,KAAa;AACzE,MAAI,EAAE,KAAK,OAAO,OAAO,KAAK,KAAK,OAAO,OAAO;AAC/C,UAAM,IAAI,MAAM,yCAAyC;AAG3D,MAAI,QAAQ,OAAO,QAAQ;AACzB,WAAO;AAIT,QAAM,eAAe,wBACjB,IAAI,aAAa,EAAgB,IACjC,IAAI,MAAM,EAAgB;AAC9B,WAAS,IAAI,GAAG,IAAI,IAAkB,EAAE;AACtC,iBAAa,CAAC,IAAI,WAAW,IAAI,KAAiB,KAAK,GAAG;AAG5D,WAAS,SAAS,IAAI;AACpB,QAAI,gBAAgB,GAChB,gBAAgB;AACpB,UAAM,aAAa,KAAmB;AAEtC,WAEE,kBAAkB,cAAc,aAAa,aAAa,KAAK,IAC/D,EAAE;AAEF,uBAAiB;AAEnB,MAAE;AAGF,UAAM,QACH,KAAK,aAAa,aAAa,MAC/B,aAAa,gBAAgB,CAAC,IAAI,aAAa,aAAa,IACzD,YAAY,gBAAgB,OAAO,KAEnC,eAAe,SAAS,WAAW,KAAK,GAAG;AACjD,WAAI,gBAAgB,OACX,qBAAqB,IAAI,WAAW,KAAK,GAAG,IAC1C,iBAAiB,IACnB,YAEA,gBAAgB,IAAI,eAAe,gBAAgB,KAAiB,KAAK,GAAG;AAAA,EAEvF;AAEA,SAAO,SAAsB,GAAW;AAEtC,WAAI,MAAM,KAAK,MAAM,IACZ,IAEF,WAAW,SAAS,CAAC,GAAG,KAAK,GAAG;AAAA,EACzC;AACF;",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|
package/dist/jsx/index.js
CHANGED
|
@@ -1,21 +1,11 @@
|
|
|
1
1
|
import { bezier } from "./cubicBezier";
|
|
2
2
|
function animate(param) {
|
|
3
3
|
let start = null;
|
|
4
|
-
const easing = param.cubicBezier ? bezier(...param.cubicBezier) : (v) => v;
|
|
5
|
-
const { x: fromX, y: fromY, scaleX: fromScaleX, scaleY: fromScaleY } = param.from;
|
|
6
|
-
const { x: toX, y: toY, scaleX: toScaleX, scaleY: toScaleY } = param.to;
|
|
4
|
+
const easing = param.cubicBezier ? bezier(...param.cubicBezier) : (v) => v, { x: fromX, y: fromY, scaleX: fromScaleX, scaleY: fromScaleY } = param.from, { x: toX, y: toY, scaleX: toScaleX, scaleY: toScaleY } = param.to;
|
|
7
5
|
function frame(timestamp) {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
const x = toX !== void 0 ? fromX + (toX - fromX) * easing(progress / param.duration) : void 0;
|
|
12
|
-
const y = toY !== void 0 ? fromY + (toY - fromY) * easing(progress / param.duration) : void 0;
|
|
13
|
-
const scaleX = toScaleX !== void 0 ? fromScaleX + (toScaleX - fromScaleX) * easing(progress / param.duration) : void 0;
|
|
14
|
-
const scaleY = toScaleY !== void 0 ? fromScaleY + (toScaleY - fromScaleY) * easing(progress / param.duration) : void 0;
|
|
15
|
-
param.onUpdate({ x, y, scaleX, scaleY });
|
|
16
|
-
if (progress < param.duration) {
|
|
17
|
-
requestAnimationFrame(frame);
|
|
18
|
-
}
|
|
6
|
+
start || (start = timestamp);
|
|
7
|
+
const progress = timestamp - start, x = toX !== void 0 ? fromX + (toX - fromX) * easing(progress / param.duration) : void 0, y = toY !== void 0 ? fromY + (toY - fromY) * easing(progress / param.duration) : void 0, scaleX = toScaleX !== void 0 ? fromScaleX + (toScaleX - fromScaleX) * easing(progress / param.duration) : void 0, scaleY = toScaleY !== void 0 ? fromScaleY + (toScaleY - fromScaleY) * easing(progress / param.duration) : void 0;
|
|
8
|
+
param.onUpdate({ x, y, scaleX, scaleY }), progress < param.duration && requestAnimationFrame(frame);
|
|
19
9
|
}
|
|
20
10
|
requestAnimationFrame(frame);
|
|
21
11
|
}
|
package/dist/jsx/index.js.map
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/index.tsx"],
|
|
4
|
-
"mappings": "AAAA,SAAS,cAAc;AAiBhB,SAAS,QAAQ,OAAqB;AAC3C,MAAI,QAAQ;AACZ,QAAM,SAAS,MAAM,cAAc,OAAO,GAAG,MAAM,WAAW,IAAI,CAAC,MAAc
|
|
4
|
+
"mappings": "AAAA,SAAS,cAAc;AAiBhB,SAAS,QAAQ,OAAqB;AAC3C,MAAI,QAAQ;AACZ,QAAM,SAAS,MAAM,cAAc,OAAO,GAAG,MAAM,WAAW,IAAI,CAAC,MAAc,GAE3E,EAAE,GAAG,OAAO,GAAG,OAAO,QAAQ,YAAY,QAAQ,WAAW,IAAI,MAAM,MACvE,EAAE,GAAG,KAAK,GAAG,KAAK,QAAQ,UAAU,QAAQ,SAAS,IAAI,MAAM;AAErE,WAAS,MAAM,WAAW;AACxB,IAAK,UAAO,QAAQ;AACpB,UAAM,WAAW,YAAY,OACvB,IACJ,QAAQ,SACJ,SAAU,MAAM,SAAU,OAAO,WAAW,MAAM,QAAQ,IAC1D,QACA,IACJ,QAAQ,SACJ,SAAU,MAAM,SAAU,OAAO,WAAW,MAAM,QAAQ,IAC1D,QACA,SACJ,aAAa,SACT,cAAe,WAAW,cAAe,OAAO,WAAW,MAAM,QAAQ,IACzE,QACA,SACJ,aAAa,SACT,cAAe,WAAW,cAAe,OAAO,WAAW,MAAM,QAAQ,IACzE;AACN,UAAM,SAAS,EAAE,GAAG,GAAG,QAAQ,OAAO,CAAC,GAEnC,WAAW,MAAM,YACnB,sBAAsB,KAAK;AAAA,EAE/B;AACA,wBAAsB,KAAK;AAC7B;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { bezier } from "./cubicBezier";
|
|
2
|
+
function animate(param) {
|
|
3
|
+
let start = null;
|
|
4
|
+
const easing = param.cubicBezier ? bezier(...param.cubicBezier) : (v) => v, { x: fromX, y: fromY, scaleX: fromScaleX, scaleY: fromScaleY } = param.from, { x: toX, y: toY, scaleX: toScaleX, scaleY: toScaleY } = param.to;
|
|
5
|
+
function frame(timestamp) {
|
|
6
|
+
start || (start = timestamp);
|
|
7
|
+
const progress = timestamp - start, x = toX !== void 0 ? fromX + (toX - fromX) * easing(progress / param.duration) : void 0, y = toY !== void 0 ? fromY + (toY - fromY) * easing(progress / param.duration) : void 0, scaleX = toScaleX !== void 0 ? fromScaleX + (toScaleX - fromScaleX) * easing(progress / param.duration) : void 0, scaleY = toScaleY !== void 0 ? fromScaleY + (toScaleY - fromScaleY) * easing(progress / param.duration) : void 0;
|
|
8
|
+
param.onUpdate({ x, y, scaleX, scaleY }), progress < param.duration && requestAnimationFrame(frame);
|
|
9
|
+
}
|
|
10
|
+
requestAnimationFrame(frame);
|
|
11
|
+
}
|
|
12
|
+
export {
|
|
13
|
+
animate
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/index.tsx"],
|
|
4
|
+
"mappings": "AAAA,SAAS,cAAc;AAiBhB,SAAS,QAAQ,OAAqB;AAC3C,MAAI,QAAQ;AACZ,QAAM,SAAS,MAAM,cAAc,OAAO,GAAG,MAAM,WAAW,IAAI,CAAC,MAAc,GAE3E,EAAE,GAAG,OAAO,GAAG,OAAO,QAAQ,YAAY,QAAQ,WAAW,IAAI,MAAM,MACvE,EAAE,GAAG,KAAK,GAAG,KAAK,QAAQ,UAAU,QAAQ,SAAS,IAAI,MAAM;AAErE,WAAS,MAAM,WAAW;AACxB,IAAK,UAAO,QAAQ;AACpB,UAAM,WAAW,YAAY,OACvB,IACJ,QAAQ,SACJ,SAAU,MAAM,SAAU,OAAO,WAAW,MAAM,QAAQ,IAC1D,QACA,IACJ,QAAQ,SACJ,SAAU,MAAM,SAAU,OAAO,WAAW,MAAM,QAAQ,IAC1D,QACA,SACJ,aAAa,SACT,cAAe,WAAW,cAAe,OAAO,WAAW,MAAM,QAAQ,IACzE,QACA,SACJ,aAAa,SACT,cAAe,WAAW,cAAe,OAAO,WAAW,MAAM,QAAQ,IACzE;AACN,UAAM,SAAS,EAAE,GAAG,GAAG,QAAQ,OAAO,CAAC,GAEnC,WAAW,MAAM,YACnB,sBAAsB,KAAK;AAAA,EAE/B;AACA,wBAAsB,KAAK;AAC7B;",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tamagui/cubic-bezier-animator",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.62.0",
|
|
4
4
|
"sideEffects": false,
|
|
5
5
|
"source": "src/index.ts",
|
|
6
6
|
"types": "./types/index.d.ts",
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
"clean:build": "tamagui-build clean:build"
|
|
22
22
|
},
|
|
23
23
|
"devDependencies": {
|
|
24
|
-
"@tamagui/build": "1.
|
|
24
|
+
"@tamagui/build": "1.62.0"
|
|
25
25
|
},
|
|
26
26
|
"exports": {
|
|
27
27
|
"./package.json": "./package.json",
|