kute.js/dist/kute.min.js
thednp 3819cd0f3a NodeList isn't a good idea for the KUTE.selector utility, it's not workin in IE8.
Added a link in the documentation for a pathToAbslute utility for SVG morphing.
2016-09-12 17:09:09 +03:00

2 lines
16 KiB
JavaScript

// KUTE.js | dnp_theme | MIT-License
(function(u){"function"===typeof define&&define.amd?define([],u):"object"==typeof exports?module.exports=u():window.KUTE=window.KUTE||u()})(function(){var u=u||{},B=[],E=null,X=function(){var e=document.createElement("div"),a=0,b="Moz moz Webkit webkit O o Ms ms".split(" "),d=b.length,c="MozTransform mozTransform WebkitTransform webkitTransform OTransform oTransform MsTransform msTransform".split(" ");for(a;a<d;a++)if(c[a]in e.style)return b[a]},F=function(e){var a=e in document.body.style?!1:!0,b=X();return a?b+(e.charAt(0).toUpperCase()+e.slice(1)):e},J=function(e,a){var b;b=a?"object"===typeof e?e:document.querySelectorAll(e):"object"===typeof e?e:/^#/.test(e)?document.getElementById(e.replace("#","")):document.querySelector(e);if(null===b&&"window"!==e)throw new TypeError("Element not found or incorrect selector: "+e);return b},h=function(e,a){var b=parseInt(e)||0,d="px % deg rad em rem vh vw".split(" "),c=d.length,g,t=0;for(t;t<c;t++)"string"===typeof e&&-1!==e.indexOf(d[t])&&(g=d[t]);return{v:b,u:void 0!==g?g:a?"deg":"px"}},M=function(e){var a;if(/rgb|rgba/.test(e))return a=e.replace(/[^\d,]/g,"").split(","),(e=a[3]?a[3]:null)?{r:parseInt(a[0]),g:parseInt(a[1]),b:parseInt(a[2]),a:1*e}:{r:parseInt(a[0]),g:parseInt(a[1]),b:parseInt(a[2])};if(/#/.test(e))return a=Y(e),{r:a.r,g:a.g,b:a.b};if(/transparent|none|initial|inherit/.test(e))return{r:0,g:0,b:0,a:0};if(!/#|rgb/.test(e)){var b=document.getElementsByTagName("head")[0];b.style.color=e;a=window.getComputedStyle(b,null).color;b.style.color="";return e!==a?M(a):{r:0,g:0,b:0}}},L=function(e){var a=document.body.getAttribute("data-tweening");a&&"scroll"===a&&e.preventDefault()},Z=function(e,a,b){return"#"+(16777216+(e<<16)+(a<<8)+b).toString(16).slice(1)},Y=function(e){e=e.replace(/^#?([a-f\d])([a-f\d])([a-f\d])$/i,function(a,b,e,c){return b+b+e+e+c+c});return(e=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(e))?{r:parseInt(e[1],16),g:parseInt(e[2],16),b:parseInt(e[3],16)}:null},N=function(e,a){var b=e.style,d=window.getComputedStyle(e,null)||e.currentStyle,c=F(a),g=b[a]&&!/auto|initial|none|unset/.test(b[a])?b[a]:d[c];if("transform"!==a&&(c in d||c in b))return g?"filter"===c?(b=parseInt(g.split("=")[1].replace(")","")),parseFloat(b/100)):g:v[a]},O=function(e){if("function"===typeof e)return e;if("string"===typeof e)return/easing|linear/.test(e)?f[e]:/bezier/.test(e)?(e=e.replace(/bezier|\s|\(|\)/g,"").split(","),u.Ease.Bezier(1*e[0],1*e[1],1*e[2],1*e[3])):/physics/.test(e)?u.Physics[e]():u.Ease[e]()},aa="ontouchstart"in window||navigator.msMaxTouchPoints?"touchstart":"mousewheel",ma=F("transformOrigin"),na=F("perspective"),ba=F("perspectiveOrigin"),oa=F("transform"),pa=window.requestAnimationFrame||window.webkitRequestAnimationFrame||function(e){return setTimeout(e,16)},qa=window.cancelAnimationFrame||window.webkitCancelRequestAnimationFrame||function(e){return clearTimeout(e)},A=document.body,K=document.getElementsByTagName("HTML")[0],ca=/webkit/i.test(navigator.userAgent)||"BackCompat"==document.compatMode?A:K,da=8===(null!=/MSIE ([0-9]{1,}[.0-9]{0,})/.exec(navigator.userAgent)?parseFloat(RegExp.$1):!1),P=["color","backgroundColor"],Q=["scrollTop","scroll"],ea=["opacity"],R=["top","left","width","height"],G="translate3d translateX translateY translateZ rotate translate rotateX rotateY rotateZ skewX skewY scale".split(" "),S=P.concat(Q,ea,R,G),A=S.length,v=v||{},K=0;for(;K<A;K++){var r=S[K];if(-1!==P.indexOf(r))v[r]="rgba(0,0,0,0)";else if(-1!==R.indexOf(r))v[r]=0;else if("translate3d"===r)v[r]=[0,0,0];else if("translate"===r)v[r]=[0,0];else if("rotate"===r||/X|Y|Z/.test(r))v[r]=0;else if("scale"===r||"opacity"===r)v[r]=1}var fa=function(e,a,b){e=J(e);var d=T(a,{},e)[0];b=b||{};b.rpr=!0;return new H(e,a,d,b)},ga=function(e,a,b,d){e=J(e);b=T(a,b,e);a=b[0];b=b[1];d=d||{};d=new H(e,a,b,d);u.svg&&u.svq(d);return d},I=function(e,a,b){e=+e;return e+(a-e)*b},ha=window.unit=function(e,a,b,d){e=+e;return e+(a-e)*d+b},ia=function(e,a,b,d){var c={},g;for(g in a)c[g]="a"!==g?parseInt(I(e[g],a[g],b))||0:e[g]&&a[g]?parseFloat(I(e[g],a[g],b)):null;return d?Z(c.r,c.g,c.b):c.a?"rgba("+c.r+","+c.g+","+c.b+","+c.a+")":"rgb("+c.r+","+c.g+","+c.b+")"},x={},ja=function a(b){for(var d=0;d<B.length;)ra(B[d],b)?d++:B.splice(d,1);E=pa(a)},ra=function(a,b){b=b||window.performance.now();if(b<a._sT&&a.playing&&!a.paused)return!0;var d,c=Math.min((b-a._sT)/a._dr,1);for(d in a._vE)x[d].call(this,a._el,d,a._vS[d],a._vE[d],a._e(c),a._ops);a._uC&&a._uC.call();if(1===c)if(0<a._r)9999>a._r&&a._r--,a._y&&(a.reversed=!a.reversed,a.rvs()),a._sT=a._y&&!a.reversed?b+a._rD:b;else{a._cC&&a._cC.call();a.scrollOut();d=0;c=a._cT.length;for(d;d<c;d++)a._cT[d].start(a._sT+a._dr);a.close();return!1}return!0},ka=function(a){a=B.indexOf(a);-1!==a&&B.splice(a,1)},T=function(a,b,d){var c,g=arguments.length,t=[],g=2<g?2:g;for(c=0;c<g;c++){var w=arguments[c],l,f={},m={},U={},h={};t[c]={};for(l in w)if(-1!==G.indexOf(l)){if(/^translate(?:[XYZ]|3d)$/.test(l)){var q=["X","Y","Z"],p=0;for(p;3>p;p++){var y=q[p];/3d/.test(l)?U["translate"+y]=C.tf("translate"+y,w[l][p]):U["translate"+y]="translate"+y in w?C.tf("translate"+y,w["translate"+y]):{value:0,unit:"px"}}h.translate=U}else if(/^rotate(?:[XYZ])$|^skew(?:[XY])$/.test(l)){var q=/rotate/.test(l)?"rotate":"skew",p=["X","Y","Z"],y=0,z="rotate"===q?m:f;for(y;3>y;y++){var k=p[y];void 0!==w[q+k]&&"skewZ"!==l&&(z[q+k]=C.tf(q+k,w[q+k]))}h[q]=z}else/(rotate|translate|scale)$/.test(l)&&(h[l]=C.tf(l,w[l]));t[c].transform=h}else"transform"!==l&&(-1!==R.indexOf(l)?t[c][l]=C.box(l,w[l]):-1!==ea.indexOf(l)||-1!==Q.indexOf(l)?t[c][l]=C.unl(l,w[l]):-1!==P.indexOf(l)?t[c][l]=C.cls(l,w[l]):l in u.pp&&(t[c][l]=u.pp[l](l,w[l],d)))}return t},C={box:function(a,b){a in x||(x[a]=function(a,b,g,t,w){a.style[b]=ha(g.value,t.value,t.unit,w)});return{value:h(b).v,unit:h(b).u}},tf:function(a,b){"transform"in x||(x.transform=function(a,b,c,d,f,m){b="";var h,u=u||m.perspective&&0!==parseInt(m.perspective)?"perspective("+parseInt(m.perspective)+"px) ":!1;for(h in d){var q=c[h];m=d[h];if("translate"===h){var p={},y;for(y in m){var z=q[y].value||0,k=m[y].value||0,n=m[y].unit||"px";p[y]=z===k?k+n:z+(k-z)*f+n}m=m.x?"translate("+p.x+","+p.y+")":"translate3d("+p.translateX+","+p.translateY+","+p.translateZ+")";b=""===b?m:m+" "+b}else if("rotate"===h){var p={},r;for(r in m)q[r]&&(k=q[r].value,z=m[r].unit||"deg",k+=(m[r].value-k)*f,p[r]="z"===r?"rotate("+k+z+")":r+"("+k+z+") ");m=m.z?p.z:(p.rotateX||"")+(p.rotateY||"")+(p.rotateZ||"");b=""===b?m:b+" "+m}else if("skew"===h){var p={},v;for(v in m)q[v]&&(z=q[v].value,p[v]=v+"("+(z+(m[v].value-z)*f)+(m[v].unit||"deg")+") ");m=(p.skewX||"")+(p.skewY||"");b=""===b?m:b+" "+m}else"scale"===h&&(q=q.value,m=h+"("+(q+(m.value-q)*f)+")",b=""===b?m:b+" "+m)}a.style[oa]=u?u+b:b});if("translate3d"===a){var d=b.split(",");return{translateX:{value:h(d[0]).v,unit:h(d[0]).u},translateY:{value:h(d[1]).v,unit:h(d[1]).u},translateZ:{value:h(d[2]).v,unit:h(d[2]).u}}}if(/^translate(?:[XYZ])$/.test(a))return{value:h(b).v,unit:h(b).u||"px"};if(/^rotate(?:[XYZ])$|skew(?:[XY])$/.test(a))return{value:h(b,!0).v,unit:h(b,!0).u||"deg"};if("translate"===a){var d="string"===typeof b?b.split(","):b,c={};d instanceof Array?(c.x={value:h(d[0]).v,unit:h(d[0]).u},c.y={value:h(d[1]).v,unit:h(d[1]).u}):(c.x={value:h(d).v,unit:h(d).u},c.y={value:0,unit:"px"});return c}if("rotate"===a)return d={},d.z={value:h(b,!0).v,unit:h(b,!0).u||"deg"},d;if("scale"===a)return{value:parseFloat(b)}},unl:function(a,b){!/scroll/.test(a)||a in x?"opacity"===a&&(a in x||(x[a]=da?function(a,b,g,t,w){a.style.filter="alpha(opacity="+100*I(g,t,w)+")"}:function(a,b,g,t,w){a.style.opacity=I(g,t,w)})):x[a]=function(a,b,g,t,w){var l=l||void 0===a||null===a?ca:a;l.scrollTop=I(g,t,w)};return parseFloat(b)},cls:function(a,b){a in x||(x[a]=function(a,b,g,t,w,l){a.style[b]=ia(g,t,w,l.keepHex)});return M(b)}},f={},sa=Math.PI,D=2*Math.PI,la=Math.PI/2,n=.1;f.linear=function(a){return a};f.easingSinusoidalIn=function(a){return-Math.cos(a*la)+1};f.easingSinusoidalOut=function(a){return Math.sin(a*la)};f.easingSinusoidalInOut=function(a){return-.5*(Math.cos(sa*a)-1)};f.easingQuadraticIn=function(a){return a*a};f.easingQuadraticOut=function(a){return a*(2-a)};f.easingQuadraticInOut=function(a){return.5>a?2*a*a:-1+(4-2*a)*a};f.easingCubicIn=function(a){return a*a*a};f.easingCubicOut=function(a){return--a*a*a+1};f.easingCubicInOut=function(a){return.5>a?4*a*a*a:(a-1)*(2*a-2)*(2*a-2)+1};f.easingQuarticIn=function(a){return a*a*a*a};f.easingQuarticOut=function(a){return 1- --a*a*a*a};f.easingQuarticInOut=function(a){return.5>a?8*a*a*a*a:1-8*--a*a*a*a};f.easingQuinticIn=function(a){return a*a*a*a*a};f.easingQuinticOut=function(a){return 1+--a*a*a*a*a};f.easingQuinticInOut=function(a){return.5>a?16*a*a*a*a*a:1+16*--a*a*a*a*a};f.easingCircularIn=function(a){return-(Math.sqrt(1-a*a)-1)};f.easingCircularOut=function(a){return Math.sqrt(1- --a*a)};f.easingCircularInOut=function(a){return 1>(a*=2)?-.5*(Math.sqrt(1-a*a)-1):.5*(Math.sqrt(1-(a-=2)*a)+1)};f.easingExponentialIn=function(a){return Math.pow(2,10*(a-1))-.001};f.easingExponentialOut=function(a){return 1-Math.pow(2,-10*a)};f.easingExponentialInOut=function(a){return 1>(a*=2)?.5*Math.pow(2,10*(a-1)):.5*(2-Math.pow(2,-10*(a-1)))};f.easingBackIn=function(a){return a*a*(2.70158*a-1.70158)};f.easingBackOut=function(a){return--a*a*(2.70158*a+1.70158)+1};f.easingBackInOut=function(a){return 1>(a*=2)?.5*a*a*(3.5949095*a-2.5949095):.5*((a-=2)*a*(3.5949095*a+2.5949095)+2)};f.easingElasticIn=function(a){var b;if(0===a)return 0;if(1===a)return 1;!n||1>n?(n=1,b=.1):b=.4*Math.asin(1/n)/D;return-(n*Math.pow(2,10*--a)*Math.sin((a-b)*D/.4))};f.easingElasticOut=function(a){var b;if(0===a)return 0;if(1===a)return 1;!n||1>n?(n=1,b=.1):b=.4*Math.asin(1/n)/D;return n*Math.pow(2,-10*a)*Math.sin((a-b)*D/.4)+1};f.easingElasticInOut=function(a){var b;if(0===a)return 0;if(1===a)return 1;!n||1>n?(n=1,b=.1):b=.4*Math.asin(1/n)/D;return 1>(a*=2)?-.5*n*Math.pow(2,10*--a)*Math.sin((a-b)*D/.4):n*Math.pow(2,-10*--a)*Math.sin((a-b)*D/.4)*.5+1};f.easingBounceIn=function(a){return 1-f.easingBounceOut(1-a)};f.easingBounceOut=function(a){return a<1/2.75?7.5625*a*a:a<2/2.75?7.5625*(a-=1.5/2.75)*a+.75:a<2.5/2.75?7.5625*(a-=2.25/2.75)*a+.9375:7.5625*(a-=2.625/2.75)*a+.984375};f.easingBounceInOut=function(a){return.5>a?.5*f.easingBounceIn(2*a):.5*f.easingBounceOut(2*a-1)+.5};var H=function(a,b,d,c){this._el=a;this._vSR={};this._vS=b;this._vE=d;this._y=c.yoyo||!1;this.paused=this.reversed=this.playing=!1;this._pST=this._sT=null;this._hex=c.keepHex||!1;this._rpr=c.rpr||!1;this._dr=c.duration||700;this._r=c.repeat||0;this._rD=c.repeatDelay||0;this._dl=c.delay||0;this._to=c.transformOrigin;this._pp=c.perspective&&0!==parseInt(c.perspective)?"perspective("+parseInt(c.perspective)+"px) ":!1;this._ppo=c.perspectiveOrigin;this._ppp=c.parentPerspective;this._pppo=c.parentPerspectiveOrigin;this._e=c&&c.easing&&"function"===typeof O(c.easing)?O(c.easing):f.linear;this._cT=[];this._sCF=!1;this._sC=c.start||null;this._uC=c.update||null;this._cC=c.complete||null;this._pC=c.pause||null;this._rC=c.play||null;this._stC=c.stop||null;this.repeat=this._r;this._ops={};for(var g in c)g in this||/delay|duration|repeat|origin|start|stop|update|complete|pause|play|yoyo|easing/i.test(g)||(this._ops[g]=c[g]);this.pause=function(){!this.paused&&this.playing&&(ka(this),this.paused=!0,this._pST=window.performance.now(),null!==this._pC&&this._pC.call());return this};this.stop=function(){!this.paused&&this.playing&&(ka(this),this.paused=this.playing=!1,this.scrollOut(),null!==this._stC&&this._stC.call(),this.stopChainedTweens(),this.close());return this};this.rvs=function(){if(this._y)for(var a in this._vE){var b=this._vSR[a];this._vSR[a]=this._vE[a];this._vE[a]=b;this._vS[a]=this._vSR[a]}};this.chain=function(){this._cT=arguments;return this};this.stopChainedTweens=function(){var a=0,b=this._cT.length;for(a;a<b;a++)this._cT[a].stop()};this.scrollOut=function(){if("scroll"in this._vE||"scrollTop"in this._vE)this.removeListeners(),document.body.removeAttribute("data-tweening")};this.scrollIn=function(){("scroll"in this._vE||"scrollTop"in this._vE)&&!document.body.getAttribute("data-tweening")&&(document.body.setAttribute("data-tweening","scroll"),this.addListeners())};this.addListeners=function(){document.addEventListener(aa,L,!1);document.addEventListener("mouseenter",L,!1)};this.removeListeners=function(){document.removeEventListener(aa,L,!1);document.removeEventListener("mouseenter",L,!1)};this.stack=function(){var a=this.prS();this._vS={};this._vS=T(a,{},this._el)[0];for(var b in this._vS)if("transform"===b&&b in this._vE)for(var c in this._vS[b]){c in this._vE[b]||(this._vE[b][c]={});for(var d in this._vS[b][c])if(void 0!==this._vS[b][c][d].value){d in this._vE[b][c]||(this._vE[b][c][d]={});for(var g in this._vS[b][c][d])g in this._vE[b][c][d]||(this._vE[b][c][d][g]=this._vS[b][c][d][g])}if("value"in this._vS[b][c]&&!("value"in this._vE[b][c]))for(var f in this._vS[b][c])f in this._vE[b][c]||(this._vE[b][c][f]=this._vS[b][c][f])}u.svg&&u.svq(this)};this.prS=function(){var a={},b=this._el,c=this._vS,d;if(b){d={};var g=b.style.cssText.replace(/\s/g,"").split(";"),f=0,h=g.length;for(f;f<h;f++)if(/transform/.test(g[f])){var q=g[f].split(":")[1].split(")"),p=0,r=q.length;for(p;p<r;p++){var n=q[p].split("(");""!==n[0]&&G.indexOf(n)&&(d[n[0]]=/translate3d/.test(n[0])?n[1].split(","):n[1])}}}else d=void 0;var g=["rotate","skew"],f=["X","Y","Z"],k;for(k in c)if(-1!==G.indexOf(k))if(h=/(rotate|translate|scale)$/.test(k),/translate/.test(k)&&"translate"!==k)a.translate3d=d.translate3d||v[k];else if(h)a[k]=d[k]||v[k];else{if(!h&&/rotate|skew/.test(k))for(var x=0;2>x;x++)for(h=0;3>h;h++)q=g[x]+f[h],-1!==G.indexOf(q)&&q in c&&(a[q]=d[q]||v[q])}else-1===Q.indexOf(k)?"opacity"===k&&da?(h=N(b,"filter"),a.opacity="number"===typeof h?h:v.opacity):-1!==S.indexOf(k)?a[k]=N(b,k)||x[k]:a[k]=k in u.prS?u.prS[k](b,k,c[k]):0:a[k]=null===b||void 0===b?window.pageYOffset||ca.scrollTop:b.scrollTop;for(k in d)-1===G.indexOf(k)||k in c||(a[k]=d[k]||v[k]);return a};this.close=function(){var a=this;setTimeout(function(){B.indexOf(a)===B.length-1&&(E&&qa(E),E=null);0<a.repeat&&(a._r=a.repeat);a._y&&!0===a.reversed&&(a.rvs(),a.reversed=!1);a.playing=!1},64)}},V=function(a,b,d){this.tweens=[];var c,g=a.length,f=[];for(c=0;c<g;c++)f[c]=d||{},d.delay=d.delay||0,f[c].delay=0<c?d.delay+(d.offset||0):d.delay,this.tweens.push(fa(a[c],b,f[c]))},W=function(a,b,d,c){this.tweens=[];var f,h=a.length,n=[];for(f=0;f<h;f++)n[f]=c||{},c.delay=c.delay||0,n[f].delay=0<f?c.delay+(c.offset||0):c.delay,this.tweens.push(ga(a[f],b,d,n[f]))},A=V.prototype=W.prototype;A.start=function(a){a=a||window.performance.now();var b,d=this.tweens.length;for(b=0;b<d;b++)this.tweens[b].start(a);return this};A.stop=function(){for(var a=0;a<this.tweens.length;a++)this.tweens[a].stop();return this};A.pause=function(){for(var a=0;a<this.tweens.length;a++)this.tweens[a].pause();return this};A.chain=function(){this.tweens[this.tweens.length-1]._cT=arguments;return this};A.play=A.resume=function(){for(var a=0;a<this.tweens.length;a++)this.tweens[a].play();return this};H.prototype.start=function(a){this.scrollIn();var b=this._el;void 0!==this._to&&(b.style[ma]=this._to);void 0!==this._ppo&&(b.style[ba]=this._ppo);void 0!==this._ppp&&(b.parentNode.style[na]=this._ppp+"px");void 0!==this._pppo&&(b.parentNode.style[ba]=this._pppo);this._rpr&&this.stack();for(var d in this._vE)this._vSR[d]=this._vS[d];B.push(this);this.playing=!0;this._sCF=this.paused=!1;this._sT=a||window.performance.now();this._sT+=this._dl;this._sCF||(this._sC&&this._sC.call(),this._sCF=!0);E||ja();return this};H.prototype.play=H.prototype.resume=function(){this.paused&&this.playing&&(this.paused=!1,null!==this._rC&&this._rC.call(),this._sT+=window.performance.now()-this._pST,B.push(this),E||ja());return this};return u={property:F,getPrefix:X,selector:J,pe:O,to:fa,fromTo:ga,allTo:function(a,b,d){a=J(a,!0);return new V(a,b,d)},allFromTo:function(a,b,d,c){a=J(a,!0);return new W(a,b,d,c)},Interpolate:{number:I,unit:ha,color:ia},dom:x,pp:C,prS:{},truD:h,truC:M,rth:Z,htr:Y,gCS:N,Easing:f,Tween:H,TweensTO:V,TweensFT:W}});