element-plus
Version:
A Component Library for Vue 3
42 lines (39 loc) • 1.09 kB
JavaScript
import '../../utils/index.mjs';
import { isFunction } from '@vue/shared';
const REPEAT_INTERVAL = 100;
const REPEAT_DELAY = 600;
const vRepeatClick = {
beforeMount(el, binding) {
const value = binding.value;
const { interval = REPEAT_INTERVAL, delay = REPEAT_DELAY } = isFunction(value) ? {} : value;
let intervalId;
let delayId;
const handler = () => isFunction(value) ? value() : value.handler();
const clear = () => {
if (delayId) {
clearTimeout(delayId);
delayId = void 0;
}
if (intervalId) {
clearInterval(intervalId);
intervalId = void 0;
}
};
el.addEventListener("mousedown", (evt) => {
if (evt.button !== 0)
return;
clear();
handler();
document.addEventListener("mouseup", () => clear(), {
once: true
});
delayId = setTimeout(() => {
intervalId = setInterval(() => {
handler();
}, interval);
}, delay);
});
}
};
export { REPEAT_DELAY, REPEAT_INTERVAL, vRepeatClick };
//# sourceMappingURL=index.mjs.map