7
7
*/
8
8
9
9
// These values are established by empiricism with tests (tradeoff: performance VS precision)
10
- var NEWTON_ITERATIONS = 4
11
- var NEWTON_MIN_SLOPE = 0.001
12
- var SUBDIVISION_PRECISION = 0.0000001
13
- var SUBDIVISION_MAX_ITERATIONS = 10
10
+ const NEWTON_ITERATIONS = 4
11
+ const NEWTON_MIN_SLOPE = 0.001
12
+ const SUBDIVISION_PRECISION = 0.0000001
13
+ const SUBDIVISION_MAX_ITERATIONS = 10
14
14
15
- var kSplineTableSize = 11
16
- var kSampleStepSize = 1.0 / ( kSplineTableSize - 1.0 )
15
+ const kSplineTableSize = 11
16
+ const kSampleStepSize = 1.0 / ( kSplineTableSize - 1.0 )
17
17
18
- var float32ArraySupported = typeof Float32Array === 'function'
18
+ const float32ArraySupported = typeof Float32Array === 'function'
19
19
20
- function A ( aA1 , aA2 ) {
20
+ const A = ( aA1 , aA2 ) => {
21
21
return 1.0 - 3.0 * aA2 + 3.0 * aA1
22
22
}
23
23
function B ( aA1 , aA2 ) {
@@ -28,16 +28,16 @@ function C(aA1) {
28
28
}
29
29
30
30
// Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2.
31
- function calcBezier ( aT , aA1 , aA2 ) {
31
+ const calcBezier = ( aT , aA1 , aA2 ) => {
32
32
return ( ( A ( aA1 , aA2 ) * aT + B ( aA1 , aA2 ) ) * aT + C ( aA1 ) ) * aT
33
33
}
34
34
35
35
// Returns dx/dt given t, x1, and x2, or dy/dt given t, y1, and y2.
36
- function getSlope ( aT , aA1 , aA2 ) {
36
+ const getSlope = ( aT , aA1 , aA2 ) => {
37
37
return 3.0 * A ( aA1 , aA2 ) * aT * aT + 2.0 * B ( aA1 , aA2 ) * aT + C ( aA1 )
38
38
}
39
39
40
- function binarySubdivide ( aX , aA , aB , mX1 , mX2 ) {
40
+ const binarySubdivide = ( aX , aA , aB , mX1 , mX2 ) => {
41
41
var currentX ,
42
42
currentT ,
43
43
i = 0
@@ -56,7 +56,7 @@ function binarySubdivide(aX, aA, aB, mX1, mX2) {
56
56
return currentT
57
57
}
58
58
59
- function newtonRaphsonIterate ( aX , aGuessT , mX1 , mX2 ) {
59
+ const newtonRaphsonIterate = ( aX , aGuessT , mX1 , mX2 ) => {
60
60
for ( var i = 0 ; i < NEWTON_ITERATIONS ; ++ i ) {
61
61
var currentSlope = getSlope ( aGuessT , mX1 , mX2 )
62
62
if ( currentSlope === 0.0 ) {
@@ -68,7 +68,7 @@ function newtonRaphsonIterate(aX, aGuessT, mX1, mX2) {
68
68
return aGuessT
69
69
}
70
70
71
- function bezier ( mX1 , mY1 , mX2 , mY2 ) {
71
+ const bezier = ( mX1 , mY1 , mX2 , mY2 ) => {
72
72
if ( ! ( 0 <= mX1 && mX1 <= 1 && 0 <= mX2 && mX2 <= 1 ) ) {
73
73
throw new Error ( 'bezier x values must be in [0, 1] range' )
74
74
}
@@ -83,7 +83,7 @@ function bezier(mX1, mY1, mX2, mY2) {
83
83
}
84
84
}
85
85
86
- function getTForX ( aX ) {
86
+ const getTForX = aX => {
87
87
var intervalStart = 0.0
88
88
var currentSample = 1
89
89
var lastSample = kSplineTableSize - 1
@@ -119,7 +119,7 @@ function bezier(mX1, mY1, mX2, mY2) {
119
119
}
120
120
}
121
121
122
- return function BezierEasing ( x ) {
122
+ return x => {
123
123
if ( mX1 === mY1 && mX2 === mY2 ) {
124
124
return x // linear
125
125
}
@@ -135,15 +135,15 @@ function bezier(mX1, mY1, mX2, mY2) {
135
135
}
136
136
137
137
// Predefined set of animations. Similar to CSS easing functions
138
- var animations = {
138
+ const animations = {
139
139
ease : bezier ( 0.25 , 0.1 , 0.25 , 1 ) ,
140
140
easeIn : bezier ( 0.42 , 0 , 1 , 1 ) ,
141
141
easeOut : bezier ( 0 , 0 , 0.58 , 1 ) ,
142
142
easeInOut : bezier ( 0.42 , 0 , 0.58 , 1 ) ,
143
143
linear : bezier ( 0 , 0 , 1 , 1 ) ,
144
144
}
145
145
146
- export function animate ( source , target , options ) {
146
+ export const animate = ( source , target , options ) => {
147
147
var start = Object . create ( null )
148
148
var diff = Object . create ( null )
149
149
options = options || { }
@@ -167,7 +167,7 @@ export function animate(source, target, options) {
167
167
var scheduler = getScheduler ( options . scheduler )
168
168
169
169
var keys = Object . keys ( target )
170
- keys . forEach ( function ( key ) {
170
+ keys . forEach ( key => {
171
171
start [ key ] = source [ key ]
172
172
diff [ key ] = target [ key ] - source [ key ]
173
173
} )
0 commit comments