@tamagui/cubic-bezier-animator 1.46.2 → 1.47.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/package.json +2 -2
- package/dist/jsx/cubicBezier.mjs +0 -92
- package/dist/jsx/cubicBezier.mjs.map +0 -6
- package/dist/jsx/index.mjs +0 -25
- package/dist/jsx/index.mjs.map +0 -6
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tamagui/cubic-bezier-animator",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.47.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.47.0"
|
|
25
25
|
},
|
|
26
26
|
"exports": {
|
|
27
27
|
"./package.json": "./package.json",
|
package/dist/jsx/cubicBezier.mjs
DELETED
|
@@ -1,92 +0,0 @@
|
|
|
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";
|
|
8
|
-
function A(aA1, aA2) {
|
|
9
|
-
return 1 - 3 * aA2 + 3 * aA1;
|
|
10
|
-
}
|
|
11
|
-
function B(aA1, aA2) {
|
|
12
|
-
return 3 * aA2 - 6 * aA1;
|
|
13
|
-
}
|
|
14
|
-
function C(aA1) {
|
|
15
|
-
return 3 * aA1;
|
|
16
|
-
}
|
|
17
|
-
function calcBezier(aT, aA1, aA2) {
|
|
18
|
-
return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT;
|
|
19
|
-
}
|
|
20
|
-
function getSlope(aT, aA1, aA2) {
|
|
21
|
-
return 3 * A(aA1, aA2) * aT * aT + 2 * B(aA1, aA2) * aT + C(aA1);
|
|
22
|
-
}
|
|
23
|
-
function binarySubdivide(aX, aA, aB, mX1, mX2) {
|
|
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);
|
|
36
|
-
return currentT;
|
|
37
|
-
}
|
|
38
|
-
function newtonRaphsonIterate(aX, aGuessT, mX1, mX2) {
|
|
39
|
-
for (let i = 0; i < NEWTON_ITERATIONS; ++i) {
|
|
40
|
-
const currentSlope = getSlope(aGuessT, mX1, mX2);
|
|
41
|
-
if (currentSlope === 0) {
|
|
42
|
-
return aGuessT;
|
|
43
|
-
}
|
|
44
|
-
const currentX = calcBezier(aGuessT, mX1, mX2) - aX;
|
|
45
|
-
aGuessT -= currentX / currentSlope;
|
|
46
|
-
}
|
|
47
|
-
return aGuessT;
|
|
48
|
-
}
|
|
49
|
-
function LinearEasing(x) {
|
|
50
|
-
return x;
|
|
51
|
-
}
|
|
52
|
-
function bezier(mX1, mY1, mX2, mY2) {
|
|
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
|
-
}
|
|
63
|
-
function getTForX(aX) {
|
|
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
|
-
}
|
|
70
|
-
--currentSample;
|
|
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
|
-
} else if (initialSlope === 0) {
|
|
77
|
-
return guessForT;
|
|
78
|
-
} else {
|
|
79
|
-
return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2);
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
return function BezierEasing(x) {
|
|
83
|
-
if (x === 0 || x === 1) {
|
|
84
|
-
return x;
|
|
85
|
-
}
|
|
86
|
-
return calcBezier(getTForX(x), mY1, mY2);
|
|
87
|
-
};
|
|
88
|
-
}
|
|
89
|
-
export {
|
|
90
|
-
bezier
|
|
91
|
-
};
|
|
92
|
-
//# sourceMappingURL=cubicBezier.mjs.map
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/cubicBezier.tsx"],
|
|
4
|
-
"mappings": "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",
|
|
5
|
-
"names": []
|
|
6
|
-
}
|
package/dist/jsx/index.mjs
DELETED
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { bezier } from "./cubicBezier";
|
|
2
|
-
function animate(param) {
|
|
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;
|
|
7
|
-
function frame(timestamp) {
|
|
8
|
-
if (!start)
|
|
9
|
-
start = timestamp;
|
|
10
|
-
const progress = timestamp - start;
|
|
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
|
-
}
|
|
19
|
-
}
|
|
20
|
-
requestAnimationFrame(frame);
|
|
21
|
-
}
|
|
22
|
-
export {
|
|
23
|
-
animate
|
|
24
|
-
};
|
|
25
|
-
//# sourceMappingURL=index.mjs.map
|
package/dist/jsx/index.mjs.map
DELETED
|
@@ -1,6 +0,0 @@
|
|
|
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;AAEjF,QAAM,EAAE,GAAG,OAAO,GAAG,OAAO,QAAQ,YAAY,QAAQ,WAAW,IAAI,MAAM;AAC7E,QAAM,EAAE,GAAG,KAAK,GAAG,KAAK,QAAQ,UAAU,QAAQ,SAAS,IAAI,MAAM;AAErE,WAAS,MAAM,WAAW;AACxB,QAAI,CAAC;AAAO,cAAQ;AACpB,UAAM,WAAW,YAAY;AAC7B,UAAM,IACJ,QAAQ,SACJ,SAAU,MAAM,SAAU,OAAO,WAAW,MAAM,QAAQ,IAC1D;AACN,UAAM,IACJ,QAAQ,SACJ,SAAU,MAAM,SAAU,OAAO,WAAW,MAAM,QAAQ,IAC1D;AACN,UAAM,SACJ,aAAa,SACT,cAAe,WAAW,cAAe,OAAO,WAAW,MAAM,QAAQ,IACzE;AACN,UAAM,SACJ,aAAa,SACT,cAAe,WAAW,cAAe,OAAO,WAAW,MAAM,QAAQ,IACzE;AACN,UAAM,SAAS,EAAE,GAAG,GAAG,QAAQ,OAAO,CAAC;AAEvC,QAAI,WAAW,MAAM,UAAU;AAC7B,4BAAsB,KAAK;AAAA,IAC7B;AAAA,EACF;AACA,wBAAsB,KAAK;AAC7B;",
|
|
5
|
-
"names": []
|
|
6
|
-
}
|