export default function Mouse(eventBus) {
var self = this;
this._lastMoveEvent = null;
function setLastMoveEvent(mousemoveEvent) {
self._lastMoveEvent = mousemoveEvent;
}
eventBus.on('canvas.init', function(context) {
var svg = self._svg = context.svg;
svg.addEventListener('mousemove', setLastMoveEvent);
});
eventBus.on('canvas.destroy', function() {
self._lastMouseEvent = null;
self._svg.removeEventListener('mousemove', setLastMoveEvent);
});
}
Mouse.$inject = [ 'eventBus' ];
Mouse.prototype.getLastMoveEvent = function() {
return this._lastMoveEvent || createMoveEvent(0, 0);
};
// helpers //////////
export function createMoveEvent(x, y) {
var event = document.createEvent('MouseEvent');
var screenX = x,
screenY = y,
clientX = x,
clientY = y;
Eif (event.initMouseEvent) {
event.initMouseEvent(
'mousemove',
true,
true,
window,
0,
screenX,
screenY,
clientX,
clientY,
false,
false,
false,
false,
0,
null
);
}
return event;
} |