forked from d3/d3
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathd3.behavior.min.js
1 lines (1 loc) · 2.06 KB
/
d3.behavior.min.js
1
(function(){d3.behavior={},d3.behavior.zoom=function(){function x(){function f(a,b){var c=a.__domain||(a.__domain=a.domain()),d=a.range().map(function(a){return(a-b)/e});a.domain(c).domain(d.map(a.invert))}var d=d3.event,e=Math.pow(2,c);d3.event={scale:e,translate:[a,b],transform:function(c,d){c&&f(c,a),d&&f(d,b)}};try{j.zoom.dispatch.apply(h,i)}finally{d3.event=d}d.preventDefault()}function w(d,e,f){var g=Math.pow(2,(c=d)-f[2]);a=e[0]-g*f[0],b=e[1]-g*f[1],x()}function v(){n.apply(this,arguments);var a=d3.svg.mouse(h);w(d3.event.shiftKey?Math.ceil(c-1):Math.floor(c+1),a,m(a))}function u(){n.apply(this,arguments),e||(e=m(d3.svg.mouse(h)));var a=d3.event,b;try{k.scrollTop=1e3,k.dispatchEvent(a),b=1e3-k.scrollTop}catch(d){b=a.wheelDelta||-a.detail}w(b*.005+c,d3.svg.mouse(h),e)}function t(){d&&(s(),d=null)}function s(){e=null,d&&w(c,d3.svg.mouse(h),d)}function r(){n.apply(this,arguments),d=m(d3.svg.mouse(h)),d3.event.preventDefault(),window.focus()}function q(){var a=d3.svg.touches(h);switch(a.length){case 1:var b=a[0];w(c,b,f[b.identifier]);break;case 2:var d=a[0],e=a[1],g=[(d[0]+e[0])/2,(d[1]+e[1])/2],i=f[d.identifier],j=f[e.identifier],k=[(i[0]+j[0])/2,(i[1]+j[1])/2,i[2]];w(Math.log(d3.event.scale)/Math.LN2+i[2],g,k)}}function p(){n.apply(this,arguments);var a=o(),b,d=Date.now();if(a.length===1&&d-g<300){var b=a[0];w(1+Math.floor(c),b,f[b.identifier])}g=d}function o(){var a=d3.svg.touches(h),b=-1,c=a.length,d;while(++b<c)f[(d=a[b]).identifier]=m(d);return a}function n(){h=this,i=arguments}function m(d){return[d[0]-a,d[1]-b,c]}function l(){this.on("mousedown.zoom",r).on("mousewheel.zoom",u).on("DOMMouseScroll.zoom",v).on("dblclick.zoom",v).on("touchstart.zoom",p),d3.select(window).on("mousemove.zoom",s).on("mouseup.zoom",t).on("touchmove.zoom",q).on("touchend.zoom",o)}var a=0,b=0,c=0,d,e,f={},g=0,h,i,j=d3.dispatch("zoom"),k=d3.select("body").append("div").style("visibility","hidden").style("top",0).style("height",0).style("width",0).style("overflow-y","scroll").append("div").style("height","2000px").node().parentNode;l.on=function(a,b){j[a].add(b);return l};return l}})()