Skip to content

Commit 120e29f

Browse files
committed
input (mouse add): support for mouse swipe move
1 parent 665b7ef commit 120e29f

File tree

1 file changed

+31
-6
lines changed

1 file changed

+31
-6
lines changed

src/input/fingerMoveManager.ts

Lines changed: 31 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,26 +4,29 @@ export let createFingerMoveManager = ({ element }) => {
44
let getTouches = (evt) => {
55
return (
66
// browser API ?? jQuery
7-
evt.touches ?? evt.originalEvent.touches
7+
evt.touches?.[0] ?? evt.originalEvent?.touches?.[0] ?? evt
88
)
99
}
1010

1111
let xDown = 0
1212
let yDown = 0
1313

1414
let handleTouchStart = (evt) => {
15-
let firstTouch = getTouches(evt)[0]
16-
xDown = firstTouch.clientX
17-
yDown = firstTouch.clientY
15+
let touches = getTouches(evt)
16+
17+
xDown = touches.clientX
18+
yDown = touches.clientY
1819
}
1920

2021
let handleTouchMove = (evt) => {
2122
if (!xDown || !yDown) {
2223
return
2324
}
2425

25-
let currentX = evt.touches[0].clientX
26-
let currentY = evt.touches[0].clientY
26+
let touches = getTouches(evt)
27+
28+
let currentX = touches.clientX
29+
let currentY = touches.clientY
2730

2831
let dx = xDown - currentX
2932
let dy = yDown - currentY
@@ -53,12 +56,34 @@ export let createFingerMoveManager = ({ element }) => {
5356
yDown = currentY
5457
}
5558

59+
let mouseIsDown = false
60+
let handleMouseDown = (ev: Event) => {
61+
mouseIsDown = true
62+
handleTouchStart(ev)
63+
}
64+
65+
let handleMouseMove = (ev) => {
66+
if (mouseIsDown) {
67+
handleTouchMove(ev)
68+
}
69+
}
70+
71+
let handleMouseUp = () => {
72+
mouseIsDown = false
73+
}
74+
5675
element.addEventListener('touchstart', handleTouchStart, false)
5776
element.addEventListener('touchmove', handleTouchMove, false)
77+
element.addEventListener('mousedown', handleMouseDown, false)
78+
element.addEventListener('mousemove', handleMouseMove, false)
79+
element.addEventListener('mouseup', handleMouseUp, false)
5880

5981
let removeAll = () => {
6082
element.removeEventListener('touchstart', handleTouchStart, false)
6183
element.removeEventListener('touchmove', handleTouchMove, false)
84+
element.removeEventListener('mousedown', handleMouseDown, false)
85+
element.removeEventListener('mousemove', handleMouseMove, false)
86+
element.removeEventListener('mouseup', handleMouseUp, false)
6287
}
6388

6489
let me = {

0 commit comments

Comments
 (0)