Mouse.js 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. export default function Mouse(eventBus) {
  2. var self = this;
  3. this._lastMoveEvent = null;
  4. function setLastMoveEvent(mousemoveEvent) {
  5. self._lastMoveEvent = mousemoveEvent;
  6. }
  7. eventBus.on('canvas.init', function(context) {
  8. var svg = self._svg = context.svg;
  9. svg.addEventListener('mousemove', setLastMoveEvent);
  10. });
  11. eventBus.on('canvas.destroy', function() {
  12. self._lastMouseEvent = null;
  13. self._svg.removeEventListener('mousemove', setLastMoveEvent);
  14. });
  15. }
  16. Mouse.$inject = [ 'eventBus' ];
  17. Mouse.prototype.getLastMoveEvent = function() {
  18. return this._lastMoveEvent || createMoveEvent(0, 0);
  19. };
  20. // helpers //////////
  21. export function createMoveEvent(x, y) {
  22. var event = document.createEvent('MouseEvent');
  23. var screenX = x,
  24. screenY = y,
  25. clientX = x,
  26. clientY = y;
  27. if (event.initMouseEvent) {
  28. event.initMouseEvent(
  29. 'mousemove',
  30. true,
  31. true,
  32. window,
  33. 0,
  34. screenX,
  35. screenY,
  36. clientX,
  37. clientY,
  38. false,
  39. false,
  40. false,
  41. false,
  42. 0,
  43. null
  44. );
  45. }
  46. return event;
  47. }