mirror of
https://github.com/inverse-inc/sogo.git
synced 2026-05-22 11:55:24 +00:00
(js/css) Update generated files
This commit is contained in:
+225
-104
@@ -1,23 +1,9 @@
|
||||
/**
|
||||
* @license AngularJS v1.4.13
|
||||
* (c) 2010-2015 Google, Inc. http://angularjs.org
|
||||
* @license AngularJS v1.5.8
|
||||
* (c) 2010-2016 Google, Inc. http://angularjs.org
|
||||
* License: MIT
|
||||
*/
|
||||
(function(window, angular, undefined) {'use strict';
|
||||
|
||||
/* jshint ignore:start */
|
||||
var noop = angular.noop;
|
||||
var copy = angular.copy;
|
||||
var extend = angular.extend;
|
||||
var jqLite = angular.element;
|
||||
var forEach = angular.forEach;
|
||||
var isArray = angular.isArray;
|
||||
var isString = angular.isString;
|
||||
var isObject = angular.isObject;
|
||||
var isUndefined = angular.isUndefined;
|
||||
var isDefined = angular.isDefined;
|
||||
var isFunction = angular.isFunction;
|
||||
var isElement = angular.isElement;
|
||||
(function(window, angular) {'use strict';
|
||||
|
||||
var ELEMENT_NODE = 1;
|
||||
var COMMENT_NODE = 8;
|
||||
@@ -43,7 +29,7 @@ var CSS_PREFIX = '', TRANSITION_PROP, TRANSITIONEND_EVENT, ANIMATION_PROP, ANIMA
|
||||
// Also, the only modern browser that uses vendor prefixes for transitions/keyframes is webkit
|
||||
// therefore there is no reason to test anymore for other vendor prefixes:
|
||||
// http://caniuse.com/#search=transition
|
||||
if (isUndefined(window.ontransitionend) && isDefined(window.onwebkittransitionend)) {
|
||||
if ((window.ontransitionend === void 0) && (window.onwebkittransitionend !== void 0)) {
|
||||
CSS_PREFIX = '-webkit-';
|
||||
TRANSITION_PROP = 'WebkitTransition';
|
||||
TRANSITIONEND_EVENT = 'webkitTransitionEnd transitionend';
|
||||
@@ -52,7 +38,7 @@ if (isUndefined(window.ontransitionend) && isDefined(window.onwebkittransitionen
|
||||
TRANSITIONEND_EVENT = 'transitionend';
|
||||
}
|
||||
|
||||
if (isUndefined(window.onanimationend) && isDefined(window.onwebkitanimationend)) {
|
||||
if ((window.onanimationend === void 0) && (window.onwebkitanimationend !== void 0)) {
|
||||
CSS_PREFIX = '-webkit-';
|
||||
ANIMATION_PROP = 'WebkitAnimation';
|
||||
ANIMATIONEND_EVENT = 'webkitAnimationEnd animationend';
|
||||
@@ -74,10 +60,6 @@ var ANIMATION_DURATION_PROP = ANIMATION_PROP + DURATION_KEY;
|
||||
var TRANSITION_DELAY_PROP = TRANSITION_PROP + DELAY_KEY;
|
||||
var TRANSITION_DURATION_PROP = TRANSITION_PROP + DURATION_KEY;
|
||||
|
||||
var isPromiseLike = function(p) {
|
||||
return p && p.then ? true : false;
|
||||
};
|
||||
|
||||
var ngMinErr = angular.$$minErr('ng');
|
||||
function assertArg(arg, name, reason) {
|
||||
if (!arg) {
|
||||
@@ -133,7 +115,6 @@ function stripCommentsFromElement(element) {
|
||||
switch (element.length) {
|
||||
case 0:
|
||||
return element;
|
||||
break;
|
||||
|
||||
case 1:
|
||||
// there is no point of stripping anything if the element
|
||||
@@ -146,7 +127,6 @@ function stripCommentsFromElement(element) {
|
||||
|
||||
default:
|
||||
return jqLite(extractElementNode(element));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -187,7 +167,7 @@ function applyAnimationClassesFactory($$jqLite) {
|
||||
$$removeClass($$jqLite, element, options.removeClass);
|
||||
options.removeClass = null;
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
function prepareAnimationOptions(options) {
|
||||
@@ -290,10 +270,10 @@ function resolveElementClasses(existing, toAdd, toRemove) {
|
||||
var prop, allow;
|
||||
if (val === ADD_CLASS) {
|
||||
prop = 'addClass';
|
||||
allow = !existing[klass];
|
||||
allow = !existing[klass] || existing[klass + REMOVE_CLASS_SUFFIX];
|
||||
} else if (val === REMOVE_CLASS) {
|
||||
prop = 'removeClass';
|
||||
allow = existing[klass];
|
||||
allow = existing[klass] || existing[klass + ADD_CLASS_SUFFIX];
|
||||
}
|
||||
if (allow) {
|
||||
if (classes[prop].length) {
|
||||
@@ -323,7 +303,7 @@ function resolveElementClasses(existing, toAdd, toRemove) {
|
||||
}
|
||||
|
||||
function getDomNode(element) {
|
||||
return (element instanceof angular.element) ? element[0] : element;
|
||||
return (element instanceof jqLite) ? element[0] : element;
|
||||
}
|
||||
|
||||
function applyGeneratedPreparationClasses(element, event, options) {
|
||||
@@ -396,7 +376,7 @@ var $$rAFSchedulerFactory = ['$$rAF', function($$rAF) {
|
||||
queue = scheduler.queue = [];
|
||||
|
||||
/* waitUntilQuiet does two things:
|
||||
* 1. It will run the FINAL `fn` value only when an uncancelled RAF has passed through
|
||||
* 1. It will run the FINAL `fn` value only when an uncanceled RAF has passed through
|
||||
* 2. It will delay the next wave of tasks from running until the quiet `fn` has run.
|
||||
*
|
||||
* The motivation here is that animation code can request more time from the scheduler
|
||||
@@ -513,7 +493,7 @@ var $$AnimateChildrenDirective = ['$interpolate', function($interpolate) {
|
||||
return {
|
||||
link: function(scope, element, attrs) {
|
||||
var val = attrs.ngAnimateChildren;
|
||||
if (angular.isString(val) && val.length === 0) { //empty attribute
|
||||
if (isString(val) && val.length === 0) { //empty attribute
|
||||
element.data(NG_ANIMATE_CHILDREN_DATA, true);
|
||||
} else {
|
||||
// Interpolate and set the value, so that it is available to
|
||||
@@ -697,7 +677,7 @@ var ANIMATE_TIMER_KEY = '$$animateCss';
|
||||
* ```
|
||||
*
|
||||
* To actually start the animation we need to run `animation.start()` which will then return a promise that we can hook into to detect when the animation ends.
|
||||
* If we choose not to run the animation then we MUST run `animation.end()` to perform a cleanup on the element (since some CSS classes and stlyes may have been
|
||||
* If we choose not to run the animation then we MUST run `animation.end()` to perform a cleanup on the element (since some CSS classes and styles may have been
|
||||
* applied to the element during the preparation phase). Note that all other properties such as duration, delay, transitions and keyframes are just properties
|
||||
* and that changing them will not reconfigure the parameters of the animation.
|
||||
*
|
||||
@@ -734,11 +714,11 @@ var ANIMATE_TIMER_KEY = '$$animateCss';
|
||||
* * `stagger` - A numeric time value representing the delay between successively animated elements
|
||||
* ({@link ngAnimate#css-staggering-animations Click here to learn how CSS-based staggering works in ngAnimate.})
|
||||
* * `staggerIndex` - The numeric index representing the stagger item (e.g. a value of 5 is equal to the sixth item in the stagger; therefore when a
|
||||
* * `stagger` option value of `0.1` is used then there will be a stagger delay of `600ms`)
|
||||
* * `applyClassesEarly` - Whether or not the classes being added or removed will be used when detecting the animation. This is set by `$animate` when enter/leave/move animations are fired to ensure that the CSS classes are resolved in time. (Note that this will prevent any transitions from occuring on the classes being added and removed.)
|
||||
* `stagger` option value of `0.1` is used then there will be a stagger delay of `600ms`)
|
||||
* * `applyClassesEarly` - Whether or not the classes being added or removed will be used when detecting the animation. This is set by `$animate` when enter/leave/move animations are fired to ensure that the CSS classes are resolved in time. (Note that this will prevent any transitions from occurring on the classes being added and removed.)
|
||||
* * `cleanupStyles` - Whether or not the provided `from` and `to` styles will be removed once
|
||||
* the animation is closed. This is useful for when the styles are used purely for the sake of
|
||||
* the animation and do not have a lasting visual effect on the element (e.g. a colapse and open animation).
|
||||
* the animation and do not have a lasting visual effect on the element (e.g. a collapse and open animation).
|
||||
* By default this value is set to `false`.
|
||||
*
|
||||
* @return {object} an object with start and end methods and details about the animation.
|
||||
@@ -791,7 +771,7 @@ function computeCssStyles($window, element, properties) {
|
||||
}
|
||||
|
||||
// by setting this to null in the event that the delay is not set or is set directly as 0
|
||||
// then we can still allow for zegative values to be used later on and not mistake this
|
||||
// then we can still allow for negative values to be used later on and not mistake this
|
||||
// value for being greater than any other negative value.
|
||||
if (val === 0) {
|
||||
val = null;
|
||||
@@ -907,7 +887,7 @@ var $AnimateCssProvider = ['$animateProvider', function($animateProvider) {
|
||||
}
|
||||
|
||||
// we keep putting this in multiple times even though the value and the cacheKey are the same
|
||||
// because we're keeping an interal tally of how many duplicate animations are detected.
|
||||
// because we're keeping an internal tally of how many duplicate animations are detected.
|
||||
gcsLookup.put(cacheKey, timings);
|
||||
return timings;
|
||||
}
|
||||
@@ -1381,9 +1361,9 @@ var $AnimateCssProvider = ['$animateProvider', function($animateProvider) {
|
||||
}
|
||||
};
|
||||
|
||||
// checking the stagger duration prevents an accidently cascade of the CSS delay style
|
||||
// checking the stagger duration prevents an accidentally cascade of the CSS delay style
|
||||
// being inherited from the parent. If the transition duration is zero then we can safely
|
||||
// rely that the delay value is an intential stagger delay style.
|
||||
// rely that the delay value is an intentional stagger delay style.
|
||||
var maxStagger = itemIndex > 0
|
||||
&& ((timings.transitionDuration && stagger.transitionDuration === 0) ||
|
||||
(timings.animationDuration && stagger.animationDuration === 0))
|
||||
@@ -1556,7 +1536,7 @@ var $$AnimateCssDriverProvider = ['$$animationProvider', function($$animationPro
|
||||
|
||||
var rootBodyElement = jqLite(
|
||||
// this is to avoid using something that exists outside of the body
|
||||
// we also special case the doc fragement case because our unit test code
|
||||
// we also special case the doc fragment case because our unit test code
|
||||
// appends the $rootElement to the body after the app has been bootstrapped
|
||||
isDocumentFragment(rootNode) || bodyNode.contains(rootNode) ? rootNode : bodyNode
|
||||
);
|
||||
@@ -1656,7 +1636,7 @@ var $$AnimateCssDriverProvider = ['$$animationProvider', function($$animationPro
|
||||
var coords = getDomNode(anchor).getBoundingClientRect();
|
||||
|
||||
// we iterate directly since safari messes up and doesn't return
|
||||
// all the keys for the coods object when iterated
|
||||
// all the keys for the coords object when iterated
|
||||
forEach(['width','height','top','left'], function(key) {
|
||||
var value = coords[key];
|
||||
switch (key) {
|
||||
@@ -2225,6 +2205,11 @@ var $$AnimateQueueProvider = ['$animateProvider', function($animateProvider) {
|
||||
});
|
||||
|
||||
rules.cancel.push(function(element, newAnimation, currentAnimation) {
|
||||
// cancel the animation if classes added / removed in both animation cancel each other out,
|
||||
// but only if the current animation isn't structural
|
||||
|
||||
if (currentAnimation.structural) return false;
|
||||
|
||||
var nA = newAnimation.addClass;
|
||||
var nR = newAnimation.removeClass;
|
||||
var cA = currentAnimation.addClass;
|
||||
@@ -2246,9 +2231,6 @@ 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;
|
||||
@@ -2297,7 +2279,7 @@ var $$AnimateQueueProvider = ['$animateProvider', function($animateProvider) {
|
||||
}
|
||||
);
|
||||
|
||||
var callbackRegistry = {};
|
||||
var callbackRegistry = Object.create(null);
|
||||
|
||||
// remember that the classNameFilter is set during the provider/config
|
||||
// stage therefore we can optimize here and setup a helper function
|
||||
@@ -2315,7 +2297,7 @@ var $$AnimateQueueProvider = ['$animateProvider', function($animateProvider) {
|
||||
}
|
||||
|
||||
// IE9-11 has no method "contains" in SVG element and in Node.prototype. Bug #10259.
|
||||
var contains = Node.prototype.contains || function(arg) {
|
||||
var contains = window.Node.prototype.contains || function(arg) {
|
||||
// jshint bitwise: false
|
||||
return this === arg || !!(this.compareDocumentPosition(arg) & 16);
|
||||
// jshint bitwise: true
|
||||
@@ -2340,7 +2322,24 @@ var $$AnimateQueueProvider = ['$animateProvider', function($animateProvider) {
|
||||
return matches;
|
||||
}
|
||||
|
||||
return {
|
||||
function filterFromRegistry(list, matchContainer, matchCallback) {
|
||||
var containerNode = extractElementNode(matchContainer);
|
||||
return list.filter(function(entry) {
|
||||
var isMatch = entry.node === containerNode &&
|
||||
(!matchCallback || entry.callback === matchCallback);
|
||||
return !isMatch;
|
||||
});
|
||||
}
|
||||
|
||||
function cleanupEventListeners(phase, element) {
|
||||
if (phase === 'close' && !element[0].parentNode) {
|
||||
// If the element is not attached to a parentNode, it has been removed by
|
||||
// the domOperation, and we can safely remove the event callbacks
|
||||
$animate.off(element);
|
||||
}
|
||||
}
|
||||
|
||||
var $animate = {
|
||||
on: function(event, container, callback) {
|
||||
var node = extractElementNode(container);
|
||||
callbackRegistry[event] = callbackRegistry[event] || [];
|
||||
@@ -2348,24 +2347,36 @@ var $$AnimateQueueProvider = ['$animateProvider', function($animateProvider) {
|
||||
node: node,
|
||||
callback: callback
|
||||
});
|
||||
|
||||
// Remove the callback when the element is removed from the DOM
|
||||
jqLite(container).on('$destroy', function() {
|
||||
var animationDetails = activeAnimationsLookup.get(node);
|
||||
|
||||
if (!animationDetails) {
|
||||
// If there's an animation ongoing, the callback calling code will remove
|
||||
// the event listeners. If we'd remove here, the callbacks would be removed
|
||||
// before the animation ends
|
||||
$animate.off(event, container, callback);
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
off: function(event, container, callback) {
|
||||
if (arguments.length === 1 && !isString(arguments[0])) {
|
||||
container = arguments[0];
|
||||
for (var eventType in callbackRegistry) {
|
||||
callbackRegistry[eventType] = filterFromRegistry(callbackRegistry[eventType], container);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
var entries = callbackRegistry[event];
|
||||
if (!entries) return;
|
||||
|
||||
callbackRegistry[event] = arguments.length === 1
|
||||
? null
|
||||
: filterFromRegistry(entries, container, callback);
|
||||
|
||||
function filterFromRegistry(list, matchContainer, matchCallback) {
|
||||
var containerNode = extractElementNode(matchContainer);
|
||||
return list.filter(function(entry) {
|
||||
var isMatch = entry.node === containerNode &&
|
||||
(!matchCallback || entry.callback === matchCallback);
|
||||
return !isMatch;
|
||||
});
|
||||
}
|
||||
},
|
||||
|
||||
pin: function(element, parentElement) {
|
||||
@@ -2399,11 +2410,10 @@ var $$AnimateQueueProvider = ['$animateProvider', function($animateProvider) {
|
||||
bool = animationsEnabled = !!element;
|
||||
} else {
|
||||
var node = getDomNode(element);
|
||||
var recordExists = disabledElementsLookup.get(node);
|
||||
|
||||
if (argCount === 1) {
|
||||
// (element) - Element getter
|
||||
bool = !recordExists;
|
||||
bool = !disabledElementsLookup.get(node);
|
||||
} else {
|
||||
// (element, bool) - Element setter
|
||||
disabledElementsLookup.put(node, !bool);
|
||||
@@ -2415,6 +2425,8 @@ var $$AnimateQueueProvider = ['$animateProvider', function($animateProvider) {
|
||||
}
|
||||
};
|
||||
|
||||
return $animate;
|
||||
|
||||
function queueAnimation(element, event, initialOptions) {
|
||||
// we always make a copy of the options since
|
||||
// there should never be any side effects on
|
||||
@@ -2477,7 +2489,7 @@ var $$AnimateQueueProvider = ['$animateProvider', function($animateProvider) {
|
||||
|
||||
var isStructural = ['enter', 'move', 'leave'].indexOf(event) >= 0;
|
||||
|
||||
var documentHidden = rawDocument.hidden;
|
||||
var documentHidden = $document[0].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
|
||||
@@ -2677,7 +2689,10 @@ var $$AnimateQueueProvider = ['$animateProvider', function($animateProvider) {
|
||||
forEach(callbacks, function(callback) {
|
||||
callback(element, phase, data);
|
||||
});
|
||||
cleanupEventListeners(phase, element);
|
||||
});
|
||||
} else {
|
||||
cleanupEventListeners(phase, element);
|
||||
}
|
||||
});
|
||||
runner.progress(event, phase, data);
|
||||
@@ -2729,7 +2744,7 @@ var $$AnimateQueueProvider = ['$animateProvider', function($animateProvider) {
|
||||
* d) the element is not a child of the $rootElement
|
||||
*/
|
||||
function areAnimationsAllowed(element, parentElement, event) {
|
||||
var bodyElement = jqLite(rawDocument.body);
|
||||
var bodyElement = jqLite($document[0].body);
|
||||
var bodyElementDetected = isMatchingElement(element, bodyElement) || element[0].nodeName === 'HTML';
|
||||
var rootElementDetected = isMatchingElement(element, $rootElement);
|
||||
var parentAnimationDetected = false;
|
||||
@@ -3134,7 +3149,7 @@ var $$AnimationProvider = ['$animateProvider', function($animateProvider) {
|
||||
};
|
||||
|
||||
// the anchor animations require that the from and to elements both have at least
|
||||
// one shared CSS class which effictively marries the two elements together to use
|
||||
// one shared CSS class which effectively marries the two elements together to use
|
||||
// the same animation driver and to properly sequence the anchor animation.
|
||||
if (group.classes.length) {
|
||||
preparedAnimations.push(group);
|
||||
@@ -3177,8 +3192,6 @@ var $$AnimationProvider = ['$animateProvider', function($animateProvider) {
|
||||
// may attempt more elements, but custom drivers are more particular
|
||||
for (var i = drivers.length - 1; i >= 0; i--) {
|
||||
var driverName = drivers[i];
|
||||
if (!$injector.has(driverName)) continue; // TODO(matsko): remove this check
|
||||
|
||||
var factory = $injector.get(driverName);
|
||||
var driver = factory(animationDetails);
|
||||
if (driver) {
|
||||
@@ -3207,7 +3220,8 @@ var $$AnimationProvider = ['$animateProvider', function($animateProvider) {
|
||||
}
|
||||
|
||||
function update(element) {
|
||||
getRunner(element).setHost(newRunner);
|
||||
var runner = getRunner(element);
|
||||
if (runner) runner.setHost(newRunner);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3237,18 +3251,120 @@ var $$AnimationProvider = ['$animateProvider', function($animateProvider) {
|
||||
}];
|
||||
}];
|
||||
|
||||
/* global angularAnimateModule: true,
|
||||
|
||||
$$AnimateAsyncRunFactory,
|
||||
$$rAFSchedulerFactory,
|
||||
$$AnimateChildrenDirective,
|
||||
$$AnimateQueueProvider,
|
||||
$$AnimationProvider,
|
||||
$AnimateCssProvider,
|
||||
$$AnimateCssDriverProvider,
|
||||
$$AnimateJsProvider,
|
||||
$$AnimateJsDriverProvider,
|
||||
*/
|
||||
/**
|
||||
* @ngdoc directive
|
||||
* @name ngAnimateSwap
|
||||
* @restrict A
|
||||
* @scope
|
||||
*
|
||||
* @description
|
||||
*
|
||||
* ngAnimateSwap is a animation-oriented directive that allows for the container to
|
||||
* be removed and entered in whenever the associated expression changes. A
|
||||
* common usecase for this directive is a rotating banner or slider component which
|
||||
* contains one image being present at a time. When the active image changes
|
||||
* then the old image will perform a `leave` animation and the new element
|
||||
* will be inserted via an `enter` animation.
|
||||
*
|
||||
* @animations
|
||||
* | Animation | Occurs |
|
||||
* |----------------------------------|--------------------------------------|
|
||||
* | {@link ng.$animate#enter enter} | when the new element is inserted to the DOM |
|
||||
* | {@link ng.$animate#leave leave} | when the old element is removed from the DOM |
|
||||
*
|
||||
* @example
|
||||
* <example name="ngAnimateSwap-directive" module="ngAnimateSwapExample"
|
||||
* deps="angular-animate.js"
|
||||
* animations="true" fixBase="true">
|
||||
* <file name="index.html">
|
||||
* <div class="container" ng-controller="AppCtrl">
|
||||
* <div ng-animate-swap="number" class="cell swap-animation" ng-class="colorClass(number)">
|
||||
* {{ number }}
|
||||
* </div>
|
||||
* </div>
|
||||
* </file>
|
||||
* <file name="script.js">
|
||||
* angular.module('ngAnimateSwapExample', ['ngAnimate'])
|
||||
* .controller('AppCtrl', ['$scope', '$interval', function($scope, $interval) {
|
||||
* $scope.number = 0;
|
||||
* $interval(function() {
|
||||
* $scope.number++;
|
||||
* }, 1000);
|
||||
*
|
||||
* var colors = ['red','blue','green','yellow','orange'];
|
||||
* $scope.colorClass = function(number) {
|
||||
* return colors[number % colors.length];
|
||||
* };
|
||||
* }]);
|
||||
* </file>
|
||||
* <file name="animations.css">
|
||||
* .container {
|
||||
* height:250px;
|
||||
* width:250px;
|
||||
* position:relative;
|
||||
* overflow:hidden;
|
||||
* border:2px solid black;
|
||||
* }
|
||||
* .container .cell {
|
||||
* font-size:150px;
|
||||
* text-align:center;
|
||||
* line-height:250px;
|
||||
* position:absolute;
|
||||
* top:0;
|
||||
* left:0;
|
||||
* right:0;
|
||||
* border-bottom:2px solid black;
|
||||
* }
|
||||
* .swap-animation.ng-enter, .swap-animation.ng-leave {
|
||||
* transition:0.5s linear all;
|
||||
* }
|
||||
* .swap-animation.ng-enter {
|
||||
* top:-250px;
|
||||
* }
|
||||
* .swap-animation.ng-enter-active {
|
||||
* top:0px;
|
||||
* }
|
||||
* .swap-animation.ng-leave {
|
||||
* top:0px;
|
||||
* }
|
||||
* .swap-animation.ng-leave-active {
|
||||
* top:250px;
|
||||
* }
|
||||
* .red { background:red; }
|
||||
* .green { background:green; }
|
||||
* .blue { background:blue; }
|
||||
* .yellow { background:yellow; }
|
||||
* .orange { background:orange; }
|
||||
* </file>
|
||||
* </example>
|
||||
*/
|
||||
var ngAnimateSwapDirective = ['$animate', '$rootScope', function($animate, $rootScope) {
|
||||
return {
|
||||
restrict: 'A',
|
||||
transclude: 'element',
|
||||
terminal: true,
|
||||
priority: 600, // we use 600 here to ensure that the directive is caught before others
|
||||
link: function(scope, $element, attrs, ctrl, $transclude) {
|
||||
var previousElement, previousScope;
|
||||
scope.$watchCollection(attrs.ngAnimateSwap || attrs['for'], function(value) {
|
||||
if (previousElement) {
|
||||
$animate.leave(previousElement);
|
||||
}
|
||||
if (previousScope) {
|
||||
previousScope.$destroy();
|
||||
previousScope = null;
|
||||
}
|
||||
if (value || value === 0) {
|
||||
previousScope = scope.$new();
|
||||
$transclude(previousScope, function(element) {
|
||||
previousElement = element;
|
||||
$animate.enter(element, null, $element);
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
}];
|
||||
|
||||
/**
|
||||
* @ngdoc module
|
||||
@@ -3366,7 +3482,7 @@ var $$AnimationProvider = ['$animateProvider', function($animateProvider) {
|
||||
* <div ng-show="bool" class="fade">
|
||||
* Show and hide me
|
||||
* </div>
|
||||
* <button ng-click="bool=true">Toggle</button>
|
||||
* <button ng-click="bool=!bool">Toggle</button>
|
||||
*
|
||||
* <style>
|
||||
* .fade.ng-hide {
|
||||
@@ -3522,7 +3638,7 @@ var $$AnimationProvider = ['$animateProvider', function($animateProvider) {
|
||||
*
|
||||
* ngAnimate also allows for animations to be consumed by JavaScript code. The approach is similar to CSS-based animations (where there is a shared
|
||||
* CSS class that is referenced in our HTML code) but in addition we need to register the JavaScript animation on the module. By making use of the
|
||||
* `module.animation()` module function we can register the ainmation.
|
||||
* `module.animation()` module function we can register the animation.
|
||||
*
|
||||
* Let's see an example of a enter/leave animation using `ngRepeat`:
|
||||
*
|
||||
@@ -3935,31 +4051,6 @@ var $$AnimationProvider = ['$animateProvider', function($animateProvider) {
|
||||
* possible be sure to visit the {@link ng.$animate $animate service API page}.
|
||||
*
|
||||
*
|
||||
* ### Preventing Collisions With Third Party Libraries
|
||||
*
|
||||
* Some third-party frameworks place animation duration defaults across many element or className
|
||||
* selectors in order to make their code small and reuseable. This can lead to issues with ngAnimate, which
|
||||
* is expecting actual animations on these elements and has to wait for their completion.
|
||||
*
|
||||
* You can prevent this unwanted behavior by using a prefix on all your animation classes:
|
||||
*
|
||||
* ```css
|
||||
* /* prefixed with animate- */
|
||||
* .animate-fade-add.animate-fade-add-active {
|
||||
* transition:1s linear all;
|
||||
* opacity:0;
|
||||
* }
|
||||
* ```
|
||||
*
|
||||
* You then configure `$animate` to enforce this prefix:
|
||||
*
|
||||
* ```js
|
||||
* $animateProvider.classNameFilter(/animate-/);
|
||||
* ```
|
||||
*
|
||||
* This also may provide your application with a speed boost since only specific elements containing CSS class prefix
|
||||
* will be evaluated for animation when any DOM changes occur in the application.
|
||||
*
|
||||
* ## Callbacks and Promises
|
||||
*
|
||||
* When `$animate` is called it returns a promise that can be used to capture when the animation has ended. Therefore if we were to trigger
|
||||
@@ -3991,6 +4082,19 @@ var $$AnimationProvider = ['$animateProvider', function($animateProvider) {
|
||||
* (Note that you will need to trigger a digest within the callback to get angular to notice any scope-related changes.)
|
||||
*/
|
||||
|
||||
var copy;
|
||||
var extend;
|
||||
var forEach;
|
||||
var isArray;
|
||||
var isDefined;
|
||||
var isElement;
|
||||
var isFunction;
|
||||
var isObject;
|
||||
var isString;
|
||||
var isUndefined;
|
||||
var jqLite;
|
||||
var noop;
|
||||
|
||||
/**
|
||||
* @ngdoc service
|
||||
* @name $animate
|
||||
@@ -4001,7 +4105,24 @@ var $$AnimationProvider = ['$animateProvider', function($animateProvider) {
|
||||
*
|
||||
* Click here {@link ng.$animate to learn more about animations with `$animate`}.
|
||||
*/
|
||||
angular.module('ngAnimate', [])
|
||||
angular.module('ngAnimate', [], function initAngularHelpers() {
|
||||
// Access helpers from angular core.
|
||||
// Do it inside a `config` block to ensure `window.angular` is available.
|
||||
noop = angular.noop;
|
||||
copy = angular.copy;
|
||||
extend = angular.extend;
|
||||
jqLite = angular.element;
|
||||
forEach = angular.forEach;
|
||||
isArray = angular.isArray;
|
||||
isString = angular.isString;
|
||||
isObject = angular.isObject;
|
||||
isUndefined = angular.isUndefined;
|
||||
isDefined = angular.isDefined;
|
||||
isFunction = angular.isFunction;
|
||||
isElement = angular.isElement;
|
||||
})
|
||||
.directive('ngAnimateSwap', ngAnimateSwapDirective)
|
||||
|
||||
.directive('ngAnimateChildren', $$AnimateChildrenDirective)
|
||||
.factory('$$rAFScheduler', $$rAFSchedulerFactory)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user