// 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 ../../../core/has ./interfaces ./TerrainConst ./terrainUtils ./tileUtils".split(" "),function(n,q,r,y,z,A){class t{get updating(){return!!this._tileRequested}init(a,d,e,b){this.tile=a;this._layerIdx=d;this._layerClass=e;this._suspended=b;this._tileLayerInfo=a.getLayerInfo(d,e);this._tileRequested=null;a=this._findAncestorWithData();this._setUpsampleTile(a)}startLoading(){return this._requestNext()}dispose(){this._tileRequested&&(this._tileRequested.unrequestLayerData(this._layerIdx, this._layerClass,this),this._tileRequested=null);this._tileLayerInfo=this.tile=null}setSuspension(a){a!==this._suspended&&((this._suspended=a)?this._tileRequested&&(this._tileRequested.unrequestLayerData(this._layerIdx,this._layerClass,this),this._tileRequested=null):this._tileLayerInfo.data||this.update())}update(){const a=this._findAncestorWithData();this._setUpsampleTile(a);return this._requestNext()}dataArrived(a,d){this._setUpsampleTile(a,d);this._tileRequested=null;a===this.tile?this.tile.updateRenderData(this._layerClass, r.TextureUpdate.FADING,d):this._requestNext()}dataMissing(){this._tileRequested=null;this._tileLayerInfo.data=null;this._requestNext()}_agentDone(){this.tile.agentDone(this._layerIdx,this._layerClass);this.dispose()}_requestNext(){if(this._suspended)return!0;const a=this._findNextDownload();if(this._tileRequested){if(a===this._tileRequested)return!0;this._tileRequested.unrequestLayerData(this._layerIdx,this._layerClass,this);this._tileRequested=null}null!=a?a.requestLayerData(this._layerIdx,this._layerClass, this)&&(this._tileRequested=a):this._agentDone();return!!this._tileRequested}_findNextDownload(){const a=this._layerIdx,d=this._layerClass;var e=this.tile.surface.layerViewByIndex(a,d),b=z.getLayerWithExtentRange(e);const {minLevel:u,maxLevel:B}=e.dataLevelRange,g=this._desiredMinLevelDelta,C=this._progressiveLevelModulo+g,D=this._scaleRangeEnabled?A.fallsWithinLayer:()=>!0;let c=this.tile;const h=c.level;let f;const k=this._tileLayerInfo.upsampleInfo,v=null!=k?k.tile.level:-1,E=null!=k?v-h>=g:!1, F=b?.tilemapCache;for(e="vector-tile-3d"===e.type?e.schemaHelper:null;c&&D(c,b,!1)&&c.level>=u;){const l=c.level,w=h-l,m=c.layerInfo[d][a];if(m.data&&w>=g){(!E||l>v)&&this._setUpsampleTile(c);m.dataInvalidated&&(f=c);break}const p=e?.getLevelRowColumn(c.lij)??c.lij;if("unavailable"!==F?.getAvailability(p[0],p[1],p[2])&&l<=B&&!m.data&&!m.dataMissing){if(!f||c.level===u||0===l%y.progressiveLoadingModulo||h-f.level=C)break}c=c.parent}null!=f&&h-f.level=d)return b;e=b}return e}_setUpsampleTile(a,d){this._tileLayerInfo.setUpsampleInfo(this.tile,a);this.tile.updateRenderData(this._layerClass,r.TextureUpdate.FADING,d)}get test(){}}class G extends t{constructor(){super(...arguments); this.type="none"}get _desiredMinLevelDelta(){throw x;}get _progressiveLevelModulo(){throw x;}dispose(){}}const x=Error("Abstract method called on TileAgent");q=new G;n.TileAgent=t;n.tileAgentDone=q;Object.defineProperty(n,Symbol.toStringTag,{value:"Module"})});