reactive-blocs
Version:
27 lines (26 loc) • 953 B
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.link = exports.currentEvent = exports.events = exports.blocs = void 0;
const rxjs_1 = require("rxjs");
const operators_1 = require("rxjs/operators");
const unique = (arr) => [...new Set(arr)];
exports.blocs = new rxjs_1.BehaviorSubject([]);
exports.events = new rxjs_1.BehaviorSubject([]);
exports.currentEvent = exports.events.pipe((0, operators_1.map)(events => events[events.length - 1]));
const link = (source, target, labels) => {
if (labels) {
exports.blocs.next(unique(exports.blocs.getValue().concat(labels)));
}
source.subscribe(val => {
if (labels) {
const [from, to] = labels;
const event = {
from, to,
payload: val
};
exports.events.next(exports.events.getValue().concat(event));
}
target.next(val);
});
};
exports.link = link;