/** * @author Martin Karkowski * @email m.karkowski@zema.de */ import { BehaviorSubject, ReplaySubject, Subject } from "rxjs"; export interface TSubjectOptions { /** * Definitin whether to use the history or not. * * @author M.Karkowski * @type {boolean} * @memberof TSubjectOptions */ showCurrent?: boolean; /** * Definition, whether to playback the history every * time or not. * * @author M.Karkowski * @type {boolean} * @memberof TSubjectOptions */ playHistory?: boolean; } /** * Helper to define the correct RXJS Subject. * * @author M.Karkowski * @export * @template T * @param {{ * useHistory?: boolean, * playBackhistoryEveryTime?: boolean; * }} [options={}] * @return {*} */ export function getSubject( options: TSubjectOptions = {} ): Subject | ReplaySubject | BehaviorSubject { if (options.showCurrent) { if (options.playHistory) { return new ReplaySubject(); } return new BehaviorSubject(undefined); } return new Subject(); }