123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- /**
- * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.
- *
- * @author David Sehnal <david.sehnal@gmail.com>
- */
- import { Subject, BehaviorSubject } from 'rxjs';
- export { RxEventHelper };
- interface RxEventHelper {
- <T>(): Subject<T>,
- behavior<T>(v: T): BehaviorSubject<T>,
- dispose(): void
- }
- namespace RxEventHelper {
- export function create(): RxEventHelper {
- const helper = new _RxEventHelper();
- const ret: RxEventHelper = (<T>() => helper.create<T>()) as RxEventHelper;
- ret.dispose = () => helper.dispose();
- ret.behavior = (v) => helper.behavior(v);
- return ret;
- }
- }
- class _RxEventHelper {
- private _eventList: Subject<any>[] = [];
- private _disposed = false;
- create<T>() {
- const s = new Subject<T>();
- this._eventList.push(s);
- return s;
- }
- behavior<T>(v: T) {
- const s = new BehaviorSubject<T>(v);
- this._eventList.push(s);
- return s;
- }
- dispose() {
- if (this._disposed) return;
- for (const e of this._eventList) e.complete();
- this._disposed = true;
- }
- }
|