@arcgis/core
Version:
ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API
6 lines (5 loc) • 2.02 kB
JavaScript
/*
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{on as i,when as s,pausable 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 n}from"../../core/accessorSupport/decorators/subclass.js";let p=class extends t{constructor(e){super(e),this._viewpointHandle=null,this.group=null}initialize(){this.addHandles(i((()=>this.view?.ui),"expand",(e=>{const{target:t}=e;t&&t!==this&&t.expanded&&t.group&&t.group===this.group&&this._collapse()})))}destroy(){this._viewpointHandle=null,this.view=null}set autoCollapse(e){this._set("autoCollapse",e),this._watchViewpoint()}set expanded(e){const t=!!e;this._set("expanded",t);const i=this.view?.ui;i&&i.emit("expand",{target:this}),this._viewpointHandleChange(t)}get state(){return this.view?.ready?"ready":"disabled"}set view(e){this._get("view")!==e&&(this._set("view",e),e&&s((()=>e.ready),(()=>{this.view===e&&this._watchViewpoint()}),{once:!0,initial:!0}))}_viewpointHandleChange(e){this._viewpointHandle&&(e?s((()=>this.view?.stationary),(()=>this._viewpointHandle?.resume()),{once:!0,initial:!0}):this._viewpointHandle.pause())}_watchViewpoint(){const e="viewpoint";this.removeHandles(e),this._viewpointHandle=null;const{autoCollapse:t,view:i}=this;if(!i||!t)return;const s=o((()=>"3d"===i.type?i.camera:i.viewpoint),(()=>this._collapse()));this.addHandles(s,e),this._viewpointHandle=s}_collapse(){this.expanded=!1}};e([a({value:!1})],p.prototype,"autoCollapse",null),e([a({value:!1})],p.prototype,"expanded",null),e([a()],p.prototype,"group",void 0),e([a({readOnly:!0})],p.prototype,"state",null),e([a({value:null})],p.prototype,"view",null),p=e([n("esri.widgets.Expand.ExpandViewModel")],p);const r=p;export{r as default};