-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathzoom_19.js
4 lines (4 loc) · 1.71 KB
/
zoom_19.js
1
2
3
4
function k(a,b){return[a*b[0],a*b[1]]}function l(a,b){return[a[0]+b[0],a[1]+b[1]]}function m(a,b){return[a[0]-b[0],a[1]-b[1]]}function n(a,b){return l(k(b[0],a[0]),k(b[1],a[1]))}function p(a,b){this.a=a;this.b=b}function q(a){var b=a.a;a=a.b;return"matrix("+b[0][0]+","+b[0][1]+","+b[1][0]+","+b[1][1]+","+a[0]+","+a[1]+")"}function r(a,b){var c=a.a,d=b.a;return new p([n(c,d[0]),n(c,d[1])],l(n(a.a,b.b),a.b))}var t=new p([[1,0],[0,1]],[0,0]);
function u(a){function b(b){var c=a.offsetLeft,f=a.offsetTop;return[[b[0].pageX-c,b[0].pageY-f],[b[1].pageX-c,b[1].pageY-f]]}this.c=a;this.b=!1;this.a=t;this.f=null;this.h=[0,0];var c=this,d=!1;a.style["transform-origin"]="0 0";a.parentNode.addEventListener("touchstart",function(a){var e=a.touches;if(!e)return!1;a.preventDefault();2===e.length?(c.h=b(e),c.b=!0):1==e.length&&(d?(d=!1,c.g()):d=setTimeout(function(){d=!1},300))});a.parentNode.addEventListener("touchmove",function(a){var e=a.touches;
if(!e||2!=e.length||!c.b)return!1;a.preventDefault();a=c.h;var e=b(e),f,g=m(a[1],a[0]),d=m(e[1],e[0]),v=g[0]*g[0]+g[1]*g[1];f=(g[0]*d[0]+g[1]*d[1])/v;g=(g[0]*d[1]-g[1]*d[0])/v;f=[[f,g],[-g,f]];c.f=new p(f,m(e[0],n(f,a[0])));c.c.style.transform=q(r(c.f,c.a))});a.parentNode.addEventListener("touchend",function(){c.b&&(c.a=r(c.f,c.a),c.b=!1)})}
u.prototype.g=function(){if(window.requestAnimationFrame){var a=this.a,b=null,c=this,d=function(h){b||(b=h);h=(h-b)/100;if(1<h)c.a=t,c.b=!1,c.c.style.transform=q(c.a);else{var e=a.a,f=t.a;c.c.style.transform=q(new p([l(k(1-h,e[0]),k(h,f[0])),l(k(1-h,e[1]),k(h,f[1]))],l(k(1-h,a.b),k(h,t.b))));window.requestAnimationFrame(d)}};window.requestAnimationFrame(d)}else this.a=t,this.b=!1,this.c.style.transform=q(this.a)};u.prototype.reset=u.prototype.g;window.Zoom=u;