| /** PURE_IMPORTS_START tslib,_Subscription,_util_subscribeToResult,_OuterSubscriber PURE_IMPORTS_END */ | 
| import * as tslib_1 from "tslib"; | 
| import { Subscription } from '../Subscription'; | 
| import { subscribeToResult } from '../util/subscribeToResult'; | 
| import { OuterSubscriber } from '../OuterSubscriber'; | 
| export function bufferToggle(openings, closingSelector) { | 
|     return function bufferToggleOperatorFunction(source) { | 
|         return source.lift(new BufferToggleOperator(openings, closingSelector)); | 
|     }; | 
| } | 
| var BufferToggleOperator = /*@__PURE__*/ (function () { | 
|     function BufferToggleOperator(openings, closingSelector) { | 
|         this.openings = openings; | 
|         this.closingSelector = closingSelector; | 
|     } | 
|     BufferToggleOperator.prototype.call = function (subscriber, source) { | 
|         return source.subscribe(new BufferToggleSubscriber(subscriber, this.openings, this.closingSelector)); | 
|     }; | 
|     return BufferToggleOperator; | 
| }()); | 
| var BufferToggleSubscriber = /*@__PURE__*/ (function (_super) { | 
|     tslib_1.__extends(BufferToggleSubscriber, _super); | 
|     function BufferToggleSubscriber(destination, openings, closingSelector) { | 
|         var _this = _super.call(this, destination) || this; | 
|         _this.closingSelector = closingSelector; | 
|         _this.contexts = []; | 
|         _this.add(subscribeToResult(_this, openings)); | 
|         return _this; | 
|     } | 
|     BufferToggleSubscriber.prototype._next = function (value) { | 
|         var contexts = this.contexts; | 
|         var len = contexts.length; | 
|         for (var i = 0; i < len; i++) { | 
|             contexts[i].buffer.push(value); | 
|         } | 
|     }; | 
|     BufferToggleSubscriber.prototype._error = function (err) { | 
|         var contexts = this.contexts; | 
|         while (contexts.length > 0) { | 
|             var context_1 = contexts.shift(); | 
|             context_1.subscription.unsubscribe(); | 
|             context_1.buffer = null; | 
|             context_1.subscription = null; | 
|         } | 
|         this.contexts = null; | 
|         _super.prototype._error.call(this, err); | 
|     }; | 
|     BufferToggleSubscriber.prototype._complete = function () { | 
|         var contexts = this.contexts; | 
|         while (contexts.length > 0) { | 
|             var context_2 = contexts.shift(); | 
|             this.destination.next(context_2.buffer); | 
|             context_2.subscription.unsubscribe(); | 
|             context_2.buffer = null; | 
|             context_2.subscription = null; | 
|         } | 
|         this.contexts = null; | 
|         _super.prototype._complete.call(this); | 
|     }; | 
|     BufferToggleSubscriber.prototype.notifyNext = function (outerValue, innerValue) { | 
|         outerValue ? this.closeBuffer(outerValue) : this.openBuffer(innerValue); | 
|     }; | 
|     BufferToggleSubscriber.prototype.notifyComplete = function (innerSub) { | 
|         this.closeBuffer(innerSub.context); | 
|     }; | 
|     BufferToggleSubscriber.prototype.openBuffer = function (value) { | 
|         try { | 
|             var closingSelector = this.closingSelector; | 
|             var closingNotifier = closingSelector.call(this, value); | 
|             if (closingNotifier) { | 
|                 this.trySubscribe(closingNotifier); | 
|             } | 
|         } | 
|         catch (err) { | 
|             this._error(err); | 
|         } | 
|     }; | 
|     BufferToggleSubscriber.prototype.closeBuffer = function (context) { | 
|         var contexts = this.contexts; | 
|         if (contexts && context) { | 
|             var buffer = context.buffer, subscription = context.subscription; | 
|             this.destination.next(buffer); | 
|             contexts.splice(contexts.indexOf(context), 1); | 
|             this.remove(subscription); | 
|             subscription.unsubscribe(); | 
|         } | 
|     }; | 
|     BufferToggleSubscriber.prototype.trySubscribe = function (closingNotifier) { | 
|         var contexts = this.contexts; | 
|         var buffer = []; | 
|         var subscription = new Subscription(); | 
|         var context = { buffer: buffer, subscription: subscription }; | 
|         contexts.push(context); | 
|         var innerSubscription = subscribeToResult(this, closingNotifier, context); | 
|         if (!innerSubscription || innerSubscription.closed) { | 
|             this.closeBuffer(context); | 
|         } | 
|         else { | 
|             innerSubscription.context = context; | 
|             this.add(innerSubscription); | 
|             subscription.add(innerSubscription); | 
|         } | 
|     }; | 
|     return BufferToggleSubscriber; | 
| }(OuterSubscriber)); | 
| //# sourceMappingURL=bufferToggle.js.map |