UNPKG

siegel

Version:

Web application development ecosystem

1 lines 832 B
import t from"../array_range_each/index.js";export default(function e(r="id"){let a,d={},s=[],n={clear(){return d={},s=[],this.setLastUpdated(),n},addOrUpdate(t){let e=t[r];return d[e]||s.push(e),d[e]=t,this.setLastUpdated(),n},addOrUpdateAll(t,e){for(let r=0,a=t.length;r<a;r++){let a=t[r];e?.(a,r),this.addOrUpdate(a)}return n},remove(t){if(d[t]){let e=s.indexOf(t);s.splice(e,1),delete d[t]}return this.setLastUpdated(),n},sort:t=>(s.sort((e,r)=>t(d[e],d[r])),n),each:(e,r=0,a=s.length)=>(t(s,r,a,(t,r)=>e(d[t],r)),n),map(t){let e=[];return this.each((r,a)=>{e.push(t(r,a))}),e},get:t=>d[t],len:()=>s.length,raw:()=>({byID:d,sorted:s}),setRaw(t){return d=t.byID,s=t.sorted,this.setLastUpdated(),n},clone(){let t=e(r);return t.setRaw(structuredClone(this.raw())),t},setLastUpdated(){a=Date.now()},getLastUpdated:()=>a};return n});