diff options
Diffstat (limited to 'libs/bower_components/angular-animate/angular-animate.js')
-rw-r--r-- | libs/bower_components/angular-animate/angular-animate.js | 26 |
1 files changed, 17 insertions, 9 deletions
diff --git a/libs/bower_components/angular-animate/angular-animate.js b/libs/bower_components/angular-animate/angular-animate.js index 7c0677e261..72de75b34a 100644 --- a/libs/bower_components/angular-animate/angular-animate.js +++ b/libs/bower_components/angular-animate/angular-animate.js @@ -1,5 +1,5 @@ /** - * @license AngularJS v1.4.10 + * @license AngularJS v1.4.14 * (c) 2010-2015 Google, Inc. http://angularjs.org * License: MIT */ @@ -132,7 +132,7 @@ function stripCommentsFromElement(element) { if (element instanceof jqLite) { switch (element.length) { case 0: - return []; + return element; break; case 1: @@ -2246,6 +2246,9 @@ var $$AnimateQueueProvider = ['$animateProvider', function($animateProvider) { var activeAnimationsLookup = new $$HashMap(); var disabledElementsLookup = new $$HashMap(); var animationsEnabled = null; + // $document might be mocked out in tests and won't include a real document. + // Providing an empty object with hidden = true will prevent animations from running + var rawDocument = $document[0] || {hidden: true}; function postDigestTaskFactory() { var postDigestCalled = false; @@ -2474,12 +2477,14 @@ var $$AnimateQueueProvider = ['$animateProvider', function($animateProvider) { var isStructural = ['enter', 'move', 'leave'].indexOf(event) >= 0; + var documentHidden = rawDocument.hidden; + // this is a hard disable of all animations for the application or on // the element itself, therefore there is no need to continue further // past this point if not enabled // Animations are also disabled if the document is currently hidden (page is not visible // to the user), because browsers slow down or do not flush calls to requestAnimationFrame - var skipAnimations = !animationsEnabled || $document[0].hidden || disabledElementsLookup.get(node); + var skipAnimations = !animationsEnabled || documentHidden || disabledElementsLookup.get(node); var existingAnimation = (!skipAnimations && activeAnimationsLookup.get(node)) || {}; var hasExistingAnimation = !!existingAnimation.state; @@ -2490,7 +2495,10 @@ var $$AnimateQueueProvider = ['$animateProvider', function($animateProvider) { } if (skipAnimations) { + // Callbacks should fire even if the document is hidden (regression fix for issue #14120) + if (documentHidden) notifyProgress(runner, event, 'start'); close(); + if (documentHidden) notifyProgress(runner, event, 'close'); return runner; } @@ -2640,6 +2648,11 @@ var $$AnimateQueueProvider = ['$animateProvider', function($animateProvider) { markElementAnimationState(element, RUNNING_STATE); var realRunner = $$animation(element, event, animationDetails.options); + // this will update the runner's flow-control events based on + // the `realRunner` object. + runner.setHost(realRunner); + notifyProgress(runner, event, 'start', {}); + realRunner.done(function(status) { close(!status); var animationDetails = activeAnimationsLookup.get(node); @@ -2648,11 +2661,6 @@ var $$AnimateQueueProvider = ['$animateProvider', function($animateProvider) { } notifyProgress(runner, event, 'close', {}); }); - - // this will update the runner's flow-control events based on - // the `realRunner` object. - runner.setHost(realRunner); - notifyProgress(runner, event, 'start', {}); }); return runner; @@ -2721,7 +2729,7 @@ var $$AnimateQueueProvider = ['$animateProvider', function($animateProvider) { * d) the element is not a child of the $rootElement */ function areAnimationsAllowed(element, parentElement, event) { - var bodyElement = jqLite($document[0].body); + var bodyElement = jqLite(rawDocument.body); var bodyElementDetected = isMatchingElement(element, bodyElement) || element[0].nodeName === 'HTML'; var rootElementDetected = isMatchingElement(element, $rootElement); var parentAnimationDetected = false; |