@arcgis/core
Version:
ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API
3 lines (2 loc) • 1.97 kB
JavaScript
/* COPYRIGHT Esri - https://js.arcgis.com/5.0.8/LICENSE.txt */
import{__decorate as i}from"tslib";import{after as e}from"../core/promiseUtils.js";import{watch as t}from"../core/reactiveUtils.js";import{property as s,subclass as o}from"../core/accessorSupport/decorators.js";import n from"./Widget.js";import r from"./Spinner/SpinnerViewModel.js";import{tsx as l}from"./support/widget.js";const a="esri-spinner",h={base:a,spinnerStart:`${a}--start`,spinnerFinish:`${a}--finish`};let c=class extends n{constructor(i,e){super(i,e),this._animationDelay=500,this._animationPromise=null,this.viewModel=new r}initialize(){this.addHandles(t(()=>this.visible,i=>this._visibleChange(i)))}destroy(){this._animationPromise=null}get location(){return this.viewModel.location}set location(i){this.viewModel.location=i}get view(){return this.viewModel.view}set view(i){this.viewModel.view=i}get visible(){return this.viewModel.visible}set visible(i){this.viewModel.visible=i}show(i){const{location:e,promise:t}=i??{};e&&(this.viewModel.location=e),this.visible=!0;const s=()=>this.hide();t?.catch(()=>{}).then(s)}hide(){this.visible=!1}render(){const{visible:i}=this,{screenLocation:e}=this.viewModel,t=!!e,s=i&&t,o=!i&&t,n={[h.spinnerStart]:s,[h.spinnerFinish]:o},r=this._getPositionStyles();return l("div",{class:this.classes(h.base,n),styles:r})}_visibleChange(i){if(i)return void(this.viewModel.screenLocationEnabled=!0);const t=e(this._animationDelay);this._animationPromise=t,t.catch(()=>{}).then(()=>{this._animationPromise===t&&(this.viewModel.screenLocationEnabled=!1,this._animationPromise=null)})}_getPositionStyles(){const{screenLocation:i,view:e}=this.viewModel;if(null==e||null==i)return{};const{padding:t}=e;return{left:i.x-t.left+"px",top:i.y-t.top+"px"}}};i([s()],c.prototype,"location",null),i([s()],c.prototype,"view",null),i([s({type:r})],c.prototype,"viewModel",void 0),i([s()],c.prototype,"visible",null),c=i([o("esri.widgets.Spinner")],c);export{c as default};