| /** 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 |