1 /** PURE_IMPORTS_START tslib,_innerSubscribe PURE_IMPORTS_END */
2 import * as tslib_1 from "tslib";
3 import { SimpleOuterSubscriber, innerSubscribe, SimpleInnerSubscriber } from '../innerSubscribe';
4 export function distinct(keySelector, flushes) {
5 return function (source) { return source.lift(new DistinctOperator(keySelector, flushes)); };
7 var DistinctOperator = /*@__PURE__*/ (function () {
8 function DistinctOperator(keySelector, flushes) {
9 this.keySelector = keySelector;
10 this.flushes = flushes;
12 DistinctOperator.prototype.call = function (subscriber, source) {
13 return source.subscribe(new DistinctSubscriber(subscriber, this.keySelector, this.flushes));
15 return DistinctOperator;
17 var DistinctSubscriber = /*@__PURE__*/ (function (_super) {
18 tslib_1.__extends(DistinctSubscriber, _super);
19 function DistinctSubscriber(destination, keySelector, flushes) {
20 var _this = _super.call(this, destination) || this;
21 _this.keySelector = keySelector;
22 _this.values = new Set();
24 _this.add(innerSubscribe(flushes, new SimpleInnerSubscriber(_this)));
28 DistinctSubscriber.prototype.notifyNext = function () {
31 DistinctSubscriber.prototype.notifyError = function (error) {
34 DistinctSubscriber.prototype._next = function (value) {
35 if (this.keySelector) {
36 this._useKeySelector(value);
39 this._finalizeNext(value, value);
42 DistinctSubscriber.prototype._useKeySelector = function (value) {
44 var destination = this.destination;
46 key = this.keySelector(value);
49 destination.error(err);
52 this._finalizeNext(key, value);
54 DistinctSubscriber.prototype._finalizeNext = function (key, value) {
55 var values = this.values;
56 if (!values.has(key)) {
58 this.destination.next(value);
61 return DistinctSubscriber;
62 }(SimpleOuterSubscriber));
63 export { DistinctSubscriber };
64 //# sourceMappingURL=distinct.js.map