| /** PURE_IMPORTS_START tslib,_Subscriber,_scheduler_async,_throttle PURE_IMPORTS_END */ | 
| import * as tslib_1 from "tslib"; | 
| import { Subscriber } from '../Subscriber'; | 
| import { async } from '../scheduler/async'; | 
| import { defaultThrottleConfig } from './throttle'; | 
| export function throttleTime(duration, scheduler, config) { | 
|     if (scheduler === void 0) { | 
|         scheduler = async; | 
|     } | 
|     if (config === void 0) { | 
|         config = defaultThrottleConfig; | 
|     } | 
|     return function (source) { return source.lift(new ThrottleTimeOperator(duration, scheduler, config.leading, config.trailing)); }; | 
| } | 
| var ThrottleTimeOperator = /*@__PURE__*/ (function () { | 
|     function ThrottleTimeOperator(duration, scheduler, leading, trailing) { | 
|         this.duration = duration; | 
|         this.scheduler = scheduler; | 
|         this.leading = leading; | 
|         this.trailing = trailing; | 
|     } | 
|     ThrottleTimeOperator.prototype.call = function (subscriber, source) { | 
|         return source.subscribe(new ThrottleTimeSubscriber(subscriber, this.duration, this.scheduler, this.leading, this.trailing)); | 
|     }; | 
|     return ThrottleTimeOperator; | 
| }()); | 
| var ThrottleTimeSubscriber = /*@__PURE__*/ (function (_super) { | 
|     tslib_1.__extends(ThrottleTimeSubscriber, _super); | 
|     function ThrottleTimeSubscriber(destination, duration, scheduler, leading, trailing) { | 
|         var _this = _super.call(this, destination) || this; | 
|         _this.duration = duration; | 
|         _this.scheduler = scheduler; | 
|         _this.leading = leading; | 
|         _this.trailing = trailing; | 
|         _this._hasTrailingValue = false; | 
|         _this._trailingValue = null; | 
|         return _this; | 
|     } | 
|     ThrottleTimeSubscriber.prototype._next = function (value) { | 
|         if (this.throttled) { | 
|             if (this.trailing) { | 
|                 this._trailingValue = value; | 
|                 this._hasTrailingValue = true; | 
|             } | 
|         } | 
|         else { | 
|             this.add(this.throttled = this.scheduler.schedule(dispatchNext, this.duration, { subscriber: this })); | 
|             if (this.leading) { | 
|                 this.destination.next(value); | 
|             } | 
|             else if (this.trailing) { | 
|                 this._trailingValue = value; | 
|                 this._hasTrailingValue = true; | 
|             } | 
|         } | 
|     }; | 
|     ThrottleTimeSubscriber.prototype._complete = function () { | 
|         if (this._hasTrailingValue) { | 
|             this.destination.next(this._trailingValue); | 
|             this.destination.complete(); | 
|         } | 
|         else { | 
|             this.destination.complete(); | 
|         } | 
|     }; | 
|     ThrottleTimeSubscriber.prototype.clearThrottle = function () { | 
|         var throttled = this.throttled; | 
|         if (throttled) { | 
|             if (this.trailing && this._hasTrailingValue) { | 
|                 this.destination.next(this._trailingValue); | 
|                 this._trailingValue = null; | 
|                 this._hasTrailingValue = false; | 
|             } | 
|             throttled.unsubscribe(); | 
|             this.remove(throttled); | 
|             this.throttled = null; | 
|         } | 
|     }; | 
|     return ThrottleTimeSubscriber; | 
| }(Subscriber)); | 
| function dispatchNext(arg) { | 
|     var subscriber = arg.subscriber; | 
|     subscriber.clearThrottle(); | 
| } | 
| //# sourceMappingURL=throttleTime.js.map |