├── .gitignore ├── .npmignore ├── LICENSE.md ├── README.md ├── back-in-out.js ├── back-in.js ├── back-out.js ├── bounce-in-out.js ├── bounce-in.js ├── bounce-out.js ├── circ-in-out.js ├── circ-in.js ├── circ-out.js ├── cubic-in-out.js ├── cubic-in.js ├── cubic-out.js ├── dist ├── eases.es.js ├── eases.es6.js ├── eases.umd.js └── eases.umd.min.js ├── elastic-in-out.js ├── elastic-in.js ├── elastic-out.js ├── expo-in-out.js ├── expo-in.js ├── expo-out.js ├── index.js ├── linear.js ├── package-lock.json ├── package.json ├── quad-in-out.js ├── quad-in.js ├── quad-out.js ├── quart-in-out.js ├── quart-in.js ├── quart-out.js ├── quint-in-out.js ├── quint-in.js ├── quint-out.js ├── scripts └── build.js ├── sine-in-out.js ├── sine-in.js ├── sine-out.js ├── src ├── back-in-out.js ├── back-in.js ├── back-out.js ├── bounce-in-out.js ├── bounce-in.js ├── bounce-out.js ├── circ-in-out.js ├── circ-in.js ├── circ-out.js ├── cubic-in-out.js ├── cubic-in.js ├── cubic-out.js ├── elastic-in-out.js ├── elastic-in.js ├── elastic-out.js ├── expo-in-out.js ├── expo-in.js ├── expo-out.js ├── index.js ├── linear.js ├── quad-in-out.js ├── quad-in.js ├── quad-out.js ├── quart-in-out.js ├── quart-in.js ├── quart-out.js ├── quint-in-out.js ├── quint-in.js ├── quint-out.js ├── sine-in-out.js ├── sine-in.js └── sine-out.js └── test.js /.gitignore: -------------------------------------------------------------------------------- 1 | bower_components 2 | node_modules 3 | *.log 4 | .DS_Store 5 | bundle.js 6 | -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | bower_components 2 | node_modules 3 | *.log 4 | .DS_Store 5 | bundle.js 6 | test 7 | test.js 8 | demo/ -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | Copyright (c) 2014 Matt DesLauriers 3 | 4 | Permission is hereby granted, free of charge, to any person obtaining a copy 5 | of this software and associated documentation files (the "Software"), to deal 6 | in the Software without restriction, including without limitation the rights 7 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 8 | copies of the Software, and to permit persons to whom the Software is 9 | furnished to do so, subject to the following conditions: 10 | 11 | The above copyright notice and this permission notice shall be included in all 12 | copies or substantial portions of the Software. 13 | 14 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 15 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 16 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 17 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, 18 | DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR 19 | OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE 20 | OR OTHER DEALINGS IN THE SOFTWARE. 21 | 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # eases-jsnext 2 | 3 | This is a fork of [mattdesl/eases](https://github.com/mattdesl/eases). It includes [tree-shaking-friendly ES6 modules](http://rollupjs.org), and a UMD build for [use in browser](http://jsfiddle.net/2cpy2zqm/). 4 | 5 | It preserves the original individual CommonJS files, and therefore serves as a drop-in replacement. 6 | 7 | --- 8 | 9 | # eases 10 | 11 | [![stable](http://badges.github.io/stability-badges/dist/stable.svg)](http://github.com/badges/stability-badges) 12 | 13 | This is a grab-bag of [Robert Penner's easing equations](http://www.robertpenner.com/easing/), most of the code from [glsl-easings](https://www.npmjs.org/package/glsl-easings). Pull requests for optimizations are welcome. 14 | 15 | ```js 16 | //require all eases 17 | import * as eases from 'eases-jsnext'; 18 | 19 | //require only the single function 20 | import { quadIn } from 'eases-jsnext'; 21 | ``` 22 | 23 | ## Usage 24 | 25 | [![NPM](https://nodei.co/npm/eases.png)](https://nodei.co/npm/eases/) 26 | 27 | Full list of eases: 28 | 29 | ```js 30 | import { 31 | backInOut, 32 | backIn, 33 | backOut, 34 | bounceInOut, 35 | bounceIn, 36 | bounceOut, 37 | circInOut, 38 | circIn, 39 | circOut, 40 | cubicInOut, 41 | cubicIn, 42 | cubicOut, 43 | elasticInOut, 44 | elasticIn, 45 | elasticOut, 46 | expoInOut, 47 | expoIn, 48 | expoOut, 49 | linear, 50 | quadInOut, 51 | quadIn, 52 | quadOut, 53 | quartInOut, 54 | quartIn, 55 | quartOut, 56 | quintInOut, 57 | quintIn, 58 | quintOut, 59 | sineInOut, 60 | sineIn, 61 | sineOut 62 | } from 'eases-jsnext'; 63 | ``` 64 | 65 | All easing functions only remap a time value, and all have the same signature. 66 | 67 | #### ```v = ease(t)``` 68 | 69 | Where `t` is typically a value between 0 and 1, and it returns a new float that has been eased. 70 | 71 | ## License 72 | 73 | MIT, see [LICENSE.md](http://github.com/mattdesl/eases/blob/master/LICENSE.md) for details. 74 | -------------------------------------------------------------------------------- /back-in-out.js: -------------------------------------------------------------------------------- 1 | function backInOut(t) { 2 | var s = 1.70158 * 1.525; 3 | if ((t *= 2) < 1) 4 | return 0.5 * (t * t * ((s + 1) * t - s)) 5 | return 0.5 * ((t -= 2) * t * ((s + 1) * t + s) + 2) 6 | } 7 | 8 | module.exports = backInOut; 9 | -------------------------------------------------------------------------------- /back-in.js: -------------------------------------------------------------------------------- 1 | function backIn(t) { 2 | var s = 1.70158; 3 | return t * t * ((s + 1) * t - s) 4 | } 5 | 6 | module.exports = backIn; 7 | -------------------------------------------------------------------------------- /back-out.js: -------------------------------------------------------------------------------- 1 | function backOut(t) { 2 | var s = 1.70158; 3 | return --t * t * ((s + 1) * t + s) + 1 4 | } 5 | 6 | module.exports = backOut; 7 | -------------------------------------------------------------------------------- /bounce-in-out.js: -------------------------------------------------------------------------------- 1 | function bounceOut(t) { 2 | var a = 4.0 / 11.0; 3 | var b = 8.0 / 11.0; 4 | var c = 9.0 / 10.0; 5 | 6 | var ca = 4356.0 / 361.0; 7 | var cb = 35442.0 / 1805.0; 8 | var cc = 16061.0 / 1805.0; 9 | 10 | var t2 = t * t; 11 | 12 | return t < a 13 | ? 7.5625 * t2 14 | : t < b 15 | ? 9.075 * t2 - 9.9 * t + 3.4 16 | : t < c 17 | ? ca * t2 - cb * t + cc 18 | : 10.8 * t * t - 20.52 * t + 10.72 19 | } 20 | 21 | function bounceInOut(t) { 22 | return t < 0.5 23 | ? 0.5 * (1.0 - bounceOut(1.0 - t * 2.0)) 24 | : 0.5 * bounceOut(t * 2.0 - 1.0) + 0.5 25 | } 26 | 27 | module.exports = bounceInOut; 28 | -------------------------------------------------------------------------------- /bounce-in.js: -------------------------------------------------------------------------------- 1 | function bounceOut(t) { 2 | var a = 4.0 / 11.0; 3 | var b = 8.0 / 11.0; 4 | var c = 9.0 / 10.0; 5 | 6 | var ca = 4356.0 / 361.0; 7 | var cb = 35442.0 / 1805.0; 8 | var cc = 16061.0 / 1805.0; 9 | 10 | var t2 = t * t; 11 | 12 | return t < a 13 | ? 7.5625 * t2 14 | : t < b 15 | ? 9.075 * t2 - 9.9 * t + 3.4 16 | : t < c 17 | ? ca * t2 - cb * t + cc 18 | : 10.8 * t * t - 20.52 * t + 10.72 19 | } 20 | 21 | function bounceIn(t) { 22 | return 1.0 - bounceOut(1.0 - t) 23 | } 24 | 25 | module.exports = bounceIn; 26 | -------------------------------------------------------------------------------- /bounce-out.js: -------------------------------------------------------------------------------- 1 | function bounceOut(t) { 2 | var a = 4.0 / 11.0; 3 | var b = 8.0 / 11.0; 4 | var c = 9.0 / 10.0; 5 | 6 | var ca = 4356.0 / 361.0; 7 | var cb = 35442.0 / 1805.0; 8 | var cc = 16061.0 / 1805.0; 9 | 10 | var t2 = t * t; 11 | 12 | return t < a 13 | ? 7.5625 * t2 14 | : t < b 15 | ? 9.075 * t2 - 9.9 * t + 3.4 16 | : t < c 17 | ? ca * t2 - cb * t + cc 18 | : 10.8 * t * t - 20.52 * t + 10.72 19 | } 20 | 21 | module.exports = bounceOut; 22 | -------------------------------------------------------------------------------- /circ-in-out.js: -------------------------------------------------------------------------------- 1 | function circInOut(t) { 2 | if ((t *= 2) < 1) return -0.5 * (Math.sqrt(1 - t * t) - 1) 3 | return 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1) 4 | } 5 | 6 | module.exports = circInOut; 7 | -------------------------------------------------------------------------------- /circ-in.js: -------------------------------------------------------------------------------- 1 | function circIn(t) { 2 | return 1.0 - Math.sqrt(1.0 - t * t) 3 | } 4 | 5 | module.exports = circIn; 6 | -------------------------------------------------------------------------------- /circ-out.js: -------------------------------------------------------------------------------- 1 | function circOut(t) { 2 | return Math.sqrt(1 - ( --t * t )) 3 | } 4 | 5 | module.exports = circOut; 6 | -------------------------------------------------------------------------------- /cubic-in-out.js: -------------------------------------------------------------------------------- 1 | function cubicInOut(t) { 2 | return t < 0.5 3 | ? 4.0 * t * t * t 4 | : 0.5 * Math.pow(2.0 * t - 2.0, 3.0) + 1.0 5 | } 6 | 7 | module.exports = cubicInOut; 8 | -------------------------------------------------------------------------------- /cubic-in.js: -------------------------------------------------------------------------------- 1 | function cubicIn(t) { 2 | return t * t * t 3 | } 4 | 5 | module.exports = cubicIn; 6 | -------------------------------------------------------------------------------- /cubic-out.js: -------------------------------------------------------------------------------- 1 | function cubicOut(t) { 2 | var f = t - 1.0; 3 | return f * f * f + 1.0 4 | } 5 | 6 | module.exports = cubicOut; 7 | -------------------------------------------------------------------------------- /dist/eases.es.js: -------------------------------------------------------------------------------- 1 | function backInOut(t) { 2 | var s = 1.70158 * 1.525; 3 | if ((t *= 2) < 1) 4 | return 0.5 * (t * t * ((s + 1) * t - s)) 5 | return 0.5 * ((t -= 2) * t * ((s + 1) * t + s) + 2) 6 | } 7 | 8 | function backIn(t) { 9 | var s = 1.70158; 10 | return t * t * ((s + 1) * t - s) 11 | } 12 | 13 | function backOut(t) { 14 | var s = 1.70158; 15 | return --t * t * ((s + 1) * t + s) + 1 16 | } 17 | 18 | function bounceOut(t) { 19 | var a = 4.0 / 11.0; 20 | var b = 8.0 / 11.0; 21 | var c = 9.0 / 10.0; 22 | 23 | var ca = 4356.0 / 361.0; 24 | var cb = 35442.0 / 1805.0; 25 | var cc = 16061.0 / 1805.0; 26 | 27 | var t2 = t * t; 28 | 29 | return t < a 30 | ? 7.5625 * t2 31 | : t < b 32 | ? 9.075 * t2 - 9.9 * t + 3.4 33 | : t < c 34 | ? ca * t2 - cb * t + cc 35 | : 10.8 * t * t - 20.52 * t + 10.72 36 | } 37 | 38 | function bounceInOut(t) { 39 | return t < 0.5 40 | ? 0.5 * (1.0 - bounceOut(1.0 - t * 2.0)) 41 | : 0.5 * bounceOut(t * 2.0 - 1.0) + 0.5 42 | } 43 | 44 | function bounceIn(t) { 45 | return 1.0 - bounceOut(1.0 - t) 46 | } 47 | 48 | function circInOut(t) { 49 | if ((t *= 2) < 1) return -0.5 * (Math.sqrt(1 - t * t) - 1) 50 | return 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1) 51 | } 52 | 53 | function circIn(t) { 54 | return 1.0 - Math.sqrt(1.0 - t * t) 55 | } 56 | 57 | function circOut(t) { 58 | return Math.sqrt(1 - ( --t * t )) 59 | } 60 | 61 | function cubicInOut(t) { 62 | return t < 0.5 63 | ? 4.0 * t * t * t 64 | : 0.5 * Math.pow(2.0 * t - 2.0, 3.0) + 1.0 65 | } 66 | 67 | function cubicIn(t) { 68 | return t * t * t 69 | } 70 | 71 | function cubicOut(t) { 72 | var f = t - 1.0; 73 | return f * f * f + 1.0 74 | } 75 | 76 | function elasticInOut(t) { 77 | return t < 0.5 78 | ? 0.5 * Math.sin(+13.0 * Math.PI/2 * 2.0 * t) * Math.pow(2.0, 10.0 * (2.0 * t - 1.0)) 79 | : 0.5 * Math.sin(-13.0 * Math.PI/2 * ((2.0 * t - 1.0) + 1.0)) * Math.pow(2.0, -10.0 * (2.0 * t - 1.0)) + 1.0 80 | } 81 | 82 | function elasticIn(t) { 83 | return Math.sin(13.0 * t * Math.PI/2) * Math.pow(2.0, 10.0 * (t - 1.0)) 84 | } 85 | 86 | function elasticOut(t) { 87 | return Math.sin(-13.0 * (t + 1.0) * Math.PI/2) * Math.pow(2.0, -10.0 * t) + 1.0 88 | } 89 | 90 | function expoInOut(t) { 91 | return (t === 0.0 || t === 1.0) 92 | ? t 93 | : t < 0.5 94 | ? +0.5 * Math.pow(2.0, (20.0 * t) - 10.0) 95 | : -0.5 * Math.pow(2.0, 10.0 - (t * 20.0)) + 1.0 96 | } 97 | 98 | function expoIn(t) { 99 | return t === 0.0 ? t : Math.pow(2.0, 10.0 * (t - 1.0)) 100 | } 101 | 102 | function expoOut(t) { 103 | return t === 1.0 ? t : 1.0 - Math.pow(2.0, -10.0 * t) 104 | } 105 | 106 | function linear(t) { 107 | return t 108 | } 109 | 110 | function quadInOut(t) { 111 | t /= 0.5; 112 | if (t < 1) return 0.5*t*t 113 | t--; 114 | return -0.5 * (t*(t-2) - 1) 115 | } 116 | 117 | function quadIn(t) { 118 | return t * t 119 | } 120 | 121 | function quadOut(t) { 122 | return -t * (t - 2.0) 123 | } 124 | 125 | function quarticInOut(t) { 126 | return t < 0.5 127 | ? +8.0 * Math.pow(t, 4.0) 128 | : -8.0 * Math.pow(t - 1.0, 4.0) + 1.0 129 | } 130 | 131 | function quarticIn(t) { 132 | return Math.pow(t, 4.0) 133 | } 134 | 135 | function quarticOut(t) { 136 | return Math.pow(t - 1.0, 3.0) * (1.0 - t) + 1.0 137 | } 138 | 139 | function qinticInOut(t) { 140 | if ( ( t *= 2 ) < 1 ) return 0.5 * t * t * t * t * t 141 | return 0.5 * ( ( t -= 2 ) * t * t * t * t + 2 ) 142 | } 143 | 144 | function qinticIn(t) { 145 | return t * t * t * t * t 146 | } 147 | 148 | function qinticOut(t) { 149 | return --t * t * t * t * t + 1 150 | } 151 | 152 | function sineInOut(t) { 153 | return -0.5 * (Math.cos(Math.PI*t) - 1) 154 | } 155 | 156 | function sineIn (t) { 157 | var v = Math.cos(t * Math.PI * 0.5); 158 | if (Math.abs(v) < 1e-14) return 1 159 | else return 1 - v 160 | } 161 | 162 | function sineOut(t) { 163 | return Math.sin(t * Math.PI/2) 164 | } 165 | 166 | export { backInOut, backIn, backOut, bounceInOut, bounceIn, bounceOut, circInOut, circIn, circOut, cubicInOut, cubicIn, cubicOut, elasticInOut, elasticIn, elasticOut, expoInOut, expoIn, expoOut, linear, quadInOut, quadIn, quadOut, quarticInOut as quartInOut, quarticIn as quartIn, quarticOut as quartOut, qinticInOut as quintInOut, qinticIn as quintIn, qinticOut as quintOut, sineInOut, sineIn, sineOut }; 167 | -------------------------------------------------------------------------------- /dist/eases.es6.js: -------------------------------------------------------------------------------- 1 | function backInOut(t) { 2 | var s = 1.70158 * 1.525; 3 | if ((t *= 2) < 1) 4 | return 0.5 * (t * t * ((s + 1) * t - s)) 5 | return 0.5 * ((t -= 2) * t * ((s + 1) * t + s) + 2) 6 | } 7 | 8 | function backIn(t) { 9 | var s = 1.70158; 10 | return t * t * ((s + 1) * t - s) 11 | } 12 | 13 | function backOut(t) { 14 | var s = 1.70158; 15 | return --t * t * ((s + 1) * t + s) + 1 16 | } 17 | 18 | function bounceOut(t) { 19 | var a = 4.0 / 11.0; 20 | var b = 8.0 / 11.0; 21 | var c = 9.0 / 10.0; 22 | 23 | var ca = 4356.0 / 361.0; 24 | var cb = 35442.0 / 1805.0; 25 | var cc = 16061.0 / 1805.0; 26 | 27 | var t2 = t * t; 28 | 29 | return t < a 30 | ? 7.5625 * t2 31 | : t < b 32 | ? 9.075 * t2 - 9.9 * t + 3.4 33 | : t < c 34 | ? ca * t2 - cb * t + cc 35 | : 10.8 * t * t - 20.52 * t + 10.72 36 | } 37 | 38 | function bounceInOut(t) { 39 | return t < 0.5 40 | ? 0.5 * (1.0 - bounceOut(1.0 - t * 2.0)) 41 | : 0.5 * bounceOut(t * 2.0 - 1.0) + 0.5 42 | } 43 | 44 | function bounceIn(t) { 45 | return 1.0 - bounceOut(1.0 - t) 46 | } 47 | 48 | function circInOut(t) { 49 | if ((t *= 2) < 1) return -0.5 * (Math.sqrt(1 - t * t) - 1) 50 | return 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1) 51 | } 52 | 53 | function circIn(t) { 54 | return 1.0 - Math.sqrt(1.0 - t * t) 55 | } 56 | 57 | function circOut(t) { 58 | return Math.sqrt(1 - ( --t * t )) 59 | } 60 | 61 | function cubicInOut(t) { 62 | return t < 0.5 63 | ? 4.0 * t * t * t 64 | : 0.5 * Math.pow(2.0 * t - 2.0, 3.0) + 1.0 65 | } 66 | 67 | function cubicIn(t) { 68 | return t * t * t 69 | } 70 | 71 | function cubicOut(t) { 72 | var f = t - 1.0; 73 | return f * f * f + 1.0 74 | } 75 | 76 | function elasticInOut(t) { 77 | return t < 0.5 78 | ? 0.5 * Math.sin(+13.0 * Math.PI/2 * 2.0 * t) * Math.pow(2.0, 10.0 * (2.0 * t - 1.0)) 79 | : 0.5 * Math.sin(-13.0 * Math.PI/2 * ((2.0 * t - 1.0) + 1.0)) * Math.pow(2.0, -10.0 * (2.0 * t - 1.0)) + 1.0 80 | } 81 | 82 | function elasticIn(t) { 83 | return Math.sin(13.0 * t * Math.PI/2) * Math.pow(2.0, 10.0 * (t - 1.0)) 84 | } 85 | 86 | function elasticOut(t) { 87 | return Math.sin(-13.0 * (t + 1.0) * Math.PI/2) * Math.pow(2.0, -10.0 * t) + 1.0 88 | } 89 | 90 | function expoInOut(t) { 91 | return (t === 0.0 || t === 1.0) 92 | ? t 93 | : t < 0.5 94 | ? +0.5 * Math.pow(2.0, (20.0 * t) - 10.0) 95 | : -0.5 * Math.pow(2.0, 10.0 - (t * 20.0)) + 1.0 96 | } 97 | 98 | function expoIn(t) { 99 | return t === 0.0 ? t : Math.pow(2.0, 10.0 * (t - 1.0)) 100 | } 101 | 102 | function expoOut(t) { 103 | return t === 1.0 ? t : 1.0 - Math.pow(2.0, -10.0 * t) 104 | } 105 | 106 | function linear(t) { 107 | return t 108 | } 109 | 110 | function quadInOut(t) { 111 | t /= 0.5; 112 | if (t < 1) return 0.5*t*t 113 | t--; 114 | return -0.5 * (t*(t-2) - 1) 115 | } 116 | 117 | function quadIn(t) { 118 | return t * t 119 | } 120 | 121 | function quadOut(t) { 122 | return -t * (t - 2.0) 123 | } 124 | 125 | function quarticInOut(t) { 126 | return t < 0.5 127 | ? +8.0 * Math.pow(t, 4.0) 128 | : -8.0 * Math.pow(t - 1.0, 4.0) + 1.0 129 | } 130 | 131 | function quarticIn(t) { 132 | return Math.pow(t, 4.0) 133 | } 134 | 135 | function quarticOut(t) { 136 | return Math.pow(t - 1.0, 3.0) * (1.0 - t) + 1.0 137 | } 138 | 139 | function qinticInOut(t) { 140 | if ( ( t *= 2 ) < 1 ) return 0.5 * t * t * t * t * t 141 | return 0.5 * ( ( t -= 2 ) * t * t * t * t + 2 ) 142 | } 143 | 144 | function qinticIn(t) { 145 | return t * t * t * t * t 146 | } 147 | 148 | function qinticOut(t) { 149 | return --t * t * t * t * t + 1 150 | } 151 | 152 | function sineInOut(t) { 153 | return -0.5 * (Math.cos(Math.PI*t) - 1) 154 | } 155 | 156 | function sineIn (t) { 157 | var v = Math.cos(t * Math.PI * 0.5); 158 | if (Math.abs(v) < 1e-14) return 1 159 | else return 1 - v 160 | } 161 | 162 | function sineOut(t) { 163 | return Math.sin(t * Math.PI/2) 164 | } 165 | 166 | export { backInOut, backIn, backOut, bounceInOut, bounceIn, bounceOut, circInOut, circIn, circOut, cubicInOut, cubicIn, cubicOut, elasticInOut, elasticIn, elasticOut, expoInOut, expoIn, expoOut, linear, quadInOut, quadIn, quadOut, quarticInOut as quartInOut, quarticIn as quartIn, quarticOut as quartOut, qinticInOut as quintInOut, qinticIn as quintIn, qinticOut as quintOut, sineInOut, sineIn, sineOut }; 167 | -------------------------------------------------------------------------------- /dist/eases.umd.js: -------------------------------------------------------------------------------- 1 | (function (global, factory) { 2 | typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : 3 | typeof define === 'function' && define.amd ? define(['exports'], factory) : 4 | (factory((global.eases = global.eases || {}))); 5 | }(this, (function (exports) { 'use strict'; 6 | 7 | function backInOut(t) { 8 | var s = 1.70158 * 1.525; 9 | if ((t *= 2) < 1) 10 | return 0.5 * (t * t * ((s + 1) * t - s)) 11 | return 0.5 * ((t -= 2) * t * ((s + 1) * t + s) + 2) 12 | } 13 | 14 | function backIn(t) { 15 | var s = 1.70158; 16 | return t * t * ((s + 1) * t - s) 17 | } 18 | 19 | function backOut(t) { 20 | var s = 1.70158; 21 | return --t * t * ((s + 1) * t + s) + 1 22 | } 23 | 24 | function bounceOut(t) { 25 | var a = 4.0 / 11.0; 26 | var b = 8.0 / 11.0; 27 | var c = 9.0 / 10.0; 28 | 29 | var ca = 4356.0 / 361.0; 30 | var cb = 35442.0 / 1805.0; 31 | var cc = 16061.0 / 1805.0; 32 | 33 | var t2 = t * t; 34 | 35 | return t < a 36 | ? 7.5625 * t2 37 | : t < b 38 | ? 9.075 * t2 - 9.9 * t + 3.4 39 | : t < c 40 | ? ca * t2 - cb * t + cc 41 | : 10.8 * t * t - 20.52 * t + 10.72 42 | } 43 | 44 | function bounceInOut(t) { 45 | return t < 0.5 46 | ? 0.5 * (1.0 - bounceOut(1.0 - t * 2.0)) 47 | : 0.5 * bounceOut(t * 2.0 - 1.0) + 0.5 48 | } 49 | 50 | function bounceIn(t) { 51 | return 1.0 - bounceOut(1.0 - t) 52 | } 53 | 54 | function circInOut(t) { 55 | if ((t *= 2) < 1) return -0.5 * (Math.sqrt(1 - t * t) - 1) 56 | return 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1) 57 | } 58 | 59 | function circIn(t) { 60 | return 1.0 - Math.sqrt(1.0 - t * t) 61 | } 62 | 63 | function circOut(t) { 64 | return Math.sqrt(1 - ( --t * t )) 65 | } 66 | 67 | function cubicInOut(t) { 68 | return t < 0.5 69 | ? 4.0 * t * t * t 70 | : 0.5 * Math.pow(2.0 * t - 2.0, 3.0) + 1.0 71 | } 72 | 73 | function cubicIn(t) { 74 | return t * t * t 75 | } 76 | 77 | function cubicOut(t) { 78 | var f = t - 1.0; 79 | return f * f * f + 1.0 80 | } 81 | 82 | function elasticInOut(t) { 83 | return t < 0.5 84 | ? 0.5 * Math.sin(+13.0 * Math.PI/2 * 2.0 * t) * Math.pow(2.0, 10.0 * (2.0 * t - 1.0)) 85 | : 0.5 * Math.sin(-13.0 * Math.PI/2 * ((2.0 * t - 1.0) + 1.0)) * Math.pow(2.0, -10.0 * (2.0 * t - 1.0)) + 1.0 86 | } 87 | 88 | function elasticIn(t) { 89 | return Math.sin(13.0 * t * Math.PI/2) * Math.pow(2.0, 10.0 * (t - 1.0)) 90 | } 91 | 92 | function elasticOut(t) { 93 | return Math.sin(-13.0 * (t + 1.0) * Math.PI/2) * Math.pow(2.0, -10.0 * t) + 1.0 94 | } 95 | 96 | function expoInOut(t) { 97 | return (t === 0.0 || t === 1.0) 98 | ? t 99 | : t < 0.5 100 | ? +0.5 * Math.pow(2.0, (20.0 * t) - 10.0) 101 | : -0.5 * Math.pow(2.0, 10.0 - (t * 20.0)) + 1.0 102 | } 103 | 104 | function expoIn(t) { 105 | return t === 0.0 ? t : Math.pow(2.0, 10.0 * (t - 1.0)) 106 | } 107 | 108 | function expoOut(t) { 109 | return t === 1.0 ? t : 1.0 - Math.pow(2.0, -10.0 * t) 110 | } 111 | 112 | function linear(t) { 113 | return t 114 | } 115 | 116 | function quadInOut(t) { 117 | t /= 0.5; 118 | if (t < 1) return 0.5*t*t 119 | t--; 120 | return -0.5 * (t*(t-2) - 1) 121 | } 122 | 123 | function quadIn(t) { 124 | return t * t 125 | } 126 | 127 | function quadOut(t) { 128 | return -t * (t - 2.0) 129 | } 130 | 131 | function quarticInOut(t) { 132 | return t < 0.5 133 | ? +8.0 * Math.pow(t, 4.0) 134 | : -8.0 * Math.pow(t - 1.0, 4.0) + 1.0 135 | } 136 | 137 | function quarticIn(t) { 138 | return Math.pow(t, 4.0) 139 | } 140 | 141 | function quarticOut(t) { 142 | return Math.pow(t - 1.0, 3.0) * (1.0 - t) + 1.0 143 | } 144 | 145 | function qinticInOut(t) { 146 | if ( ( t *= 2 ) < 1 ) return 0.5 * t * t * t * t * t 147 | return 0.5 * ( ( t -= 2 ) * t * t * t * t + 2 ) 148 | } 149 | 150 | function qinticIn(t) { 151 | return t * t * t * t * t 152 | } 153 | 154 | function qinticOut(t) { 155 | return --t * t * t * t * t + 1 156 | } 157 | 158 | function sineInOut(t) { 159 | return -0.5 * (Math.cos(Math.PI*t) - 1) 160 | } 161 | 162 | function sineIn (t) { 163 | var v = Math.cos(t * Math.PI * 0.5); 164 | if (Math.abs(v) < 1e-14) return 1 165 | else return 1 - v 166 | } 167 | 168 | function sineOut(t) { 169 | return Math.sin(t * Math.PI/2) 170 | } 171 | 172 | exports.backInOut = backInOut; 173 | exports.backIn = backIn; 174 | exports.backOut = backOut; 175 | exports.bounceInOut = bounceInOut; 176 | exports.bounceIn = bounceIn; 177 | exports.bounceOut = bounceOut; 178 | exports.circInOut = circInOut; 179 | exports.circIn = circIn; 180 | exports.circOut = circOut; 181 | exports.cubicInOut = cubicInOut; 182 | exports.cubicIn = cubicIn; 183 | exports.cubicOut = cubicOut; 184 | exports.elasticInOut = elasticInOut; 185 | exports.elasticIn = elasticIn; 186 | exports.elasticOut = elasticOut; 187 | exports.expoInOut = expoInOut; 188 | exports.expoIn = expoIn; 189 | exports.expoOut = expoOut; 190 | exports.linear = linear; 191 | exports.quadInOut = quadInOut; 192 | exports.quadIn = quadIn; 193 | exports.quadOut = quadOut; 194 | exports.quartInOut = quarticInOut; 195 | exports.quartIn = quarticIn; 196 | exports.quartOut = quarticOut; 197 | exports.quintInOut = qinticInOut; 198 | exports.quintIn = qinticIn; 199 | exports.quintOut = qinticOut; 200 | exports.sineInOut = sineInOut; 201 | exports.sineIn = sineIn; 202 | exports.sineOut = sineOut; 203 | 204 | Object.defineProperty(exports, '__esModule', { value: true }); 205 | 206 | }))); 207 | -------------------------------------------------------------------------------- /dist/eases.umd.min.js: -------------------------------------------------------------------------------- 1 | !function(t,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports):"function"==typeof define&&define.amd?define(["exports"],n):n(t.eases=t.eases||{})}(this,function(t){"use strict";function n(t){var n=t*t;return t<4/11?7.5625*n:t<8/11?9.075*n-9.9*t+3.4:t<.9?4356/361*n-35442/1805*t+16061/1805:10.8*t*t-20.52*t+10.72}t.backInOut=function(t){var n=2.5949095;return(t*=2)<1?t*t*((n+1)*t-n)*.5:.5*((t-=2)*t*((n+1)*t+n)+2)},t.backIn=function(t){var n=1.70158;return t*t*((n+1)*t-n)},t.backOut=function(t){var n=1.70158;return--t*t*((n+1)*t+n)+1},t.bounceInOut=function(t){return t<.5?.5*(1-n(1-2*t)):.5*n(2*t-1)+.5},t.bounceIn=function(t){return 1-n(1-t)},t.bounceOut=n,t.circInOut=function(t){return(t*=2)<1?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1)},t.circIn=function(t){return 1-Math.sqrt(1-t*t)},t.circOut=function(t){return Math.sqrt(1- --t*t)},t.cubicInOut=function(t){return t<.5?4*t*t*t:.5*Math.pow(2*t-2,3)+1},t.cubicIn=function(t){return t*t*t},t.cubicOut=function(t){var n=t-1;return n*n*n+1},t.elasticInOut=function(t){return t<.5?.5*Math.sin(13*Math.PI/2*2*t)*Math.pow(2,10*(2*t-1)):.5*Math.sin(-13*Math.PI/2*(2*t-1+1))*Math.pow(2,-10*(2*t-1))+1},t.elasticIn=function(t){return Math.sin(13*t*Math.PI/2)*Math.pow(2,10*(t-1))},t.elasticOut=function(t){return Math.sin(-13*(t+1)*Math.PI/2)*Math.pow(2,-10*t)+1},t.expoInOut=function(t){return 0===t||1===t?t:t<.5?.5*Math.pow(2,20*t-10):-.5*Math.pow(2,10-20*t)+1},t.expoIn=function(t){return 0===t?t:Math.pow(2,10*(t-1))},t.expoOut=function(t){return 1===t?t:1-Math.pow(2,-10*t)},t.linear=function(t){return t},t.quadInOut=function(t){return(t/=.5)<1?.5*t*t:-.5*(--t*(t-2)-1)},t.quadIn=function(t){return t*t},t.quadOut=function(t){return-t*(t-2)},t.quartInOut=function(t){return t<.5?8*Math.pow(t,4):-8*Math.pow(t-1,4)+1},t.quartIn=function(t){return Math.pow(t,4)},t.quartOut=function(t){return Math.pow(t-1,3)*(1-t)+1},t.quintInOut=function(t){return(t*=2)<1?.5*t*t*t*t*t:.5*((t-=2)*t*t*t*t+2)},t.quintIn=function(t){return t*t*t*t*t},t.quintOut=function(t){return--t*t*t*t*t+1},t.sineInOut=function(t){return-.5*(Math.cos(Math.PI*t)-1)},t.sineIn=function(t){var n=Math.cos(t*Math.PI*.5);return Math.abs(n)<1e-14?1:1-n},t.sineOut=function(t){return Math.sin(t*Math.PI/2)},Object.defineProperty(t,"__esModule",{value:!0})}); 2 | -------------------------------------------------------------------------------- /elastic-in-out.js: -------------------------------------------------------------------------------- 1 | function elasticInOut(t) { 2 | return t < 0.5 3 | ? 0.5 * Math.sin(+13.0 * Math.PI/2 * 2.0 * t) * Math.pow(2.0, 10.0 * (2.0 * t - 1.0)) 4 | : 0.5 * Math.sin(-13.0 * Math.PI/2 * ((2.0 * t - 1.0) + 1.0)) * Math.pow(2.0, -10.0 * (2.0 * t - 1.0)) + 1.0 5 | } 6 | 7 | module.exports = elasticInOut; 8 | -------------------------------------------------------------------------------- /elastic-in.js: -------------------------------------------------------------------------------- 1 | function elasticIn(t) { 2 | return Math.sin(13.0 * t * Math.PI/2) * Math.pow(2.0, 10.0 * (t - 1.0)) 3 | } 4 | 5 | module.exports = elasticIn; 6 | -------------------------------------------------------------------------------- /elastic-out.js: -------------------------------------------------------------------------------- 1 | function elasticOut(t) { 2 | return Math.sin(-13.0 * (t + 1.0) * Math.PI/2) * Math.pow(2.0, -10.0 * t) + 1.0 3 | } 4 | 5 | module.exports = elasticOut; 6 | -------------------------------------------------------------------------------- /expo-in-out.js: -------------------------------------------------------------------------------- 1 | function expoInOut(t) { 2 | return (t === 0.0 || t === 1.0) 3 | ? t 4 | : t < 0.5 5 | ? +0.5 * Math.pow(2.0, (20.0 * t) - 10.0) 6 | : -0.5 * Math.pow(2.0, 10.0 - (t * 20.0)) + 1.0 7 | } 8 | 9 | module.exports = expoInOut; 10 | -------------------------------------------------------------------------------- /expo-in.js: -------------------------------------------------------------------------------- 1 | function expoIn(t) { 2 | return t === 0.0 ? t : Math.pow(2.0, 10.0 * (t - 1.0)) 3 | } 4 | 5 | module.exports = expoIn; 6 | -------------------------------------------------------------------------------- /expo-out.js: -------------------------------------------------------------------------------- 1 | function expoOut(t) { 2 | return t === 1.0 ? t : 1.0 - Math.pow(2.0, -10.0 * t) 3 | } 4 | 5 | module.exports = expoOut; 6 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | Object.defineProperty(exports, '__esModule', { value: true }); 2 | 3 | function backInOut(t) { 4 | var s = 1.70158 * 1.525; 5 | if ((t *= 2) < 1) 6 | return 0.5 * (t * t * ((s + 1) * t - s)) 7 | return 0.5 * ((t -= 2) * t * ((s + 1) * t + s) + 2) 8 | } 9 | 10 | function backIn(t) { 11 | var s = 1.70158; 12 | return t * t * ((s + 1) * t - s) 13 | } 14 | 15 | function backOut(t) { 16 | var s = 1.70158; 17 | return --t * t * ((s + 1) * t + s) + 1 18 | } 19 | 20 | function bounceOut(t) { 21 | var a = 4.0 / 11.0; 22 | var b = 8.0 / 11.0; 23 | var c = 9.0 / 10.0; 24 | 25 | var ca = 4356.0 / 361.0; 26 | var cb = 35442.0 / 1805.0; 27 | var cc = 16061.0 / 1805.0; 28 | 29 | var t2 = t * t; 30 | 31 | return t < a 32 | ? 7.5625 * t2 33 | : t < b 34 | ? 9.075 * t2 - 9.9 * t + 3.4 35 | : t < c 36 | ? ca * t2 - cb * t + cc 37 | : 10.8 * t * t - 20.52 * t + 10.72 38 | } 39 | 40 | function bounceInOut(t) { 41 | return t < 0.5 42 | ? 0.5 * (1.0 - bounceOut(1.0 - t * 2.0)) 43 | : 0.5 * bounceOut(t * 2.0 - 1.0) + 0.5 44 | } 45 | 46 | function bounceIn(t) { 47 | return 1.0 - bounceOut(1.0 - t) 48 | } 49 | 50 | function circInOut(t) { 51 | if ((t *= 2) < 1) return -0.5 * (Math.sqrt(1 - t * t) - 1) 52 | return 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1) 53 | } 54 | 55 | function circIn(t) { 56 | return 1.0 - Math.sqrt(1.0 - t * t) 57 | } 58 | 59 | function circOut(t) { 60 | return Math.sqrt(1 - ( --t * t )) 61 | } 62 | 63 | function cubicInOut(t) { 64 | return t < 0.5 65 | ? 4.0 * t * t * t 66 | : 0.5 * Math.pow(2.0 * t - 2.0, 3.0) + 1.0 67 | } 68 | 69 | function cubicIn(t) { 70 | return t * t * t 71 | } 72 | 73 | function cubicOut(t) { 74 | var f = t - 1.0; 75 | return f * f * f + 1.0 76 | } 77 | 78 | function elasticInOut(t) { 79 | return t < 0.5 80 | ? 0.5 * Math.sin(+13.0 * Math.PI/2 * 2.0 * t) * Math.pow(2.0, 10.0 * (2.0 * t - 1.0)) 81 | : 0.5 * Math.sin(-13.0 * Math.PI/2 * ((2.0 * t - 1.0) + 1.0)) * Math.pow(2.0, -10.0 * (2.0 * t - 1.0)) + 1.0 82 | } 83 | 84 | function elasticIn(t) { 85 | return Math.sin(13.0 * t * Math.PI/2) * Math.pow(2.0, 10.0 * (t - 1.0)) 86 | } 87 | 88 | function elasticOut(t) { 89 | return Math.sin(-13.0 * (t + 1.0) * Math.PI/2) * Math.pow(2.0, -10.0 * t) + 1.0 90 | } 91 | 92 | function expoInOut(t) { 93 | return (t === 0.0 || t === 1.0) 94 | ? t 95 | : t < 0.5 96 | ? +0.5 * Math.pow(2.0, (20.0 * t) - 10.0) 97 | : -0.5 * Math.pow(2.0, 10.0 - (t * 20.0)) + 1.0 98 | } 99 | 100 | function expoIn(t) { 101 | return t === 0.0 ? t : Math.pow(2.0, 10.0 * (t - 1.0)) 102 | } 103 | 104 | function expoOut(t) { 105 | return t === 1.0 ? t : 1.0 - Math.pow(2.0, -10.0 * t) 106 | } 107 | 108 | function linear(t) { 109 | return t 110 | } 111 | 112 | function quadInOut(t) { 113 | t /= 0.5; 114 | if (t < 1) return 0.5*t*t 115 | t--; 116 | return -0.5 * (t*(t-2) - 1) 117 | } 118 | 119 | function quadIn(t) { 120 | return t * t 121 | } 122 | 123 | function quadOut(t) { 124 | return -t * (t - 2.0) 125 | } 126 | 127 | function quarticInOut(t) { 128 | return t < 0.5 129 | ? +8.0 * Math.pow(t, 4.0) 130 | : -8.0 * Math.pow(t - 1.0, 4.0) + 1.0 131 | } 132 | 133 | function quarticIn(t) { 134 | return Math.pow(t, 4.0) 135 | } 136 | 137 | function quarticOut(t) { 138 | return Math.pow(t - 1.0, 3.0) * (1.0 - t) + 1.0 139 | } 140 | 141 | function qinticInOut(t) { 142 | if ( ( t *= 2 ) < 1 ) return 0.5 * t * t * t * t * t 143 | return 0.5 * ( ( t -= 2 ) * t * t * t * t + 2 ) 144 | } 145 | 146 | function qinticIn(t) { 147 | return t * t * t * t * t 148 | } 149 | 150 | function qinticOut(t) { 151 | return --t * t * t * t * t + 1 152 | } 153 | 154 | function sineInOut(t) { 155 | return -0.5 * (Math.cos(Math.PI*t) - 1) 156 | } 157 | 158 | function sineIn (t) { 159 | var v = Math.cos(t * Math.PI * 0.5); 160 | if (Math.abs(v) < 1e-14) return 1 161 | else return 1 - v 162 | } 163 | 164 | function sineOut(t) { 165 | return Math.sin(t * Math.PI/2) 166 | } 167 | 168 | exports.backInOut = backInOut; 169 | exports.backIn = backIn; 170 | exports.backOut = backOut; 171 | exports.bounceInOut = bounceInOut; 172 | exports.bounceIn = bounceIn; 173 | exports.bounceOut = bounceOut; 174 | exports.circInOut = circInOut; 175 | exports.circIn = circIn; 176 | exports.circOut = circOut; 177 | exports.cubicInOut = cubicInOut; 178 | exports.cubicIn = cubicIn; 179 | exports.cubicOut = cubicOut; 180 | exports.elasticInOut = elasticInOut; 181 | exports.elasticIn = elasticIn; 182 | exports.elasticOut = elasticOut; 183 | exports.expoInOut = expoInOut; 184 | exports.expoIn = expoIn; 185 | exports.expoOut = expoOut; 186 | exports.linear = linear; 187 | exports.quadInOut = quadInOut; 188 | exports.quadIn = quadIn; 189 | exports.quadOut = quadOut; 190 | exports.quartInOut = quarticInOut; 191 | exports.quartIn = quarticIn; 192 | exports.quartOut = quarticOut; 193 | exports.quintInOut = qinticInOut; 194 | exports.quintIn = qinticIn; 195 | exports.quintOut = qinticOut; 196 | exports.sineInOut = sineInOut; 197 | exports.sineIn = sineIn; 198 | exports.sineOut = sineOut; 199 | -------------------------------------------------------------------------------- /linear.js: -------------------------------------------------------------------------------- 1 | function linear(t) { 2 | return t 3 | } 4 | 5 | module.exports = linear; 6 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "eases", 3 | "version": "1.0.9", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "deep-equal": { 8 | "version": "0.2.2", 9 | "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-0.2.2.tgz", 10 | "integrity": "sha1-hLdFiW80xoTpjyzg5Cq69Du6AX0=", 11 | "dev": true 12 | }, 13 | "defined": { 14 | "version": "0.0.0", 15 | "resolved": "https://registry.npmjs.org/defined/-/defined-0.0.0.tgz", 16 | "integrity": "sha1-817qfXBekzuvE7LwOz+D2SFAOz4=", 17 | "dev": true 18 | }, 19 | "glob": { 20 | "version": "3.2.11", 21 | "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz", 22 | "integrity": "sha1-Spc/Y1uRkPcV0QmH1cAP0oFevj0=", 23 | "dev": true, 24 | "requires": { 25 | "inherits": "2.0.3", 26 | "minimatch": "0.3.0" 27 | } 28 | }, 29 | "inherits": { 30 | "version": "2.0.3", 31 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 32 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", 33 | "dev": true 34 | }, 35 | "lru-cache": { 36 | "version": "2.7.3", 37 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", 38 | "integrity": "sha1-bUUk6LlV+V1PW1iFHOId1y+06VI=", 39 | "dev": true 40 | }, 41 | "minimatch": { 42 | "version": "0.3.0", 43 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz", 44 | "integrity": "sha1-J12O2qxPG7MyZHIInnlJyDlGmd0=", 45 | "dev": true, 46 | "requires": { 47 | "lru-cache": "2.7.3", 48 | "sigmund": "1.0.1" 49 | } 50 | }, 51 | "object-inspect": { 52 | "version": "0.4.0", 53 | "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-0.4.0.tgz", 54 | "integrity": "sha1-9RV8EWwUVbJDsG7pdwM5LFrYn+w=", 55 | "dev": true 56 | }, 57 | "resumer": { 58 | "version": "0.0.0", 59 | "resolved": "https://registry.npmjs.org/resumer/-/resumer-0.0.0.tgz", 60 | "integrity": "sha1-8ej0YeQGS6Oegq883CqMiT0HZ1k=", 61 | "dev": true, 62 | "requires": { 63 | "through": "2.3.8" 64 | } 65 | }, 66 | "rollup": { 67 | "version": "0.41.6", 68 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-0.41.6.tgz", 69 | "integrity": "sha1-4NBUl4d6OYwQTYFtJzOnGKepTio=", 70 | "dev": true, 71 | "requires": { 72 | "source-map-support": "0.4.18" 73 | } 74 | }, 75 | "sigmund": { 76 | "version": "1.0.1", 77 | "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", 78 | "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=", 79 | "dev": true 80 | }, 81 | "source-map": { 82 | "version": "0.5.7", 83 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", 84 | "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", 85 | "dev": true 86 | }, 87 | "source-map-support": { 88 | "version": "0.4.18", 89 | "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", 90 | "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", 91 | "dev": true, 92 | "requires": { 93 | "source-map": "0.5.7" 94 | } 95 | }, 96 | "tape": { 97 | "version": "2.13.4", 98 | "resolved": "https://registry.npmjs.org/tape/-/tape-2.13.4.tgz", 99 | "integrity": "sha1-Wk0nKgKeq0qZJr9KbWBqdzQ+xJA=", 100 | "dev": true, 101 | "requires": { 102 | "deep-equal": "0.2.2", 103 | "defined": "0.0.0", 104 | "glob": "3.2.11", 105 | "inherits": "2.0.3", 106 | "object-inspect": "0.4.0", 107 | "resumer": "0.0.0", 108 | "through": "2.3.8" 109 | } 110 | }, 111 | "through": { 112 | "version": "2.3.8", 113 | "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", 114 | "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", 115 | "dev": true 116 | } 117 | } 118 | } 119 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "eases-jsnext", 3 | "version": "1.0.10", 4 | "description": "grab bag of easing equations", 5 | "main": "dist/eases.umd.js", 6 | "module": "dist/eases.es.js", 7 | "license": "MIT", 8 | "author": "Matt DesLauriers ", 9 | "dependencies": {}, 10 | "devDependencies": { 11 | "rollup": "^0.41.6", 12 | "tape": "~2.13.2" 13 | }, 14 | "scripts": { 15 | "test": "node test.js", 16 | "pretest": "npm run build", 17 | "build": "node scripts/build.js && uglifyjs dist/eases.umd.js -cm > dist/eases.umd.min.js", 18 | "prepublish": "npm run build", 19 | "dev": "beefy demo/index" 20 | }, 21 | "testling": { 22 | "files": "test.js", 23 | "browsers": [ 24 | "ie/6..latest", 25 | "chrome/22..latest", 26 | "firefox/16..latest", 27 | "safari/latest", 28 | "opera/11.0..latest", 29 | "iphone/6", 30 | "ipad/6", 31 | "android-browser/latest" 32 | ] 33 | }, 34 | "repository": { 35 | "type": "git", 36 | "url": "git://github.com/rollup/eases-jsnext.git" 37 | }, 38 | "homepage": "https://github.com/rollup/eases-jsnext", 39 | "bugs": { 40 | "url": "https://github.com/rollup/eases-jsnext/issues" 41 | }, 42 | "keywords": [ 43 | "ease", 44 | "eases", 45 | "robert", 46 | "penner", 47 | "easing", 48 | "easings", 49 | "linear", 50 | "lerp", 51 | "animation", 52 | "tween", 53 | "anim", 54 | "animations", 55 | "tweening", 56 | "tweens", 57 | "function", 58 | "functions", 59 | "expo", 60 | "quint", 61 | "quadratic" 62 | ] 63 | } 64 | -------------------------------------------------------------------------------- /quad-in-out.js: -------------------------------------------------------------------------------- 1 | function quadInOut(t) { 2 | t /= 0.5; 3 | if (t < 1) return 0.5*t*t 4 | t--; 5 | return -0.5 * (t*(t-2) - 1) 6 | } 7 | 8 | module.exports = quadInOut; 9 | -------------------------------------------------------------------------------- /quad-in.js: -------------------------------------------------------------------------------- 1 | function quadIn(t) { 2 | return t * t 3 | } 4 | 5 | module.exports = quadIn; 6 | -------------------------------------------------------------------------------- /quad-out.js: -------------------------------------------------------------------------------- 1 | function quadOut(t) { 2 | return -t * (t - 2.0) 3 | } 4 | 5 | module.exports = quadOut; 6 | -------------------------------------------------------------------------------- /quart-in-out.js: -------------------------------------------------------------------------------- 1 | function quarticInOut(t) { 2 | return t < 0.5 3 | ? +8.0 * Math.pow(t, 4.0) 4 | : -8.0 * Math.pow(t - 1.0, 4.0) + 1.0 5 | } 6 | 7 | module.exports = quarticInOut; 8 | -------------------------------------------------------------------------------- /quart-in.js: -------------------------------------------------------------------------------- 1 | function quarticIn(t) { 2 | return Math.pow(t, 4.0) 3 | } 4 | 5 | module.exports = quarticIn; 6 | -------------------------------------------------------------------------------- /quart-out.js: -------------------------------------------------------------------------------- 1 | function quarticOut(t) { 2 | return Math.pow(t - 1.0, 3.0) * (1.0 - t) + 1.0 3 | } 4 | 5 | module.exports = quarticOut; 6 | -------------------------------------------------------------------------------- /quint-in-out.js: -------------------------------------------------------------------------------- 1 | function qinticInOut(t) { 2 | if ( ( t *= 2 ) < 1 ) return 0.5 * t * t * t * t * t 3 | return 0.5 * ( ( t -= 2 ) * t * t * t * t + 2 ) 4 | } 5 | 6 | module.exports = qinticInOut; 7 | -------------------------------------------------------------------------------- /quint-in.js: -------------------------------------------------------------------------------- 1 | function qinticIn(t) { 2 | return t * t * t * t * t 3 | } 4 | 5 | module.exports = qinticIn; 6 | -------------------------------------------------------------------------------- /quint-out.js: -------------------------------------------------------------------------------- 1 | function qinticOut(t) { 2 | return --t * t * t * t * t + 1 3 | } 4 | 5 | module.exports = qinticOut; 6 | -------------------------------------------------------------------------------- /scripts/build.js: -------------------------------------------------------------------------------- 1 | const fs = require( 'fs' ); 2 | const path = require( 'path' ); 3 | const rollup = require( 'rollup' ); 4 | 5 | const pkg = require( '../package.json' ); 6 | 7 | const modules = fs.readdirSync( 'src' ).filter( function ( file ) { 8 | return path.extname( file ) === '.js'; 9 | }); 10 | 11 | // for each file, generated a CommonJS module in the 12 | // root directory, so people can do things like 13 | // const bounceOut = require( 'eases/bounce-out' ) 14 | const lib = modules.reduce( function ( promise, module ) { 15 | return promise.then( function () { 16 | return rollup.rollup({ entry: 'src/' + module }) 17 | .then( function ( bundle ) { 18 | return bundle.write({ 19 | dest: module, 20 | format: 'cjs', 21 | useStrict: false 22 | }); 23 | }); 24 | }); 25 | }, { then: function ( fn ) { return fn(); } }); 26 | 27 | // generate a UMD build and an ES6 build containing 28 | // the whole library 29 | lib.then( function () { 30 | rollup.rollup({ entry: 'src/index.js' }) 31 | .then( function ( bundle ) { 32 | bundle.write({ 33 | dest: pkg.main, 34 | format: 'umd', 35 | moduleName: 'eases' 36 | }); 37 | 38 | bundle.write({ 39 | dest: pkg.module, 40 | format: 'es' 41 | }); 42 | }); 43 | }); 44 | -------------------------------------------------------------------------------- /sine-in-out.js: -------------------------------------------------------------------------------- 1 | function sineInOut(t) { 2 | return -0.5 * (Math.cos(Math.PI*t) - 1) 3 | } 4 | 5 | module.exports = sineInOut; 6 | -------------------------------------------------------------------------------- /sine-in.js: -------------------------------------------------------------------------------- 1 | function sineIn (t) { 2 | var v = Math.cos(t * Math.PI * 0.5); 3 | if (Math.abs(v) < 1e-14) return 1 4 | else return 1 - v 5 | } 6 | 7 | module.exports = sineIn; 8 | -------------------------------------------------------------------------------- /sine-out.js: -------------------------------------------------------------------------------- 1 | function sineOut(t) { 2 | return Math.sin(t * Math.PI/2) 3 | } 4 | 5 | module.exports = sineOut; 6 | -------------------------------------------------------------------------------- /src/back-in-out.js: -------------------------------------------------------------------------------- 1 | export default function backInOut(t) { 2 | var s = 1.70158 * 1.525 3 | if ((t *= 2) < 1) 4 | return 0.5 * (t * t * ((s + 1) * t - s)) 5 | return 0.5 * ((t -= 2) * t * ((s + 1) * t + s) + 2) 6 | } 7 | -------------------------------------------------------------------------------- /src/back-in.js: -------------------------------------------------------------------------------- 1 | export default function backIn(t) { 2 | var s = 1.70158 3 | return t * t * ((s + 1) * t - s) 4 | } 5 | -------------------------------------------------------------------------------- /src/back-out.js: -------------------------------------------------------------------------------- 1 | export default function backOut(t) { 2 | var s = 1.70158 3 | return --t * t * ((s + 1) * t + s) + 1 4 | } 5 | -------------------------------------------------------------------------------- /src/bounce-in-out.js: -------------------------------------------------------------------------------- 1 | import bounceOut from './bounce-out' 2 | 3 | export default function bounceInOut(t) { 4 | return t < 0.5 5 | ? 0.5 * (1.0 - bounceOut(1.0 - t * 2.0)) 6 | : 0.5 * bounceOut(t * 2.0 - 1.0) + 0.5 7 | } 8 | -------------------------------------------------------------------------------- /src/bounce-in.js: -------------------------------------------------------------------------------- 1 | import bounceOut from './bounce-out' 2 | 3 | export default function bounceIn(t) { 4 | return 1.0 - bounceOut(1.0 - t) 5 | } 6 | -------------------------------------------------------------------------------- /src/bounce-out.js: -------------------------------------------------------------------------------- 1 | export default function bounceOut(t) { 2 | var a = 4.0 / 11.0 3 | var b = 8.0 / 11.0 4 | var c = 9.0 / 10.0 5 | 6 | var ca = 4356.0 / 361.0 7 | var cb = 35442.0 / 1805.0 8 | var cc = 16061.0 / 1805.0 9 | 10 | var t2 = t * t 11 | 12 | return t < a 13 | ? 7.5625 * t2 14 | : t < b 15 | ? 9.075 * t2 - 9.9 * t + 3.4 16 | : t < c 17 | ? ca * t2 - cb * t + cc 18 | : 10.8 * t * t - 20.52 * t + 10.72 19 | } 20 | -------------------------------------------------------------------------------- /src/circ-in-out.js: -------------------------------------------------------------------------------- 1 | export default function circInOut(t) { 2 | if ((t *= 2) < 1) return -0.5 * (Math.sqrt(1 - t * t) - 1) 3 | return 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1) 4 | } 5 | -------------------------------------------------------------------------------- /src/circ-in.js: -------------------------------------------------------------------------------- 1 | export default function circIn(t) { 2 | return 1.0 - Math.sqrt(1.0 - t * t) 3 | } 4 | -------------------------------------------------------------------------------- /src/circ-out.js: -------------------------------------------------------------------------------- 1 | export default function circOut(t) { 2 | return Math.sqrt(1 - ( --t * t )) 3 | } 4 | -------------------------------------------------------------------------------- /src/cubic-in-out.js: -------------------------------------------------------------------------------- 1 | export default function cubicInOut(t) { 2 | return t < 0.5 3 | ? 4.0 * t * t * t 4 | : 0.5 * Math.pow(2.0 * t - 2.0, 3.0) + 1.0 5 | } 6 | -------------------------------------------------------------------------------- /src/cubic-in.js: -------------------------------------------------------------------------------- 1 | export default function cubicIn(t) { 2 | return t * t * t 3 | } 4 | -------------------------------------------------------------------------------- /src/cubic-out.js: -------------------------------------------------------------------------------- 1 | export default function cubicOut(t) { 2 | var f = t - 1.0 3 | return f * f * f + 1.0 4 | } 5 | -------------------------------------------------------------------------------- /src/elastic-in-out.js: -------------------------------------------------------------------------------- 1 | export default function elasticInOut(t) { 2 | return t < 0.5 3 | ? 0.5 * Math.sin(+13.0 * Math.PI/2 * 2.0 * t) * Math.pow(2.0, 10.0 * (2.0 * t - 1.0)) 4 | : 0.5 * Math.sin(-13.0 * Math.PI/2 * ((2.0 * t - 1.0) + 1.0)) * Math.pow(2.0, -10.0 * (2.0 * t - 1.0)) + 1.0 5 | } 6 | -------------------------------------------------------------------------------- /src/elastic-in.js: -------------------------------------------------------------------------------- 1 | export default function elasticIn(t) { 2 | return Math.sin(13.0 * t * Math.PI/2) * Math.pow(2.0, 10.0 * (t - 1.0)) 3 | } 4 | -------------------------------------------------------------------------------- /src/elastic-out.js: -------------------------------------------------------------------------------- 1 | export default function elasticOut(t) { 2 | return Math.sin(-13.0 * (t + 1.0) * Math.PI/2) * Math.pow(2.0, -10.0 * t) + 1.0 3 | } 4 | -------------------------------------------------------------------------------- /src/expo-in-out.js: -------------------------------------------------------------------------------- 1 | export default function expoInOut(t) { 2 | return (t === 0.0 || t === 1.0) 3 | ? t 4 | : t < 0.5 5 | ? +0.5 * Math.pow(2.0, (20.0 * t) - 10.0) 6 | : -0.5 * Math.pow(2.0, 10.0 - (t * 20.0)) + 1.0 7 | } 8 | -------------------------------------------------------------------------------- /src/expo-in.js: -------------------------------------------------------------------------------- 1 | export default function expoIn(t) { 2 | return t === 0.0 ? t : Math.pow(2.0, 10.0 * (t - 1.0)) 3 | } 4 | -------------------------------------------------------------------------------- /src/expo-out.js: -------------------------------------------------------------------------------- 1 | export default function expoOut(t) { 2 | return t === 1.0 ? t : 1.0 - Math.pow(2.0, -10.0 * t) 3 | } 4 | -------------------------------------------------------------------------------- /src/index.js: -------------------------------------------------------------------------------- 1 | export { default as backInOut } from './back-in-out'; 2 | export { default as backIn } from './back-in'; 3 | export { default as backOut } from './back-out'; 4 | export { default as bounceInOut } from './bounce-in-out'; 5 | export { default as bounceIn } from './bounce-in'; 6 | export { default as bounceOut } from './bounce-out'; 7 | export { default as circInOut } from './circ-in-out'; 8 | export { default as circIn } from './circ-in'; 9 | export { default as circOut } from './circ-out'; 10 | export { default as cubicInOut } from './cubic-in-out'; 11 | export { default as cubicIn } from './cubic-in'; 12 | export { default as cubicOut } from './cubic-out'; 13 | export { default as elasticInOut } from './elastic-in-out'; 14 | export { default as elasticIn } from './elastic-in'; 15 | export { default as elasticOut } from './elastic-out'; 16 | export { default as expoInOut } from './expo-in-out'; 17 | export { default as expoIn } from './expo-in'; 18 | export { default as expoOut } from './expo-out'; 19 | export { default as linear } from './linear'; 20 | export { default as quadInOut } from './quad-in-out'; 21 | export { default as quadIn } from './quad-in'; 22 | export { default as quadOut } from './quad-out'; 23 | export { default as quartInOut } from './quart-in-out'; 24 | export { default as quartIn } from './quart-in'; 25 | export { default as quartOut } from './quart-out'; 26 | export { default as quintInOut } from './quint-in-out'; 27 | export { default as quintIn } from './quint-in'; 28 | export { default as quintOut } from './quint-out'; 29 | export { default as sineInOut } from './sine-in-out'; 30 | export { default as sineIn } from './sine-in'; 31 | export { default as sineOut } from './sine-out'; 32 | -------------------------------------------------------------------------------- /src/linear.js: -------------------------------------------------------------------------------- 1 | export default function linear(t) { 2 | return t 3 | } 4 | -------------------------------------------------------------------------------- /src/quad-in-out.js: -------------------------------------------------------------------------------- 1 | export default function quadInOut(t) { 2 | t /= 0.5 3 | if (t < 1) return 0.5*t*t 4 | t-- 5 | return -0.5 * (t*(t-2) - 1) 6 | } 7 | -------------------------------------------------------------------------------- /src/quad-in.js: -------------------------------------------------------------------------------- 1 | export default function quadIn(t) { 2 | return t * t 3 | } 4 | -------------------------------------------------------------------------------- /src/quad-out.js: -------------------------------------------------------------------------------- 1 | export default function quadOut(t) { 2 | return -t * (t - 2.0) 3 | } 4 | -------------------------------------------------------------------------------- /src/quart-in-out.js: -------------------------------------------------------------------------------- 1 | export default function quarticInOut(t) { 2 | return t < 0.5 3 | ? +8.0 * Math.pow(t, 4.0) 4 | : -8.0 * Math.pow(t - 1.0, 4.0) + 1.0 5 | } 6 | -------------------------------------------------------------------------------- /src/quart-in.js: -------------------------------------------------------------------------------- 1 | export default function quarticIn(t) { 2 | return Math.pow(t, 4.0) 3 | } 4 | -------------------------------------------------------------------------------- /src/quart-out.js: -------------------------------------------------------------------------------- 1 | export default function quarticOut(t) { 2 | return Math.pow(t - 1.0, 3.0) * (1.0 - t) + 1.0 3 | } 4 | -------------------------------------------------------------------------------- /src/quint-in-out.js: -------------------------------------------------------------------------------- 1 | export default function qinticInOut(t) { 2 | if ( ( t *= 2 ) < 1 ) return 0.5 * t * t * t * t * t 3 | return 0.5 * ( ( t -= 2 ) * t * t * t * t + 2 ) 4 | } 5 | -------------------------------------------------------------------------------- /src/quint-in.js: -------------------------------------------------------------------------------- 1 | export default function qinticIn(t) { 2 | return t * t * t * t * t 3 | } 4 | -------------------------------------------------------------------------------- /src/quint-out.js: -------------------------------------------------------------------------------- 1 | export default function qinticOut(t) { 2 | return --t * t * t * t * t + 1 3 | } 4 | -------------------------------------------------------------------------------- /src/sine-in-out.js: -------------------------------------------------------------------------------- 1 | export default function sineInOut(t) { 2 | return -0.5 * (Math.cos(Math.PI*t) - 1) 3 | } 4 | -------------------------------------------------------------------------------- /src/sine-in.js: -------------------------------------------------------------------------------- 1 | export default function sineIn (t) { 2 | var v = Math.cos(t * Math.PI * 0.5) 3 | if (Math.abs(v) < 1e-14) return 1 4 | else return 1 - v 5 | } 6 | -------------------------------------------------------------------------------- /src/sine-out.js: -------------------------------------------------------------------------------- 1 | export default function sineOut(t) { 2 | return Math.sin(t * Math.PI/2) 3 | } 4 | -------------------------------------------------------------------------------- /test.js: -------------------------------------------------------------------------------- 1 | // Could do with proper tests... 2 | 3 | var eases = require('./') 4 | var test = require('tape').test 5 | 6 | var outsideRange = [ 7 | 'elasticIn', 'elasticOut', 'elasticInOut', 8 | 'backIn', 'backOut', 'backInOut', 9 | 'bounceIn', 'bounceOut', 'bounceInOut', 10 | ] 11 | 12 | test('eases return number between 0 and 1', function (t) { 13 | for (var k in eases) { 14 | var f = eases[k] 15 | if (outsideRange.indexOf(k) === -1) { 16 | t.equal(f(1), 1, k) 17 | t.equal(f(0), 0, k) 18 | } 19 | } 20 | t.end() 21 | }) 22 | --------------------------------------------------------------------------------