| /** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */ | 
| import * as tslib_1 from "tslib"; | 
| import { Subscriber } from '../Subscriber'; | 
| export function scan(accumulator, seed) { | 
|     var hasSeed = false; | 
|     if (arguments.length >= 2) { | 
|         hasSeed = true; | 
|     } | 
|     return function scanOperatorFunction(source) { | 
|         return source.lift(new ScanOperator(accumulator, seed, hasSeed)); | 
|     }; | 
| } | 
| var ScanOperator = /*@__PURE__*/ (function () { | 
|     function ScanOperator(accumulator, seed, hasSeed) { | 
|         if (hasSeed === void 0) { | 
|             hasSeed = false; | 
|         } | 
|         this.accumulator = accumulator; | 
|         this.seed = seed; | 
|         this.hasSeed = hasSeed; | 
|     } | 
|     ScanOperator.prototype.call = function (subscriber, source) { | 
|         return source.subscribe(new ScanSubscriber(subscriber, this.accumulator, this.seed, this.hasSeed)); | 
|     }; | 
|     return ScanOperator; | 
| }()); | 
| var ScanSubscriber = /*@__PURE__*/ (function (_super) { | 
|     tslib_1.__extends(ScanSubscriber, _super); | 
|     function ScanSubscriber(destination, accumulator, _seed, hasSeed) { | 
|         var _this = _super.call(this, destination) || this; | 
|         _this.accumulator = accumulator; | 
|         _this._seed = _seed; | 
|         _this.hasSeed = hasSeed; | 
|         _this.index = 0; | 
|         return _this; | 
|     } | 
|     Object.defineProperty(ScanSubscriber.prototype, "seed", { | 
|         get: function () { | 
|             return this._seed; | 
|         }, | 
|         set: function (value) { | 
|             this.hasSeed = true; | 
|             this._seed = value; | 
|         }, | 
|         enumerable: true, | 
|         configurable: true | 
|     }); | 
|     ScanSubscriber.prototype._next = function (value) { | 
|         if (!this.hasSeed) { | 
|             this.seed = value; | 
|             this.destination.next(value); | 
|         } | 
|         else { | 
|             return this._tryNext(value); | 
|         } | 
|     }; | 
|     ScanSubscriber.prototype._tryNext = function (value) { | 
|         var index = this.index++; | 
|         var result; | 
|         try { | 
|             result = this.accumulator(this.seed, value, index); | 
|         } | 
|         catch (err) { | 
|             this.destination.error(err); | 
|         } | 
|         this.seed = result; | 
|         this.destination.next(result); | 
|     }; | 
|     return ScanSubscriber; | 
| }(Subscriber)); | 
| //# sourceMappingURL=scan.js.map |