| 123456789101112131415161718192021222324252627282930313233343536373839404142 | // XXX Should we use something like Moderniz instead of our custom detector?function whichTransitionEvent() {  const el = document.createElement('fakeelement');  const transitions = {    transition: 'transitionend',    OTransition: 'oTransitionEnd',    MSTransition: 'msTransitionEnd',    MozTransition: 'transitionend',    WebkitTransition: 'webkitTransitionEnd',  };  for (const t in transitions) {    if (el.style[t] !== undefined) {      return transitions[t];    }  }  return null;}function whichAnimationEvent() {  const el = document.createElement('fakeelement');  const transitions = {    animation: 'animationend',    OAnimation: 'oAnimationEnd',    MSTransition: 'msAnimationEnd',    MozAnimation: 'animationend',    WebkitAnimation: 'webkitAnimationEnd',  };  for (const t in transitions) {    if (el.style[t] !== undefined) {      return transitions[t];    }  }  return null;}CSSEvents = {  transitionend: whichTransitionEvent(),  animationend: whichAnimationEvent(),};
 |