| 123456789101112131415161718192021222324252627282930313233 | 
							- import { Subscription } from '../Subscription';
 
- import { operate } from '../util/lift';
 
- import { innerFrom } from '../observable/innerFrom';
 
- import { createOperatorSubscriber } from './OperatorSubscriber';
 
- import { noop } from '../util/noop';
 
- import { arrRemove } from '../util/arrRemove';
 
- export function bufferToggle(openings, closingSelector) {
 
-     return operate((source, subscriber) => {
 
-         const buffers = [];
 
-         innerFrom(openings).subscribe(createOperatorSubscriber(subscriber, (openValue) => {
 
-             const buffer = [];
 
-             buffers.push(buffer);
 
-             const closingSubscription = new Subscription();
 
-             const emitBuffer = () => {
 
-                 arrRemove(buffers, buffer);
 
-                 subscriber.next(buffer);
 
-                 closingSubscription.unsubscribe();
 
-             };
 
-             closingSubscription.add(innerFrom(closingSelector(openValue)).subscribe(createOperatorSubscriber(subscriber, emitBuffer, noop)));
 
-         }, noop));
 
-         source.subscribe(createOperatorSubscriber(subscriber, (value) => {
 
-             for (const buffer of buffers) {
 
-                 buffer.push(value);
 
-             }
 
-         }, () => {
 
-             while (buffers.length > 0) {
 
-                 subscriber.next(buffers.shift());
 
-             }
 
-             subscriber.complete();
 
-         }));
 
-     });
 
- }
 
- //# sourceMappingURL=bufferToggle.js.map
 
 
  |