@tamagui/cubic-bezier-animator 1.113.0 → 1.113.2
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.
|
@@ -1,10 +1,4 @@
|
|
|
1
|
-
var NEWTON_ITERATIONS = 4,
|
|
2
|
-
NEWTON_MIN_SLOPE = 1e-3,
|
|
3
|
-
SUBDIVISION_PRECISION = 1e-7,
|
|
4
|
-
SUBDIVISION_MAX_ITERATIONS = 10,
|
|
5
|
-
kSplineTableSize = 11,
|
|
6
|
-
kSampleStepSize = 1 / (kSplineTableSize - 1),
|
|
7
|
-
float32ArraySupported = typeof Float32Array == "function";
|
|
1
|
+
var NEWTON_ITERATIONS = 4, NEWTON_MIN_SLOPE = 1e-3, SUBDIVISION_PRECISION = 1e-7, SUBDIVISION_MAX_ITERATIONS = 10, kSplineTableSize = 11, kSampleStepSize = 1 / (kSplineTableSize - 1), float32ArraySupported = typeof Float32Array == "function";
|
|
8
2
|
function A(aA1, aA2) {
|
|
9
3
|
return 1 - 3 * aA2 + 3 * aA1;
|
|
10
4
|
}
|
|
@@ -21,16 +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
|
-
var currentX,
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
18
|
+
var 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) > SUBDIVISION_PRECISION && ++i < SUBDIVISION_MAX_ITERATIONS);
|
|
28
22
|
return currentT;
|
|
29
23
|
}
|
|
30
24
|
function newtonRaphsonIterate(aX, aGuessT, mX1, mX2) {
|
|
31
25
|
for (var i = 0; i < NEWTON_ITERATIONS; ++i) {
|
|
32
26
|
var currentSlope = getSlope(aGuessT, mX1, mX2);
|
|
33
|
-
if (currentSlope === 0)
|
|
27
|
+
if (currentSlope === 0)
|
|
28
|
+
return aGuessT;
|
|
34
29
|
var currentX = calcBezier(aGuessT, mX1, mX2) - aX;
|
|
35
30
|
aGuessT -= currentX / currentSlope;
|
|
36
31
|
}
|
|
@@ -40,20 +35,24 @@ function LinearEasing(x) {
|
|
|
40
35
|
return x;
|
|
41
36
|
}
|
|
42
37
|
function bezier(mX1, mY1, mX2, mY2) {
|
|
43
|
-
if (!(0 <= mX1 && mX1 <= 1 && 0 <= mX2 && mX2 <= 1))
|
|
44
|
-
|
|
45
|
-
|
|
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
|
+
for (var sampleValues = float32ArraySupported ? new Float32Array(kSplineTableSize) : new Array(kSplineTableSize), i = 0; i < kSplineTableSize; ++i)
|
|
43
|
+
sampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);
|
|
46
44
|
function getTForX(aX) {
|
|
47
|
-
for (var intervalStart = 0, currentSample = 1, lastSample = kSplineTableSize - 1; currentSample !== lastSample && sampleValues[currentSample] <= aX; ++currentSample)
|
|
45
|
+
for (var intervalStart = 0, currentSample = 1, lastSample = kSplineTableSize - 1; currentSample !== lastSample && sampleValues[currentSample] <= aX; ++currentSample)
|
|
46
|
+
intervalStart += kSampleStepSize;
|
|
48
47
|
--currentSample;
|
|
49
|
-
var dist = (aX - sampleValues[currentSample]) / (sampleValues[currentSample + 1] - sampleValues[currentSample]),
|
|
50
|
-
guessForT = intervalStart + dist * kSampleStepSize,
|
|
51
|
-
initialSlope = getSlope(guessForT, mX1, mX2);
|
|
48
|
+
var dist = (aX - sampleValues[currentSample]) / (sampleValues[currentSample + 1] - sampleValues[currentSample]), guessForT = intervalStart + dist * kSampleStepSize, initialSlope = getSlope(guessForT, mX1, mX2);
|
|
52
49
|
return initialSlope >= NEWTON_MIN_SLOPE ? newtonRaphsonIterate(aX, guessForT, mX1, mX2) : initialSlope === 0 ? guessForT : binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2);
|
|
53
50
|
}
|
|
54
|
-
return function
|
|
51
|
+
return function(x) {
|
|
55
52
|
return x === 0 || x === 1 ? x : calcBezier(getTForX(x), mY1, mY2);
|
|
56
53
|
};
|
|
57
54
|
}
|
|
58
|
-
export {
|
|
59
|
-
|
|
55
|
+
export {
|
|
56
|
+
bezier
|
|
57
|
+
};
|
|
58
|
+
//# sourceMappingURL=cubicBezier.js.map
|
|
@@ -1 +1,6 @@
|
|
|
1
|
-
{
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/Users/n8/tamagui/code/core/cubic-bezier-animator/src/cubicBezier.tsx"],
|
|
4
|
+
"mappings": "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",
|
|
5
|
+
"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"]
|
|
6
|
+
}
|
package/dist/esm/index.native.js
CHANGED
|
@@ -1,28 +1,11 @@
|
|
|
1
|
-
import { bezier } from "./cubicBezier
|
|
1
|
+
import { bezier } from "./cubicBezier";
|
|
2
2
|
function animate(param) {
|
|
3
|
-
var start = null,
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
},
|
|
7
|
-
{
|
|
8
|
-
x: fromX,
|
|
9
|
-
y: fromY,
|
|
10
|
-
scaleX: fromScaleX,
|
|
11
|
-
scaleY: fromScaleY
|
|
12
|
-
} = param.from,
|
|
13
|
-
{
|
|
14
|
-
x: toX,
|
|
15
|
-
y: toY,
|
|
16
|
-
scaleX: toScaleX,
|
|
17
|
-
scaleY: toScaleY
|
|
18
|
-
} = param.to;
|
|
3
|
+
var start = null, easing = param.cubicBezier ? bezier(...param.cubicBezier) : function(v) {
|
|
4
|
+
return v;
|
|
5
|
+
}, { x: fromX, y: fromY, scaleX: fromScaleX, scaleY: fromScaleY } = param.from, { x: toX, y: toY, scaleX: toScaleX, scaleY: toScaleY } = param.to;
|
|
19
6
|
function frame(timestamp) {
|
|
20
7
|
start || (start = timestamp);
|
|
21
|
-
var progress = timestamp - start,
|
|
22
|
-
x = toX !== void 0 ? fromX + (toX - fromX) * easing(progress / param.duration) : void 0,
|
|
23
|
-
y = toY !== void 0 ? fromY + (toY - fromY) * easing(progress / param.duration) : void 0,
|
|
24
|
-
scaleX = toScaleX !== void 0 ? fromScaleX + (toScaleX - fromScaleX) * easing(progress / param.duration) : void 0,
|
|
25
|
-
scaleY = toScaleY !== void 0 ? fromScaleY + (toScaleY - fromScaleY) * easing(progress / param.duration) : void 0;
|
|
8
|
+
var 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;
|
|
26
9
|
param.onUpdate({
|
|
27
10
|
x,
|
|
28
11
|
y,
|
|
@@ -32,5 +15,7 @@ function animate(param) {
|
|
|
32
15
|
}
|
|
33
16
|
requestAnimationFrame(frame);
|
|
34
17
|
}
|
|
35
|
-
export {
|
|
36
|
-
|
|
18
|
+
export {
|
|
19
|
+
animate
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1,6 @@
|
|
|
1
|
-
{
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/Users/n8/tamagui/code/core/cubic-bezier-animator/src/index.tsx"],
|
|
4
|
+
"mappings": "AAAA,SAASA,cAAc;AAiBhB,SAASC,QAAQC,OAAmB;AACzC,MAAIC,QAAQ,MACNC,SAASF,MAAMG,cAAcL,OAAAA,GAAUE,MAAMG,WAAW,IAAI,SAACC,GAAAA;WAAcA;KAE3E,EAAEC,GAAGC,OAAOC,GAAGC,OAAOC,QAAQC,YAAYC,QAAQC,WAAU,IAAKZ,MAAMa,MACvE,EAAER,GAAGS,KAAKP,GAAGQ,KAAKN,QAAQO,UAAUL,QAAQM,SAAQ,IAAKjB,MAAMkB;AAErE,WAASC,MAAMC,WAAS;AACtB,IAAKnB,UAAOA,QAAQmB;AACpB,QAAMC,WAAWD,YAAYnB,OACvBI,IACJS,QAAQQ,SACJhB,SAAUQ,MAAMR,SAAUJ,OAAOmB,WAAWrB,MAAMuB,QAAQ,IAC1DD,QACAf,IACJQ,QAAQO,SACJd,SAAUO,MAAMP,SAAUN,OAAOmB,WAAWrB,MAAMuB,QAAQ,IAC1DD,QACAb,SACJO,aAAaM,SACTZ,cAAeM,WAAWN,cAAeR,OAAOmB,WAAWrB,MAAMuB,QAAQ,IACzED,QACAX,SACJM,aAAaK,SACTV,cAAeK,WAAWL,cAAeV,OAAOmB,WAAWrB,MAAMuB,QAAQ,IACzED;AACNtB,UAAMwB,SAAS;MAAEnB;MAAGE;MAAGE;MAAQE;IAAO,CAAA,GAElCU,WAAWrB,MAAMuB,YACnBE,sBAAsBN,KAAAA;EAE1B;AACAM,wBAAsBN,KAAAA;AACxB;",
|
|
5
|
+
"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", "undefined", "duration", "onUpdate", "requestAnimationFrame"]
|
|
6
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tamagui/cubic-bezier-animator",
|
|
3
|
-
"version": "1.113.
|
|
3
|
+
"version": "1.113.2",
|
|
4
4
|
"sideEffects": false,
|
|
5
5
|
"source": "src/index.tsx",
|
|
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.113.
|
|
24
|
+
"@tamagui/build": "1.113.2"
|
|
25
25
|
},
|
|
26
26
|
"exports": {
|
|
27
27
|
"./package.json": "./package.json",
|