--- /dev/null
+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
\ No newline at end of file