(elem, index, transitions, promises, animate)
| 194 | |
| 195 | var uniformizeStyle; |
| 196 | function executeElementTransition(elem, index, transitions, promises, animate) { |
| 197 | if (transitions.length > 0) { |
| 198 | var style = elem.style; |
| 199 | var id = _ElementUtilities._uniqueID(elem); |
| 200 | if (!uniformizeStyle) { |
| 201 | uniformizeStyle = _Global.document.createElement("DIV").style; |
| 202 | } |
| 203 | transitions = transitions.map(copyWithEvaluation(index, elem)); |
| 204 | transitions.forEach(function (transition) { |
| 205 | var scriptNameOfProperty = _BaseUtils._getCamelCasedName(transition.property); |
| 206 | if (transition.hasOwnProperty("from")) { |
| 207 | style[scriptNameOfProperty] = transition.from; |
| 208 | } |
| 209 | uniformizeStyle[scriptNameOfProperty] = transition.to; |
| 210 | transition.to = uniformizeStyle[scriptNameOfProperty]; |
| 211 | transition.propertyScriptName = scriptNameOfProperty; |
| 212 | }); |
| 213 | |
| 214 | if (animate) { |
| 215 | var styleCache = setTemporaryStyles(elem, id, style, transitions, elementTransitionProperties); |
| 216 | var listener = elem.disabled ? _Global.document : elem; |
| 217 | |
| 218 | transitions.forEach(function (transition) { |
| 219 | var finish; |
| 220 | promises.push(new Promise(function (c) { |
| 221 | finish = function (reason) { |
| 222 | if (onTransitionEnd) { |
| 223 | listener.removeEventListener(_BaseUtils._browserEventEquivalents["transitionEnd"], onTransitionEnd, false); |
| 224 | unregisterAction(id, transition.property); |
| 225 | styleCache.removeName(style, transition.propertyScriptName, reason ? elem : null, transition.skipStylesReset); |
| 226 | _Global.clearTimeout(timeoutId); |
| 227 | onTransitionEnd = null; |
| 228 | } |
| 229 | completePromise(c, reason === reason_canceled); |
| 230 | }; |
| 231 | |
| 232 | var onTransitionEnd = function (event) { |
| 233 | if (event.target === elem && event.propertyName === transition.property) { |
| 234 | finish(); |
| 235 | } |
| 236 | }; |
| 237 | |
| 238 | registerAction(id, transition.property, finish); |
| 239 | listener.addEventListener(_BaseUtils._browserEventEquivalents["transitionEnd"], onTransitionEnd, false); |
| 240 | |
| 241 | var padding = 0; |
| 242 | if (style[transition.propertyScriptName] !== transition.to) { |
| 243 | style[transition.propertyScriptName] = transition.to; |
| 244 | padding = 50; |
| 245 | } |
| 246 | var timeoutId = _Global.setTimeout(function () { |
| 247 | timeoutId = _Global.setTimeout(finish, transition.delay + transition.duration); |
| 248 | }, padding); |
| 249 | }, function () { finish(reason_canceled); })); |
| 250 | }); |
| 251 | } else { |
| 252 | transitions.forEach(function (transition) { |
| 253 | style[transition.propertyScriptName] = transition.to; |
nothing calls this directly
no test coverage detected