d3/d3.behavior.min.js

1 строка
2.1 KiB
JavaScript

(function(){function p(a,b,c){function m(a,b){var c=a.__domain||(a.__domain=a.domain()),d=a.range().map(function(a){return(a-b)/l});a.domain(c).domain(d.map(a.invert))}var d=Math.pow(2,(f[2]=a)-c[2]),e=f[0]=b[0]-d*c[0],j=f[1]=b[1]-d*c[1],k=d3.event,l=Math.pow(2,a);d3.event={scale:l,translate:[e,j],transform:function(a,b){a&&m(a,e),b&&m(b,j)}};try{g.apply(h,i)}finally{d3.event=k}k.preventDefault()}function o(){b&&(n(),b=null)}function n(){c=null,b&&p(f[2],d3.svg.mouse(h),b)}function m(){var a=d3.svg.touches(h);switch(a.length){case 1:var b=a[0];p(f[2],b,d[b.identifier]);break;case 2:var c=a[0],e=a[1],g=[(c[0]+e[0])/2,(c[1]+e[1])/2],i=d[c.identifier],j=d[e.identifier],k=[(i[0]+j[0])/2,(i[1]+j[1])/2,i[2]];p(Math.log(d3.event.scale)/Math.LN2+i[2],g,k)}}function l(){var a=d3.svg.touches(h),b=-1,c=a.length,e;while(++b<c)d[(e=a[b]).identifier]=j(e);return a}function k(){a||(a=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);var b=d3.event,c;try{a.scrollTop=1e3,a.dispatchEvent(b),c=1e3-a.scrollTop}catch(d){c=b.wheelDelta||-b.detail}return c*.005}function j(a){return[a[0]-f[0],a[1]-f[1],f[2]]}d3.behavior={},d3.behavior.zoom=function(){function w(){s.apply(this,arguments);var b=l(),c,f=Date.now();b.length===1&&f-e<300&&p(1+Math.floor(a[2]),c=b[0],d[c.identifier]),e=f}function v(){s.apply(this,arguments);var b=d3.svg.mouse(h);p(d3.event.shiftKey?Math.ceil(a[2]-1):Math.floor(a[2]+1),b,j(b))}function u(){s.apply(this,arguments),c||(c=j(d3.svg.mouse(h))),p(k()+a[2],d3.svg.mouse(h),c)}function t(){s.apply(this,arguments),b=j(d3.svg.mouse(h)),d3.event.preventDefault(),window.focus()}function s(){f=a,g=q.zoom.dispatch,h=this,i=arguments}function r(){this.on("mousedown.zoom",t).on("mousewheel.zoom",u).on("DOMMouseScroll.zoom",v).on("dblclick.zoom",v).on("touchstart.zoom",w),d3.select(window).on("mousemove.zoom",n).on("mouseup.zoom",o).on("touchmove.zoom",m).on("touchend.zoom",l)}var a=[0,0,0],q=d3.dispatch("zoom");r.on=function(a,b){q[a].add(b);return r};return r};var a,b,c,d={},e=0,f,g,h,i})()