UNPKG

web-atoms-rest

Version:
63 lines (50 loc) 2.1 kB
namespace WebAtoms{ var AtomBinder = window["AtomBinder"]; var AtomPromise = window["AtomPromise"]; export class AtomList<T> extends Array<T> { constructor(){ super(); this["__proto__"] = AtomList.prototype; } add(item: T): number { var i = this.length; var n = this.push(item); AtomBinder.invokeItemsEvent(this, "add", i, item); Atom.refresh(this, "length"); return n; } addAll(items: Array<T>) { for (let item of items) { var i = this.length; this.push(item); AtomBinder.invokeItemsEvent(this, "add", i, item); Atom.refresh(this, "length"); } } insert(i: number, item: T) { var n = this.splice(i, 0, item); AtomBinder.invokeItemsEvent(this, "add", i, item); Atom.refresh(this, "length"); } removeAt(i: number) { var item = this[i]; this.splice(i, 1); AtomBinder.invokeItemsEvent(this, "remove", i, item); Atom.refresh(this, "length"); } remove(item: T) { var n = this.indexOf(item); if (n != -1) { this.removeAt(n); } } clear() { this.length = 0; this.refresh(); } refresh() { AtomBinder.invokeItemsEvent(this, "refresh", -1, null); Atom.refresh(this, "length"); } } }