UNPKG

multitude

Version:

Comprehensive streams for push and pull

32 lines (27 loc) 3.06 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.debounce = debounce; var _operate = require("../../utils/operate"); function debounce(due) { return (0, _operate.operate)(obs => { let timeout; let push; return [null, function next(value) { if (timeout) clearTimeout(timeout); push = () => { push = undefined; obs.next(value); }; timeout = setTimeout(() => push ? push() : null, due); }, null, function complete() { if (timeout) clearTimeout(timeout); if (push) push(); obs.complete(); }, function teardown() { if (timeout) clearTimeout(timeout); }]; }); } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9wdXNoL29wZXJhdG9ycy9zY2hlZHVsZS9kZWJvdW5jZS50cyJdLCJuYW1lcyI6WyJkZWJvdW5jZSIsImR1ZSIsIm9icyIsInRpbWVvdXQiLCJwdXNoIiwibmV4dCIsInZhbHVlIiwiY2xlYXJUaW1lb3V0IiwidW5kZWZpbmVkIiwic2V0VGltZW91dCIsImNvbXBsZXRlIiwidGVhcmRvd24iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFDQTs7QUFHTyxTQUFTQSxRQUFULENBQXFCQyxHQUFyQixFQUFxRDtBQUMxRCxTQUFPLHNCQUFZQyxHQUFELElBQVM7QUFDekIsUUFBSUMsT0FBSjtBQUNBLFFBQUlDLElBQUo7QUFFQSxXQUFPLENBQ0wsSUFESyxFQUVMLFNBQVNDLElBQVQsQ0FBY0MsS0FBZCxFQUFxQjtBQUNuQixVQUFJSCxPQUFKLEVBQWFJLFlBQVksQ0FBQ0osT0FBRCxDQUFaOztBQUViQyxNQUFBQSxJQUFJLEdBQUcsTUFBTTtBQUNYQSxRQUFBQSxJQUFJLEdBQUdJLFNBQVA7QUFDQU4sUUFBQUEsR0FBRyxDQUFDRyxJQUFKLENBQVNDLEtBQVQ7QUFDRCxPQUhEOztBQUtBSCxNQUFBQSxPQUFPLEdBQUdNLFVBQVUsQ0FBQyxNQUFPTCxJQUFJLEdBQUdBLElBQUksRUFBUCxHQUFZLElBQXhCLEVBQStCSCxHQUEvQixDQUFwQjtBQUNELEtBWEksRUFZTCxJQVpLLEVBYUwsU0FBU1MsUUFBVCxHQUFvQjtBQUNsQixVQUFJUCxPQUFKLEVBQWFJLFlBQVksQ0FBQ0osT0FBRCxDQUFaO0FBQ2IsVUFBSUMsSUFBSixFQUFVQSxJQUFJO0FBQ2RGLE1BQUFBLEdBQUcsQ0FBQ1EsUUFBSjtBQUNELEtBakJJLEVBa0JMLFNBQVNDLFFBQVQsR0FBb0I7QUFDbEIsVUFBSVIsT0FBSixFQUFhSSxZQUFZLENBQUNKLE9BQUQsQ0FBWjtBQUNkLEtBcEJJLENBQVA7QUFzQkQsR0ExQk0sQ0FBUDtBQTJCRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFB1c2ggfSBmcm9tICdAZGVmaW5pdGlvbnMnO1xuaW1wb3J0IHsgb3BlcmF0ZSB9IGZyb20gJy4uLy4uL3V0aWxzL29wZXJhdGUnO1xuaW1wb3J0IHsgTnVsbGFyeUZuIH0gZnJvbSAndHlwZS1jb3JlJztcblxuZXhwb3J0IGZ1bmN0aW9uIGRlYm91bmNlPFQ+KGR1ZTogbnVtYmVyKTogUHVzaC5PcGVyYXRpb248VD4ge1xuICByZXR1cm4gb3BlcmF0ZTxUPigob2JzKSA9PiB7XG4gICAgbGV0IHRpbWVvdXQ6IHZvaWQgfCBOb2RlSlMuVGltZW91dDtcbiAgICBsZXQgcHVzaDogdm9pZCB8IE51bGxhcnlGbjtcblxuICAgIHJldHVybiBbXG4gICAgICBudWxsLFxuICAgICAgZnVuY3Rpb24gbmV4dCh2YWx1ZSkge1xuICAgICAgICBpZiAodGltZW91dCkgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuXG4gICAgICAgIHB1c2ggPSAoKSA9PiB7XG4gICAgICAgICAgcHVzaCA9IHVuZGVmaW5lZDtcbiAgICAgICAgICBvYnMubmV4dCh2YWx1ZSk7XG4gICAgICAgIH07XG5cbiAgICAgICAgdGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4gKHB1c2ggPyBwdXNoKCkgOiBudWxsKSwgZHVlKTtcbiAgICAgIH0sXG4gICAgICBudWxsLFxuICAgICAgZnVuY3Rpb24gY29tcGxldGUoKSB7XG4gICAgICAgIGlmICh0aW1lb3V0KSBjbGVhclRpbWVvdXQodGltZW91dCk7XG4gICAgICAgIGlmIChwdXNoKSBwdXNoKCk7XG4gICAgICAgIG9icy5jb21wbGV0ZSgpO1xuICAgICAgfSxcbiAgICAgIGZ1bmN0aW9uIHRlYXJkb3duKCkge1xuICAgICAgICBpZiAodGltZW91dCkgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICAgICAgfVxuICAgIF07XG4gIH0pO1xufVxuIl19