2024-04-11 08:48:55 +08:00

49 lines
1.7 KiB
JavaScript
Executable File
Vendored

const isSupportTouch = "ontouchend" in document;
export default {
bind (el, binding) {
let isTouch = false;
el.__touchEvent__ = {
start: e => {
e.preventDefault();
isTouch = true;
binding.value("down", e);
},
move: e => {
if (isTouch) {
binding.value("move", e);
}
},
end: _ => {
if (isTouch) {
isTouch = false;
binding.value("up");
}
}
};
if (isSupportTouch) {
el.addEventListener('touchstart', el.__touchEvent__.start);
el.addEventListener('touchmove', el.__touchEvent__.move);
el.addEventListener('touchend', el.__touchEvent__.end);
} else {
el.addEventListener('mousedown', el.__touchEvent__.start);
document.addEventListener('mousemove', el.__touchEvent__.move);
document.addEventListener('mouseup', el.__touchEvent__.end);
}
},
update () {
},
unbind (el) {
if (isSupportTouch) {
el.removeEventListener('touchstart', el.__touchEvent__.start);
el.removeEventListener('touchmove', el.__touchEvent__.move);
el.removeEventListener('touchend', el.__touchEvent__.end);
} else {
el.removeEventListener('mousedown', el.__touchEvent__.start);
document.removeEventListener('mousemove', el.__touchEvent__.move);
document.removeEventListener('mouseup', el.__touchEvent__.end);
}
delete el.__touchEvent__;
}
};