UNPKG

@arcgis/core

Version:

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

3 lines (2 loc) 6.52 kB
/* COPYRIGHT Esri - https://js.arcgis.com/5.0.8/LICENSE.txt */ import{__decorate as e}from"tslib";import t from"../../core/Collection.js";import{EventedAccessor as s}from"../../core/Evented.js";import{watch as i,initial as a}from"../../core/reactiveUtils.js";import{property as r,subclass as l}from"../../core/accessorSupport/decorators.js";import n from"../LayerList/ListItem.js";import{getItemLayers as o,findLayerListMode as m}from"../LayerList/support/layerListUtils.js";const c={view:"view",basemap:"basemap",baseLayers:"base-layers",referenceLayers:"reference-layers",baseLayersListMode:"reference-layers-list-mode",referenceLayersListMode:"base-layers-list-mode",baseLayerViews:"base-layer-views",referenceLayerViews:"reference-layer-views",children:"children"},h="hide",d=t.ofType(n);let y=class extends s{constructor(e){super(e),this.baseItems=new d,this.baseListItemCreatedFunction=null,this.checkPublishStatusEnabled=!1,this.listModeDisabled=!1,this.referenceListItemCreatedFunction=null,this.referenceItems=new d,this.view=null,this._compileBaseList=this._compileBaseList.bind(this),this._compileReferenceList=this._compileReferenceList.bind(this)}initialize(){this.addHandles([i(()=>[this.view?.map?.basemap,!0===this.view?.ready,this.view?.basemapView],()=>this._watchBasemapLayers(),a),i(()=>[this.baseListItemCreatedFunction,this.checkPublishStatusEnabled,this.listModeDisabled],()=>this._baseListItemCreatedFunctionChanged()),i(()=>[this.referenceListItemCreatedFunction,this.checkPublishStatusEnabled,this.listModeDisabled],()=>this._referenceListItemCreatedFunctionChanged())],c.view)}destroy(){this.view=null,this._removeAllBaseItems(),this._removeAllReferenceItems()}get basemapTitle(){return this.view?.map?.basemap?.title??null}set basemapTitle(e){this._override("basemapTitle",e)}get state(){return this.view?.ready?"ready":this.view?"loading":"disabled"}get totalBaseItems(){return this.baseItems.flatten(e=>e.children).length}get totalReferenceItems(){return this.referenceItems.flatten(e=>e.children).length}triggerAction(e,t){e&&!e.disabled&&this.emit("trigger-action",{action:e,item:t})}moveListItem({targetItem:e,fromParentItem:t,toParentItem:s,from:i,to:a,newIndex:r}){const l=e?.layer;if(!l||"subtype-sublayer"===l.type||"sublayer"===l.type)return;const n=this.view?.map?.basemap,m=n?.baseLayers,c=n?.referenceLayers,h=t?o(t):"base"===i?m:c,d=s?o(s):"base"===a?m:c;if(!h||!d)return;const{baseItems:y,referenceItems:p}=this,b="base"===i?y:p,L="base"===a?y:p,f=t?.children||b,I=s?.children||L,u=d.length-r;e.parent=s||null,f.remove(e),h.remove(l),I.includes(e)||I.add(e,u),d.includes(l)||d.add(l,u),this._compileLists()}_createItemChangeHandles({items:e,key:t,callback:s}){this.removeHandles(t),s(),e&&this.addHandles(e.on("change",()=>s()),t)}_createListItem({layer:e,type:t}){const{view:s,baseListItemCreatedFunction:i,referenceListItemCreatedFunction:a,checkPublishStatusEnabled:r,listModeDisabled:l}=this;return new n({layer:e,checkPublishStatusEnabled:r,listItemCreatedFunction:"base"===t?i:a,listModeDisabled:l,view:s})}_watchLayersListMode({layers:e,key:t,callback:s}){this.removeHandles(t),e&&!this.listModeDisabled&&this.addHandles(i(()=>e.filter(e=>"listMode"in e).map(e=>e.listMode).toArray(),()=>s()),t)}_getViewableLayers(e){return e?this.listModeDisabled?e:e.filter(e=>m(e)!==h):void 0}_compileListItems({layers:e,items:t,key:s,type:i,callback:a}){this._watchLayersListMode({layers:e,key:s,callback:a});const r=this._getViewableLayers(e);r?.length?(this._createNewItems({type:i,items:t,layers:r}),this._removeItems({items:t,layers:r}),this._sortItems(t,r)):"base"===i?this._removeAllBaseItems():this._removeAllReferenceItems()}_compileReferenceList(){const{referenceItems:e}=this,t=this.view?.map?.basemap?.referenceLayers;this._compileListItems({type:"reference",layers:t,items:e,key:c.referenceLayersListMode,callback:this._compileReferenceList})}_compileBaseList(){const{baseItems:e}=this,t=this.view?.map?.basemap?.baseLayers;this._compileListItems({type:"base",layers:t,items:e,key:c.baseLayersListMode,callback:this._compileBaseList})}_compileLists(){this._compileReferenceList(),this._compileBaseList()}_createNewItems({items:e,layers:t,type:s}){t?.forEach(t=>{e.some(e=>e.layer===t)||e.add(this._createListItem({type:s,layer:t}))})}_removeItems({items:e,layers:t}){e&&e.forEach(s=>{if(!s)return;const i=t?.some(e=>s.layer===e);i||(this.removeHandles(`${c.children}-${s.uid}`),e.remove(s),s.destroy())})}_sortItems(e,t){e&&t&&e.sort((e,s)=>{const i=t.indexOf(e.layer),a=t.indexOf(s.layer);return i>a?-1:i<a?1:0})}_removeAllBaseItems(){this.baseItems.drain(e=>{this.removeHandles(`${c.children}-${e.uid}`),e.destroy()})}_removeAllReferenceItems(){this.referenceItems.drain(e=>{this.removeHandles(`${c.children}-${e.uid}`),e.destroy()})}_baseListItemCreatedFunctionChanged(){this._removeAllBaseItems(),this._compileLists()}_referenceListItemCreatedFunctionChanged(){this._removeAllReferenceItems(),this._compileLists()}_watchBasemapLayers(){const{view:e}=this;if(this.removeHandles([c.baseLayers,c.referenceLayers,c.basemap,c.baseLayerViews,c.referenceLayerViews]),!e?.ready)return this._removeAllBaseItems(),void this._removeAllReferenceItems();this._compileLists(),this.addHandles([i(()=>this.view?.map?.basemap?.baseLayers,e=>this._createItemChangeHandles({items:e,key:c.baseLayers,callback:this._compileBaseList}),a),i(()=>this.view?.map?.basemap?.referenceLayers,e=>this._createItemChangeHandles({items:e,key:c.referenceLayers,callback:this._compileReferenceList}),a),i(()=>this.view?.basemapView?.baseLayerViews,e=>this._createItemChangeHandles({items:e,key:c.baseLayerViews,callback:this._compileBaseList}),a),i(()=>this.view?.basemapView?.referenceLayerViews,e=>this._createItemChangeHandles({items:e,key:c.referenceLayerViews,callback:this._compileReferenceList}),a)],c.basemap)}};e([r({type:d,readOnly:!0})],y.prototype,"baseItems",void 0),e([r()],y.prototype,"basemapTitle",null),e([r()],y.prototype,"baseListItemCreatedFunction",void 0),e([r()],y.prototype,"checkPublishStatusEnabled",void 0),e([r({nonNullable:!0})],y.prototype,"listModeDisabled",void 0),e([r()],y.prototype,"referenceListItemCreatedFunction",void 0),e([r({type:d,readOnly:!0})],y.prototype,"referenceItems",void 0),e([r({readOnly:!0})],y.prototype,"state",null),e([r()],y.prototype,"totalBaseItems",null),e([r()],y.prototype,"totalReferenceItems",null),e([r()],y.prototype,"view",void 0),y=e([l("esri.widgets.BasemapLayerList.BasemapLayerListViewModel")],y);const p=y;export{p as default};