enome
Version:
A genome generation and evolution library.
178 lines • 14.2 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var rxjs_1 = require("rxjs");
var index_1 = require("./index");
var _ = require("lodash");
var ReactiveCollection = (function () {
function ReactiveCollection(value) {
if (value === void 0) { value = []; }
var _this = this;
this.pushed = new rxjs_1.ReplaySubject(1);
this.popped = new rxjs_1.ReplaySubject(1);
this.shifted = new rxjs_1.ReplaySubject(1);
this.unshifted = new rxjs_1.ReplaySubject(1);
this.removed = new rxjs_1.ReplaySubject(1);
this.rotated = new rxjs_1.ReplaySubject(1);
this.array = new index_1.ReactiveProperty(value);
this.subs = [
this.subscribeToPush(function (pushed) {
var v = _this.value;
v.push(pushed);
_this.value = v;
}),
this.subscribeToUnshift(function (unshifted) {
var v = _this.value;
v.unshift(unshifted);
_this.value = v;
}),
];
}
Object.defineProperty(ReactiveCollection.prototype, "value", {
get: function () {
return this.array.value;
},
set: function (value) {
this.array.value = value;
},
enumerable: true,
configurable: true
});
ReactiveCollection.prototype.dispose = function () {
this.subs.forEach(function (sub) { return sub.unsubscribe(); });
};
ReactiveCollection.prototype.subscribeToPush = function (observer) {
return this.pushed
.observeOn(rxjs_1.Scheduler.asap)
.subscribeOn(rxjs_1.Scheduler.asap)
.subscribe(observer);
};
ReactiveCollection.prototype.subscribeToPop = function (observer) {
return this.popped
.observeOn(rxjs_1.Scheduler.asap)
.subscribeOn(rxjs_1.Scheduler.asap)
.subscribe(observer);
};
ReactiveCollection.prototype.subscribeToShift = function (observer) {
return this.shifted
.observeOn(rxjs_1.Scheduler.asap)
.subscribeOn(rxjs_1.Scheduler.asap)
.subscribe(observer);
};
ReactiveCollection.prototype.subscribeToUnshift = function (observer) {
return this.unshifted
.observeOn(rxjs_1.Scheduler.asap)
.subscribeOn(rxjs_1.Scheduler.asap)
.subscribe(observer);
};
ReactiveCollection.prototype.subscribeToRemove = function (observer) {
return this.removed
.observeOn(rxjs_1.Scheduler.asap)
.subscribeOn(rxjs_1.Scheduler.asap)
.subscribe(observer);
};
ReactiveCollection.prototype.subscribeToRotate = function (observer) {
return this.rotated
.observeOn(rxjs_1.Scheduler.asap)
.subscribeOn(rxjs_1.Scheduler.asap)
.subscribe(observer);
};
ReactiveCollection.prototype.push = function (value) {
this.pushed.next(value);
return this;
};
ReactiveCollection.prototype.pop = function (value) {
var v = this.value;
var popped = v.pop();
this.popped.next(popped);
this.value = v;
return popped;
};
ReactiveCollection.prototype.shift = function () {
var v = this.value;
var shifted = v.shift();
this.shifted.next(shifted);
this.value = v;
return shifted;
};
ReactiveCollection.prototype.unshift = function (value) {
this.unshifted.next(value);
return this;
};
ReactiveCollection.prototype.remove = function (value) {
var v = this.value;
var removed = v.splice(v.indexOf(value));
this.value = v;
this.removed.next(removed[0]);
return this;
};
ReactiveCollection.prototype.removeAt = function (i) {
this.remove(this.value[i]);
return this;
};
ReactiveCollection.prototype.rotate = function () {
var value = this.value;
var shifted = value.shift();
value.push(shifted);
this.rotated.next(shifted);
this.value = value;
return shifted;
};
ReactiveCollection.prototype.rotateEach = function (action) {
var _this = this;
_.range(this.value.length).forEach(function (i) {
action(_this.rotate());
});
};
ReactiveCollection.prototype.mapCollection = function (selector) {
return new ReactiveCollection(this.value.map(selector));
};
ReactiveCollection.prototype.filterCollection = function (selector) {
return new ReactiveCollection(this.value.filter(selector));
};
ReactiveCollection.prototype.forEach = function (action) {
this.value.forEach(action);
return this;
};
ReactiveCollection.prototype.subscribe = function (observer) {
return this.array.subscribe(observer);
};
ReactiveCollection.prototype.filter = function (selector) {
return this.array.filter(selector);
};
ReactiveCollection.prototype.map = function (selector) {
return this.array.map(selector);
};
ReactiveCollection.prototype.debounceWithTimeout = function (dueTime, scheduler) {
return this.array.throttleTime(dueTime, scheduler);
};
ReactiveCollection.prototype.debounceWithSelector = function (selector) {
return this.array.throttle(selector);
};
ReactiveCollection.prototype.bufferTime = function (timeSpan, scheduler) {
return this.array.bufferTime(timeSpan, scheduler);
};
ReactiveCollection.prototype.bufferCount = function (count, skip) {
return this.array.bufferCount(count, skip);
};
ReactiveCollection.prototype.bufferTimeCount = function (timeSpan, count, skip, scheduler) {
return this.array.bufferTimeCount(timeSpan, count, skip, scheduler);
};
ReactiveCollection.prototype.zip = function (other) {
return this.array.zip(other);
};
ReactiveCollection.prototype.asObservable = function () {
return this.array.asObservable();
};
ReactiveCollection.prototype.asObserver = function () {
return this.array.asObserver();
};
ReactiveCollection.prototype.asSubject = function () {
return this.array.asSubject();
};
ReactiveCollection.prototype.asBehaviourSubject = function () {
return this.array.asBehaviourSubject();
};
return ReactiveCollection;
}());
exports.ReactiveCollection = ReactiveCollection;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVhY3RpdmUtY29sbGVjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9yZWFjdGl2ZS1jb2xsZWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsNkJBUWM7QUFHZCxpQ0FBMkM7QUFFM0MsMEJBQTRCO0FBRTVCO0lBb0JFLDRCQUFZLEtBQWU7UUFBZixzQkFBQSxFQUFBLFVBQWU7UUFBM0IsaUJBZUM7UUFsQ08sV0FBTSxHQUFxQixJQUFJLG9CQUFhLENBQUksQ0FBQyxDQUFDLENBQUM7UUFDbkQsV0FBTSxHQUFxQixJQUFJLG9CQUFhLENBQUksQ0FBQyxDQUFDLENBQUM7UUFDbkQsWUFBTyxHQUFxQixJQUFJLG9CQUFhLENBQUksQ0FBQyxDQUFDLENBQUM7UUFDcEQsY0FBUyxHQUFxQixJQUFJLG9CQUFhLENBQUksQ0FBQyxDQUFDLENBQUM7UUFDdEQsWUFBTyxHQUFxQixJQUFJLG9CQUFhLENBQUksQ0FBQyxDQUFDLENBQUM7UUFDcEQsWUFBTyxHQUFxQixJQUFJLG9CQUFhLENBQUksQ0FBQyxDQUFDLENBQUM7UUFlMUQsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLHdCQUFnQixDQUFNLEtBQUssQ0FBQyxDQUFDO1FBRTlDLElBQUksQ0FBQyxJQUFJLEdBQUc7WUFDVixJQUFJLENBQUMsZUFBZSxDQUFDLFVBQUEsTUFBTTtnQkFDekIsSUFBTSxDQUFDLEdBQUcsS0FBSSxDQUFDLEtBQUssQ0FBQztnQkFDckIsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDZixLQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztZQUNqQixDQUFDLENBQUM7WUFDRixJQUFJLENBQUMsa0JBQWtCLENBQUMsVUFBQSxTQUFTO2dCQUMvQixJQUFNLENBQUMsR0FBRyxLQUFJLENBQUMsS0FBSyxDQUFDO2dCQUNyQixDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUNyQixLQUFJLENB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