// All material copyright Esri, All Rights Reserved, unless otherwise specified. // See https://js.arcgis.com/4.30/esri/copyright.txt for details. //>>built define("../../../chunks/tslib.es6 ../../../Viewpoint ../../../core/Accessor ../../../core/has ../../../core/maybe ../../../core/time ../../../core/accessorSupport/decorators/property ../../../core/Logger ../../../core/RandomLCG ../../../core/accessorSupport/decorators/subclass ../../../geometry/Point ../viewpointUtils ./ZoomBox ./actions/Pan ./actions/Pinch ./actions/Rotate".split(" "),function(f,d,x,y,n,z,g,G,H,A,B,k,C,D,E,F){const q=new d({targetGeometry:new B}),r=[0,0];d=class extends x{constructor(b){super(b); this.animationManager=this._lastEventTimestamp=this._endTimer=null;this.interacting=!1}initialize(){this.pan=new D({navigation:this});this.rotate=new F({navigation:this});this.pinch=new E({navigation:this});this.zoomBox=new C({view:this.view,navigation:this})}destroy(){this.pan=n.destroyMaybe(this.pan);this.rotate=n.destroyMaybe(this.rotate);this.pinch=n.destroyMaybe(this.pinch);this.zoomBox=n.destroyMaybe(this.zoomBox);this.animationManager=null}begin(){this.stop();this._set("interacting",!0)}end(){this._lastEventTimestamp= performance.now();this._startTimer(250)}async zoom(b,a=this._getDefaultAnchor()){this.begin();if(this.view.constraints.snapToZoom&&this.view.constraints.effectiveLODs)return 1>b?this.zoomIn(a):this.zoomOut(a);this.setViewpoint(a,b,0,[0,0])}async zoomIn(b){var a=this.view;a=a.constraints.snapToNextScale(a.scale);return this._zoomToScale(a,b)}async zoomOut(b){var a=this.view;a=a.constraints.snapToPreviousScale(a.scale);return this._zoomToScale(a,b)}setViewpoint(b,a,c,e){this.begin();this.view.stateManager.state.viewpoint= this._scaleRotateTranslateViewpoint(this.view.viewpoint,b,a,c,e);this.end()}setViewpointImmediate(b,a=0,c=[0,0],e=this._getDefaultAnchor()){this.view.stateManager.state.viewpoint=this._scaleRotateTranslateViewpoint(this.view.viewpoint,e,b,a,c)}continuousRotateClockwise(){const b=this.view.viewpoint;this.animationManager?.animateContinuous(b,a=>{k.rotateBy(a,a,-1)})}continuousRotateCounterclockwise(){const b=this.view.viewpoint;this.animationManager?.animateContinuous(b,a=>{k.rotateBy(a,a,1)})}resetRotation(){this.view.constraints.rotationEnabled&& (this.view.rotation=0)}continuousPanLeft(){this._continuousPan([-10,0])}continuousPanRight(){this._continuousPan([10,0])}continuousPanUp(){this._continuousPan([0,10])}continuousPanDown(){this._continuousPan([0,-10])}continuousPanVector({x:b,y:a}){this._continuousPan([10*b,10*a])}stop(){this.pan.stopMomentumNavigation();this.animationManager?.stop();this.end();null!==this._endTimer&&(clearTimeout(this._endTimer),this._endTimer=null,this._set("interacting",!1))}_continuousPan(b){const a=this.view.viewpoint; this.animationManager?.animateContinuous(a,c=>{k.translateBy(c,c,b);this.view.constraints.constrainByGeometry(c)})}_startTimer(b){return null!==this._endTimer?this._endTimer:this._endTimer=setTimeout(()=>{this._endTimer=null;const a=performance.now()-(this._lastEventTimestamp??0);250>a?this._endTimer=this._startTimer(a):this._set("interacting",!1)},b)}_getDefaultAnchor(){const {size:b,padding:{left:a,right:c,top:e,bottom:h}}=this.view;r[0]=.5*(b[0]-c+a);r[1]=.5*(b[1]-h+e);return r}async _zoomToScale(b, a=this._getDefaultAnchor()){const {view:c}=this,{constraints:e,scale:h,viewpoint:l,size:t,padding:u}=c,m=e.canZoomInTo(b),v=e.canZoomOutTo(b);if(!(bh&&!v))return k.padAndScaleAndRotateBy(q,l,b/h,0,a,t,u),e.constrainByGeometry(q),c.goTo(q,{animate:!0,animationMode:"always",duration:z.Milliseconds(y("mapview-essential-goto-duration")),pickClosestTarget:!1})}_scaleRotateTranslateViewpoint(b,a,c,e,h){var {view:l}=this;const {size:t,padding:u,constraints:m,scale:v,viewpoint:w}=l;var p=v*c;l= m.canZoomInTo(p);p=m.canZoomOutTo(p);if(1>c&&!l||1