1 /** PURE_IMPORTS_START tslib,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */
2 import * as tslib_1 from "tslib";
3 import { OuterSubscriber } from '../OuterSubscriber';
4 import { subscribeToResult } from '../util/subscribeToResult';
5 export function distinct(keySelector, flushes) {
6 return function (source) { return source.lift(new DistinctOperator(keySelector, flushes)); };
8 var DistinctOperator = /*@__PURE__*/ (function () {
9 function DistinctOperator(keySelector, flushes) {
10 this.keySelector = keySelector;
11 this.flushes = flushes;
13 DistinctOperator.prototype.call = function (subscriber, source) {
14 return source.subscribe(new DistinctSubscriber(subscriber, this.keySelector, this.flushes));
16 return DistinctOperator;
18 var DistinctSubscriber = /*@__PURE__*/ (function (_super) {
19 tslib_1.__extends(DistinctSubscriber, _super);
20 function DistinctSubscriber(destination, keySelector, flushes) {
21 var _this = _super.call(this, destination) || this;
22 _this.keySelector = keySelector;
23 _this.values = new Set();
25 _this.add(subscribeToResult(_this, flushes));
29 DistinctSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {
32 DistinctSubscriber.prototype.notifyError = function (error, innerSub) {
35 DistinctSubscriber.prototype._next = function (value) {
36 if (this.keySelector) {
37 this._useKeySelector(value);
40 this._finalizeNext(value, value);
43 DistinctSubscriber.prototype._useKeySelector = function (value) {
45 var destination = this.destination;
47 key = this.keySelector(value);
50 destination.error(err);
53 this._finalizeNext(key, value);
55 DistinctSubscriber.prototype._finalizeNext = function (key, value) {
56 var values = this.values;
57 if (!values.has(key)) {
59 this.destination.next(value);
62 return DistinctSubscriber;
64 export { DistinctSubscriber };
65 //# sourceMappingURL=distinct.js.map