UNPKG

@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
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