UNPKG

@pushrocks/smartrx

Version:

smart wrapper for rxjs

54 lines 4.1 kB
import * as plugins from './smartrx.plugins.js'; import * as rxjs from './smartrx.plugins.rxjs.js'; /** * manages observables by making sure that only one observable is regsitered per event */ export class Observablemap { constructor() { this.observableEventEmitterBundleArray = new Array(); this.observableEventTargetBundleArray = new Array(); } /** * creates a hot subject if not yet registered for the event. * In case event has been registered before the same observable is returned. */ getSubjectForEmitterEvent(emitterArg, eventArg) { const existingBundle = this.observableEventEmitterBundleArray.find((bundleArg) => { return bundleArg.eventRef === emitterArg && bundleArg.event === eventArg; }); if (existingBundle) { return existingBundle.subject; } else { const emitterObservable = rxjs.fromEvent(emitterArg, eventArg); const emitterSubject = new rxjs.Subject(); emitterObservable.subscribe(emitterSubject); const newBundle = { subject: emitterSubject, eventRef: emitterArg, event: eventArg, }; this.observableEventEmitterBundleArray.push(newBundle); return newBundle.subject; } } getSubjectForEventTarget(eventTargetArg, eventNameArg) { const existingBundle = this.observableEventTargetBundleArray.find((bundleArg) => { return bundleArg.eventRef === eventTargetArg && bundleArg.event === eventNameArg; }); if (existingBundle) { return existingBundle.subject; } else { const emitterSubject = new rxjs.Subject(); const newBundle = { subject: emitterSubject, eventRef: eventTargetArg, event: eventNameArg, }; this.observableEventTargetBundleArray.push(newBundle); return newBundle.subject; } } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRyeC5jbGFzc2VzLm9ic2VydmFibGVtYXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9zbWFydHJ4LmNsYXNzZXMub2JzZXJ2YWJsZW1hcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLHNCQUFzQixDQUFDO0FBQ2hELE9BQU8sS0FBSyxJQUFJLE1BQU0sMkJBQTJCLENBQUM7QUFlbEQ7O0dBRUc7QUFDSCxNQUFNLE9BQU8sYUFBYTtJQUExQjtRQUNTLHNDQUFpQyxHQUFHLElBQUksS0FBSyxFQUVqRCxDQUFDO1FBQ0cscUNBQWdDLEdBQUcsSUFBSSxLQUFLLEVBQXVDLENBQUM7SUFpRDdGLENBQUM7SUEvQ0M7OztPQUdHO0lBQ0kseUJBQXlCLENBQzlCLFVBQTRCLEVBQzVCLFFBQWdCO1FBRWhCLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxpQ0FBaUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRTtZQUMvRSxPQUFPLFNBQVMsQ0FBQyxRQUFRLEtBQUssVUFBVSxJQUFJLFNBQVMsQ0FBQyxLQUFLLEtBQUssUUFBUSxDQUFDO1FBQzNFLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxjQUFjLEVBQUU7WUFDbEIsT0FBTyxjQUFjLENBQUMsT0FBTyxDQUFDO1NBQy9CO2FBQU07WUFDTCxNQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQyxTQUFTLENBQUksVUFBaUIsRUFBRSxRQUFRLENBQUMsQ0FBQztZQUN6RSxNQUFNLGNBQWMsR0FBRyxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUMxQyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDNUMsTUFBTSxTQUFTLEdBQTBDO2dCQUN2RCxPQUFPLEVBQUUsY0FBYztnQkFDdkIsUUFBUSxFQUFFLFVBQVU7Z0JBQ3BCLEtBQUssRUFBRSxRQUFRO2FBQ2hCLENBQUM7WUFDRixJQUFJLENBQUMsaUNBQWlDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3ZELE9BQU8sU0FBUyxDQUFDLE9BQU8sQ0FBQztTQUMxQjtJQUNILENBQUM7SUFFTSx3QkFBd0IsQ0FDN0IsY0FBMkIsRUFDM0IsWUFBb0I7UUFFcEIsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLGdDQUFnQyxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFO1lBQzlFLE9BQU8sU0FBUyxDQUFDLFFBQVEsS0FBSyxjQUFjLElBQUksU0FBUyxDQUFDLEtBQUssS0FBSyxZQUFZLENBQUM7UUFDbkYsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLGNBQWMsRUFBRTtZQUNsQixPQUFPLGNBQWMsQ0FBQyxPQUFPLENBQUM7U0FDL0I7YUFBTTtZQUNMLE1BQU0sY0FBYyxHQUFHLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQzFDLE1BQU0sU0FBUyxHQUF3QztnQkFDckQsT0FBTyxFQUFFLGNBQWM7Z0JBQ3ZCLFFBQVEsRUFBRSxjQUFjO2dCQUN4QixLQUFLLEVBQUUsWUFBWTthQUNwQixDQUFDO1lBQ0YsSUFBSSxDQUFDLGdDQUFnQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUN0RCxPQUFPLFNBQVMsQ0FBQyxPQUFPLENBQUM7U0FDMUI7SUFDSCxDQUFDO0NBQ0YifQ==