animate.min.js 4.1 KB

1
  1. define(function(t,e,r){"use strict";function n(t){return Math.round(1e5*parseFloat(t))/1e5}function a(){return{translateX:0,translateY:0,rotate:0,skewX:0,skewY:0,scaleX:1,scaleY:1}}function s(t){return t=t.split(/,/),t=Array.prototype.map.call(t,function(t){return n(t)})}function i(t){t=s(t);var e,r,a,i=t[0],o=t[1],l=t[2],c=t[3];return i*c-o*l?(e=Math.sqrt(i*i+o*o),a=(i*l+o*c)/(i*c-l*o),r=(i*c-o*l)/e,i*c<o*l&&(a=-a,e=-e)):e=r=a=0,{translateX:n(t[4]),translateY:n(t[5]),rotate:n(180*Math.atan2(o,i)/Math.PI),skewX:n(180*Math.atan(a)/Math.PI),skewY:0,scaleX:n(e),scaleY:n(r)}}function o(t){t=t.split(")");for(var e,r,s,o=d.trim,l=-1,c=t.length-1,u=a();++l<c;)switch(e=t[l].split("("),r=o(e[0]),s=e[1],r){case"translateX":case"translateY":case"scaleX":case"scaleY":u[r]=n(s);break;case"translate":case"translate3d":s=s.split(","),u.translateX=n(s[0]),u.translateY=n(s[1]||0);break;case"scale":s=s.split(","),u.scaleX=n(s[0]),u.scaleY=n(s[1]||s[0]);break;case"matrix":return i(s)}return u}function l(t,e){if(t&&e&&e.css){var r=this;r.cfg=e,r.el=t;var n=e.duration||0,a=e.easing||"ease";e.delay||0;return e.run&&(r.timer=r.timer||new m({duration:Math.round(n),easing:a}),r.timer.on("run",e.run)),r._bindEvt(),r}}function c(t,e){var r=o(t),n=o(e),a={};for(var s in n)a[s]={prevVal:r[s],newVal:n[s]};return a}function u(t,e,r,n,a){r=isNaN(Number(r))?0:Number(r);var s=(n-r)*a+r;f(t,e,s)}function f(t,e,r){switch(e){case"scrollTop":case"scrollLeft":t[e]=r;break;case"transform":t.style[_]=r;case"opacity":t.style[e]=r}}var d=t("./util"),m=t("./timer"),p=t("./easing"),v=t("./base"),_=d.prefixStyle("transform"),h=d.prefixStyle("transition"),y=(d.prefixStyle("transitionDuration"),d.prefixStyle("transformOrigin"),d.vendor?d.prefixStyle("transitionEnd"):"transitionend"),g=(d.vendor?["-",d.vendor,"-transform"].join(""):"transform","translateX({translateX}px) translateY({translateY}px) translateZ(0)"),S={transform:!0,opacity:!0,scrollTop:!0,scrollLeft:!0};return d.extend(l,v,{run:function(){var t=this,e=t.cfg,r=t.el,n=e.duration||0,a=e.easing||"ease",s=e.delay||0;if(t.__isTransitionEnd=!1,clearTimeout(t.__itv),t.timer&&t.timer.run(),n<=m.MIN_DURATION){for(var i in e.css)f(r,i,e.css[i]);return t.stop(),void t.__handlers.stop.call(t)}if(d.isBadAndroid()&&(e.useTransition=!1),e.useTransition){r.style[h]=d.substitute("all {duration}ms {easing} {delay}ms",{duration:Math.round(n),easing:p.format(a),delay:s});for(var i in e.css)f(r,i,e.css[i]);t.__itv=setTimeout(function(){t.__isTransitionEnd||(t.__isTransitionEnd=!0,t.trigger("transitionend"))},Number(n)+60)}else if(t.computeStyle=t.computeStyle||window.getComputedStyle(r),e.css.transform&&t.timer){t.transmap=c(t.computeStyle[_],e.css.transform);t.timer.off("run",t.__handlers.transRun),t.timer.on("run",t.__handlers.transRun,t),t.timer.off("end",t.__handlers.transRun),t.timer.on("end",t.__handlers.transRun,t)}return t},_transitionEndHandler:function(t){var e=this;e.stop(),e.__handlers.stop.call(e)},__handlers:{transRun:function(t){var e=this,r=e.transmap,n=e.el,a={};for(var s in r)a[s]=(r[s].newVal-r[s].prevVal)*t.percent+r[s].prevVal;var i=d.substitute(g+" scale({scaleX},{scaleY})",a);n.style[_]=i},stop:function(t){var e=this,r=e.cfg;r.end&&r.end({percent:1})}},_bindEvt:function(){var t=this,e=t.cfg,r=t.el;t.el.addEventListener(y,function(e){t.__isTransitionEnd=!0,e.target===e.currentTarget&&t.trigger("transitionend",e)}),t.on("transitionend",t._transitionEndHandler,t);var n=function(n){t.computeStyle=t.computeStyle||window.getComputedStyle(r);for(var a in e.css)/transform/.test(a)||u(t.el,a,t.computeStyle[a],e.css[a],n.percent)};t.timer&&t.timer.on("run",n),t.timer&&t.timer.on("stop",t.__handlers.stop,t)},stop:function(){var t=this;if(t.cfg.useTransition&&t.cfg.duration>m.MIN_DURATION){var e=window.getComputedStyle(this.el);for(var r in t.cfg.css)if(S[r]){var n=/transform/.test(r)?e[_]:e[r];f(t.el,r,d.substitute(g+" scale({scaleX},{scaleY})",o(n)))}t.el.style[h]="none"}return t.timer&&t.timer.stop()&&t.timer.reset(),t.computeStyle=null,t},reset:function(t){var e=this;return e.computeStyle=null,d.mix(e.cfg,t),this.timer&&e.timer.reset({duration:Math.round(e.cfg.duration),easing:e.cfg.easing}),e}}),"object"==typeof r&&r.exports?void(r.exports=l):l});