Simple, purely functional tweening function.
$ npm install @f/tween
vartween=require('@f/tween')varapplyStyles=require('@f/apply-styles')functionanimate(element,start,end,duration,easing,cb){vartick=tween(start,end)vart=0requestAnimationFrame(functionticker(){varprops=tick(t)applyStyles(element,props)if(props!==end){t++requestAnimationFrame(ticker)}else{cb()}})}animate(element,{width: 10,left: 2},{width: 100,left: 200})start- Object containing the initial value of the properties you want to tween.end- Object containing the final value of the properties you want to tween.duration- The length of time, in milliseconds, your tween should be for. Defaults to 350ms.easing- An easing function that takes a tick value and interpolates it according to some easing function. Defaults to linear.interval- The tick length you want to use, in milliseconds. Defaults to 16.66ms (i.e. a single requestAnimationFrame timer).
Returns: A partially applied function that accepts a single parameter, t and returns the interpolated properties for that tick. The t parameter is a unitless value that corresponds to the frame of the tween you are requesting. So, if you are using requestAnimationFrame and the default interval, you just increment t once for each tick. t does not need to be an integer.
MIT