UNPKG

react-obsidian

Version:

Dependency injection framework for React and React Native applications

62 lines 1.98 kB
"use strict"; 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