@doegis/core
Version:
DOE GIS API
3 lines (1 loc) • 5.8 kB
JavaScript
import{_ as e}from"../../chunks/tslib.es6.js";import s from"../../core/Collection.js";import t from"../../core/Evented.js";import{HandleOwnerMixin as i}from"../../core/HandleOwner.js";import{watch as r,initial as a}from"../../core/reactiveUtils.js";import{property as c}from"../../core/accessorSupport/decorators/property.js";import"../../core/accessorSupport/ensureType.js";import"../../core/arrayUtils.js";import{subclass as o}from"../../core/accessorSupport/decorators/subclass.js";import n from"../LayerList/ListItem.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"},l=s.ofType(n);let h=class extends(i(t.EventedAccessor)){constructor(e){super(e),this.baseItems=new l,this.baseListItemCreatedFunction=null,this.checkPublishStatusEnabled=!1,this.referenceListItemCreatedFunction=null,this.referenceItems=new l,this.view=null,this._compileBaseList=this._compileBaseList.bind(this),this._compileReferenceList=this._compileReferenceList.bind(this)}initialize(){this.handles.add([r((()=>[this.view?.map?.basemap,this.view,this.view?.ready,this.view?.basemapView]),(()=>this._watchBasemapLayers()),a),r((()=>[this.baseListItemCreatedFunction,this.checkPublishStatusEnabled]),(()=>this._baseListItemCreatedFunctionChanged())),r((()=>[this.referenceListItemCreatedFunction,this.checkPublishStatusEnabled]),(()=>this._referenceListItemCreatedFunctionChanged()))],m.view)}destroy(){this.view=null,this.baseItems.removeAll(),this.referenceItems.removeAll()}get basemapTitle(){return this.view?.map?.basemap?.title??null}set basemapTitle(e){this._override("basemapTitle",e)}get state(){return this.get("view.ready")?"ready":this.get("view")?"loading":"disabled"}triggerAction(e,s){e&&!e.disabled&&this.emit("trigger-action",{action:e,item:s})}transferListItem({listItem:e,from:s,to:t,newIndex:i}){const{referenceItems:r,baseItems:a}=this,{layer:c}=e,o=this.get("view.map.basemap.baseLayers"),n=this.get("view.map.basemap.referenceLayers");if(!o||!n||s===t)return;const m="reference"===t?r:a,l="reference"===s?n:o,h="reference"===t?n:o;("reference"===s?r:a).remove(e),l.remove(c),m.add(e,i),h.add(c,i)}_createItemChangeHandles({items:e,key:s,callback:t}){const{handles:i}=this;i.remove(s),t(),e&&i.add(e.on("change",(()=>t())),s)}_createListItem({layer:e,type:s}){const{view:t,baseListItemCreatedFunction:i,referenceListItemCreatedFunction:r,checkPublishStatusEnabled:a}=this;return new n({layer:e,checkPublishStatusEnabled:a,listItemCreatedFunction:"base"===s?i:r,view:t})}_watchLayersListMode({layers:e,key:s,callback:t}){const{handles:i}=this;i.remove(s),e&&e.forEach((e=>{i.add(r((()=>e.listMode),(()=>t())),s)}))}_compileListItems({layers:e,items:s,key:t,type:i,callback:r}){this._watchLayersListMode({layers:e,key:t,callback:r}),this._createNewItems({type:i,items:s,layers:e}),this._removeItems({items:s,layers:e}),this._sortItems(s,e)}_compileReferenceList(){const{referenceItems:e}=this,s=this.get("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.get("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&&s.forEach((s=>{e.find((e=>e.layer===s))||e.add(this._createListItem({type:t,layer:s}))}))}_removeItems({items:e,layers:s}){const{handles:t}=this;e&&e.forEach((i=>{if(!i)return;s&&s.find((e=>i.layer===e))||(t.remove(`${m.children}-${i.uid}`),e.remove(i))}))}_sortItems(e,s){e&&e.sort(((e,t)=>{const i=s.indexOf(e.layer),r=s.indexOf(t.layer);return i>r?-1:i<r?1:0}))}_removeAllBaseItems(){const{handles:e,baseItems:s}=this;s.forEach((s=>{e.remove(`${m.children}-${s.uid}`)})),s.removeAll()}_removeAllReferenceItems(){const{handles:e,referenceItems:s}=this;s.forEach((s=>{e.remove(`${m.children}-${s.uid}`)})),s.removeAll()}_baseListItemCreatedFunctionChanged(){this._removeAllBaseItems(),this._compileLists()}_referenceListItemCreatedFunctionChanged(){this._removeAllReferenceItems(),this._compileLists()}_watchBasemapLayers(){const{handles:e,view:s}=this;e.remove([m.baseLayers,m.referenceLayers,m.basemap,m.baseLayerViews,m.referenceLayerViews]),this._compileLists(),s&&s.ready&&e.add([r((()=>this.view?.map?.basemap?.baseLayers),(e=>this._createItemChangeHandles({items:e,key:m.baseLayers,callback:this._compileBaseList})),a),r((()=>this.view?.map?.basemap?.referenceLayers),(e=>this._createItemChangeHandles({items:e,key:m.referenceLayers,callback:this._compileReferenceList})),a),r((()=>this.view?.basemapView?.baseLayerViews),(e=>this._createItemChangeHandles({items:e,key:m.baseLayerViews,callback:this._compileBaseList})),a),r((()=>this.view?.basemapView?.referenceLayerViews),(e=>this._createItemChangeHandles({items:e,key:m.referenceLayerViews,callback:this._compileReferenceList})),a)],m.basemap)}};e([c({type:l,readOnly:!0})],h.prototype,"baseItems",void 0),e([c()],h.prototype,"basemapTitle",null),e([c()],h.prototype,"baseListItemCreatedFunction",void 0),e([c()],h.prototype,"checkPublishStatusEnabled",void 0),e([c()],h.prototype,"referenceListItemCreatedFunction",void 0),e([c({type:l,readOnly:!0})],h.prototype,"referenceItems",void 0),e([c({readOnly:!0})],h.prototype,"state",null),e([c()],h.prototype,"view",void 0),e([c()],h.prototype,"transferListItem",null),h=e([o("esri.widgets.BasemapLayerList.BasemapLayerListViewModel")],h);const d=h;export{d as default};