@@ -41,9 +41,12 @@ export type Events = {
41
41
onClick : EventListener
42
42
onContextMenu : EventListener
43
43
onDoubleClick : EventListener
44
+ onDragEnter : EventListener
45
+ onDragLeave : EventListener
44
46
onDragOverEnter : EventListener
45
47
onDragOverLeave : EventListener
46
48
onDrop : EventListener
49
+ onDropMissed : EventListener
47
50
onWheel : EventListener
48
51
onPointerDown : EventListener
49
52
onPointerUp : EventListener
@@ -57,6 +60,8 @@ export type EventHandlers = {
57
60
onClick ?: ( event : ThreeEvent < MouseEvent > ) => void
58
61
onContextMenu ?: ( event : ThreeEvent < MouseEvent > ) => void
59
62
onDoubleClick ?: ( event : ThreeEvent < MouseEvent > ) => void
63
+ onDragEnter ?: ( event : ThreeEvent < DragEvent > ) => void
64
+ onDragLeave ?: ( event : ThreeEvent < DragEvent > ) => void
60
65
onDragOverEnter ?: ( event : ThreeEvent < DragEvent > ) => void
61
66
onDragOverLeave ?: ( event : ThreeEvent < DragEvent > ) => void
62
67
onDragOverMissed ?: ( event : DragEvent ) => void
@@ -113,6 +118,8 @@ export function getEventPriority() {
113
118
case 'click' :
114
119
case 'contextmenu' :
115
120
case 'dblclick' :
121
+ case 'dragenter' :
122
+ case 'dragleave' :
116
123
case 'drop' :
117
124
case 'pointercancel' :
118
125
case 'pointerdown' :
@@ -186,7 +193,9 @@ export function createEvents(store: UseBoundStore<RootState>) {
186
193
[ 'Move' , 'Over' , 'Enter' , 'Out' , 'Leave' ] . some (
187
194
( name ) => ( obj as unknown as Instance ) . __r3f ?. handlers [ ( 'onPointer' + name ) as keyof EventHandlers ] ,
188
195
) ||
189
- [ 'Over' ] . some ( ( name ) => ( obj as unknown as Instance ) . __r3f ?. handlers [ ( 'onDrag' + name ) as keyof EventHandlers ] ) ,
196
+ [ 'Over' , 'Enter' , 'Leave' ] . some (
197
+ ( name ) => ( obj as unknown as Instance ) . __r3f ?. handlers [ ( 'onDrag' + name ) as keyof EventHandlers ] ,
198
+ ) ,
190
199
)
191
200
}
192
201
@@ -401,6 +410,7 @@ export function createEvents(store: UseBoundStore<RootState>) {
401
410
switch ( name ) {
402
411
case 'onPointerLeave' :
403
412
case 'onPointerCancel' :
413
+ case 'onDragLeave' :
404
414
return ( ) => cancelPointer ( [ ] )
405
415
case 'onLostPointerCapture' :
406
416
return ( event : DomEvent ) => {
@@ -423,7 +433,7 @@ export function createEvents(store: UseBoundStore<RootState>) {
423
433
424
434
// Get fresh intersects
425
435
const isPointerMove = name === 'onPointerMove'
426
- const isDragOver = name === 'onDragOverEnter' || name === 'onDragOverLeave '
436
+ const isDragOver = name === 'onDragOver '
427
437
const isDrop = name === 'onDrop'
428
438
const isClickEvent = name === 'onClick' || name === 'onContextMenu' || name === 'onDoubleClick'
429
439
const filter = isPointerMove ? filterPointerEvents : undefined
0 commit comments