| "use strict"; | 
| var __extends = (this && this.__extends) || (function () { | 
|     var extendStatics = function (d, b) { | 
|         extendStatics = Object.setPrototypeOf || | 
|             ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || | 
|             function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; | 
|         return extendStatics(d, b); | 
|     } | 
|     return function (d, b) { | 
|         extendStatics(d, b); | 
|         function __() { this.constructor = d; } | 
|         d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); | 
|     }; | 
| })(); | 
| Object.defineProperty(exports, "__esModule", { value: true }); | 
| var Subscriber_1 = require("../Subscriber"); | 
| var Subject_1 = require("../Subject"); | 
| function windowCount(windowSize, startWindowEvery) { | 
|     if (startWindowEvery === void 0) { startWindowEvery = 0; } | 
|     return function windowCountOperatorFunction(source) { | 
|         return source.lift(new WindowCountOperator(windowSize, startWindowEvery)); | 
|     }; | 
| } | 
| exports.windowCount = windowCount; | 
| var WindowCountOperator = (function () { | 
|     function WindowCountOperator(windowSize, startWindowEvery) { | 
|         this.windowSize = windowSize; | 
|         this.startWindowEvery = startWindowEvery; | 
|     } | 
|     WindowCountOperator.prototype.call = function (subscriber, source) { | 
|         return source.subscribe(new WindowCountSubscriber(subscriber, this.windowSize, this.startWindowEvery)); | 
|     }; | 
|     return WindowCountOperator; | 
| }()); | 
| var WindowCountSubscriber = (function (_super) { | 
|     __extends(WindowCountSubscriber, _super); | 
|     function WindowCountSubscriber(destination, windowSize, startWindowEvery) { | 
|         var _this = _super.call(this, destination) || this; | 
|         _this.destination = destination; | 
|         _this.windowSize = windowSize; | 
|         _this.startWindowEvery = startWindowEvery; | 
|         _this.windows = [new Subject_1.Subject()]; | 
|         _this.count = 0; | 
|         destination.next(_this.windows[0]); | 
|         return _this; | 
|     } | 
|     WindowCountSubscriber.prototype._next = function (value) { | 
|         var startWindowEvery = (this.startWindowEvery > 0) ? this.startWindowEvery : this.windowSize; | 
|         var destination = this.destination; | 
|         var windowSize = this.windowSize; | 
|         var windows = this.windows; | 
|         var len = windows.length; | 
|         for (var i = 0; i < len && !this.closed; i++) { | 
|             windows[i].next(value); | 
|         } | 
|         var c = this.count - windowSize + 1; | 
|         if (c >= 0 && c % startWindowEvery === 0 && !this.closed) { | 
|             windows.shift().complete(); | 
|         } | 
|         if (++this.count % startWindowEvery === 0 && !this.closed) { | 
|             var window_1 = new Subject_1.Subject(); | 
|             windows.push(window_1); | 
|             destination.next(window_1); | 
|         } | 
|     }; | 
|     WindowCountSubscriber.prototype._error = function (err) { | 
|         var windows = this.windows; | 
|         if (windows) { | 
|             while (windows.length > 0 && !this.closed) { | 
|                 windows.shift().error(err); | 
|             } | 
|         } | 
|         this.destination.error(err); | 
|     }; | 
|     WindowCountSubscriber.prototype._complete = function () { | 
|         var windows = this.windows; | 
|         if (windows) { | 
|             while (windows.length > 0 && !this.closed) { | 
|                 windows.shift().complete(); | 
|             } | 
|         } | 
|         this.destination.complete(); | 
|     }; | 
|     WindowCountSubscriber.prototype._unsubscribe = function () { | 
|         this.count = 0; | 
|         this.windows = null; | 
|     }; | 
|     return WindowCountSubscriber; | 
| }(Subscriber_1.Subscriber)); | 
| //# sourceMappingURL=windowCount.js.map |