d3-zoomer
Version:
A library for easy pan-zoom behavior of d3
1 lines • 2.15 kB
JavaScript
!function(e,t){var n,r,o,a;if("function"==typeof define&&define.amd){try{n=require("d3-zoom")}catch(c){n=require("d3")}try{r=require("d3-selection")}catch(c){r=require("d3")}try{o=require("d3-scale")}catch(c){o=require("d3")}try{a=require("d3-dispatch")}catch(c){a=require("d3")}define([],function(){return t(n,r,o,a)})}else"object"==typeof module&&module.exports&&(n=require("d3-zoom"),r=require("d3-selection"),o=require("d3-scale"),a=require("d3-dispatch"),module.exports=t(n,r,o,a));var i=e.d3;i&&(e.d3.zoomer=t(i,i,i,i))}(this,function(e,t,n,r){return function(){function o(){return i.selectAll("g."+c).empty()&&i.append("g").attr("class",c),i.selectAll("g."+c).filter(function(){return"svg"===this.parentNode.tagName.toLowerCase()})}function a(e){i=e.select(function(){return"svg"===this.tagName.toLowerCase()?this:this.ownerSVGElement}),e.filter(function(){return"svg"===this.parentNode.tagName.toLowerCase()&&"g"===this.tagName.toLowerCase()}).classed(c,!0),o(),i.call(f.on("start.zoomer",function(){m.call("start",i.node())}).on("zoom.zoomer",function(){o().attr("transform",t.event.transform),m.call("zoom",i.node())})).on("end.zoomer",function(){m.call("end",i.node())})}var i=null,c="pan-zoom",l=!0,u=[.1,2],s=[.1,2],d=n.scaleLinear().domain(s).range(u),f=e.zoom().scaleExtent(u).filter(function(){return l}),m=r.dispatch("start","zoom","end");return a.targetClass=function(e){return arguments.length?(c=e,a):c},a.target=function(){return o()},a.scale=function(e){return arguments.length?a.transform({k:d(e)}):d.invert(a.transform().k)},a.scaleRange=function(e){return arguments.length?(u=Array.prototype.slice.call(e),d.range(u),f.scaleExtent(u),a):u},a.scaleDomain=function(e){return arguments.length?(s=Array.prototype.slice.call(e),d.domain(s),a):s},a.on=function(e,t){return 1===arguments.length?m.on(e):(m.on(e,t),a)},a.transform=function(t){if(arguments.length){var n=e.zoomTransform(i.node()),r=t.x||0===t.x?t.x:n.x,o=t.y||0===t.y?t.y:n.y,c=t.k||0===t.k?t.k:n.k,l=e.zoomIdentity.translate(r,o).scale(c);return i.call(f.transform,l),a}return e.zoomTransform(i.node())},a.enabled=function(e){return arguments.length?(l=e,a):l},a}});