|
1 | 1 | import { useState, useEffect } from 'react'; |
2 | 2 | import { noop } from '../../../lib'; |
3 | | -import { TOUCH_START_EVENT } from './constants'; |
| 3 | +import { EVENTS } from './constants'; |
4 | 4 |
|
5 | 5 | const DRAG_HANDLERS = { |
6 | 6 | MOUSE: { |
7 | 7 | stop: (e) => { |
8 | 8 | e.preventDefault(); |
9 | | - e.stopPropagation(); |
| 9 | + e.stopPropagation(); |
10 | 10 | }, |
11 | 11 | coordinates: ({ clientX, clientY }) => ({ clientX, clientY }), |
12 | | - dragEvent: { name: 'mousemove' }, |
13 | | - dragEndEvent: { name: 'mouseup' } |
| 12 | + dragEvent: { name: EVENTS.MOUSEMOVE }, |
| 13 | + dragEndEvent: { name: EVENTS.MOUSEUP } |
14 | 14 | }, |
15 | 15 | TOUCH: { |
16 | 16 | stop: noop, |
17 | 17 | coordinates: (e) => { |
18 | 18 | const [touch] = e.touches; |
19 | 19 | return { clientX: touch.clientX, clientY: touch.clientY }; |
20 | 20 | }, |
21 | | - dragEvent: { name: 'touchmove', options: { cancelable: true, passive: true } }, |
22 | | - dragEndEvent: { name: 'touchend' } |
| 21 | + dragEvent: { name: EVENTS.TOUCHMOVE, options: { cancelable: true, passive: true } }, |
| 22 | + dragEndEvent: { name: EVENTS.TOUCHEND } |
23 | 23 | } |
24 | 24 | }; |
25 | 25 |
|
26 | | -const isTouch = (e) => e.type === TOUCH_START_EVENT; |
| 26 | +const isTouch = (e) => e.type === EVENTS.TOUCHSTART; |
27 | 27 |
|
28 | 28 | const useDragging = ({ onDragStart = noop, onDrag, onDragEnd = noop }) => { |
29 | 29 | const [context, setContext] = useState({}); |
30 | 30 | const [dragging, setDragging] = useState(false); |
31 | 31 |
|
32 | | - const handleMouseDown = (e) => { |
| 32 | + const dragHandler = (e) => { |
33 | 33 | const handler = isTouch(e) ? DRAG_HANDLERS.TOUCH : DRAG_HANDLERS.MOUSE; |
34 | 34 |
|
35 | 35 | handler.stop(e); |
@@ -70,13 +70,13 @@ const useDragging = ({ onDragStart = noop, onDrag, onDragEnd = noop }) => { |
70 | 70 | } |
71 | 71 |
|
72 | 72 | return () => { |
73 | | - document.removeEventListener(dragEvent.name, handleDrag); |
| 73 | + document.removeEventListener(dragEvent.name, handleDrag, dragEndEvent.options); |
74 | 74 | document.removeEventListener(dragEndEvent.name, deactivate); |
75 | 75 | }; |
76 | 76 | }, [dragging]); |
77 | 77 |
|
78 | 78 | return [ |
79 | | - handleMouseDown, |
| 79 | + dragHandler, |
80 | 80 | activate, |
81 | 81 | deactivate |
82 | 82 | ]; |
|
0 commit comments