setInterval не выключается
Всем привет, ребят помогите пожалуйста решить проблему с функцией. Много времени убил, не знаю в чем проблема. Функция должна работать так, когда зажимаю кнопку мыши, функция должна работать непрерывно, а когда отпускаю кнопку, то прекращать выполнение. Но очень часто функция зависает и clearInterval продолжает бесконечно добавлять блоки на страницу. В чем может быть проблема?
function showGifts() {
let intervalMousedown;
let intervalMouseup;
let offsetX;
let offsetY;
function renderItems() {
let gift = document.createElement('div');
$('body').append(
$(gift)
.clone()
.offset({
left: offsetX - 10,
top: offsetY - 30,
}),
);
}
document.addEventListener('mousedown', () => {
clearTimeout(intervalMouseup);
intervalMousedown = setInterval(() => {
renderItems();
}, 60);
});
document.addEventListener('mouseup', () => {
let arr = document.querySelectorAll('.gift');
clearInterval(intervalMousedown);
intervalMouseup = setTimeout(() => {
arr.forEach((gift) => {
gift.remove();
});
}, 4100);
});
document.addEventListener('mousemove', (e) => {
offsetX = e.pageX;
offsetY = e.pageY;
});
}
showGifts();