| import { Subscriber } from '../Subscriber'; |
| export function takeWhile(predicate, inclusive = false) { |
| return (source) => source.lift(new TakeWhileOperator(predicate, inclusive)); |
| } |
| class TakeWhileOperator { |
| constructor(predicate, inclusive) { |
| this.predicate = predicate; |
| this.inclusive = inclusive; |
| } |
| call(subscriber, source) { |
| return source.subscribe(new TakeWhileSubscriber(subscriber, this.predicate, this.inclusive)); |
| } |
| } |
| class TakeWhileSubscriber extends Subscriber { |
| constructor(destination, predicate, inclusive) { |
| super(destination); |
| this.predicate = predicate; |
| this.inclusive = inclusive; |
| this.index = 0; |
| } |
| _next(value) { |
| const destination = this.destination; |
| let result; |
| try { |
| result = this.predicate(value, this.index++); |
| } |
| catch (err) { |
| destination.error(err); |
| return; |
| } |
| this.nextOrComplete(value, result); |
| } |
| nextOrComplete(value, predicateResult) { |
| const destination = this.destination; |
| if (Boolean(predicateResult)) { |
| destination.next(value); |
| } |
| else { |
| if (this.inclusive) { |
| destination.next(value); |
| } |
| destination.complete(); |
| } |
| } |
| } |
| //# sourceMappingURL=takeWhile.js.map |