// JenScript - 1.3.2 2017-06-10 // http://jenscript.io - Copyright 2017 Sébastien Janaud. All Rights reserved !function(){JenScript.TranslateMode=function(a){this.mode=a.toLowerCase(),this.isTx=function(){return"x"===this.mode||"tx"===this.mode||"translatex"===this.mode},this.isTy=function(){return"y"===this.mode||"ty"===this.mode||"translatey"===this.mode},this.isTxy=function(){return"xy"===this.mode||"txy"===this.mode||"translatexy"===this.mode}},JenScript.TranslatePlugin=function(a){this._init(a)},JenScript.Model.inheritPrototype(JenScript.TranslatePlugin,JenScript.Plugin),JenScript.Model.addMethods(JenScript.TranslatePlugin,{_init:function(a){a=a||{},a.name=void 0!==a.name?a.name:"TranslatePlugin",a.selectable=!0,a.priority=1e3,this.slaves=void 0!==a.slaves?a.slaves:[],this.translateListeners=[],this.lockTranslate=!1,this.translateStartX,this.translateStartY,this.translateCurrentX,this.translateCurrentY,this.translateDx=0,this.translateDy=0,this.mode=new JenScript.TranslateMode(void 0!==a.mode?a.mode:"xy"),JenScript.Plugin.call(this,a),this.semanticX=0,this.semanticY=0,this.shifting=!1},getTranslateDx:function(){return this.translateDx},getTranslateDy:function(){return this.translateDy},isLockTranslate:function(){return this.lockTranslate},isTranslateAuthorized:function(a,b,c,d){return b===JenScript.ViewPart.Device&&this.isLockSelected()&&!this.isLockPassive()&&!this.isWidgetSensible(c,d)},onPress:function(a,b,c,d){a.preventDefault&&a.preventDefault(),this.isTranslateAuthorized(a,b,c,d)&&this.startTranslate(new JenScript.Point2D(c,d))},onRelease:function(a,b,c,d){this.isTranslateAuthorized(a,b,c,d)&&this.stopTranslate(new JenScript.Point2D(c,d))},onExit:function(a,b,c,d){this.stopTranslate(new JenScript.Point2D(c,d))},onMove:function(a,b,c,d){a.preventDefault&&a.preventDefault(),this.isTranslateAuthorized(a,b,c,d)&&this.lockTranslate&&this.boundTranslate(new JenScript.Point2D(c,d))},startTranslate:function(a){this.lockTranslate=!0,this.translateStartX=a.x,this.translateStartY=a.y,this.fireTranslateEvent("start")},stopTranslate:function(a){if(this.isLockTranslate()){var b=this.getProjection(),c=b.getPixelWidth(),d=b.getPixelHeight(),e={x:-this.semanticX,y:d-this.semanticY},f={x:c-this.semanticX,y:-this.semanticY},g=b.pixelToUser(e),h=b.pixelToUser(f);b.bound(g.x,h.x,g.y,h.y);for(var i=0;i=n;n++)m(n,function(a){a===d&&(c.lockPassive=!1,c.shifting=!1,c.stopTranslate(new JenScript.Point2D(k,l)))})}},boundTranslate:function(a){this.translateCurrentX=a.x,this.translateCurrentY=a.y;var b=this.translateCurrentX-this.translateStartX,c=this.translateCurrentY-this.translateStartY;this.mode.isTx()?c=0:this.mode.isTy()&&(b=0),this.processSemanticTranslate(b,c),this.translateStartX=this.translateCurrentX,this.translateStartY=this.translateCurrentY,this.fireTranslateEvent("bound")},processSemanticTranslate:function(a,b){this.translateDx=a,this.translateDy=b,this.semanticX=this.semanticX+a,this.semanticY=this.semanticY+b;for(var c=0;ce&&f>=h?d=Math.atan((f-h)/(g-e)):g>e&&h>f?d=Math.atan((f-h)/(g-e))+2*Math.PI:e>g?d=Math.atan((f-h)/(g-e))+Math.PI:g==e&&f>h?d=Math.PI/2:g==e&&h>f&&(d=3*Math.PI/2),this.needleGeometry.theta=JenScript.Math.toDegrees(d)},paintTranslateCompass:function(a){var b=this.getWidgetFolder();if(void 0!==b){this.solveCompass();var c=this.compassGeometry,d=this.needleGeometry,e=(new JenScript.SVGPath).moveTo(c.centerX-c.outerRadius,c.centerY).arcTo(c.outerRadius,c.outerRadius,0,1,1,c.centerX+c.outerRadius,c.centerY).arcTo(c.outerRadius,c.outerRadius,0,1,1,c.centerX-c.outerRadius,c.centerY).moveTo(c.centerX-c.innerRadius,c.centerY).arcTo(c.innerRadius,c.innerRadius,0,1,1,c.centerX+c.innerRadius,c.centerY).arcTo(c.innerRadius,c.innerRadius,0,1,1,c.centerX-c.innerRadius,c.centerY).attr("fill-rule","evenodd").strokeNone().fill(this.ringFillColor).fillOpacity(this.ringFillOpacity).close(),f=2,g=8,h=18,i=d.theta,j=(c.outerRadius+g)*Math.cos(JenScript.Math.toRadians(i)),k=(c.outerRadius+g)*Math.sin(JenScript.Math.toRadians(i)),l=(c.innerRadius+f)*Math.cos(JenScript.Math.toRadians(i-h)),m=(c.innerRadius+f)*Math.sin(JenScript.Math.toRadians(i-h)),n=(c.innerRadius+f)*Math.cos(JenScript.Math.toRadians(i+h)),o=(c.innerRadius+f)*Math.sin(JenScript.Math.toRadians(i+h)),p=(new JenScript.SVGPath).moveTo(c.centerX+j,c.centerY-k).lineTo(c.centerX+n,c.centerY-o).lineTo(c.centerX+l,c.centerY-m).strokeNone().fill(this.ringFillColor).strokeOpacity(this.ringDrawOpacity).close(),q=(new JenScript.SVGGroup).Id(this.Id);a.deleteGraphicsElement(this.Id),q.child(e.toSVG()).child(p.toSVG()),a.insertSVG(q.toSVG())}},paintWidget:function(a){void 0!==this.getHost()&&this.getHost().isLockTranslate()&&this.paintTranslateCompass(a)}})}(),function(){JenScript.TranslateSynchronizer=function(a){this.init(a)},JenScript.Model.addMethods(JenScript.TranslateSynchronizer,{init:function(a){this.translateList=[],this.dispathingEvent=!1;var b=a.translates;if(!this.dispathingEvent){this.dispathingEvent=!0;for(var c=0;c