react-obsidian
Version:
Dependency injection framework for React and React Native applications
62 lines • 1.98 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.MediatorObservable = void 0;
const notNull_1 = require("../../utils/notNull");
const Observable_1 = require("../Observable");
class MediatorObservable extends Observable_1.Observable {
mapSource(source, mapNext) {
this.addSource(source, (next) => {
this.value = mapNext(next, this.value);
});
return this;
}
addSource(source, onNext) {
source.subscribe(onNext);
if (source.value !== undefined) {
onNext(source.value);
}
return this;
}
addSources(sources, onNext) {
const values = new Array(sources.length);
sources
.filter(notNull_1.notNull)
.forEach((source, index) => {
this.addSource(source, (next) => {
if (values[index] === next)
return;
if (values[index] === undefined) {
values[index] = next;
}
else {
values[index] = next;
onNext(values);
}
});
});
onNext(values);
return this;
}
mapSources(sources, mapNext) {
const values = new Array(sources.length);
sources
.filter(notNull_1.notNull)
.forEach((source, index) => {
this.addSource(source, (next) => {
if (values[index] === next)
return;
if (values[index] === undefined) {
values[index] = next;
}
else {
values[index] = next;
this.value = mapNext(values, this.value);
}
});
});
this.value = mapNext(values, this.value);
return this;
}
}
exports.MediatorObservable = MediatorObservable;
//# sourceMappingURL=MediatorObservable.js.map
;