UNPKG

@arcgis/core

Version:

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

6 lines (5 loc) 3.25 kB
/* 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 r from"../../../core/Accessor.js";import t from"../../../core/Error.js";import{watch as i,initial as o}from"../../../core/reactiveUtils.js";import{property as s}from"../../../core/accessorSupport/decorators/property.js";import"../../../core/has.js";import"../../../core/Logger.js";import"../../../core/RandomLCG.js";import{subclass as a}from"../../../core/accessorSupport/decorators/subclass.js";import n from"../../../views/interactive/snapping/FeatureSnappingLayerSource.js";import p from"../../../views/interactive/snapping/SnappingOptions.js";import{canDisplayLayer as l}from"../../LayerList/support/layerListUtils.js";import{SnappingLayerListViewModel as d}from"./SnappingLayerListViewModel.js";let c=class extends r{constructor(e){super(e),this.layerListViewModel=new d,this.snappingOptions=new p,this.view=null}initialize(){this.addHandles([i((()=>({viewModel:this.layerListViewModel,view:this.view})),(({viewModel:e,view:r})=>{e.view=r}),o),i((()=>({viewModel:this.layerListViewModel,sources:this.snappingOptions?.featureSources})),(({viewModel:e,sources:r})=>{e.featureSnappingSources=r}),o)])}get allLayersEnabled(){return(this.layerListViewModel?.selectableItems??[]).every((e=>"enabled"===e.enabled))}get allLayersDisabled(){return(this.layerListViewModel?.selectableItems??[]).every((e=>!e.enabled))}get layersEnabledCount(){return this.layerListViewModel?.selectableItems?.filter((e=>"enabled"===e.enabled)).length??0}get state(){return this.snappingOptions?"ready":"disabled"}toggleSnappingForLayers(e,r){e?.forEach((e=>r?this.enableSnappingForLayer(e):this.disableSnappingForLayer(e)))}toggleSnappingForAllLayers(e){this.layerListViewModel.selectableItems.forEach((({layer:r})=>{const t=r?.id;e?this.enableSnappingForLayer(t):this.disableSnappingForLayer(t)}))}enableSnappingForLayer(e){const r=this._findSnappingSourceForLayer(e)??this._makeSnappingSourceForLayer(e);r&&(r.enabled=!0)}disableSnappingForLayer(e){const r=this._findSnappingSourceForLayer(e);r&&(r.enabled=!1)}updateEnabledFeatureSources(e){for(const r of this.snappingOptions.featureSources)l(r.layer)&&(r.enabled=e.includes(r.layer.id))}_findSnappingSourceForLayer(e){return this.snappingOptions.featureSources.find((r=>r.layer.id===e))}_makeSnappingSourceForLayer(e){const r=this.layerListViewModel.operationalItemsFlat.find((r=>r.layer?.id===e))?.layer;if(!r)throw new t("snapping-controls:layer-not-found",`cannot enable snapping for layer with id ${e} because no such layer was found in the view`);if("group"===r.type)return;const i=new n({layer:r});return this.snappingOptions.featureSources.add(i),i}};e([s()],c.prototype,"allLayersEnabled",null),e([s()],c.prototype,"allLayersDisabled",null),e([s({constructOnly:!0})],c.prototype,"layerListViewModel",void 0),e([s()],c.prototype,"layersEnabledCount",null),e([s({type:p,nonNullable:!0})],c.prototype,"snappingOptions",void 0),e([s()],c.prototype,"state",null),e([s()],c.prototype,"view",void 0),c=e([a("esri.widgets.support.SnappingControls.SnappingControlsViewModel")],c);const y=c;export{y as default};