@arcgis/core
Version:
ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API
6 lines (5 loc) • 3.18 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 t from"../../../core/Accessor.js";import{difference as r}from"../../../core/arrayUtils.js";import o from"../../../core/Collection.js";import i from"../../../core/Logger.js";import{property as s}from"../../../core/accessorSupport/decorators/property.js";import"../../../core/has.js";import{subclass as a}from"../../../core/accessorSupport/decorators/subclass.js";import n from"./FeatureSnappingLayerSource.js";import{defaults as l}from"./Settings.js";let u=class extends t{constructor(e){super(e),this.enabled=!1,this.enabledToggled=!1,this.forceDisabled=!1,this.selfEnabled=!0,this.featureEnabled=!0,this.gridEnabled=!1,this.attributeRulesEnabled=!1,this.featureSources=new o,this.distance=l.distance,this.touchSensitivityMultiplier=l.touchSensitivityMultiplier}get effectiveEnabled(){return!this.forceDisabled&&(this.enabledToggled?!this.enabled:this.enabled)}get effectiveGridEnabled(){return this.effectiveEnabled&&this.gridEnabled}get effectiveSelfEnabled(){return this.effectiveEnabled&&this.selfEnabled}get effectiveFeatureEnabled(){return this.effectiveEnabled&&this.featureEnabled}get _effectiveFeatureSources(){const e=this.featureSources;e.some(c)&&i.getLogger(this).warnOnce("Do not configure SubtypeGroupLayer sources in SnappingOptions.featureSources directly. Create a FeatureSnappingLayerSource for each SubtypeSublayer.");const t=e.filter(d),s=this._get("_effectiveFeatureSources")?.filter(c)??new o;for(const r of t){const e=s.find((e=>e.layer===r.layer.parent));if(e)e.sublayerSources.includes(r)||e.sublayerSources.add(r);else if(r.layer.parent){const e=new n({layer:r.layer.parent});e.sublayerSources.add(r),s.add(e)}}for(const r of s){const e=r.sublayerSources.filter((e=>!t.includes(e)));r.sublayerSources.removeMany(e)}s.removeMany(s.filter((e=>0===e.sublayerSources.length)));const a=e.filter(p),l=this._get("_effectiveFeatureSources")??new o,{added:u,removed:f}=r(l.toArray(),[...a,...s]);return l.removeMany(f),l.addMany(u),l}};function c(e){return"subtype-group"===e.layer.type}function p(e){return"subtype-group"!==e.layer.type}function d(e){return"subtype-sublayer"===e.layer.type}e([s()],u.prototype,"enabled",void 0),e([s()],u.prototype,"enabledToggled",void 0),e([s()],u.prototype,"forceDisabled",void 0),e([s()],u.prototype,"selfEnabled",void 0),e([s()],u.prototype,"featureEnabled",void 0),e([s()],u.prototype,"gridEnabled",void 0),e([s()],u.prototype,"attributeRulesEnabled",void 0),e([s({type:o.ofType(n)})],u.prototype,"featureSources",void 0),e([s()],u.prototype,"distance",void 0),e([s()],u.prototype,"touchSensitivityMultiplier",void 0),e([s({readOnly:!0})],u.prototype,"effectiveEnabled",null),e([s({readOnly:!0})],u.prototype,"effectiveGridEnabled",null),e([s({readOnly:!0})],u.prototype,"effectiveSelfEnabled",null),e([s({readOnly:!0})],u.prototype,"effectiveFeatureEnabled",null),e([s({readOnly:!0})],u.prototype,"_effectiveFeatureSources",null),u=e([a("esri.views.interactive.snapping.SnappingOptions")],u);export{u as default};