index.js 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
  2. let _vue_shared = require("@vue/shared");
  3. //#region ../../packages/directives/repeat-click/index.ts
  4. const REPEAT_INTERVAL = 100;
  5. const REPEAT_DELAY = 600;
  6. const SCOPE = "_RepeatClick";
  7. const vRepeatClick = {
  8. beforeMount(el, binding) {
  9. const value = binding.value;
  10. const { interval = 100, delay = 600 } = (0, _vue_shared.isFunction)(value) ? {} : value;
  11. let intervalId;
  12. let delayId;
  13. const handler = () => (0, _vue_shared.isFunction)(value) ? value() : value.handler();
  14. const clear = () => {
  15. if (delayId) {
  16. clearTimeout(delayId);
  17. delayId = void 0;
  18. }
  19. if (intervalId) {
  20. clearInterval(intervalId);
  21. intervalId = void 0;
  22. }
  23. };
  24. const start = (evt) => {
  25. if (evt.button !== 0) return;
  26. clear();
  27. handler();
  28. document.addEventListener("mouseup", clear, {
  29. once: true,
  30. capture: true
  31. });
  32. delayId = setTimeout(() => {
  33. intervalId = setInterval(() => {
  34. handler();
  35. }, interval);
  36. }, delay);
  37. };
  38. el[SCOPE] = {
  39. start,
  40. clear
  41. };
  42. el.addEventListener("mousedown", start);
  43. },
  44. unmounted(el) {
  45. if (!el[SCOPE]) return;
  46. const { start, clear } = el[SCOPE];
  47. if (start) el.removeEventListener("mousedown", start);
  48. if (clear) {
  49. clear();
  50. document.removeEventListener("mouseup", clear, true);
  51. }
  52. el[SCOPE] = null;
  53. }
  54. };
  55. //#endregion
  56. exports.REPEAT_DELAY = REPEAT_DELAY;
  57. exports.REPEAT_INTERVAL = REPEAT_INTERVAL;
  58. exports.vRepeatClick = vRepeatClick;
  59. //# sourceMappingURL=index.js.map