1 | ;
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | var index_1 = require("../index");
|
4 | var DebounceOperator = /** @class */ (function () {
|
5 | function DebounceOperator(dt, ins) {
|
6 | this.dt = dt;
|
7 | this.ins = ins;
|
8 | this.type = 'debounce';
|
9 | this.out = null;
|
10 | this.id = null;
|
11 | }
|
12 | DebounceOperator.prototype._start = function (out) {
|
13 | this.out = out;
|
14 | this.ins._add(this);
|
15 | };
|
16 | DebounceOperator.prototype._stop = function () {
|
17 | this.ins._remove(this);
|
18 | this.out = null;
|
19 | this.id = null;
|
20 | };
|
21 | DebounceOperator.prototype.clearInterval = function () {
|
22 | var id = this.id;
|
23 | if (id !== null) {
|
24 | clearInterval(id);
|
25 | }
|
26 | this.id = null;
|
27 | };
|
28 | DebounceOperator.prototype._n = function (t) {
|
29 | var _this = this;
|
30 | var u = this.out;
|
31 | if (!u)
|
32 | return;
|
33 | this.clearInterval();
|
34 | this.id = setInterval(function () {
|
35 | _this.clearInterval();
|
36 | u._n(t);
|
37 | }, this.dt);
|
38 | };
|
39 | DebounceOperator.prototype._e = function (err) {
|
40 | var u = this.out;
|
41 | if (!u)
|
42 | return;
|
43 | this.clearInterval();
|
44 | u._e(err);
|
45 | };
|
46 | DebounceOperator.prototype._c = function () {
|
47 | var u = this.out;
|
48 | if (!u)
|
49 | return;
|
50 | this.clearInterval();
|
51 | u._c();
|
52 | };
|
53 | return DebounceOperator;
|
54 | }());
|
55 | /**
|
56 | * Delays events until a certain amount of silence has passed. If that timespan
|
57 | * of silence is not met the event is dropped.
|
58 | *
|
59 | * Marble diagram:
|
60 | *
|
61 | * ```text
|
62 | * --1----2--3--4----5|
|
63 | * debounce(60)
|
64 | * -----1----------4--|
|
65 | * ```
|
66 | *
|
67 | * Example:
|
68 | *
|
69 | * ```js
|
70 | * import fromDiagram from 'xstream/extra/fromDiagram'
|
71 | * import debounce from 'xstream/extra/debounce'
|
72 | *
|
73 | * const stream = fromDiagram('--1----2--3--4----5|')
|
74 | * .compose(debounce(60))
|
75 | *
|
76 | * stream.addListener({
|
77 | * next: i => console.log(i),
|
78 | * error: err => console.error(err),
|
79 | * complete: () => console.log('completed')
|
80 | * })
|
81 | * ```
|
82 | *
|
83 | * ```text
|
84 | * > 1
|
85 | * > 4
|
86 | * > completed
|
87 | * ```
|
88 | *
|
89 | * @param {number} period The amount of silence required in milliseconds.
|
90 | * @return {Stream}
|
91 | */
|
92 | function debounce(period) {
|
93 | return function debounceOperator(ins) {
|
94 | return new index_1.Stream(new DebounceOperator(period, ins));
|
95 | };
|
96 | }
|
97 | exports.default = debounce;
|
98 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVib3VuY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvZXh0cmEvZGVib3VuY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxrQ0FBMEM7QUFFMUM7SUFLRSwwQkFBbUIsRUFBVSxFQUNWLEdBQWM7UUFEZCxPQUFFLEdBQUYsRUFBRSxDQUFRO1FBQ1YsUUFBRyxHQUFILEdBQUcsQ0FBVztRQUwxQixTQUFJLEdBQUcsVUFBVSxDQUFDO1FBQ2xCLFFBQUcsR0FBYyxJQUFXLENBQUM7UUFDNUIsT0FBRSxHQUFRLElBQUksQ0FBQztJQUl2QixDQUFDO0lBRUQsaUNBQU0sR0FBTixVQUFPLEdBQWM7UUFDbkIsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7UUFDZixJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0QixDQUFDO0lBRUQsZ0NBQUssR0FBTDtRQUNFLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBVyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDO0lBQ2pCLENBQUM7SUFFRCx3Q0FBYSxHQUFiO1FBQ0UsSUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUNuQixJQUFJLEVBQUUsS0FBSyxJQUFJLEVBQUU7WUFDZixhQUFhLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDbkI7UUFDRCxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQztJQUNqQixDQUFDO0lBRUQsNkJBQUUsR0FBRixVQUFHLENBQUk7UUFBUCxpQkFRQztRQVBDLElBQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUM7UUFDbkIsSUFBSSxDQUFDLENBQUM7WUFBRSxPQUFPO1FBQ2YsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxFQUFFLEdBQUcsV0FBVyxDQUFDO1lBQ3BCLEtBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNyQixDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ1YsQ0FBQyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNkLENBQUM7SUFFRCw2QkFBRSxHQUFGLFVBQUcsR0FBUTtRQUNULElBQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUM7UUFDbkIsSUFBSSxDQUFDLENBQUM7WUFBRSxPQUFPO1FBQ2YsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3JCLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDWixDQUFDO0lBRUQsNkJBQUUsR0FBRjtRQUNFLElBQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUM7UUFDbkIsSUFBSSxDQUFDLENBQUM7WUFBRSxPQUFPO1FBQ2YsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3JCLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQztJQUNULENBQUM7SUFDSCx1QkFBQztBQUFELENBQUMsQUFuREQsSUFtREM7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0NHO0FBQ0gsa0JBQW9DLE1BQWM7SUFDaEQsT0FBTywwQkFBMEIsR0FBYztRQUM3QyxPQUFPLElBQUksY0FBTSxDQUFJLElBQUksZ0JBQWdCLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDMUQsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUpELDJCQUlDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtPcGVyYXRvciwgU3RyZWFtfSBmcm9tICcuLi9pbmRleCc7XG5cbmNsYXNzIERlYm91bmNlT3BlcmF0b3I8VD4gaW1wbGVtZW50cyBPcGVyYXRvcjxULCBUPiB7XG4gIHB1YmxpYyB0eXBlID0gJ2RlYm91bmNlJztcbiAgcHVibGljIG91dDogU3RyZWFtPFQ+ID0gbnVsbCBhcyBhbnk7XG4gIHByaXZhdGUgaWQ6IGFueSA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IocHVibGljIGR0OiBudW1iZXIsXG4gICAgICAgICAgICAgIHB1YmxpYyBpbnM6IFN0cmVhbTxUPikge1xuICB9XG5cbiAgX3N0YXJ0KG91dDogU3RyZWFtPFQ+KTogdm9pZCB7XG4gICAgdGhpcy5vdXQgPSBvdXQ7XG4gICAgdGhpcy5pbnMuX2FkZCh0aGlzKTtcbiAgfVxuXG4gIF9zdG9wKCk6IHZvaWQge1xuICAgIHRoaXMuaW5zLl9yZW1vdmUodGhpcyk7XG4gICAgdGhpcy5vdXQgPSBudWxsIGFzIGFueTtcbiAgICB0aGlzLmlkID0gbnVsbDtcbiAgfVxuXG4gIGNsZWFySW50ZXJ2YWwoKSB7XG4gICAgY29uc3QgaWQgPSB0aGlzLmlkO1xuICAgIGlmIChpZCAhPT0gbnVsbCkge1xuICAgICAgY2xlYXJJbnRlcnZhbChpZCk7XG4gICAgfVxuICAgIHRoaXMuaWQgPSBudWxsO1xuICB9XG5cbiAgX24odDogVCkge1xuICAgIGNvbnN0IHUgPSB0aGlzLm91dDtcbiAgICBpZiAoIXUpIHJldHVybjtcbiAgICB0aGlzLmNsZWFySW50ZXJ2YWwoKTtcbiAgICB0aGlzLmlkID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgdGhpcy5jbGVhckludGVydmFsKCk7XG4gICAgICB1Ll9uKHQpO1xuICAgIH0sIHRoaXMuZHQpO1xuICB9XG5cbiAgX2UoZXJyOiBhbnkpIHtcbiAgICBjb25zdCB1ID0gdGhpcy5vdXQ7XG4gICAgaWYgKCF1KSByZXR1cm47XG4gICAgdGhpcy5jbGVhckludGVydmFsKCk7XG4gICAgdS5fZShlcnIpO1xuICB9XG5cbiAgX2MoKSB7XG4gICAgY29uc3QgdSA9IHRoaXMub3V0O1xuICAgIGlmICghdSkgcmV0dXJuO1xuICAgIHRoaXMuY2xlYXJJbnRlcnZhbCgpO1xuICAgIHUuX2MoKTtcbiAgfVxufVxuXG4vKipcbiAqIERlbGF5cyBldmVudHMgdW50aWwgYSBjZXJ0YWluIGFtb3VudCBvZiBzaWxlbmNlIGhhcyBwYXNzZWQuIElmIHRoYXQgdGltZXNwYW5cbiAqIG9mIHNpbGVuY2UgaXMgbm90IG1ldCB0aGUgZXZlbnQgaXMgZHJvcHBlZC5cbiAqXG4gKiBNYXJibGUgZGlhZ3JhbTpcbiAqXG4gKiBgYGB0ZXh0XG4gKiAtLTEtLS0tMi0tMy0tNC0tLS01fFxuICogICAgIGRlYm91bmNlKDYwKVxuICogLS0tLS0xLS0tLS0tLS0tLTQtLXxcbiAqIGBgYFxuICpcbiAqIEV4YW1wbGU6XG4gKlxuICogYGBganNcbiAqIGltcG9ydCBmcm9tRGlhZ3JhbSBmcm9tICd4c3RyZWFtL2V4dHJhL2Zyb21EaWFncmFtJ1xuICogaW1wb3J0IGRlYm91bmNlIGZyb20gJ3hzdHJlYW0vZXh0cmEvZGVib3VuY2UnXG4gKlxuICogY29uc3Qgc3RyZWFtID0gZnJvbURpYWdyYW0oJy0tMS0tLS0yLS0zLS00LS0tLTV8JylcbiAqICAuY29tcG9zZShkZWJvdW5jZSg2MCkpXG4gKlxuICogc3RyZWFtLmFkZExpc3RlbmVyKHtcbiAqICAgbmV4dDogaSA9PiBjb25zb2xlLmxvZyhpKSxcbiAqICAgZXJyb3I6IGVyciA9PiBjb25zb2xlLmVycm9yKGVyciksXG4gKiAgIGNvbXBsZXRlOiAoKSA9PiBjb25zb2xlLmxvZygnY29tcGxldGVkJylcbiAqIH0pXG4gKiBgYGBcbiAqXG4gKiBgYGB0ZXh0XG4gKiA+IDFcbiAqID4gNFxuICogPiBjb21wbGV0ZWRcbiAqIGBgYFxuICpcbiAqIEBwYXJhbSB7bnVtYmVyfSBwZXJpb2QgVGhlIGFtb3VudCBvZiBzaWxlbmNlIHJlcXVpcmVkIGluIG1pbGxpc2Vjb25kcy5cbiAqIEByZXR1cm4ge1N0cmVhbX1cbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZGVib3VuY2U8VD4ocGVyaW9kOiBudW1iZXIpOiAoaW5zOiBTdHJlYW08VD4pID0+IFN0cmVhbTxUPiB7XG4gIHJldHVybiBmdW5jdGlvbiBkZWJvdW5jZU9wZXJhdG9yKGluczogU3RyZWFtPFQ+KSB7XG4gICAgcmV0dXJuIG5ldyBTdHJlYW08VD4obmV3IERlYm91bmNlT3BlcmF0b3IocGVyaW9kLCBpbnMpKTtcbiAgfTtcbn1cbiJdfQ== |
\ | No newline at end of file |