// JenScript - 1.3.2 2017-06-10 // http://jenscript.io - Copyright 2017 Sébastien Janaud. All Rights reserved !function(){JenScript.ZoomBoxMode=function(a){this.mode=a.toLowerCase(),this.isBx=function(){return"x"===this.mode||"bx"===this.mode||"box"===this.mode},this.isBy=function(){return"y"===this.mode||"by"===this.mode||"boy"===this.mode},this.isBxy=function(){return"xy"===this.mode||"bxy"===this.mode||"boxxy"===this.mode}},JenScript.ZoomBoxPlugin=function(a){this._init(a)},JenScript.Model.inheritPrototype(JenScript.ZoomBoxPlugin,JenScript.Plugin),JenScript.Model.addMethods(JenScript.ZoomBoxPlugin,{_init:function(a){a=a||{},a.name=void 0!==a.name?a.name:"ZoomBoxPlugin",a.selectable=!0,a.priority=1e3,this.slaves=void 0!==a.slaves?a.slaves:[],this.zoomBoxDrawColor=a.zoomBoxDrawColor,this.zoomBoxFillColor=a.zoomBoxFillColor,this.zoomBoxStroke=void 0!==a.zoomBoxStroke?a.zoomBoxStroke:1,this.zoomBoxFillOpacity=void 0!==a.zoomBoxFillOpacity?a.zoomBoxFillOpacity:.3,this.zoomBoxStrokeOpacity=void 0!==a.zoomBoxStrokeOpacity?a.zoomBoxStrokeOpacity:1,this.mode=new JenScript.ZoomBoxMode(void 0!==a.mode?a.mode:"xy"),this.minimalDelatX=16,this.minimalDeltaY=16,this.drag=!1,this.lockEffect=!1,this.lockZoomingTransaction=!1,this.zoomBoxStartX,this.zoomBoxStartY,this.zoomBoxCurrentX,this.zoomBoxCurrentY,this.zoomFxBoxStartX,this.zoomFxBoxStartY,this.zoomFxBoxCurrentX,this.zoomFxBoxCurrentY,this.boxHistory=[],this.maxHistory=8,this.forwardBound,this.boxListeners=[],this.factor=void 0!==a.factor?a.factor:1.1,this.historyIndex=0,JenScript.Plugin.call(this,a)},onProjectionRegister:function(){var a=this;this.getProjection().addProjectionListener("boundChanged",function(){a.repaintPlugin()},a.toString())},fireEvent:function(a){for(var b=0;bthis.zoomBoxStartX+this.minimalDelatX&&this.zoomBoxCurrentY>this.zoomBoxStartY+this.minimalDeltaY)return!0}else if(this.mode.isBx()){if(this.zoomBoxCurrentX>this.zoomBoxStartX+this.minimalDelatX)return!0}else if(this.mode.isBy()&&this.zoomBoxCurrentY>this.zoomBoxStartY+this.minimalDeltaY)return!0;return!1},isForwardCondition:function(){if(this.mode.isBxy()){if(this.zoomBoxCurrentX=x;x++)a(x,function(a,b){w.repaintPlugin(),a===k&&setTimeout(function(){w.getProjection().bound(b[0],b[1],b[2],b[3]),w.createHistory();for(var a=0;a0&&(this.historyIndex-1<0&&(this.historyIndex=this.boxHistory.length),this.processHistory("backHistory",this.historyIndex-1))},nextHistory:function(){this.boxHistory.length>0&&(this.historyIndex+1>=this.boxHistory.length&&(this.historyIndex=-1),this.processHistory("nextHistory",this.historyIndex+1))},processHistory:function(a,b){var c=this.boxHistory[b];this.getProjection().bound(c.minx,c.maxx,c.miny,c.maxy),this.historyIndex=b,this.fireEvent(a)},paintMarker:function(){},paintTarget:function(a){var b=this.zoomBoxCurrentX-this.zoomBoxStartX,c=this.zoomBoxCurrentY-this.zoomBoxStartY,d=0,e=0,f=0,g=0;this.mode.isBxy()?(d=this.zoomBoxStartX,e=this.zoomBoxStartY,f=b,g=c):this.mode.isBx()?(d=this.zoomBoxStartX,e=0,f=b,g=this.getProjection().getPixelHeight()):this.mode.isBy()&&(d=0,e=this.zoomBoxStartY,f=this.getProjection().getPixelWidth(),g=c);var h=void 0!==this.zoomBoxFillColor?this.zoomBoxFillColor:this.getProjection().getThemeColor(),i=void 0!==this.zoomBoxDrawColor?this.zoomBoxDrawColor:this.getProjection().getThemeColor(),j=(new JenScript.SVGRect).origin(d,e).size(f,g).strokeWidth(this.zoomBoxStroke).stroke(i).fillOpacity(this.zoomBoxFillOpacity).strokeOpacity(this.zoomBoxStrokeOpacity).fill(h).toSVG();a.insertSVG(j)},paintZoomIn:function(a){var b=this.zoomFxBoxCurrentX-this.zoomFxBoxStartX,c=this.zoomFxBoxCurrentY-this.zoomFxBoxStartY,d=void 0!==this.zoomBoxFillColor?this.zoomBoxFillColor:this.getProjection().getThemeColor(),e=void 0!==this.zoomBoxDrawColor?this.zoomBoxDrawColor:this.getProjection().getThemeColor(),f=(new JenScript.SVGRect).origin(this.zoomFxBoxStartX,this.zoomFxBoxStartY).size(b,c).strokeWidth(this.zoomBoxStroke).stroke(e).fillOpacity(this.zoomBoxFillOpacity).strokeOpacity(this.zoomBoxStrokeOpacity).fill(d).toSVG();a.insertSVG(f)},paintPlugin:function(a,b){b===JenScript.ViewPart.Device&&this.lockZoomingTransaction?!this.lockEffect&&this.isValidateBound()?this.paintTarget(a,b):this.paintZoomIn(a):b!==JenScript.ViewPart.Device&&this.lockZoomingTransaction&&this.paintMarker(a,b)},getBoxStartDevicePoint:function(){return new JenScript.Point2D(this.zoomBoxStartX,this.zoomBoxStartY)},getBoxCurrentDevicePoint:function(){return new JenScript.Point2D(this.zoomBoxCurrentX,this.zoomBoxCurrentY)},getBoxStartUserPoint:function(){return this.getProjection().pixelToUser(this.getBoxStartDevicePoint())},getBoxCurrentUserPoint:function(){return this.getProjection().pixelToUser(this.getBoxCurrentDevicePoint())}})}(),function(){JenScript.ZoomBoxSynchronizer=function(a){this.init(a)},JenScript.Model.addMethods(JenScript.ZoomBoxSynchronizer,{init:function(a){this.boxesList=[],this.dispathingEvent=!1;var b=a.boxes;if(!this.dispathingEvent){this.dispathingEvent=!0;for(var c=0;ca)for(var b=-a,e=0;b>e;e++)c(e);else for(var b=a,e=0;b>e;e++)d(e)};a.deltaY&&e(a.deltaY*this.multiplier)},zoomIn:function(){if(!this.stopWheel){var a=this.getProjection().getPixelWidth(),b=this.getProjection().getPixelHeight(),c=void 0,d=void 0;this.mode.isWxy()?(c={x:a/this.factor,y:b-b/this.factor},d={x:a-a/this.factor,y:b/this.factor}):this.mode.isWx()?(c={x:a/this.factor,y:b},d={x:a-a/this.factor,y:0}):this.mode.isWy()&&(c={x:0,y:b-b/this.factor},d={x:a,y:b/this.factor});var e=this.getProjection().pixelToUser(c),f=this.getProjection().pixelToUser(d);this.getProjection().bound(e.x,f.x,e.y,f.y),this.fireWheelEvent("zoomIn")}},zoomOut:function(){if(!this.stopWheel){var a=this.getProjection().getPixelWidth(),b=this.getProjection().getPixelHeight(),c=void 0,d=void 0;this.mode.isWxy()?(c={x:-a/this.factor,y:b+b/this.factor},d={x:a+a/this.factor,y:-b/this.factor}):this.mode.isWx()?(c={x:-a/this.factor,y:b},d={x:a+a/this.factor,y:0}):this.mode.isWy()&&(c={x:0,y:b+b/this.factor},d={x:a,y:-b/this.factor});var e=this.getProjection().pixelToUser(c),f=this.getProjection().pixelToUser(d);this.getProjection().bound(e.x,f.x,e.y,f.y),this.fireWheelEvent("zoomOut")}}})}(),function(){JenScript.ZoomWheelSynchronizer=function(a){this.init(a)},JenScript.Model.addMethods(JenScript.ZoomWheelSynchronizer,{init:function(a){this.wheelList=[],this.dispathingEvent=!1;var b=a.wheels;if(!this.dispathingEvent){this.dispathingEvent=!0;for(var c=0;c