UNPKG

@doegis/core

Version:

DOE GIS API

3 lines (1 loc) 1.25 kB
import e from"../../../core/Evented.js";import{someMap as t}from"../../../core/MapUtils.js";class r extends e{constructor(){super(...arguments),this._map=new Map}clear(){if(this._map.size>0){const e=this.toArray();this._map.clear(),this.emit("change",{added:[],removed:e})}}get length(){return this._map.size}get(e){return this._map.get(e)}addMany(e){if(0===e.length)return;const t=new Set;for(let o=0;o<e.length;o++){const r=e[o],s=r.objectId,n=this._map.get(s);n?(t.add(s),r!==n&&(e[o]=n),n.refCount||(n.refCount=0),++n.refCount):(r.refCount=1,this._map.set(s,r))}const r=t.size>0?e.filter((e=>!t.has(e.objectId))):e;r.length>0&&this.emit("change",{added:r,removed:[]})}removeMany(e){const t=[];for(const r of e){const e=r.objectId,o=this._map.get(e);null!=o&&(!o.refCount||--o.refCount<=0)&&(this._map.delete(e),t.push(r))}t.length>0&&this.emit("change",{added:[],removed:t})}removeManyByObjectId(e){const t=[];for(const r of e){const e=this._map.get(r);null!=e&&(!e.refCount||--e.refCount<=0)&&(this._map.delete(r),t.push(e))}t.length>0&&this.emit("change",{added:[],removed:t})}toArray(){return[...this._map.values()]}find(e){let r;return t(this._map,(t=>!!e(t)&&(r=t,!0))),r}forEach(e){this._map.forEach((t=>e(t)))}}export{r as GraphicsMap};