@pushrocks/smartrx
Version:
smart wrapper for rxjs
26 lines (25 loc) • 1 kB
TypeScript
import * as rxjs from './smartrx.plugins.rxjs.js';
export interface IEventEmitter<T = any> {
on: (eventNameArg: string, eventHandlerArg: (eventPayload: T) => any) => void;
}
/**
* bundles an observable with an emitter
*/
export interface IObservableEventBundle<T> {
subject: rxjs.Subject<any>;
eventRef: T;
event: string;
}
/**
* manages observables by making sure that only one observable is regsitered per event
*/
export declare class Observablemap {
observableEventEmitterBundleArray: IObservableEventBundle<IEventEmitter<unknown>>[];
observableEventTargetBundleArray: IObservableEventBundle<EventTarget>[];
/**
* creates a hot subject if not yet registered for the event.
* In case event has been registered before the same observable is returned.
*/
getSubjectForEmitterEvent<T>(emitterArg: IEventEmitter<T>, eventArg: string): rxjs.Subject<T>;
getSubjectForEventTarget<T>(eventTargetArg: EventTarget, eventNameArg: string): rxjs.Subject<T>;
}