Ohm-Management - Projektarbeit B-ME
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

distinct.js 2.3KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  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)); };
  7. }
  8. var DistinctOperator = /*@__PURE__*/ (function () {
  9. function DistinctOperator(keySelector, flushes) {
  10. this.keySelector = keySelector;
  11. this.flushes = flushes;
  12. }
  13. DistinctOperator.prototype.call = function (subscriber, source) {
  14. return source.subscribe(new DistinctSubscriber(subscriber, this.keySelector, this.flushes));
  15. };
  16. return DistinctOperator;
  17. }());
  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();
  24. if (flushes) {
  25. _this.add(subscribeToResult(_this, flushes));
  26. }
  27. return _this;
  28. }
  29. DistinctSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {
  30. this.values.clear();
  31. };
  32. DistinctSubscriber.prototype.notifyError = function (error, innerSub) {
  33. this._error(error);
  34. };
  35. DistinctSubscriber.prototype._next = function (value) {
  36. if (this.keySelector) {
  37. this._useKeySelector(value);
  38. }
  39. else {
  40. this._finalizeNext(value, value);
  41. }
  42. };
  43. DistinctSubscriber.prototype._useKeySelector = function (value) {
  44. var key;
  45. var destination = this.destination;
  46. try {
  47. key = this.keySelector(value);
  48. }
  49. catch (err) {
  50. destination.error(err);
  51. return;
  52. }
  53. this._finalizeNext(key, value);
  54. };
  55. DistinctSubscriber.prototype._finalizeNext = function (key, value) {
  56. var values = this.values;
  57. if (!values.has(key)) {
  58. values.add(key);
  59. this.destination.next(value);
  60. }
  61. };
  62. return DistinctSubscriber;
  63. }(OuterSubscriber));
  64. export { DistinctSubscriber };
  65. //# sourceMappingURL=distinct.js.map