@arcgis/core
Version:
ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API
6 lines (5 loc) • 6.83 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 s from"../../core/Collection.js";import t from"../../core/Evented.js";import{watch as i,initial as a}from"../../core/reactiveUtils.js";import{property as r}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 o from"../LayerList/ListItem.js";import{getItemLayers as n,findLayerListMode as c}from"../LayerList/support/layerListUtils.js";const m={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"},d="hide",h=s.ofType(o);let p=class extends t.EventedAccessor{constructor(e){super(e),this.baseItems=new h,this.baseListItemCreatedFunction=null,this.checkPublishStatusEnabled=!1,this.listModeDisabled=!1,this.referenceListItemCreatedFunction=null,this.referenceItems=new h,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()))],m.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,s){e&&!e.disabled&&this.emit("trigger-action",{action:e,item:s})}moveListItem({targetItem:e,fromParentItem:s,toParentItem:t,from:i,to:a,newIndex:r}){const l=e?.layer;if(!l||"subtype-sublayer"===l.type||"sublayer"===l.type)return;const o=this.view?.map?.basemap,c=o?.baseLayers,m=o?.referenceLayers,d=s?n(s):"base"===i?c:m,h=t?n(t):"base"===a?c:m;if(!d||!h)return;const{baseItems:p,referenceItems:y}=this,b="base"===i?p:y,L="base"===a?p:y,f=s?.children||b,u=t?.children||L,I=h.length-r;e.parent=t||null,f.remove(e),d.remove(l),u.includes(e)||u.add(e,I),h.includes(l)||h.add(l,I),this._compileLists()}_createItemChangeHandles({items:e,key:s,callback:t}){this.removeHandles(s),t(),e&&this.addHandles(e.on("change",(()=>t())),s)}_createListItem({layer:e,type:s}){const{view:t,baseListItemCreatedFunction:i,referenceListItemCreatedFunction:a,checkPublishStatusEnabled:r,listModeDisabled:l}=this;return new o({layer:e,checkPublishStatusEnabled:r,listItemCreatedFunction:"base"===s?i:a,listModeDisabled:l,view:t})}_watchLayersListMode({layers:e,key:s,callback:t}){this.removeHandles(s),e&&!this.listModeDisabled&&this.addHandles(i((()=>e.filter((e=>"listMode"in e)).map((e=>e.listMode)).toArray()),(()=>t())),s)}_getViewableLayers(e){return e?this.listModeDisabled?e:e.filter((e=>c(e)!==d)):void 0}_compileListItems({layers:e,items:s,key:t,type:i,callback:a}){this._watchLayersListMode({layers:e,key:t,callback:a});const r=this._getViewableLayers(e);r?.length?(this._createNewItems({type:i,items:s,layers:r}),this._removeItems({items:s,layers:r}),this._sortItems(s,r)):"base"===i?this._removeAllBaseItems():this._removeAllReferenceItems()}_compileReferenceList(){const{referenceItems:e}=this,s=this.view?.map?.basemap?.referenceLayers;this._compileListItems({type:"reference",layers:s,items:e,key:m.referenceLayersListMode,callback:this._compileReferenceList})}_compileBaseList(){const{baseItems:e}=this,s=this.view?.map?.basemap?.baseLayers;this._compileListItems({type:"base",layers:s,items:e,key:m.baseLayersListMode,callback:this._compileBaseList})}_compileLists(){this._compileReferenceList(),this._compileBaseList()}_createNewItems({items:e,layers:s,type:t}){s?.forEach((s=>{e.some((e=>e.layer===s))||e.add(this._createListItem({type:t,layer:s}))}))}_removeItems({items:e,layers:s}){e&&e.forEach((t=>{if(!t)return;const i=s?.some((e=>t.layer===e));i||(this.removeHandles(`${m.children}-${t.uid}`),e.remove(t),t.destroy())}))}_sortItems(e,s){e&&s&&e.sort(((e,t)=>{const i=s.indexOf(e.layer),a=s.indexOf(t.layer);return i>a?-1:i<a?1:0}))}_removeAllBaseItems(){this.baseItems.drain((e=>{this.removeHandles(`${m.children}-${e.uid}`),e.destroy()}))}_removeAllReferenceItems(){this.referenceItems.drain((e=>{this.removeHandles(`${m.children}-${e.uid}`),e.destroy()}))}_baseListItemCreatedFunctionChanged(){this._removeAllBaseItems(),this._compileLists()}_referenceListItemCreatedFunctionChanged(){this._removeAllReferenceItems(),this._compileLists()}_watchBasemapLayers(){const{view:e}=this;if(this.removeHandles([m.baseLayers,m.referenceLayers,m.basemap,m.baseLayerViews,m.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:m.baseLayers,callback:this._compileBaseList})),a),i((()=>this.view?.map?.basemap?.referenceLayers),(e=>this._createItemChangeHandles({items:e,key:m.referenceLayers,callback:this._compileReferenceList})),a),i((()=>this.view?.basemapView?.baseLayerViews),(e=>this._createItemChangeHandles({items:e,key:m.baseLayerViews,callback:this._compileBaseList})),a),i((()=>this.view?.basemapView?.referenceLayerViews),(e=>this._createItemChangeHandles({items:e,key:m.referenceLayerViews,callback:this._compileReferenceList})),a)],m.basemap)}};e([r({type:h,readOnly:!0})],p.prototype,"baseItems",void 0),e([r()],p.prototype,"basemapTitle",null),e([r()],p.prototype,"baseListItemCreatedFunction",void 0),e([r()],p.prototype,"checkPublishStatusEnabled",void 0),e([r({nonNullable:!0})],p.prototype,"listModeDisabled",void 0),e([r()],p.prototype,"referenceListItemCreatedFunction",void 0),e([r({type:h,readOnly:!0})],p.prototype,"referenceItems",void 0),e([r({readOnly:!0})],p.prototype,"state",null),e([r()],p.prototype,"totalBaseItems",null),e([r()],p.prototype,"totalReferenceItems",null),e([r()],p.prototype,"view",void 0),p=e([l("esri.widgets.BasemapLayerList.BasemapLayerListViewModel")],p);const y=p;export{y as default};