Mouse providers an interface that represents the mouse itself as an object with state. window.Mouse
points to the constructor. Only one instance of Mouse
should exist per window
. window.mouse
points to a context's single mouse instance.
window.mouse
(just mouse
from now on) provides existing mouse methods as well as normalizes some and adds new ones.
- down: mousedown
- up: mouseup
- move: mousemove
- click: click and contextmenu
- dblclick: dbleclick
- leave: Uses mouseout but only fires when the mouse leaves the window entirely
- enter: Uses mouseover but only fires when the mouse enters the window from outside
- wheel: mousewheel and wheel events
The following functions are provided to allow management of listeners. Types is a string of type names separated by spaces for multiple events.
- mouse.on(types, callback): add callback as listener for each type in types
- mouse.off(types, callback): remove callback from listeners for each type in types
- mouse.once(types, callback): add callback as listener for the first time each type in types fires, then removes it
- mouse.emit(evt): takes MouseEvent object and runs the event through the callbacks the same as when a native event is received. Type is determined from the event object
- new Mouse(view): initializes mouse instance for given view. This is done automatically for main window, but this could be run on, for example, an iframe's window to provide a mouse object scope to the iframe.
Mouse button state is tracked and MouseEvent.prototype
is augmented in two ways:
- buttons: a getter that returns the buttons as per the W3C spec (only first 3 buttons currently). That is logical combination of the button states. left is 1, middle is 2, right is 4. All through would be 7, etc.
- states: function that interprets the number from buttons into an object like
{ left: true/false, middle: true/false, right: true/false }