UNPKG

@animech-public/playcanvas

Version:
2 lines (1 loc) 862 B
class t{constructor(t){this.items=[],this.length=0,this.loopIndex=-1,this._sortBy=void 0,this._sortHandler=void 0,this._sortBy=t.sortBy,this._sortHandler=this._doSort.bind(this)}_binarySearch(t){let s=0,i=this.items.length-1;const o=t[this._sortBy];let h,e;for(;s<=i;)h=Math.floor((s+i)/2),e=this.items[h][this._sortBy],e<=o?s=h+1:e>o&&(i=h-1);return s}_doSort(t,s){const i=this._sortBy;return t[i]-s[i]}insert(t){const s=this._binarySearch(t);this.items.splice(s,0,t),this.length++,this.loopIndex>=s&&this.loopIndex++}append(t){this.items.push(t),this.length++}remove(t){const s=this.items.indexOf(t);s<0||(this.items.splice(s,1),this.length--,this.loopIndex>=s&&this.loopIndex--)}sort(){const t=this.loopIndex>=0?this.items[this.loopIndex]:null;this.items.sort(this._sortHandler),null!==t&&(this.loopIndex=this.items.indexOf(t))}}export{t as SortedLoopArray};