forked from bendc/animateplus
-
Notifications
You must be signed in to change notification settings - Fork 0
/
animate.min.js
28 lines (28 loc) · 13.4 KB
/
animate.min.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
var animate=function(){function _slicedToArray(arr,i){return arr}function _toConsumableArray(arr){if(Array.isArray(arr))return arr;if(arr instanceof NodeList||arr instanceof HTMLCollection)return Array.prototype.slice.call(arr);var els=[];for(var el of arr)els.push(el);return els}var _ref;var compose=function compose(){for(var _len=arguments.length,funcs=Array(_len),_key=0;_key<_len;_key++)funcs[_key]=arguments[_key];return function(value){return funcs.reduce(function(a,b){return b(a)},value)}};var not=
function not(func){return function(){for(var _len2=arguments.length,args=Array(_len2),_key2=0;_key2<_len2;_key2++)args[_key2]=arguments[_key2];return!func.apply(undefined,args)}};var easing={linear:function linear(t,b,c,d){return b+t/d*c},easeInQuad:function easeInQuad(t,b,c,d){return c*(t/=d)*t+b},easeInCubic:function easeInCubic(t,b,c,d){return c*(t/=d)*t*t+b},easeInQuart:function easeInQuart(t,b,c,d){return c*(t/=d)*t*t*t+b},easeInQuint:function easeInQuint(t,b,c,d){return c*(t/=d)*t*t*t*t+b},
easeInSine:function easeInSine(t,b,c,d){return-c*Math.cos(t/d*(Math.PI/2))+c+b},easeInExpo:function easeInExpo(t,b,c,d){return t==0?b:c*Math.pow(2,10*(t/d-1))+b},easeInCirc:function easeInCirc(t,b,c,d){return-c*(Math.sqrt(1-(t/=d)*t)-1)+b},easeInElastic:function easeInElastic(t,b,c,d){var s=1.70158;var p=0;var a=c;if(t==0)return b;if((t/=d)==1)return b+c;if(!p)p=d*.3;if(a<Math.abs(c)){a=c;var s=p/4}else var s=p/(2*Math.PI)*Math.asin(c/a);return-(a*Math.pow(2,10*(t-=1))*Math.sin((t*d-s)*(2*Math.PI)/
p))+b},easeInBack:function easeInBack(t,b,c,d,s){if(s==undefined)s=1.70158;return c*(t/=d)*t*((s+1)*t-s)+b},easeOutQuad:function easeOutQuad(t,b,c,d){return-c*(t/=d)*(t-2)+b},easeOutCubic:function easeOutCubic(t,b,c,d){return c*((t=t/d-1)*t*t+1)+b},easeOutQuart:function easeOutQuart(t,b,c,d){return-c*((t=t/d-1)*t*t*t-1)+b},easeOutQuint:function easeOutQuint(t,b,c,d){return c*((t=t/d-1)*t*t*t*t+1)+b},easeOutSine:function easeOutSine(t,b,c,d){return c*Math.sin(t/d*(Math.PI/2))+b},easeOutExpo:function easeOutExpo(t,
b,c,d){return t==d?b+c:c*(-Math.pow(2,-10*t/d)+1)+b},easeOutCirc:function easeOutCirc(t,b,c,d){return c*Math.sqrt(1-(t=t/d-1)*t)+b},easeOutElastic:function easeOutElastic(t,b,c,d){var s=1.70158;var p=0;var a=c;if(t==0)return b;if((t/=d)==1)return b+c;if(!p)p=d*.3;if(a<Math.abs(c)){a=c;var s=p/4}else var s=p/(2*Math.PI)*Math.asin(c/a);return a*Math.pow(2,-10*t)*Math.sin((t*d-s)*(2*Math.PI)/p)+c+b},easeOutBack:function easeOutBack(t,b,c,d,s){if(s==undefined)s=1.70158;return c*((t=t/d-1)*t*((s+1)*t+
s)+1)+b},easeOutBounce:function easeOutBounce(t,b,c,d){if((t/=d)<1/2.75)return c*(7.5625*t*t)+b;else if(t<2/2.75)return c*(7.5625*(t-=1.5/2.75)*t+.75)+b;else if(t<2.5/2.75)return c*(7.5625*(t-=2.25/2.75)*t+.9375)+b;else return c*(7.5625*(t-=2.625/2.75)*t+.984375)+b},easeInOutQuad:function easeInOutQuad(t,b,c,d){if((t/=d/2)<1)return c/2*t*t+b;return-c/2*(--t*(t-2)-1)+b},easeInOutCubic:function easeInOutCubic(t,b,c,d){if((t/=d/2)<1)return c/2*t*t*t+b;return c/2*((t-=2)*t*t+2)+b},easeInOutQuart:function easeInOutQuart(t,
b,c,d){if((t/=d/2)<1)return c/2*t*t*t*t+b;return-c/2*((t-=2)*t*t*t-2)+b},easeInOutQuint:function easeInOutQuint(t,b,c,d){if((t/=d/2)<1)return c/2*t*t*t*t*t+b;return c/2*((t-=2)*t*t*t*t+2)+b},easeInOutSine:function easeInOutSine(t,b,c,d){return-c/2*(Math.cos(Math.PI*t/d)-1)+b},easeInOutExpo:function easeInOutExpo(t,b,c,d){if(t==0)return b;if(t==d)return b+c;if((t/=d/2)<1)return c/2*Math.pow(2,10*(t-1))+b;return c/2*(-Math.pow(2,-10*--t)+2)+b},easeInOutCirc:function easeInOutCirc(t,b,c,d){if((t/=d/
2)<1)return-c/2*(Math.sqrt(1-t*t)-1)+b;return c/2*(Math.sqrt(1-(t-=2)*t)+1)+b},easeInOutElastic:function easeInOutElastic(t,b,c,d){var s=1.70158;var p=0;var a=c;if(t==0)return b;if((t/=d/2)==2)return b+c;if(!p)p=d*(.3*1.5);if(a<Math.abs(c)){a=c;var s=p/4}else var s=p/(2*Math.PI)*Math.asin(c/a);if(t<1)return-.5*(a*Math.pow(2,10*(t-=1))*Math.sin((t*d-s)*(2*Math.PI)/p))+b;return a*Math.pow(2,-10*(t-=1))*Math.sin((t*d-s)*(2*Math.PI)/p)*.5+c+b},easeInOutBack:function easeInOutBack(t,b,c,d,s){if(s==undefined)s=
1.70158;if((t/=d/2)<1)return c/2*(t*t*(((s*=1.525)+1)*t-s))+b;return c/2*((t-=2)*t*(((s*=1.525)+1)*t+s)+2)+b}};var first=function first(arr){return arr[0]};var last=function last(arr){return first(arr.slice(-1))};var tail=function tail(arr){return arr.slice(1)};var flatten=function flatten(arr){return arr.reduce(function(a,b){return a.concat(b)})};var contains=function(){return Array.prototype.includes?function(arr,value){return arr.includes(value)}:function(arr,value){return arr.some(function(el){return el===
value})}}();var difference=function difference(arr){for(var _len3=arguments.length,others=Array(_len3>1?_len3-1:0),_key3=1;_key3<_len3;_key3++)others[_key3-1]=arguments[_key3];var combined=flatten(others);return arr.filter(function(el){return not(contains)(combined,el)})};var getKeys=function(){if(Array.from)return function(map){return Array.from(map.keys())};return function(map){var keys=[];map.forEach(function(value,key){return keys.push(key)});return keys}}();var toMap=function(){var convert=function convert(obj){var map=
new Map;Object.keys(obj).forEach(function(key){return map.set(key,obj[key])});return map};return function(obj){return obj instanceof Map?obj:convert(obj)}}();var cloneMap=function(){try{new Map(new Map)}catch(e){return function(map){var clone=new Map;map.forEach(function(value,key){return clone.set(key,value)});return clone}}return function(map){return new Map(map)}}();var getElements=function getElements(el){return domArray(typeof el=="string"?select(el):el)};var select=function select(selector){if(/^[\#.]?[\w-]+$/.test(selector)){if(first(selector)==
".")return document.getElementsByClassName(tail(selector));if(first(selector)=="#")return document.getElementById(tail(selector));return document.getElementsByTagName(selector)}return document.querySelectorAll(selector)};var domArray=function domArray(obj){if(Array.isArray(obj))return obj;if(obj.nodeType)return[obj];if(obj instanceof NodeList||obj instanceof HTMLCollection)return[].concat(_toConsumableArray(obj));return obj.get()};var defaults=new Map;["el","delay","begin","complete","loop","direction"].forEach(function(key){return defaults.set(key,
null)});defaults.set("duration",1E3);defaults.set("easing","easeOutElastic");var
fillBlankParams=function(){var required=getKeys(defaults).filter(function(key){return defaults.get(key)});var isFilled=function isFilled(params){return required.every(function(param){return params.has(param)})};var fill=function fill(params){var map=cloneMap(params);required.forEach(function(param){if(!map.has(param))map.set(param,defaults.get(param))});return map};return function(params){return isFilled(params)?
params:fill(params)}}();var buildMissingArrays=function(){var propIsArray=function propIsArray(params){return function(prop){return Array.isArray(params.get(prop))}};var isValid=function isValid(params){return getCSSprops(params).every(propIsArray(params))};var missingArrays=function missingArrays(params){return getCSSprops(params).filter(not(propIsArray(params)))};return function(params){if(isValid(params))return params;var map=cloneMap(params);missingArrays(map).forEach(function(key){return map.set(key,
[defaultCSSvalues.get(key),map.get(key)])});return map}}();var ensureRGB=function(){var hasHex=function hasHex(params){return function(prop){return params.get(prop).some(isHex)}};var isValid=function isValid(params){return!getSVGprops(params).some(hasHex(params))};var needConvert=function needConvert(params){return getSVGprops(params).filter(hasHex(params))};return function(params){if(isValid(params))return params;var map=cloneMap(params);needConvert(params).forEach(function(key){return map.set(key,
map.get(key).map(toRGB))});return map}}();var setElements=function setElements(params){var map=cloneMap(params);map.set("el",getElements(params.get("el")));return map};var reverseDirection=function reverseDirection(params){var map=cloneMap(params);getAnimatedProps(params).forEach(function(prop){return map.set(prop,map.get(prop).slice().reverse())});return map};var setInitialDirection=function setInitialDirection(params){return params.get("direction")=="reverse"?reverseDirection(params):params};var validateParams=
compose(toMap,fillBlankParams,buildMissingArrays,ensureRGB,setElements,setInitialDirection);var getAnimatedProps=function(){var excluded=getKeys(defaults);var isProp=function isProp(param){return not(contains)(excluded,param)};return function(params){return getKeys(params).filter(isProp)}}();var getCSSprops=function(){var isCSSprop=function isCSSprop(prop){return contains(supportedCSSprops,prop)};return function(params){return getKeys(params).filter(isCSSprop)}}();var getSVGprops=function getSVGprops(params){return difference(getAnimatedProps(params),
getCSSprops(params))};var supportedCSSprops=(_ref=["opacity","skewX","skewY","perspective"]).concat.apply(_ref,_toConsumableArray(["translate","scale","rotate"].map(function(func){return["X","Y","Z"].map(function(axis){return func+axis})})));var defaultCSSvalues=new Map;supportedCSSprops.forEach(function(prop){return defaultCSSvalues.set(prop,contains(["opacity","scaleX","scaleY"],prop)?1:0)});var isTransformFunction=function(){var transformFunctions=supportedCSSprops.filter(function(prop){return prop!=
"opacity"});return function(str){return contains(transformFunctions,str)}}();var combineTransformFunctions=function combineTransformFunctions(transformFunctions,values){return transformFunctions.reduce(function(a,b,i){var transformFunction=""+b+"("+addUnit(b,values[i])+")";return a?""+a+" "+transformFunction:transformFunction},null)};var addUnit=function(){var hasUnit=function hasUnit(value){return/\D$/.test(value)};return function(transformFunction,value){if(hasUnit(value)||/scale/.test(transformFunction))return value;
if(/rotate|skew/.test(transformFunction))return""+value+"deg";return""+value+"px"}}();var recomposeValue=function recomposeValue(digits,others){return others.reduce(function(a,b,i){return a+digits[i-1]+b})};var splitDigits=function(){var re=/-?\d*\.?\d+/g;var toStr=function toStr(value){return typeof value=="string"?value:String(value)};return function(value){var split=new Map;split.set("digits",toStr(value).match(re).map(Number));split.set("others",toStr(value).split(re));return split}}();var isHex=
function isHex(val){return/^#/.test(val)};var isRGB=function isRGB(val){return/^rgb/.test(val)};var toRGB=function(){var expand=function expand(hex){return hex.length<7?hex.split("").reduce(function(a,b){return a+b+b}):hex};var convert=function convert(hex){return hex.match(/[\d\w]{2}/g).map(function(val){return parseInt(val,16)})};return function(hex){if(isRGB(hex))return hex;var _compose=compose(expand,convert)(hex);var _compose2=_slicedToArray(_compose,3);var r=_compose2[0];var g=_compose2[1];
var b=_compose2[2];return"rgb("+r+", "+g+", "+b+")"}}();var getProgress=function(){var colorCheck=compose(first,isRGB);return function(params,elapsed){return function(prop){var _params$get$map=params.get(prop).map(splitDigits);var _params$get$map2=_slicedToArray(_params$get$map,2);var from=_params$get$map2[0];var to=_params$get$map2[1];var isColor=colorCheck(params.get(prop));var progress=to.get("digits").map(function(digit,i){var start=from.get("digits")[i];if(start==digit)return start;var end=digit-
start;var result=easing[params.get("easing")](elapsed,start,end,params.get("duration"));return isColor?Math.round(result):result});return recomposeValue(progress,to.get("others"))}}}();var getFinalValues=function getFinalValues(params){return function(prop){return recomposeValue.apply(undefined,_toConsumableArray(compose(last,splitDigits)(params.get(prop)).values()))}};var setProgress=function(){var transform;return function(el,props,progress){var transforms;props.forEach(function(prop,i){if(prop==
"opacity"){el.style.opacity=progress[i];return}if(isTransformFunction(prop)){if(!transforms){transforms=new Map;["functions","values"].forEach(function(key){return transforms.set(key,[])})}transforms.get("functions").push(prop);transforms.get("values").push(progress[i]);return}el.setAttribute(prop,progress[i])});if(!transforms)return;if(!transform)transform="transform"in document.body.style?"transform":"-webkit-transform";el.style[transform]=combineTransformFunctions.apply(undefined,_toConsumableArray(transforms.values()))}}();
var begin=function(){var start=function start(callback,params){if(params.get("begin"))params.get("begin")(params.get("el"));requestAnimationFrame(callback)};return function(callback,params){return params.get("delay")?setTimeout(function(){return start(callback,params)},params.get("delay")):start(callback,params)}}();var complete=function complete(params){if(params.get("complete"))params.get("complete")(params.get("el"));if(params.get("loop"))loop(params)};var loop=function loop(params){return animate(function(){if(params.get("direction")==
"alternate")return reverseDirection(params);if(params.get("direction")=="reverse"){var map=cloneMap(params);map["delete"]("direction");return map}return params}())};return function(params){var validatedParams=validateParams(params);var animatedProps=getAnimatedProps(validatedParams);var time=new Map;var step=function step(now){if(!time.has("start"))time.set("start",now);time.set("elapsed",now-time.get("start"));var running=time.get("elapsed")<validatedParams.get("duration");var progress=animatedProps.map(running?
getProgress(validatedParams,time.get("elapsed")):getFinalValues(validatedParams));validatedParams.get("el").forEach(function(el){return setProgress(el,animatedProps,progress)});running?requestAnimationFrame(step):complete(validatedParams)};begin(step,validatedParams)}}();