index.js 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. 'use strict';
  2. Object.defineProperty(exports, '__esModule', { value: true });
  3. var shared = require('@vue/shared');
  4. const REPEAT_INTERVAL = 100;
  5. const REPEAT_DELAY = 600;
  6. const vRepeatClick = {
  7. beforeMount(el, binding) {
  8. const value = binding.value;
  9. const { interval = REPEAT_INTERVAL, delay = REPEAT_DELAY } = shared.isFunction(value) ? {} : value;
  10. let intervalId;
  11. let delayId;
  12. const handler = () => shared.isFunction(value) ? value() : value.handler();
  13. const clear = () => {
  14. if (delayId) {
  15. clearTimeout(delayId);
  16. delayId = void 0;
  17. }
  18. if (intervalId) {
  19. clearInterval(intervalId);
  20. intervalId = void 0;
  21. }
  22. };
  23. el.addEventListener("mousedown", (evt) => {
  24. if (evt.button !== 0)
  25. return;
  26. clear();
  27. handler();
  28. document.addEventListener("mouseup", () => clear(), {
  29. once: true
  30. });
  31. delayId = setTimeout(() => {
  32. intervalId = setInterval(() => {
  33. handler();
  34. }, interval);
  35. }, delay);
  36. });
  37. }
  38. };
  39. exports.REPEAT_DELAY = REPEAT_DELAY;
  40. exports.REPEAT_INTERVAL = REPEAT_INTERVAL;
  41. exports.vRepeatClick = vRepeatClick;
  42. //# sourceMappingURL=index.js.map