useBuffer.js 802 B

12345678910111213141516171819202122232425262728293031323334353637
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. exports.default = void 0;
  6. var _default = (callback, buffer) => {
  7. let called = false;
  8. let timeout = null;
  9. function cancelTrigger() {
  10. clearTimeout(timeout);
  11. }
  12. function trigger(force) {
  13. if (!called || force === true) {
  14. if (callback() === false) {
  15. // Not delay since callback cancelled self
  16. return;
  17. }
  18. called = true;
  19. cancelTrigger();
  20. timeout = setTimeout(() => {
  21. called = false;
  22. }, buffer.value);
  23. } else {
  24. cancelTrigger();
  25. timeout = setTimeout(() => {
  26. called = false;
  27. trigger();
  28. }, buffer.value);
  29. }
  30. }
  31. return [trigger, () => {
  32. called = false;
  33. cancelTrigger();
  34. }];
  35. };
  36. exports.default = _default;