UNPKG

es6tween-plugin-render

Version:

Rendering plugin for es6-tween

1 lines 5.74 kB
!function(e){"use strict";"function"==typeof define&&define.amd?define(["es6-tween"],e):"undefined"!=typeof module&&module.exports&&require("es6-tween")?module.exports=e(require("es6-tween")):"undefined"!=typeof exports&&exports.TWEEN?e(exports.TWEEN):"undefined"!=typeof window&&window.TWEEN?e(window.TWEEN):this.TWEEN&&e(this.TWEEN)}(function(e){"use strict";var t=window.document;if(void 0===t)return!1;var r,s,i=null,n=["Webkit","Moz","Ms","ms","O"],o=!1;if(t&&t.createElement)if(r=document.createElement("div"),s=r.style,o="setProperty"in s&&"function"==typeof s.setProperty,"Transform"in s)i="";else for(var a=0,l=n.length;a<l;a++){var d=n[a];if(d+"Transform"in s){i=d;break}}else i="Webkit";i&&i.toLowerCase();var f=function(e){var t=String(i+e[0].toUpperCase()+e.substr(1));return t in s?t:e},c=window.SVGElement,p=function(e){return c&&e instanceof SVGElement},h=f("perspective")in s,u={left:!0,top:!0,right:!0,bottom:!0},m={x:!0,y:!0,z:!0,translate:!0,translate3d:!0,scale:!0,scaleX:!0,scaleY:!0,scaleZ:!0,scale3d:!0,rotateX:!0,rotateY:!0,rotateZ:!0,rotate:!0,skew:!0,skewX:!0,skewY:!0,transformPerspective:!0},g={grayscale:1,brightness:1,sepia:1,invert:1,saturate:1,contrast:1,blur:1,"hue-rotate":1,"drop-shadow":1},v={transformOrder:!0,clearProps:!0,roundProps:!0,decimalProps:!0,transformOrigin:!0},x=e.Plugins,y={d:!0,points:!0,x1:!0,y1:!0,x2:!0,y2:!0,r:!0,rx:!0,ry:!0,cx:!0,cy:!0,stopColor:!0},w={scrollTop:!0,scrollLeft:!0},O={display:!0,visibility:!0,cssFloat:!0,backfaceVisibility:!0,transformStyle:!0},T=["transformPerspective","x","y","z","scaleX","scaleY","scaleY","scale","rotateX","rotateY","rotateZ","rotate","skewX","skewY","skew"],P=f("transform"),b=f("filter"),Y={init:function(e,t,r){var s=this,i=s.node;if(!i)return!1;this.node=i,this._style=i.style;var n=r.transformOrder||T,o=r.clearProps;this.roundProps=r.roundProps;var a=r.transformOrigin,l=p(i),d=h&&!l,c=(n.length,s.object);n.length<T.length&&(n=T.reduce(function(e,t){return-1===e.indexOf(t)&&e.push(t),e},n)),this.transformOrder=n;var u,m,g=0,v=0,x=l?0:"px",y=l?0:"deg",w="",P="";i.style;if(!a&&l&&(a="0% 0%"),a){if(l)u=function(e,t){return-1!==e.indexOf("px")?m[0===t?"x":"y"]+parseFloat(e):-1!==e.indexOf("%")?m[0===t?"x":"y"]+m[0===t?"width":"height"]*(parseFloat(e)/100):parseFloat(e)},m=i.getBBox(),w="translate("+(g=(a=a.split(" ").map(u))[0])+","+(v=a[1])+") ",P="translate("+-g+","+-v+") ";else{u=function(e,t){return-1!==e.indexOf("%")?i[0===t?"offsetWidth":"offsetHeight"]*(parseFloat(e)/100):parseFloat(e)};var b=a.split(" ").map(u);i.style.transformOrigin=a,g=b[0],v=b[1],w=d?"translate3d("+g+x+","+v+x+", 0px) ":"translate("+g+x+","+v+x+") "}this.transformOrigin=a,this.transformOriginFunc=u}this.is3DNode=d,this.isSVGNode=l,this.pxsfx=x,this.degsfx=y,this.setTransformDOM=!1,this.smoothOriginPrepend=w,this.smoothOriginAppend=P,this.clearProps=o;for(var Y in c){var X=f(Y);if(Y!==X){var E=t[Y],N=r[Y],k=c[Y];t[Y]=null,c[Y]=null,t[X]=E,c[X]=k,delete t[Y],delete c[Y],Y in r&&(r[X]=N,r[Y]=null,delete r[Y])}}for(var Y in O)Y in i.style&&(void 0!==t[Y]&&(i.style[f(Y)]=t[Y],t[Y]=null,delete t[Y]),void 0!==r[Y]&&(i.style[f(Y)]=r[Y],r[Y]=null,delete r[Y]),i.style[f("transformOrigin")]=a);return this},setOrigin:function(e){var t=this.transformOriginFunc;if(isSVGNode){var r=this.transformOrigin.split(" "),s=r[0],i=r[1],n=(c=e.split(" ").map(t))[0],o=c[1],a=n-s,l=o-i;originTweenX=n,originTweenY=o,r[0]+=a,r[1]+=l;var d=r[0],f=r[1];originTweenX+=Math.abs(d-s),originTweenY+=Math.abs(f-i),smoothOriginPrepend="translate("+originTweenX+","+originTweenY+")",smoothOriginAppend="translate("+-d+","+-f+")"}else{var c=e.split(" ").map(t);originTweenX+=c[0],originTweenY+=c[1],r=e,setTransformDOM=!1,is3DNode?smoothOriginPrepend="translate3d( "+originTweenX+pxsfx+","+originTweenY+pxsfx+",0px)":smoothOriginPrepend="translate("+originTweenX+pxsfx+","+originTweenY+pxsfx+")",this.smoothOriginPrepend=smoothOriginPrepend,this.smoothOriginAppend=smoothOriginAppend}return this},translateDecimal:10,rotateDecimal:100,scaleDecimal:1e3,defPx:"0px",def:function(e,t,r){return e?"number"==typeof e?e+t:e:r},update:function(e,t){var r,s,i,n=this.roundProps,a=this.clearProps,l=this.node,d=this._style,f=this.transformOrder,c=this.is3DNode,p=this.isSVGNode,h=(this.setTransformDOM,this.pxsfx),O=this.degsfx,T=this.smoothOriginPrepend,X=this.smoothOriginAppend,E=0,N=f.length,k=0+h,A=Y.def;for(var D in e)"number"==typeof e[D]&&((n&&-1!==n.indexOf(D)||u[D])&&(e[D]=0|e[D]),"x"===D||"y"===D||"z"===D?e[D]=(10*e[D]|0)/10:"scale"===D||"scaleX"===D||"scaleY"===D||"scaleZ"===D?e[D]=(1e3*e[D]|0)/1e3:"rotate"!==D&&"rotateZ"!==D||(e[D]=(100*e[D]|0)/100)),x[D]||m[D]||v[D]||(g[D]?(s=s||"",s+=D+"("+e[D]+") "):w[D]?l[D]=e[D]:y[D]?l.setAttribute(D,e[D]):0===D.indexOf("--")&&o?d.setProperty(D,e[D]):d[D]=e[D]);for(;E<N;E++)if(void 0!==e[D=f[E]])if(r=r||"","x"===D||"y"===D||"z"===D)i||(r+=c?"translate3d("+A(e.x,h,k)+","+A(e.y,h,k)+","+A(e.z,h,k)+") ":"translate("+A(e.x,h,k)+","+A(e.y,h,k)+") ",i=!0);else if("scale"===D||"scaleX"===D||"scaleY"===D||"scaleZ"===D)r+=c?"scale3d("+(void 0!==e.scaleX?e.scaleX:void 0!==e.scale?e.scale:1)+","+(void 0!==e.scaleY?e.scaleY:void 0!==e.scale?e.scale:1)+","+(void 0!==e.scaleZ?e.scaleZ:void 0!==e.scale?e.scale:1)+") ":"scale("+(void 0!==e.scaleX?e.scaleX:void 0!==e.scale?e.scale:1)+","+(void 0!==e.scaleY?e.scaleY:void 0!==e.scale?e.scale:1)+") ";else if("transformPerspective"===D)r+="perspective("+e[D]+") ";else if("rotate"===D||"rotateZ"===D){var W=e[D];"number"==typeof W&&(W+=O),r+=D+"("+W+") "}else r+=D+"("+e[D]+") ";if(r&&(p?l.setAttribute("transform",T+r+X):d[P]=T+r,r=null),s&&(d[b]=s,s=null),1===t&&a)for(var E=0,Z=a.length;E<Z;E++){D=a[E];p&&l.getAttribute(D)?l.removeAttribute(D):d[D]=""}}};e.Tween.Renderer=Y});