| /** PURE_IMPORTS_START tslib,_innerSubscribe PURE_IMPORTS_END */ | 
| import * as tslib_1 from "tslib"; | 
| import { SimpleOuterSubscriber, innerSubscribe, SimpleInnerSubscriber } from '../innerSubscribe'; | 
| export function distinct(keySelector, flushes) { | 
|     return function (source) { return source.lift(new DistinctOperator(keySelector, flushes)); }; | 
| } | 
| var DistinctOperator = /*@__PURE__*/ (function () { | 
|     function DistinctOperator(keySelector, flushes) { | 
|         this.keySelector = keySelector; | 
|         this.flushes = flushes; | 
|     } | 
|     DistinctOperator.prototype.call = function (subscriber, source) { | 
|         return source.subscribe(new DistinctSubscriber(subscriber, this.keySelector, this.flushes)); | 
|     }; | 
|     return DistinctOperator; | 
| }()); | 
| var DistinctSubscriber = /*@__PURE__*/ (function (_super) { | 
|     tslib_1.__extends(DistinctSubscriber, _super); | 
|     function DistinctSubscriber(destination, keySelector, flushes) { | 
|         var _this = _super.call(this, destination) || this; | 
|         _this.keySelector = keySelector; | 
|         _this.values = new Set(); | 
|         if (flushes) { | 
|             _this.add(innerSubscribe(flushes, new SimpleInnerSubscriber(_this))); | 
|         } | 
|         return _this; | 
|     } | 
|     DistinctSubscriber.prototype.notifyNext = function () { | 
|         this.values.clear(); | 
|     }; | 
|     DistinctSubscriber.prototype.notifyError = function (error) { | 
|         this._error(error); | 
|     }; | 
|     DistinctSubscriber.prototype._next = function (value) { | 
|         if (this.keySelector) { | 
|             this._useKeySelector(value); | 
|         } | 
|         else { | 
|             this._finalizeNext(value, value); | 
|         } | 
|     }; | 
|     DistinctSubscriber.prototype._useKeySelector = function (value) { | 
|         var key; | 
|         var destination = this.destination; | 
|         try { | 
|             key = this.keySelector(value); | 
|         } | 
|         catch (err) { | 
|             destination.error(err); | 
|             return; | 
|         } | 
|         this._finalizeNext(key, value); | 
|     }; | 
|     DistinctSubscriber.prototype._finalizeNext = function (key, value) { | 
|         var values = this.values; | 
|         if (!values.has(key)) { | 
|             values.add(key); | 
|             this.destination.next(value); | 
|         } | 
|     }; | 
|     return DistinctSubscriber; | 
| }(SimpleOuterSubscriber)); | 
| export { DistinctSubscriber }; | 
| //# sourceMappingURL=distinct.js.map |