// 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/has ../../core/handleUtils ../../core/Logger ../../core/unitUtils ../../geometry/support/aaBoundingRect ../../geometry/support/webMercatorUtils ../../geometry/Point".split(" "),function(h,C,D,w,x,y,k,z,A){function r(a,b){const c=t(a,b.spatialReference);if(!c)return null;switch(a.type){case "point":a.z=b.elevationAt(c.x,c.y);break;case "polyline":f.spatialReference=c.spatialReference;var e=a.hasM&&!a.hasZ;for(var d=0;dx.getLogger("esri.layers.support.ElevationSampler");class q{queryElevation(a){return r(a.clone(),this)}on(){return w.makeHandle()}projectIfRequired(a,b){return t(a,b)}}class v extends q{get spatialReference(){return this.extent.spatialReference}constructor(a,b,c){super();this.tile=a;this.noDataValue=c;c=a.tile.extent;this.extent=k.toExtent(c,b.spatialReference);this.extent.zmin=a.zmin;this.extent.zmax=a.zmax;this._aaExtent=c;c=y.getMetersPerUnitForSR(b.spatialReference);a=b.lodAt(a.tile.level).resolution* c;this.demResolution={min:a,max:a}}contains(a){a=this.projectIfRequired(a,this.spatialReference);return null==a?!1:this.containsAt(a.x,a.y)}containsAt(a,b){return k.containsXY(this._aaExtent,a,b)}elevationAt(a,b){if(!this.containsAt(a,b)){var c=this.extent;c=`${c.xmin}, ${c.ymin}, ${c.xmax}, ${c.ymax}`;p().warn("#elevationAt()",`Point used to sample elevation (${a}, ${b}) is outside of the sampler extent (${c})`);return this.noDataValue}return this.tile.sample(a,b)??this.noDataValue}}class B extends q{get spatialReference(){return this.extent.spatialReference}constructor(a, b,c){super();let e;"number"===typeof b?(this.noDataValue=b,e=null):(e=b,this.noDataValue=c);this.samplers=e?a.map(d=>new v(d,e,this.noDataValue)):a;if(a=this.samplers[0]){this.extent=a.extent.clone();const {min:d,max:g}=a.demResolution;this.demResolution={min:d,max:g};for(a=1;a