(e: Event)
| 54 | }; |
| 55 | |
| 56 | let onTransitionEnd = (e: Event) => { |
| 57 | let eventTarget = getEventTarget(e); |
| 58 | if (!isTransitionEvent(e) || !eventTarget) { |
| 59 | return; |
| 60 | } |
| 61 | // Remove property from list of transitioning properties. |
| 62 | let properties = transitionsByElement.get(eventTarget); |
| 63 | if (!properties) { |
| 64 | return; |
| 65 | } |
| 66 | |
| 67 | properties.delete(e.propertyName); |
| 68 | |
| 69 | // If empty, remove transitioncancel event, and remove the element from the list of transitioning elements. |
| 70 | if (properties.size === 0) { |
| 71 | eventTarget.removeEventListener('transitioncancel', onTransitionEnd); |
| 72 | transitionsByElement.delete(eventTarget); |
| 73 | } |
| 74 | |
| 75 | // If no transitioning elements, call all of the queued callbacks. |
| 76 | if (transitionsByElement.size === 0) { |
| 77 | for (let cb of transitionCallbacks) { |
| 78 | cb(); |
| 79 | } |
| 80 | |
| 81 | transitionCallbacks.clear(); |
| 82 | } |
| 83 | }; |
| 84 | |
| 85 | document.body.addEventListener('transitionrun', onTransitionStart); |
| 86 | document.body.addEventListener('transitionend', onTransitionEnd); |
nothing calls this directly
no test coverage detected