1
1
import { platform } from '../../core/platform.js' ;
2
2
import { EventHandler } from '../../core/event-handler.js' ;
3
3
4
- import { EVENT_MOUSEDOWN , EVENT_MOUSEMOVE , EVENT_MOUSEUP , EVENT_MOUSEWHEEL } from './constants.js' ;
4
+ import { EVENT_MOUSEDOWN , EVENT_MOUSEMOVE , EVENT_MOUSEOUT , EVENT_MOUSEUP , EVENT_MOUSEWHEEL } from './constants.js' ;
5
5
import { isMousePointerLocked , MouseEvent } from './mouse-event.js' ;
6
6
7
7
/**
@@ -36,6 +36,7 @@ class Mouse extends EventHandler {
36
36
this . _downHandler = this . _handleDown . bind ( this ) ;
37
37
this . _moveHandler = this . _handleMove . bind ( this ) ;
38
38
this . _wheelHandler = this . _handleWheel . bind ( this ) ;
39
+ this . _outHandler = this . _handleOut . bind ( this ) ;
39
40
this . _contextMenuHandler = ( event ) => {
40
41
event . preventDefault ( ) ;
41
42
} ;
@@ -98,6 +99,7 @@ class Mouse extends EventHandler {
98
99
window . addEventListener ( 'mouseup' , this . _upHandler , opts ) ;
99
100
window . addEventListener ( 'mousedown' , this . _downHandler , opts ) ;
100
101
window . addEventListener ( 'mousemove' , this . _moveHandler , opts ) ;
102
+ window . addEventListener ( 'mouseout' , this . _outHandler , opts ) ;
101
103
window . addEventListener ( 'wheel' , this . _wheelHandler , opts ) ;
102
104
}
103
105
@@ -113,6 +115,7 @@ class Mouse extends EventHandler {
113
115
window . removeEventListener ( 'mouseup' , this . _upHandler , opts ) ;
114
116
window . removeEventListener ( 'mousedown' , this . _downHandler , opts ) ;
115
117
window . removeEventListener ( 'mousemove' , this . _moveHandler , opts ) ;
118
+ window . removeEventListener ( 'mouseout' , this . _outHandler , opts ) ;
116
119
window . removeEventListener ( 'wheel' , this . _wheelHandler , opts ) ;
117
120
}
118
121
@@ -289,6 +292,13 @@ class Mouse extends EventHandler {
289
292
this . fire ( EVENT_MOUSEWHEEL , e ) ;
290
293
}
291
294
295
+ _handleOut ( event ) {
296
+ const e = new MouseEvent ( this , event ) ;
297
+ if ( ! e . event ) return ;
298
+
299
+ this . fire ( EVENT_MOUSEOUT , e ) ;
300
+ }
301
+
292
302
_getTargetCoords ( event ) {
293
303
const rect = this . _target . getBoundingClientRect ( ) ;
294
304
const left = Math . floor ( rect . left ) ;
0 commit comments