Repositorio del curso CCOM4030 el semestre B91 del proyecto Artesanías con el Instituto de Cultura

debounceTime.js 3.0KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. "use strict";
  2. var __extends = (this && this.__extends) || (function () {
  3. var extendStatics = function (d, b) {
  4. extendStatics = Object.setPrototypeOf ||
  5. ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
  6. function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
  7. return extendStatics(d, b);
  8. }
  9. return function (d, b) {
  10. extendStatics(d, b);
  11. function __() { this.constructor = d; }
  12. d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
  13. };
  14. })();
  15. Object.defineProperty(exports, "__esModule", { value: true });
  16. var Subscriber_1 = require("../Subscriber");
  17. var async_1 = require("../scheduler/async");
  18. function debounceTime(dueTime, scheduler) {
  19. if (scheduler === void 0) { scheduler = async_1.async; }
  20. return function (source) { return source.lift(new DebounceTimeOperator(dueTime, scheduler)); };
  21. }
  22. exports.debounceTime = debounceTime;
  23. var DebounceTimeOperator = (function () {
  24. function DebounceTimeOperator(dueTime, scheduler) {
  25. this.dueTime = dueTime;
  26. this.scheduler = scheduler;
  27. }
  28. DebounceTimeOperator.prototype.call = function (subscriber, source) {
  29. return source.subscribe(new DebounceTimeSubscriber(subscriber, this.dueTime, this.scheduler));
  30. };
  31. return DebounceTimeOperator;
  32. }());
  33. var DebounceTimeSubscriber = (function (_super) {
  34. __extends(DebounceTimeSubscriber, _super);
  35. function DebounceTimeSubscriber(destination, dueTime, scheduler) {
  36. var _this = _super.call(this, destination) || this;
  37. _this.dueTime = dueTime;
  38. _this.scheduler = scheduler;
  39. _this.debouncedSubscription = null;
  40. _this.lastValue = null;
  41. _this.hasValue = false;
  42. return _this;
  43. }
  44. DebounceTimeSubscriber.prototype._next = function (value) {
  45. this.clearDebounce();
  46. this.lastValue = value;
  47. this.hasValue = true;
  48. this.add(this.debouncedSubscription = this.scheduler.schedule(dispatchNext, this.dueTime, this));
  49. };
  50. DebounceTimeSubscriber.prototype._complete = function () {
  51. this.debouncedNext();
  52. this.destination.complete();
  53. };
  54. DebounceTimeSubscriber.prototype.debouncedNext = function () {
  55. this.clearDebounce();
  56. if (this.hasValue) {
  57. var lastValue = this.lastValue;
  58. this.lastValue = null;
  59. this.hasValue = false;
  60. this.destination.next(lastValue);
  61. }
  62. };
  63. DebounceTimeSubscriber.prototype.clearDebounce = function () {
  64. var debouncedSubscription = this.debouncedSubscription;
  65. if (debouncedSubscription !== null) {
  66. this.remove(debouncedSubscription);
  67. debouncedSubscription.unsubscribe();
  68. this.debouncedSubscription = null;
  69. }
  70. };
  71. return DebounceTimeSubscriber;
  72. }(Subscriber_1.Subscriber));
  73. function dispatchNext(subscriber) {
  74. subscriber.debouncedNext();
  75. }
  76. //# sourceMappingURL=debounceTime.js.map