Skip to content

Commit ae71c27

Browse files
committed
js to vueuse
1 parent b16ca51 commit ae71c27

File tree

1 file changed

+44
-9
lines changed

1 file changed

+44
-9
lines changed

components/Viewer/ContextMenu.vue

Lines changed: 44 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,46 @@
5454
const menuX = ref(props.x || menuStore.menuX)
5555
const menuY = ref(props.y || menuStore.menuY)
5656
57+
const { pause: pauseDragListeners, resume: resumeDragListeners } =
58+
useEventListener(
59+
"mousemove",
60+
(e) => {
61+
if (!isDragging.value) return
62+
handleDrag(e)
63+
},
64+
{ passive: true },
65+
)
66+
67+
const { pause: pauseStopListeners, resume: resumeStopListeners } =
68+
useEventListener("mouseup", (e) => {
69+
if (!isDragging.value) return
70+
stopDrag(e)
71+
})
72+
73+
useEventListener(
74+
"touchstart",
75+
(e) => {
76+
startDrag(e.touches[0])
77+
e.preventDefault()
78+
},
79+
{ passive: false },
80+
)
81+
82+
useEventListener(
83+
"touchmove",
84+
(e) => {
85+
if (!isDragging.value) return
86+
handleDrag(e.touches[0])
87+
e.preventDefault()
88+
},
89+
{ passive: false },
90+
)
91+
92+
useEventListener("touchend", (e) => {
93+
if (!isDragging.value) return
94+
stopDrag(e.changedTouches[0])
95+
})
96+
5797
watch(show_menu, (newVal) => {
5898
if (!newVal && isDragging.value) {
5999
setTimeout(() => {
@@ -75,8 +115,8 @@
75115
isDragging.value = true
76116
dragStartX.value = e.clientX - menuX.value
77117
dragStartY.value = e.clientY - menuY.value
78-
document.addEventListener("mousemove", handleDrag)
79-
document.addEventListener("mouseup", stopDrag)
118+
resumeDragListeners()
119+
resumeStopListeners()
80120
e.preventDefault()
81121
}
82122
@@ -97,8 +137,8 @@
97137
98138
function stopDrag(e) {
99139
isDragging.value = false
100-
document.removeEventListener("mousemove", handleDrag)
101-
document.removeEventListener("mouseup", stopDrag)
140+
pauseDragListeners()
141+
pauseStopListeners()
102142
e.stopPropagation()
103143
menuStore.setMenuPosition(menuX.value, menuY.value)
104144
}
@@ -134,11 +174,6 @@
134174
position: "absolute",
135175
}
136176
}
137-
138-
onUnmounted(() => {
139-
document.removeEventListener("mousemove", handleDrag)
140-
document.removeEventListener("mouseup", stopDrag)
141-
})
142177
</script>
143178

144179
<style scoped>

0 commit comments

Comments
 (0)