import { OuterSubscriber } from '../OuterSubscriber'; import { subscribeToResult } from '../util/subscribeToResult'; export function exhaust() { return (source) => source.lift(new SwitchFirstOperator()); } class SwitchFirstOperator { call(subscriber, source) { return source.subscribe(new SwitchFirstSubscriber(subscriber)); } } class SwitchFirstSubscriber extends OuterSubscriber { constructor(destination) { super(destination); this.hasCompleted = false; this.hasSubscription = false; } _next(value) { if (!this.hasSubscription) { this.hasSubscription = true; this.add(subscribeToResult(this, value)); } } _complete() { this.hasCompleted = true; if (!this.hasSubscription) { this.destination.complete(); } } notifyComplete(innerSub) { this.remove(innerSub); this.hasSubscription = false; if (this.hasCompleted) { this.destination.complete(); } } } //# sourceMappingURL=exhaust.js.map