UNPKG

@obliczeniowo/elementary

Version:
93 lines (88 loc) 2.86 kB
import { Subscriber, BehaviorSubject } from 'rxjs'; import { isSubscription } from 'rxjs/internal/Subscription'; import { EventEmitter } from '@angular/core'; function isFunction$1(value) { return typeof value === 'function'; } function isObserver$1(value) { return value && isFunction$1(value.next) && isFunction$1(value.error) && isFunction$1(value.complete); } function isSubscriber$1(value) { return (value && value instanceof Subscriber) || (isObserver$1(value) && isSubscription(value)); } class BehaviorSubjectExt extends BehaviorSubject { subscriptions = []; clearSubscriptions() { this.subscriptions.forEach(sub => !sub.closed && sub.unsubscribe()); this.subscriptions = []; } clearClosed() { this.subscriptions = this.subscriptions.filter(subscription => !subscription.closed); } subscribe(observerOrNext, error, complete) { let subscriber; if (isSubscriber$1(observerOrNext)) { subscriber = super.subscribe(observerOrNext); } else { subscriber = super.subscribe(observerOrNext, error, complete); } this.clearClosed(); this.subscriptions.push(subscriber); return subscriber; } unsubscribe() { this.clearSubscriptions(); super.unsubscribe(); } } function isFunction(value) { return typeof value === 'function'; } function isObserver(value) { return value && isFunction(value.next) && isFunction(value.error) && isFunction(value.complete); } function isSubscriber(value) { return (value && value instanceof Subscriber) || (isObserver(value) && isSubscription(value)); } class EventEmitterExt extends EventEmitter { subscriptions = []; temp; clearSubscriptions() { this.subscriptions.forEach(sub => !sub.closed && sub.unsubscribe()); this.subscriptions = []; } clearClosed() { this.subscriptions = this.subscriptions.filter(subscription => !subscription.closed); } subscribe(observerOrNext, error, complete) { let subscriber; if (isSubscriber(observerOrNext)) { subscriber = super.subscribe(observerOrNext); } else { subscriber = super.subscribe(observerOrNext, error, complete); } this.clearClosed(); this.subscriptions.push(subscriber); return subscriber; } unsubscribe() { this.clearSubscriptions(); super.unsubscribe(); } next(value) { this.temp = value; setTimeout(() => { if (this.temp) { super.next(value); } this.temp = undefined; }, 100); } } /** * Generated bundle index. Do not edit. */ export { BehaviorSubjectExt, EventEmitterExt }; //# sourceMappingURL=obliczeniowo-elementary-rx-js-ext.mjs.map