mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-07-02 11:29:27 +00:00
54 lines
1.1 KiB
JavaScript
54 lines
1.1 KiB
JavaScript
import { bindDragEnterLeave } from '../helpers/DragAndDrop.js';
|
|
|
|
export default {
|
|
mounted(el, binding) {
|
|
const delay = parseInt(binding.arg) || 300;
|
|
|
|
let timeout = null;
|
|
function startCountdown() {
|
|
timeout = window.setTimeout(binding.value, delay);
|
|
}
|
|
function stopCountdown() {
|
|
if (timeout)
|
|
window.clearTimeout(timeout);
|
|
timeout = null;
|
|
}
|
|
|
|
let lastTarget;
|
|
let lastX;
|
|
let lastY;
|
|
|
|
function onDragOver(evt) {
|
|
if (lastX != evt.offsetX || lastY != evt.offsetY || lastTarget != evt.target) {
|
|
// moved
|
|
lastTarget = evt.target;
|
|
lastX = evt.offsetX;
|
|
lastY = evt.offsetY;
|
|
|
|
stopCountdown();
|
|
startCountdown();
|
|
}
|
|
}
|
|
|
|
function onEnter(evt) {
|
|
lastTarget = evt.target;
|
|
lastX = evt.offsetX;
|
|
lastY = evt.offsetY;
|
|
|
|
el.addEventListener('dragover', onDragOver);
|
|
|
|
startCountdown();
|
|
}
|
|
function onLeave() {
|
|
stopCountdown();
|
|
el.removeEventListener('dragover', onDragOver);
|
|
}
|
|
|
|
el.fhcDragClickCleanup = bindDragEnterLeave(el, onEnter, onLeave);
|
|
},
|
|
beforeUnmount(el) {
|
|
el.fhcDragClickCleanup();
|
|
delete el.fhcDragClickCleanup;
|
|
}
|
|
}
|