UNPKG

@arcgis/core

Version:

ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API

6 lines (5 loc) 2.66 kB
/* All material copyright ESRI, All Rights Reserved, unless otherwise specified. See https://js.arcgis.com/4.33/esri/copyright.txt for details. */ import{_ as e}from"../../../chunks/tslib.es6.js";import t from"../../../core/Accessor.js";import s from"../../../core/Identifiable.js";import{isAbortError as r}from"../../../core/promiseUtils.js";import{watch as i,whenOnce as o}from"../../../core/reactiveUtils.js";import{property as a}from"../../../core/accessorSupport/decorators/property.js";import"../../../core/has.js";import"../../../core/Logger.js";import"../../../core/RandomLCG.js";import{subclass as l}from"../../../core/accessorSupport/decorators/subclass.js";import{findSpatialReference as n}from"../../../support/basemapUtils.js";let p=class extends(s.IdentifiableMixin(t)){constructor(e){super(e),this.compatibilityFunction=null,this.error=null,this.state="loading",this.view=null}initialize(){const e=()=>this.refresh();this.addHandles([i((()=>this.basemap?.loadStatus),e),i((()=>this.compatibilityFunction),e),i((()=>this.view&&"basemapTerrain"in this.view&&this.view.basemapTerrain?.tilingScheme),e),i((()=>this.view?.ready),e),i((()=>this.view?.spatialReference),e)]),this.refresh()}destroy(){this._cancelRefresh(),this.basemap=null,this.compatibilityFunction=null,this.view=null}get _spatialReferenceTask(){return n(this.view,this.basemap)}set basemap(e){e&&e.load().catch((()=>{})),this._set("basemap",e)}get spatialReference(){return this._spatialReferenceTask.spatialReference}refresh(){this._cancelRefresh(),this._set("state","loading");const e=this.basemap?.loadStatus;if("loaded"!==e&&"failed"!==e)return;if(!this.compatibilityFunction)return void("loaded"===e?(this._set("state","ready"),this._set("error",null)):(this._set("state","error"),this._set("error",this.basemap.loadError)));const t=new AbortController,{signal:s}=t;this.compatibilityFunction(this,{signal:s}).then((()=>o((()=>!this._spatialReferenceTask.updating),s))).then((()=>{this._set("state","ready"),this._set("error",null)})).catch((e=>{r(e)||(this._set("state","error"),this._set("error",e))})),this._refreshController=t}_cancelRefresh(){this._refreshController&&(this._refreshController.abort(),this._refreshController=null)}};e([a({readOnly:!0})],p.prototype,"_spatialReferenceTask",null),e([a()],p.prototype,"basemap",null),e([a()],p.prototype,"compatibilityFunction",void 0),e([a({readOnly:!0})],p.prototype,"error",void 0),e([a({readOnly:!0})],p.prototype,"spatialReference",null),e([a({readOnly:!0})],p.prototype,"state",void 0),e([a()],p.prototype,"view",void 0),p=e([l("esri.widgets.BasemapGallery.support.BasemapGalleryItem")],p);const h=p;export{h as default};