@pushrocks/smartrx
Version:
smart wrapper for rxjs
54 lines • 4.1 kB
JavaScript
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==