@foblex/flow
Version:
An Angular library designed to simplify the creation and manipulation of dynamic flow. Provides components for flows, nodes, and connections, automating node manipulation and inter-node connections.
23 lines • 3.51 kB
JavaScript
export class FChannelHub {
_channels = [];
_operators = [];
constructor(...channels) {
this._channels = [...channels];
}
pipe(...operators) {
const result = new FChannelHub(...this._channels);
result._operators = [...this._operators, ...operators];
return result;
}
listen(destroyRef, callback) {
let modifiedCallback = callback;
this._operators.forEach(operator => {
modifiedCallback = operator(modifiedCallback);
});
const unsubscribeCallbacks = this._channels.map(channel => channel.listen(() => modifiedCallback()));
destroyRef.onDestroy(() => {
unsubscribeCallbacks.forEach(unsubscribe => unsubscribe());
});
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZi1jaGFubmVsLWh1Yi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2YtZmxvdy9zcmMvcmVhY3Rpdml0eS9mLWNoYW5uZWwtaHViLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLE1BQU0sT0FBTyxXQUFXO0lBRUwsU0FBUyxHQUFlLEVBQUUsQ0FBQztJQUVwQyxVQUFVLEdBQXVCLEVBQUUsQ0FBQztJQUU1QyxZQUFZLEdBQUcsUUFBb0I7UUFDakMsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLEdBQUcsUUFBUSxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVNLElBQUksQ0FBQyxHQUFHLFNBQTZCO1FBQzFDLE1BQU0sTUFBTSxHQUFHLElBQUksV0FBVyxDQUFDLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2xELE1BQU0sQ0FBQyxVQUFVLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsR0FBRyxTQUFTLENBQUMsQ0FBQztRQUN2RCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRU0sTUFBTSxDQUFDLFVBQXNCLEVBQUUsUUFBMEI7UUFDOUQsSUFBSSxnQkFBZ0IsR0FBRyxRQUFRLENBQUM7UUFFaEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDakMsZ0JBQWdCLEdBQUcsUUFBUSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDaEQsQ0FBQyxDQUFDLENBQUM7UUFFSCxNQUFNLG9CQUFvQixHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQ3hELE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUN6QyxDQUFDO1FBRUYsVUFBVSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDeEIsb0JBQW9CLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUM3RCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZDaGFubmVsIH0gZnJvbSAnLi9mLWNoYW5uZWwnO1xuaW1wb3J0IHsgRkNoYW5uZWxMaXN0ZW5lciwgRkNoYW5uZWxPcGVyYXRvciB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgRGVzdHJveVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgY2xhc3MgRkNoYW5uZWxIdWIge1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2NoYW5uZWxzOiBGQ2hhbm5lbFtdID0gW107XG5cbiAgcHJpdmF0ZSBfb3BlcmF0b3JzOiBGQ2hhbm5lbE9wZXJhdG9yW10gPSBbXTtcblxuICBjb25zdHJ1Y3RvciguLi5jaGFubmVsczogRkNoYW5uZWxbXSkge1xuICAgIHRoaXMuX2NoYW5uZWxzID0gWy4uLmNoYW5uZWxzXTtcbiAgfVxuXG4gIHB1YmxpYyBwaXBlKC4uLm9wZXJhdG9yczogRkNoYW5uZWxPcGVyYXRvcltdKTogRkNoYW5uZWxIdWIge1xuICAgIGNvbnN0IHJlc3VsdCA9IG5ldyBGQ2hhbm5lbEh1YiguLi50aGlzLl9jaGFubmVscyk7XG4gICAgcmVzdWx0Ll9vcGVyYXRvcnMgPSBbLi4udGhpcy5fb3BlcmF0b3JzLCAuLi5vcGVyYXRvcnNdO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBwdWJsaWMgbGlzdGVuKGRlc3Ryb3lSZWY6IERlc3Ryb3lSZWYsIGNhbGxiYWNrOiBGQ2hhbm5lbExpc3RlbmVyKTogdm9pZCB7XG4gICAgbGV0IG1vZGlmaWVkQ2FsbGJhY2sgPSBjYWxsYmFjaztcblxuICAgIHRoaXMuX29wZXJhdG9ycy5mb3JFYWNoKG9wZXJhdG9yID0+IHtcbiAgICAgIG1vZGlmaWVkQ2FsbGJhY2sgPSBvcGVyYXRvcihtb2RpZmllZENhbGxiYWNrKTtcbiAgICB9KTtcblxuICAgIGNvbnN0IHVuc3Vic2NyaWJlQ2FsbGJhY2tzID0gdGhpcy5fY2hhbm5lbHMubWFwKGNoYW5uZWwgPT5cbiAgICAgIGNoYW5uZWwubGlzdGVuKCgpID0+IG1vZGlmaWVkQ2FsbGJhY2soKSlcbiAgICApO1xuXG4gICAgZGVzdHJveVJlZi5vbkRlc3Ryb3koKCkgPT4ge1xuICAgICAgdW5zdWJzY3JpYmVDYWxsYmFja3MuZm9yRWFjaCh1bnN1YnNjcmliZSA9PiB1bnN1YnNjcmliZSgpKTtcbiAgICB9KTtcbiAgfVxufVxuIl19