// All material copyright Esri, All Rights Reserved, unless otherwise specified. // See https://js.arcgis.com/4.30/esri/copyright.txt for details. //>>built define("exports ../../geometry ../../core/screenUtils ../../layers/graphics/dehydratedPoint ../../layers/graphics/hydratedFeatures ../../support/elevationInfoUtils ../../geometry/SpatialReference ../../geometry/Point".split(" "),function(e,t,h,k,l,f,m,n){class p{constructor(a,b,c,d=null){this._elevationInfo=a;this.defaultZ=b;this._view=c;this._excludeGraphics=d}screenToMap(a){const {defaultZ:b,_view:c}=this;a=c.sceneIntersectionHelper.intersectElevationFromScreen(h.createScreenPointArray(a.x,a.y), this._elevationInfo,b??0,this._excludeGraphics);null==b&&null!=a&&(a.z=void 0);return a}mapToScreen(a){a=k.makeDehydratedPoint(a.x,a.y,f.getConvertedElevation(this._view,a,this._elevationInfo),a.spatialReference);return this._view.toScreen(a)}constrainZ(a){const {defaultZ:b}=this;null!=b&&a.z!==b&&(a=l.clonePoint(a),a.z=b);return a}}class q{constructor(a,b,c=[]){this.view=a;this.elevationInfo=b;this.exclude=c}screenToMap(a){a=this.view.toMap(a,{exclude:this.exclude,excludeHud:!0});null!=a&&(a.z=f.getZForElevationMode(a, this.view,this.elevationInfo));return a}mapToScreen(a){let b=a;null!=this.elevationInfo&&(b=k.makeDehydratedPoint(a.x,a.y,f.getConvertedElevation(this.view,a,this.elevationInfo),a.spatialReference));return this.view.toScreen(b)}constrainZ(a){return a}}class r{constructor(a,b=!1,c=0){this.view=a;this.hasZ=b;this.defaultZ=c;this.mapToScreen=d=>a.toScreen(d);this.screenToMap=b?d=>{d=a.toMap(d);d.z=c;return d}:d=>a.toMap(d)}constrainZ(a){const {defaultZ:b}=this;this.hasZ&&a.z!==b&&(a=l.clonePoint(a), a.z=b);return a}}class g{screenToMap(a){const {x:b,y:c}=a;return new n({x:b,y:c,spatialReference:g.spatialReference})}mapToScreen(a){return h.createScreenPoint(a.x,a.y)}constrainZ(a){return a}}g.spatialReference=new m;e.ElevationDrawSurface=p;e.MapDrawSurface=r;e.SceneDrawSurface=q;e.ScreenDrawSurface=g;Object.defineProperty(e,Symbol.toStringTag,{value:"Module"})});