@@ -2,31 +2,45 @@ export interface TimingFunc {
22 ( percentage : number ) : number ;
33}
44
5- const linear : TimingFunc = ( percentage : number ) => {
6- return percentage ;
5+ const linear : TimingFunc = ( p ) => {
6+ return p ;
77} ;
88
9- const easeIn : TimingFunc = ( percentage : number ) => {
10- return 1 - ( percentage - 1 ) ** 2 ;
9+ const easeIn : TimingFunc = ( p ) => {
10+ return 1 - ( p - 1 ) ** 2 ;
1111} ;
1212
13- const easeOut : TimingFunc = ( percentage : number ) => {
14- return 1 - easeIn ( 1 - percentage ) ;
13+ const easeOut : TimingFunc = ( p ) => {
14+ return 1 - easeIn ( 1 - p ) ;
1515} ;
1616
17- const easeInOut : TimingFunc = ( percentage : number ) => {
18- return 0.5 + 0.5 * Math . sin ( Math . PI * ( percentage + 1.5 ) ) ;
17+ const easeInOut : TimingFunc = ( p ) => {
18+ return 0.5 + 0.5 * Math . sin ( Math . PI * ( p + 1.5 ) ) ;
1919} ;
2020
21- const elastic = ( ) : TimingFunc => ( percentage : number ) => {
22- const p = 0.1 ;
23- return Math . pow ( 2 , - 10 * percentage ) * Math . sin ( ( ( percentage - p / 4 ) * ( 2 * Math . PI ) ) / p ) + 1 ;
21+ const elasticIn = ( s : number ) : TimingFunc => ( p ) => {
22+ return Math . pow ( 2 , - 10 * p ) * Math . sin ( ( ( p - s / 4 ) * ( 2 * Math . PI ) ) / s ) + 1 ;
2423} ;
2524
25+ const elasticOut = ( s : number ) : TimingFunc => ( p ) => {
26+ return 1 - elasticIn ( s ) ( 1 - p ) ;
27+ } ;
28+
29+ // https://www.desmos.com/calculator/fqisoq1kuw
2630export const timingFunctions = {
2731 linear,
2832 easeIn,
2933 easeOut,
3034 easeInOut,
31- elastic,
35+ elasticIn0 : elasticIn ( 1 ) ,
36+ elasticIn1 : elasticIn ( 0.16 ) ,
37+ elasticIn2 : elasticIn ( 0.09 ) ,
38+ elasticIn3 : elasticIn ( 0.05 ) ,
39+ elasticOut0 : elasticOut ( 1 ) ,
40+ elasticOut1 : elasticOut ( 0.16 ) ,
41+ elasticOut2 : elasticOut ( 0.09 ) ,
42+ elasticOut3 : elasticOut ( 0.05 ) ,
3243} ;
44+
45+ // Type assertion.
46+ const _ : Record < string , TimingFunc > = timingFunctions ;
0 commit comments