Event.js 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. exports.default = void 0;
  6. var START_EVENT_NAME_MAP = {
  7. transitionstart: {
  8. transition: 'transitionstart',
  9. WebkitTransition: 'webkitTransitionStart',
  10. MozTransition: 'mozTransitionStart',
  11. OTransition: 'oTransitionStart',
  12. msTransition: 'MSTransitionStart'
  13. },
  14. animationstart: {
  15. animation: 'animationstart',
  16. WebkitAnimation: 'webkitAnimationStart',
  17. MozAnimation: 'mozAnimationStart',
  18. OAnimation: 'oAnimationStart',
  19. msAnimation: 'MSAnimationStart'
  20. }
  21. };
  22. var END_EVENT_NAME_MAP = {
  23. transitionend: {
  24. transition: 'transitionend',
  25. WebkitTransition: 'webkitTransitionEnd',
  26. MozTransition: 'mozTransitionEnd',
  27. OTransition: 'oTransitionEnd',
  28. msTransition: 'MSTransitionEnd'
  29. },
  30. animationend: {
  31. animation: 'animationend',
  32. WebkitAnimation: 'webkitAnimationEnd',
  33. MozAnimation: 'mozAnimationEnd',
  34. OAnimation: 'oAnimationEnd',
  35. msAnimation: 'MSAnimationEnd'
  36. }
  37. };
  38. var startEvents = [];
  39. var endEvents = [];
  40. function detectEvents() {
  41. var testEl = document.createElement('div');
  42. var style = testEl.style;
  43. if (!('AnimationEvent' in window)) {
  44. delete START_EVENT_NAME_MAP.animationstart.animation;
  45. delete END_EVENT_NAME_MAP.animationend.animation;
  46. }
  47. if (!('TransitionEvent' in window)) {
  48. delete START_EVENT_NAME_MAP.transitionstart.transition;
  49. delete END_EVENT_NAME_MAP.transitionend.transition;
  50. }
  51. function process(EVENT_NAME_MAP, events) {
  52. for (var baseEventName in EVENT_NAME_MAP) {
  53. if (EVENT_NAME_MAP.hasOwnProperty(baseEventName)) {
  54. var baseEvents = EVENT_NAME_MAP[baseEventName];
  55. for (var styleName in baseEvents) {
  56. if (styleName in style) {
  57. events.push(baseEvents[styleName]);
  58. break;
  59. }
  60. }
  61. }
  62. }
  63. }
  64. process(START_EVENT_NAME_MAP, startEvents);
  65. process(END_EVENT_NAME_MAP, endEvents);
  66. }
  67. if (typeof window !== 'undefined' && typeof document !== 'undefined') {
  68. detectEvents();
  69. }
  70. function addEventListener(node, eventName, eventListener) {
  71. node.addEventListener(eventName, eventListener, false);
  72. }
  73. function removeEventListener(node, eventName, eventListener) {
  74. node.removeEventListener(eventName, eventListener, false);
  75. }
  76. var TransitionEvents = {
  77. // Start events
  78. startEvents: startEvents,
  79. addStartEventListener: function addStartEventListener(node, eventListener) {
  80. if (startEvents.length === 0) {
  81. setTimeout(eventListener, 0);
  82. return;
  83. }
  84. startEvents.forEach(function (startEvent) {
  85. addEventListener(node, startEvent, eventListener);
  86. });
  87. },
  88. removeStartEventListener: function removeStartEventListener(node, eventListener) {
  89. if (startEvents.length === 0) {
  90. return;
  91. }
  92. startEvents.forEach(function (startEvent) {
  93. removeEventListener(node, startEvent, eventListener);
  94. });
  95. },
  96. // End events
  97. endEvents: endEvents,
  98. addEndEventListener: function addEndEventListener(node, eventListener) {
  99. if (endEvents.length === 0) {
  100. setTimeout(eventListener, 0);
  101. return;
  102. }
  103. endEvents.forEach(function (endEvent) {
  104. addEventListener(node, endEvent, eventListener);
  105. });
  106. },
  107. removeEndEventListener: function removeEndEventListener(node, eventListener) {
  108. if (endEvents.length === 0) {
  109. return;
  110. }
  111. endEvents.forEach(function (endEvent) {
  112. removeEventListener(node, endEvent, eventListener);
  113. });
  114. }
  115. };
  116. var _default = TransitionEvents;
  117. exports.default = _default;