"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.distinctUntilChanged = void 0; var identity_1 = require("../util/identity"); var lift_1 = require("../util/lift"); var OperatorSubscriber_1 = require("./OperatorSubscriber"); function distinctUntilChanged(comparator, keySelector) { if (keySelector === void 0) { keySelector = identity_1.identity; } comparator = comparator !== null && comparator !== void 0 ? comparator : defaultCompare; return lift_1.operate(function (source, subscriber) { var previousKey; var first = true; source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) { var currentKey = keySelector(value); if (first || !comparator(previousKey, currentKey)) { first = false; previousKey = currentKey; subscriber.next(value); } })); }); } exports.distinctUntilChanged = distinctUntilChanged; function defaultCompare(a, b) { return a === b; } //# sourceMappingURL=distinctUntilChanged.js.map