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