diff --git a/html/js/statsbox.js b/html/js/statsbox.js
index 87c7ca8..d253167 100644
--- a/html/js/statsbox.js
+++ b/html/js/statsbox.js
@@ -96,11 +96,9 @@ class SortedStatsBox extends StatsBox {
this._rows[idxNew].tr.before(stat.tr); // move table row
// shift array back by one
- while (idxOld > idxNew) {
- this._rows[idxOld] = this._rows[idxOld-1];
- idxOld--;
- }
+ this._rows.copyWithin(idxNew+1, idxNew, idxOld);
+ // re-insert element
this._rows[idxNew] = stat;
//console.log(`${key}: ${this._stats[key]} => ${idxNew}`);
diff --git a/html/js/statsbox.min.js b/html/js/statsbox.min.js
index d53bb60..b2165ad 100644
--- a/html/js/statsbox.min.js
+++ b/html/js/statsbox.min.js
@@ -1 +1 @@
-class h{#t;key;#i;tr;constructor(t,s){const i=document.createElement("td");i.textContent=t;const h=document.createElement("td");this.#i=h;const e=document.createElement("tr");e.append(i,h);this.tr=e;this.key=t;this.value=s}set value(t){this.#i.textContent=this.#t=t}get value(){return this.#t}}class t{#h;o={};l=[];constructor(t,s={}){t.replaceChildren();this.#h=t;for(const i in s){this.set(i,s[i])}}has(t){return t in this.o}set(t,s){if(this.has(t)){this.l[this.o[t]].value=s}else{const i=new h(t,s);this.#h.append(i.tr);this.o[t]=this.l.length;this.l.push(i)}}inc(t){if(this.has(t)){this.l[this.o[t]].value++}else{this.set(t,1)}}}class s extends t{inc(i){if(this.has(i)){let t=this.o[i];const h=this.l[t];h.value++;const e=h.value;let s=t;while(s>0&&e>this.l[s-1].value){this.o[this.l[s-1].key]=s--}if(s!=t){this.l[s].tr.before(h.tr);while(t>s){this.l[t]=this.l[t-1];t--}this.l[s]=h;this.o[i]=s}}else{this.set(i,1)}}}export{t as StatsBox,s as SortedStatsBox};
+class h{#t;key;#i;tr;constructor(t,s){const i=document.createElement("td");i.textContent=t;const h=document.createElement("td");this.#i=h;const e=document.createElement("tr");e.append(i,h);this.tr=e;this.key=t;this.value=s}set value(t){this.#i.textContent=this.#t=t}get value(){return this.#t}}class t{#h;o={};l=[];constructor(t,s={}){t.replaceChildren();this.#h=t;for(const i in s){this.set(i,s[i])}}has(t){return t in this.o}set(t,s){if(this.has(t)){this.l[this.o[t]].value=s}else{const i=new h(t,s);this.#h.append(i.tr);this.o[t]=this.l.length;this.l.push(i)}}inc(t){if(this.has(t)){this.l[this.o[t]].value++}else{this.set(t,1)}}}class s extends t{inc(i){if(this.has(i)){let t=this.o[i];const h=this.l[t];h.value++;const e=h.value;let s=t;while(s>0&&e>this.l[s-1].value){this.o[this.l[s-1].key]=s--}if(s!=t){this.l[s].tr.before(h.tr);this.l.copyWithin(s+1,s,t);this.l[s]=h;this.o[i]=s}}else{this.set(i,1)}}}export{t as StatsBox,s as SortedStatsBox};