UNPKG

@doegis/core

Version:

DOE GIS API

3 lines (1 loc) 3.94 kB
import{_ as e}from"../../chunks/tslib.es6.js";import t from"../../core/Collection.js";import s from"../../core/Evented.js";import i from"../../core/Handles.js";import{watch as r,initial as a}from"../../core/reactiveUtils.js";import{property as o}from"../../core/accessorSupport/decorators/property.js";import"../../core/accessorSupport/ensureType.js";import"../../core/arrayUtils.js";import{subclass as l}from"../../core/accessorSupport/decorators/subclass.js";import n from"./ListItem.js";import{getItemLayers as c,findLayerListMode as d}from"./support/layerListUtils.js";const h={view:"view",viewLayers:"view-layers",mapLayers:"map-layers",layerViews:"layer-views",layerListMode:"layer-list-mode",children:"children"},m="hide",p=t.ofType(n);let y=class extends s.EventedAccessor{constructor(e){super(e),this._handles=new i,this.checkPublishStatusEnabled=!1,this.listItemCreatedFunction=null,this.operationalItems=new p,this.view=null}initialize(){this._handles.add([r((()=>[this.view,this.view?.ready]),(()=>this._viewHandles()),a),r((()=>[this.listItemCreatedFunction,this.checkPublishStatusEnabled]),(()=>this._recompileList()))],h.view)}destroy(){this._handles.destroy(),this._handles=null,this.view=null,this.operationalItems.removeAll()}get state(){const e=this.get("view");return this.get("view.ready")?"ready":e?"loading":"disabled"}triggerAction(e,t){e&&!e.disabled&&this.emit("trigger-action",{action:e,item:t})}moveListItem(e,t,s,i){const r=e?.layer;if(!r)return;const a=this.view?.map?.layers,o=t?c(t):a,l=s?c(s):a;if(!o||!l)return;const{operationalItems:n}=this,d=t?.children||n,h=s?.children||n,m=l.length-i;e.parent=s||null,d.includes(e)&&d.remove(e),o.includes(r)&&o.remove(r),h.includes(e)||h.add(e,m),l.includes(r)||l.add(r,m)}_createLayerViewHandles(e){const{_handles:t}=this;t.remove(h.layerViews),this._compileList(),e&&t.add(e.on("change",(()=>this._compileList())),h.layerViews)}_createMapLayerHandles(e){const{_handles:t}=this;t.remove(h.mapLayers),this._compileList(),e&&t.add(e.on("change",(()=>this._compileList())),h.mapLayers)}_createListItem(e){const{view:t,listItemCreatedFunction:s,checkPublishStatusEnabled:i}=this;return new n({checkPublishStatusEnabled:i,layer:e,listItemCreatedFunction:s,view:t})}_removeAllItems(){const{_handles:e,operationalItems:t}=this;t.forEach((t=>{e.remove(`${h.children}-${t.uid}`)})),t.removeAll()}_getViewableLayers(e){if(e)return e.filter((e=>d(e)!==m))}_watchLayersListMode(e){const{_handles:t}=this;t.remove(h.layerListMode),e&&e.forEach((e=>{"listMode"in e&&t.add(r((()=>e.listMode),(()=>this._compileList())),h.layerListMode)}))}_compileList(){const e=this.get("view.map.layers");this._watchLayersListMode(e);const t=this._getViewableLayers(e);t&&t.length?(this._createNewItems(t),this._removeItems(t),this._sortItems(t)):this._removeAllItems()}_createNewItems(e){const{operationalItems:t}=this;e.forEach((e=>{t.find((t=>t.layer===e))||t.add(this._createListItem(e))}))}_removeItems(e){const{_handles:t,operationalItems:s}=this,i=[];s.forEach((s=>{s&&e&&e.includes(s.layer)||(t.remove(`${h.children}-${s.uid}`),i.push(s))})),s.removeMany(i)}_sortItems(e){const{operationalItems:t}=this;t.sort(((t,s)=>{const i=e.indexOf(t.layer),r=e.indexOf(s.layer);return i>r?-1:i<r?1:0}))}_recompileList(){this._removeAllItems(),this._compileList()}_viewHandles(){const{_handles:e,view:t}=this;e.remove([h.mapLayers,h.layerViews,h.viewLayers]),this._compileList(),t&&t.ready&&e.add([r((()=>this.view?.map?.allLayers),(e=>this._createMapLayerHandles(e)),a),r((()=>this.view?.allLayerViews),(e=>this._createLayerViewHandles(e)),a)],h.viewLayers)}};e([o()],y.prototype,"checkPublishStatusEnabled",void 0),e([o()],y.prototype,"listItemCreatedFunction",void 0),e([o({type:p})],y.prototype,"operationalItems",void 0),e([o({readOnly:!0})],y.prototype,"state",null),e([o()],y.prototype,"view",void 0),y=e([l("esri.widgets.LayerList.LayerListViewModel")],y);const v=y;export{v as default};