UNPKG

ng-agm-core-lib

Version:
72 lines 11 kB
import { fromEventPattern } from 'rxjs'; export function createMVCEventObservable(array) { const eventNames = ['insert_at', 'remove_at', 'set_at']; return fromEventPattern(handler => eventNames.map(eventName => array.addListener(eventName, (index, previous) => handler.apply(array, [{ newArr: array.getArray(), eventName, index, previous }]))), (_handler, evListeners) => evListeners.forEach(evListener => evListener.remove())); } export class MvcArrayMock { vals = []; listeners = { remove_at: [], insert_at: [], set_at: [], }; clear() { for (let i = this.vals.length - 1; i >= 0; i--) { this.removeAt(i); } } getArray() { return [...this.vals]; } getAt(i) { return this.vals[i]; } getLength() { return this.vals.length; } insertAt(i, elem) { this.vals.splice(i, 0, elem); this.listeners.insert_at.forEach(listener => listener(i)); } pop() { const deleted = this.vals.pop(); this.listeners.remove_at.forEach(listener => listener(this.vals.length, deleted)); return deleted; } push(elem) { this.vals.push(elem); this.listeners.insert_at.forEach(listener => listener(this.vals.length - 1)); return this.vals.length; } removeAt(i) { const deleted = this.vals.splice(i, 1)[0]; this.listeners.remove_at.forEach(listener => listener(i, deleted)); return deleted; } setAt(i, elem) { const deleted = this.vals[i]; this.vals[i] = elem; this.listeners.set_at.forEach(listener => listener(i, deleted)); } forEach(callback) { this.vals.forEach(callback); } addListener(eventName, handler) { const listenerArr = this.listeners[eventName]; listenerArr.push(handler); return { remove: () => { listenerArr.splice(listenerArr.indexOf(handler), 1); }, }; } bindTo() { throw new Error('Not implemented'); } changed() { throw new Error('Not implemented'); } get() { throw new Error('Not implemented'); } notify() { throw new Error('Not implemented'); } set() { throw new Error('Not implemented'); } setValues() { throw new Error('Not implemented'); } unbind() { throw new Error('Not implemented'); } unbindAll() { throw new Error('Not implemented'); } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXZjYXJyYXktdXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9saWIvdXRpbHMvbXZjYXJyYXktdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFjLE1BQU0sTUFBTSxDQUFDO0FBRXBELE1BQU0sVUFBVSx3QkFBd0IsQ0FBSSxLQUE4QjtJQUN4RSxNQUFNLFVBQVUsR0FBRyxDQUFDLFdBQVcsRUFBRSxXQUFXLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDeEQsT0FBTyxnQkFBZ0IsQ0FDckIsT0FBTyxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQ2hFLENBQUMsS0FBYSxFQUFFLFFBQVksRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBRSxFQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsUUFBUSxFQUFFLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFDbkksQ0FBQyxRQUFRLEVBQUUsV0FBNEMsRUFBRSxFQUFFLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDeEgsQ0FBQztBQVdELE1BQU0sT0FBTyxZQUFZO0lBQ2YsSUFBSSxHQUFRLEVBQUUsQ0FBQztJQUNmLFNBQVMsR0FJYjtRQUNGLFNBQVMsRUFBRSxFQUFFO1FBQ2IsU0FBUyxFQUFFLEVBQUU7UUFDYixNQUFNLEVBQUUsRUFBRTtLQUNYLENBQUM7SUFDRixLQUFLO1FBQ0gsS0FBSyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUs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LENBQUMsQ0FBQztZQUN4RCxDQUFDO1NBQ0osQ0FBQztJQUNKLENBQUM7SUFFRCxNQUFNLEtBQVksTUFBTSxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2RCxPQUFPLEtBQVksTUFBTSxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4RCxHQUFHLEtBQVksTUFBTSxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwRCxNQUFNLEtBQVksTUFBTSxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2RCxHQUFHLEtBQVksTUFBTSxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwRCxTQUFTLEtBQVksTUFBTSxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMxRCxNQUFNLEtBQVksTUFBTSxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2RCxTQUFTLEtBQVksTUFBTSxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztDQUMzRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZyb21FdmVudFBhdHRlcm4sIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZU1WQ0V2ZW50T2JzZXJ2YWJsZTxUPihhcnJheTogZ29vZ2xlLm1hcHMuTVZDQXJyYXk8VD4pOiBPYnNlcnZhYmxlPE1WQ0V2ZW50PFQ+PntcbiAgY29uc3QgZXZlbnROYW1lcyA9IFsnaW5zZXJ0X2F0JywgJ3JlbW92ZV9hdCcsICdzZXRfYXQnXTtcbiAgcmV0dXJuIGZyb21FdmVudFBhdHRlcm4oXG4gICAgaGFuZGxlciA9PiBldmVudE5hbWVzLm1hcChldmVudE5hbWUgPT4gYXJyYXkuYWRkTGlzdGVuZXIoZXZlbnROYW1lLFxuICAgICAgKGluZGV4OiBudW1iZXIsIHByZXZpb3VzPzogVCkgPT4gaGFuZGxlci5hcHBseShhcnJheSwgWyB7bmV3QXJyOiBhcnJheS5nZXRBcnJheSgpLCBldmVudE5hbWUsIGluZGV4LCBwcmV2aW91c30gYXMgTVZDRXZlbnQ8VD5dKSkpLFxuICAgIChfaGFuZGxlciwgZXZMaXN0ZW5lcnM6IGdvb2dsZS5tYXBzLk1hcHNFdmVudExpc3RlbmVyW10pID0+IGV2TGlzdGVuZXJzLmZvckVhY2goZXZMaXN0ZW5lciA9PiBldkxpc3RlbmVyLnJlbW92ZSgpKSk7XG59XG5cbmV4cG9ydCB0eXBlIE12Y0V2ZW50VHlwZSA9ICdpbnNlcnRfYXQnIHwgJ3JlbW92ZV9hdCcgfCAnc2V0X2F0JztcblxuZXhwb3J0IGludGVyZmFjZSBNVkNFdmVudDxUPiB7XG4gIG5ld0FycjogVFtdO1xuICBldmVudE5hbWU6IE12Y0V2ZW50VHlwZTtcbiAgaW5kZXg6IG51bWJlcjtcbiAgcHJldmlvdXM/OiBUO1xufVxuXG5leHBvcnQgY2xhc3MgTXZjQXJyYXlNb2NrPFQ+IGltcGxlbWVudHMgZ29vZ2xlLm1hcHMuTVZDQXJyYXk8VD4ge1xuICBwcml2YXRlIHZhbHM6IFRbXSA9IFtdO1xuICBwcml2YXRlIGxpc3RlbmVyczoge1xuICAgICdyZW1vdmVfYXQnOiAoKGk6IG51bWJlciwgcjogVCkgPT4gdm9pZClbXTtcbiAgICAnaW5zZXJ0X2F0JzogKChpOiBudW1iZXIpID0+IHZvaWQpW107XG4gICAgJ3NldF9hdCc6ICgoaTogbnVtYmVyLCB2YWw6IFQpID0+IHZvaWQpW107XG4gIH0gPSB7XG4gICAgcmVtb3ZlX2F0OiBbXSxcbiAgICBpbnNlcnRfYXQ6IFtdLFxuICAgIHNldF9hdDogW10sXG4gIH07XG4gIGNsZWFyKCk6IHZvaWQge1xuICAgIGZvciAobGV0IGkgPSB0aGlzLnZhbHMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgdGhpcy5yZW1vdmVBdChpKTtcbiAgICB9XG4gIH1cbiAgZ2V0QXJyYXkoKTogVFtdIHtcbiAgICByZXR1cm4gWy4uLnRoaXMudmFsc107XG4gIH1cbiAgZ2V0QXQoaTogbnVtYmVyKTogVCB7XG4gICAgcmV0dXJuIHRoaXMudmFsc1tpXTtcbiAgfVxuICBnZXRMZW5ndGgoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy52YWxzLmxlbmd0aDtcbiAgfVxuICBpbnNlcnRBdChpOiBudW1iZXIsIGVsZW06IFQpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHMuc3BsaWNlKGksIDAsIGVsZW0pO1xuICAgIHRoaXMubGlzdGVuZXJzLmluc2VydF9hdC5mb3JFYWNoKGxpc3RlbmVyID0+IGxpc3RlbmVyKGkpKTtcbiAgfVxuICBwb3AoKTogVCB7XG4gICAgY29uc3QgZGVsZXRlZCA9IHRoaXMudmFscy5wb3AoKTtcbiAgICB0aGlzLmxpc3RlbmVycy5yZW1vdmVfYXQuZm9yRWFjaChsaXN0ZW5lciA9PiBsaXN0ZW5lcih0aGlzLnZhbHMubGVuZ3RoLCBkZWxldGVkKSk7XG4gICAgcmV0dXJuIGRlbGV0ZWQ7XG4gIH1cbiAgcHVzaChlbGVtOiBUKTogbnVtYmVyIHtcbiAgICB0aGlzLnZhbHMucHVzaChlbGVtKTtcbiAgICB0aGlzLmxpc3RlbmVycy5pbnNlcnRfYXQuZm9yRWFjaChsaXN0ZW5lciA9PiBsaXN0ZW5lcih0aGlzLnZhbHMubGVuZ3RoIC0gMSkpO1xuICAgIHJldHVybiB0aGlzLnZhbHMubGVuZ3RoO1xuICB9XG4gIHJlbW92ZUF0KGk6IG51bWJlcik6IFQge1xuICAgIGNvbnN0IGRlbGV0ZWQgPSB0aGlzLnZhbHMuc3BsaWNlKGksIDEpWzBdO1xuICAgIHRoaXMubGlzdGVuZXJzLnJlbW92ZV9hdC5mb3JFYWNoKGxpc3RlbmVyID0+IGxpc3RlbmVyKGksIGRlbGV0ZWQpKTtcbiAgICByZXR1cm4gZGVsZXRlZDtcbiAgfVxuICBzZXRBdChpOiBudW1iZXIsIGVsZW06IFQpOiB2b2lkIHtcbiAgICBjb25zdCBkZWxldGVkID0gdGhpcy52YWxzW2ldO1xuICAgIHRoaXMudmFsc1tpXSA9IGVsZW07XG4gICAgdGhpcy5saXN0ZW5lcnMuc2V0X2F0LmZvckVhY2gobGlzdGVuZXIgPT4gbGlzdGVuZXIoaSwgZGVsZXRlZCkpO1xuICB9XG4gIGZvckVhY2goY2FsbGJhY2s6IChlbGVtOiBULCBpOiBudW1iZXIpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHMuZm9yRWFjaChjYWxsYmFjayk7XG4gIH1cbiAgYWRkTGlzdGVuZXIoZXZlbnROYW1lOiAncmVtb3ZlX2F0JyB8ICdpbnNlcnRfYXQnIHwgJ3NldF9hdCcsIGhhbmRsZXI6ICguLi5hcmdzOiBhbnlbXSkgPT4gdm9pZCk6IGdvb2dsZS5tYXBzLk1hcHNFdmVudExpc3RlbmVyIHtcbiAgICBjb25zdCBsaXN0ZW5lckFyciA9IHRoaXMubGlzdGVuZXJzW2V2ZW50TmFtZV07XG4gICAgbGlzdGVuZXJBcnIucHVzaChoYW5kbGVyKTtcbiAgICByZXR1cm4ge1xuICAgICAgICByZW1vdmU6ICgpID0+IHtcbiAgICAgICAgICAgIGxpc3RlbmVyQXJyLnNwbGljZShsaXN0ZW5lckFyci5pbmRleE9mKGhhbmRsZXIpLCAxKTtcbiAgICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgYmluZFRvKCk6IG5ldmVyIHsgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQnKTsgfVxuICBjaGFuZ2VkKCk6IG5ldmVyIHsgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQnKTsgfVxuICBnZXQoKTogbmV2ZXIgeyB0aHJvdyBuZXcgRXJyb3IoJ05vdCBpbXBsZW1lbnRlZCcpOyB9XG4gIG5vdGlmeSgpOiBuZXZlciB7IHRocm93IG5ldyBFcnJvcignTm90IGltcGxlbWVudGVkJyk7IH1cbiAgc2V0KCk6IG5ldmVyIHsgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQnKTsgfVxuICBzZXRWYWx1ZXMoKTogbmV2ZXIgeyB0aHJvdyBuZXcgRXJyb3IoJ05vdCBpbXBsZW1lbnRlZCcpOyB9XG4gIHVuYmluZCgpOiBuZXZlciB7IHRocm93IG5ldyBFcnJvcignTm90IGltcGxlbWVudGVkJyk7IH1cbiAgdW5iaW5kQWxsKCk6IG5ldmVyIHsgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQnKTsgfVxufVxuIl19