(element, cacheKey)
| 1699 | } |
| 1700 | |
| 1701 | function getElementAnimationDetails(element, cacheKey) { |
| 1702 | var data = cacheKey ? lookupCache[cacheKey] : null; |
| 1703 | if (!data) { |
| 1704 | var transitionDuration = 0; |
| 1705 | var transitionDelay = 0; |
| 1706 | var animationDuration = 0; |
| 1707 | var animationDelay = 0; |
| 1708 | |
| 1709 | //we want all the styles defined before and after |
| 1710 | forEach(element, function(element) { |
| 1711 | if (element.nodeType == ELEMENT_NODE) { |
| 1712 | var elementStyles = $window.getComputedStyle(element) || {}; |
| 1713 | |
| 1714 | var transitionDurationStyle = elementStyles[TRANSITION_PROP + DURATION_KEY]; |
| 1715 | transitionDuration = Math.max(parseMaxTime(transitionDurationStyle), transitionDuration); |
| 1716 | |
| 1717 | var transitionDelayStyle = elementStyles[TRANSITION_PROP + DELAY_KEY]; |
| 1718 | transitionDelay = Math.max(parseMaxTime(transitionDelayStyle), transitionDelay); |
| 1719 | |
| 1720 | var animationDelayStyle = elementStyles[ANIMATION_PROP + DELAY_KEY]; |
| 1721 | animationDelay = Math.max(parseMaxTime(elementStyles[ANIMATION_PROP + DELAY_KEY]), animationDelay); |
| 1722 | |
| 1723 | var aDuration = parseMaxTime(elementStyles[ANIMATION_PROP + DURATION_KEY]); |
| 1724 | |
| 1725 | if (aDuration > 0) { |
| 1726 | aDuration *= parseInt(elementStyles[ANIMATION_PROP + ANIMATION_ITERATION_COUNT_KEY], 10) || 1; |
| 1727 | } |
| 1728 | animationDuration = Math.max(aDuration, animationDuration); |
| 1729 | } |
| 1730 | }); |
| 1731 | data = { |
| 1732 | total: 0, |
| 1733 | transitionDelay: transitionDelay, |
| 1734 | transitionDuration: transitionDuration, |
| 1735 | animationDelay: animationDelay, |
| 1736 | animationDuration: animationDuration |
| 1737 | }; |
| 1738 | if (cacheKey) { |
| 1739 | lookupCache[cacheKey] = data; |
| 1740 | } |
| 1741 | } |
| 1742 | return data; |
| 1743 | } |
| 1744 | |
| 1745 | function parseMaxTime(str) { |
| 1746 | var maxValue = 0; |
no test coverage detected