event.js 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. import { getWindowScrollTop, getWindowScrollLeft } from './element';
  2. /**
  3. * Prevent other listeners of the same event from being called.
  4. *
  5. * @param {Event} event
  6. */
  7. export function stopImmediatePropagation(event) {
  8. event.isImmediatePropagationEnabled = false;
  9. event.cancelBubble = true;
  10. }
  11. /**
  12. * Check if event was stopped by `stopImmediatePropagation`.
  13. *
  14. * @param event {Event}
  15. * @returns {Boolean}
  16. */
  17. export function isImmediatePropagationStopped(event) {
  18. return event.isImmediatePropagationEnabled === false;
  19. }
  20. /**
  21. * Prevent further propagation of the current event (prevent bubbling).
  22. *
  23. * @param event {Event}
  24. */
  25. export function stopPropagation(event) {
  26. // ie8
  27. // http://msdn.microsoft.com/en-us/library/ie/ff975462(v=vs.85).aspx
  28. if (typeof event.stopPropagation === 'function') {
  29. event.stopPropagation();
  30. } else {
  31. event.cancelBubble = true;
  32. }
  33. }
  34. /**
  35. * Get horizontal coordinate of the event object relative to the whole document.
  36. *
  37. * @param {Event} event
  38. * @returns {Number}
  39. */
  40. export function pageX(event) {
  41. if (event.pageX) {
  42. return event.pageX;
  43. }
  44. return event.clientX + getWindowScrollLeft();
  45. }
  46. /**
  47. * Get vertical coordinate of the event object relative to the whole document.
  48. *
  49. * @param {Event} event
  50. * @returns {Number}
  51. */
  52. export function pageY(event) {
  53. if (event.pageY) {
  54. return event.pageY;
  55. }
  56. return event.clientY + getWindowScrollTop();
  57. }
  58. /**
  59. * Check if provided event was triggered by clicking the right mouse button.
  60. *
  61. * @param {Event} event DOM Event.
  62. * @returns {Boolean}
  63. */
  64. export function isRightClick(event) {
  65. return event.button === 2;
  66. }
  67. /**
  68. * Check if provided event was triggered by clicking the left mouse button.
  69. *
  70. * @param {Event} event DOM Event.
  71. * @returns {Boolean}
  72. */
  73. export function isLeftClick(event) {
  74. return event.button === 0;
  75. }