|
- 'use strict';
-
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
- var START_EVENT_NAME_MAP = {
- transitionstart: {
- transition: 'transitionstart',
- WebkitTransition: 'webkitTransitionStart',
- MozTransition: 'mozTransitionStart',
- OTransition: 'oTransitionStart',
- msTransition: 'MSTransitionStart'
- },
-
- animationstart: {
- animation: 'animationstart',
- WebkitAnimation: 'webkitAnimationStart',
- MozAnimation: 'mozAnimationStart',
- OAnimation: 'oAnimationStart',
- msAnimation: 'MSAnimationStart'
- }
- };
-
- var END_EVENT_NAME_MAP = {
- transitionend: {
- transition: 'transitionend',
- WebkitTransition: 'webkitTransitionEnd',
- MozTransition: 'mozTransitionEnd',
- OTransition: 'oTransitionEnd',
- msTransition: 'MSTransitionEnd'
- },
-
- animationend: {
- animation: 'animationend',
- WebkitAnimation: 'webkitAnimationEnd',
- MozAnimation: 'mozAnimationEnd',
- OAnimation: 'oAnimationEnd',
- msAnimation: 'MSAnimationEnd'
- }
- };
-
- var startEvents = [];
- var endEvents = [];
-
- function detectEvents() {
- var testEl = document.createElement('div');
- var style = testEl.style;
-
- if (!('AnimationEvent' in window)) {
- delete START_EVENT_NAME_MAP.animationstart.animation;
- delete END_EVENT_NAME_MAP.animationend.animation;
- }
-
- if (!('TransitionEvent' in window)) {
- delete START_EVENT_NAME_MAP.transitionstart.transition;
- delete END_EVENT_NAME_MAP.transitionend.transition;
- }
-
- function process(EVENT_NAME_MAP, events) {
- for (var baseEventName in EVENT_NAME_MAP) {
- if (EVENT_NAME_MAP.hasOwnProperty(baseEventName)) {
- var baseEvents = EVENT_NAME_MAP[baseEventName];
- for (var styleName in baseEvents) {
- if (styleName in style) {
- events.push(baseEvents[styleName]);
- break;
- }
- }
- }
- }
- }
-
- process(START_EVENT_NAME_MAP, startEvents);
- process(END_EVENT_NAME_MAP, endEvents);
- }
-
- if (typeof window !== 'undefined' && typeof document !== 'undefined') {
- detectEvents();
- }
-
- function addEventListener(node, eventName, eventListener) {
- node.addEventListener(eventName, eventListener, false);
- }
-
- function removeEventListener(node, eventName, eventListener) {
- node.removeEventListener(eventName, eventListener, false);
- }
-
- var TransitionEvents = {
- // Start events
- startEvents: startEvents,
-
- addStartEventListener: function addStartEventListener(node, eventListener) {
- if (startEvents.length === 0) {
- window.setTimeout(eventListener, 0);
- return;
- }
- startEvents.forEach(function (startEvent) {
- addEventListener(node, startEvent, eventListener);
- });
- },
- removeStartEventListener: function removeStartEventListener(node, eventListener) {
- if (startEvents.length === 0) {
- return;
- }
- startEvents.forEach(function (startEvent) {
- removeEventListener(node, startEvent, eventListener);
- });
- },
-
-
- // End events
- endEvents: endEvents,
-
- addEndEventListener: function addEndEventListener(node, eventListener) {
- if (endEvents.length === 0) {
- window.setTimeout(eventListener, 0);
- return;
- }
- endEvents.forEach(function (endEvent) {
- addEventListener(node, endEvent, eventListener);
- });
- },
- removeEndEventListener: function removeEndEventListener(node, eventListener) {
- if (endEvents.length === 0) {
- return;
- }
- endEvents.forEach(function (endEvent) {
- removeEventListener(node, endEvent, eventListener);
- });
- }
- };
-
- exports['default'] = TransitionEvents;
- module.exports = exports['default'];
|