UNPKG

@arcgis/core

Version:

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

6 lines (5 loc) 1.37 kB
/* All material copyright ESRI, All Rights Reserved, unless otherwise specified. See https://js.arcgis.com/4.33/esri/copyright.txt for details. */ import e from"../../../core/Evented.js";import{ObservableChangesType as t}from"../../../core/ObservableChangesType.js";import{signal as s}from"../../../core/signal.js";class r extends e{constructor(){super(...arguments),this._set=new Set,this._length=s(0)}clear(){if(this._set.size>0){const e=this.toArray();this._set.clear(),this.emit("after-changes",{type:t.REMOVE}),this.emit("change",{added:[],removed:e})}}get length(){return this._length.value}addMany(e){if(0!==e.length){for(const t of e)this._set.add(t);this._length.value=this._set.size,this.emit("after-changes",{type:t.ADD}),this.emit("change",{added:e,removed:[]})}}remove(e){this._set.delete(e)&&(this._length.value=this._set.size,this.emit("after-changes",{type:t.REMOVE}),this.emit("change",{added:[],removed:[e]}))}removeMany(e){const s=[];for(const t of e)this._set.delete(t)&&s.push(t);s.length>0&&(this._length.value=this._set.size,this.emit("after-changes",{type:t.REMOVE}),this.emit("change",{added:[],removed:s}))}toArray(){return Array.from(this._set.values())}find(e){for(const t of this._set.values())if(e(t))return t}some(e){for(const t of this._set.values())if(e(t))return!0;return!1}forEach(e){this._set.forEach((t=>e(t)))}}export{r as EventedSet};