Update Angular to 1.2.0 RC2
This commit is contained in:
parent
7416269494
commit
0d3a40980e
184 changed files with 17993 additions and 21133 deletions
183
lib/angular/angular-animate.js
vendored
183
lib/angular/angular-animate.js
vendored
|
@ -1,5 +1,5 @@
|
|||
/**
|
||||
* @license AngularJS v1.2.0rc1
|
||||
* @license AngularJS v1.2.0-rc.2
|
||||
* (c) 2010-2012 Google, Inc. http://angularjs.org
|
||||
* License: MIT
|
||||
*/
|
||||
|
@ -10,20 +10,15 @@
|
|||
* @name ngAnimate
|
||||
* @description
|
||||
*
|
||||
* ngAnimate
|
||||
* =========
|
||||
* # ngAnimate
|
||||
*
|
||||
* The ngAnimate module is an optional module that comes packed with AngularJS that can be included within an AngularJS
|
||||
* application to provide support for CSS and JavaScript animation hooks.
|
||||
* `ngAnimate` is an optional module that provides CSS and JavaScript animation hooks.
|
||||
*
|
||||
* To make use of animations with AngularJS, the `angular-animate.js` JavaScript file must be included into your application
|
||||
* and the `ngAnimate` module must be included as a dependency.
|
||||
* {@installModule animate}
|
||||
*
|
||||
* <pre>
|
||||
* angular.module('App', ['ngAnimate']);
|
||||
* </pre>
|
||||
* # Usage
|
||||
*
|
||||
* Then, to see animations in action, all that is required is to define the appropriate CSS classes
|
||||
* To see animations in action, all that is required is to define the appropriate CSS classes
|
||||
* or to register a JavaScript animation via the $animation service. The directives that support animation automatically are:
|
||||
* `ngRepeat`, `ngInclude`, `ngSwitch`, `ngShow`, `ngHide` and `ngView`. Custom directives can take advantage of animation
|
||||
* by using the `$animate` service.
|
||||
|
@ -197,11 +192,13 @@ angular.module('ngAnimate', ['ng'])
|
|||
* @name ngAnimate.$animateProvider
|
||||
* @description
|
||||
*
|
||||
* The $AnimationProvider provider allows developers to register and access custom JavaScript animations directly inside
|
||||
* The `$AnimationProvider` allows developers to register and access custom JavaScript animations directly inside
|
||||
* of a module. When an animation is triggered, the $animate service will query the $animation function to find any
|
||||
* animations that match the provided name value.
|
||||
*
|
||||
* Please visit the {@link ngAnimate ngAnimate} module overview page learn more about how to use animations in your application.
|
||||
* Requires the {@link ngAnimate `ngAnimate`} module to be installed.
|
||||
*
|
||||
* Please visit the {@link ngAnimate `ngAnimate`} module overview page learn more about how to use animations in your application.
|
||||
*
|
||||
*/
|
||||
.config(['$provide', '$animateProvider', function($provide, $animateProvider) {
|
||||
|
@ -211,8 +208,8 @@ angular.module('ngAnimate', ['ng'])
|
|||
|
||||
var NG_ANIMATE_STATE = '$$ngAnimateState';
|
||||
var rootAnimateState = {running:true};
|
||||
$provide.decorator('$animate', ['$delegate', '$injector', '$sniffer', '$rootElement', '$timeout',
|
||||
function($delegate, $injector, $sniffer, $rootElement, $timeout) {
|
||||
$provide.decorator('$animate', ['$delegate', '$injector', '$sniffer', '$rootElement', '$timeout', '$rootScope',
|
||||
function($delegate, $injector, $sniffer, $rootElement, $timeout, $rootScope) {
|
||||
|
||||
$rootElement.data(NG_ANIMATE_STATE, rootAnimateState);
|
||||
|
||||
|
@ -255,7 +252,9 @@ angular.module('ngAnimate', ['ng'])
|
|||
* The `$animate` service is used behind the scenes with pre-existing directives and animation with these directives
|
||||
* will work out of the box without any extra configuration.
|
||||
*
|
||||
* Please visit the {@link ngAnimate ngAnimate} module overview page learn more about how to use animations in your application.
|
||||
* Requires the {@link ngAnimate `ngAnimate`} module to be installed.
|
||||
*
|
||||
* Please visit the {@link ngAnimate `ngAnimate`} module overview page learn more about how to use animations in your application.
|
||||
*
|
||||
*/
|
||||
return {
|
||||
|
@ -275,8 +274,8 @@ angular.module('ngAnimate', ['ng'])
|
|||
* |----------------------------------------------------------------------------------------------|-----------------------------------------------|
|
||||
* | 1. $animate.enter(...) is called | class="my-animation" |
|
||||
* | 2. element is inserted into the parent element or beside the after element | class="my-animation" |
|
||||
* | 3. the .ng-enter class is added to the element | class="my-animation ng-enter" |
|
||||
* | 4. $animate runs any JavaScript-defined animations on the element | class="my-animation ng-enter" |
|
||||
* | 3. $animate runs any JavaScript-defined animations on the element | class="my-animation" |
|
||||
* | 4. the .ng-enter class is added to the element | class="my-animation ng-enter" |
|
||||
* | 5. $animate scans the element styles to get the CSS transition/animation duration and delay | class="my-animation ng-enter" |
|
||||
* | 6. the .ng-enter-active class is added (this triggers the CSS transition/animation) | class="my-animation ng-enter ng-enter-active" |
|
||||
* | 7. $animate waits for X milliseconds for the animation to complete | class="my-animation ng-enter ng-enter-active" |
|
||||
|
@ -290,7 +289,11 @@ angular.module('ngAnimate', ['ng'])
|
|||
*/
|
||||
enter : function(element, parent, after, done) {
|
||||
$delegate.enter(element, parent, after);
|
||||
performAnimation('enter', 'ng-enter', element, parent, after, done);
|
||||
$rootScope.$$postDigest(function() {
|
||||
performAnimation('enter', 'ng-enter', element, parent, after, function() {
|
||||
done && $timeout(done, 0, false);
|
||||
});
|
||||
});
|
||||
},
|
||||
|
||||
/**
|
||||
|
@ -308,8 +311,8 @@ angular.module('ngAnimate', ['ng'])
|
|||
* | Animation Step | What the element class attribute looks like |
|
||||
* |----------------------------------------------------------------------------------------------|----------------------------------------------|
|
||||
* | 1. $animate.leave(...) is called | class="my-animation" |
|
||||
* | 2. the .ng-leave class is added to the element | class="my-animation ng-leave" |
|
||||
* | 3. $animate runs any JavaScript-defined animations on the element | class="my-animation ng-leave" |
|
||||
* | 2. $animate runs any JavaScript-defined animations on the element | class="my-animation" |
|
||||
* | 3. the .ng-leave class is added to the element | class="my-animation ng-leave" |
|
||||
* | 4. $animate scans the element styles to get the CSS transition/animation duration and delay | class="my-animation ng-leave" |
|
||||
* | 5. the .ng-leave-active class is added (this triggers the CSS transition/animation) | class="my-animation ng-leave ng-leave-active |
|
||||
* | 6. $animate waits for X milliseconds for the animation to complete | class="my-animation ng-leave ng-leave-active |
|
||||
|
@ -321,9 +324,11 @@ angular.module('ngAnimate', ['ng'])
|
|||
* @param {function()=} done callback function that will be called once the animation is complete
|
||||
*/
|
||||
leave : function(element, done) {
|
||||
$rootScope.$$postDigest(function() {
|
||||
performAnimation('leave', 'ng-leave', element, null, null, function() {
|
||||
$delegate.leave(element, done);
|
||||
});
|
||||
});
|
||||
},
|
||||
|
||||
/**
|
||||
|
@ -343,8 +348,8 @@ angular.module('ngAnimate', ['ng'])
|
|||
* |----------------------------------------------------------------------------------------------|---------------------------------------------|
|
||||
* | 1. $animate.move(...) is called | class="my-animation" |
|
||||
* | 2. element is moved into the parent element or beside the after element | class="my-animation" |
|
||||
* | 3. the .ng-move class is added to the element | class="my-animation ng-move" |
|
||||
* | 4. $animate runs any JavaScript-defined animations on the element | class="my-animation ng-move" |
|
||||
* | 3. $animate runs any JavaScript-defined animations on the element | class="my-animation" |
|
||||
* | 4. the .ng-move class is added to the element | class="my-animation ng-move" |
|
||||
* | 5. $animate scans the element styles to get the CSS transition/animation duration and delay | class="my-animation ng-move" |
|
||||
* | 6. the .ng-move-active class is added (this triggers the CSS transition/animation) | class="my-animation ng-move ng-move-active" |
|
||||
* | 7. $animate waits for X milliseconds for the animation to complete | class="my-animation ng-move ng-move-active" |
|
||||
|
@ -358,7 +363,11 @@ angular.module('ngAnimate', ['ng'])
|
|||
*/
|
||||
move : function(element, parent, after, done) {
|
||||
$delegate.move(element, parent, after);
|
||||
performAnimation('move', 'ng-move', element, null, null, done);
|
||||
$rootScope.$$postDigest(function() {
|
||||
performAnimation('move', 'ng-move', element, null, null, function() {
|
||||
done && $timeout(done, 0, false);
|
||||
});
|
||||
});
|
||||
},
|
||||
|
||||
/**
|
||||
|
@ -369,15 +378,16 @@ angular.module('ngAnimate', ['ng'])
|
|||
* @description
|
||||
* Triggers a custom animation event based off the className variable and then attaches the className value to the element as a CSS class.
|
||||
* Unlike the other animation methods, the animate service will suffix the className value with {@type -add} in order to provide
|
||||
* the animate service the setup and active CSS classes in order to trigger the animation.
|
||||
* the animate service the setup and active CSS classes in order to trigger the animation (this will be skipped if no CSS transitions
|
||||
* or keyframes are defined on the -add CSS class).
|
||||
*
|
||||
* Below is a breakdown of each step that occurs during addClass animation:
|
||||
*
|
||||
* | Animation Step | What the element class attribute looks like |
|
||||
* |------------------------------------------------------------------------------------------------|---------------------------------------------|
|
||||
* | 1. $animate.addClass(element, 'super') is called | class="" |
|
||||
* | 2. the .super-add class is added to the element | class="super-add" |
|
||||
* | 3. $animate runs any JavaScript-defined animations on the element | class="super-add" |
|
||||
* | 2. $animate runs any JavaScript-defined animations on the element | class="" |
|
||||
* | 3. the .super-add class is added to the element | class="super-add" |
|
||||
* | 4. $animate scans the element styles to get the CSS transition/animation duration and delay | class="super-add" |
|
||||
* | 5. the .super-add-active class is added (this triggers the CSS transition/animation) | class="super-add super-add-active" |
|
||||
* | 6. $animate waits for X milliseconds for the animation to complete | class="super-add super-add-active" |
|
||||
|
@ -403,15 +413,16 @@ angular.module('ngAnimate', ['ng'])
|
|||
* @description
|
||||
* Triggers a custom animation event based off the className variable and then removes the CSS class provided by the className value
|
||||
* from the element. Unlike the other animation methods, the animate service will suffix the className value with {@type -remove} in
|
||||
* order to provide the animate service the setup and active CSS classes in order to trigger the animation.
|
||||
* order to provide the animate service the setup and active CSS classes in order to trigger the animation (this will be skipped if
|
||||
* no CSS transitions or keyframes are defined on the -remove CSS class).
|
||||
*
|
||||
* Below is a breakdown of each step that occurs during removeClass animation:
|
||||
*
|
||||
* | Animation Step | What the element class attribute looks like |
|
||||
* |-----------------------------------------------------------------------------------------------|-------------------------------------------------|
|
||||
* | 1. $animate.removeClass(element, 'super') is called | class="super" |
|
||||
* | 2. the .super-remove class is added to the element | class="super super-remove" |
|
||||
* | 3. $animate runs any JavaScript-defined animations on the element | class="super super-remove" |
|
||||
* | 2. $animate runs any JavaScript-defined animations on the element | class="super" |
|
||||
* | 3. the .super-remove class is added to the element | class="super super-remove" |
|
||||
* | 4. $animate scans the element styles to get the CSS transition/animation duration and delay | class="super super-remove" |
|
||||
* | 5. the .super-remove-active class is added (this triggers the CSS transition/animation) | class="super super-remove super-remove-active" |
|
||||
* | 6. $animate waits for X milliseconds for the animation to complete | class="super super-remove super-remove-active" |
|
||||
|
@ -496,15 +507,6 @@ angular.module('ngAnimate', ['ng'])
|
|||
done:done
|
||||
});
|
||||
|
||||
var baseClassName = className;
|
||||
if(event == 'addClass') {
|
||||
className = suffixClasses(className, '-add');
|
||||
} else if(event == 'removeClass') {
|
||||
className = suffixClasses(className, '-remove');
|
||||
}
|
||||
|
||||
element.addClass(className);
|
||||
|
||||
forEach(animations, function(animation, index) {
|
||||
var fn = function() {
|
||||
progress(index);
|
||||
|
@ -512,7 +514,7 @@ angular.module('ngAnimate', ['ng'])
|
|||
|
||||
if(animation.start) {
|
||||
if(event == 'addClass' || event == 'removeClass') {
|
||||
animation.endFn = animation.start(element, baseClassName, fn);
|
||||
animation.endFn = animation.start(element, className, fn);
|
||||
} else {
|
||||
animation.endFn = animation.start(element, fn);
|
||||
}
|
||||
|
@ -540,7 +542,6 @@ angular.module('ngAnimate', ['ng'])
|
|||
function done() {
|
||||
if(!done.hasBeenRun) {
|
||||
done.hasBeenRun = true;
|
||||
element.removeClass(className);
|
||||
element.removeData(NG_ANIMATE_STATE);
|
||||
(onComplete || noop)();
|
||||
}
|
||||
|
@ -551,35 +552,6 @@ angular.module('ngAnimate', ['ng'])
|
|||
$animateProvider.register('', ['$window','$sniffer', '$timeout', function($window, $sniffer, $timeout) {
|
||||
var noop = angular.noop;
|
||||
var forEach = angular.forEach;
|
||||
function animate(element, className, done) {
|
||||
if (!($sniffer.transitions || $sniffer.animations)) {
|
||||
done();
|
||||
} else {
|
||||
var activeClassName = '';
|
||||
$timeout(startAnimation, 1, false);
|
||||
|
||||
//this acts as the cancellation function in case
|
||||
//a new animation is triggered while another animation
|
||||
//is still going on (otherwise the active className
|
||||
//would still hang around until the timer is complete).
|
||||
return onEnd;
|
||||
}
|
||||
|
||||
function parseMaxTime(str) {
|
||||
var total = 0, values = angular.isString(str) ? str.split(/\s*,\s*/) : [];
|
||||
forEach(values, function(value) {
|
||||
total = Math.max(parseFloat(value) || 0, total);
|
||||
});
|
||||
return total;
|
||||
}
|
||||
|
||||
function startAnimation() {
|
||||
var duration = 0;
|
||||
forEach(className.split(' '), function(klass, i) {
|
||||
activeClassName += (i > 0 ? ' ' : '') + klass + '-active';
|
||||
});
|
||||
|
||||
element.addClass(activeClassName);
|
||||
|
||||
//one day all browsers will have these properties
|
||||
var w3cAnimationProp = 'animation';
|
||||
|
@ -591,10 +563,35 @@ angular.module('ngAnimate', ['ng'])
|
|||
|
||||
var durationKey = 'Duration',
|
||||
delayKey = 'Delay',
|
||||
animationIterationCountKey = 'IterationCount';
|
||||
propertyKey = 'Property',
|
||||
animationIterationCountKey = 'IterationCount',
|
||||
ELEMENT_NODE = 1;
|
||||
|
||||
function animate(element, className, done) {
|
||||
if (!($sniffer.transitions || $sniffer.animations)) {
|
||||
done();
|
||||
return;
|
||||
}
|
||||
else if(['ng-enter','ng-leave','ng-move'].indexOf(className) == -1) {
|
||||
var existingDuration = 0;
|
||||
forEach(element, function(element) {
|
||||
if (element.nodeType == ELEMENT_NODE) {
|
||||
var elementStyles = $window.getComputedStyle(element) || {};
|
||||
existingDuration = Math.max(parseMaxTime(elementStyles[w3cTransitionProp + durationKey]),
|
||||
parseMaxTime(elementStyles[vendorTransitionProp + durationKey]),
|
||||
existingDuration);
|
||||
}
|
||||
});
|
||||
if(existingDuration > 0) {
|
||||
done();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
element.addClass(className);
|
||||
|
||||
//we want all the styles defined before and after
|
||||
var ELEMENT_NODE = 1;
|
||||
var duration = 0;
|
||||
forEach(element, function(element) {
|
||||
if (element.nodeType == ELEMENT_NODE) {
|
||||
var elementStyles = $window.getComputedStyle(element) || {};
|
||||
|
@ -623,13 +620,35 @@ angular.module('ngAnimate', ['ng'])
|
|||
}
|
||||
});
|
||||
|
||||
/* there is no point in performing a reflow if the animation
|
||||
timeout is empty (this would cause a flicker bug normally
|
||||
in the page */
|
||||
if(duration > 0) {
|
||||
var node = element[0];
|
||||
|
||||
//temporarily disable the transition so that the enter styles
|
||||
//don't animate twice (this is here to avoid a bug in Chrome/FF).
|
||||
node.style[w3cTransitionProp + propertyKey] = 'none';
|
||||
node.style[vendorTransitionProp + propertyKey] = 'none';
|
||||
|
||||
var activeClassName = '';
|
||||
forEach(className.split(' '), function(klass, i) {
|
||||
activeClassName += (i > 0 ? ' ' : '') + klass + '-active';
|
||||
});
|
||||
|
||||
//this triggers a reflow which allows for the transition animation to kick in
|
||||
element.prop('clientWidth');
|
||||
node.style[w3cTransitionProp + propertyKey] = '';
|
||||
node.style[vendorTransitionProp + propertyKey] = '';
|
||||
element.addClass(activeClassName);
|
||||
|
||||
$timeout(done, duration * 1000, false);
|
||||
}
|
||||
|
||||
//this will automatically be called by $animate so
|
||||
//there is no need to attach this internally to the
|
||||
//timeout done method
|
||||
function onEnd(cancelled) {
|
||||
return function onEnd(cancelled) {
|
||||
element.removeClass(className);
|
||||
element.removeClass(activeClassName);
|
||||
|
||||
//only when the animation is cancelled is the done()
|
||||
|
@ -640,6 +659,19 @@ angular.module('ngAnimate', ['ng'])
|
|||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
element.removeClass(className);
|
||||
done();
|
||||
}
|
||||
|
||||
function parseMaxTime(str) {
|
||||
var total = 0, values = angular.isString(str) ? str.split(/\s*,\s*/) : [];
|
||||
forEach(values, function(value) {
|
||||
total = Math.max(parseFloat(value) || 0, total);
|
||||
});
|
||||
return total;
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
enter : function(element, done) {
|
||||
|
@ -659,8 +691,6 @@ angular.module('ngAnimate', ['ng'])
|
|||
}
|
||||
};
|
||||
|
||||
}]);
|
||||
|
||||
function suffixClasses(classes, suffix) {
|
||||
var className = '';
|
||||
classes = angular.isArray(classes) ? classes : classes.split(/\s+/);
|
||||
|
@ -672,6 +702,7 @@ angular.module('ngAnimate', ['ng'])
|
|||
return className;
|
||||
}
|
||||
}]);
|
||||
}]);
|
||||
|
||||
|
||||
})(window, window.angular);
|
||||
|
|
15
lib/angular/angular-animate.min.js
vendored
15
lib/angular/angular-animate.min.js
vendored
|
@ -1,14 +1,15 @@
|
|||
/*
|
||||
AngularJS v1.2.0rc1
|
||||
AngularJS v1.2.0-rc.2
|
||||
(c) 2010-2012 Google, Inc. http://angularjs.org
|
||||
License: MIT
|
||||
*/
|
||||
(function(B,q,C){'use strict';q.module("ngAnimate",["ng"]).config(["$provide","$animateProvider",function(x,w){function s(c,h){var l="";c=q.isArray(c)?c:c.split(/\s+/);t(c,function(c,m){c&&0<c.length&&(l+=(0<m?" ":"")+c+h)});return l}var u=q.noop,t=q.forEach,y=w.$$selectors,f="$$ngAnimateState",v={running:!0};x.decorator("$animate",["$delegate","$injector","$sniffer","$rootElement","$timeout",function(c,h,l,g,m){function k(a){if(a){var b=[],e={};a=a.substr(1).split(".");a.push("");for(var c=0;c<a.length;c++){var d=
|
||||
a[c],r=y[d];r&&!e[d]&&(b.push(h.get(r)),e[d]=!0)}return b}}function d(a,b,e,c,d,r){function z(a){t(a,function(a){(a.endFn||u)(!0)})}function n(){n.hasBeenRun||(n.hasBeenRun=!0,e.removeClass(b),e.removeData(f),(r||u)())}var A=(" "+((e.attr("class")||"")+" "+b)).replace(/\s+/g,"."),p=[];t(k(A),function(b,c){p.push({start:b[a]})});c||(c=d?d.parent():e.parent());d={running:!0};if((c.inheritedData(f)||d).running)m(r||u,0,!1);else{c=e.data(f)||{};c.running&&(z(c.animations),c.done());e.data(f,{running:!0,
|
||||
animations:p,done:n});var h=b;"addClass"==a?b=s(b,"-add"):"removeClass"==a&&(b=s(b,"-remove"));e.addClass(b);t(p,function(b,c){var d=function(){a:{p[c].done=!0;(p[c].endFn||u)();for(var a=0;a<p.length;a++)if(!p[a].done)break a;n()}};b.start?b.endFn="addClass"==a||"removeClass"==a?b.start(e,h,d):b.start(e,d):d()})}}g.data(f,v);return{enter:function(a,b,e,k){c.enter(a,b,e);d("enter","ng-enter",a,b,e,k)},leave:function(a,b){d("leave","ng-leave",a,null,null,function(){c.leave(a,b)})},move:function(a,
|
||||
b,e,k){c.move(a,b,e);d("move","ng-move",a,null,null,k)},addClass:function(a,b,e){d("addClass",b,a,null,null,function(){c.addClass(a,b,e)})},removeClass:function(a,b,e){d("removeClass",b,a,null,null,function(){c.removeClass(a,b,e)})},enabled:function(a){arguments.length&&(v.running=!a);return!v.running}}}]);w.register("",["$window","$sniffer","$timeout",function(c,h,l){function g(k,d,a){function b(a){var b=0;a=q.isString(a)?a.split(/\s*,\s*/):[];m(a,function(a){b=Math.max(parseFloat(a)||0,b)});return b}
|
||||
function e(){var e=0;m(d.split(" "),function(a,b){f+=(0<b?" ":"")+a+"-active"});k.addClass(f);var g=h.vendorPrefix+"Animation",n=h.vendorPrefix+"Transition";m(k,function(a){if(1==a.nodeType){a=c.getComputedStyle(a)||{};var d=Math.max(b(a.transitionDelay),b(a[n+"Delay"])),k=Math.max(b(a.animationDelay),b(a[g+"Delay"])),h=Math.max(b(a.transitionDuration),b(a[n+"Duration"])),f=Math.max(b(a.animationDuration),b(a[g+"Duration"]));0<f&&(f*=Math.max(parseInt(a.animationIterationCount)||0,parseInt(a[g+"IterationCount"])||
|
||||
0,1));e=Math.max(k+f,d+h,e)}});l(a,1E3*e,!1)}function g(b){k.removeClass(f);b&&a()}if(h.transitions||h.animations){var f="";l(e,1,!1);return g}a()}var m=q.forEach;return{enter:function(c,d){return g(c,"ng-enter",d)},leave:function(c,d){return g(c,"ng-leave",d)},move:function(c,d){return g(c,"ng-move",d)},addClass:function(c,d,a){return g(c,s(d,"-add"),a)},removeClass:function(c,d,a){return g(c,s(d,"-remove"),a)}}}])}])})(window,window.angular);
|
||||
(function(C,n,D){'use strict';n.module("ngAnimate",["ng"]).config(["$provide","$animateProvider",function(A,t){var u=n.noop,v=n.forEach,B=t.$$selectors,p="$$ngAnimateState",z={running:!0};A.decorator("$animate",["$delegate","$injector","$sniffer","$rootElement","$timeout","$rootScope",function(r,n,t,g,m,h){function w(a){if(a){var e=[],d={};a=a.substr(1).split(".");a.push("");for(var b=0;b<a.length;b++){var s=a[b],f=B[s];f&&!d[s]&&(e.push(n.get(f)),d[s]=!0)}return e}}function f(a,e,d,b,f,h){function n(a){v(a,
|
||||
function(a){(a.endFn||u)(!0)})}function c(){c.hasBeenRun||(c.hasBeenRun=!0,d.removeData(p),(h||u)())}var l=(" "+((d.attr("class")||"")+" "+e)).replace(/\s+/g,"."),k=[];v(w(l),function(c,d){k.push({start:c[a]})});b||(b=f?f.parent():d.parent());f={running:!0};(b.inheritedData(p)||f).running?m(h||u,0,!1):(b=d.data(p)||{},b.running&&(n(b.animations),b.done()),d.data(p,{running:!0,animations:k,done:c}),v(k,function(b,f){var l=function(){a:{k[f].done=!0;(k[f].endFn||u)();for(var a=0;a<k.length;a++)if(!k[a].done)break a;
|
||||
c()}};b.start?b.endFn="addClass"==a||"removeClass"==a?b.start(d,e,l):b.start(d,l):l()}))}g.data(p,z);return{enter:function(a,e,d,b){r.enter(a,e,d);h.$$postDigest(function(){f("enter","ng-enter",a,e,d,function(){b&&m(b,0,!1)})})},leave:function(a,e){h.$$postDigest(function(){f("leave","ng-leave",a,null,null,function(){r.leave(a,e)})})},move:function(a,e,d,b){r.move(a,e,d);h.$$postDigest(function(){f("move","ng-move",a,null,null,function(){b&&m(b,0,!1)})})},addClass:function(a,e,d){f("addClass",e,a,
|
||||
null,null,function(){r.addClass(a,e,d)})},removeClass:function(a,e,d){f("removeClass",e,a,null,null,function(){r.removeClass(a,e,d)})},enabled:function(a){arguments.length&&(z.running=!a);return!z.running}}}]);t.register("",["$window","$sniffer","$timeout",function(r,p,u){function g(c,l,k){function q(a){var c=0;a=n.isString(a)?a.split(/\s*,\s*/):[];h(a,function(a){c=Math.max(parseFloat(a)||0,c)});return c}if(p.transitions||p.animations){if(-1==["ng-enter","ng-leave","ng-move"].indexOf(l)){var g=0;
|
||||
h(c,function(a){a.nodeType==v&&(a=r.getComputedStyle(a)||{},g=Math.max(q(a[f+d]),q(a[e+d]),g))});if(0<g){k();return}}c.addClass(l);var m=0;h(c,function(c){if(c.nodeType==v){c=r.getComputedStyle(c)||{};var l=Math.max(q(c[f+b]),q(c[e+b])),k=Math.max(q(c[w+b]),q(c[a+b])),h=Math.max(q(c[f+d]),q(c[e+d])),g=Math.max(q(c[w+d]),q(c[a+d]));0<g&&(g*=Math.max(parseInt(c[w+t])||0,parseInt(c[a+t])||0,1));m=Math.max(k+g,l+h,m)}});if(0<m){var x=c[0];x.style[f+s]="none";x.style[e+s]="none";var y="";h(l.split(" "),
|
||||
function(a,c){y+=(0<c?" ":"")+a+"-active"});c.prop("clientWidth");x.style[f+s]="";x.style[e+s]="";c.addClass(y);u(k,1E3*m,!1);return function(a){c.removeClass(l);c.removeClass(y);a&&k()}}c.removeClass(l)}k()}function m(a,d){var b="";a=n.isArray(a)?a:a.split(/\s+/);h(a,function(a,c){a&&0<a.length&&(b+=(0<c?" ":"")+a+d)});return b}var h=n.forEach,w="animation",f="transition",a=p.vendorPrefix+"Animation",e=p.vendorPrefix+"Transition",d="Duration",b="Delay",s="Property",t="IterationCount",v=1;return{enter:function(a,
|
||||
b){return g(a,"ng-enter",b)},leave:function(a,b){return g(a,"ng-leave",b)},move:function(a,b){return g(a,"ng-move",b)},addClass:function(a,b,d){return g(a,m(b,"-add"),d)},removeClass:function(a,b,d){return g(a,m(b,"-remove"),d)}}}])}])})(window,window.angular);
|
||||
/*
|
||||
//@ sourceMappingURL=angular-animate.min.js.map
|
||||
*/
|
||||
|
|
File diff suppressed because one or more lines are too long
18
lib/angular/angular-cookies.js
vendored
18
lib/angular/angular-cookies.js
vendored
|
@ -1,5 +1,5 @@
|
|||
/**
|
||||
* @license AngularJS v1.2.0rc1
|
||||
* @license AngularJS v1.2.0-rc.2
|
||||
* (c) 2010-2012 Google, Inc. http://angularjs.org
|
||||
* License: MIT
|
||||
*/
|
||||
|
@ -8,6 +8,17 @@
|
|||
/**
|
||||
* @ngdoc overview
|
||||
* @name ngCookies
|
||||
* @description
|
||||
*
|
||||
* # ngCookies
|
||||
*
|
||||
* Provides the {@link ngCookies.$cookies `$cookies`} and
|
||||
* {@link ngCookies.$cookieStore `$cookieStore`} services.
|
||||
*
|
||||
* {@installModule cookies}
|
||||
*
|
||||
* See {@link ngCookies.$cookies `$cookies`} and
|
||||
* {@link ngCookies.$cookieStore `$cookieStore`} for usage.
|
||||
*/
|
||||
|
||||
|
||||
|
@ -23,6 +34,8 @@ angular.module('ngCookies', ['ng']).
|
|||
* Only a simple Object is exposed and by adding or removing properties to/from
|
||||
* this object, new cookies are created/deleted at the end of current $eval.
|
||||
*
|
||||
* Requires the {@link ngCookies `ngCookies`} module to be installed.
|
||||
*
|
||||
* @example
|
||||
<doc:example>
|
||||
<doc:source>
|
||||
|
@ -127,6 +140,9 @@ angular.module('ngCookies', ['ng']).
|
|||
* Provides a key-value (string-object) storage, that is backed by session cookies.
|
||||
* Objects put or retrieved from this storage are automatically serialized or
|
||||
* deserialized by angular's toJson/fromJson.
|
||||
*
|
||||
* Requires the {@link ngCookies `ngCookies`} module to be installed.
|
||||
*
|
||||
* @example
|
||||
*/
|
||||
factory('$cookieStore', ['$cookies', function($cookies) {
|
||||
|
|
2
lib/angular/angular-cookies.min.js
vendored
2
lib/angular/angular-cookies.min.js
vendored
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
AngularJS v1.2.0rc1
|
||||
AngularJS v1.2.0-rc.2
|
||||
(c) 2010-2012 Google, Inc. http://angularjs.org
|
||||
License: MIT
|
||||
*/
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
"version":3,
|
||||
"file":"angular-cookies.min.js",
|
||||
"lineCount":7,
|
||||
"mappings":"A;;;;;aAKC,SAAQ,CAACA,CAAD,CAASC,CAAT,CAAkBC,CAAlB,CAA6B,CAQtCD,CAAAE,OAAA,CAAe,WAAf,CAA4B,CAAC,IAAD,CAA5B,CAAAC,QAAA,CA0BW,UA1BX,CA0BuB,CAAC,YAAD,CAAe,UAAf,CAA2B,QAAS,CAACC,CAAD,CAAaC,CAAb,CAAuB,CAAA,IACxEC,EAAU,EAD8D,CAExEC,EAAc,EAF0D,CAGxEC,CAHwE,CAIxEC,EAAU,CAAA,CAJ8D,CAKxEC,EAAOV,CAAAU,KALiE,CAMxEC,EAAcX,CAAAW,YAGlBN,EAAAO,UAAA,CAAmB,QAAQ,EAAG,CAC5B,IAAIC,EAAiBR,CAAAC,QAAA,EACjBE,EAAJ,EAA0BK,CAA1B,GACEL,CAGA,CAHqBK,CAGrB,CAFAH,CAAA,CAAKG,CAAL,CAAqBN,CAArB,CAEA,CADAG,CAAA,CAAKG,CAAL,CAAqBP,CAArB,CACA,CAAIG,CAAJ,EAAaL,CAAAU,OAAA,EAJf,CAF4B,CAA9B,CAAA,EAUAL,EAAA,CAAU,CAAA,CAKVL,EAAAW,OAAA,CAQAC,QAAa,EAAG,CAAA,IACVC,CADU,CAEVC,CAFU,CAIVC,CAGJ,KAAKF,CAAL,GAAaV,EAAb,CACMI,CAAA,CAAYL,CAAA,CAAQW,CAAR,CAAZ,CAAJ,EACEZ,CAAAC,QAAA,CAAiBW,CAAjB,CAAuBhB,CAAvB,CAKJ,KAAIgB,CAAJ,GAAYX,EAAZ,CAEE,CADAY,CACK,CADGZ,CAAA,CAAQW,CAAR,CACH,CAAAjB,CAAAoB,SAAA,CAAiBF,CAAjB,CAAL,EAMWA,CANX,GAMqBX,CAAA,CAAYU,CAAZ,CANrB,GAOEZ,CAAAC,QAAA,CAAiBW,CAAjB,CAAuBC,CAAvB,CACA,CAAAC,CAAA,CAAU,CAAA,CARZ,EACMnB,CAAAqB,UAAA,CAAkBd,CAAA,CAAYU,CAAZ,CAAlB,CAAJ,CACEX,CAAA,CAAQW,CAAR,CADF,CACkBV,CAAA,CAAYU,CAAZ,CADlB,CAGE,OAAOX,CAAA,CAAQW,CAAR,CASb,IAAIE,CAAJ,CAIE,IAAKF,CAAL,GAFAK,EAEahB,CAFID,CAAAC,QAAA,EAEJA,CAAAA,CAAb,CACMA,CAAA,CAAQW,CAAR,CAAJ,GAAsBK,CAAA,CAAeL,CAAf,CAAtB,GAEMN,CAAA,CAAYW,CAAA,CAAeL,CAAf,CAAZ,CAAJ,CACE,OAAOX,CAAA,CAAQW,CAAR,CADT,CAGEX,CAAA,CAAQW,CAAR,CAHF,CAGkBK,CAAA,CAAeL,CAAf,CALpB,CAlCU,CARhB,CAEA;MAAOX,EA1BqE,CAA3D,CA1BvB,CAAAH,QAAA,CAsHW,cAtHX,CAsH2B,CAAC,UAAD,CAAa,QAAQ,CAACoB,CAAD,CAAW,CAErD,MAAO,KAYAC,QAAQ,CAACC,CAAD,CAAM,CAEjB,MAAO,CADHP,CACG,CADKK,CAAA,CAASE,CAAT,CACL,EAAQzB,CAAA0B,SAAA,CAAiBR,CAAjB,CAAR,CAAkCA,CAFxB,CAZd,KA4BAS,QAAQ,CAACF,CAAD,CAAMP,CAAN,CAAa,CACxBK,CAAA,CAASE,CAAT,CAAA,CAAgBzB,CAAA4B,OAAA,CAAeV,CAAf,CADQ,CA5BrB,QA0CGW,QAAQ,CAACJ,CAAD,CAAM,CACpB,OAAOF,CAAA,CAASE,CAAT,CADa,CA1CjB,CAF8C,CAAhC,CAtH3B,CARsC,CAArC,CAAA,CAkLE1B,MAlLF,CAkLUA,MAAAC,QAlLV;",
|
||||
"mappings":"A;;;;;aAKC,SAAQ,CAACA,CAAD,CAASC,CAAT,CAAkBC,CAAlB,CAA6B,CAmBtCD,CAAAE,OAAA,CAAe,WAAf,CAA4B,CAAC,IAAD,CAA5B,CAAAC,QAAA,CA4BW,UA5BX,CA4BuB,CAAC,YAAD,CAAe,UAAf,CAA2B,QAAS,CAACC,CAAD,CAAaC,CAAb,CAAuB,CAAA,IACxEC,EAAU,EAD8D,CAExEC,EAAc,EAF0D,CAGxEC,CAHwE,CAIxEC,EAAU,CAAA,CAJ8D,CAKxEC,EAAOV,CAAAU,KALiE,CAMxEC,EAAcX,CAAAW,YAGlBN,EAAAO,UAAA,CAAmB,QAAQ,EAAG,CAC5B,IAAIC,EAAiBR,CAAAC,QAAA,EACjBE,EAAJ,EAA0BK,CAA1B,GACEL,CAGA,CAHqBK,CAGrB,CAFAH,CAAA,CAAKG,CAAL,CAAqBN,CAArB,CAEA,CADAG,CAAA,CAAKG,CAAL,CAAqBP,CAArB,CACA,CAAIG,CAAJ,EAAaL,CAAAU,OAAA,EAJf,CAF4B,CAA9B,CAAA,EAUAL,EAAA,CAAU,CAAA,CAKVL,EAAAW,OAAA,CAQAC,QAAa,EAAG,CAAA,IACVC,CADU,CAEVC,CAFU,CAIVC,CAGJ,KAAKF,CAAL,GAAaV,EAAb,CACMI,CAAA,CAAYL,CAAA,CAAQW,CAAR,CAAZ,CAAJ,EACEZ,CAAAC,QAAA,CAAiBW,CAAjB,CAAuBhB,CAAvB,CAKJ,KAAIgB,CAAJ,GAAYX,EAAZ,CAEE,CADAY,CACK,CADGZ,CAAA,CAAQW,CAAR,CACH,CAAAjB,CAAAoB,SAAA,CAAiBF,CAAjB,CAAL,EAMWA,CANX,GAMqBX,CAAA,CAAYU,CAAZ,CANrB,GAOEZ,CAAAC,QAAA,CAAiBW,CAAjB,CAAuBC,CAAvB,CACA,CAAAC,CAAA,CAAU,CAAA,CARZ,EACMnB,CAAAqB,UAAA,CAAkBd,CAAA,CAAYU,CAAZ,CAAlB,CAAJ,CACEX,CAAA,CAAQW,CAAR,CADF,CACkBV,CAAA,CAAYU,CAAZ,CADlB,CAGE,OAAOX,CAAA,CAAQW,CAAR,CASb,IAAIE,CAAJ,CAIE,IAAKF,CAAL,GAFAK,EAEahB,CAFID,CAAAC,QAAA,EAEJA,CAAAA,CAAb,CACMA,CAAA,CAAQW,CAAR,CAAJ,GAAsBK,CAAA,CAAeL,CAAf,CAAtB,GAEMN,CAAA,CAAYW,CAAA,CAAeL,CAAf,CAAZ,CAAJ,CACE,OAAOX,CAAA,CAAQW,CAAR,CADT,CAGEX,CAAA,CAAQW,CAAR,CAHF,CAGkBK,CAAA,CAAeL,CAAf,CALpB,CAlCU,CARhB,CAEA;MAAOX,EA1BqE,CAA3D,CA5BvB,CAAAH,QAAA,CA2HW,cA3HX,CA2H2B,CAAC,UAAD,CAAa,QAAQ,CAACoB,CAAD,CAAW,CAErD,MAAO,KAYAC,QAAQ,CAACC,CAAD,CAAM,CAEjB,MAAO,CADHP,CACG,CADKK,CAAA,CAASE,CAAT,CACL,EAAQzB,CAAA0B,SAAA,CAAiBR,CAAjB,CAAR,CAAkCA,CAFxB,CAZd,KA4BAS,QAAQ,CAACF,CAAD,CAAMP,CAAN,CAAa,CACxBK,CAAA,CAASE,CAAT,CAAA,CAAgBzB,CAAA4B,OAAA,CAAeV,CAAf,CADQ,CA5BrB,QA0CGW,QAAQ,CAACJ,CAAD,CAAM,CACpB,OAAOF,CAAA,CAASE,CAAT,CADa,CA1CjB,CAF8C,CAAhC,CA3H3B,CAnBsC,CAArC,CAAA,CAkME1B,MAlMF,CAkMUA,MAAAC,QAlMV;",
|
||||
"sources":["angular-cookies.js"],
|
||||
"names":["window","angular","undefined","module","factory","$rootScope","$browser","cookies","lastCookies","lastBrowserCookies","runEval","copy","isUndefined","addPollFn","currentCookies","$apply","$watch","push","name","value","updated","isString","isDefined","browserCookies","$cookies","get","key","fromJson","put","toJson","remove"]
|
||||
}
|
||||
|
|
9
lib/angular/angular-loader.js
vendored
9
lib/angular/angular-loader.js
vendored
|
@ -1,5 +1,5 @@
|
|||
/**
|
||||
* @license AngularJS v1.2.0rc1
|
||||
* @license AngularJS v1.2.0-rc.2
|
||||
* (c) 2010-2012 Google, Inc. http://angularjs.org
|
||||
* License: MIT
|
||||
*/
|
||||
|
@ -29,10 +29,13 @@ function setupModuleLoader(window) {
|
|||
* @name angular.module
|
||||
* @description
|
||||
*
|
||||
* The `angular.module` is a global place for creating and registering Angular modules. All
|
||||
* modules (angular core or 3rd party) that should be available to an application must be
|
||||
* The `angular.module` is a global place for creating, registering and retrieving Angular modules.
|
||||
* All modules (angular core or 3rd party) that should be available to an application must be
|
||||
* registered using this mechanism.
|
||||
*
|
||||
* When passed two or more arguments, a new module is created. If passed only one argument, an
|
||||
* existing module (the name passed as the first argument to `module`) is retrieved.
|
||||
*
|
||||
*
|
||||
* # Module
|
||||
*
|
||||
|
|
2
lib/angular/angular-loader.min.js
vendored
2
lib/angular/angular-loader.min.js
vendored
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
AngularJS v1.2.0rc1
|
||||
AngularJS v1.2.0-rc.2
|
||||
(c) 2010-2012 Google, Inc. http://angularjs.org
|
||||
License: MIT
|
||||
*/
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
"version":3,
|
||||
"file":"angular-loader.min.js",
|
||||
"lineCount":7,
|
||||
"mappings":"A;;;;;aAgBAA,SAA0B,CAACC,CAAD,CAAS,CAEjCC,QAASA,EAAM,CAACC,CAAD,CAAMC,CAAN,CAAYC,CAAZ,CAAqB,CAClC,MAAOF,EAAA,CAAIC,CAAJ,CAAP,GAAqBD,CAAA,CAAIC,CAAJ,CAArB,CAAiCC,CAAA,EAAjC,CADkC,CAIpC,MAAOH,EAAA,CAAOA,CAAA,CAAOD,CAAP,CAAe,SAAf,CAA0BK,MAA1B,CAAP,CAA0C,QAA1C,CAAoD,QAAQ,EAAG,CAEpE,IAAIC,EAAU,EAgDd,OAAOC,SAAe,CAACJ,CAAD,CAAOK,CAAP,CAAiBC,CAAjB,CAA2B,CAC3CD,CAAJ,EAAgBF,CAAAI,eAAA,CAAuBP,CAAvB,CAAhB,GACEG,CAAA,CAAQH,CAAR,CADF,CACkB,IADlB,CAGA,OAAOF,EAAA,CAAOK,CAAP,CAAgBH,CAAhB,CAAsB,QAAQ,EAAG,CA2MtCQ,QAASA,EAAW,CAACC,CAAD,CAAWC,CAAX,CAAmBC,CAAnB,CAAiC,CACnD,MAAO,SAAQ,EAAG,CAChBC,CAAA,CAAYD,CAAZ,EAA4B,MAA5B,CAAA,CAAoC,CAACF,CAAD,CAAWC,CAAX,CAAmBG,SAAnB,CAApC,CACA,OAAOC,EAFS,CADiC,CA1MrD,GAAI,CAACT,CAAL,CACE,KAAMU,OAAA,CAAO,WAAP,CAAA,CAAoB,OAApB,CAEWf,CAFX,CAAN,CAMF,IAAIY,EAAc,EAAlB,CAGII,EAAY,EAHhB,CAKIC,EAAST,CAAA,CAAY,WAAZ,CAAyB,QAAzB,CALb,CAQIM,EAAiB,cAELF,CAFK,YAGPI,CAHO,UAaTX,CAbS,MAsBbL,CAtBa,UAkCTQ,CAAA,CAAY,UAAZ,CAAwB,UAAxB,CAlCS,SA6CVA,CAAA,CAAY,UAAZ,CAAwB,SAAxB,CA7CU,SAwDVA,CAAA,CAAY,UAAZ;AAAwB,SAAxB,CAxDU,OAmEZA,CAAA,CAAY,UAAZ,CAAwB,OAAxB,CAnEY,UA+ETA,CAAA,CAAY,UAAZ,CAAwB,UAAxB,CAAoC,SAApC,CA/ES,WAgHRA,CAAA,CAAY,kBAAZ,CAAgC,UAAhC,CAhHQ,QA2HXA,CAAA,CAAY,iBAAZ,CAA+B,UAA/B,CA3HW,YAsIPA,CAAA,CAAY,qBAAZ,CAAmC,UAAnC,CAtIO,WAkJRA,CAAA,CAAY,kBAAZ,CAAgC,WAAhC,CAlJQ,QA6JXS,CA7JW,KAyKdC,QAAQ,CAACC,CAAD,CAAQ,CACnBH,CAAAI,KAAA,CAAeD,CAAf,CACA,OAAO,KAFY,CAzKF,CA+KjBb,EAAJ,EACEW,CAAA,CAAOX,CAAP,CAGF,OAAQQ,EAnM8B,CAAjC,CAJwC,CAlDmB,CAA/D,CAN0B,CAAnClB,CAAA,CAmREC,MAnRF;",
|
||||
"mappings":"A;;;;;aAgBAA,SAA0B,CAACC,CAAD,CAAS,CAEjCC,QAASA,EAAM,CAACC,CAAD,CAAMC,CAAN,CAAYC,CAAZ,CAAqB,CAClC,MAAOF,EAAA,CAAIC,CAAJ,CAAP,GAAqBD,CAAA,CAAIC,CAAJ,CAArB,CAAiCC,CAAA,EAAjC,CADkC,CAIpC,MAAOH,EAAA,CAAOA,CAAA,CAAOD,CAAP,CAAe,SAAf,CAA0BK,MAA1B,CAAP,CAA0C,QAA1C,CAAoD,QAAQ,EAAG,CAEpE,IAAIC,EAAU,EAmDd,OAAOC,SAAe,CAACJ,CAAD,CAAOK,CAAP,CAAiBC,CAAjB,CAA2B,CAC3CD,CAAJ,EAAgBF,CAAAI,eAAA,CAAuBP,CAAvB,CAAhB,GACEG,CAAA,CAAQH,CAAR,CADF,CACkB,IADlB,CAGA,OAAOF,EAAA,CAAOK,CAAP,CAAgBH,CAAhB,CAAsB,QAAQ,EAAG,CA2MtCQ,QAASA,EAAW,CAACC,CAAD,CAAWC,CAAX,CAAmBC,CAAnB,CAAiC,CACnD,MAAO,SAAQ,EAAG,CAChBC,CAAA,CAAYD,CAAZ,EAA4B,MAA5B,CAAA,CAAoC,CAACF,CAAD,CAAWC,CAAX,CAAmBG,SAAnB,CAApC,CACA,OAAOC,EAFS,CADiC,CA1MrD,GAAI,CAACT,CAAL,CACE,KAAMU,OAAA,CAAO,WAAP,CAAA,CAAoB,OAApB,CAEWf,CAFX,CAAN,CAMF,IAAIY,EAAc,EAAlB,CAGII,EAAY,EAHhB,CAKIC,EAAST,CAAA,CAAY,WAAZ,CAAyB,QAAzB,CALb,CAQIM,EAAiB,cAELF,CAFK,YAGPI,CAHO,UAaTX,CAbS,MAsBbL,CAtBa,UAkCTQ,CAAA,CAAY,UAAZ,CAAwB,UAAxB,CAlCS,SA6CVA,CAAA,CAAY,UAAZ,CAAwB,SAAxB,CA7CU,SAwDVA,CAAA,CAAY,UAAZ;AAAwB,SAAxB,CAxDU,OAmEZA,CAAA,CAAY,UAAZ,CAAwB,OAAxB,CAnEY,UA+ETA,CAAA,CAAY,UAAZ,CAAwB,UAAxB,CAAoC,SAApC,CA/ES,WAgHRA,CAAA,CAAY,kBAAZ,CAAgC,UAAhC,CAhHQ,QA2HXA,CAAA,CAAY,iBAAZ,CAA+B,UAA/B,CA3HW,YAsIPA,CAAA,CAAY,qBAAZ,CAAmC,UAAnC,CAtIO,WAkJRA,CAAA,CAAY,kBAAZ,CAAgC,WAAhC,CAlJQ,QA6JXS,CA7JW,KAyKdC,QAAQ,CAACC,CAAD,CAAQ,CACnBH,CAAAI,KAAA,CAAeD,CAAf,CACA,OAAO,KAFY,CAzKF,CA+KjBb,EAAJ,EACEW,CAAA,CAAOX,CAAP,CAGF,OAAQQ,EAnM8B,CAAjC,CAJwC,CArDmB,CAA/D,CAN0B,CAAnClB,CAAA,CAsREC,MAtRF;",
|
||||
"sources":["angular-loader.js"],
|
||||
"names":["setupModuleLoader","window","ensure","obj","name","factory","Object","modules","module","requires","configFn","hasOwnProperty","invokeLater","provider","method","insertMethod","invokeQueue","arguments","moduleInstance","minErr","runBlocks","config","run","block","push"]
|
||||
}
|
||||
|
|
18
lib/angular/angular-mocks.js
vendored
18
lib/angular/angular-mocks.js
vendored
|
@ -1,5 +1,5 @@
|
|||
/**
|
||||
* @license AngularJS v1.2.0rc1
|
||||
* @license AngularJS v1.2.0-rc.2
|
||||
* (c) 2010-2012 Google, Inc. http://angularjs.org
|
||||
* License: MIT
|
||||
*
|
||||
|
@ -316,7 +316,7 @@ angular.mock.$LogProvider = function() {
|
|||
}
|
||||
|
||||
this.debugEnabled = function(flag) {
|
||||
if (isDefined(flag)) {
|
||||
if (angular.isDefined(flag)) {
|
||||
debug = flag;
|
||||
return this;
|
||||
} else {
|
||||
|
@ -1851,9 +1851,11 @@ angular.mock.clearDataCache = function() {
|
|||
*
|
||||
* See {@link angular.mock.inject inject} for usage example
|
||||
*
|
||||
* @param {...(string|Function)} fns any number of modules which are represented as string
|
||||
* @param {...(string|Function|Object)} fns any number of modules which are represented as string
|
||||
* aliases or as anonymous module initialization functions. The modules are used to
|
||||
* configure the injector. The 'ng' and 'ngMock' modules are automatically loaded.
|
||||
* configure the injector. The 'ng' and 'ngMock' modules are automatically loaded. If an
|
||||
* object literal is passed they will be register as values in the module, the key being
|
||||
* the module name and the value being what is returned.
|
||||
*/
|
||||
window.module = angular.mock.module = function() {
|
||||
var moduleFns = Array.prototype.slice.call(arguments, 0);
|
||||
|
@ -1865,7 +1867,15 @@ angular.mock.clearDataCache = function() {
|
|||
} else {
|
||||
var modules = currentSpec.$modules || (currentSpec.$modules = []);
|
||||
angular.forEach(moduleFns, function(module) {
|
||||
if (angular.isObject(module) && !angular.isArray(module)) {
|
||||
modules.push(function($provide) {
|
||||
angular.forEach(module, function(value, key) {
|
||||
$provide.value(key, value);
|
||||
});
|
||||
});
|
||||
} else {
|
||||
modules.push(module);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
25
lib/angular/angular-resource.js
vendored
25
lib/angular/angular-resource.js
vendored
|
@ -1,5 +1,5 @@
|
|||
/**
|
||||
* @license AngularJS v1.2.0rc1
|
||||
* @license AngularJS v1.2.0-rc.2
|
||||
* (c) 2010-2012 Google, Inc. http://angularjs.org
|
||||
* License: MIT
|
||||
*/
|
||||
|
@ -11,6 +11,16 @@ var $resourceMinErr = angular.$$minErr('$resource');
|
|||
* @ngdoc overview
|
||||
* @name ngResource
|
||||
* @description
|
||||
*
|
||||
* # ngResource
|
||||
*
|
||||
* `ngResource` is the name of the optional Angular module that adds support for interacting with
|
||||
* [RESTful](http://en.wikipedia.org/wiki/Representational_State_Transfer) server-side data sources.
|
||||
* `ngReource` provides the {@link ngResource.$resource `$resource`} serivce.
|
||||
*
|
||||
* {@installModule resource}
|
||||
*
|
||||
* See {@link ngResource.$resource `$resource`} for usage.
|
||||
*/
|
||||
|
||||
/**
|
||||
|
@ -25,23 +35,14 @@ var $resourceMinErr = angular.$$minErr('$resource');
|
|||
* The returned resource object has action methods which provide high-level behaviors without
|
||||
* the need to interact with the low level {@link ng.$http $http} service.
|
||||
*
|
||||
* # Installation
|
||||
* To use $resource make sure you have included the `angular-resource.js` that comes in Angular
|
||||
* package. You can also find this file on Google CDN, bower as well as at
|
||||
* {@link http://code.angularjs.org/ code.angularjs.org}.
|
||||
*
|
||||
* Finally load the module in your application:
|
||||
*
|
||||
* angular.module('app', ['ngResource']);
|
||||
*
|
||||
* and you are ready to get started!
|
||||
* Requires the {@link ngResource `ngResource`} module to be installed.
|
||||
*
|
||||
* @param {string} url A parametrized URL template with parameters prefixed by `:` as in
|
||||
* `/user/:username`. If you are using a URL with a port number (e.g.
|
||||
* `http://example.com:8080/api`), it will be respected.
|
||||
*
|
||||
* If you are using a url with a suffix, just add the suffix, like this:
|
||||
* `$resource('http://example.com/resource.json')` or `$resource('http://example.com/:id.json')
|
||||
* `$resource('http://example.com/resource.json')` or `$resource('http://example.com/:id.json')`
|
||||
* or even `$resource('http://example.com/resource/:resource_id.:format')`
|
||||
* If the parameter before the suffix is empty, :resource_id in this case, then the `/.` will be
|
||||
* collapsed down to a single `.`. If you need this sequence to appear and not collapse then you
|
||||
|
|
2
lib/angular/angular-resource.min.js
vendored
2
lib/angular/angular-resource.min.js
vendored
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
AngularJS v1.2.0rc1
|
||||
AngularJS v1.2.0-rc.2
|
||||
(c) 2010-2012 Google, Inc. http://angularjs.org
|
||||
License: MIT
|
||||
*/
|
||||
|
|
File diff suppressed because one or more lines are too long
83
lib/angular/angular-route.js
vendored
83
lib/angular/angular-route.js
vendored
|
@ -1,5 +1,5 @@
|
|||
/**
|
||||
* @license AngularJS v1.2.0rc1
|
||||
* @license AngularJS v1.2.0-rc.2
|
||||
* (c) 2010-2012 Google, Inc. http://angularjs.org
|
||||
* License: MIT
|
||||
*/
|
||||
|
@ -26,7 +26,12 @@ function inherit(parent, extra) {
|
|||
* @name ngRoute
|
||||
* @description
|
||||
*
|
||||
* Module that provides routing and deeplinking services and directives for angular apps.
|
||||
* # ngRoute
|
||||
*
|
||||
* The `ngRoute` module provides routing and deeplinking services and directives for angular apps.
|
||||
*
|
||||
* {@installModule route}
|
||||
*
|
||||
*/
|
||||
|
||||
var ngRouteModule = angular.module('ngRoute', ['ng']).
|
||||
|
@ -40,6 +45,8 @@ var ngRouteModule = angular.module('ngRoute', ['ng']).
|
|||
* @description
|
||||
*
|
||||
* Used for configuring routes. See {@link ngRoute.$route $route} for an example.
|
||||
*
|
||||
* Requires the {@link ngRoute `ngRoute`} module to be installed.
|
||||
*/
|
||||
function $RouteProvider(){
|
||||
var routes = {};
|
||||
|
@ -241,13 +248,15 @@ function $RouteProvider(){
|
|||
* @property {Array.<Object>} routes Array of all configured routes.
|
||||
*
|
||||
* @description
|
||||
* Is used for deep-linking URLs to controllers and views (HTML partials).
|
||||
* `$route` is used for deep-linking URLs to controllers and views (HTML partials).
|
||||
* It watches `$location.url()` and tries to map the path to an existing route definition.
|
||||
*
|
||||
* Requires the {@link ngRoute `ngRoute`} module to be installed.
|
||||
*
|
||||
* You can define routes through {@link ngRoute.$routeProvider $routeProvider}'s API.
|
||||
*
|
||||
* The `$route` service is typically used in conjunction with {@link ngRoute.directive:ngView ngView}
|
||||
* directive and the {@link ngRoute.$routeParams $routeParams} service.
|
||||
* The `$route` service is typically used in conjunction with the {@link ngRoute.directive:ngView `ngView`}
|
||||
* directive and the {@link ngRoute.$routeParams `$routeParams`} service.
|
||||
*
|
||||
* @example
|
||||
This example shows how changing the URL hash causes the `$route` to match a route against the
|
||||
|
@ -449,7 +458,6 @@ function $RouteProvider(){
|
|||
var m = route.regexp.exec(on);
|
||||
if (!m) return null;
|
||||
|
||||
var N = 0;
|
||||
for (var i = 1, len = m.length; i < len; ++i) {
|
||||
var key = keys[i - 1];
|
||||
|
||||
|
@ -562,7 +570,7 @@ function $RouteProvider(){
|
|||
function interpolate(string, params) {
|
||||
var result = [];
|
||||
forEach((string||'').split(':'), function(segment, i) {
|
||||
if (i == 0) {
|
||||
if (i === 0) {
|
||||
result.push(segment);
|
||||
} else {
|
||||
var segmentMatch = segment.match(/(\w+)(.*)/);
|
||||
|
@ -586,9 +594,13 @@ ngRouteModule.provider('$routeParams', $RouteParamsProvider);
|
|||
* @requires $route
|
||||
*
|
||||
* @description
|
||||
* Current set of route parameters. The route parameters are a combination of the
|
||||
* {@link ng.$location $location} `search()`, and `path()`. The `path` parameters
|
||||
* are extracted when the {@link ngRoute.$route $route} path is matched.
|
||||
* The `$routeParams` service allows you to retrieve the current set of route parameters.
|
||||
*
|
||||
* Requires the {@link ngRoute `ngRoute`} module to be installed.
|
||||
*
|
||||
* The route parameters are a combination of {@link ng.$location `$location`}'s
|
||||
* {@link ng.$location#search `search()`} and {@link ng.$location#path `path()`}.
|
||||
* The `path` parameters are extracted when the {@link ngRoute.$route `$route`} path is matched.
|
||||
*
|
||||
* In case of parameter name collision, `path` params take precedence over `search` params.
|
||||
*
|
||||
|
@ -613,6 +625,8 @@ function $RouteParamsProvider() {
|
|||
this.$get = function() { return {}; };
|
||||
}
|
||||
|
||||
ngRouteModule.directive('ngView', ngViewFactory);
|
||||
|
||||
/**
|
||||
* @ngdoc directive
|
||||
* @name ngRoute.directive:ngView
|
||||
|
@ -625,6 +639,8 @@ function $RouteParamsProvider() {
|
|||
* Every time the current route changes, the included view changes with it according to the
|
||||
* configuration of the `$route` service.
|
||||
*
|
||||
* Requires the {@link ngRoute `ngRoute`} module to be installed.
|
||||
*
|
||||
* @animations
|
||||
* enter - animation is used to bring new content into the browser.
|
||||
* leave - animation is used to animate existing content away.
|
||||
|
@ -780,22 +796,18 @@ function $RouteParamsProvider() {
|
|||
* @description
|
||||
* Emitted every time the ngView content is reloaded.
|
||||
*/
|
||||
var NG_VIEW_PRIORITY = 500;
|
||||
var ngViewDirective = ['$route', '$anchorScroll', '$compile', '$controller', '$animate',
|
||||
function($route, $anchorScroll, $compile, $controller, $animate) {
|
||||
ngViewFactory.$inject = ['$route', '$anchorScroll', '$compile', '$controller', '$animate'];
|
||||
function ngViewFactory( $route, $anchorScroll, $compile, $controller, $animate) {
|
||||
return {
|
||||
restrict: 'ECA',
|
||||
terminal: true,
|
||||
priority: NG_VIEW_PRIORITY,
|
||||
compile: function(element, attr) {
|
||||
var onloadExp = attr.onload || '';
|
||||
|
||||
element.html('');
|
||||
var anchor = jqLite(document.createComment(' ngView '));
|
||||
element.replaceWith(anchor);
|
||||
|
||||
return function(scope) {
|
||||
var currentScope, currentElement;
|
||||
priority: 1000,
|
||||
transclude: 'element',
|
||||
compile: function(element, attr, linker) {
|
||||
return function(scope, $element, attr) {
|
||||
var currentScope,
|
||||
currentElement,
|
||||
onloadExp = attr.onload || '';
|
||||
|
||||
scope.$on('$routeChangeSuccess', update);
|
||||
update();
|
||||
|
@ -816,35 +828,36 @@ var ngViewDirective = ['$route', '$anchorScroll', '$compile', '$controller', '$a
|
|||
template = locals && locals.$template;
|
||||
|
||||
if (template) {
|
||||
var newScope = scope.$new();
|
||||
linker(newScope, function(clone) {
|
||||
cleanupLastView();
|
||||
|
||||
currentScope = scope.$new();
|
||||
currentElement = element.clone();
|
||||
currentElement.html(template);
|
||||
$animate.enter(currentElement, null, anchor);
|
||||
clone.html(template);
|
||||
$animate.enter(clone, null, $element);
|
||||
|
||||
var link = $compile(currentElement, false, NG_VIEW_PRIORITY - 1),
|
||||
var link = $compile(clone.contents()),
|
||||
current = $route.current;
|
||||
|
||||
currentScope = current.scope = newScope;
|
||||
currentElement = clone;
|
||||
|
||||
if (current.controller) {
|
||||
locals.$scope = currentScope;
|
||||
var controller = $controller(current.controller, locals);
|
||||
if (current.controllerAs) {
|
||||
currentScope[current.controllerAs] = controller;
|
||||
}
|
||||
currentElement.data('$ngControllerController', controller);
|
||||
currentElement.children().data('$ngControllerController', controller);
|
||||
clone.data('$ngControllerController', controller);
|
||||
clone.contents().data('$ngControllerController', controller);
|
||||
}
|
||||
|
||||
current.scope = currentScope;
|
||||
|
||||
link(currentScope);
|
||||
|
||||
currentScope.$emit('$viewContentLoaded');
|
||||
currentScope.$eval(onloadExp);
|
||||
|
||||
// $anchorScroll might listen on event...
|
||||
$anchorScroll();
|
||||
});
|
||||
} else {
|
||||
cleanupLastView();
|
||||
}
|
||||
|
@ -852,9 +865,7 @@ var ngViewDirective = ['$route', '$anchorScroll', '$compile', '$controller', '$a
|
|||
}
|
||||
}
|
||||
};
|
||||
}];
|
||||
|
||||
ngRouteModule.directive('ngView', ngViewDirective);
|
||||
}
|
||||
|
||||
|
||||
})(window, window.angular);
|
||||
|
|
16
lib/angular/angular-route.min.js
vendored
16
lib/angular/angular-route.min.js
vendored
|
@ -1,15 +1,15 @@
|
|||
/*
|
||||
AngularJS v1.2.0rc1
|
||||
AngularJS v1.2.0-rc.2
|
||||
(c) 2010-2012 Google, Inc. http://angularjs.org
|
||||
License: MIT
|
||||
*/
|
||||
(function(p,b,E){'use strict';function u(b,d){return l(new (l(function(){},{prototype:b})),d)}var v=b.copy,A=b.equals,l=b.extend,t=b.forEach,n=b.isDefined,w=b.isFunction,x=b.isString,B=b.element;p=b.module("ngRoute",["ng"]).provider("$route",function(){function b(c,q){var d=q.caseInsensitiveMatch,m={originalPath:c,regexp:c},l=m.keys=[];c=c.replace(/([().])/g,"\\$1").replace(/(\/)?:(\w+)([\?|\*])?/g,function(c,b,q,d){c="?"===d?d:null;d="*"===d?d:null;l.push({name:q,optional:!!c});b=b||"";return""+
|
||||
(c?"":b)+"(?:"+(c?b:"")+(d&&"(.+)?"||"([^/]+)?")+")"+(c||"")}).replace(/([\/$\*])/g,"\\$1");m.regexp=RegExp("^"+c+"$",d?"i":"");return m}var d={};this.when=function(c,q){d[c]=l({reloadOnSearch:!0},q,c&&b(c,q));if(c){var h="/"==c[c.length-1]?c.substr(0,c.length-1):c+"/";d[h]=l({redirectTo:c},b(h,q))}return this};this.otherwise=function(c){this.when(null,c);return this};this.$get=["$rootScope","$location","$routeParams","$q","$injector","$http","$templateCache","$sce",function(c,b,h,m,y,p,C,D){function r(){var a=
|
||||
s(),e=k.current;if(a&&e&&a.$$route===e.$$route&&A(a.pathParams,e.pathParams)&&!a.reloadOnSearch&&!f)e.params=a.params,v(e.params,h),c.$broadcast("$routeUpdate",e);else if(a||e)f=!1,c.$broadcast("$routeChangeStart",a,e),(k.current=a)&&a.redirectTo&&(x(a.redirectTo)?b.path(g(a.redirectTo,a.params)).search(a.params).replace():b.url(a.redirectTo(a.pathParams,b.path(),b.search())).replace()),m.when(a).then(function(){if(a){var c=l({},a.resolve),b,e;t(c,function(a,b){c[b]=x(a)?y.get(a):y.invoke(a)});n(b=
|
||||
a.template)?w(b)&&(b=b(a.params)):n(e=a.templateUrl)&&(w(e)&&(e=e(a.params)),e=D.getTrustedResourceUrl(e),n(e)&&(a.loadedTemplateUrl=e,b=p.get(e,{cache:C}).then(function(a){return a.data})));n(b)&&(c.$template=b);return m.all(c)}}).then(function(b){a==k.current&&(a&&(a.locals=b,v(a.params,h)),c.$broadcast("$routeChangeSuccess",a,e))},function(b){a==k.current&&c.$broadcast("$routeChangeError",a,e,b)})}function s(){var a,c;t(d,function(d,k){var f;if(f=!c){var g=b.path();f=d.keys;var m={};if(d.regexp)if(g=
|
||||
d.regexp.exec(g)){for(var h=1,p=g.length;h<p;++h){var r=f[h-1],n="string"==typeof g[h]?decodeURIComponent(g[h]):g[h];r&&n&&(m[r.name]=n)}f=m}else f=null;else f=null;f=a=f}f&&(c=u(d,{params:l({},b.search(),a),pathParams:a}),c.$$route=d)});return c||d[null]&&u(d[null],{params:{},pathParams:{}})}function g(a,c){var b=[];t((a||"").split(":"),function(a,d){if(0==d)b.push(a);else{var f=a.match(/(\w+)(.*)/),g=f[1];b.push(c[g]);b.push(f[2]||"");delete c[g]}});return b.join("")}var f=!1,k={routes:d,reload:function(){f=
|
||||
!0;c.$evalAsync(r)}};c.$on("$locationChangeSuccess",r);return k}]});p.provider("$routeParams",function(){this.$get=function(){return{}}});var z=500;p.directive("ngView",["$route","$anchorScroll","$compile","$controller","$animate",function(b,d,c,q,h){return{restrict:"ECA",terminal:!0,priority:z,compile:function(m,l){var p=l.onload||"";m.html("");var n=B(document.createComment(" ngView "));m.replaceWith(n);return function(l){function r(){g&&(g.$destroy(),g=null);f&&(h.leave(f),f=null)}function s(){var k=
|
||||
b.current&&b.current.locals,a=k&&k.$template;if(a){r();g=l.$new();f=m.clone();f.html(a);h.enter(f,null,n);var a=c(f,!1,z-1),e=b.current;e.controller&&(k.$scope=g,k=q(e.controller,k),e.controllerAs&&(g[e.controllerAs]=k),f.data("$ngControllerController",k),f.children().data("$ngControllerController",k));e.scope=g;a(g);g.$emit("$viewContentLoaded");g.$eval(p);d()}else r()}var g,f;l.$on("$routeChangeSuccess",s);s()}}}}])})(window,window.angular);
|
||||
(function(q,c,I){'use strict';function x(c,f){return m(new (m(function(){},{prototype:c})),f)}function t(c,f,a,p,n){return{restrict:"ECA",terminal:!0,priority:1E3,transclude:"element",compile:function(g,m,D){return function(u,m,e){function g(){k&&(k.$destroy(),k=null);l&&(n.leave(l),l=null)}function s(){var h=c.current&&c.current.locals,y=h&&h.$template;if(y){var z=u.$new();D(z,function(d){g();d.html(y);n.enter(d,null,m);var G=a(d.contents()),r=c.current;k=r.scope=z;l=d;if(r.controller){h.$scope=
|
||||
k;var e=p(r.controller,h);r.controllerAs&&(k[r.controllerAs]=e);d.data("$ngControllerController",e);d.contents().data("$ngControllerController",e)}G(k);k.$emit("$viewContentLoaded");k.$eval(b);f()})}else g()}var k,l,b=e.onload||"";u.$on("$routeChangeSuccess",s);s()}}}}var A=c.copy,H=c.equals,m=c.extend,w=c.forEach,v=c.isDefined,B=c.isFunction,C=c.isString;q=c.module("ngRoute",["ng"]).provider("$route",function(){function c(a,p){var f=p.caseInsensitiveMatch,g={originalPath:a,regexp:a},m=g.keys=[];
|
||||
a=a.replace(/([().])/g,"\\$1").replace(/(\/)?:(\w+)([\?|\*])?/g,function(a,c,p,e){a="?"===e?e:null;e="*"===e?e:null;m.push({name:p,optional:!!a});c=c||"";return""+(a?"":c)+"(?:"+(a?c:"")+(e&&"(.+)?"||"([^/]+)?")+")"+(a||"")}).replace(/([\/$\*])/g,"\\$1");g.regexp=RegExp("^"+a+"$",f?"i":"");return g}var f={};this.when=function(a,p){f[a]=m({reloadOnSearch:!0},p,a&&c(a,p));if(a){var n="/"==a[a.length-1]?a.substr(0,a.length-1):a+"/";f[n]=m({redirectTo:a},c(n,p))}return this};this.otherwise=function(a){this.when(null,
|
||||
a);return this};this.$get=["$rootScope","$location","$routeParams","$q","$injector","$http","$templateCache","$sce",function(a,c,n,g,s,q,u,t){function e(){var b=E(),h=l.current;if(b&&h&&b.$$route===h.$$route&&H(b.pathParams,h.pathParams)&&!b.reloadOnSearch&&!k)h.params=b.params,A(h.params,n),a.$broadcast("$routeUpdate",h);else if(b||h)k=!1,a.$broadcast("$routeChangeStart",b,h),(l.current=b)&&b.redirectTo&&(C(b.redirectTo)?c.path(F(b.redirectTo,b.params)).search(b.params).replace():c.url(b.redirectTo(b.pathParams,
|
||||
c.path(),c.search())).replace()),g.when(b).then(function(){if(b){var a=m({},b.resolve),c,d;w(a,function(b,c){a[c]=C(b)?s.get(b):s.invoke(b)});v(c=b.template)?B(c)&&(c=c(b.params)):v(d=b.templateUrl)&&(B(d)&&(d=d(b.params)),d=t.getTrustedResourceUrl(d),v(d)&&(b.loadedTemplateUrl=d,c=q.get(d,{cache:u}).then(function(b){return b.data})));v(c)&&(a.$template=c);return g.all(a)}}).then(function(c){b==l.current&&(b&&(b.locals=c,A(b.params,n)),a.$broadcast("$routeChangeSuccess",b,h))},function(c){b==l.current&&
|
||||
a.$broadcast("$routeChangeError",b,h,c)})}function E(){var b,a;w(f,function(e,k){var d;if(d=!a){var f=c.path();d=e.keys;var r={};if(e.regexp)if(f=e.regexp.exec(f)){for(var g=1,l=f.length;g<l;++g){var n=d[g-1],q="string"==typeof f[g]?decodeURIComponent(f[g]):f[g];n&&q&&(r[n.name]=q)}d=r}else d=null;else d=null;d=b=d}d&&(a=x(e,{params:m({},c.search(),b),pathParams:b}),a.$$route=e)});return a||f[null]&&x(f[null],{params:{},pathParams:{}})}function F(b,c){var a=[];w((b||"").split(":"),function(b,d){if(0===
|
||||
d)a.push(b);else{var e=b.match(/(\w+)(.*)/),f=e[1];a.push(c[f]);a.push(e[2]||"");delete c[f]}});return a.join("")}var k=!1,l={routes:f,reload:function(){k=!0;a.$evalAsync(e)}};a.$on("$locationChangeSuccess",e);return l}]});q.provider("$routeParams",function(){this.$get=function(){return{}}});q.directive("ngView",t);t.$inject=["$route","$anchorScroll","$compile","$controller","$animate"]})(window,window.angular);
|
||||
/*
|
||||
//@ sourceMappingURL=angular-route.min.js.map
|
||||
*/
|
||||
|
|
File diff suppressed because one or more lines are too long
23
lib/angular/angular-sanitize.js
vendored
23
lib/angular/angular-sanitize.js
vendored
|
@ -1,5 +1,5 @@
|
|||
/**
|
||||
* @license AngularJS v1.2.0rc1
|
||||
* @license AngularJS v1.2.0-rc.2
|
||||
* (c) 2010-2012 Google, Inc. http://angularjs.org
|
||||
* License: MIT
|
||||
*/
|
||||
|
@ -12,24 +12,13 @@ var $sanitizeMinErr = angular.$$minErr('$sanitize');
|
|||
* @name ngSanitize
|
||||
* @description
|
||||
*
|
||||
* # ngSanitize
|
||||
*
|
||||
* The `ngSanitize` module provides functionality to sanitize HTML.
|
||||
*
|
||||
* # Installation
|
||||
* As a separate module, it must be loaded after Angular core is loaded; otherwise, an 'Uncaught Error:
|
||||
* No module: ngSanitize' runtime error will occur.
|
||||
* {@installModule sanitize}
|
||||
*
|
||||
* <pre>
|
||||
* <script src="angular.js"></script>
|
||||
* <script src="angular-sanitize.js"></script>
|
||||
* </pre>
|
||||
*
|
||||
* # Usage
|
||||
* To make sure the module is available to your application, declare it as a dependency of you application
|
||||
* module.
|
||||
*
|
||||
* <pre>
|
||||
* angular.module('app', ['ngSanitize']);
|
||||
* </pre>
|
||||
* See {@link ngSanitize.$sanitize `$sanitize`} for usage.
|
||||
*/
|
||||
|
||||
/*
|
||||
|
@ -432,6 +421,8 @@ angular.module('ngSanitize', []).value('$sanitize', $sanitize);
|
|||
* Finds links in text input and turns them into html links. Supports http/https/ftp/mailto and
|
||||
* plain email address links.
|
||||
*
|
||||
* Requires the {@link ngSanitize `ngSanitize`} module to be installed.
|
||||
*
|
||||
* @param {string} text Input text.
|
||||
* @param {string} target Window (_blank|_self|_parent|_top) or named frame to open links in.
|
||||
* @returns {string} Html-linkified text.
|
||||
|
|
2
lib/angular/angular-sanitize.min.js
vendored
2
lib/angular/angular-sanitize.min.js
vendored
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
AngularJS v1.2.0rc1
|
||||
AngularJS v1.2.0-rc.2
|
||||
(c) 2010-2012 Google, Inc. http://angularjs.org
|
||||
License: MIT
|
||||
*/
|
||||
|
|
File diff suppressed because one or more lines are too long
282
lib/angular/angular-scenario.js
vendored
282
lib/angular/angular-scenario.js
vendored
|
@ -9472,7 +9472,7 @@ if ( typeof define === "function" && define.amd && define.amd.jQuery ) {
|
|||
})( window );
|
||||
|
||||
/**
|
||||
* @license AngularJS v1.2.0rc1
|
||||
* @license AngularJS v1.2.0-rc.2
|
||||
* (c) 2010-2012 Google, Inc. http://angularjs.org
|
||||
* License: MIT
|
||||
*/
|
||||
|
@ -9509,10 +9509,21 @@ if ( typeof define === "function" && define.amd && define.amd.jQuery ) {
|
|||
|
||||
function minErr(module) {
|
||||
return function () {
|
||||
var prefix = '[' + (module ? module + ':' : '') + arguments[0] + '] ',
|
||||
var code = arguments[0],
|
||||
prefix = '[' + (module ? module + ':' : '') + code + '] ',
|
||||
template = arguments[1],
|
||||
templateArgs = arguments,
|
||||
message;
|
||||
stringify = function (obj) {
|
||||
if (isFunction(obj)) {
|
||||
return obj.toString().replace(/ \{[\s\S]*$/, '');
|
||||
} else if (isUndefined(obj)) {
|
||||
return 'undefined';
|
||||
} else if (!isString(obj)) {
|
||||
return JSON.stringify(obj);
|
||||
}
|
||||
return obj;
|
||||
},
|
||||
message, i;
|
||||
|
||||
message = prefix + template.replace(/\{\d+\}/g, function (match) {
|
||||
var index = +match.slice(1, -1), arg;
|
||||
|
@ -9531,6 +9542,13 @@ function minErr(module) {
|
|||
return match;
|
||||
});
|
||||
|
||||
message = message + '\nhttp://errors.angularjs.org/' + version.full + '/' +
|
||||
(module ? module + '/' : '') + code;
|
||||
for (i = 2; i < arguments.length; i++) {
|
||||
message = message + (i == 2 ? '?' : '&') + 'p' + (i-2) + '=' +
|
||||
encodeURIComponent(stringify(arguments[i]));
|
||||
}
|
||||
|
||||
return new Error(message);
|
||||
};
|
||||
}
|
||||
|
@ -9593,7 +9611,7 @@ if ('i' !== 'I'.toLowerCase()) {
|
|||
|
||||
|
||||
var /** holds major version number for IE or NaN for real browsers */
|
||||
msie = int((/msie (\d+)/.exec(lowercase(navigator.userAgent)) || [])[1]),
|
||||
msie,
|
||||
jqLite, // delay binding since jQuery could be loaded after us.
|
||||
jQuery, // delay binding
|
||||
slice = [].slice,
|
||||
|
@ -9609,6 +9627,16 @@ var /** holds major version number for IE or NaN for real browsers */
|
|||
nodeName_,
|
||||
uid = ['0', '0', '0'];
|
||||
|
||||
/**
|
||||
* IE 11 changed the format of the UserAgent string.
|
||||
* See http://msdn.microsoft.com/en-us/library/ms537503.aspx
|
||||
*/
|
||||
msie = int((/msie (\d+)/.exec(lowercase(navigator.userAgent)) || [])[1]);
|
||||
if (isNaN(msie)) {
|
||||
msie = int((/trident\/.*; rv:(\d+)/.exec(lowercase(navigator.userAgent)) || [])[1]);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @private
|
||||
* @param {*} obj
|
||||
|
@ -10723,10 +10751,13 @@ function setupModuleLoader(window) {
|
|||
* @name angular.module
|
||||
* @description
|
||||
*
|
||||
* The `angular.module` is a global place for creating and registering Angular modules. All
|
||||
* modules (angular core or 3rd party) that should be available to an application must be
|
||||
* The `angular.module` is a global place for creating, registering and retrieving Angular modules.
|
||||
* All modules (angular core or 3rd party) that should be available to an application must be
|
||||
* registered using this mechanism.
|
||||
*
|
||||
* When passed two or more arguments, a new module is created. If passed only one argument, an
|
||||
* existing module (the name passed as the first argument to `module`) is retrieved.
|
||||
*
|
||||
*
|
||||
* # Module
|
||||
*
|
||||
|
@ -10997,11 +11028,11 @@ function setupModuleLoader(window) {
|
|||
* - `codeName` – `{string}` – Code name of the release, such as "jiggling-armfat".
|
||||
*/
|
||||
var version = {
|
||||
full: '1.2.0rc1', // all of these placeholder strings will be replaced by grunt's
|
||||
full: '1.2.0-rc.2', // all of these placeholder strings will be replaced by grunt's
|
||||
major: 1, // package task
|
||||
minor: 2,
|
||||
dot: 0,
|
||||
codeName: 'spooky-giraffe'
|
||||
codeName: 'barehand-atomsplitting'
|
||||
};
|
||||
|
||||
|
||||
|
@ -12064,6 +12095,7 @@ function annotate(fn) {
|
|||
if (typeof fn == 'function') {
|
||||
if (!($inject = fn.$inject)) {
|
||||
$inject = [];
|
||||
if (fn.length) {
|
||||
fnText = fn.toString().replace(STRIP_COMMENTS, '');
|
||||
argDecl = fnText.match(FN_ARGS);
|
||||
forEach(argDecl[1].split(FN_ARG_SPLIT), function(arg){
|
||||
|
@ -12071,6 +12103,7 @@ function annotate(fn) {
|
|||
$inject.push(name);
|
||||
});
|
||||
});
|
||||
}
|
||||
fn.$inject = $inject;
|
||||
}
|
||||
} else if (isArray(fn)) {
|
||||
|
@ -12794,7 +12827,7 @@ var $AnimateProvider = ['$provide', function($provide) {
|
|||
forEach(element, function(node) {
|
||||
parentNode.insertBefore(node, afterNextSibling);
|
||||
});
|
||||
$timeout(done || noop, 0, false);
|
||||
done && $timeout(done, 0, false);
|
||||
},
|
||||
|
||||
/**
|
||||
|
@ -12811,7 +12844,7 @@ var $AnimateProvider = ['$provide', function($provide) {
|
|||
*/
|
||||
leave : function(element, done) {
|
||||
element.remove();
|
||||
$timeout(done || noop, 0, false);
|
||||
done && $timeout(done, 0, false);
|
||||
},
|
||||
|
||||
/**
|
||||
|
@ -12853,7 +12886,7 @@ var $AnimateProvider = ['$provide', function($provide) {
|
|||
className :
|
||||
isArray(className) ? className.join(' ') : '';
|
||||
element.addClass(className);
|
||||
$timeout(done || noop, 0, false);
|
||||
done && $timeout(done, 0, false);
|
||||
},
|
||||
|
||||
/**
|
||||
|
@ -12874,7 +12907,7 @@ var $AnimateProvider = ['$provide', function($provide) {
|
|||
className :
|
||||
isArray(className) ? className.join(' ') : '';
|
||||
element.removeClass(className);
|
||||
$timeout(done || noop, 0, false);
|
||||
done && $timeout(done, 0, false);
|
||||
},
|
||||
|
||||
enabled : noop
|
||||
|
@ -15173,7 +15206,7 @@ function $HttpProvider() {
|
|||
// strip json vulnerability protection prefix
|
||||
data = data.replace(PROTECTION_PREFIX, '');
|
||||
if (JSON_START.test(data) && JSON_END.test(data))
|
||||
data = fromJson(data, true);
|
||||
data = fromJson(data);
|
||||
}
|
||||
return data;
|
||||
}],
|
||||
|
@ -15489,6 +15522,7 @@ function $HttpProvider() {
|
|||
* return function(promise) {
|
||||
* return promise.then(function(response) {
|
||||
* // do something on success
|
||||
* return response;
|
||||
* }, function(response) {
|
||||
* // do something on error
|
||||
* if (canRecover(response)) {
|
||||
|
@ -15968,7 +16002,7 @@ function $HttpProvider() {
|
|||
|
||||
if (cache) {
|
||||
cachedResp = cache.get(url);
|
||||
if (cachedResp) {
|
||||
if (isDefined(cachedResp)) {
|
||||
if (cachedResp.then) {
|
||||
// cached request has already been sent, but there is no response yet
|
||||
cachedResp.then(removePendingReq, removePendingReq);
|
||||
|
@ -15988,7 +16022,7 @@ function $HttpProvider() {
|
|||
}
|
||||
|
||||
// if we won't have the response in cache, send the request to the backend
|
||||
if (!cachedResp) {
|
||||
if (isUndefined(cachedResp)) {
|
||||
$httpBackend(config.method, url, reqData, done, reqHeaders, config.timeout,
|
||||
config.withCredentials, config.responseType);
|
||||
}
|
||||
|
@ -16240,21 +16274,30 @@ var $interpolateMinErr = minErr('$interpolate');
|
|||
* Used for configuring the interpolation markup. Defaults to `{{` and `}}`.
|
||||
*
|
||||
* @example
|
||||
<doc:example>
|
||||
<doc:example module="customInterpolationApp">
|
||||
<doc:source>
|
||||
<script>
|
||||
var myApp = angular.module('App', [], function($interpolateProvider) {
|
||||
var customInterpolationApp = angular.module('customInterpolationApp', []);
|
||||
|
||||
customInterpolationApp.config(function($interpolateProvider) {
|
||||
$interpolateProvider.startSymbol('//');
|
||||
$interpolateProvider.endSymbol('//');
|
||||
});
|
||||
function Controller($scope) {
|
||||
$scope.label = "Interpolation Provider Sample";
|
||||
}
|
||||
|
||||
|
||||
customInterpolationApp.controller('DemoController', function DemoController() {
|
||||
this.label = "This bindings is brought you you by // interpolation symbols.";
|
||||
});
|
||||
</script>
|
||||
<div ng-app="App" ng-controller="Controller">
|
||||
//label//
|
||||
<div ng-app="App" ng-controller="DemoController as demo">
|
||||
//demo.label//
|
||||
</div>
|
||||
</doc:source>
|
||||
<doc:scenario>
|
||||
it('should interpolate binding with custom symbols', function() {
|
||||
expect(binding('demo.label')).toBe('This bindings is brought you you by // interpolation symbols.');
|
||||
});
|
||||
</doc:scenario>
|
||||
</doc:example>
|
||||
*/
|
||||
function $InterpolateProvider() {
|
||||
|
@ -17318,7 +17361,6 @@ var $parseMinErr = minErr('$parse');
|
|||
// access to any member named "constructor".
|
||||
//
|
||||
// For reflective calls (a[b]) we check that the value of the lookup is not the Function constructor while evaluating
|
||||
// For reflective calls (a[b]) we check that the value of the lookup is not the Function constructor while evaluating
|
||||
// the expression, which is a stronger but more expensive test. Since reflective calls are expensive anyway, this is not
|
||||
// such a big deal compared to static dereferencing.
|
||||
//
|
||||
|
@ -17992,9 +18034,21 @@ function parser(text, json, $filter, csp){
|
|||
}
|
||||
var fnPtr = fn(scope, locals, context) || noop;
|
||||
// IE stupidity!
|
||||
return fnPtr.apply
|
||||
var v = fnPtr.apply
|
||||
? fnPtr.apply(context, args)
|
||||
: fnPtr(args[0], args[1], args[2], args[3], args[4]);
|
||||
|
||||
// Check for promise
|
||||
if (v && v.then) {
|
||||
var p = v;
|
||||
if (!('$$v' in v)) {
|
||||
p.$$v = undefined;
|
||||
p.then(function(val) { p.$$v = val; });
|
||||
}
|
||||
v = v.$$v;
|
||||
}
|
||||
|
||||
return v;
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -18298,6 +18352,8 @@ function $ParseProvider() {
|
|||
* // since this fn executes async in a future turn of the event loop, we need to wrap
|
||||
* // our code into an $apply call so that the model changes are properly observed.
|
||||
* scope.$apply(function() {
|
||||
* deferred.notify('About to greet ' + name + '.');
|
||||
*
|
||||
* if (okToGreet(name)) {
|
||||
* deferred.resolve('Hello, ' + name + '!');
|
||||
* } else {
|
||||
|
@ -18314,6 +18370,8 @@ function $ParseProvider() {
|
|||
* alert('Success: ' + greeting);
|
||||
* }, function(reason) {
|
||||
* alert('Failed: ' + reason);
|
||||
* }, function(update) {
|
||||
* alert('Got notification: ' + update);
|
||||
* });
|
||||
* </pre>
|
||||
*
|
||||
|
@ -18332,7 +18390,8 @@ function $ParseProvider() {
|
|||
* A new instance of deferred is constructed by calling `$q.defer()`.
|
||||
*
|
||||
* The purpose of the deferred object is to expose the associated Promise instance as well as APIs
|
||||
* that can be used for signaling the successful or unsuccessful completion of the task.
|
||||
* that can be used for signaling the successful or unsuccessful completion, as well as the status
|
||||
* of the task.
|
||||
*
|
||||
* **Methods**
|
||||
*
|
||||
|
@ -18340,6 +18399,8 @@ function $ParseProvider() {
|
|||
* constructed via `$q.reject`, the promise will be rejected instead.
|
||||
* - `reject(reason)` – rejects the derived promise with the `reason`. This is equivalent to
|
||||
* resolving it with a rejection constructed via `$q.reject`.
|
||||
* - `notify(value)` - provides updates on the status of the promises execution. This may be called
|
||||
* multiple times before the promise is either resolved or rejected.
|
||||
*
|
||||
* **Properties**
|
||||
*
|
||||
|
@ -18356,12 +18417,15 @@ function $ParseProvider() {
|
|||
*
|
||||
* **Methods**
|
||||
*
|
||||
* - `then(successCallback, errorCallback)` – regardless of when the promise was or will be resolved
|
||||
* or rejected, `then` calls one of the success or error callbacks asynchronously as soon as the result
|
||||
* is available. The callbacks are called with a single argument: the result or rejection reason.
|
||||
* - `then(successCallback, errorCallback, notifyCallback)` – regardless of when the promise was or
|
||||
* will be resolved or rejected, `then` calls one of the success or error callbacks asynchronously
|
||||
* as soon as the result is available. The callbacks are called with a single argument: the result
|
||||
* or rejection reason. Additionally, the notify callback may be called zero or more times to
|
||||
* provide a progress indication, before the promise is resolved or rejected.
|
||||
*
|
||||
* This method *returns a new promise* which is resolved or rejected via the return value of the
|
||||
* `successCallback` or `errorCallback`.
|
||||
* `successCallback`, `errorCallback`. It also notifies via the return value of the `notifyCallback`
|
||||
* method. The promise can not be resolved or rejected from the notifyCallback method.
|
||||
*
|
||||
* - `catch(errorCallback)` – shorthand for `promise.then(null, errorCallback)`
|
||||
*
|
||||
|
@ -18513,7 +18577,7 @@ function qFactory(nextTick, exceptionHandler) {
|
|||
|
||||
var wrappedCallback = function(value) {
|
||||
try {
|
||||
result.resolve((callback || defaultCallback)(value));
|
||||
result.resolve((isFunction(callback) ? callback : defaultCallback)(value));
|
||||
} catch(e) {
|
||||
result.reject(e);
|
||||
exceptionHandler(e);
|
||||
|
@ -18522,7 +18586,7 @@ function qFactory(nextTick, exceptionHandler) {
|
|||
|
||||
var wrappedErrback = function(reason) {
|
||||
try {
|
||||
result.resolve((errback || defaultErrback)(reason));
|
||||
result.resolve((isFunction(errback) ? errback : defaultErrback)(reason));
|
||||
} catch(e) {
|
||||
result.reject(e);
|
||||
exceptionHandler(e);
|
||||
|
@ -18531,7 +18595,7 @@ function qFactory(nextTick, exceptionHandler) {
|
|||
|
||||
var wrappedProgressback = function(progress) {
|
||||
try {
|
||||
result.notify((progressback || defaultCallback)(progress));
|
||||
result.notify((isFunction(progressback) ? progressback : defaultCallback)(progress));
|
||||
} catch(e) {
|
||||
exceptionHandler(e);
|
||||
}
|
||||
|
@ -18569,7 +18633,7 @@ function qFactory(nextTick, exceptionHandler) {
|
|||
} catch(e) {
|
||||
return makePromise(e, false);
|
||||
}
|
||||
if (callbackOutput && callbackOutput.then) {
|
||||
if (callbackOutput && isFunction(callbackOutput.then)) {
|
||||
return callbackOutput.then(function() {
|
||||
return makePromise(value, isResolved);
|
||||
}, function(error) {
|
||||
|
@ -18594,7 +18658,7 @@ function qFactory(nextTick, exceptionHandler) {
|
|||
|
||||
|
||||
var ref = function(value) {
|
||||
if (value && value.then) return value;
|
||||
if (value && isFunction(value.then)) return value;
|
||||
return {
|
||||
then: function(callback) {
|
||||
var result = defer();
|
||||
|
@ -18647,7 +18711,12 @@ function qFactory(nextTick, exceptionHandler) {
|
|||
then: function(callback, errback) {
|
||||
var result = defer();
|
||||
nextTick(function() {
|
||||
result.resolve((errback || defaultErrback)(reason));
|
||||
try {
|
||||
result.resolve((isFunction(errback) ? errback : defaultErrback)(reason));
|
||||
} catch(e) {
|
||||
result.reject(e);
|
||||
exceptionHandler(e);
|
||||
}
|
||||
});
|
||||
return result.promise;
|
||||
}
|
||||
|
@ -18673,7 +18742,7 @@ function qFactory(nextTick, exceptionHandler) {
|
|||
|
||||
var wrappedCallback = function(value) {
|
||||
try {
|
||||
return (callback || defaultCallback)(value);
|
||||
return (isFunction(callback) ? callback : defaultCallback)(value);
|
||||
} catch (e) {
|
||||
exceptionHandler(e);
|
||||
return reject(e);
|
||||
|
@ -18682,7 +18751,7 @@ function qFactory(nextTick, exceptionHandler) {
|
|||
|
||||
var wrappedErrback = function(reason) {
|
||||
try {
|
||||
return (errback || defaultErrback)(reason);
|
||||
return (isFunction(errback) ? errback : defaultErrback)(reason);
|
||||
} catch (e) {
|
||||
exceptionHandler(e);
|
||||
return reject(e);
|
||||
|
@ -18691,7 +18760,7 @@ function qFactory(nextTick, exceptionHandler) {
|
|||
|
||||
var wrappedProgressback = function(progress) {
|
||||
try {
|
||||
return (progressback || defaultCallback)(progress);
|
||||
return (isFunction(progressback) ? progressback : defaultCallback)(progress);
|
||||
} catch (e) {
|
||||
exceptionHandler(e);
|
||||
}
|
||||
|
@ -18841,8 +18910,8 @@ function $RootScopeProvider(){
|
|||
return TTL;
|
||||
};
|
||||
|
||||
this.$get = ['$injector', '$exceptionHandler', '$parse',
|
||||
function( $injector, $exceptionHandler, $parse) {
|
||||
this.$get = ['$injector', '$exceptionHandler', '$parse', '$browser',
|
||||
function( $injector, $exceptionHandler, $parse, $browser) {
|
||||
|
||||
/**
|
||||
* @ngdoc function
|
||||
|
@ -18891,6 +18960,7 @@ function $RootScopeProvider(){
|
|||
this['this'] = this.$root = this;
|
||||
this.$$destroyed = false;
|
||||
this.$$asyncQueue = [];
|
||||
this.$$postDigestQueue = [];
|
||||
this.$$listeners = {};
|
||||
this.$$isolateBindings = {};
|
||||
}
|
||||
|
@ -18905,6 +18975,7 @@ function $RootScopeProvider(){
|
|||
|
||||
|
||||
Scope.prototype = {
|
||||
constructor: Scope,
|
||||
/**
|
||||
* @ngdoc function
|
||||
* @name ng.$rootScope.Scope#$new
|
||||
|
@ -18939,6 +19010,7 @@ function $RootScopeProvider(){
|
|||
child.$root = this.$root;
|
||||
// ensure that there is just one async queue per $rootScope and it's children
|
||||
child.$$asyncQueue = this.$$asyncQueue;
|
||||
child.$$postDigestQueue = this.$$postDigestQueue;
|
||||
} else {
|
||||
Child = function() {}; // should be anonymous; This is so that when the minifier munges
|
||||
// the name it does not become random set of chars. These will then show up as class
|
||||
|
@ -19266,6 +19338,7 @@ function $RootScopeProvider(){
|
|||
var watch, value, last,
|
||||
watchers,
|
||||
asyncQueue = this.$$asyncQueue,
|
||||
postDigestQueue = this.$$postDigestQueue,
|
||||
length,
|
||||
dirty, ttl = TTL,
|
||||
next, current, target = this,
|
||||
|
@ -19338,6 +19411,14 @@ function $RootScopeProvider(){
|
|||
} while (dirty || asyncQueue.length);
|
||||
|
||||
clearPhase();
|
||||
|
||||
while(postDigestQueue.length) {
|
||||
try {
|
||||
postDigestQueue.shift()();
|
||||
} catch (e) {
|
||||
$exceptionHandler(e);
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
|
@ -19438,13 +19519,16 @@ function $RootScopeProvider(){
|
|||
*
|
||||
* The `$evalAsync` makes no guarantees as to when the `expression` will be executed, only that:
|
||||
*
|
||||
* - it will execute in the current script execution context (before any DOM rendering).
|
||||
* - at least one {@link ng.$rootScope.Scope#$digest $digest cycle} will be performed after
|
||||
* `expression` execution.
|
||||
* - it will execute after the function that schedule the evaluation is done running (preferably before DOM rendering).
|
||||
* - at least one {@link ng.$rootScope.Scope#$digest $digest cycle} will be performed after `expression` execution.
|
||||
*
|
||||
* Any exceptions from the execution of the expression are forwarded to the
|
||||
* {@link ng.$exceptionHandler $exceptionHandler} service.
|
||||
*
|
||||
* __Note:__ if this function is called outside of `$digest` cycle, a new $digest cycle will be scheduled.
|
||||
* It is however encouraged to always call code that changes the model from withing an `$apply` call.
|
||||
* That includes code evaluated via `$evalAsync`.
|
||||
*
|
||||
* @param {(string|function())=} expression An angular expression to be executed.
|
||||
*
|
||||
* - `string`: execute using the rules as defined in {@link guide/expression expression}.
|
||||
|
@ -19452,9 +19536,23 @@ function $RootScopeProvider(){
|
|||
*
|
||||
*/
|
||||
$evalAsync: function(expr) {
|
||||
// if we are outside of an $digest loop and this is the first time we are scheduling async task also schedule
|
||||
// async auto-flush
|
||||
if (!$rootScope.$$phase && !$rootScope.$$asyncQueue.length) {
|
||||
$browser.defer(function() {
|
||||
if ($rootScope.$$asyncQueue.length) {
|
||||
$rootScope.$digest();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
this.$$asyncQueue.push(expr);
|
||||
},
|
||||
|
||||
$$postDigest : function(expr) {
|
||||
this.$$postDigestQueue.push(expr);
|
||||
},
|
||||
|
||||
/**
|
||||
* @ngdoc function
|
||||
* @name ng.$rootScope.Scope#$apply
|
||||
|
@ -20123,7 +20221,7 @@ function $SceDelegateProvider() {
|
|||
* {@link ng.$sce#getTrusted $sce.getTrusted} behind the scenes on non-constant literals.
|
||||
*
|
||||
* As an example, {@link ng.directive:ngBindHtml ngBindHtml} uses {@link
|
||||
* ng.$sce#parseHtml $sce.parseAsHtml(binding expression)}. Here's the actual code (slightly
|
||||
* ng.$sce#parseAsHtml $sce.parseAsHtml(binding expression)}. Here's the actual code (slightly
|
||||
* simplified):
|
||||
*
|
||||
* <pre class="prettyprint">
|
||||
|
@ -20181,7 +20279,7 @@ function $SceDelegateProvider() {
|
|||
* ## What trusted context types are supported?<a name="contexts"></a>
|
||||
*
|
||||
* | Context | Notes |
|
||||
* |=====================|================|
|
||||
* |---------------------|----------------|
|
||||
* | `$sce.HTML` | For HTML that's safe to source into the application. The {@link ng.directive:ngBindHtml ngBindHtml} directive uses this context for bindings. |
|
||||
* | `$sce.CSS` | For CSS that's safe to source into the application. Currently unused. Feel free to use it in your own directives. |
|
||||
* | `$sce.URL` | For URLs that are safe to follow as links. Currently unused (`<a href=` and `<img src=` sanitize their urls and don't consititute an SCE context. |
|
||||
|
@ -20692,6 +20790,7 @@ function $SnifferProvider() {
|
|||
this.$get = ['$window', '$document', function($window, $document) {
|
||||
var eventSupport = {},
|
||||
android = int((/android (\d+)/.exec(lowercase(($window.navigator || {}).userAgent)) || [])[1]),
|
||||
boxee = /Boxee/i.test(($window.navigator || {}).userAgent),
|
||||
document = $document[0] || {},
|
||||
vendorPrefix,
|
||||
vendorRegex = /^(Moz|webkit|O|ms)(?=[A-Z])/,
|
||||
|
@ -20708,6 +20807,11 @@ function $SnifferProvider() {
|
|||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if(!vendorPrefix) {
|
||||
vendorPrefix = ('WebkitOpacity' in bodyStyle) && 'webkit';
|
||||
}
|
||||
|
||||
transitions = !!(('transition' in bodyStyle) || (vendorPrefix + 'Transition' in bodyStyle));
|
||||
animations = !!(('animation' in bodyStyle) || (vendorPrefix + 'Animation' in bodyStyle));
|
||||
|
||||
|
@ -20723,7 +20827,10 @@ function $SnifferProvider() {
|
|||
// so let's not use the history API at all.
|
||||
// http://code.google.com/p/android/issues/detail?id=17471
|
||||
// https://github.com/angular/angular.js/issues/904
|
||||
history: !!($window.history && $window.history.pushState && !(android < 4)),
|
||||
|
||||
// older webit browser (533.9) on Boxee box has exactly the same problem as Android has
|
||||
// so let's not use the history API also
|
||||
history: !!($window.history && $window.history.pushState && !(android < 4) && !boxee),
|
||||
hashchange: 'onhashchange' in $window &&
|
||||
// IE8 compatible mode lies
|
||||
(!document.documentMode || document.documentMode > 7),
|
||||
|
@ -20783,7 +20890,7 @@ function $TimeoutProvider() {
|
|||
var deferred = $q.defer(),
|
||||
promise = deferred.promise,
|
||||
skipApply = (isDefined(invokeApply) && !invokeApply),
|
||||
timeoutId, cleanup;
|
||||
timeoutId;
|
||||
|
||||
timeoutId = $browser.defer(function() {
|
||||
try {
|
||||
|
@ -20792,17 +20899,15 @@ function $TimeoutProvider() {
|
|||
deferred.reject(e);
|
||||
$exceptionHandler(e);
|
||||
}
|
||||
finally {
|
||||
delete deferreds[promise.$$timeoutId];
|
||||
}
|
||||
|
||||
if (!skipApply) $rootScope.$apply();
|
||||
}, delay);
|
||||
|
||||
cleanup = function() {
|
||||
delete deferreds[promise.$$timeoutId];
|
||||
};
|
||||
|
||||
promise.$$timeoutId = timeoutId;
|
||||
deferreds[timeoutId] = deferred;
|
||||
promise.then(cleanup, cleanup);
|
||||
|
||||
return promise;
|
||||
}
|
||||
|
@ -20824,6 +20929,7 @@ function $TimeoutProvider() {
|
|||
timeout.cancel = function(promise) {
|
||||
if (promise && promise.$$timeoutId in deferreds) {
|
||||
deferreds[promise.$$timeoutId].reject('canceled');
|
||||
delete deferreds[promise.$$timeoutId];
|
||||
return $browser.defer.cancel(promise.$$timeoutId);
|
||||
}
|
||||
return false;
|
||||
|
@ -20891,7 +20997,7 @@ function $$UrlUtilsProvider() {
|
|||
* Otherwise, returns an object with the following members.
|
||||
*
|
||||
* | member name | Description |
|
||||
* |===============|================|
|
||||
* |---------------|----------------|
|
||||
* | href | A normalized version of the provided URL if it was not an absolute URL |
|
||||
* | protocol | The protocol including the trailing colon |
|
||||
* | host | The host and port (if the port is non-default) of the normalizedUrl |
|
||||
|
@ -20899,7 +21005,7 @@ function $$UrlUtilsProvider() {
|
|||
* These fields from the UrlUtils interface are currently not needed and hence not returned.
|
||||
*
|
||||
* | member name | Description |
|
||||
* |===============|================|
|
||||
* |---------------|----------------|
|
||||
* | hostname | The host without the port of the normalizedUrl |
|
||||
* | pathname | The path following the host in the normalizedUrl |
|
||||
* | hash | The URL hash if present |
|
||||
|
@ -20908,7 +21014,7 @@ function $$UrlUtilsProvider() {
|
|||
*/
|
||||
function resolve(url, parse) {
|
||||
var href = url;
|
||||
if (msie) {
|
||||
if (msie <= 11) {
|
||||
// Normalize before parse. Refer Implementation Notes on why this is
|
||||
// done in two steps on IE.
|
||||
urlParsingNode.setAttribute("href", href);
|
||||
|
@ -21278,7 +21384,7 @@ function filterFilter() {
|
|||
})();
|
||||
} else {
|
||||
(function() {
|
||||
if (!expression[key]) return;
|
||||
if (typeof(expression[key]) == 'undefined') { return; }
|
||||
var path = key;
|
||||
predicates.push(function(value) {
|
||||
return search(getter(value,path), expression[path]);
|
||||
|
@ -22007,8 +22113,10 @@ function orderByFilter($parse){
|
|||
var t1 = typeof v1;
|
||||
var t2 = typeof v2;
|
||||
if (t1 == t2) {
|
||||
if (t1 == "string") v1 = v1.toLowerCase();
|
||||
if (t1 == "string") v2 = v2.toLowerCase();
|
||||
if (t1 == "string") {
|
||||
v1 = v1.toLowerCase();
|
||||
v2 = v2.toLowerCase();
|
||||
}
|
||||
if (v1 === v2) return 0;
|
||||
return v1 < v2 ? -1 : 1;
|
||||
} else {
|
||||
|
@ -24253,8 +24361,8 @@ var ngBindTemplateDirective = ['$interpolate', function($interpolate) {
|
|||
var ngBindHtmlDirective = ['$sce', function($sce) {
|
||||
return function(scope, element, attr) {
|
||||
element.addClass('ng-binding').data('$binding', attr.ngBindHtml);
|
||||
scope.$watch($sce.parseAsHtml(attr.ngBindHtml), function ngBindHtmlWatchAction(value) {
|
||||
element.html(value || '');
|
||||
scope.$watch(attr.ngBindHtml, function ngBindHtmlWatchAction(value) {
|
||||
element.html($sce.getTrustedHtml(value) || '');
|
||||
});
|
||||
};
|
||||
}];
|
||||
|
@ -24410,7 +24518,7 @@ function classDirective(name, selector) {
|
|||
|
||||
## Animations
|
||||
|
||||
Example that demostrates how addition and removal of classes can be animated.
|
||||
The example below demonstrates how to perform animations using ngClass.
|
||||
|
||||
<example animations="true">
|
||||
<file name="index.html">
|
||||
|
@ -24455,6 +24563,14 @@ function classDirective(name, selector) {
|
|||
});
|
||||
</file>
|
||||
</example>
|
||||
|
||||
|
||||
## ngClass and pre-existing CSS3 Transitions/Animations
|
||||
The ngClass directive still supports CSS3 Transitions/Animations even if they do not follow the ngAnimate CSS naming structure.
|
||||
Therefore, if any CSS3 Transition/Animation styles (outside of ngAnimate) are set on the element, then, if a ngClass animation
|
||||
is triggered, the ngClass animation will be skipped so that ngAnimate can allow for the pre-existing transition or animation to
|
||||
take over. This restriction allows for ngClass to still work with standard CSS3 Transitions/Animations that are defined
|
||||
outside of ngAnimate.
|
||||
*/
|
||||
var ngClassDirective = classDirective('', true);
|
||||
|
||||
|
@ -25373,23 +25489,18 @@ var ngIfDirective = ['$animate', function($animate) {
|
|||
* @description
|
||||
* Emitted every time the ngInclude content is reloaded.
|
||||
*/
|
||||
var NG_INCLUDE_PRIORITY = 500;
|
||||
var ngIncludeDirective = ['$http', '$templateCache', '$anchorScroll', '$compile', '$animate', '$sce',
|
||||
function($http, $templateCache, $anchorScroll, $compile, $animate, $sce) {
|
||||
return {
|
||||
restrict: 'ECA',
|
||||
terminal: true,
|
||||
priority: NG_INCLUDE_PRIORITY,
|
||||
compile: function(element, attr) {
|
||||
transclude: 'element',
|
||||
compile: function(element, attr, transclusion) {
|
||||
var srcExp = attr.ngInclude || attr.src,
|
||||
onloadExp = attr.onload || '',
|
||||
autoScrollExp = attr.autoscroll;
|
||||
|
||||
element.html('');
|
||||
var anchor = jqLite(document.createComment(' ngInclude: ' + srcExp + ' '));
|
||||
element.replaceWith(anchor);
|
||||
|
||||
return function(scope) {
|
||||
return function(scope, $element) {
|
||||
var changeCounter = 0,
|
||||
currentScope,
|
||||
currentElement;
|
||||
|
@ -25413,14 +25524,15 @@ var ngIncludeDirective = ['$http', '$templateCache', '$anchorScroll', '$compile'
|
|||
if (thisChangeId !== changeCounter) return;
|
||||
var newScope = scope.$new();
|
||||
|
||||
transclusion(newScope, function(clone) {
|
||||
cleanupLastIncludeContent();
|
||||
|
||||
currentScope = newScope;
|
||||
currentElement = element.clone();
|
||||
currentElement.html(response);
|
||||
$animate.enter(currentElement, null, anchor);
|
||||
currentElement = clone;
|
||||
|
||||
$compile(currentElement, false, NG_INCLUDE_PRIORITY - 1)(currentScope);
|
||||
currentElement.html(response);
|
||||
$animate.enter(currentElement, null, $element);
|
||||
$compile(currentElement.contents())(currentScope);
|
||||
|
||||
if (isDefined(autoScrollExp) && (!autoScrollExp || scope.$eval(autoScrollExp))) {
|
||||
$anchorScroll();
|
||||
|
@ -25428,6 +25540,7 @@ var ngIncludeDirective = ['$http', '$templateCache', '$anchorScroll', '$compile'
|
|||
|
||||
currentScope.$emit('$includeContentLoaded');
|
||||
scope.$eval(onloadExp);
|
||||
});
|
||||
}).error(function() {
|
||||
if (thisChangeId === changeCounter) cleanupLastIncludeContent();
|
||||
});
|
||||
|
@ -26650,7 +26763,9 @@ var ngSwitchDefaultDirective = ngDirective({
|
|||
* @name ng.directive:ngTransclude
|
||||
*
|
||||
* @description
|
||||
* Insert the transcluded DOM here.
|
||||
* Directive that marks the insertion point for the transcluded DOM of the nearest parent directive that uses transclusion.
|
||||
*
|
||||
* Any existing content of the element that this directive is placed on will be removed before the transcluded content is inserted.
|
||||
*
|
||||
* @element ANY
|
||||
*
|
||||
|
@ -26694,16 +26809,19 @@ var ngSwitchDefaultDirective = ngDirective({
|
|||
*
|
||||
*/
|
||||
var ngTranscludeDirective = ngDirective({
|
||||
controller: ['$transclude', '$element', '$scope', function($transclude, $element, $scope) {
|
||||
// use evalAsync so that we don't process transclusion before directives on the parent element even when the
|
||||
// transclusion replaces the current element. (we can't use priority here because that applies only to compile fns
|
||||
// and not controllers
|
||||
$scope.$evalAsync(function() {
|
||||
$transclude(function(clone) {
|
||||
controller: ['$transclude', function($transclude) {
|
||||
// remember the transclusion fn but call it during linking so that we don't process transclusion before directives on
|
||||
// the parent element even when the transclusion replaces the current element. (we can't use priority here because
|
||||
// that applies only to compile fns and not controllers
|
||||
this.$transclude = $transclude;
|
||||
}],
|
||||
|
||||
link: function($scope, $element, $attrs, controller) {
|
||||
controller.$transclude(function(clone) {
|
||||
$element.html('');
|
||||
$element.append(clone);
|
||||
});
|
||||
});
|
||||
}]
|
||||
}
|
||||
});
|
||||
|
||||
/**
|
||||
|
|
25
lib/angular/angular-touch.js
vendored
25
lib/angular/angular-touch.js
vendored
|
@ -1,5 +1,5 @@
|
|||
/**
|
||||
* @license AngularJS v1.2.0rc1
|
||||
* @license AngularJS v1.2.0-rc.2
|
||||
* (c) 2010-2012 Google, Inc. http://angularjs.org
|
||||
* License: MIT
|
||||
*/
|
||||
|
@ -9,8 +9,17 @@
|
|||
* @ngdoc overview
|
||||
* @name ngTouch
|
||||
* @description
|
||||
* Touch events and other mobile helpers.
|
||||
* Based on jQuery Mobile touch event handling (jquerymobile.com)
|
||||
*
|
||||
* # ngTouch
|
||||
*
|
||||
* `ngTouch` is the name of the optional Angular module that provides touch events and other
|
||||
* helpers for touch-enabled devices.
|
||||
* The implementation is based on jQuery Mobile touch event handling
|
||||
* ([jquerymobile.com](http://jquerymobile.com/))
|
||||
*
|
||||
* {@installModule touch}
|
||||
*
|
||||
* See {@link ngTouch.$swipe `$swipe`} for usage.
|
||||
*/
|
||||
|
||||
// define ngTouch module
|
||||
|
@ -24,7 +33,9 @@ var ngTouch = angular.module('ngTouch', []);
|
|||
* The `$swipe` service is a service that abstracts the messier details of hold-and-drag swipe
|
||||
* behavior, to make implementing swipe-related directives more convenient.
|
||||
*
|
||||
* It is used by the `ngSwipeLeft` and `ngSwipeRight` directives in `ngTouch`, and by
|
||||
* Requires the {@link ngTouch `ngTouch`} module to be installed.
|
||||
*
|
||||
* `$swipe` is used by the `ngSwipeLeft` and `ngSwipeRight` directives in `ngTouch`, and by
|
||||
* `ngCarousel` in a separate component.
|
||||
*
|
||||
* # Usage
|
||||
|
@ -159,6 +170,8 @@ ngTouch.factory('$swipe', [function() {
|
|||
* the click event. This version handles them immediately, and then prevents the
|
||||
* following click event from propagating.
|
||||
*
|
||||
* Requires the {@link ngTouch `ngTouch`} module to be installed.
|
||||
*
|
||||
* This directive can fall back to using an ordinary click event, and so works on desktop
|
||||
* browsers as well as mobile.
|
||||
*
|
||||
|
@ -428,6 +441,8 @@ ngTouch.directive('ngClick', ['$parse', '$timeout', '$rootElement',
|
|||
* A leftward swipe is a quick, right-to-left slide of the finger.
|
||||
* Though ngSwipeLeft is designed for touch-based devices, it will work with a mouse click and drag too.
|
||||
*
|
||||
* Requires the {@link ngTouch `ngTouch`} module to be installed.
|
||||
*
|
||||
* @element ANY
|
||||
* @param {expression} ngSwipeLeft {@link guide/expression Expression} to evaluate
|
||||
* upon left swipe. (Event object is available as `$event`)
|
||||
|
@ -455,6 +470,8 @@ ngTouch.directive('ngClick', ['$parse', '$timeout', '$rootElement',
|
|||
* A rightward swipe is a quick, left-to-right slide of the finger.
|
||||
* Though ngSwipeRight is designed for touch-based devices, it will work with a mouse click and drag too.
|
||||
*
|
||||
* Requires the {@link ngTouch `ngTouch`} module to be installed.
|
||||
*
|
||||
* @element ANY
|
||||
* @param {expression} ngSwipeRight {@link guide/expression Expression} to evaluate
|
||||
* upon right swipe. (Event object is available as `$event`)
|
||||
|
|
2
lib/angular/angular-touch.min.js
vendored
2
lib/angular/angular-touch.min.js
vendored
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
AngularJS v1.2.0rc1
|
||||
AngularJS v1.2.0-rc.2
|
||||
(c) 2010-2012 Google, Inc. http://angularjs.org
|
||||
License: MIT
|
||||
*/
|
||||
|
|
File diff suppressed because one or more lines are too long
282
lib/angular/angular.js
vendored
282
lib/angular/angular.js
vendored
|
@ -1,5 +1,5 @@
|
|||
/**
|
||||
* @license AngularJS v1.2.0rc1
|
||||
* @license AngularJS v1.2.0-rc.2
|
||||
* (c) 2010-2012 Google, Inc. http://angularjs.org
|
||||
* License: MIT
|
||||
*/
|
||||
|
@ -35,10 +35,21 @@
|
|||
|
||||
function minErr(module) {
|
||||
return function () {
|
||||
var prefix = '[' + (module ? module + ':' : '') + arguments[0] + '] ',
|
||||
var code = arguments[0],
|
||||
prefix = '[' + (module ? module + ':' : '') + code + '] ',
|
||||
template = arguments[1],
|
||||
templateArgs = arguments,
|
||||
message;
|
||||
stringify = function (obj) {
|
||||
if (isFunction(obj)) {
|
||||
return obj.toString().replace(/ \{[\s\S]*$/, '');
|
||||
} else if (isUndefined(obj)) {
|
||||
return 'undefined';
|
||||
} else if (!isString(obj)) {
|
||||
return JSON.stringify(obj);
|
||||
}
|
||||
return obj;
|
||||
},
|
||||
message, i;
|
||||
|
||||
message = prefix + template.replace(/\{\d+\}/g, function (match) {
|
||||
var index = +match.slice(1, -1), arg;
|
||||
|
@ -57,6 +68,13 @@ function minErr(module) {
|
|||
return match;
|
||||
});
|
||||
|
||||
message = message + '\nhttp://errors.angularjs.org/' + version.full + '/' +
|
||||
(module ? module + '/' : '') + code;
|
||||
for (i = 2; i < arguments.length; i++) {
|
||||
message = message + (i == 2 ? '?' : '&') + 'p' + (i-2) + '=' +
|
||||
encodeURIComponent(stringify(arguments[i]));
|
||||
}
|
||||
|
||||
return new Error(message);
|
||||
};
|
||||
}
|
||||
|
@ -119,7 +137,7 @@ if ('i' !== 'I'.toLowerCase()) {
|
|||
|
||||
|
||||
var /** holds major version number for IE or NaN for real browsers */
|
||||
msie = int((/msie (\d+)/.exec(lowercase(navigator.userAgent)) || [])[1]),
|
||||
msie,
|
||||
jqLite, // delay binding since jQuery could be loaded after us.
|
||||
jQuery, // delay binding
|
||||
slice = [].slice,
|
||||
|
@ -135,6 +153,16 @@ var /** holds major version number for IE or NaN for real browsers */
|
|||
nodeName_,
|
||||
uid = ['0', '0', '0'];
|
||||
|
||||
/**
|
||||
* IE 11 changed the format of the UserAgent string.
|
||||
* See http://msdn.microsoft.com/en-us/library/ms537503.aspx
|
||||
*/
|
||||
msie = int((/msie (\d+)/.exec(lowercase(navigator.userAgent)) || [])[1]);
|
||||
if (isNaN(msie)) {
|
||||
msie = int((/trident\/.*; rv:(\d+)/.exec(lowercase(navigator.userAgent)) || [])[1]);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @private
|
||||
* @param {*} obj
|
||||
|
@ -1249,10 +1277,13 @@ function setupModuleLoader(window) {
|
|||
* @name angular.module
|
||||
* @description
|
||||
*
|
||||
* The `angular.module` is a global place for creating and registering Angular modules. All
|
||||
* modules (angular core or 3rd party) that should be available to an application must be
|
||||
* The `angular.module` is a global place for creating, registering and retrieving Angular modules.
|
||||
* All modules (angular core or 3rd party) that should be available to an application must be
|
||||
* registered using this mechanism.
|
||||
*
|
||||
* When passed two or more arguments, a new module is created. If passed only one argument, an
|
||||
* existing module (the name passed as the first argument to `module`) is retrieved.
|
||||
*
|
||||
*
|
||||
* # Module
|
||||
*
|
||||
|
@ -1523,11 +1554,11 @@ function setupModuleLoader(window) {
|
|||
* - `codeName` – `{string}` – Code name of the release, such as "jiggling-armfat".
|
||||
*/
|
||||
var version = {
|
||||
full: '1.2.0rc1', // all of these placeholder strings will be replaced by grunt's
|
||||
full: '1.2.0-rc.2', // all of these placeholder strings will be replaced by grunt's
|
||||
major: 1, // package task
|
||||
minor: 2,
|
||||
dot: 0,
|
||||
codeName: 'spooky-giraffe'
|
||||
codeName: 'barehand-atomsplitting'
|
||||
};
|
||||
|
||||
|
||||
|
@ -2590,6 +2621,7 @@ function annotate(fn) {
|
|||
if (typeof fn == 'function') {
|
||||
if (!($inject = fn.$inject)) {
|
||||
$inject = [];
|
||||
if (fn.length) {
|
||||
fnText = fn.toString().replace(STRIP_COMMENTS, '');
|
||||
argDecl = fnText.match(FN_ARGS);
|
||||
forEach(argDecl[1].split(FN_ARG_SPLIT), function(arg){
|
||||
|
@ -2597,6 +2629,7 @@ function annotate(fn) {
|
|||
$inject.push(name);
|
||||
});
|
||||
});
|
||||
}
|
||||
fn.$inject = $inject;
|
||||
}
|
||||
} else if (isArray(fn)) {
|
||||
|
@ -3320,7 +3353,7 @@ var $AnimateProvider = ['$provide', function($provide) {
|
|||
forEach(element, function(node) {
|
||||
parentNode.insertBefore(node, afterNextSibling);
|
||||
});
|
||||
$timeout(done || noop, 0, false);
|
||||
done && $timeout(done, 0, false);
|
||||
},
|
||||
|
||||
/**
|
||||
|
@ -3337,7 +3370,7 @@ var $AnimateProvider = ['$provide', function($provide) {
|
|||
*/
|
||||
leave : function(element, done) {
|
||||
element.remove();
|
||||
$timeout(done || noop, 0, false);
|
||||
done && $timeout(done, 0, false);
|
||||
},
|
||||
|
||||
/**
|
||||
|
@ -3379,7 +3412,7 @@ var $AnimateProvider = ['$provide', function($provide) {
|
|||
className :
|
||||
isArray(className) ? className.join(' ') : '';
|
||||
element.addClass(className);
|
||||
$timeout(done || noop, 0, false);
|
||||
done && $timeout(done, 0, false);
|
||||
},
|
||||
|
||||
/**
|
||||
|
@ -3400,7 +3433,7 @@ var $AnimateProvider = ['$provide', function($provide) {
|
|||
className :
|
||||
isArray(className) ? className.join(' ') : '';
|
||||
element.removeClass(className);
|
||||
$timeout(done || noop, 0, false);
|
||||
done && $timeout(done, 0, false);
|
||||
},
|
||||
|
||||
enabled : noop
|
||||
|
@ -5699,7 +5732,7 @@ function $HttpProvider() {
|
|||
// strip json vulnerability protection prefix
|
||||
data = data.replace(PROTECTION_PREFIX, '');
|
||||
if (JSON_START.test(data) && JSON_END.test(data))
|
||||
data = fromJson(data, true);
|
||||
data = fromJson(data);
|
||||
}
|
||||
return data;
|
||||
}],
|
||||
|
@ -6015,6 +6048,7 @@ function $HttpProvider() {
|
|||
* return function(promise) {
|
||||
* return promise.then(function(response) {
|
||||
* // do something on success
|
||||
* return response;
|
||||
* }, function(response) {
|
||||
* // do something on error
|
||||
* if (canRecover(response)) {
|
||||
|
@ -6494,7 +6528,7 @@ function $HttpProvider() {
|
|||
|
||||
if (cache) {
|
||||
cachedResp = cache.get(url);
|
||||
if (cachedResp) {
|
||||
if (isDefined(cachedResp)) {
|
||||
if (cachedResp.then) {
|
||||
// cached request has already been sent, but there is no response yet
|
||||
cachedResp.then(removePendingReq, removePendingReq);
|
||||
|
@ -6514,7 +6548,7 @@ function $HttpProvider() {
|
|||
}
|
||||
|
||||
// if we won't have the response in cache, send the request to the backend
|
||||
if (!cachedResp) {
|
||||
if (isUndefined(cachedResp)) {
|
||||
$httpBackend(config.method, url, reqData, done, reqHeaders, config.timeout,
|
||||
config.withCredentials, config.responseType);
|
||||
}
|
||||
|
@ -6768,21 +6802,30 @@ var $interpolateMinErr = minErr('$interpolate');
|
|||
* Used for configuring the interpolation markup. Defaults to `{{` and `}}`.
|
||||
*
|
||||
* @example
|
||||
<doc:example>
|
||||
<doc:example module="customInterpolationApp">
|
||||
<doc:source>
|
||||
<script>
|
||||
var myApp = angular.module('App', [], function($interpolateProvider) {
|
||||
var customInterpolationApp = angular.module('customInterpolationApp', []);
|
||||
|
||||
customInterpolationApp.config(function($interpolateProvider) {
|
||||
$interpolateProvider.startSymbol('//');
|
||||
$interpolateProvider.endSymbol('//');
|
||||
});
|
||||
function Controller($scope) {
|
||||
$scope.label = "Interpolation Provider Sample";
|
||||
}
|
||||
|
||||
|
||||
customInterpolationApp.controller('DemoController', function DemoController() {
|
||||
this.label = "This bindings is brought you you by // interpolation symbols.";
|
||||
});
|
||||
</script>
|
||||
<div ng-app="App" ng-controller="Controller">
|
||||
//label//
|
||||
<div ng-app="App" ng-controller="DemoController as demo">
|
||||
//demo.label//
|
||||
</div>
|
||||
</doc:source>
|
||||
<doc:scenario>
|
||||
it('should interpolate binding with custom symbols', function() {
|
||||
expect(binding('demo.label')).toBe('This bindings is brought you you by // interpolation symbols.');
|
||||
});
|
||||
</doc:scenario>
|
||||
</doc:example>
|
||||
*/
|
||||
function $InterpolateProvider() {
|
||||
|
@ -7846,7 +7889,6 @@ var $parseMinErr = minErr('$parse');
|
|||
// access to any member named "constructor".
|
||||
//
|
||||
// For reflective calls (a[b]) we check that the value of the lookup is not the Function constructor while evaluating
|
||||
// For reflective calls (a[b]) we check that the value of the lookup is not the Function constructor while evaluating
|
||||
// the expression, which is a stronger but more expensive test. Since reflective calls are expensive anyway, this is not
|
||||
// such a big deal compared to static dereferencing.
|
||||
//
|
||||
|
@ -8520,9 +8562,21 @@ function parser(text, json, $filter, csp){
|
|||
}
|
||||
var fnPtr = fn(scope, locals, context) || noop;
|
||||
// IE stupidity!
|
||||
return fnPtr.apply
|
||||
var v = fnPtr.apply
|
||||
? fnPtr.apply(context, args)
|
||||
: fnPtr(args[0], args[1], args[2], args[3], args[4]);
|
||||
|
||||
// Check for promise
|
||||
if (v && v.then) {
|
||||
var p = v;
|
||||
if (!('$$v' in v)) {
|
||||
p.$$v = undefined;
|
||||
p.then(function(val) { p.$$v = val; });
|
||||
}
|
||||
v = v.$$v;
|
||||
}
|
||||
|
||||
return v;
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -8826,6 +8880,8 @@ function $ParseProvider() {
|
|||
* // since this fn executes async in a future turn of the event loop, we need to wrap
|
||||
* // our code into an $apply call so that the model changes are properly observed.
|
||||
* scope.$apply(function() {
|
||||
* deferred.notify('About to greet ' + name + '.');
|
||||
*
|
||||
* if (okToGreet(name)) {
|
||||
* deferred.resolve('Hello, ' + name + '!');
|
||||
* } else {
|
||||
|
@ -8842,6 +8898,8 @@ function $ParseProvider() {
|
|||
* alert('Success: ' + greeting);
|
||||
* }, function(reason) {
|
||||
* alert('Failed: ' + reason);
|
||||
* }, function(update) {
|
||||
* alert('Got notification: ' + update);
|
||||
* });
|
||||
* </pre>
|
||||
*
|
||||
|
@ -8860,7 +8918,8 @@ function $ParseProvider() {
|
|||
* A new instance of deferred is constructed by calling `$q.defer()`.
|
||||
*
|
||||
* The purpose of the deferred object is to expose the associated Promise instance as well as APIs
|
||||
* that can be used for signaling the successful or unsuccessful completion of the task.
|
||||
* that can be used for signaling the successful or unsuccessful completion, as well as the status
|
||||
* of the task.
|
||||
*
|
||||
* **Methods**
|
||||
*
|
||||
|
@ -8868,6 +8927,8 @@ function $ParseProvider() {
|
|||
* constructed via `$q.reject`, the promise will be rejected instead.
|
||||
* - `reject(reason)` – rejects the derived promise with the `reason`. This is equivalent to
|
||||
* resolving it with a rejection constructed via `$q.reject`.
|
||||
* - `notify(value)` - provides updates on the status of the promises execution. This may be called
|
||||
* multiple times before the promise is either resolved or rejected.
|
||||
*
|
||||
* **Properties**
|
||||
*
|
||||
|
@ -8884,12 +8945,15 @@ function $ParseProvider() {
|
|||
*
|
||||
* **Methods**
|
||||
*
|
||||
* - `then(successCallback, errorCallback)` – regardless of when the promise was or will be resolved
|
||||
* or rejected, `then` calls one of the success or error callbacks asynchronously as soon as the result
|
||||
* is available. The callbacks are called with a single argument: the result or rejection reason.
|
||||
* - `then(successCallback, errorCallback, notifyCallback)` – regardless of when the promise was or
|
||||
* will be resolved or rejected, `then` calls one of the success or error callbacks asynchronously
|
||||
* as soon as the result is available. The callbacks are called with a single argument: the result
|
||||
* or rejection reason. Additionally, the notify callback may be called zero or more times to
|
||||
* provide a progress indication, before the promise is resolved or rejected.
|
||||
*
|
||||
* This method *returns a new promise* which is resolved or rejected via the return value of the
|
||||
* `successCallback` or `errorCallback`.
|
||||
* `successCallback`, `errorCallback`. It also notifies via the return value of the `notifyCallback`
|
||||
* method. The promise can not be resolved or rejected from the notifyCallback method.
|
||||
*
|
||||
* - `catch(errorCallback)` – shorthand for `promise.then(null, errorCallback)`
|
||||
*
|
||||
|
@ -9041,7 +9105,7 @@ function qFactory(nextTick, exceptionHandler) {
|
|||
|
||||
var wrappedCallback = function(value) {
|
||||
try {
|
||||
result.resolve((callback || defaultCallback)(value));
|
||||
result.resolve((isFunction(callback) ? callback : defaultCallback)(value));
|
||||
} catch(e) {
|
||||
result.reject(e);
|
||||
exceptionHandler(e);
|
||||
|
@ -9050,7 +9114,7 @@ function qFactory(nextTick, exceptionHandler) {
|
|||
|
||||
var wrappedErrback = function(reason) {
|
||||
try {
|
||||
result.resolve((errback || defaultErrback)(reason));
|
||||
result.resolve((isFunction(errback) ? errback : defaultErrback)(reason));
|
||||
} catch(e) {
|
||||
result.reject(e);
|
||||
exceptionHandler(e);
|
||||
|
@ -9059,7 +9123,7 @@ function qFactory(nextTick, exceptionHandler) {
|
|||
|
||||
var wrappedProgressback = function(progress) {
|
||||
try {
|
||||
result.notify((progressback || defaultCallback)(progress));
|
||||
result.notify((isFunction(progressback) ? progressback : defaultCallback)(progress));
|
||||
} catch(e) {
|
||||
exceptionHandler(e);
|
||||
}
|
||||
|
@ -9097,7 +9161,7 @@ function qFactory(nextTick, exceptionHandler) {
|
|||
} catch(e) {
|
||||
return makePromise(e, false);
|
||||
}
|
||||
if (callbackOutput && callbackOutput.then) {
|
||||
if (callbackOutput && isFunction(callbackOutput.then)) {
|
||||
return callbackOutput.then(function() {
|
||||
return makePromise(value, isResolved);
|
||||
}, function(error) {
|
||||
|
@ -9122,7 +9186,7 @@ function qFactory(nextTick, exceptionHandler) {
|
|||
|
||||
|
||||
var ref = function(value) {
|
||||
if (value && value.then) return value;
|
||||
if (value && isFunction(value.then)) return value;
|
||||
return {
|
||||
then: function(callback) {
|
||||
var result = defer();
|
||||
|
@ -9175,7 +9239,12 @@ function qFactory(nextTick, exceptionHandler) {
|
|||
then: function(callback, errback) {
|
||||
var result = defer();
|
||||
nextTick(function() {
|
||||
result.resolve((errback || defaultErrback)(reason));
|
||||
try {
|
||||
result.resolve((isFunction(errback) ? errback : defaultErrback)(reason));
|
||||
} catch(e) {
|
||||
result.reject(e);
|
||||
exceptionHandler(e);
|
||||
}
|
||||
});
|
||||
return result.promise;
|
||||
}
|
||||
|
@ -9201,7 +9270,7 @@ function qFactory(nextTick, exceptionHandler) {
|
|||
|
||||
var wrappedCallback = function(value) {
|
||||
try {
|
||||
return (callback || defaultCallback)(value);
|
||||
return (isFunction(callback) ? callback : defaultCallback)(value);
|
||||
} catch (e) {
|
||||
exceptionHandler(e);
|
||||
return reject(e);
|
||||
|
@ -9210,7 +9279,7 @@ function qFactory(nextTick, exceptionHandler) {
|
|||
|
||||
var wrappedErrback = function(reason) {
|
||||
try {
|
||||
return (errback || defaultErrback)(reason);
|
||||
return (isFunction(errback) ? errback : defaultErrback)(reason);
|
||||
} catch (e) {
|
||||
exceptionHandler(e);
|
||||
return reject(e);
|
||||
|
@ -9219,7 +9288,7 @@ function qFactory(nextTick, exceptionHandler) {
|
|||
|
||||
var wrappedProgressback = function(progress) {
|
||||
try {
|
||||
return (progressback || defaultCallback)(progress);
|
||||
return (isFunction(progressback) ? progressback : defaultCallback)(progress);
|
||||
} catch (e) {
|
||||
exceptionHandler(e);
|
||||
}
|
||||
|
@ -9369,8 +9438,8 @@ function $RootScopeProvider(){
|
|||
return TTL;
|
||||
};
|
||||
|
||||
this.$get = ['$injector', '$exceptionHandler', '$parse',
|
||||
function( $injector, $exceptionHandler, $parse) {
|
||||
this.$get = ['$injector', '$exceptionHandler', '$parse', '$browser',
|
||||
function( $injector, $exceptionHandler, $parse, $browser) {
|
||||
|
||||
/**
|
||||
* @ngdoc function
|
||||
|
@ -9419,6 +9488,7 @@ function $RootScopeProvider(){
|
|||
this['this'] = this.$root = this;
|
||||
this.$$destroyed = false;
|
||||
this.$$asyncQueue = [];
|
||||
this.$$postDigestQueue = [];
|
||||
this.$$listeners = {};
|
||||
this.$$isolateBindings = {};
|
||||
}
|
||||
|
@ -9433,6 +9503,7 @@ function $RootScopeProvider(){
|
|||
|
||||
|
||||
Scope.prototype = {
|
||||
constructor: Scope,
|
||||
/**
|
||||
* @ngdoc function
|
||||
* @name ng.$rootScope.Scope#$new
|
||||
|
@ -9467,6 +9538,7 @@ function $RootScopeProvider(){
|
|||
child.$root = this.$root;
|
||||
// ensure that there is just one async queue per $rootScope and it's children
|
||||
child.$$asyncQueue = this.$$asyncQueue;
|
||||
child.$$postDigestQueue = this.$$postDigestQueue;
|
||||
} else {
|
||||
Child = function() {}; // should be anonymous; This is so that when the minifier munges
|
||||
// the name it does not become random set of chars. These will then show up as class
|
||||
|
@ -9794,6 +9866,7 @@ function $RootScopeProvider(){
|
|||
var watch, value, last,
|
||||
watchers,
|
||||
asyncQueue = this.$$asyncQueue,
|
||||
postDigestQueue = this.$$postDigestQueue,
|
||||
length,
|
||||
dirty, ttl = TTL,
|
||||
next, current, target = this,
|
||||
|
@ -9866,6 +9939,14 @@ function $RootScopeProvider(){
|
|||
} while (dirty || asyncQueue.length);
|
||||
|
||||
clearPhase();
|
||||
|
||||
while(postDigestQueue.length) {
|
||||
try {
|
||||
postDigestQueue.shift()();
|
||||
} catch (e) {
|
||||
$exceptionHandler(e);
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
|
@ -9966,13 +10047,16 @@ function $RootScopeProvider(){
|
|||
*
|
||||
* The `$evalAsync` makes no guarantees as to when the `expression` will be executed, only that:
|
||||
*
|
||||
* - it will execute in the current script execution context (before any DOM rendering).
|
||||
* - at least one {@link ng.$rootScope.Scope#$digest $digest cycle} will be performed after
|
||||
* `expression` execution.
|
||||
* - it will execute after the function that schedule the evaluation is done running (preferably before DOM rendering).
|
||||
* - at least one {@link ng.$rootScope.Scope#$digest $digest cycle} will be performed after `expression` execution.
|
||||
*
|
||||
* Any exceptions from the execution of the expression are forwarded to the
|
||||
* {@link ng.$exceptionHandler $exceptionHandler} service.
|
||||
*
|
||||
* __Note:__ if this function is called outside of `$digest` cycle, a new $digest cycle will be scheduled.
|
||||
* It is however encouraged to always call code that changes the model from withing an `$apply` call.
|
||||
* That includes code evaluated via `$evalAsync`.
|
||||
*
|
||||
* @param {(string|function())=} expression An angular expression to be executed.
|
||||
*
|
||||
* - `string`: execute using the rules as defined in {@link guide/expression expression}.
|
||||
|
@ -9980,9 +10064,23 @@ function $RootScopeProvider(){
|
|||
*
|
||||
*/
|
||||
$evalAsync: function(expr) {
|
||||
// if we are outside of an $digest loop and this is the first time we are scheduling async task also schedule
|
||||
// async auto-flush
|
||||
if (!$rootScope.$$phase && !$rootScope.$$asyncQueue.length) {
|
||||
$browser.defer(function() {
|
||||
if ($rootScope.$$asyncQueue.length) {
|
||||
$rootScope.$digest();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
this.$$asyncQueue.push(expr);
|
||||
},
|
||||
|
||||
$$postDigest : function(expr) {
|
||||
this.$$postDigestQueue.push(expr);
|
||||
},
|
||||
|
||||
/**
|
||||
* @ngdoc function
|
||||
* @name ng.$rootScope.Scope#$apply
|
||||
|
@ -10651,7 +10749,7 @@ function $SceDelegateProvider() {
|
|||
* {@link ng.$sce#getTrusted $sce.getTrusted} behind the scenes on non-constant literals.
|
||||
*
|
||||
* As an example, {@link ng.directive:ngBindHtml ngBindHtml} uses {@link
|
||||
* ng.$sce#parseHtml $sce.parseAsHtml(binding expression)}. Here's the actual code (slightly
|
||||
* ng.$sce#parseAsHtml $sce.parseAsHtml(binding expression)}. Here's the actual code (slightly
|
||||
* simplified):
|
||||
*
|
||||
* <pre class="prettyprint">
|
||||
|
@ -10709,7 +10807,7 @@ function $SceDelegateProvider() {
|
|||
* ## What trusted context types are supported?<a name="contexts"></a>
|
||||
*
|
||||
* | Context | Notes |
|
||||
* |=====================|================|
|
||||
* |---------------------|----------------|
|
||||
* | `$sce.HTML` | For HTML that's safe to source into the application. The {@link ng.directive:ngBindHtml ngBindHtml} directive uses this context for bindings. |
|
||||
* | `$sce.CSS` | For CSS that's safe to source into the application. Currently unused. Feel free to use it in your own directives. |
|
||||
* | `$sce.URL` | For URLs that are safe to follow as links. Currently unused (`<a href=` and `<img src=` sanitize their urls and don't consititute an SCE context. |
|
||||
|
@ -11220,6 +11318,7 @@ function $SnifferProvider() {
|
|||
this.$get = ['$window', '$document', function($window, $document) {
|
||||
var eventSupport = {},
|
||||
android = int((/android (\d+)/.exec(lowercase(($window.navigator || {}).userAgent)) || [])[1]),
|
||||
boxee = /Boxee/i.test(($window.navigator || {}).userAgent),
|
||||
document = $document[0] || {},
|
||||
vendorPrefix,
|
||||
vendorRegex = /^(Moz|webkit|O|ms)(?=[A-Z])/,
|
||||
|
@ -11236,6 +11335,11 @@ function $SnifferProvider() {
|
|||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if(!vendorPrefix) {
|
||||
vendorPrefix = ('WebkitOpacity' in bodyStyle) && 'webkit';
|
||||
}
|
||||
|
||||
transitions = !!(('transition' in bodyStyle) || (vendorPrefix + 'Transition' in bodyStyle));
|
||||
animations = !!(('animation' in bodyStyle) || (vendorPrefix + 'Animation' in bodyStyle));
|
||||
|
||||
|
@ -11251,7 +11355,10 @@ function $SnifferProvider() {
|
|||
// so let's not use the history API at all.
|
||||
// http://code.google.com/p/android/issues/detail?id=17471
|
||||
// https://github.com/angular/angular.js/issues/904
|
||||
history: !!($window.history && $window.history.pushState && !(android < 4)),
|
||||
|
||||
// older webit browser (533.9) on Boxee box has exactly the same problem as Android has
|
||||
// so let's not use the history API also
|
||||
history: !!($window.history && $window.history.pushState && !(android < 4) && !boxee),
|
||||
hashchange: 'onhashchange' in $window &&
|
||||
// IE8 compatible mode lies
|
||||
(!document.documentMode || document.documentMode > 7),
|
||||
|
@ -11311,7 +11418,7 @@ function $TimeoutProvider() {
|
|||
var deferred = $q.defer(),
|
||||
promise = deferred.promise,
|
||||
skipApply = (isDefined(invokeApply) && !invokeApply),
|
||||
timeoutId, cleanup;
|
||||
timeoutId;
|
||||
|
||||
timeoutId = $browser.defer(function() {
|
||||
try {
|
||||
|
@ -11320,17 +11427,15 @@ function $TimeoutProvider() {
|
|||
deferred.reject(e);
|
||||
$exceptionHandler(e);
|
||||
}
|
||||
finally {
|
||||
delete deferreds[promise.$$timeoutId];
|
||||
}
|
||||
|
||||
if (!skipApply) $rootScope.$apply();
|
||||
}, delay);
|
||||
|
||||
cleanup = function() {
|
||||
delete deferreds[promise.$$timeoutId];
|
||||
};
|
||||
|
||||
promise.$$timeoutId = timeoutId;
|
||||
deferreds[timeoutId] = deferred;
|
||||
promise.then(cleanup, cleanup);
|
||||
|
||||
return promise;
|
||||
}
|
||||
|
@ -11352,6 +11457,7 @@ function $TimeoutProvider() {
|
|||
timeout.cancel = function(promise) {
|
||||
if (promise && promise.$$timeoutId in deferreds) {
|
||||
deferreds[promise.$$timeoutId].reject('canceled');
|
||||
delete deferreds[promise.$$timeoutId];
|
||||
return $browser.defer.cancel(promise.$$timeoutId);
|
||||
}
|
||||
return false;
|
||||
|
@ -11419,7 +11525,7 @@ function $$UrlUtilsProvider() {
|
|||
* Otherwise, returns an object with the following members.
|
||||
*
|
||||
* | member name | Description |
|
||||
* |===============|================|
|
||||
* |---------------|----------------|
|
||||
* | href | A normalized version of the provided URL if it was not an absolute URL |
|
||||
* | protocol | The protocol including the trailing colon |
|
||||
* | host | The host and port (if the port is non-default) of the normalizedUrl |
|
||||
|
@ -11427,7 +11533,7 @@ function $$UrlUtilsProvider() {
|
|||
* These fields from the UrlUtils interface are currently not needed and hence not returned.
|
||||
*
|
||||
* | member name | Description |
|
||||
* |===============|================|
|
||||
* |---------------|----------------|
|
||||
* | hostname | The host without the port of the normalizedUrl |
|
||||
* | pathname | The path following the host in the normalizedUrl |
|
||||
* | hash | The URL hash if present |
|
||||
|
@ -11436,7 +11542,7 @@ function $$UrlUtilsProvider() {
|
|||
*/
|
||||
function resolve(url, parse) {
|
||||
var href = url;
|
||||
if (msie) {
|
||||
if (msie <= 11) {
|
||||
// Normalize before parse. Refer Implementation Notes on why this is
|
||||
// done in two steps on IE.
|
||||
urlParsingNode.setAttribute("href", href);
|
||||
|
@ -11806,7 +11912,7 @@ function filterFilter() {
|
|||
})();
|
||||
} else {
|
||||
(function() {
|
||||
if (!expression[key]) return;
|
||||
if (typeof(expression[key]) == 'undefined') { return; }
|
||||
var path = key;
|
||||
predicates.push(function(value) {
|
||||
return search(getter(value,path), expression[path]);
|
||||
|
@ -12535,8 +12641,10 @@ function orderByFilter($parse){
|
|||
var t1 = typeof v1;
|
||||
var t2 = typeof v2;
|
||||
if (t1 == t2) {
|
||||
if (t1 == "string") v1 = v1.toLowerCase();
|
||||
if (t1 == "string") v2 = v2.toLowerCase();
|
||||
if (t1 == "string") {
|
||||
v1 = v1.toLowerCase();
|
||||
v2 = v2.toLowerCase();
|
||||
}
|
||||
if (v1 === v2) return 0;
|
||||
return v1 < v2 ? -1 : 1;
|
||||
} else {
|
||||
|
@ -14781,8 +14889,8 @@ var ngBindTemplateDirective = ['$interpolate', function($interpolate) {
|
|||
var ngBindHtmlDirective = ['$sce', function($sce) {
|
||||
return function(scope, element, attr) {
|
||||
element.addClass('ng-binding').data('$binding', attr.ngBindHtml);
|
||||
scope.$watch($sce.parseAsHtml(attr.ngBindHtml), function ngBindHtmlWatchAction(value) {
|
||||
element.html(value || '');
|
||||
scope.$watch(attr.ngBindHtml, function ngBindHtmlWatchAction(value) {
|
||||
element.html($sce.getTrustedHtml(value) || '');
|
||||
});
|
||||
};
|
||||
}];
|
||||
|
@ -14938,7 +15046,7 @@ function classDirective(name, selector) {
|
|||
|
||||
## Animations
|
||||
|
||||
Example that demostrates how addition and removal of classes can be animated.
|
||||
The example below demonstrates how to perform animations using ngClass.
|
||||
|
||||
<example animations="true">
|
||||
<file name="index.html">
|
||||
|
@ -14983,6 +15091,14 @@ function classDirective(name, selector) {
|
|||
});
|
||||
</file>
|
||||
</example>
|
||||
|
||||
|
||||
## ngClass and pre-existing CSS3 Transitions/Animations
|
||||
The ngClass directive still supports CSS3 Transitions/Animations even if they do not follow the ngAnimate CSS naming structure.
|
||||
Therefore, if any CSS3 Transition/Animation styles (outside of ngAnimate) are set on the element, then, if a ngClass animation
|
||||
is triggered, the ngClass animation will be skipped so that ngAnimate can allow for the pre-existing transition or animation to
|
||||
take over. This restriction allows for ngClass to still work with standard CSS3 Transitions/Animations that are defined
|
||||
outside of ngAnimate.
|
||||
*/
|
||||
var ngClassDirective = classDirective('', true);
|
||||
|
||||
|
@ -15901,23 +16017,18 @@ var ngIfDirective = ['$animate', function($animate) {
|
|||
* @description
|
||||
* Emitted every time the ngInclude content is reloaded.
|
||||
*/
|
||||
var NG_INCLUDE_PRIORITY = 500;
|
||||
var ngIncludeDirective = ['$http', '$templateCache', '$anchorScroll', '$compile', '$animate', '$sce',
|
||||
function($http, $templateCache, $anchorScroll, $compile, $animate, $sce) {
|
||||
return {
|
||||
restrict: 'ECA',
|
||||
terminal: true,
|
||||
priority: NG_INCLUDE_PRIORITY,
|
||||
compile: function(element, attr) {
|
||||
transclude: 'element',
|
||||
compile: function(element, attr, transclusion) {
|
||||
var srcExp = attr.ngInclude || attr.src,
|
||||
onloadExp = attr.onload || '',
|
||||
autoScrollExp = attr.autoscroll;
|
||||
|
||||
element.html('');
|
||||
var anchor = jqLite(document.createComment(' ngInclude: ' + srcExp + ' '));
|
||||
element.replaceWith(anchor);
|
||||
|
||||
return function(scope) {
|
||||
return function(scope, $element) {
|
||||
var changeCounter = 0,
|
||||
currentScope,
|
||||
currentElement;
|
||||
|
@ -15941,14 +16052,15 @@ var ngIncludeDirective = ['$http', '$templateCache', '$anchorScroll', '$compile'
|
|||
if (thisChangeId !== changeCounter) return;
|
||||
var newScope = scope.$new();
|
||||
|
||||
transclusion(newScope, function(clone) {
|
||||
cleanupLastIncludeContent();
|
||||
|
||||
currentScope = newScope;
|
||||
currentElement = element.clone();
|
||||
currentElement.html(response);
|
||||
$animate.enter(currentElement, null, anchor);
|
||||
currentElement = clone;
|
||||
|
||||
$compile(currentElement, false, NG_INCLUDE_PRIORITY - 1)(currentScope);
|
||||
currentElement.html(response);
|
||||
$animate.enter(currentElement, null, $element);
|
||||
$compile(currentElement.contents())(currentScope);
|
||||
|
||||
if (isDefined(autoScrollExp) && (!autoScrollExp || scope.$eval(autoScrollExp))) {
|
||||
$anchorScroll();
|
||||
|
@ -15956,6 +16068,7 @@ var ngIncludeDirective = ['$http', '$templateCache', '$anchorScroll', '$compile'
|
|||
|
||||
currentScope.$emit('$includeContentLoaded');
|
||||
scope.$eval(onloadExp);
|
||||
});
|
||||
}).error(function() {
|
||||
if (thisChangeId === changeCounter) cleanupLastIncludeContent();
|
||||
});
|
||||
|
@ -17178,7 +17291,9 @@ var ngSwitchDefaultDirective = ngDirective({
|
|||
* @name ng.directive:ngTransclude
|
||||
*
|
||||
* @description
|
||||
* Insert the transcluded DOM here.
|
||||
* Directive that marks the insertion point for the transcluded DOM of the nearest parent directive that uses transclusion.
|
||||
*
|
||||
* Any existing content of the element that this directive is placed on will be removed before the transcluded content is inserted.
|
||||
*
|
||||
* @element ANY
|
||||
*
|
||||
|
@ -17222,16 +17337,19 @@ var ngSwitchDefaultDirective = ngDirective({
|
|||
*
|
||||
*/
|
||||
var ngTranscludeDirective = ngDirective({
|
||||
controller: ['$transclude', '$element', '$scope', function($transclude, $element, $scope) {
|
||||
// use evalAsync so that we don't process transclusion before directives on the parent element even when the
|
||||
// transclusion replaces the current element. (we can't use priority here because that applies only to compile fns
|
||||
// and not controllers
|
||||
$scope.$evalAsync(function() {
|
||||
$transclude(function(clone) {
|
||||
controller: ['$transclude', function($transclude) {
|
||||
// remember the transclusion fn but call it during linking so that we don't process transclusion before directives on
|
||||
// the parent element even when the transclusion replaces the current element. (we can't use priority here because
|
||||
// that applies only to compile fns and not controllers
|
||||
this.$transclude = $transclude;
|
||||
}],
|
||||
|
||||
link: function($scope, $element, $attrs, controller) {
|
||||
controller.$transclude(function(clone) {
|
||||
$element.html('');
|
||||
$element.append(clone);
|
||||
});
|
||||
});
|
||||
}]
|
||||
}
|
||||
});
|
||||
|
||||
/**
|
||||
|
|
185
lib/angular/angular.min.js
vendored
185
lib/angular/angular.min.js
vendored
|
@ -1,185 +0,0 @@
|
|||
/*
|
||||
AngularJS v1.2.0rc1
|
||||
(c) 2010-2012 Google, Inc. http://angularjs.org
|
||||
License: MIT
|
||||
*/
|
||||
(function(T,N,v){'use strict';function M(a){return function(){for(var b=arguments[0],c=1,b="["+(a?a+":":"")+b+"] http://errors.angularjs.org/1.2.0rc1/"+(a?a+"/":"")+b;c<arguments.length;c++)b=b+(1==c?"?":"&")+"p"+(c-1)+"="+encodeURIComponent("function"==typeof arguments[c]?arguments[c].toString().replace(/ \{[\s\S]*$/,""):"undefined"==typeof arguments[c]?"undefined":"string"!=typeof arguments[c]?JSON.stringify(arguments[c]):arguments[c]);return Error(b)}}function kb(a){if(null==a||va(a))return!1;
|
||||
var b=a.length;return 1===a.nodeType&&b?!0:I(a)||!H(a)&&(0===b||"number"===typeof b&&0<b&&b-1 in a)}function q(a,b,c){var d;if(a)if(H(a))for(d in a)"prototype"!=d&&("length"!=d&&"name"!=d&&a.hasOwnProperty(d))&&b.call(c,a[d],d);else if(a.forEach&&a.forEach!==q)a.forEach(b,c);else if(kb(a))for(d=0;d<a.length;d++)b.call(c,a[d],d);else for(d in a)a.hasOwnProperty(d)&&b.call(c,a[d],d);return a}function Fb(a){var b=[],c;for(c in a)a.hasOwnProperty(c)&&b.push(c);return b.sort()}function Bc(a,b,c){for(var d=
|
||||
Fb(a),e=0;e<d.length;e++)b.call(c,a[d[e]],d[e]);return d}function Gb(a){return function(b,c){a(c,b)}}function Ua(){for(var a=fa.length,b;a;){a--;b=fa[a].charCodeAt(0);if(57==b)return fa[a]="A",fa.join("");if(90==b)fa[a]="0";else return fa[a]=String.fromCharCode(b+1),fa.join("")}fa.unshift("0");return fa.join("")}function Hb(a,b){b?a.$$hashKey=b:delete a.$$hashKey}function F(a){var b=a.$$hashKey;q(arguments,function(b){b!==a&&q(b,function(b,c){a[c]=b})});Hb(a,b);return a}function U(a){return parseInt(a,
|
||||
10)}function Cc(a,b){return F(new (F(function(){},{prototype:a})),b)}function w(){}function wa(a){return a}function W(a){return function(){return a}}function J(a){return"undefined"==typeof a}function A(a){return"undefined"!=typeof a}function Q(a){return null!=a&&"object"==typeof a}function z(a){return"string"==typeof a}function lb(a){return"number"==typeof a}function Ea(a){return"[object Date]"==Va.apply(a)}function I(a){return"[object Array]"==Va.apply(a)}function H(a){return"function"==typeof a}
|
||||
function mb(a){return"[object RegExp]"==Va.apply(a)}function va(a){return a&&a.document&&a.location&&a.alert&&a.setInterval}function Dc(a){return a&&(a.nodeName||a.on&&a.find)}function Ec(a,b,c){var d=[];q(a,function(a,g,k){d.push(b.call(c,a,g,k))});return d}function Wa(a,b){if(a.indexOf)return a.indexOf(b);for(var c=0;c<a.length;c++)if(b===a[c])return c;return-1}function Fa(a,b){var c=Wa(a,b);0<=c&&a.splice(c,1);return b}function aa(a,b){if(va(a)||a&&a.$evalAsync&&a.$watch)throw Xa("cpws");if(b){if(a===
|
||||
b)throw Xa("cpi");if(I(a))for(var c=b.length=0;c<a.length;c++)b.push(aa(a[c]));else{c=b.$$hashKey;q(b,function(a,c){delete b[c]});for(var d in a)b[d]=aa(a[d]);Hb(b,c)}}else(b=a)&&(I(a)?b=aa(a,[]):Ea(a)?b=new Date(a.getTime()):mb(a)?b=RegExp(a.source):Q(a)&&(b=aa(a,{})));return b}function Fc(a,b){b=b||{};for(var c in a)a.hasOwnProperty(c)&&"$$"!==c.substr(0,2)&&(b[c]=a[c]);return b}function xa(a,b){if(a===b)return!0;if(null===a||null===b)return!1;if(a!==a&&b!==b)return!0;var c=typeof a,d;if(c==typeof b&&
|
||||
"object"==c)if(I(a)){if(!I(b))return!1;if((c=a.length)==b.length){for(d=0;d<c;d++)if(!xa(a[d],b[d]))return!1;return!0}}else{if(Ea(a))return Ea(b)&&a.getTime()==b.getTime();if(mb(a)&&mb(b))return a.toString()==b.toString();if(a&&a.$evalAsync&&a.$watch||b&&b.$evalAsync&&b.$watch||va(a)||va(b)||I(b))return!1;c={};for(d in a)if("$"!==d.charAt(0)&&!H(a[d])){if(!xa(a[d],b[d]))return!1;c[d]=!0}for(d in b)if(!c.hasOwnProperty(d)&&"$"!==d.charAt(0)&&b[d]!==v&&!H(b[d]))return!1;return!0}return!1}function nb(a,
|
||||
b){var c=2<arguments.length?sa.call(arguments,2):[];return!H(b)||b instanceof RegExp?b:c.length?function(){return arguments.length?b.apply(a,c.concat(sa.call(arguments,0))):b.apply(a,c)}:function(){return arguments.length?b.apply(a,arguments):b.call(a)}}function Gc(a,b){var c=b;/^\$+/.test(a)?c=v:va(b)?c="$WINDOW":b&&N===b?c="$DOCUMENT":b&&(b.$evalAsync&&b.$watch)&&(c="$SCOPE");return c}function ma(a,b){return"undefined"===typeof a?v:JSON.stringify(a,Gc,b?" ":null)}function Ib(a){return z(a)?JSON.parse(a):
|
||||
a}function Ga(a){a&&0!==a.length?(a=G(""+a),a=!("f"==a||"0"==a||"false"==a||"no"==a||"n"==a||"[]"==a)):a=!1;return a}function ga(a){a=C(a).clone();try{a.html("")}catch(b){}var c=C("<div>").append(a).html();try{return 3===a[0].nodeType?G(c):c.match(/^(<[^>]+>)/)[1].replace(/^<([\w\-]+)/,function(b,a){return"<"+G(a)})}catch(d){return G(c)}}function Jb(a){try{return decodeURIComponent(a)}catch(b){}}function Kb(a){var b={},c,d;q((a||"").split("&"),function(a){a&&(c=a.split("="),d=Jb(c[0]),A(d)&&(a=A(c[1])?
|
||||
Jb(c[1]):!0,b[d]?I(b[d])?b[d].push(a):b[d]=[b[d],a]:b[d]=a))});return b}function Lb(a){var b=[];q(a,function(a,d){I(a)?q(a,function(a){b.push(ta(d,!0)+(!0===a?"":"="+ta(a,!0)))}):b.push(ta(d,!0)+(!0===a?"":"="+ta(a,!0)))});return b.length?b.join("&"):""}function ob(a){return ta(a,!0).replace(/%26/gi,"&").replace(/%3D/gi,"=").replace(/%2B/gi,"+")}function ta(a,b){return encodeURIComponent(a).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,b?"%20":"+")}
|
||||
function Hc(a,b){function c(a){a&&d.push(a)}var d=[a],e,g,k=["ng:app","ng-app","x-ng-app","data-ng-app"],f=/\sng[:\-]app(:\s*([\w\d_]+);?)?\s/;q(k,function(b){k[b]=!0;c(N.getElementById(b));b=b.replace(":","\\:");a.querySelectorAll&&(q(a.querySelectorAll("."+b),c),q(a.querySelectorAll("."+b+"\\:"),c),q(a.querySelectorAll("["+b+"]"),c))});q(d,function(b){if(!e){var a=f.exec(" "+b.className+" ");a?(e=b,g=(a[2]||"").replace(/\s+/g,",")):q(b.attributes,function(a){!e&&k[a.name]&&(e=b,g=a.value)})}});
|
||||
e&&b(e,g?[g]:[])}function Mb(a,b){var c=function(){a=C(a);if(a.injector()){var c=a[0]===N?"document":ga(a);throw Xa("btstrpd",c);}b=b||[];b.unshift(["$provide",function(b){b.value("$rootElement",a)}]);b.unshift("ng");c=Nb(b);c.invoke(["$rootScope","$rootElement","$compile","$injector","$animate",function(b,a,c,d,e){b.$apply(function(){a.data("$injector",d);c(a)(b)});e.enabled(!0)}]);return c},d=/^NG_DEFER_BOOTSTRAP!/;if(T&&!d.test(T.name))return c();T.name=T.name.replace(d,"");Ha.resumeBootstrap=
|
||||
function(a){q(a,function(a){b.push(a)});c()}}function pb(a,b){b=b||"_";return a.replace(Ic,function(a,d){return(d?b:"")+a.toLowerCase()})}function qb(a,b,c){if(!a)throw Xa("areq",b||"?",c||"required");return a}function Ia(a,b,c){c&&I(a)&&(a=a[a.length-1]);qb(H(a),b,"not a function, got "+(a&&"object"==typeof a?a.constructor.name||"Object":typeof a));return a}function rb(a,b,c){if(!b)return a;b=b.split(".");for(var d,e=a,g=b.length,k=0;k<g;k++)d=b[k],a&&(a=(e=a)[d]);return!c&&H(a)?nb(e,a):a}function Jc(a){function b(a,
|
||||
b,e){return a[b]||(a[b]=e())}return b(b(a,"angular",Object),"module",function(){var a={};return function(d,e,g){e&&a.hasOwnProperty(d)&&(a[d]=null);return b(a,d,function(){function a(c,d,e){return function(){b[e||"push"]([c,d,arguments]);return m}}if(!e)throw M("$injector")("nomod",d);var b=[],c=[],h=a("$injector","invoke"),m={_invokeQueue:b,_runBlocks:c,requires:e,name:d,provider:a("$provide","provider"),factory:a("$provide","factory"),service:a("$provide","service"),value:a("$provide","value"),
|
||||
constant:a("$provide","constant","unshift"),animation:a("$animateProvider","register"),filter:a("$filterProvider","register"),controller:a("$controllerProvider","register"),directive:a("$compileProvider","directive"),config:h,run:function(a){c.push(a);return this}};g&&h(g);return m})}})}function Ja(a){return a.replace(Kc,function(a,c,d,e){return e?d.toUpperCase():d}).replace(Lc,"Moz$1")}function sb(a,b,c,d){function e(a){var e=c&&a?[this.filter(a)]:[this],l=b,h,m,p,n,s,r;if(!d||null!=a)for(;e.length;)for(h=
|
||||
e.shift(),m=0,p=h.length;m<p;m++)for(n=C(h[m]),l?n.triggerHandler("$destroy"):l=!l,s=0,n=(r=n.children()).length;s<n;s++)e.push(ya(r[s]));return g.apply(this,arguments)}var g=ya.fn[a],g=g.$original||g;e.$original=g;ya.fn[a]=e}function O(a){if(a instanceof O)return a;if(!(this instanceof O)){if(z(a)&&"<"!=a.charAt(0))throw tb("nosel");return new O(a)}if(z(a)){var b=N.createElement("div");b.innerHTML="<div> </div>"+a;b.removeChild(b.firstChild);ub(this,b.childNodes);C(N.createDocumentFragment()).append(this)}else ub(this,
|
||||
a)}function vb(a){return a.cloneNode(!0)}function Ka(a){Ob(a);var b=0;for(a=a.childNodes||[];b<a.length;b++)Ka(a[b])}function Pb(a,b,c,d){if(A(d))throw tb("offargs");var e=ha(a,"events");ha(a,"handle")&&(J(b)?q(e,function(b,c){wb(a,c,b);delete e[c]}):q(b.split(" "),function(b){J(c)?(wb(a,b,e[b]),delete e[b]):Fa(e[b]||[],c)}))}function Ob(a,b){var c=a[Ya],d=La[c];d&&(b?delete La[c].data[b]:(d.handle&&(d.events.$destroy&&d.handle({},"$destroy"),Pb(a)),delete La[c],a[Ya]=v))}function ha(a,b,c){var d=
|
||||
a[Ya],d=La[d||-1];if(A(c))d||(a[Ya]=d=++Mc,d=La[d]={}),d[b]=c;else return d&&d[b]}function Qb(a,b,c){var d=ha(a,"data"),e=A(c),g=!e&&A(b),k=g&&!Q(b);d||k||ha(a,"data",d={});if(e)d[b]=c;else if(g){if(k)return d&&d[b];F(d,b)}else return d}function Za(a,b){return-1<(" "+a.className+" ").replace(/[\n\t]/g," ").indexOf(" "+b+" ")}function Rb(a,b){b&&q(b.split(" "),function(b){a.className=Z((" "+a.className+" ").replace(/[\n\t]/g," ").replace(" "+Z(b)+" "," "))})}function Sb(a,b){b&&q(b.split(" "),function(b){Za(a,
|
||||
b)||(a.className=Z(a.className+" "+Z(b)))})}function ub(a,b){if(b){b=b.nodeName||!A(b.length)||va(b)?[b]:b;for(var c=0;c<b.length;c++)a.push(b[c])}}function Tb(a,b){return $a(a,"$"+(b||"ngController")+"Controller")}function $a(a,b,c){a=C(a);for(9==a[0].nodeType&&(a=a.find("html"));a.length;){if((c=a.data(b))!==v)return c;a=a.parent()}}function Ub(a,b){var c=ab[b.toLowerCase()];return c&&Vb[a.nodeName]&&c}function Nc(a,b){var c=function(c,e){c.preventDefault||(c.preventDefault=function(){c.returnValue=
|
||||
!1});c.stopPropagation||(c.stopPropagation=function(){c.cancelBubble=!0});c.target||(c.target=c.srcElement||N);if(J(c.defaultPrevented)){var g=c.preventDefault;c.preventDefault=function(){c.defaultPrevented=!0;g.call(c)};c.defaultPrevented=!1}c.isDefaultPrevented=function(){return c.defaultPrevented||!1==c.returnValue};q(b[e||c.type],function(b){b.call(a,c)});8>=R?(c.preventDefault=null,c.stopPropagation=null,c.isDefaultPrevented=null):(delete c.preventDefault,delete c.stopPropagation,delete c.isDefaultPrevented)};
|
||||
c.elem=a;return c}function za(a){var b=typeof a,c;"object"==b&&null!==a?"function"==typeof(c=a.$$hashKey)?c=a.$$hashKey():c===v&&(c=a.$$hashKey=Ua()):c=a;return b+":"+c}function Ma(a){q(a,this.put,this)}function Wb(a){var b,c;"function"==typeof a?(b=a.$inject)||(b=[],c=a.toString().replace(Oc,""),c=c.match(Pc),q(c[1].split(Qc),function(a){a.replace(Rc,function(a,c,d){b.push(d)})}),a.$inject=b):I(a)?(c=a.length-1,Ia(a[c],"fn"),b=a.slice(0,c)):Ia(a,"fn",!0);return b}function Nb(a){function b(a){return function(b,
|
||||
c){if(Q(b))q(b,Gb(a));else return a(b,c)}}function c(a,b){if(H(b)||I(b))b=p.instantiate(b);if(!b.$get)throw Na("pget",a);return m[a+f]=b}function d(a,b){return c(a,{$get:b})}function e(a){var b=[];q(a,function(a){if(!h.get(a)){h.put(a,!0);try{if(z(a)){var c=Oa(a);b=b.concat(e(c.requires)).concat(c._runBlocks);for(var d=c._invokeQueue,c=0,f=d.length;c<f;c++){var l=d[c],m=p.get(l[0]);m[l[1]].apply(m,l[2])}}else H(a)?b.push(p.invoke(a)):I(a)?b.push(p.invoke(a)):Ia(a,"module")}catch(g){throw I(a)&&(a=
|
||||
a[a.length-1]),g.message&&(g.stack&&-1==g.stack.indexOf(g.message))&&(g=g.message+"\n"+g.stack),Na("modulerr",a,g.stack||g.message||g);}}});return b}function g(a,b){function c(d){if(a.hasOwnProperty(d)){if(a[d]===k)throw Na("cdep",l.join(" <- "));return a[d]}try{return l.unshift(d),a[d]=k,a[d]=b(d)}finally{l.shift()}}function d(a,b,e){var f=[],l=Wb(a),g,m,h;m=0;for(g=l.length;m<g;m++){h=l[m];if("string"!==typeof h)throw Na("itkn",h);f.push(e&&e.hasOwnProperty(h)?e[h]:c(h))}a.$inject||(a=a[g]);switch(b?
|
||||
-1:f.length){case 0:return a();case 1:return a(f[0]);case 2:return a(f[0],f[1]);case 3:return a(f[0],f[1],f[2]);case 4:return a(f[0],f[1],f[2],f[3]);case 5:return a(f[0],f[1],f[2],f[3],f[4]);case 6:return a(f[0],f[1],f[2],f[3],f[4],f[5]);case 7:return a(f[0],f[1],f[2],f[3],f[4],f[5],f[6]);case 8:return a(f[0],f[1],f[2],f[3],f[4],f[5],f[6],f[7]);case 9:return a(f[0],f[1],f[2],f[3],f[4],f[5],f[6],f[7],f[8]);case 10:return a(f[0],f[1],f[2],f[3],f[4],f[5],f[6],f[7],f[8],f[9]);default:return a.apply(b,
|
||||
f)}}return{invoke:d,instantiate:function(a,b){var c=function(){},e;c.prototype=(I(a)?a[a.length-1]:a).prototype;c=new c;e=d(a,c,b);return Q(e)?e:c},get:c,annotate:Wb,has:function(b){return m.hasOwnProperty(b+f)||a.hasOwnProperty(b)}}}var k={},f="Provider",l=[],h=new Ma,m={$provide:{provider:b(c),factory:b(d),service:b(function(a,b){return d(a,["$injector",function(a){return a.instantiate(b)}])}),value:b(function(a,b){return d(a,W(b))}),constant:b(function(a,b){m[a]=b;n[a]=b}),decorator:function(a,
|
||||
b){var c=p.get(a+f),d=c.$get;c.$get=function(){var a=s.invoke(d,c);return s.invoke(b,null,{$delegate:a})}}}},p=m.$injector=g(m,function(){throw Na("unpr",l.join(" <- "));}),n={},s=n.$injector=g(n,function(a){a=p.get(a+f);return s.invoke(a.$get,a)});q(e(a),function(a){s.invoke(a||w)});return s}function Sc(){var a=!0;this.disableAutoScrolling=function(){a=!1};this.$get=["$window","$location","$rootScope",function(b,c,d){function e(a){var b=null;q(a,function(a){b||"a"!==G(a.nodeName)||(b=a)});return b}
|
||||
function g(){var a=c.hash(),d;a?(d=k.getElementById(a))?d.scrollIntoView():(d=e(k.getElementsByName(a)))?d.scrollIntoView():"top"===a&&b.scrollTo(0,0):b.scrollTo(0,0)}var k=b.document;a&&d.$watch(function(){return c.hash()},function(){d.$evalAsync(g)});return g}]}function Tc(a,b,c,d){function e(a){try{a.apply(null,sa.call(arguments,1))}finally{if(r--,0===r)for(;y.length;)try{y.pop()()}catch(b){c.error(b)}}}function g(a,b){(function ua(){q(u,function(a){a()});da=b(ua,a)})()}function k(){x!=f.url()&&
|
||||
(x=f.url(),q(P,function(a){a(f.url())}))}var f=this,l=b[0],h=a.location,m=a.history,p=a.setTimeout,n=a.clearTimeout,s={};f.isMock=!1;var r=0,y=[];f.$$completeOutstandingRequest=e;f.$$incOutstandingRequestCount=function(){r++};f.notifyWhenNoOutstandingRequests=function(a){q(u,function(a){a()});0===r?a():y.push(a)};var u=[],da;f.addPollFn=function(a){J(da)&&g(100,p);u.push(a);return a};var x=h.href,B=b.find("base"),t=null;f.url=function(a,b){if(a){if(x!=a)return x=a,d.history?b?m.replaceState(null,
|
||||
"",a):(m.pushState(null,"",a),B.attr("href",B.attr("href"))):b?(h.replace(a),t=a):(h.href=a,t=null),f}else return t||h.href.replace(/%27/g,"'")};var P=[],na=!1;f.onUrlChange=function(b){if(!na){if(d.history)C(a).on("popstate",k);if(d.hashchange)C(a).on("hashchange",k);else f.addPollFn(k);na=!0}P.push(b);return b};f.baseHref=function(){var a=B.attr("href");return a?a.replace(/^https?\:\/\/[^\/]*/,""):""};var V={},ia="",X=f.baseHref();f.cookies=function(a,b){var d,e,f,g;if(a)b===v?l.cookie=escape(a)+
|
||||
"=;path="+X+";expires=Thu, 01 Jan 1970 00:00:00 GMT":z(b)&&(d=(l.cookie=escape(a)+"="+escape(b)+";path="+X).length+1,4096<d&&c.warn("Cookie '"+a+"' possibly not set or overflowed because it was too large ("+d+" > 4096 bytes)!"));else{if(l.cookie!==ia)for(ia=l.cookie,d=ia.split("; "),V={},f=0;f<d.length;f++)e=d[f],g=e.indexOf("="),0<g&&(a=unescape(e.substring(0,g)),V[a]===v&&(V[a]=unescape(e.substring(g+1))));return V}};f.defer=function(a,b){var c;r++;c=p(function(){delete s[c];e(a)},b||0);s[c]=!0;
|
||||
return c};f.defer.cancel=function(a){return s[a]?(delete s[a],n(a),e(w),!0):!1}}function Vc(){this.$get=["$window","$log","$sniffer","$document",function(a,b,c,d){return new Tc(a,d,b,c)}]}function Wc(){this.$get=function(){function a(a,d){function e(a){a!=p&&(n?n==a&&(n=a.n):n=a,g(a.n,a.p),g(a,p),p=a,p.n=null)}function g(a,b){a!=b&&(a&&(a.p=b),b&&(b.n=a))}if(a in b)throw M("$cacheFactory")("iid",a);var k=0,f=F({},d,{id:a}),l={},h=d&&d.capacity||Number.MAX_VALUE,m={},p=null,n=null;return b[a]={put:function(a,
|
||||
b){var c=m[a]||(m[a]={key:a});e(c);if(!J(b))return a in l||k++,l[a]=b,k>h&&this.remove(n.key),b},get:function(a){var b=m[a];if(b)return e(b),l[a]},remove:function(a){var b=m[a];b&&(b==p&&(p=b.p),b==n&&(n=b.n),g(b.n,b.p),delete m[a],delete l[a],k--)},removeAll:function(){l={};k=0;m={};p=n=null},destroy:function(){m=f=l=null;delete b[a]},info:function(){return F({},f,{size:k})}}}var b={};a.info=function(){var a={};q(b,function(b,e){a[e]=b.info()});return a};a.get=function(a){return b[a]};return a}}
|
||||
function Xc(){this.$get=["$cacheFactory",function(a){return a("templates")}]}function Xb(a){var b={},c="Directive",d=/^\s*directive\:\s*([\d\w\-_]+)\s+(.*)$/,e=/(([\d\w\-_]+)(?:\:([^;]+))?;?)/,g=/^\s*(https?|ftp|mailto|file):/,k=/^\s*(https?|ftp|file):|data:image\//,f=/^(on[a-z]*|formaction)$/;this.directive=function h(d,e){z(d)?(qb(e,"directiveFactory"),b.hasOwnProperty(d)||(b[d]=[],a.factory(d+c,["$injector","$exceptionHandler",function(a,c){var e=[];q(b[d],function(b){try{var f=a.invoke(b);H(f)?
|
||||
f={compile:W(f)}:!f.compile&&f.link&&(f.compile=W(f.link));f.priority=f.priority||0;f.name=f.name||d;f.require=f.require||f.controller&&f.name;f.restrict=f.restrict||"A";e.push(f)}catch(g){c(g)}});return e}])),b[d].push(e)):q(d,Gb(h));return this};this.aHrefSanitizationWhitelist=function(a){return A(a)?(g=a,this):g};this.imgSrcSanitizationWhitelist=function(a){return A(a)?(k=a,this):k};this.$get=["$injector","$interpolate","$exceptionHandler","$http","$templateCache","$parse","$controller","$rootScope",
|
||||
"$document","$sce","$$urlUtils","$animate",function(a,m,p,n,s,r,y,u,da,x,B,t){function P(a,b,c,d){a instanceof C||(a=C(a));q(a,function(b,c){3==b.nodeType&&b.nodeValue.match(/\S+/)&&(a[c]=C(b).wrap("<span></span>").parent()[0])});var e=V(a,b,a,c,d);return function(b,c){qb(b,"scope");for(var d=c?Pa.clone.call(a):a,f=0,g=d.length;f<g;f++){var m=d[f];1!=m.nodeType&&9!=m.nodeType||d.eq(f).data("$scope",b)}na(d,"ng-scope");c&&c(d,b);e&&e(b,d,d);return d}}function na(a,b){try{a.addClass(b)}catch(c){}}function V(a,
|
||||
b,c,d,e){function f(a,c,d,e){var m,h,k,p,n,s,r,E=[];n=0;for(s=c.length;n<s;n++)E.push(c[n]);r=n=0;for(s=g.length;n<s;r++)h=E[r],c=g[n++],m=g[n++],c?(c.scope?(k=a.$new(Q(c.scope)),C(h).data("$scope",k)):k=a,(p=c.transclude)||!e&&b?c(m,k,h,d,function(b){return function(c){var d=a.$new();d.$$transcluded=!0;return b(d,c).on("$destroy",nb(d,d.$destroy))}}(p||b)):c(m,k,h,v,e)):m&&m(a,h.childNodes,v,e)}for(var g=[],m,h,k,p=0;p<a.length;p++)h=new xb,m=ia(a[p],[],h,0==p?d:v,e),h=(m=m.length?ja(m,a[p],h,b,
|
||||
c):null)&&m.terminal||!a[p].childNodes||!a[p].childNodes.length?null:V(a[p].childNodes,m?m.transclude:b),g.push(m),g.push(h),k=k||m||h;return k?f:null}function ia(a,b,c,f,g){var m=c.$attr,h;switch(a.nodeType){case 1:D(b,ka(Aa(a).toLowerCase()),"E",f,g);var k,p,n;h=a.attributes;for(var s=0,r=h&&h.length;s<r;s++){var E,y,V;k=h[s];if(!R||8<=R||k.specified)p=k.name,n=ka(p),A.test(n)&&(p=n.substr(6).toLowerCase()),-1!=(V=n.lastIndexOf("Start"))&&V==n.length-5&&(E=p,y=p.substr(0,p.length-5)+"end",p=p.substr(0,
|
||||
p.length-6)),n=ka(p.toLowerCase()),m[n]=p,c[n]=k=Z(R&&"href"==p?decodeURIComponent(a.getAttribute(p,2)):k.value),Ub(a,n)&&(c[n]=!0),oa(a,b,k,n),D(b,n,"A",f,g,E,y)}a=a.className;if(z(a)&&""!==a)for(;h=e.exec(a);)n=ka(h[2]),D(b,n,"C",f,g)&&(c[n]=Z(h[3])),a=a.substr(h.index+h[0].length);break;case 3:Y(b,a.nodeValue);break;case 8:try{if(h=d.exec(a.nodeValue))n=ka(h[1]),D(b,n,"M",f,g)&&(c[n]=Z(h[2]))}catch(u){}}b.sort(K);return b}function X(a,b,c){var d=[],e=0;if(b&&a.hasAttribute&&a.hasAttribute(b)){do{if(!a)throw ea("uterdir",
|
||||
b,c);1==a.nodeType&&(a.hasAttribute(b)&&e++,a.hasAttribute(c)&&e--);d.push(a);a=a.nextSibling}while(0<e)}else d.push(a);return C(d)}function ba(a,b,c){return function(d,e,f,g){e=X(e[0],b,c);return a(d,e,f,g)}}function ja(a,b,c,d,e,f){function g(a,b,c,d){a&&(c&&(a=ba(a,c,d)),a.require=t.require,s.push(a));b&&(c&&(b=ba(b,c,d)),b.require=t.require,V.push(b))}function h(a,b){var c,d="data",e=!1;if(z(a)){for(;"^"==(c=a.charAt(0))||"?"==c;)a=a.substr(1),"^"==c&&(d="inheritedData"),e=e||"?"==c;c=b[d]("$"+
|
||||
a+"Controller");if(!c&&!e)throw ea("ctreq",a,x);}else I(a)&&(c=[],q(a,function(a){c.push(h(a,b))}));return c}function k(a,d,e,f,g){var n,E,t,u,B;n=b===e?c:Fc(c,new xb(C(e),c.$attr));E=n.$$element;if(D){var P=/^\s*([@=&])(\??)\s*(\w*)\s*$/,Y=d.$parent||d;q(D.scope,function(a,b){var c=a.match(P)||[],e=c[3]||b,f="?"==c[2],c=c[1],g,h,k;d.$$isolateBindings[b]=c+e;switch(c){case "@":n.$observe(e,function(a){d[b]=a});n.$$observers[e].$$scope=Y;n[e]&&(d[b]=m(n[e])(Y));break;case "=":if(f&&!n[e])break;h=r(n[e]);
|
||||
k=h.assign||function(){g=d[b]=h(Y);throw ea("nonassign",n[e],D.name);};g=d[b]=h(Y);d.$watch(function(){var a=h(Y);a!==d[b]&&(a!==g?g=d[b]=a:k(Y,a=g=d[b]));return a});break;case "&":h=r(n[e]);d[b]=function(a){return h(Y,a)};break;default:throw ea("iscp",D.name,b,a);}})}oa&&q(oa,function(a){var b={$scope:d,$element:E,$attrs:n,$transclude:g},c;B=a.controller;"@"==B&&(B=n[a.name]);c=y(B,b);E.data("$"+a.name+"Controller",c);a.controllerAs&&(b.$scope[a.controllerAs]=c)});f=0;for(t=s.length;f<t;f++)try{u=
|
||||
s[f],u(d,E,n,u.require&&h(u.require,E))}catch(L){p(L,ga(E))}a&&a(d,e.childNodes,v,g);f=0;for(t=V.length;f<t;f++)try{u=V[f],u(d,E,n,u.require&&h(u.require,E))}catch(Yc){p(Yc,ga(E))}}for(var n=-Number.MAX_VALUE,s=[],V=[],u=null,D=null,Y=null,B=c.$$element=C(b),t,x,L,da,pa=d,oa,ja,K=0,w=a.length;K<w;K++){t=a[K];var Qa=t.$$start,A=t.$$end;Qa&&(B=X(b,Qa,A));L=v;if(n>t.priority)break;if(L=t.scope)E("isolated scope",D,t,B),Q(L)&&(na(B,"ng-isolate-scope"),D=t),na(B,"ng-scope"),u=u||t;x=t.name;if(L=t.controller)oa=
|
||||
oa||{},E("'"+x+"' controller",oa[x],t,B),oa[x]=t;if(L=t.transclude)E("transclusion",da,t,B),da=t,n=t.priority,"element"==L?(L=X(b,Qa,A),B=c.$$element=C(N.createComment(" "+x+": "+c[x]+" ")),b=B[0],bb(e,C(sa.call(L,0)),b),pa=P(L,d,n,f&&f.name)):(L=C(vb(b)).contents(),B.html(""),pa=P(L,d));if(t.template)if(E("template",Y,t,B),Y=t,L=H(t.template)?t.template(B,c):t.template,L=Yb(L),t.replace){f=t;L=C("<div>"+Z(L)+"</div>").contents();b=L[0];if(1!=L.length||1!==b.nodeType)throw ea("tplrt",x,"");bb(e,B,
|
||||
b);w={$attr:{}};a=a.concat(ia(b,a.splice(K+1,a.length-(K+1)),w));ua(c,w);w=a.length}else B.html(L);if(t.templateUrl)E("template",Y,t,B),Y=t,t.replace&&(f=t),k=Uc(a.splice(K,a.length-K),k,B,c,e,pa),w=a.length;else if(t.compile)try{ja=t.compile(B,c,pa),H(ja)?g(null,ja,Qa,A):ja&&g(ja.pre,ja.post,Qa,A)}catch(F){p(F,ga(B))}t.terminal&&(k.terminal=!0,n=Math.max(n,t.priority))}k.scope=u&&u.scope;k.transclude=da&&pa;return k}function D(d,e,f,g,m,k,n){if(e===m)return null;m=null;if(b.hasOwnProperty(e)){var s;
|
||||
e=a.get(e+c);for(var r=0,E=e.length;r<E;r++)try{s=e[r],(g===v||g>s.priority)&&-1!=s.restrict.indexOf(f)&&(k&&(s=Cc(s,{$$start:k,$$end:n})),d.push(s),m=s)}catch(t){p(t)}}return m}function ua(a,b){var c=b.$attr,d=a.$attr,e=a.$$element;q(a,function(d,e){"$"!=e.charAt(0)&&(b[e]&&(d+=("style"===e?";":" ")+b[e]),a.$set(e,d,!0,c[e]))});q(b,function(b,f){"class"==f?(na(e,b),a["class"]=(a["class"]?a["class"]+" ":"")+b):"style"==f?e.attr("style",e.attr("style")+";"+b):"$"==f.charAt(0)||a.hasOwnProperty(f)||
|
||||
(a[f]=b,d[f]=c[f])})}function Uc(a,b,c,d,e,f){var g=[],m,h,k=c[0],p=a.shift(),r=F({},p,{controller:null,templateUrl:null,transclude:null,scope:null,replace:null}),E=H(p.templateUrl)?p.templateUrl(c,d):p.templateUrl;c.html("");n.get(x.getTrustedResourceUrl(E),{cache:s}).success(function(n){var s;n=Yb(n);if(p.replace){n=C("<div>"+Z(n)+"</div>").contents();s=n[0];if(1!=n.length||1!==s.nodeType)throw ea("tplrt",p.name,E);n={$attr:{}};bb(e,c,s);ia(s,a,n);ua(d,n)}else s=k,c.html(n);a.unshift(r);m=ja(a,
|
||||
s,d,f,c,p);q(e,function(a,b){a==s&&(e[b]=c[0])});for(h=V(c[0].childNodes,f);g.length;){n=g.shift();var t=g.shift(),u=g.shift(),y=g.shift(),B=c[0];t!==k&&(B=vb(s),bb(u,C(t),B));m(b(h,n,B,e,y),n,B,e,y)}g=null}).error(function(a,b,c,d){throw ea("tpload",d.url);});return function(a,c,d,e,f){g?(g.push(c),g.push(d),g.push(e),g.push(f)):m(function(){b(h,c,d,e,f)},c,d,e,f)}}function K(a,b){return b.priority-a.priority}function E(a,b,c,d){if(b)throw ea("multidir",b.name,c.name,a,ga(d));}function Y(a,b){var c=
|
||||
m(b,!0);c&&a.push({priority:0,compile:W(function(a,b){var d=b.parent(),e=d.data("$binding")||[];e.push(c);na(d.data("$binding",e),"ng-binding");a.$watch(c,function(a){b[0].nodeValue=a})})})}function L(a,b){if("xlinkHref"==b||"IMG"!=Aa(a)&&("src"==b||"ngSrc"==b))return x.RESOURCE_URL}function oa(a,b,c,d){var e=m(c,!0);if(e){if("multiple"===d&&"SELECT"===Aa(a))throw ea("selmulti",ga(a));b.push({priority:100,compile:W(function(b,c,g){c=g.$$observers||(g.$$observers={});if(f.test(d))throw ea("nodomevents");
|
||||
if(e=m(g[d],!0,L(a,d)))g[d]=e(b),(c[d]||(c[d]=[])).$$inter=!0,(g.$$observers&&g.$$observers[d].$$scope||b).$watch(e,function(a){g.$set(d,a)})})})}}function bb(a,b,c){var d=b[0],e=b.length,f=d.parentNode,g,m;if(a)for(g=0,m=a.length;g<m;g++)if(a[g]==d){a[g++]=c;m=g+e-1;for(var h=a.length;g<h;g++,m++)m<h?a[g]=a[m]:delete a[g];a.length-=e-1;break}f&&f.replaceChild(c,d);a=N.createDocumentFragment();a.appendChild(d);c[C.expando]=d[C.expando];d=1;for(e=b.length;d<e;d++)f=b[d],C(f).remove(),a.appendChild(f),
|
||||
delete b[d];b[0]=c;b.length=1}var xb=function(a,b){this.$$element=a;this.$attr=b||{}};xb.prototype={$normalize:ka,$addClass:function(a){a&&0<a.length&&t.addClass(this.$$element,a)},$removeClass:function(a){a&&0<a.length&&t.removeClass(this.$$element,a)},$set:function(a,b,c,d){function e(a,b){var c=[],d=a.split(/\s+/),f=b.split(/\s+/),g=0;a:for(;g<d.length;g++){for(var m=d[g],h=0;h<f.length;h++)if(m==f[h])continue a;c.push(m)}return c}if("class"==a)b=b||"",c=this.$$element.attr("class")||"",this.$removeClass(e(c,
|
||||
b).join(" ")),this.$addClass(e(b,c).join(" "));else{var f=Ub(this.$$element[0],a);f&&(this.$$element.prop(a,b),d=f);this[a]=b;d?this.$attr[a]=d:(d=this.$attr[a])||(this.$attr[a]=d=pb(a,"-"));f=Aa(this.$$element);if("A"===f&&"href"===a||"IMG"===f&&"src"===a)if(!R||8<=R)f=B.resolve(b),""!==f&&("href"===a&&!f.match(g)||"src"===a&&!f.match(k))&&(this[a]=b="unsafe:"+f);!1!==c&&(null===b||b===v?this.$$element.removeAttr(d):this.$$element.attr(d,b))}(c=this.$$observers)&&q(c[a],function(a){try{a(b)}catch(c){p(c)}})},
|
||||
$observe:function(a,b){var c=this,d=c.$$observers||(c.$$observers={}),e=d[a]||(d[a]=[]);e.push(b);u.$evalAsync(function(){e.$$inter||b(c[a])});return b}};da[0].createElement("a");var w=m.startSymbol(),pa=m.endSymbol(),Yb="{{"==w||"}}"==pa?wa:function(a){return a.replace(/\{\{/g,w).replace(/}}/g,pa)},A=/^ngAttr[A-Z]/;return P}]}function ka(a){return Ja(a.replace(Zc,""))}function $c(){var a={},b=/^(\S+)(\s+as\s+(\w+))?$/;this.register=function(b,d){Q(b)?F(a,b):a[b]=d};this.$get=["$injector","$window",
|
||||
function(c,d){return function(e,g){var k,f,l;z(e)&&(k=e.match(b),f=k[1],l=k[3],e=a.hasOwnProperty(f)?a[f]:rb(g.$scope,f,!0)||rb(d,f,!0),Ia(e,f,!0));k=c.instantiate(e,g);if(l){if(!g||"object"!=typeof g.$scope)throw M("$controller")("noscp",f||e.name,l);g.$scope[l]=k}return k}}]}function ad(){this.$get=["$window",function(a){return C(a.document)}]}function bd(){this.$get=["$log",function(a){return function(b,c){a.error.apply(a,arguments)}}]}function Zb(a){var b={},c,d,e;if(!a)return b;q(a.split("\n"),
|
||||
function(a){e=a.indexOf(":");c=G(Z(a.substr(0,e)));d=Z(a.substr(e+1));c&&(b[c]=b[c]?b[c]+(", "+d):d)});return b}function $b(a){var b=Q(a)?a:v;return function(c){b||(b=Zb(a));return c?b[G(c)]||null:b}}function ac(a,b,c){if(H(c))return c(a,b);q(c,function(c){a=c(a,b)});return a}function cd(){var a=/^\s*(\[|\{[^\{])/,b=/[\}\]]\s*$/,c=/^\)\]\}',?\n/,d={"Content-Type":"application/json;charset=utf-8"},e=this.defaults={transformResponse:[function(d){z(d)&&(d=d.replace(c,""),a.test(d)&&b.test(d)&&(d=Ib(d,
|
||||
!0)));return d}],transformRequest:[function(a){return Q(a)&&"[object File]"!==Va.apply(a)?ma(a):a}],headers:{common:{Accept:"application/json, text/plain, */*"},post:d,put:d,patch:d},xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN"},g=this.interceptors=[],k=this.responseInterceptors=[];this.$get=["$httpBackend","$browser","$cacheFactory","$rootScope","$q","$injector","$$urlUtils",function(a,b,c,d,p,n,s){function r(a){function c(a){var b=F({},a,{data:ac(a.data,a.headers,d.transformResponse)});
|
||||
return 200<=a.status&&300>a.status?b:p.reject(b)}var d={transformRequest:e.transformRequest,transformResponse:e.transformResponse},f=function(a){function b(a){var c;q(a,function(b,d){H(b)&&(c=b(),null!=c?a[d]=c:delete a[d])})}var c=e.headers,d=F({},a.headers),f,g,c=F({},c.common,c[G(a.method)]);b(c);b(d);a:for(f in c){a=G(f);for(g in d)if(G(g)===a)continue a;d[f]=c[f]}return d}(a);F(d,a);d.headers=f;d.method=Ba(d.method);(a=s.isSameOrigin(d.url)?b.cookies()[d.xsrfCookieName||e.xsrfCookieName]:v)&&
|
||||
(f[d.xsrfHeaderName||e.xsrfHeaderName]=a);var g=[function(a){f=a.headers;var b=ac(a.data,$b(f),a.transformRequest);J(a.data)&&q(f,function(a,b){"content-type"===G(b)&&delete f[b]});J(a.withCredentials)&&!J(e.withCredentials)&&(a.withCredentials=e.withCredentials);return y(a,b,f).then(c,c)},v],m=p.when(d);for(q(x,function(a){(a.request||a.requestError)&&g.unshift(a.request,a.requestError);(a.response||a.responseError)&&g.push(a.response,a.responseError)});g.length;){a=g.shift();var h=g.shift(),m=m.then(a,
|
||||
h)}m.success=function(a){m.then(function(b){a(b.data,b.status,b.headers,d)});return m};m.error=function(a){m.then(null,function(b){a(b.data,b.status,b.headers,d)});return m};return m}function y(b,c,g){function h(a,b,c){y&&(200<=a&&300>a?y.put(x,[a,b,Zb(c)]):y.remove(x));l(b,a,c);d.$$phase||d.$apply()}function l(a,c,d){c=Math.max(c,0);(200<=c&&300>c?k.resolve:k.reject)({data:a,status:c,headers:$b(d),config:b})}function n(){var a=Wa(r.pendingRequests,b);-1!==a&&r.pendingRequests.splice(a,1)}var k=p.defer(),
|
||||
s=k.promise,y,q,x=u(b.url,b.params);r.pendingRequests.push(b);s.then(n,n);(b.cache||e.cache)&&(!1!==b.cache&&"GET"==b.method)&&(y=Q(b.cache)?b.cache:Q(e.cache)?e.cache:da);if(y)if(q=y.get(x)){if(q.then)return q.then(n,n),q;I(q)?l(q[1],q[0],aa(q[2])):l(q,200,{})}else y.put(x,s);q||a(b.method,x,c,h,g,b.timeout,b.withCredentials,b.responseType);return s}function u(a,b){if(!b)return a;var c=[];Bc(b,function(a,b){null!=a&&a!=v&&(I(a)||(a=[a]),q(a,function(a){Q(a)&&(a=ma(a));c.push(ta(b)+"="+ta(a))}))});
|
||||
return a+(-1==a.indexOf("?")?"?":"&")+c.join("&")}var da=c("$http"),x=[];q(g,function(a){x.unshift(z(a)?n.get(a):n.invoke(a))});q(k,function(a,b){var c=z(a)?n.get(a):n.invoke(a);x.splice(b,0,{response:function(a){return c(p.when(a))},responseError:function(a){return c(p.reject(a))}})});r.pendingRequests=[];(function(a){q(arguments,function(a){r[a]=function(b,c){return r(F(c||{},{method:a,url:b}))}})})("get","delete","head","jsonp");(function(a){q(arguments,function(a){r[a]=function(b,c,d){return r(F(d||
|
||||
{},{method:a,url:b,data:c}))}})})("post","put");r.defaults=e;return r}]}function dd(){this.$get=["$browser","$window","$document",function(a,b,c){return ed(a,fd,a.defer,b.angular.callbacks,c[0],b.location.protocol.replace(":",""))}]}function ed(a,b,c,d,e,g){function k(a,b){var c=e.createElement("script"),d=function(){e.body.removeChild(c);b&&b()};c.type="text/javascript";c.src=a;R?c.onreadystatechange=function(){/loaded|complete/.test(c.readyState)&&d()}:c.onload=c.onerror=d;e.body.appendChild(c);
|
||||
return d}return function(e,l,h,m,p,n,s,r){function y(){v=-1;B&&B();t&&t.abort()}function u(b,d,e,f){var m=(l.match(bc)||["",g])[1];P&&c.cancel(P);B=t=null;d="file"==m?e?200:404:d;b(1223==d?204:d,e,f);a.$$completeOutstandingRequest(w)}var v;a.$$incOutstandingRequestCount();l=l||a.url();if("jsonp"==G(e)){var x="_"+(d.counter++).toString(36);d[x]=function(a){d[x].data=a};var B=k(l.replace("JSON_CALLBACK","angular.callbacks."+x),function(){d[x].data?u(m,200,d[x].data):u(m,v||-2);delete d[x]})}else{var t=
|
||||
new b;t.open(e,l,!0);q(p,function(a,b){a&&t.setRequestHeader(b,a)});t.onreadystatechange=function(){if(4==t.readyState){var a=t.getAllResponseHeaders(),b="Cache-Control Content-Language Content-Type Expires Last-Modified Pragma".split(" ");a||(a="",q(b,function(b){var c=t.getResponseHeader(b);c&&(a+=b+": "+c+"\n")}));u(m,v||t.status,t.responseType?t.response:t.responseText,a)}};s&&(t.withCredentials=!0);r&&(t.responseType=r);t.send(h||"")}if(0<n)var P=c(y,n);else n&&n.then&&n.then(y)}}function gd(){var a=
|
||||
"{{",b="}}";this.startSymbol=function(b){return b?(a=b,this):a};this.endSymbol=function(a){return a?(b=a,this):b};this.$get=["$parse","$exceptionHandler","$sce",function(c,d,e){function g(g,h,m){for(var p,n,s=0,r=[],y=g.length,u=!1,q=[];s<y;)-1!=(p=g.indexOf(a,s))&&-1!=(n=g.indexOf(b,p+k))?(s!=p&&r.push(g.substring(s,p)),r.push(s=c(u=g.substring(p+k,n))),s.exp=u,s=n+f,u=!0):(s!=y&&r.push(g.substring(s)),s=y);(y=r.length)||(r.push(""),y=1);if(m&&1<r.length)throw cc("noconcat",g);if(!h||u)return q.length=
|
||||
y,s=function(a){try{for(var b=0,c=y,f;b<c;b++)"function"==typeof(f=r[b])&&(f=f(a),f=m?e.getTrusted(m,f):e.valueOf(f),null==f||f==v?f="":"string"!=typeof f&&(f=ma(f))),q[b]=f;return q.join("")}catch(h){a=cc("interr",g,h.toString()),d(a)}},s.exp=g,s.parts=r,s}var k=a.length,f=b.length;g.startSymbol=function(){return a};g.endSymbol=function(){return b};return g}]}function hd(){this.$get=function(){return{id:"en-us",NUMBER_FORMATS:{DECIMAL_SEP:".",GROUP_SEP:",",PATTERNS:[{minInt:1,minFrac:0,maxFrac:3,
|
||||
posPre:"",posSuf:"",negPre:"-",negSuf:"",gSize:3,lgSize:3},{minInt:1,minFrac:2,maxFrac:2,posPre:"\u00a4",posSuf:"",negPre:"(\u00a4",negSuf:")",gSize:3,lgSize:3}],CURRENCY_SYM:"$"},DATETIME_FORMATS:{MONTH:"January February March April May June July August September October November December".split(" "),SHORTMONTH:"Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" "),DAY:"Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),SHORTDAY:"Sun Mon Tue Wed Thu Fri Sat".split(" "),AMPMS:["AM",
|
||||
"PM"],medium:"MMM d, y h:mm:ss a","short":"M/d/yy h:mm a",fullDate:"EEEE, MMMM d, y",longDate:"MMMM d, y",mediumDate:"MMM d, y",shortDate:"M/d/yy",mediumTime:"h:mm:ss a",shortTime:"h:mm a"},pluralCat:function(a){return 1===a?"one":"other"}}}}function dc(a){a=a.split("/");for(var b=a.length;b--;)a[b]=ob(a[b]);return a.join("/")}function ec(a,b){var c=bc.exec(a);b.$$protocol=c[1];b.$$host=c[3];b.$$port=U(c[5])||id[c[1]]||null}function fc(a,b){var c=gc.exec(a);b.$$path=decodeURIComponent(c[1]);b.$$search=
|
||||
Kb(c[3]);b.$$hash=decodeURIComponent(c[5]||"");b.$$path&&"/"!=b.$$path.charAt(0)&&(b.$$path="/"+b.$$path)}function la(a,b,c){return 0==b.indexOf(a)?b.substr(a.length):c}function Ra(a){var b=a.indexOf("#");return-1==b?a:a.substr(0,b)}function yb(a){return a.substr(0,Ra(a).lastIndexOf("/")+1)}function hc(a,b){this.$$html5=!0;b=b||"";var c=yb(a);this.$$parse=function(a){var b={};ec(a,b);var g=la(c,a);if(!z(g))throw zb("ipthprfx",a,c);fc(g,b);F(this,b);this.$$path||(this.$$path="/");this.$$compose()};
|
||||
this.$$compose=function(){var a=Lb(this.$$search),b=this.$$hash?"#"+ob(this.$$hash):"";this.$$url=dc(this.$$path)+(a?"?"+a:"")+b;this.$$absUrl=c+this.$$url.substr(1)};this.$$rewrite=function(d){var e;if((e=la(a,d))!==v)return d=e,(e=la(b,e))!==v?c+(la("/",e)||e):a+d;if((e=la(c,d))!==v)return c+e;if(c==d+"/")return c}}function Ab(a,b){var c=yb(a);ec(a,this);this.$$parse=function(d){var e=la(a,d)||la(c,d),e="#"==e.charAt(0)?la(b,e):this.$$html5?e:"";if(!z(e))throw zb("ihshprfx",d,b);fc(e,this);this.$$compose()};
|
||||
this.$$compose=function(){var c=Lb(this.$$search),e=this.$$hash?"#"+ob(this.$$hash):"";this.$$url=dc(this.$$path)+(c?"?"+c:"")+e;this.$$absUrl=a+(this.$$url?b+this.$$url:"")};this.$$rewrite=function(b){if(Ra(a)==Ra(b))return b}}function ic(a,b){this.$$html5=!0;Ab.apply(this,arguments);var c=yb(a);this.$$rewrite=function(d){var e;if(a==Ra(d))return d;if(e=la(c,d))return a+b+e;if(c===d+"/")return c}}function cb(a){return function(){return this[a]}}function jc(a,b){return function(c){if(J(c))return this[a];
|
||||
this[a]=b(c);this.$$compose();return this}}function jd(){var a="",b=!1;this.hashPrefix=function(b){return A(b)?(a=b,this):a};this.html5Mode=function(a){return A(a)?(b=a,this):b};this.$get=["$rootScope","$browser","$sniffer","$rootElement",function(c,d,e,g){function k(a){c.$broadcast("$locationChangeSuccess",f.absUrl(),a)}var f,l=d.baseHref(),h=d.url();b?(l=h.substring(0,h.indexOf("/",h.indexOf("//")+2))+(l||"/"),e=e.history?hc:ic):(l=Ra(h),e=Ab);f=new e(l,"#"+a);f.$$parse(f.$$rewrite(h));g.on("click",
|
||||
function(a){if(!a.ctrlKey&&!a.metaKey&&2!=a.which){for(var b=C(a.target);"a"!==G(b[0].nodeName);)if(b[0]===g[0]||!(b=b.parent())[0])return;var e=b.prop("href"),m=f.$$rewrite(e);e&&(!b.attr("target")&&m&&!a.isDefaultPrevented())&&(a.preventDefault(),m!=d.url()&&(f.$$parse(m),c.$apply(),T.angular["ff-684208-preventDefault"]=!0))}});f.absUrl()!=h&&d.url(f.absUrl(),!0);d.onUrlChange(function(a){f.absUrl()!=a&&(c.$broadcast("$locationChangeStart",a,f.absUrl()).defaultPrevented?d.url(f.absUrl()):(c.$evalAsync(function(){var b=
|
||||
f.absUrl();f.$$parse(a);k(b)}),c.$$phase||c.$digest()))});var m=0;c.$watch(function(){var a=d.url(),b=f.$$replace;m&&a==f.absUrl()||(m++,c.$evalAsync(function(){c.$broadcast("$locationChangeStart",f.absUrl(),a).defaultPrevented?f.$$parse(a):(d.url(f.absUrl(),b),k(a))}));f.$$replace=!1;return m});return f}]}function kd(){var a=!0,b=this;this.debugEnabled=function(b){return A(b)?(a=b,this):a};this.$get=["$window",function(c){function d(a){a instanceof Error&&(a.stack?a=a.message&&-1===a.stack.indexOf(a.message)?
|
||||
"Error: "+a.message+"\n"+a.stack:a.stack:a.sourceURL&&(a=a.message+"\n"+a.sourceURL+":"+a.line));return a}function e(a){var b=c.console||{},e=b[a]||b.log||w;return e.apply?function(){var a=[];q(arguments,function(b){a.push(d(b))});return e.apply(b,a)}:function(a,b){e(a,b)}}return{log:e("log"),info:e("info"),warn:e("warn"),error:e("error"),debug:function(){var c=e("debug");return function(){a&&c.apply(b,arguments)}}()}}]}function qa(a,b){if("constructor"===a)throw Sa("isecfld",b);return a}function kc(a,
|
||||
b){if(a&&a.constructor===a)throw Sa("isecfn",b);return a}function ld(a,b){function c(a){return-1!=a.indexOf(u)}function d(b){b=b||1;return r+b<a.length?a.charAt(r+b):!1}function e(a){return"0"<=a&&"9">=a}function g(a){return" "==a||"\r"==a||"\t"==a||"\n"==a||"\v"==a||"\u00a0"==a}function k(a){return"a"<=a&&"z">=a||"A"<=a&&"Z">=a||"_"==a||"$"==a}function f(a){return"-"==a||"+"==a||e(a)}function l(b,c,d){d=d||r;c=A(c)?"s "+c+"-"+r+" ["+a.substring(c,d)+"]":" "+d;throw Sa("lexerr",b,c,a);}function h(){for(var b=
|
||||
"",c=r;r<a.length;){var g=G(a.charAt(r));if("."==g||e(g))b+=g;else{var m=d();if("e"==g&&f(m))b+=g;else if(f(g)&&m&&e(m)&&"e"==b.charAt(b.length-1))b+=g;else if(!f(g)||m&&e(m)||"e"!=b.charAt(b.length-1))break;else l("Invalid exponent")}r++}b*=1;n.push({index:c,text:b,json:!0,fn:function(){return b}})}function m(){for(var c="",d=r,f,m,h,l;r<a.length;){l=a.charAt(r);if("."==l||k(l)||e(l))"."==l&&(f=r),c+=l;else break;r++}if(f)for(m=r;m<a.length;){l=a.charAt(m);if("("==l){h=c.substr(f-d+1);c=c.substr(0,
|
||||
f-d);r=m;break}if(g(l))m++;else break}d={index:d,text:c};if(Ta.hasOwnProperty(c))d.fn=d.json=Ta[c];else{var p=lc(c,b,a);d.fn=F(function(a,b){return p(a,b)},{assign:function(b,d){return db(b,c,d,a)}})}n.push(d);h&&(n.push({index:f,text:".",json:!1}),n.push({index:f+1,text:h,json:!1}))}function p(b){var c=r;r++;for(var d="",e=b,f=!1;r<a.length;){var g=a.charAt(r),e=e+g;if(f)"u"==g?(g=a.substring(r+1,r+5),g.match(/[\da-f]{4}/i)||l("Invalid unicode escape [\\u"+g+"]"),r+=4,d+=String.fromCharCode(parseInt(g,
|
||||
16))):d=(f=md[g])?d+f:d+g,f=!1;else if("\\"==g)f=!0;else{if(g==b){r++;n.push({index:c,text:e,string:d,json:!0,fn:function(){return d}});return}d+=g}r++}l("Unterminated quote",c)}for(var n=[],s,r=0,y=[],u,q=":";r<a.length;){u=a.charAt(r);if(c("\"'"))p(u);else if(e(u)||c(".")&&e(d()))h();else if(k(u))m(),-1!="{,".indexOf(q)&&("{"==y[0]&&(s=n[n.length-1]))&&(s.json=-1==s.text.indexOf("."));else if(c("(){}[].,;:?"))n.push({index:r,text:u,json:-1!=":[,".indexOf(q)&&c("{[")||c("}]:,")}),c("{[")&&y.unshift(u),
|
||||
c("}]")&&y.shift(),r++;else if(g(u)){r++;continue}else{var x=u+d(),v=x+d(2),t=Ta[u],P=Ta[x],w=Ta[v];w?(n.push({index:r,text:v,fn:w}),r+=3):P?(n.push({index:r,text:x,fn:P}),r+=2):t?(n.push({index:r,text:u,fn:t,json:-1!="[,:".indexOf(q)&&c("+-")}),r+=1):l("Unexpected next character ",r,r+1)}q=u}return n}function nd(a,b,c,d){function e(b,c){throw Sa("syntax",c.text,b,c.index+1,a,a.substring(c.index));}function g(){if(0===ba.length)throw Sa("ueoe",a);return ba[0]}function k(a,b,c,d){if(0<ba.length){var e=
|
||||
ba[0],f=e.text;if(f==a||f==b||f==c||f==d||!(a||b||c||d))return e}return!1}function f(a,c,d,f){return(a=k(a,c,d,f))?(b&&!a.json&&e("is not valid json",a),ba.shift(),a):!1}function l(a){f(a)||e("is unexpected, expecting ["+a+"]",k())}function h(a,b){return F(function(c,d){return a(c,d,b)},{constant:b.constant})}function m(a,b,c){return F(function(d,e){return a(d,e)?b(d,e):c(d,e)},{constant:a.constant&&b.constant&&c.constant})}function p(a,b,c){return F(function(d,e){return b(d,e,a,c)},{constant:a.constant&&
|
||||
c.constant})}function n(){for(var a=[];;)if(0<ba.length&&!k("}",")",";","]")&&a.push(K()),!f(";"))return 1==a.length?a[0]:function(b,c){for(var d,e=0;e<a.length;e++){var f=a[e];f&&(d=f(b,c))}return d}}function s(){for(var a=f(),b=c(a.text),d=[];;)if(a=f(":"))d.push(z());else{var e=function(a,c,e){e=[e];for(var f=0;f<d.length;f++)e.push(d[f](a,c));return b.apply(a,e)};return function(){return e}}}function r(){var a=y(),b,c;if(f("?")){b=r();if(c=f(":"))return m(a,b,r());e("expected :",c)}else return a}
|
||||
function y(){for(var a=u(),b;;)if(b=f("||"))a=p(a,b.fn,u());else return a}function u(){var a=q(),b;if(b=f("&&"))a=p(a,b.fn,u());return a}function q(){var a=x(),b;if(b=f("==","!=","===","!=="))a=p(a,b.fn,q());return a}function x(){var a;a=B();for(var b;b=f("+","-");)a=p(a,b.fn,B());if(b=f("<",">","<=",">="))a=p(a,b.fn,x());return a}function B(){for(var a=t(),b;b=f("*","/","%");)a=p(a,b.fn,t());return a}function t(){var a;return f("+")?P():(a=f("-"))?p(ia,a.fn,t()):(a=f("!"))?h(a.fn,t()):P()}function P(){var a;
|
||||
if(f("("))a=K(),l(")");else if(f("["))a=C();else if(f("{"))a=A();else{var b=f();(a=b.fn)||e("not a primary expression",b);b.json&&(a.constant=a.literal=!0)}for(var c;b=f("(","[",".");)"("===b.text?(a=D(a,c),c=null):"["===b.text?(c=a,a=I(a)):"."===b.text?(c=a,a=ua(a)):e("IMPOSSIBLE");return a}function C(){var a=[],b=!0;if("]"!=g().text){do{var c=z();a.push(c);c.constant||(b=!1)}while(f(","))}l("]");return F(function(b,c){for(var d=[],e=0;e<a.length;e++)d.push(a[e](b,c));return d},{literal:!0,constant:b})}
|
||||
function A(){var a=[],b=!0;if("}"!=g().text){do{var c=f(),c=c.string||c.text;l(":");var d=z();a.push({key:c,value:d});d.constant||(b=!1)}while(f(","))}l("}");return F(function(b,c){for(var d={},e=0;e<a.length;e++){var f=a[e];d[f.key]=f.value(b,c)}return d},{literal:!0,constant:b})}var ia=W(0),X,ba=ld(a,d),z=function(){var b=r(),c,d;return(d=f("="))?(b.assign||e("implies assignment but ["+a.substring(0,d.index)+"] can not be assigned to",d),c=r(),function(a,d){return b.assign(a,c(a,d),d)}):b},D=function(a,
|
||||
b){var c=[];if(")"!=g().text){do c.push(z());while(f(","))}l(")");return function(d,e){for(var f=[],g=b?b(d,e):d,m=0;m<c.length;m++)f.push(c[m](d,e));m=a(d,e,g)||w;return m.apply?m.apply(g,f):m(f[0],f[1],f[2],f[3],f[4])}},ua=function(b){var c=f().text,e=lc(c,d,a);return F(function(a,c,d){return e(d||b(a,c),c)},{assign:function(d,e,f){return db(b(d,f),c,e,a)}})},I=function(b){var c=z();l("]");return F(function(d,e){var f=b(d,e),g=c(d,e),m;if(!f)return v;(f=kc(f[g],a))&&f.then&&(m=f,"$$v"in f||(m.$$v=
|
||||
v,m.then(function(a){m.$$v=a})),f=f.$$v);return f},{assign:function(d,e,f){var g=c(d,f);return kc(b(d,f),a)[g]=e}})},K=function(){for(var a=z(),b;;)if(b=f("|"))a=p(a,b.fn,s());else return a};b?(z=y,D=ua=I=K=function(){e("is not valid json",{text:a,index:0})},X=P()):X=n();0!==ba.length&&e("is an unexpected token",ba[0]);X.literal=!!X.literal;X.constant=!!X.constant;return X}function db(a,b,c,d){b=b.split(".");for(var e,g=0;1<b.length;g++){e=qa(b.shift(),d);var k=a[e];k||(k={},a[e]=k);a=k;a.then&&("$$v"in
|
||||
a||function(a){a.then(function(b){a.$$v=b})}(a),a.$$v===v&&(a.$$v={}),a=a.$$v)}e=qa(b.shift(),d);return a[e]=c}function mc(a,b,c,d,e,g){qa(a,g);qa(b,g);qa(c,g);qa(d,g);qa(e,g);return function(g,f){var l=f&&f.hasOwnProperty(a)?f:g,h;if(null===l||l===v)return l;(l=l[a])&&l.then&&("$$v"in l||(h=l,h.$$v=v,h.then(function(a){h.$$v=a})),l=l.$$v);if(!b||null===l||l===v)return l;(l=l[b])&&l.then&&("$$v"in l||(h=l,h.$$v=v,h.then(function(a){h.$$v=a})),l=l.$$v);if(!c||null===l||l===v)return l;(l=l[c])&&l.then&&
|
||||
("$$v"in l||(h=l,h.$$v=v,h.then(function(a){h.$$v=a})),l=l.$$v);if(!d||null===l||l===v)return l;(l=l[d])&&l.then&&("$$v"in l||(h=l,h.$$v=v,h.then(function(a){h.$$v=a})),l=l.$$v);if(!e||null===l||l===v)return l;(l=l[e])&&l.then&&("$$v"in l||(h=l,h.$$v=v,h.then(function(a){h.$$v=a})),l=l.$$v);return l}}function lc(a,b,c){if(Bb.hasOwnProperty(a))return Bb[a];var d=a.split("."),e=d.length;if(b)b=6>e?mc(d[0],d[1],d[2],d[3],d[4],c):function(a,b){var g=0,h;do h=mc(d[g++],d[g++],d[g++],d[g++],d[g++],c)(a,
|
||||
b),b=v,a=h;while(g<e);return h};else{var g="var l, fn, p;\n";q(d,function(a,b){qa(a,c);g+="if(s === null || s === undefined) return s;\nl=s;\ns="+(b?"s":'((k&&k.hasOwnProperty("'+a+'"))?k:s)')+'["'+a+'"];\nif (s && s.then) {\n if (!("$$v" in s)) {\n p=s;\n p.$$v = undefined;\n p.then(function(v) {p.$$v=v;});\n}\n s=s.$$v\n}\n'});g+="return s;";b=Function("s","k",g);b.toString=function(){return g}}return Bb[a]=b}function od(){var a={};this.$get=["$filter","$sniffer",function(b,c){return function(d){switch(typeof d){case "string":return a.hasOwnProperty(d)?
|
||||
a[d]:a[d]=nd(d,!1,b,c.csp);case "function":return d;default:return w}}}]}function pd(){this.$get=["$rootScope","$exceptionHandler",function(a,b){return qd(function(b){a.$evalAsync(b)},b)}]}function qd(a,b){function c(a){return a}function d(a){return k(a)}var e=function(){var f=[],l,h;return h={resolve:function(b){if(f){var c=f;f=v;l=g(b);c.length&&a(function(){for(var a,b=0,d=c.length;b<d;b++)a=c[b],l.then(a[0],a[1],a[2])})}},reject:function(a){h.resolve(k(a))},notify:function(b){if(f){var c=f;f.length&&
|
||||
a(function(){for(var a,d=0,e=c.length;d<e;d++)a=c[d],a[2](b)})}},promise:{then:function(a,g,h){var k=e(),r=function(d){try{k.resolve((a||c)(d))}catch(e){k.reject(e),b(e)}},y=function(a){try{k.resolve((g||d)(a))}catch(c){k.reject(c),b(c)}},u=function(a){try{k.notify((h||c)(a))}catch(d){b(d)}};f?f.push([r,y,u]):l.then(r,y,u);return k.promise},"catch":function(a){return this.then(null,a)},"finally":function(a){function b(a,c){var d=e();c?d.resolve(a):d.reject(a);return d.promise}function d(e,f){var g=
|
||||
null;try{g=(a||c)()}catch(h){return b(h,!1)}return g&&g.then?g.then(function(){return b(e,f)},function(a){return b(a,!1)}):b(e,f)}return this.then(function(a){return d(a,!0)},function(a){return d(a,!1)})}}}},g=function(b){return b&&b.then?b:{then:function(c){var d=e();a(function(){d.resolve(c(b))});return d.promise}}},k=function(b){return{then:function(c,g){var m=e();a(function(){m.resolve((g||d)(b))});return m.promise}}};return{defer:e,reject:k,when:function(f,l,h,m){var p=e(),n,s=function(a){try{return(l||
|
||||
c)(a)}catch(d){return b(d),k(d)}},r=function(a){try{return(h||d)(a)}catch(c){return b(c),k(c)}},y=function(a){try{return(m||c)(a)}catch(d){b(d)}};a(function(){g(f).then(function(a){n||(n=!0,p.resolve(g(a).then(s,r,y)))},function(a){n||(n=!0,p.resolve(r(a)))},function(a){n||p.notify(y(a))})});return p.promise},all:function(a){var b=e(),c=0,d=I(a)?[]:{};q(a,function(a,e){c++;g(a).then(function(a){d.hasOwnProperty(e)||(d[e]=a,--c||b.resolve(d))},function(a){d.hasOwnProperty(e)||b.reject(a)})});0===c&&
|
||||
b.resolve(d);return b.promise}}}function rd(){var a=10,b=M("$rootScope");this.digestTtl=function(b){arguments.length&&(a=b);return a};this.$get=["$injector","$exceptionHandler","$parse",function(c,d,e){function g(){this.$id=Ua();this.$$phase=this.$parent=this.$$watchers=this.$$nextSibling=this.$$prevSibling=this.$$childHead=this.$$childTail=null;this["this"]=this.$root=this;this.$$destroyed=!1;this.$$asyncQueue=[];this.$$listeners={};this.$$isolateBindings={}}function k(a){if(h.$$phase)throw b("inprog",
|
||||
h.$$phase);h.$$phase=a}function f(a,b){var c=e(a);Ia(c,b);return c}function l(){}g.prototype={$new:function(a){a?(a=new g,a.$root=this.$root,a.$$asyncQueue=this.$$asyncQueue):(a=function(){},a.prototype=this,a=new a,a.$id=Ua());a["this"]=a;a.$$listeners={};a.$parent=this;a.$$watchers=a.$$nextSibling=a.$$childHead=a.$$childTail=null;a.$$prevSibling=this.$$childTail;this.$$childHead?this.$$childTail=this.$$childTail.$$nextSibling=a:this.$$childHead=this.$$childTail=a;return a},$watch:function(a,b,c){var d=
|
||||
f(a,"watch"),e=this.$$watchers,g={fn:b,last:l,get:d,exp:a,eq:!!c};if(!H(b)){var h=f(b||w,"listener");g.fn=function(a,b,c){h(c)}}if("string"==typeof a&&d.constant){var k=g.fn;g.fn=function(a,b,c){k.call(this,a,b,c);Fa(e,g)}}e||(e=this.$$watchers=[]);e.unshift(g);return function(){Fa(e,g)}},$watchCollection:function(a,b){var c=this,d,f,g=0,h=e(a),k=[],l={},q=0;return this.$watch(function(){f=h(c);var a,b;if(Q(f))if(kb(f))for(d!==k&&(d=k,q=d.length=0,g++),a=f.length,q!==a&&(g++,d.length=q=a),b=0;b<a;b++)d[b]!==
|
||||
f[b]&&(g++,d[b]=f[b]);else{d!==l&&(d=l={},q=0,g++);a=0;for(b in f)f.hasOwnProperty(b)&&(a++,d.hasOwnProperty(b)?d[b]!==f[b]&&(g++,d[b]=f[b]):(q++,d[b]=f[b],g++));if(q>a)for(b in g++,d)d.hasOwnProperty(b)&&!f.hasOwnProperty(b)&&(q--,delete d[b])}else d!==f&&(d=f,g++);return g},function(){b(f,d,c)})},$digest:function(){var c,e,f,g,r=this.$$asyncQueue,q,u,v=a,x,B=[],t,w;k("$digest");do{u=!1;for(x=this;r.length;)try{x.$eval(r.shift())}catch(C){d(C)}do{if(g=x.$$watchers)for(q=g.length;q--;)try{(c=g[q])&&
|
||||
((e=c.get(x))!==(f=c.last)&&!(c.eq?xa(e,f):"number"==typeof e&&"number"==typeof f&&isNaN(e)&&isNaN(f)))&&(u=!0,c.last=c.eq?aa(e):e,c.fn(e,f===l?e:f,x),5>v&&(t=4-v,B[t]||(B[t]=[]),w=H(c.exp)?"fn: "+(c.exp.name||c.exp.toString()):c.exp,w+="; newVal: "+ma(e)+"; oldVal: "+ma(f),B[t].push(w)))}catch(z){d(z)}if(!(g=x.$$childHead||x!==this&&x.$$nextSibling))for(;x!==this&&!(g=x.$$nextSibling);)x=x.$parent}while(x=g);if(u&&!v--)throw h.$$phase=null,b("infdig",a,ma(B));}while(u||r.length);h.$$phase=null},
|
||||
$destroy:function(){if(h!=this&&!this.$$destroyed){var a=this.$parent;this.$broadcast("$destroy");this.$$destroyed=!0;a.$$childHead==this&&(a.$$childHead=this.$$nextSibling);a.$$childTail==this&&(a.$$childTail=this.$$prevSibling);this.$$prevSibling&&(this.$$prevSibling.$$nextSibling=this.$$nextSibling);this.$$nextSibling&&(this.$$nextSibling.$$prevSibling=this.$$prevSibling);this.$parent=this.$$nextSibling=this.$$prevSibling=this.$$childHead=this.$$childTail=null}},$eval:function(a,b){return e(a)(this,
|
||||
b)},$evalAsync:function(a){this.$$asyncQueue.push(a)},$apply:function(a){try{return k("$apply"),this.$eval(a)}catch(b){d(b)}finally{h.$$phase=null;try{h.$digest()}catch(c){throw d(c),c;}}},$on:function(a,b){var c=this.$$listeners[a];c||(this.$$listeners[a]=c=[]);c.push(b);return function(){c[Wa(c,b)]=null}},$emit:function(a,b){var c=[],e,f=this,g=!1,h={name:a,targetScope:f,stopPropagation:function(){g=!0},preventDefault:function(){h.defaultPrevented=!0},defaultPrevented:!1},k=[h].concat(sa.call(arguments,
|
||||
1)),l,q;do{e=f.$$listeners[a]||c;h.currentScope=f;l=0;for(q=e.length;l<q;l++)if(e[l])try{if(e[l].apply(null,k),g)return h}catch(t){d(t)}else e.splice(l,1),l--,q--;f=f.$parent}while(f);return h},$broadcast:function(a,b){var c=this,e=this,f={name:a,targetScope:this,preventDefault:function(){f.defaultPrevented=!0},defaultPrevented:!1},g=[f].concat(sa.call(arguments,1)),h,l;do{c=e;f.currentScope=c;e=c.$$listeners[a]||[];h=0;for(l=e.length;h<l;h++)if(e[h])try{e[h].apply(null,g)}catch(k){d(k)}else e.splice(h,
|
||||
1),h--,l--;if(!(e=c.$$childHead||c!==this&&c.$$nextSibling))for(;c!==this&&!(e=c.$$nextSibling);)c=c.$parent}while(c=e);return f}};var h=new g;return h}]}function sd(){this.SCE_CONTEXTS=ca;var a=["self"],b=[];this.resourceUrlWhitelist=function(b){arguments.length&&(a=b);return a};this.resourceUrlBlacklist=function(a){arguments.length&&(b=a);return b};this.$get=["$log","$document","$injector","$$urlUtils",function(c,d,e,g){function k(a){var b=function(a){this.$$unwrapTrustedValue=function(){return a}};
|
||||
a&&(b.prototype=new a);b.prototype.valueOf=function(){return this.$$unwrapTrustedValue()};b.prototype.toString=function(){return this.$$unwrapTrustedValue().toString()};return b}var f=function(a){throw Ca("unsafe");};e.has("$sanitize")&&(f=e.get("$sanitize"));var l=k(),h={};h[ca.HTML]=k(l);h[ca.CSS]=k(l);h[ca.URL]=k(l);h[ca.JS]=k(l);h[ca.RESOURCE_URL]=k(h[ca.URL]);return{trustAs:function(a,b){var c=h.hasOwnProperty(a)?h[a]:null;if(!c)throw Ca("icontext",a,b);if(null===b||b===v||""===b)return b;if("string"!==
|
||||
typeof b)throw Ca("itype",a);return new c(b)},getTrusted:function(c,d){if(null===d||d===v||""===d)return d;var e=h.hasOwnProperty(c)?h[c]:null;if(e&&d instanceof e)return d.$$unwrapTrustedValue();if(c===ca.RESOURCE_URL){var e=g.resolve(d.toString(),!0),l,k,q=!1;l=0;for(k=a.length;l<k;l++)if("self"===a[l]?g.isSameOrigin(e):e.href.match(a[l])){q=!0;break}if(q)for(l=0,k=b.length;l<k;l++)if("self"===b[l]?g.isSameOrigin(e):e.href.match(b[l])){q=!1;break}if(q)return d;throw Ca("insecurl",d.toString());
|
||||
}if(c===ca.HTML)return f(d);throw Ca("unsafe");},valueOf:function(a){return a instanceof l?a.$$unwrapTrustedValue():a}}}]}function td(){var a=!0;this.enabled=function(b){arguments.length&&(a=!!b);return a};this.$get=["$parse","$document","$sceDelegate",function(b,c,d){if(a&&R&&(c=c[0].documentMode,c!==v&&8>c))throw Ca("iequirks");var e=aa(ca);e.isEnabled=function(){return a};e.trustAs=d.trustAs;e.getTrusted=d.getTrusted;e.valueOf=d.valueOf;a||(e.trustAs=e.getTrusted=function(a,b){return b},e.valueOf=
|
||||
wa);e.parseAs=function(a,c){var d=b(c);return d.literal&&d.constant?d:function(b,c){return e.getTrusted(a,d(b,c))}};var g=e.parseAs,k=e.getTrusted,f=e.trustAs;Ha.forEach(ca,function(a,b){var c=G(b);e[Ja("parse_as_"+c)]=function(b){return g(a,b)};e[Ja("get_trusted_"+c)]=function(b){return k(a,b)};e[Ja("trust_as_"+c)]=function(b){return f(a,b)}});return e}]}function ud(){this.$get=["$window","$document",function(a,b){var c={},d=U((/android (\d+)/.exec(G((a.navigator||{}).userAgent))||[])[1]),e=b[0]||
|
||||
{},g,k=/^(Moz|webkit|O|ms)(?=[A-Z])/,f=e.body&&e.body.style,l=!1,h=!1;if(f){for(var m in f)if(l=k.exec(m)){g=l[0];g=g.substr(0,1).toUpperCase()+g.substr(1);break}l=!!("transition"in f||g+"Transition"in f);h=!!("animation"in f||g+"Animation"in f);!d||l&&h||(l=z(e.body.style.webkitTransition),h=z(e.body.style.webkitAnimation))}return{history:!(!a.history||!a.history.pushState||4>d),hashchange:"onhashchange"in a&&(!e.documentMode||7<e.documentMode),hasEvent:function(a){if("input"==a&&9==R)return!1;if(J(c[a])){var b=
|
||||
e.createElement("div");c[a]="on"+a in b}return c[a]},csp:e.securityPolicy?e.securityPolicy.isActive:!1,vendorPrefix:g,transitions:l,animations:h}}]}function vd(){this.$get=["$rootScope","$browser","$q","$exceptionHandler",function(a,b,c,d){function e(e,f,l){var h=c.defer(),m=h.promise,p=A(l)&&!l;f=b.defer(function(){try{h.resolve(e())}catch(b){h.reject(b),d(b)}p||a.$apply()},f);l=function(){delete g[m.$$timeoutId]};m.$$timeoutId=f;g[f]=h;m.then(l,l);return m}var g={};e.cancel=function(a){return a&&
|
||||
a.$$timeoutId in g?(g[a.$$timeoutId].reject("canceled"),b.defer.cancel(a.$$timeoutId)):!1};return e}]}function wd(){this.$get=[function(){function a(a,c){var g=a;R&&(b.setAttribute("href",g),g=b.href);b.setAttribute("href",g);return c?{href:b.href,protocol:b.protocol,host:b.host}:b.href}var b=N.createElement("a"),c=a(T.location.href,!0);return{resolve:a,isSameOrigin:function(b){b="string"===typeof b?a(b,!0):b;return b.protocol===c.protocol&&b.host===c.host}}}]}function xd(){this.$get=W(T)}function nc(a){function b(b,
|
||||
e){return a.factory(b+c,e)}var c="Filter";this.register=b;this.$get=["$injector",function(a){return function(b){return a.get(b+c)}}];b("currency",oc);b("date",pc);b("filter",yd);b("json",zd);b("limitTo",Ad);b("lowercase",Bd);b("number",qc);b("orderBy",rc);b("uppercase",Cd)}function yd(){return function(a,b,c){if(!I(a))return a;var d=[];d.check=function(a){for(var b=0;b<d.length;b++)if(!d[b](a))return!1;return!0};switch(typeof c){case "function":break;case "boolean":if(!0==c){c=function(a,b){return Ha.equals(a,
|
||||
b)};break}default:c=function(a,b){b=(""+b).toLowerCase();return-1<(""+a).toLowerCase().indexOf(b)}}var e=function(a,b){if("string"==typeof b&&"!"===b.charAt(0))return!e(a,b.substr(1));switch(typeof a){case "boolean":case "number":case "string":return c(a,b);case "object":switch(typeof b){case "object":return c(a,b);default:for(var d in a)if("$"!==d.charAt(0)&&e(a[d],b))return!0}return!1;case "array":for(d=0;d<a.length;d++)if(e(a[d],b))return!0;return!1;default:return!1}};switch(typeof b){case "boolean":case "number":case "string":b=
|
||||
{$:b};case "object":for(var g in b)"$"==g?function(){if(b[g]){var a=g;d.push(function(c){return e(c,b[a])})}}():function(){if(b[g]){var a=g;d.push(function(c){return e(rb(c,a),b[a])})}}();break;case "function":d.push(b);break;default:return a}for(var k=[],f=0;f<a.length;f++){var l=a[f];d.check(l)&&k.push(l)}return k}}function oc(a){var b=a.NUMBER_FORMATS;return function(a,d){J(d)&&(d=b.CURRENCY_SYM);return sc(a,b.PATTERNS[1],b.GROUP_SEP,b.DECIMAL_SEP,2).replace(/\u00A4/g,d)}}function qc(a){var b=
|
||||
a.NUMBER_FORMATS;return function(a,d){return sc(a,b.PATTERNS[0],b.GROUP_SEP,b.DECIMAL_SEP,d)}}function sc(a,b,c,d,e){if(isNaN(a)||!isFinite(a))return"";var g=0>a;a=Math.abs(a);var k=a+"",f="",l=[],h=!1;if(-1!==k.indexOf("e")){var m=k.match(/([\d\.]+)e(-?)(\d+)/);m&&"-"==m[2]&&m[3]>e+1?k="0":(f=k,h=!0)}if(h)0<e&&(-1<a&&1>a)&&(f=a.toFixed(e));else{k=(k.split(tc)[1]||"").length;J(e)&&(e=Math.min(Math.max(b.minFrac,k),b.maxFrac));k=Math.pow(10,e);a=Math.round(a*k)/k;a=(""+a).split(tc);k=a[0];a=a[1]||
|
||||
"";var h=0,m=b.lgSize,p=b.gSize;if(k.length>=m+p)for(var h=k.length-m,n=0;n<h;n++)0===(h-n)%p&&0!==n&&(f+=c),f+=k.charAt(n);for(n=h;n<k.length;n++)0===(k.length-n)%m&&0!==n&&(f+=c),f+=k.charAt(n);for(;a.length<e;)a+="0";e&&"0"!==e&&(f+=d+a.substr(0,e))}l.push(g?b.negPre:b.posPre);l.push(f);l.push(g?b.negSuf:b.posSuf);return l.join("")}function Cb(a,b,c){var d="";0>a&&(d="-",a=-a);for(a=""+a;a.length<b;)a="0"+a;c&&(a=a.substr(a.length-b));return d+a}function S(a,b,c,d){c=c||0;return function(e){e=
|
||||
e["get"+a]();if(0<c||e>-c)e+=c;0===e&&-12==c&&(e=12);return Cb(e,b,d)}}function eb(a,b){return function(c,d){var e=c["get"+a](),g=Ba(b?"SHORT"+a:a);return d[g][e]}}function pc(a){function b(a){var b;if(b=a.match(c)){a=new Date(0);var g=0,k=0,f=b[8]?a.setUTCFullYear:a.setFullYear,l=b[8]?a.setUTCHours:a.setHours;b[9]&&(g=U(b[9]+b[10]),k=U(b[9]+b[11]));f.call(a,U(b[1]),U(b[2])-1,U(b[3]));g=U(b[4]||0)-g;k=U(b[5]||0)-k;f=U(b[6]||0);b=Math.round(1E3*parseFloat("0."+(b[7]||0)));l.call(a,g,k,f,b)}return a}
|
||||
var c=/^(\d{4})-?(\d\d)-?(\d\d)(?:T(\d\d)(?::?(\d\d)(?::?(\d\d)(?:\.(\d+))?)?)?(Z|([+-])(\d\d):?(\d\d))?)?$/;return function(c,e){var g="",k=[],f,l;e=e||"mediumDate";e=a.DATETIME_FORMATS[e]||e;z(c)&&(c=Dd.test(c)?U(c):b(c));lb(c)&&(c=new Date(c));if(!Ea(c))return c;for(;e;)(l=Ed.exec(e))?(k=k.concat(sa.call(l,1)),e=k.pop()):(k.push(e),e=null);q(k,function(b){f=Fd[b];g+=f?f(c,a.DATETIME_FORMATS):b.replace(/(^'|'$)/g,"").replace(/''/g,"'")});return g}}function zd(){return function(a){return ma(a,!0)}}
|
||||
function Ad(){return function(a,b){if(!I(a)&&!z(a))return a;b=U(b);if(z(a))return b?0<=b?a.slice(0,b):a.slice(b,a.length):"";var c=[],d,e;b>a.length?b=a.length:b<-a.length&&(b=-a.length);0<b?(d=0,e=b):(d=a.length+b,e=a.length);for(;d<e;d++)c.push(a[d]);return c}}function rc(a){return function(b,c,d){function e(a,b){return Ga(b)?function(b,c){return a(c,b)}:a}if(!I(b)||!c)return b;c=I(c)?c:[c];c=Ec(c,function(b){var c=!1,d=b||wa;if(z(b)){if("+"==b.charAt(0)||"-"==b.charAt(0))c="-"==b.charAt(0),b=b.substring(1);
|
||||
d=a(b)}return e(function(a,b){var c;c=d(a);var e=d(b),f=typeof c,g=typeof e;f==g?("string"==f&&(c=c.toLowerCase()),"string"==f&&(e=e.toLowerCase()),c=c===e?0:c<e?-1:1):c=f<g?-1:1;return c},c)});for(var g=[],k=0;k<b.length;k++)g.push(b[k]);return g.sort(e(function(a,b){for(var d=0;d<c.length;d++){var e=c[d](a,b);if(0!==e)return e}return 0},d))}}function ra(a){H(a)&&(a={link:a});a.restrict=a.restrict||"AC";return W(a)}function uc(a,b){function c(b,c){c=c?"-"+pb(c,"-"):"";a.removeClass((b?fb:gb)+c).addClass((b?
|
||||
gb:fb)+c)}var d=this,e=a.parent().controller("form")||hb,g=0,k=d.$error={},f=[];d.$name=b.name||b.ngForm;d.$dirty=!1;d.$pristine=!0;d.$valid=!0;d.$invalid=!1;e.$addControl(d);a.addClass(Da);c(!0);d.$addControl=function(a){f.push(a);a.$name&&!d.hasOwnProperty(a.$name)&&(d[a.$name]=a)};d.$removeControl=function(a){a.$name&&d[a.$name]===a&&delete d[a.$name];q(k,function(b,c){d.$setValidity(c,!0,a)});Fa(f,a)};d.$setValidity=function(a,b,f){var p=k[a];if(b)p&&(Fa(p,f),p.length||(g--,g||(c(b),d.$valid=
|
||||
!0,d.$invalid=!1),k[a]=!1,c(!0,a),e.$setValidity(a,!0,d)));else{g||c(b);if(p){if(-1!=Wa(p,f))return}else k[a]=p=[],g++,c(!1,a),e.$setValidity(a,!1,d);p.push(f);d.$valid=!1;d.$invalid=!0}};d.$setDirty=function(){a.removeClass(Da).addClass(ib);d.$dirty=!0;d.$pristine=!1;e.$setDirty()};d.$setPristine=function(){a.removeClass(ib).addClass(Da);d.$dirty=!1;d.$pristine=!0;q(f,function(a){a.$setPristine()})}}function $(a){return J(a)||""===a||null===a||a!==a}function jb(a,b,c,d,e,g){var k=function(){var e=
|
||||
b.val();Ga(c.ngTrim||"T")&&(e=Z(e));d.$viewValue!==e&&a.$apply(function(){d.$setViewValue(e)})};if(e.hasEvent("input"))b.on("input",k);else{var f,l=function(){f||(f=g.defer(function(){k();f=null}))};b.on("keydown",function(a){a=a.keyCode;91===a||(15<a&&19>a||37<=a&&40>=a)||l()});b.on("change",k);if(e.hasEvent("paste"))b.on("paste cut",l)}d.$render=function(){b.val($(d.$viewValue)?"":d.$viewValue)};var h=c.ngPattern,m=function(a,b){if($(b)||a.test(b))return d.$setValidity("pattern",!0),b;d.$setValidity("pattern",
|
||||
!1);return v};h&&((e=h.match(/^\/(.*)\/([gim]*)$/))?(h=RegExp(e[1],e[2]),e=function(a){return m(h,a)}):e=function(c){var d=a.$eval(h);if(!d||!d.test)throw M("ngPattern")("noregexp",h,d,ga(b));return m(d,c)},d.$formatters.push(e),d.$parsers.push(e));if(c.ngMinlength){var p=U(c.ngMinlength);e=function(a){if(!$(a)&&a.length<p)return d.$setValidity("minlength",!1),v;d.$setValidity("minlength",!0);return a};d.$parsers.push(e);d.$formatters.push(e)}if(c.ngMaxlength){var n=U(c.ngMaxlength);e=function(a){if(!$(a)&&
|
||||
a.length>n)return d.$setValidity("maxlength",!1),v;d.$setValidity("maxlength",!0);return a};d.$parsers.push(e);d.$formatters.push(e)}}function Db(a,b){a="ngClass"+a;return function(){return{restrict:"AC",link:function(c,d,e){function g(a){if(!0===b||c.$index%2===b)f&&!xa(a,f)&&e.$removeClass(k(f)),e.$addClass(k(a));f=aa(a)}function k(a){if(I(a))return a.join(" ");if(Q(a)){var b=[];q(a,function(a,c){a&&b.push(c)});return b.join(" ")}return a}var f=v;c.$watch(e[a],g,!0);e.$observe("class",function(b){g(c.$eval(e[a]))});
|
||||
"ngClass"!==a&&c.$watch("$index",function(d,f){var g=d&1;g!==f&1&&(g===b?(g=c.$eval(e[a]),e.$addClass(k(g))):(g=c.$eval(e[a]),e.$removeClass(k(g))))})}}}}var G=function(a){return z(a)?a.toLowerCase():a},Ba=function(a){return z(a)?a.toUpperCase():a},R=U((/msie (\d+)/.exec(G(navigator.userAgent))||[])[1]),C,ya,sa=[].slice,Gd=[].push,Va=Object.prototype.toString,Xa=M("ng"),Ha=T.angular||(T.angular={}),Oa,Aa,fa=["0","0","0"];w.$inject=[];wa.$inject=[];var Z=function(){return String.prototype.trim?function(a){return z(a)?
|
||||
a.trim():a}:function(a){return z(a)?a.replace(/^\s*/,"").replace(/\s*$/,""):a}}();Aa=9>R?function(a){a=a.nodeName?a:a[0];return a.scopeName&&"HTML"!=a.scopeName?Ba(a.scopeName+":"+a.nodeName):a.nodeName}:function(a){return a.nodeName?a.nodeName:a[0].nodeName};var Ic=/[A-Z]/g,Hd={full:"1.2.0rc1",major:1,minor:2,dot:0,codeName:"spooky-giraffe"},La=O.cache={},Ya=O.expando="ng-"+(new Date).getTime(),Mc=1,vc=T.document.addEventListener?function(a,b,c){a.addEventListener(b,c,!1)}:function(a,b,c){a.attachEvent("on"+
|
||||
b,c)},wb=T.document.removeEventListener?function(a,b,c){a.removeEventListener(b,c,!1)}:function(a,b,c){a.detachEvent("on"+b,c)},Kc=/([\:\-\_]+(.))/g,Lc=/^moz([A-Z])/,tb=M("jqLite"),Pa=O.prototype={ready:function(a){function b(){c||(c=!0,a())}var c=!1;"complete"===N.readyState?setTimeout(b):(this.on("DOMContentLoaded",b),O(T).on("load",b))},toString:function(){var a=[];q(this,function(b){a.push(""+b)});return"["+a.join(", ")+"]"},eq:function(a){return 0<=a?C(this[a]):C(this[this.length+a])},length:0,
|
||||
push:Gd,sort:[].sort,splice:[].splice},ab={};q("multiple selected checked disabled readOnly required open".split(" "),function(a){ab[G(a)]=a});var Vb={};q("input select option textarea button form details".split(" "),function(a){Vb[Ba(a)]=!0});q({data:Qb,inheritedData:$a,scope:function(a){return $a(a,"$scope")},controller:Tb,injector:function(a){return $a(a,"$injector")},removeAttr:function(a,b){a.removeAttribute(b)},hasClass:Za,css:function(a,b,c){b=Ja(b);if(A(c))a.style[b]=c;else{var d;8>=R&&(d=
|
||||
a.currentStyle&&a.currentStyle[b],""===d&&(d="auto"));d=d||a.style[b];8>=R&&(d=""===d?v:d);return d}},attr:function(a,b,c){var d=G(b);if(ab[d])if(A(c))c?(a[b]=!0,a.setAttribute(b,d)):(a[b]=!1,a.removeAttribute(d));else return a[b]||(a.attributes.getNamedItem(b)||w).specified?d:v;else if(A(c))a.setAttribute(b,c);else if(a.getAttribute)return a=a.getAttribute(b,2),null===a?v:a},prop:function(a,b,c){if(A(c))a[b]=c;else return a[b]},text:function(){function a(a,d){var e=b[a.nodeType];if(J(d))return e?
|
||||
a[e]:"";a[e]=d}var b=[];9>R?(b[1]="innerText",b[3]="nodeValue"):b[1]=b[3]="textContent";a.$dv="";return a}(),val:function(a,b){if(J(b)){if("SELECT"===Aa(a)&&a.multiple){var c=[];q(a.options,function(a){a.selected&&c.push(a.value||a.text)});return 0===c.length?null:c}return a.value}a.value=b},html:function(a,b){if(J(b))return a.innerHTML;for(var c=0,d=a.childNodes;c<d.length;c++)Ka(d[c]);a.innerHTML=b}},function(a,b){O.prototype[b]=function(b,d){var e,g;if((2==a.length&&a!==Za&&a!==Tb?b:d)===v){if(Q(b)){for(e=
|
||||
0;e<this.length;e++)if(a===Qb)a(this[e],b);else for(g in b)a(this[e],g,b[g]);return this}e=a.$dv;g=e==v?Math.min(this.length,1):this.length;for(var k=0;k<g;k++){var f=a(this[k],b,d);e=e?e+f:f}return e}for(e=0;e<this.length;e++)a(this[e],b,d);return this}});q({removeData:Ob,dealoc:Ka,on:function b(c,d,e,g){if(A(g))throw tb("onargs");var k=ha(c,"events"),f=ha(c,"handle");k||ha(c,"events",k={});f||ha(c,"handle",f=Nc(c,k));q(d.split(" "),function(d){var g=k[d];if(!g){if("mouseenter"==d||"mouseleave"==
|
||||
d){var m=N.body.contains||N.body.compareDocumentPosition?function(b,c){var d=9===b.nodeType?b.documentElement:b,e=c&&c.parentNode;return b===e||!!(e&&1===e.nodeType&&(d.contains?d.contains(e):b.compareDocumentPosition&&b.compareDocumentPosition(e)&16))}:function(b,c){if(c)for(;c=c.parentNode;)if(c===b)return!0;return!1};k[d]=[];b(c,{mouseleave:"mouseout",mouseenter:"mouseover"}[d],function(b){var c=b.relatedTarget;c&&(c===this||m(this,c))||f(b,d)})}else vc(c,d,f),k[d]=[];g=k[d]}g.push(e)})},off:Pb,
|
||||
replaceWith:function(b,c){var d,e=b.parentNode;Ka(b);q(new O(c),function(c){d?e.insertBefore(c,d.nextSibling):e.replaceChild(c,b);d=c})},children:function(b){var c=[];q(b.childNodes,function(b){1===b.nodeType&&c.push(b)});return c},contents:function(b){return b.childNodes||[]},append:function(b,c){q(new O(c),function(c){1!==b.nodeType&&11!==b.nodeType||b.appendChild(c)})},prepend:function(b,c){if(1===b.nodeType){var d=b.firstChild;q(new O(c),function(c){b.insertBefore(c,d)})}},wrap:function(b,c){c=
|
||||
C(c)[0];var d=b.parentNode;d&&d.replaceChild(c,b);c.appendChild(b)},remove:function(b){Ka(b);var c=b.parentNode;c&&c.removeChild(b)},after:function(b,c){var d=b,e=b.parentNode;q(new O(c),function(b){e.insertBefore(b,d.nextSibling);d=b})},addClass:Sb,removeClass:Rb,toggleClass:function(b,c,d){J(d)&&(d=!Za(b,c));(d?Sb:Rb)(b,c)},parent:function(b){return(b=b.parentNode)&&11!==b.nodeType?b:null},next:function(b){if(b.nextElementSibling)return b.nextElementSibling;for(b=b.nextSibling;null!=b&&1!==b.nodeType;)b=
|
||||
b.nextSibling;return b},find:function(b,c){return b.getElementsByTagName(c)},clone:vb,triggerHandler:function(b,c,d){c=(ha(b,"events")||{})[c];d=d||{preventDefault:w,stopPropagation:w};q(c,function(c){c.call(b,d)})}},function(b,c){O.prototype[c]=function(c,e,g){for(var k,f=0;f<this.length;f++)k==v?(k=b(this[f],c,e,g),k!==v&&(k=C(k))):ub(k,b(this[f],c,e,g));return k==v?this:k};O.prototype.bind=O.prototype.on;O.prototype.unbind=O.prototype.off});Ma.prototype={put:function(b,c){this[za(b)]=c},get:function(b){return this[za(b)]},
|
||||
remove:function(b){var c=this[b=za(b)];delete this[b];return c}};var Pc=/^function\s*[^\(]*\(\s*([^\)]*)\)/m,Qc=/,/,Rc=/^\s*(_?)(\S+?)\1\s*$/,Oc=/((\/\/.*$)|(\/\*[\s\S]*?\*\/))/mg,Na=M("$injector"),Id=M("$animate"),Jd=["$provide",function(b){this.$$selectors={};this.register=function(c,d){var e=c+"-animation";if(c&&"."!=c.charAt(0))throw Id("notcsel",c);this.$$selectors[c.substr(1)]=e;b.factory(e,d)};this.$get=["$timeout",function(b){return{enter:function(d,e,g,k){g=g&&g[g.length-1];var f=e&&e[0]||
|
||||
g&&g.parentNode,l=g&&g.nextSibling||null;q(d,function(b){f.insertBefore(b,l)});b(k||w,0,!1)},leave:function(d,e){d.remove();b(e||w,0,!1)},move:function(b,c,g,k){this.enter(b,c,g,k)},addClass:function(d,e,g){e=z(e)?e:I(e)?e.join(" "):"";d.addClass(e);b(g||w,0,!1)},removeClass:function(d,e,g){e=z(e)?e:I(e)?e.join(" "):"";d.removeClass(e);b(g||w,0,!1)},enabled:w}}]}],ea=M("$compile");Xb.$inject=["$provide"];var Zc=/^(x[\:\-_]|data[\:\-_])/i,fd=T.XMLHttpRequest||function(){try{return new ActiveXObject("Msxml2.XMLHTTP.6.0")}catch(b){}try{return new ActiveXObject("Msxml2.XMLHTTP.3.0")}catch(c){}try{return new ActiveXObject("Msxml2.XMLHTTP")}catch(d){}throw M("$httpBackend")("noxhr");
|
||||
},cc=M("$interpolate"),bc=/^([^:]+):\/\/(\w+:{0,1}\w*@)?(\{?[\w\.-]*\}?)(:([0-9]+))?(\/[^\?#]*)?(\?([^#]*))?(#(.*))?$/,gc=/^([^\?#]*)(\?([^#]*))?(#(.*))?$/,id={http:80,https:443,ftp:21},zb=M("$location");ic.prototype=Ab.prototype=hc.prototype={$$html5:!1,$$replace:!1,absUrl:cb("$$absUrl"),url:function(b,c){if(J(b))return this.$$url;var d=gc.exec(b);d[1]&&this.path(decodeURIComponent(d[1]));(d[2]||d[1])&&this.search(d[3]||"");this.hash(d[5]||"",c);return this},protocol:cb("$$protocol"),host:cb("$$host"),
|
||||
port:cb("$$port"),path:jc("$$path",function(b){return"/"==b.charAt(0)?b:"/"+b}),search:function(b,c){switch(arguments.length){case 0:return this.$$search;case 1:if(z(b))this.$$search=Kb(b);else if(Q(b))this.$$search=b;else throw zb("isrcharg");break;default:c==v||null==c?delete this.$$search[b]:this.$$search[b]=c}this.$$compose();return this},hash:jc("$$hash",wa),replace:function(){this.$$replace=!0;return this}};var Sa=M("$parse"),Ta={"null":function(){return null},"true":function(){return!0},"false":function(){return!1},
|
||||
undefined:w,"+":function(b,c,d,e){d=d(b,c);e=e(b,c);return A(d)?A(e)?d+e:d:A(e)?e:v},"-":function(b,c,d,e){d=d(b,c);e=e(b,c);return(A(d)?d:0)-(A(e)?e:0)},"*":function(b,c,d,e){return d(b,c)*e(b,c)},"/":function(b,c,d,e){return d(b,c)/e(b,c)},"%":function(b,c,d,e){return d(b,c)%e(b,c)},"^":function(b,c,d,e){return d(b,c)^e(b,c)},"=":w,"===":function(b,c,d,e){return d(b,c)===e(b,c)},"!==":function(b,c,d,e){return d(b,c)!==e(b,c)},"==":function(b,c,d,e){return d(b,c)==e(b,c)},"!=":function(b,c,d,e){return d(b,
|
||||
c)!=e(b,c)},"<":function(b,c,d,e){return d(b,c)<e(b,c)},">":function(b,c,d,e){return d(b,c)>e(b,c)},"<=":function(b,c,d,e){return d(b,c)<=e(b,c)},">=":function(b,c,d,e){return d(b,c)>=e(b,c)},"&&":function(b,c,d,e){return d(b,c)&&e(b,c)},"||":function(b,c,d,e){return d(b,c)||e(b,c)},"&":function(b,c,d,e){return d(b,c)&e(b,c)},"|":function(b,c,d,e){return e(b,c)(b,c,d(b,c))},"!":function(b,c,d){return!d(b,c)}},md={n:"\n",f:"\f",r:"\r",t:"\t",v:"\v","'":"'",'"':'"'},Bb={},Ca=M("$sce"),ca={HTML:"html",
|
||||
CSS:"css",URL:"url",RESOURCE_URL:"resourceUrl",JS:"js"};nc.$inject=["$provide"];oc.$inject=["$locale"];qc.$inject=["$locale"];var tc=".",Fd={yyyy:S("FullYear",4),yy:S("FullYear",2,0,!0),y:S("FullYear",1),MMMM:eb("Month"),MMM:eb("Month",!0),MM:S("Month",2,1),M:S("Month",1,1),dd:S("Date",2),d:S("Date",1),HH:S("Hours",2),H:S("Hours",1),hh:S("Hours",2,-12),h:S("Hours",1,-12),mm:S("Minutes",2),m:S("Minutes",1),ss:S("Seconds",2),s:S("Seconds",1),sss:S("Milliseconds",3),EEEE:eb("Day"),EEE:eb("Day",!0),a:function(b,
|
||||
c){return 12>b.getHours()?c.AMPMS[0]:c.AMPMS[1]},Z:function(b){b=-1*b.getTimezoneOffset();return b=(0<=b?"+":"")+(Cb(Math[0<b?"floor":"ceil"](b/60),2)+Cb(Math.abs(b%60),2))}},Ed=/((?:[^yMdHhmsaZE']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|d+|H+|h+|m+|s+|a|Z))(.*)/,Dd=/^\d+$/;pc.$inject=["$locale"];var Bd=W(G),Cd=W(Ba);rc.$inject=["$parse"];var Kd=W({restrict:"E",compile:function(b,c){8>=R&&(c.href||c.name||c.$set("href",""),b.append(N.createComment("IE fix")));return function(b,c){c.on("click",function(b){c.attr("href")||
|
||||
b.preventDefault()})}}}),Eb={};q(ab,function(b,c){if("multiple"!=b){var d=ka("ng-"+c);Eb[d]=function(){return{priority:100,compile:function(){return function(b,g,k){b.$watch(k[d],function(b){k.$set(c,!!b)})}}}}}});q(["src","srcset","href"],function(b){var c=ka("ng-"+b);Eb[c]=function(){return{priority:99,link:function(d,e,g){g.$observe(c,function(c){c&&(g.$set(b,c),R&&e.prop(b,g[b]))})}}}});var hb={$addControl:w,$removeControl:w,$setValidity:w,$setDirty:w,$setPristine:w};uc.$inject=["$element","$attrs",
|
||||
"$scope"];var wc=function(b){return["$timeout",function(c){var d={name:"form",restrict:"E",controller:uc,compile:function(){return{pre:function(b,d,k,f){if(!k.action){var l=function(b){b.preventDefault?b.preventDefault():b.returnValue=!1};vc(d[0],"submit",l);d.on("$destroy",function(){c(function(){wb(d[0],"submit",l)},0,!1)})}var h=d.parent().controller("form"),m=k.name||k.ngForm;m&&db(b,m,f,m);if(h)d.on("$destroy",function(){h.$removeControl(f);m&&db(b,m,v,m);F(f,hb)})}}}};return b?F(aa(d),{restrict:"EAC"}):
|
||||
d}]},Ld=wc(),Md=wc(!0),Nd=/^(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?$/,Od=/^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}$/,Pd=/^\s*(\-|\+)?(\d+|(\d*(\.\d*)))\s*$/,xc={text:jb,number:function(b,c,d,e,g,k){jb(b,c,d,e,g,k);e.$parsers.push(function(b){var c=$(b);if(c||Pd.test(b))return e.$setValidity("number",!0),""===b?null:c?b:parseFloat(b);e.$setValidity("number",!1);return v});e.$formatters.push(function(b){return $(b)?"":""+b});if(d.min){var f=parseFloat(d.min);
|
||||
b=function(b){if(!$(b)&&b<f)return e.$setValidity("min",!1),v;e.$setValidity("min",!0);return b};e.$parsers.push(b);e.$formatters.push(b)}if(d.max){var l=parseFloat(d.max);d=function(b){if(!$(b)&&b>l)return e.$setValidity("max",!1),v;e.$setValidity("max",!0);return b};e.$parsers.push(d);e.$formatters.push(d)}e.$formatters.push(function(b){if($(b)||lb(b))return e.$setValidity("number",!0),b;e.$setValidity("number",!1);return v})},url:function(b,c,d,e,g,k){jb(b,c,d,e,g,k);b=function(b){if($(b)||Nd.test(b))return e.$setValidity("url",
|
||||
!0),b;e.$setValidity("url",!1);return v};e.$formatters.push(b);e.$parsers.push(b)},email:function(b,c,d,e,g,k){jb(b,c,d,e,g,k);b=function(b){if($(b)||Od.test(b))return e.$setValidity("email",!0),b;e.$setValidity("email",!1);return v};e.$formatters.push(b);e.$parsers.push(b)},radio:function(b,c,d,e){J(d.name)&&c.attr("name",Ua());c.on("click",function(){c[0].checked&&b.$apply(function(){e.$setViewValue(d.value)})});e.$render=function(){c[0].checked=d.value==e.$viewValue};d.$observe("value",e.$render)},
|
||||
checkbox:function(b,c,d,e){var g=d.ngTrueValue,k=d.ngFalseValue;z(g)||(g=!0);z(k)||(k=!1);c.on("click",function(){b.$apply(function(){e.$setViewValue(c[0].checked)})});e.$render=function(){c[0].checked=e.$viewValue};e.$formatters.push(function(b){return b===g});e.$parsers.push(function(b){return b?g:k})},hidden:w,button:w,submit:w,reset:w},yc=["$browser","$sniffer",function(b,c){return{restrict:"E",require:"?ngModel",link:function(d,e,g,k){k&&(xc[G(g.type)]||xc.text)(d,e,g,k,c,b)}}}],gb="ng-valid",
|
||||
fb="ng-invalid",Da="ng-pristine",ib="ng-dirty",Qd=["$scope","$exceptionHandler","$attrs","$element","$parse",function(b,c,d,e,g){function k(b,c){c=c?"-"+pb(c,"-"):"";e.removeClass((b?fb:gb)+c).addClass((b?gb:fb)+c)}this.$modelValue=this.$viewValue=Number.NaN;this.$parsers=[];this.$formatters=[];this.$viewChangeListeners=[];this.$pristine=!0;this.$dirty=!1;this.$valid=!0;this.$invalid=!1;this.$name=d.name;var f=g(d.ngModel),l=f.assign;if(!l)throw M("ngModel")("nonassign",d.ngModel,ga(e));this.$render=
|
||||
w;var h=e.inheritedData("$formController")||hb,m=0,p=this.$error={};e.addClass(Da);k(!0);this.$setValidity=function(b,c){p[b]!==!c&&(c?(p[b]&&m--,m||(k(!0),this.$valid=!0,this.$invalid=!1)):(k(!1),this.$invalid=!0,this.$valid=!1,m++),p[b]=!c,k(c,b),h.$setValidity(b,c,this))};this.$setPristine=function(){this.$dirty=!1;this.$pristine=!0;e.removeClass(ib).addClass(Da)};this.$setViewValue=function(d){this.$viewValue=d;this.$pristine&&(this.$dirty=!0,this.$pristine=!1,e.removeClass(Da).addClass(ib),h.$setDirty());
|
||||
q(this.$parsers,function(b){d=b(d)});this.$modelValue!==d&&(this.$modelValue=d,l(b,d),q(this.$viewChangeListeners,function(b){try{b()}catch(d){c(d)}}))};var n=this;b.$watch(function(){var c=f(b);if(n.$modelValue!==c){var d=n.$formatters,e=d.length;for(n.$modelValue=c;e--;)c=d[e](c);n.$viewValue!==c&&(n.$viewValue=c,n.$render())}})}],Rd=function(){return{require:["ngModel","^?form"],controller:Qd,link:function(b,c,d,e){var g=e[0],k=e[1]||hb;k.$addControl(g);c.on("$destroy",function(){k.$removeControl(g)})}}},
|
||||
Sd=W({require:"ngModel",link:function(b,c,d,e){e.$viewChangeListeners.push(function(){b.$eval(d.ngChange)})}}),zc=function(){return{require:"?ngModel",link:function(b,c,d,e){if(e){d.required=!0;var g=function(b){if(d.required&&($(b)||!1===b))e.$setValidity("required",!1);else return e.$setValidity("required",!0),b};e.$formatters.push(g);e.$parsers.unshift(g);d.$observe("required",function(){g(e.$viewValue)})}}}},Td=function(){return{require:"ngModel",link:function(b,c,d,e){var g=(b=/\/(.*)\//.exec(d.ngList))&&
|
||||
RegExp(b[1])||d.ngList||",";e.$parsers.push(function(b){var c=[];b&&q(b.split(g),function(b){b&&c.push(Z(b))});return c});e.$formatters.push(function(b){return I(b)?b.join(", "):v})}}},Ud=/^(true|false|\d+)$/,Vd=function(){return{priority:100,compile:function(b,c){return Ud.test(c.ngValue)?function(b,c,g){g.$set("value",b.$eval(g.ngValue))}:function(b,c,g){b.$watch(g.ngValue,function(b){g.$set("value",b)})}}}},Wd=ra(function(b,c,d){c.addClass("ng-binding").data("$binding",d.ngBind);b.$watch(d.ngBind,
|
||||
function(b){c.text(b==v?"":b)})}),Xd=["$interpolate",function(b){return function(c,d,e){c=b(d.attr(e.$attr.ngBindTemplate));d.addClass("ng-binding").data("$binding",c);e.$observe("ngBindTemplate",function(b){d.text(b)})}}],Yd=["$sce",function(b){return function(c,d,e){d.addClass("ng-binding").data("$binding",e.ngBindHtml);c.$watch(b.parseAsHtml(e.ngBindHtml),function(b){d.html(b||"")})}}],Zd=Db("",!0),$d=Db("Odd",0),ae=Db("Even",1),be=ra({compile:function(b,c){c.$set("ngCloak",v);b.removeClass("ng-cloak")}}),
|
||||
ce=[function(){return{scope:!0,controller:"@"}}],de=["$sniffer",function(b){return{priority:1E3,compile:function(){b.csp=!0}}}],Ac={};q("click dblclick mousedown mouseup mouseover mouseout mousemove mouseenter mouseleave keydown keyup keypress submit focus blur".split(" "),function(b){var c=ka("ng-"+b);Ac[c]=["$parse",function(d){return function(e,g,k){var f=d(k[c]);g.on(G(b),function(b){e.$apply(function(){f(e,{$event:b})})})}}]});var ee=["$animate",function(b){return{transclude:"element",priority:1E3,
|
||||
terminal:!0,restrict:"A",compile:function(c,d,e){return function(c,d,f){var l,h;c.$watch(f.ngIf,function(f){l&&(b.leave(l),l=v);h&&(h.$destroy(),h=v);Ga(f)&&(h=c.$new(),e(h,function(c){l=c;b.enter(c,d.parent(),d)}))})}}}}],fe=["$http","$templateCache","$anchorScroll","$compile","$animate","$sce",function(b,c,d,e,g,k){return{restrict:"ECA",terminal:!0,priority:500,compile:function(f,l){var h=l.ngInclude||l.src,m=l.onload||"",p=l.autoscroll;f.html("");var n=C(N.createComment(" ngInclude: "+h+" "));
|
||||
f.replaceWith(n);return function(l){var q=0,v,u,w=function(){v&&(v.$destroy(),v=null);u&&(g.leave(u),u=null)};l.$watch(k.parseAsResourceUrl(h),function(k){var h=++q;k?(b.get(k,{cache:c}).success(function(b){if(h===q){var c=l.$new();w();v=c;u=f.clone();u.html(b);g.enter(u,null,n);e(u,!1,499)(v);!A(p)||p&&!l.$eval(p)||d();v.$emit("$includeContentLoaded");l.$eval(m)}}).error(function(){h===q&&w()}),l.$emit("$includeContentRequested")):w()})}}}}],ge=ra({compile:function(){return{pre:function(b,c,d){b.$eval(d.ngInit)}}}}),
|
||||
he=ra({terminal:!0,priority:1E3}),ie=["$locale","$interpolate",function(b,c){var d=/{}/g;return{restrict:"EA",link:function(e,g,k){var f=k.count,l=k.$attr.when&&g.attr(k.$attr.when),h=k.offset||0,m=e.$eval(l)||{},p={},n=c.startSymbol(),s=c.endSymbol(),r=/^when(Minus)?(.+)$/;q(k,function(b,c){r.test(c)&&(m[G(c.replace("when","").replace("Minus","-"))]=g.attr(k.$attr[c]))});q(m,function(b,e){p[e]=c(b.replace(d,n+f+"-"+h+s))});e.$watch(function(){var c=parseFloat(e.$eval(f));if(isNaN(c))return"";c in
|
||||
m||(c=b.pluralCat(c-h));return p[c](e,g,!0)},function(b){g.text(b)})}}}],je=["$parse","$animate",function(b,c){var d=M("ngRepeat");return{transclude:"element",priority:1E3,terminal:!0,compile:function(e,g,k){return function(e,g,h){var m=h.ngRepeat,p=m.match(/^\s*(.+)\s+in\s+(.*?)\s*(\s+track\s+by\s+(.+)\s*)?$/),n,s,r,v,u,w,x,B={$id:za};if(!p)throw d("iexp",m);h=p[1];u=p[2];(p=p[4])?(n=b(p),s=function(b,c,d){x&&(B[x]=b);B[w]=c;B.$index=d;return n(e,B)}):(r=function(b,c){return za(c)},v=function(b){return b});
|
||||
p=h.match(/^(?:([\$\w]+)|\(([\$\w]+)\s*,\s*([\$\w]+)\))$/);if(!p)throw d("iidexp",h);w=p[3]||p[1];x=p[2];var t={};e.$watchCollection(u,function(b){var h,n,p=g[0],u,B={},z,D,A,I,K,E,F=[];if(kb(b))K=b,s=s||r;else{s=s||v;K=[];for(A in b)b.hasOwnProperty(A)&&"$"!=A.charAt(0)&&K.push(A);K.sort()}z=K.length;n=F.length=K.length;for(h=0;h<n;h++)if(A=b===K?h:K[h],I=b[A],u=s(A,I,h),t.hasOwnProperty(u))E=t[u],delete t[u],B[u]=E,F[h]=E;else{if(B.hasOwnProperty(u))throw q(F,function(b){b&&b.startNode&&(t[b.id]=
|
||||
b)}),d("dupes",m,u);F[h]={id:u};B[u]=!1}for(A in t)t.hasOwnProperty(A)&&(E=t[A],c.leave(E.elements),q(E.elements,function(b){b.$$NG_REMOVED=!0}),E.scope.$destroy());h=0;for(n=K.length;h<n;h++){A=b===K?h:K[h];I=b[A];E=F[h];if(E.startNode){D=E.scope;u=p;do u=u.nextSibling;while(u&&u.$$NG_REMOVED);E.startNode!=u&&c.move(E.elements,null,C(p));p=E.endNode}else D=e.$new();D[w]=I;x&&(D[x]=A);D.$index=h;D.$first=0===h;D.$last=h===z-1;D.$middle=!(D.$first||D.$last);D.$odd=!(D.$even=0==h%2);E.startNode||k(D,
|
||||
function(b){c.enter(b,null,C(p));p=b;E.scope=D;E.startNode=b[0];E.elements=b;E.endNode=b[b.length-1];B[E.id]=E})}t=B})}}}}],ke=["$animate",function(b){return function(c,d,e){c.$watch(e.ngShow,function(c){b[Ga(c)?"removeClass":"addClass"](d,"ng-hide")})}}],le=["$animate",function(b){return function(c,d,e){c.$watch(e.ngHide,function(c){b[Ga(c)?"addClass":"removeClass"](d,"ng-hide")})}}],me=ra(function(b,c,d){b.$watch(d.ngStyle,function(b,d){d&&b!==d&&q(d,function(b,d){c.css(d,"")});b&&c.css(b)},!0)}),
|
||||
ne=["$animate",function(b){return{restrict:"EA",require:"ngSwitch",controller:["$scope",function(){this.cases={}}],link:function(c,d,e,g){var k,f,l=[];c.$watch(e.ngSwitch||e.on,function(d){for(var m=0,p=l.length;m<p;m++)l[m].$destroy(),b.leave(f[m]);f=[];l=[];if(k=g.cases["!"+d]||g.cases["?"])c.$eval(e.change),q(k,function(d){var e=c.$new();l.push(e);d.transclude(e,function(c){var e=d.element;f.push(c);b.enter(c,e.parent(),e)})})})}}}],oe=ra({transclude:"element",priority:500,require:"^ngSwitch",
|
||||
compile:function(b,c,d){return function(b,g,k,f){f.cases["!"+c.ngSwitchWhen]=f.cases["!"+c.ngSwitchWhen]||[];f.cases["!"+c.ngSwitchWhen].push({transclude:d,element:g})}}}),pe=ra({transclude:"element",priority:500,require:"^ngSwitch",compile:function(b,c,d){return function(b,c,k,f){f.cases["?"]=f.cases["?"]||[];f.cases["?"].push({transclude:d,element:c})}}}),qe=ra({controller:["$transclude","$element","$scope",function(b,c,d){d.$evalAsync(function(){b(function(b){c.append(b)})})}]}),re=["$templateCache",
|
||||
function(b){return{restrict:"E",terminal:!0,compile:function(c,d){"text/ng-template"==d.type&&b.put(d.id,c[0].text)}}}],se=W({terminal:!0}),te=["$compile","$parse",function(b,c){var d=/^\s*(.*?)(?:\s+as\s+(.*?))?(?:\s+group\s+by\s+(.*))?\s+for\s+(?:([\$\w][\$\w\d]*)|(?:\(\s*([\$\w][\$\w\d]*)\s*,\s*([\$\w][\$\w\d]*)\s*\)))\s+in\s+(.*?)(?:\s+track\s+by\s+(.*?))?$/,e={$setViewValue:w};return{restrict:"E",require:["select","?ngModel"],controller:["$element","$scope","$attrs",function(b,c,d){var l=this,
|
||||
h={},m=e,p;l.databound=d.ngModel;l.init=function(b,c,d){m=b;p=d};l.addOption=function(c){h[c]=!0;m.$viewValue==c&&(b.val(c),p.parent()&&p.remove())};l.removeOption=function(b){this.hasOption(b)&&(delete h[b],m.$viewValue==b&&this.renderUnknownOption(b))};l.renderUnknownOption=function(c){c="? "+za(c)+" ?";p.val(c);b.prepend(p);b.val(c);p.prop("selected",!0)};l.hasOption=function(b){return h.hasOwnProperty(b)};c.$on("$destroy",function(){l.renderUnknownOption=w})}],link:function(e,k,f,l){function h(b,
|
||||
c,d,e){d.$render=function(){var b=d.$viewValue;e.hasOption(b)?(t.parent()&&t.remove(),c.val(b),""===b&&z.prop("selected",!0)):J(b)&&z?c.val(""):e.renderUnknownOption(b)};c.on("change",function(){b.$apply(function(){t.parent()&&t.remove();d.$setViewValue(c.val())})})}function m(b,c,d){var e;d.$render=function(){var b=new Ma(d.$viewValue);q(c.find("option"),function(c){c.selected=A(b.get(c.value))})};b.$watch(function(){xa(e,d.$viewValue)||(e=aa(d.$viewValue),d.$render())});c.on("change",function(){b.$apply(function(){var b=
|
||||
[];q(c.find("option"),function(c){c.selected&&b.push(c.value)});d.$setViewValue(b)})})}function p(e,f,g){function k(){var b={"":[]},c=[""],d,h,w,z,y;w=g.$modelValue;z=t(e)||[];var C=n?Fb(z):z,F,D,G;D={};y=!1;var H,J;if(r)if(s&&I(w))for(y=new Ma([]),h=0;h<w.length;h++)D[m]=w[h],y.put(s(e,D),w[h]);else y=new Ma(w);for(G=0;F=C.length,G<F;G++)D[m]=z[n?D[n]=C[G]:G],d=p(e,D)||"",(h=b[d])||(h=b[d]=[],c.push(d)),r?d=y.remove(s?s(e,D):q(e,D))!=v:(s?(d={},d[m]=w,d=s(e,d)===s(e,D)):d=w===q(e,D),y=y||d),H=l(e,
|
||||
D),H=H===v?"":H,h.push({id:s?s(e,D):n?C[G]:G,label:H,selected:d});r||(u||null===w?b[""].unshift({id:"",label:"",selected:!y}):y||b[""].unshift({id:"?",label:"",selected:!0}));D=0;for(C=c.length;D<C;D++){d=c[D];h=b[d];A.length<=D?(w={element:B.clone().attr("label",d),label:h.label},z=[w],A.push(z),f.append(w.element)):(z=A[D],w=z[0],w.label!=d&&w.element.attr("label",w.label=d));H=null;G=0;for(F=h.length;G<F;G++)d=h[G],(y=z[G+1])?(H=y.element,y.label!==d.label&&H.text(y.label=d.label),y.id!==d.id&&
|
||||
H.val(y.id=d.id),H[0].selected!==d.selected&&H.prop("selected",y.selected=d.selected)):(""===d.id&&u?J=u:(J=x.clone()).val(d.id).attr("selected",d.selected).text(d.label),z.push({element:J,label:d.label,id:d.id,selected:d.selected}),H?H.after(J):w.element.append(J),H=J);for(G++;z.length>G;)z.pop().element.remove()}for(;A.length>D;)A.pop()[0].element.remove()}var h;if(!(h=w.match(d)))throw M("ngOptions")("iexp",w,ga(f));var l=c(h[2]||h[1]),m=h[4]||h[6],n=h[5],p=c(h[3]||""),q=c(h[2]?h[1]:m),t=c(h[7]),
|
||||
s=h[8]?c(h[8]):null,A=[[{element:f,label:""}]];u&&(b(u)(e),u.removeClass("ng-scope"),u.remove());f.html("");f.on("change",function(){e.$apply(function(){var b,c=t(e)||[],d={},h,k,l,p,u,w;if(r)for(k=[],p=0,w=A.length;p<w;p++)for(b=A[p],l=1,u=b.length;l<u;l++){if((h=b[l].element)[0].selected){h=h.val();n&&(d[n]=h);if(s)for(var x=0;x<c.length&&(d[m]=c[x],s(e,d)!=h);x++);else d[m]=c[h];k.push(q(e,d))}}else if(h=f.val(),"?"==h)k=v;else if(""==h)k=null;else if(s)for(x=0;x<c.length;x++){if(d[m]=c[x],s(e,
|
||||
d)==h){k=q(e,d);break}}else d[m]=c[h],n&&(d[n]=h),k=q(e,d);g.$setViewValue(k)})});g.$render=k;e.$watch(k)}if(l[1]){var n=l[0],s=l[1],r=f.multiple,w=f.ngOptions,u=!1,z,x=C(N.createElement("option")),B=C(N.createElement("optgroup")),t=x.clone();l=0;for(var F=k.children(),G=F.length;l<G;l++)if(""==F[l].value){z=u=F.eq(l);break}n.init(s,u,t);if(r&&(f.required||f.ngRequired)){var H=function(b){s.$setValidity("required",!f.required||b&&b.length);return b};s.$parsers.push(H);s.$formatters.unshift(H);f.$observe("required",
|
||||
function(){H(s.$viewValue)})}w?p(e,k,s):r?m(e,k,s):h(e,k,s,n)}}}}],ue=["$interpolate",function(b){var c={addOption:w,removeOption:w};return{restrict:"E",priority:100,compile:function(d,e){if(J(e.value)){var g=b(d.text(),!0);g||e.$set("value",d.text())}return function(b,d,e){var h=d.parent(),m=h.data("$selectController")||h.parent().data("$selectController");m&&m.databound?d.prop("selected",!1):m=c;g?b.$watch(g,function(b,c){e.$set("value",b);b!==c&&m.removeOption(c);m.addOption(b)}):m.addOption(e.value);
|
||||
d.on("$destroy",function(){m.removeOption(e.value)})}}}}],ve=W({restrict:"E",terminal:!0});(ya=T.jQuery)?(C=ya,F(ya.fn,{scope:Pa.scope,controller:Pa.controller,injector:Pa.injector,inheritedData:Pa.inheritedData}),sb("remove",!0,!0,!1),sb("empty",!1,!1,!1),sb("html",!1,!1,!0)):C=O;Ha.element=C;(function(b){F(b,{bootstrap:Mb,copy:aa,extend:F,equals:xa,element:C,forEach:q,injector:Nb,noop:w,bind:nb,toJson:ma,fromJson:Ib,identity:wa,isUndefined:J,isDefined:A,isString:z,isFunction:H,isObject:Q,isNumber:lb,
|
||||
isElement:Dc,isArray:I,$$minErr:M,version:Hd,isDate:Ea,lowercase:G,uppercase:Ba,callbacks:{counter:0}});Oa=Jc(T);try{Oa("ngLocale")}catch(c){Oa("ngLocale",[]).provider("$locale",hd)}Oa("ng",["ngLocale"],["$provide",function(b){b.provider("$compile",Xb).directive({a:Kd,input:yc,textarea:yc,form:Ld,script:re,select:te,style:ve,option:ue,ngBind:Wd,ngBindHtml:Yd,ngBindTemplate:Xd,ngClass:Zd,ngClassEven:ae,ngClassOdd:$d,ngCsp:de,ngCloak:be,ngController:ce,ngForm:Md,ngHide:le,ngIf:ee,ngInclude:fe,ngInit:ge,
|
||||
ngNonBindable:he,ngPluralize:ie,ngRepeat:je,ngShow:ke,ngStyle:me,ngSwitch:ne,ngSwitchWhen:oe,ngSwitchDefault:pe,ngOptions:se,ngTransclude:qe,ngModel:Rd,ngList:Td,ngChange:Sd,required:zc,ngRequired:zc,ngValue:Vd}).directive(Eb).directive(Ac);b.provider({$anchorScroll:Sc,$animate:Jd,$browser:Vc,$cacheFactory:Wc,$controller:$c,$document:ad,$exceptionHandler:bd,$filter:nc,$interpolate:gd,$http:cd,$httpBackend:dd,$location:jd,$log:kd,$parse:od,$rootScope:rd,$q:pd,$sce:td,$sceDelegate:sd,$sniffer:ud,$templateCache:Xc,
|
||||
$timeout:vd,$window:xd,$$urlUtils:wd})}])})(Ha);C(N).ready(function(){Hc(N,Mb)})})(window,document);angular.element(document).find("head").prepend('<style type="text/css">@charset "UTF-8";[ng\\:cloak],[ng-cloak],[data-ng-cloak],[x-ng-cloak],.ng-cloak,.x-ng-cloak,.ng-hide{display:none !important;}ng\\:form{display:block;}</style>');
|
||||
/*
|
||||
//@ sourceMappingURL=angular.min.js.map
|
||||
*/
|
File diff suppressed because one or more lines are too long
|
@ -8,7 +8,7 @@
|
|||
|
||||
Options -Indexes
|
||||
RewriteEngine on
|
||||
RewriteCond %{HTTP_COOKIE} ng-offline=1.2.0rc1
|
||||
RewriteCond %{HTTP_COOKIE} ng-offline=1.2.0-rc.2
|
||||
RewriteRule appcache.manifest appcache-offline.manifest
|
||||
|
||||
## Redirect to the latest manifest
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
CACHE MANIFEST
|
||||
# 2013-08-13T21:50:44.131Z
|
||||
# 2013-09-04T12:51:17.228Z
|
||||
|
||||
# cache all of these
|
||||
CACHE:
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
CACHE MANIFEST
|
||||
# 2013-08-13T21:50:42.875Z
|
||||
# 2013-09-04T12:51:15.973Z
|
||||
|
||||
# cache all of these
|
||||
CACHE:
|
||||
|
|
|
@ -102,8 +102,13 @@ directive.prettyprint = ['reindentCode', function(reindentCode) {
|
|||
//ensure that angular won't compile {{ curly }} values
|
||||
html = html.replace(/\{\{/g, '<span>{{</span>')
|
||||
.replace(/\}\}/g, '<span>}}</span>');
|
||||
if (window.RUNNING_IN_NG_TEST_RUNNER) {
|
||||
element.html(html);
|
||||
}
|
||||
else {
|
||||
element.html(window.prettyPrintOne(reindentCode(html), undefined, true));
|
||||
}
|
||||
}
|
||||
};
|
||||
}];
|
||||
|
||||
|
@ -194,7 +199,6 @@ directive.ngEmbedApp = ['$templateCache', '$browser', '$rootScope', '$location',
|
|||
deregisterEmbedRootScope;
|
||||
|
||||
modules.push(['$provide', function($provide) {
|
||||
$provide.value('$animate', $animate);
|
||||
$provide.value('$templateCache', $templateCache);
|
||||
$provide.value('$anchorScroll', angular.noop);
|
||||
$provide.value('$browser', $browser);
|
||||
|
|
|
@ -8,5 +8,6 @@
|
|||
},
|
||||
"_release": "e-tag:51ba48cd2",
|
||||
"_source": "https://raw.github.com/twbs/bootstrap/v2.0.2/docs/assets/bootstrap.zip",
|
||||
"_target": "*"
|
||||
"_target": "*",
|
||||
"_originalSource": "https://raw.github.com/twbs/bootstrap/v2.0.2/docs/assets/bootstrap.zip"
|
||||
}
|
|
@ -16,9 +16,9 @@
|
|||
|
||||
.nav-list li {
|
||||
margin:0!important;
|
||||
padding:0 15px;
|
||||
height:20px;
|
||||
padding:2px 15px;
|
||||
overflow:hidden;
|
||||
line-height:1.1em;
|
||||
}
|
||||
|
||||
.slide-reveal.ng-enter {
|
||||
|
@ -64,13 +64,6 @@
|
|||
height:0;
|
||||
}
|
||||
|
||||
.animate-container.animations-off * {
|
||||
-webkit-transition: none;
|
||||
-moz-transition: none;
|
||||
-o-transition: color 0 ease-in; /* opera is special :) */
|
||||
transition: none;
|
||||
}
|
||||
|
||||
.foldout.ng-enter,
|
||||
.foldout.ng-hide-add,
|
||||
.foldout.ng-hide-remove {
|
||||
|
|
|
@ -502,5 +502,4 @@ pre ol li {
|
|||
top: 10px;
|
||||
font-size: 16px;
|
||||
word-break: normal;
|
||||
word-wrap: normal;
|
||||
}
|
||||
|
|
72
lib/angular/docs/docs-data.js
vendored
72
lib/angular/docs/docs-data.js
vendored
File diff suppressed because one or more lines are too long
|
@ -6,8 +6,8 @@
|
|||
var production = location.hostname === 'docs.angularjs.org',
|
||||
headEl = document.head,
|
||||
angularVersion = {
|
||||
current: '1.2.0rc1', // rewrite during build
|
||||
cdn: '1.1.4'
|
||||
current: '1.2.0-rc.2', // rewrite during build
|
||||
cdn: '1.2.0rc1'
|
||||
};
|
||||
|
||||
addTag('script', {src: path('angular-scenario.js')}, function() {
|
||||
|
|
1684
lib/angular/docs/docs-scenario.js
vendored
1684
lib/angular/docs/docs-scenario.js
vendored
File diff suppressed because it is too large
Load diff
|
@ -20,6 +20,11 @@
|
|||
// we can't add css/js the usual way, because some browsers (FF) eagerly prefetch resources
|
||||
// before the base attribute is added, causing 404 and terribly slow loading of the docs app.
|
||||
(function() {
|
||||
if (window.name.indexOf('NG_DEFER_BOOTSTRAP!') == 0) {
|
||||
//TODO(i): super ugly hack to temporarily speed up our e2e tests until we move to protractor + extracted examples
|
||||
window.RUNNING_IN_NG_TEST_RUNNER = true;
|
||||
}
|
||||
|
||||
var indexFile = (location.pathname.match(/\/(index[^\.]*\.html)/) || ['', ''])[1],
|
||||
rUrl = /(#!\/|api|guide|misc|tutorial|cookbook|error|index[^\.]*\.html).*$/,
|
||||
baseUrl = location.href.replace(rUrl, indexFile),
|
||||
|
@ -29,8 +34,8 @@
|
|||
headEl = document.getElementsByTagName('head')[0],
|
||||
sync = true,
|
||||
angularVersion = {
|
||||
current: '1.2.0rc1', // rewrite during build
|
||||
cdn: '1.1.4'
|
||||
current: '1.2.0-rc.2', // rewrite during build
|
||||
cdn: '1.2.0rc1'
|
||||
};
|
||||
|
||||
addTag('base', {href: baseUrl});
|
||||
|
@ -49,8 +54,10 @@
|
|||
addTag('script', {src: path('angular-animate.js') }, sync);
|
||||
addTag('script', {src: 'components/angular-bootstrap.js' }, sync);
|
||||
addTag('script', {src: 'components/angular-bootstrap-prettify.js' }, sync);
|
||||
if (!window.RUNNING_IN_NG_TEST_RUNNER) {
|
||||
addTag('script', {src: 'components/google-code-prettify.js' }, sync);
|
||||
addTag('script', {src: 'components/' + (debug ? 'lunr.js' : 'lunr.min.js') }, sync);
|
||||
}
|
||||
addTag('script', {src: 'components/marked.js' }, sync);
|
||||
addTag('script', {src: 'docs-data.js'}, sync);
|
||||
addTag('script', {src: 'js/docs.js'}, sync);
|
||||
|
@ -112,11 +119,13 @@
|
|||
_gaq.push(['_setAccount', 'UA-8594346-3']);
|
||||
_gaq.push(['_setDomainName', '.angularjs.org']);
|
||||
|
||||
if (!window.RUNNING_IN_NG_TEST_RUNNER) {
|
||||
(function() {
|
||||
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
|
||||
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
|
||||
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
|
||||
})();
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
|
||||
|
@ -241,9 +250,9 @@
|
|||
<div class="span3">
|
||||
<div class="well">
|
||||
<div ng-controller="DocsVersionsCtrl">
|
||||
<select ng-options="v.version as v.title group by v.group for v in versions"
|
||||
ng-model="version"
|
||||
ng-change="jumpToDocsVersion(version)"
|
||||
<select ng-options="v as v.title group by v.group for v in docs_versions"
|
||||
ng-model="docs_version"
|
||||
ng-change="jumpToDocsVersion(docs_version)"
|
||||
class="docs-version-jump">
|
||||
</select>
|
||||
</div>
|
||||
|
|
|
@ -20,6 +20,11 @@
|
|||
// we can't add css/js the usual way, because some browsers (FF) eagerly prefetch resources
|
||||
// before the base attribute is added, causing 404 and terribly slow loading of the docs app.
|
||||
(function() {
|
||||
if (window.name.indexOf('NG_DEFER_BOOTSTRAP!') == 0) {
|
||||
//TODO(i): super ugly hack to temporarily speed up our e2e tests until we move to protractor + extracted examples
|
||||
window.RUNNING_IN_NG_TEST_RUNNER = true;
|
||||
}
|
||||
|
||||
var indexFile = (location.pathname.match(/\/(index[^\.]*\.html)/) || ['', ''])[1],
|
||||
rUrl = /(#!\/|api|guide|misc|tutorial|cookbook|error|index[^\.]*\.html).*$/,
|
||||
baseUrl = location.href.replace(rUrl, indexFile),
|
||||
|
@ -29,8 +34,8 @@
|
|||
headEl = document.getElementsByTagName('head')[0],
|
||||
sync = true,
|
||||
angularVersion = {
|
||||
current: '1.2.0rc1', // rewrite during build
|
||||
cdn: '1.1.4'
|
||||
current: '1.2.0-rc.2', // rewrite during build
|
||||
cdn: '1.2.0rc1'
|
||||
};
|
||||
|
||||
addTag('base', {href: baseUrl});
|
||||
|
@ -49,8 +54,10 @@
|
|||
addTag('script', {src: path('angular-animate.js') }, sync);
|
||||
addTag('script', {src: 'components/angular-bootstrap.js' }, sync);
|
||||
addTag('script', {src: 'components/angular-bootstrap-prettify.js' }, sync);
|
||||
if (!window.RUNNING_IN_NG_TEST_RUNNER) {
|
||||
addTag('script', {src: 'components/google-code-prettify.js' }, sync);
|
||||
addTag('script', {src: 'components/' + (debug ? 'lunr.js' : 'lunr.min.js') }, sync);
|
||||
}
|
||||
addTag('script', {src: 'components/marked.js' }, sync);
|
||||
addTag('script', {src: 'docs-data.js'}, sync);
|
||||
addTag('script', {src: 'js/docs.js'}, sync);
|
||||
|
@ -112,11 +119,13 @@
|
|||
_gaq.push(['_setAccount', 'UA-8594346-3']);
|
||||
_gaq.push(['_setDomainName', '.angularjs.org']);
|
||||
|
||||
if (!window.RUNNING_IN_NG_TEST_RUNNER) {
|
||||
(function() {
|
||||
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
|
||||
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
|
||||
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
|
||||
})();
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
|
||||
|
@ -241,9 +250,9 @@
|
|||
<div class="span3">
|
||||
<div class="well">
|
||||
<div ng-controller="DocsVersionsCtrl">
|
||||
<select ng-options="v.version as v.title group by v.group for v in versions"
|
||||
ng-model="version"
|
||||
ng-change="jumpToDocsVersion(version)"
|
||||
<select ng-options="v as v.title group by v.group for v in docs_versions"
|
||||
ng-model="docs_version"
|
||||
ng-change="jumpToDocsVersion(docs_version)"
|
||||
class="docs-version-jump">
|
||||
</select>
|
||||
</div>
|
||||
|
|
|
@ -20,6 +20,11 @@
|
|||
// we can't add css/js the usual way, because some browsers (FF) eagerly prefetch resources
|
||||
// before the base attribute is added, causing 404 and terribly slow loading of the docs app.
|
||||
(function() {
|
||||
if (window.name.indexOf('NG_DEFER_BOOTSTRAP!') == 0) {
|
||||
//TODO(i): super ugly hack to temporarily speed up our e2e tests until we move to protractor + extracted examples
|
||||
window.RUNNING_IN_NG_TEST_RUNNER = true;
|
||||
}
|
||||
|
||||
var indexFile = (location.pathname.match(/\/(index[^\.]*\.html)/) || ['', ''])[1],
|
||||
rUrl = /(#!\/|api|guide|misc|tutorial|cookbook|error|index[^\.]*\.html).*$/,
|
||||
baseUrl = location.href.replace(rUrl, indexFile),
|
||||
|
@ -29,8 +34,8 @@
|
|||
headEl = document.getElementsByTagName('head')[0],
|
||||
sync = true,
|
||||
angularVersion = {
|
||||
current: '1.2.0rc1', // rewrite during build
|
||||
cdn: '1.1.4'
|
||||
current: '1.2.0-rc.2', // rewrite during build
|
||||
cdn: '1.2.0rc1'
|
||||
};
|
||||
|
||||
addTag('base', {href: baseUrl});
|
||||
|
@ -49,8 +54,10 @@
|
|||
addTag('script', {src: path('angular-animate.js') }, sync);
|
||||
addTag('script', {src: 'components/angular-bootstrap.js' }, sync);
|
||||
addTag('script', {src: 'components/angular-bootstrap-prettify.js' }, sync);
|
||||
if (!window.RUNNING_IN_NG_TEST_RUNNER) {
|
||||
addTag('script', {src: 'components/google-code-prettify.js' }, sync);
|
||||
addTag('script', {src: 'components/' + (debug ? 'lunr.js' : 'lunr.min.js') }, sync);
|
||||
}
|
||||
addTag('script', {src: 'components/marked.js' }, sync);
|
||||
addTag('script', {src: 'docs-data.js'}, sync);
|
||||
addTag('script', {src: 'js/docs.js'}, sync);
|
||||
|
@ -112,11 +119,13 @@
|
|||
_gaq.push(['_setAccount', 'UA-8594346-3']);
|
||||
_gaq.push(['_setDomainName', '.angularjs.org']);
|
||||
|
||||
if (!window.RUNNING_IN_NG_TEST_RUNNER) {
|
||||
(function() {
|
||||
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
|
||||
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
|
||||
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
|
||||
})();
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
|
||||
|
@ -241,9 +250,9 @@
|
|||
<div class="span3">
|
||||
<div class="well">
|
||||
<div ng-controller="DocsVersionsCtrl">
|
||||
<select ng-options="v.version as v.title group by v.group for v in versions"
|
||||
ng-model="version"
|
||||
ng-change="jumpToDocsVersion(version)"
|
||||
<select ng-options="v as v.title group by v.group for v in docs_versions"
|
||||
ng-model="docs_version"
|
||||
ng-change="jumpToDocsVersion(docs_version)"
|
||||
class="docs-version-jump">
|
||||
</select>
|
||||
</div>
|
||||
|
|
|
@ -20,6 +20,11 @@
|
|||
// we can't add css/js the usual way, because some browsers (FF) eagerly prefetch resources
|
||||
// before the base attribute is added, causing 404 and terribly slow loading of the docs app.
|
||||
(function() {
|
||||
if (window.name.indexOf('NG_DEFER_BOOTSTRAP!') == 0) {
|
||||
//TODO(i): super ugly hack to temporarily speed up our e2e tests until we move to protractor + extracted examples
|
||||
window.RUNNING_IN_NG_TEST_RUNNER = true;
|
||||
}
|
||||
|
||||
var indexFile = (location.pathname.match(/\/(index[^\.]*\.html)/) || ['', ''])[1],
|
||||
rUrl = /(#!\/|api|guide|misc|tutorial|cookbook|error|index[^\.]*\.html).*$/,
|
||||
baseUrl = location.href.replace(rUrl, indexFile),
|
||||
|
@ -29,8 +34,8 @@
|
|||
headEl = document.getElementsByTagName('head')[0],
|
||||
sync = true,
|
||||
angularVersion = {
|
||||
current: '1.2.0rc1', // rewrite during build
|
||||
cdn: '1.1.4'
|
||||
current: '1.2.0-rc.2', // rewrite during build
|
||||
cdn: '1.2.0rc1'
|
||||
};
|
||||
|
||||
addTag('base', {href: baseUrl});
|
||||
|
@ -49,8 +54,10 @@
|
|||
addTag('script', {src: path('angular-animate.js') }, sync);
|
||||
addTag('script', {src: 'components/angular-bootstrap.js' }, sync);
|
||||
addTag('script', {src: 'components/angular-bootstrap-prettify.js' }, sync);
|
||||
if (!window.RUNNING_IN_NG_TEST_RUNNER) {
|
||||
addTag('script', {src: 'components/google-code-prettify.js' }, sync);
|
||||
addTag('script', {src: 'components/' + (debug ? 'lunr.js' : 'lunr.min.js') }, sync);
|
||||
}
|
||||
addTag('script', {src: 'components/marked.js' }, sync);
|
||||
addTag('script', {src: 'docs-data.js'}, sync);
|
||||
addTag('script', {src: 'js/docs.js'}, sync);
|
||||
|
@ -112,11 +119,13 @@
|
|||
_gaq.push(['_setAccount', 'UA-8594346-3']);
|
||||
_gaq.push(['_setDomainName', '.angularjs.org']);
|
||||
|
||||
if (!window.RUNNING_IN_NG_TEST_RUNNER) {
|
||||
(function() {
|
||||
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
|
||||
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
|
||||
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
|
||||
})();
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
|
||||
|
@ -241,9 +250,9 @@
|
|||
<div class="span3">
|
||||
<div class="well">
|
||||
<div ng-controller="DocsVersionsCtrl">
|
||||
<select ng-options="v.version as v.title group by v.group for v in versions"
|
||||
ng-model="version"
|
||||
ng-change="jumpToDocsVersion(version)"
|
||||
<select ng-options="v as v.title group by v.group for v in docs_versions"
|
||||
ng-model="docs_version"
|
||||
ng-change="jumpToDocsVersion(docs_version)"
|
||||
class="docs-version-jump">
|
||||
</select>
|
||||
</div>
|
||||
|
|
|
@ -20,6 +20,11 @@
|
|||
// we can't add css/js the usual way, because some browsers (FF) eagerly prefetch resources
|
||||
// before the base attribute is added, causing 404 and terribly slow loading of the docs app.
|
||||
(function() {
|
||||
if (window.name.indexOf('NG_DEFER_BOOTSTRAP!') == 0) {
|
||||
//TODO(i): super ugly hack to temporarily speed up our e2e tests until we move to protractor + extracted examples
|
||||
window.RUNNING_IN_NG_TEST_RUNNER = true;
|
||||
}
|
||||
|
||||
var indexFile = (location.pathname.match(/\/(index[^\.]*\.html)/) || ['', ''])[1],
|
||||
rUrl = /(#!\/|api|guide|misc|tutorial|cookbook|error|index[^\.]*\.html).*$/,
|
||||
baseUrl = location.href.replace(rUrl, indexFile),
|
||||
|
@ -29,8 +34,8 @@
|
|||
headEl = document.getElementsByTagName('head')[0],
|
||||
sync = true,
|
||||
angularVersion = {
|
||||
current: '1.2.0rc1', // rewrite during build
|
||||
cdn: '1.1.4'
|
||||
current: '1.2.0-rc.2', // rewrite during build
|
||||
cdn: '1.2.0rc1'
|
||||
};
|
||||
|
||||
addTag('base', {href: baseUrl});
|
||||
|
@ -49,8 +54,10 @@
|
|||
addTag('script', {src: path('angular-animate.js') }, sync);
|
||||
addTag('script', {src: 'components/angular-bootstrap.js' }, sync);
|
||||
addTag('script', {src: 'components/angular-bootstrap-prettify.js' }, sync);
|
||||
if (!window.RUNNING_IN_NG_TEST_RUNNER) {
|
||||
addTag('script', {src: 'components/google-code-prettify.js' }, sync);
|
||||
addTag('script', {src: 'components/' + (debug ? 'lunr.js' : 'lunr.min.js') }, sync);
|
||||
}
|
||||
addTag('script', {src: 'components/marked.js' }, sync);
|
||||
addTag('script', {src: 'docs-data.js'}, sync);
|
||||
addTag('script', {src: 'js/docs.js'}, sync);
|
||||
|
@ -112,11 +119,13 @@
|
|||
_gaq.push(['_setAccount', 'UA-8594346-3']);
|
||||
_gaq.push(['_setDomainName', '.angularjs.org']);
|
||||
|
||||
if (!window.RUNNING_IN_NG_TEST_RUNNER) {
|
||||
(function() {
|
||||
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
|
||||
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
|
||||
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
|
||||
})();
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
|
||||
|
@ -241,9 +250,9 @@
|
|||
<div class="span3">
|
||||
<div class="well">
|
||||
<div ng-controller="DocsVersionsCtrl">
|
||||
<select ng-options="v.version as v.title group by v.group for v in versions"
|
||||
ng-model="version"
|
||||
ng-change="jumpToDocsVersion(version)"
|
||||
<select ng-options="v as v.title group by v.group for v in docs_versions"
|
||||
ng-model="docs_version"
|
||||
ng-change="jumpToDocsVersion(docs_version)"
|
||||
class="docs-version-jump">
|
||||
</select>
|
||||
</div>
|
||||
|
|
|
@ -20,6 +20,11 @@
|
|||
// we can't add css/js the usual way, because some browsers (FF) eagerly prefetch resources
|
||||
// before the base attribute is added, causing 404 and terribly slow loading of the docs app.
|
||||
(function() {
|
||||
if (window.name.indexOf('NG_DEFER_BOOTSTRAP!') == 0) {
|
||||
//TODO(i): super ugly hack to temporarily speed up our e2e tests until we move to protractor + extracted examples
|
||||
window.RUNNING_IN_NG_TEST_RUNNER = true;
|
||||
}
|
||||
|
||||
var indexFile = (location.pathname.match(/\/(index[^\.]*\.html)/) || ['', ''])[1],
|
||||
rUrl = /(#!\/|api|guide|misc|tutorial|cookbook|error|index[^\.]*\.html).*$/,
|
||||
baseUrl = location.href.replace(rUrl, indexFile),
|
||||
|
@ -29,8 +34,8 @@
|
|||
headEl = document.getElementsByTagName('head')[0],
|
||||
sync = true,
|
||||
angularVersion = {
|
||||
current: '1.2.0rc1', // rewrite during build
|
||||
cdn: '1.1.4'
|
||||
current: '1.2.0-rc.2', // rewrite during build
|
||||
cdn: '1.2.0rc1'
|
||||
};
|
||||
|
||||
addTag('base', {href: baseUrl});
|
||||
|
@ -49,8 +54,10 @@
|
|||
addTag('script', {src: path('angular-animate.js') }, sync);
|
||||
addTag('script', {src: 'components/angular-bootstrap.js' }, sync);
|
||||
addTag('script', {src: 'components/angular-bootstrap-prettify.js' }, sync);
|
||||
if (!window.RUNNING_IN_NG_TEST_RUNNER) {
|
||||
addTag('script', {src: 'components/google-code-prettify.js' }, sync);
|
||||
addTag('script', {src: 'components/' + (debug ? 'lunr.js' : 'lunr.min.js') }, sync);
|
||||
}
|
||||
addTag('script', {src: 'components/marked.js' }, sync);
|
||||
addTag('script', {src: 'docs-data.js'}, sync);
|
||||
addTag('script', {src: 'js/docs.js'}, sync);
|
||||
|
@ -112,11 +119,13 @@
|
|||
_gaq.push(['_setAccount', 'UA-8594346-3']);
|
||||
_gaq.push(['_setDomainName', '.angularjs.org']);
|
||||
|
||||
if (!window.RUNNING_IN_NG_TEST_RUNNER) {
|
||||
(function() {
|
||||
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
|
||||
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
|
||||
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
|
||||
})();
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
|
||||
|
@ -241,9 +250,9 @@
|
|||
<div class="span3">
|
||||
<div class="well">
|
||||
<div ng-controller="DocsVersionsCtrl">
|
||||
<select ng-options="v.version as v.title group by v.group for v in versions"
|
||||
ng-model="version"
|
||||
ng-change="jumpToDocsVersion(version)"
|
||||
<select ng-options="v as v.title group by v.group for v in docs_versions"
|
||||
ng-model="docs_version"
|
||||
ng-change="jumpToDocsVersion(docs_version)"
|
||||
class="docs-version-jump">
|
||||
</select>
|
||||
</div>
|
||||
|
|
65
lib/angular/docs/js/docs.js
vendored
65
lib/angular/docs/js/docs.js
vendored
|
@ -4,61 +4,11 @@ var docsApp = {
|
|||
serviceFactory: {}
|
||||
};
|
||||
|
||||
docsApp.controller.DocsVersionsCtrl = ['$scope', '$window', 'NG_VERSIONS', function($scope, $window, NG_VERSIONS) {
|
||||
$scope.versions = expandVersions(NG_VERSIONS);
|
||||
$scope.version = ($scope.version || angular.version.full).match(/^([\d\.]+\d+)/)[1]; //match only the number
|
||||
|
||||
$scope.jumpToDocsVersion = function(value) {
|
||||
var isLastStable,
|
||||
version,
|
||||
versions = $scope.versions;
|
||||
for(var i=versions.length-1;i>=0;i--) {
|
||||
var v = versions[i];
|
||||
if(v.version == value) {
|
||||
var next = versions[i - 1];
|
||||
isLastStable = v.stable && (!next || next && !next.stable);
|
||||
version = v;
|
||||
break;
|
||||
}
|
||||
};
|
||||
|
||||
if(version && version.version >= '1.0.0') {
|
||||
//the older versions have a different path to the docs within their repo directory
|
||||
var docsPath = version.version < '1.0.2' ? 'docs-' + version.version : 'docs';
|
||||
|
||||
//the last stable version should redirect to docs.angularjs.org instead of code.angularjs.org
|
||||
var url = 'http://' +
|
||||
(isLastStable ?
|
||||
'docs.angularjs.org' :
|
||||
'code.angularjs.org/' + version.version + '/' + docsPath);
|
||||
|
||||
$window.location = url;
|
||||
}
|
||||
};
|
||||
|
||||
function expandVersions(angularVersions) {
|
||||
var unstableVersionStart = 0;
|
||||
angularVersions.forEach(function(version) {
|
||||
var split = version.split('.');
|
||||
unstableVersionStart = split[1] % 2 == 1 ?
|
||||
Math.max(unstableVersionStart, parseInt(split[0] + '' + split[1])) :
|
||||
unstableVersionStart;
|
||||
});
|
||||
|
||||
var versions = [];
|
||||
for(var i=angularVersions.length-1;i>=0;i--) {
|
||||
var version = angularVersions[i];
|
||||
var split = version.split('.');
|
||||
var stable = parseInt(split[0] + '' + split[1]) < unstableVersionStart;
|
||||
versions.push({
|
||||
version : version,
|
||||
stable : stable,
|
||||
title : 'AngularJS - v' + version,
|
||||
group : (stable ? 'Stable' : 'Unstable')
|
||||
});
|
||||
};
|
||||
|
||||
return versions;
|
||||
docsApp.controller.DocsVersionsCtrl = ['$scope', '$window', 'NG_VERSIONS', 'NG_VERSION', function($scope, $window, NG_VERSIONS, NG_VERSION) {
|
||||
$scope.docs_versions = NG_VERSIONS;
|
||||
$scope.docs_version = NG_VERSIONS[0];
|
||||
$scope.jumpToDocsVersion = function(version) {
|
||||
$window.location = version.url;
|
||||
};
|
||||
}];
|
||||
|
||||
|
@ -109,6 +59,8 @@ docsApp.controller.DocsNavigationCtrl = ['$scope', '$location', 'docsSearch', fu
|
|||
|
||||
docsApp.serviceFactory.lunrSearch = function() {
|
||||
return function(properties) {
|
||||
if (window.RUNNING_IN_NG_TEST_RUNNER) return null;
|
||||
|
||||
var engine = lunr(properties);
|
||||
return {
|
||||
store : function(values) {
|
||||
|
@ -123,6 +75,9 @@ docsApp.serviceFactory.lunrSearch = function() {
|
|||
|
||||
docsApp.serviceFactory.docsSearch = ['$rootScope','lunrSearch', 'NG_PAGES',
|
||||
function($rootScope, lunrSearch, NG_PAGES) {
|
||||
if (window.RUNNING_IN_NG_TEST_RUNNER) {
|
||||
return null;
|
||||
}
|
||||
|
||||
var index = lunrSearch(function() {
|
||||
this.ref('id');
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
<a href="http://github.com/angular/angular.js/tree/v1.2.0rc1/src/auto/injector.js#L76" class="view-source btn btn-action"><i class="icon-zoom-in"> </i> View source</a><a href="http://github.com/angular/angular.js/edit/master/src/auto/injector.js" class="improve-docs btn btn-primary"><i class="icon-edit"> </i> Improve this doc</a><h1><code ng:non-bindable="">$injector</code>
|
||||
<a href="http://github.com/angular/angular.js/tree/v1.2.0rc1/src/auto/injector.js#L78" class="view-source btn btn-action"><i class="icon-zoom-in"> </i> View source</a><a href="http://github.com/angular/angular.js/edit/master/src/auto/injector.js" class="improve-docs btn btn-primary"><i class="icon-edit"> </i> Improve this doc</a><h1><code ng:non-bindable="">$injector</code>
|
||||
<div><span class="hint">service in module <code ng:non-bindable="">AUTO</code>
|
||||
</span>
|
||||
</div>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
<a href="http://github.com/angular/angular.js/tree/v1.2.0rc1/src/auto/injector.js#L263" class="view-source btn btn-action"><i class="icon-zoom-in"> </i> View source</a><a href="http://github.com/angular/angular.js/edit/master/src/auto/injector.js" class="improve-docs btn btn-primary"><i class="icon-edit"> </i> Improve this doc</a><h1><code ng:non-bindable="">$provide</code>
|
||||
<a href="http://github.com/angular/angular.js/tree/v1.2.0rc1/src/auto/injector.js#L265" class="view-source btn btn-action"><i class="icon-zoom-in"> </i> View source</a><a href="http://github.com/angular/angular.js/edit/master/src/auto/injector.js" class="improve-docs btn btn-primary"><i class="icon-edit"> </i> Improve this doc</a><h1><code ng:non-bindable="">$provide</code>
|
||||
<div><span class="hint">service in module <code ng:non-bindable="">AUTO</code>
|
||||
</span>
|
||||
</div>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
<a href="http://github.com/angular/angular.js/tree/v1.2.0rc1/src/Angular.js#L734" class="view-source btn btn-action"><i class="icon-zoom-in"> </i> View source</a><a href="http://github.com/angular/angular.js/edit/master/src/Angular.js" class="improve-docs btn btn-primary"><i class="icon-edit"> </i> Improve this doc</a><h1><code ng:non-bindable="">angular.bind</code>
|
||||
<a href="http://github.com/angular/angular.js/tree/v1.2.0rc1/src/Angular.js#L744" class="view-source btn btn-action"><i class="icon-zoom-in"> </i> View source</a><a href="http://github.com/angular/angular.js/edit/master/src/Angular.js" class="improve-docs btn btn-primary"><i class="icon-edit"> </i> Improve this doc</a><h1><code ng:non-bindable="">angular.bind</code>
|
||||
<div><span class="hint">API in module <code ng:non-bindable="">ng</code>
|
||||
</span>
|
||||
</div>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
<a href="http://github.com/angular/angular.js/tree/v1.2.0rc1/src/Angular.js#L1034" class="view-source btn btn-action"><i class="icon-zoom-in"> </i> View source</a><a href="http://github.com/angular/angular.js/edit/master/src/Angular.js" class="improve-docs btn btn-primary"><i class="icon-edit"> </i> Improve this doc</a><h1><code ng:non-bindable="">angular.bootstrap</code>
|
||||
<a href="http://github.com/angular/angular.js/tree/v1.2.0rc1/src/Angular.js#L1044" class="view-source btn btn-action"><i class="icon-zoom-in"> </i> View source</a><a href="http://github.com/angular/angular.js/edit/master/src/Angular.js" class="improve-docs btn btn-primary"><i class="icon-edit"> </i> Improve this doc</a><h1><code ng:non-bindable="">angular.bootstrap</code>
|
||||
<div><span class="hint">API in module <code ng:non-bindable="">ng</code>
|
||||
</span>
|
||||
</div>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
<a href="http://github.com/angular/angular.js/tree/v1.2.0rc1/src/Angular.js#L580" class="view-source btn btn-action"><i class="icon-zoom-in"> </i> View source</a><a href="http://github.com/angular/angular.js/edit/master/src/Angular.js" class="improve-docs btn btn-primary"><i class="icon-edit"> </i> Improve this doc</a><h1><code ng:non-bindable="">angular.copy</code>
|
||||
<a href="http://github.com/angular/angular.js/tree/v1.2.0rc1/src/Angular.js#L590" class="view-source btn btn-action"><i class="icon-zoom-in"> </i> View source</a><a href="http://github.com/angular/angular.js/edit/master/src/Angular.js" class="improve-docs btn btn-primary"><i class="icon-edit"> </i> Improve this doc</a><h1><code ng:non-bindable="">angular.copy</code>
|
||||
<div><span class="hint">API in module <code ng:non-bindable="">ng</code>
|
||||
</span>
|
||||
</div>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
<a href="http://github.com/angular/angular.js/tree/v1.2.0rc1/src/Angular.js#L657" class="view-source btn btn-action"><i class="icon-zoom-in"> </i> View source</a><a href="http://github.com/angular/angular.js/edit/master/src/Angular.js" class="improve-docs btn btn-primary"><i class="icon-edit"> </i> Improve this doc</a><h1><code ng:non-bindable="">angular.equals</code>
|
||||
<a href="http://github.com/angular/angular.js/tree/v1.2.0rc1/src/Angular.js#L667" class="view-source btn btn-action"><i class="icon-zoom-in"> </i> View source</a><a href="http://github.com/angular/angular.js/edit/master/src/Angular.js" class="improve-docs btn btn-primary"><i class="icon-edit"> </i> Improve this doc</a><h1><code ng:non-bindable="">angular.equals</code>
|
||||
<div><span class="hint">API in module <code ng:non-bindable="">ng</code>
|
||||
</span>
|
||||
</div>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
<a href="http://github.com/angular/angular.js/tree/v1.2.0rc1/src/Angular.js#L223" class="view-source btn btn-action"><i class="icon-zoom-in"> </i> View source</a><a href="http://github.com/angular/angular.js/edit/master/src/Angular.js" class="improve-docs btn btn-primary"><i class="icon-edit"> </i> Improve this doc</a><h1><code ng:non-bindable="">angular.extend</code>
|
||||
<a href="http://github.com/angular/angular.js/tree/v1.2.0rc1/src/Angular.js#L233" class="view-source btn btn-action"><i class="icon-zoom-in"> </i> View source</a><a href="http://github.com/angular/angular.js/edit/master/src/Angular.js" class="improve-docs btn btn-primary"><i class="icon-edit"> </i> Improve this doc</a><h1><code ng:non-bindable="">angular.extend</code>
|
||||
<div><span class="hint">API in module <code ng:non-bindable="">ng</code>
|
||||
</span>
|
||||
</div>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
<a href="http://github.com/angular/angular.js/tree/v1.2.0rc1/src/Angular.js#L98" class="view-source btn btn-action"><i class="icon-zoom-in"> </i> View source</a><a href="http://github.com/angular/angular.js/edit/master/src/Angular.js" class="improve-docs btn btn-primary"><i class="icon-edit"> </i> Improve this doc</a><h1><code ng:non-bindable="">angular.forEach</code>
|
||||
<a href="http://github.com/angular/angular.js/tree/v1.2.0rc1/src/Angular.js#L108" class="view-source btn btn-action"><i class="icon-zoom-in"> </i> View source</a><a href="http://github.com/angular/angular.js/edit/master/src/Angular.js" class="improve-docs btn btn-primary"><i class="icon-edit"> </i> Improve this doc</a><h1><code ng:non-bindable="">angular.forEach</code>
|
||||
<div><span class="hint">API in module <code ng:non-bindable="">ng</code>
|
||||
</span>
|
||||
</div>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
<a href="http://github.com/angular/angular.js/tree/v1.2.0rc1/src/Angular.js#L806" class="view-source btn btn-action"><i class="icon-zoom-in"> </i> View source</a><a href="http://github.com/angular/angular.js/edit/master/src/Angular.js" class="improve-docs btn btn-primary"><i class="icon-edit"> </i> Improve this doc</a><h1><code ng:non-bindable="">angular.fromJson</code>
|
||||
<a href="http://github.com/angular/angular.js/tree/v1.2.0rc1/src/Angular.js#L816" class="view-source btn btn-action"><i class="icon-zoom-in"> </i> View source</a><a href="http://github.com/angular/angular.js/edit/master/src/Angular.js" class="improve-docs btn btn-primary"><i class="icon-edit"> </i> Improve this doc</a><h1><code ng:non-bindable="">angular.fromJson</code>
|
||||
<div><span class="hint">API in module <code ng:non-bindable="">ng</code>
|
||||
</span>
|
||||
</div>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
<a href="http://github.com/angular/angular.js/tree/v1.2.0rc1/src/Angular.js#L278" class="view-source btn btn-action"><i class="icon-zoom-in"> </i> View source</a><a href="http://github.com/angular/angular.js/edit/master/src/Angular.js" class="improve-docs btn btn-primary"><i class="icon-edit"> </i> Improve this doc</a><h1><code ng:non-bindable="">angular.identity</code>
|
||||
<a href="http://github.com/angular/angular.js/tree/v1.2.0rc1/src/Angular.js#L288" class="view-source btn btn-action"><i class="icon-zoom-in"> </i> View source</a><a href="http://github.com/angular/angular.js/edit/master/src/Angular.js" class="improve-docs btn btn-primary"><i class="icon-edit"> </i> Improve this doc</a><h1><code ng:non-bindable="">angular.identity</code>
|
||||
<div><span class="hint">API in module <code ng:non-bindable="">ng</code>
|
||||
</span>
|
||||
</div>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
<a href="http://github.com/angular/angular.js/tree/v1.2.0rc1/src/Angular.js#L386" class="view-source btn btn-action"><i class="icon-zoom-in"> </i> View source</a><a href="http://github.com/angular/angular.js/edit/master/src/Angular.js" class="improve-docs btn btn-primary"><i class="icon-edit"> </i> Improve this doc</a><h1><code ng:non-bindable="">angular.isArray</code>
|
||||
<a href="http://github.com/angular/angular.js/tree/v1.2.0rc1/src/Angular.js#L396" class="view-source btn btn-action"><i class="icon-zoom-in"> </i> View source</a><a href="http://github.com/angular/angular.js/edit/master/src/Angular.js" class="improve-docs btn btn-primary"><i class="icon-edit"> </i> Improve this doc</a><h1><code ng:non-bindable="">angular.isArray</code>
|
||||
<div><span class="hint">API in module <code ng:non-bindable="">ng</code>
|
||||
</span>
|
||||
</div>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
<a href="http://github.com/angular/angular.js/tree/v1.2.0rc1/src/Angular.js#L370" class="view-source btn btn-action"><i class="icon-zoom-in"> </i> View source</a><a href="http://github.com/angular/angular.js/edit/master/src/Angular.js" class="improve-docs btn btn-primary"><i class="icon-edit"> </i> Improve this doc</a><h1><code ng:non-bindable="">angular.isDate</code>
|
||||
<a href="http://github.com/angular/angular.js/tree/v1.2.0rc1/src/Angular.js#L380" class="view-source btn btn-action"><i class="icon-zoom-in"> </i> View source</a><a href="http://github.com/angular/angular.js/edit/master/src/Angular.js" class="improve-docs btn btn-primary"><i class="icon-edit"> </i> Improve this doc</a><h1><code ng:non-bindable="">angular.isDate</code>
|
||||
<div><span class="hint">API in module <code ng:non-bindable="">ng</code>
|
||||
</span>
|
||||
</div>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
<a href="http://github.com/angular/angular.js/tree/v1.2.0rc1/src/Angular.js#L313" class="view-source btn btn-action"><i class="icon-zoom-in"> </i> View source</a><a href="http://github.com/angular/angular.js/edit/master/src/Angular.js" class="improve-docs btn btn-primary"><i class="icon-edit"> </i> Improve this doc</a><h1><code ng:non-bindable="">angular.isDefined</code>
|
||||
<a href="http://github.com/angular/angular.js/tree/v1.2.0rc1/src/Angular.js#L323" class="view-source btn btn-action"><i class="icon-zoom-in"> </i> View source</a><a href="http://github.com/angular/angular.js/edit/master/src/Angular.js" class="improve-docs btn btn-primary"><i class="icon-edit"> </i> Improve this doc</a><h1><code ng:non-bindable="">angular.isDefined</code>
|
||||
<div><span class="hint">API in module <code ng:non-bindable="">ng</code>
|
||||
</span>
|
||||
</div>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
<a href="http://github.com/angular/angular.js/tree/v1.2.0rc1/src/Angular.js#L470" class="view-source btn btn-action"><i class="icon-zoom-in"> </i> View source</a><a href="http://github.com/angular/angular.js/edit/master/src/Angular.js" class="improve-docs btn btn-primary"><i class="icon-edit"> </i> Improve this doc</a><h1><code ng:non-bindable="">angular.isElement</code>
|
||||
<a href="http://github.com/angular/angular.js/tree/v1.2.0rc1/src/Angular.js#L480" class="view-source btn btn-action"><i class="icon-zoom-in"> </i> View source</a><a href="http://github.com/angular/angular.js/edit/master/src/Angular.js" class="improve-docs btn btn-primary"><i class="icon-edit"> </i> Improve this doc</a><h1><code ng:non-bindable="">angular.isElement</code>
|
||||
<div><span class="hint">API in module <code ng:non-bindable="">ng</code>
|
||||
</span>
|
||||
</div>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
<a href="http://github.com/angular/angular.js/tree/v1.2.0rc1/src/Angular.js#L402" class="view-source btn btn-action"><i class="icon-zoom-in"> </i> View source</a><a href="http://github.com/angular/angular.js/edit/master/src/Angular.js" class="improve-docs btn btn-primary"><i class="icon-edit"> </i> Improve this doc</a><h1><code ng:non-bindable="">angular.isFunction</code>
|
||||
<a href="http://github.com/angular/angular.js/tree/v1.2.0rc1/src/Angular.js#L412" class="view-source btn btn-action"><i class="icon-zoom-in"> </i> View source</a><a href="http://github.com/angular/angular.js/edit/master/src/Angular.js" class="improve-docs btn btn-primary"><i class="icon-edit"> </i> Improve this doc</a><h1><code ng:non-bindable="">angular.isFunction</code>
|
||||
<div><span class="hint">API in module <code ng:non-bindable="">ng</code>
|
||||
</span>
|
||||
</div>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
<a href="http://github.com/angular/angular.js/tree/v1.2.0rc1/src/Angular.js#L356" class="view-source btn btn-action"><i class="icon-zoom-in"> </i> View source</a><a href="http://github.com/angular/angular.js/edit/master/src/Angular.js" class="improve-docs btn btn-primary"><i class="icon-edit"> </i> Improve this doc</a><h1><code ng:non-bindable="">angular.isNumber</code>
|
||||
<a href="http://github.com/angular/angular.js/tree/v1.2.0rc1/src/Angular.js#L366" class="view-source btn btn-action"><i class="icon-zoom-in"> </i> View source</a><a href="http://github.com/angular/angular.js/edit/master/src/Angular.js" class="improve-docs btn btn-primary"><i class="icon-edit"> </i> Improve this doc</a><h1><code ng:non-bindable="">angular.isNumber</code>
|
||||
<div><span class="hint">API in module <code ng:non-bindable="">ng</code>
|
||||
</span>
|
||||
</div>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
<a href="http://github.com/angular/angular.js/tree/v1.2.0rc1/src/Angular.js#L327" class="view-source btn btn-action"><i class="icon-zoom-in"> </i> View source</a><a href="http://github.com/angular/angular.js/edit/master/src/Angular.js" class="improve-docs btn btn-primary"><i class="icon-edit"> </i> Improve this doc</a><h1><code ng:non-bindable="">angular.isObject</code>
|
||||
<a href="http://github.com/angular/angular.js/tree/v1.2.0rc1/src/Angular.js#L337" class="view-source btn btn-action"><i class="icon-zoom-in"> </i> View source</a><a href="http://github.com/angular/angular.js/edit/master/src/Angular.js" class="improve-docs btn btn-primary"><i class="icon-edit"> </i> Improve this doc</a><h1><code ng:non-bindable="">angular.isObject</code>
|
||||
<div><span class="hint">API in module <code ng:non-bindable="">ng</code>
|
||||
</span>
|
||||
</div>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
<a href="http://github.com/angular/angular.js/tree/v1.2.0rc1/src/Angular.js#L342" class="view-source btn btn-action"><i class="icon-zoom-in"> </i> View source</a><a href="http://github.com/angular/angular.js/edit/master/src/Angular.js" class="improve-docs btn btn-primary"><i class="icon-edit"> </i> Improve this doc</a><h1><code ng:non-bindable="">angular.isString</code>
|
||||
<a href="http://github.com/angular/angular.js/tree/v1.2.0rc1/src/Angular.js#L352" class="view-source btn btn-action"><i class="icon-zoom-in"> </i> View source</a><a href="http://github.com/angular/angular.js/edit/master/src/Angular.js" class="improve-docs btn btn-primary"><i class="icon-edit"> </i> Improve this doc</a><h1><code ng:non-bindable="">angular.isString</code>
|
||||
<div><span class="hint">API in module <code ng:non-bindable="">ng</code>
|
||||
</span>
|
||||
</div>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
<a href="http://github.com/angular/angular.js/tree/v1.2.0rc1/src/Angular.js#L299" class="view-source btn btn-action"><i class="icon-zoom-in"> </i> View source</a><a href="http://github.com/angular/angular.js/edit/master/src/Angular.js" class="improve-docs btn btn-primary"><i class="icon-edit"> </i> Improve this doc</a><h1><code ng:non-bindable="">angular.isUndefined</code>
|
||||
<a href="http://github.com/angular/angular.js/tree/v1.2.0rc1/src/Angular.js#L309" class="view-source btn btn-action"><i class="icon-zoom-in"> </i> View source</a><a href="http://github.com/angular/angular.js/edit/master/src/Angular.js" class="improve-docs btn btn-primary"><i class="icon-edit"> </i> Improve this doc</a><h1><code ng:non-bindable="">angular.isUndefined</code>
|
||||
<div><span class="hint">API in module <code ng:non-bindable="">ng</code>
|
||||
</span>
|
||||
</div>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
<a href="http://github.com/angular/angular.js/tree/v1.2.0rc1/src/ngMock/angular-mocks.js#L1874" class="view-source btn btn-action"><i class="icon-zoom-in"> </i> View source</a><a href="http://github.com/angular/angular.js/edit/master/src/ngMock/angular-mocks.js" class="improve-docs btn btn-primary"><i class="icon-edit"> </i> Improve this doc</a><h1><code ng:non-bindable="">angular.mock.inject</code>
|
||||
<a href="http://github.com/angular/angular.js/tree/v1.2.0rc1/src/ngMock/angular-mocks.js#L1884" class="view-source btn btn-action"><i class="icon-zoom-in"> </i> View source</a><a href="http://github.com/angular/angular.js/edit/master/src/ngMock/angular-mocks.js" class="improve-docs btn btn-primary"><i class="icon-edit"> </i> Improve this doc</a><h1><code ng:non-bindable="">angular.mock.inject</code>
|
||||
<div><span class="hint">API in module <code ng:non-bindable="">ng</code>
|
||||
</span>
|
||||
</div>
|
||||
|
|
|
@ -11,8 +11,10 @@ which will be used when the injector is created by <a href="api/angular.mock.inj
|
|||
</div></div>
|
||||
<h2 id="Usage">Usage</h2>
|
||||
<div class="usage"><pre class="prettyprint linenums">angular.mock.module(fns);</pre>
|
||||
<h4 id="parameters">Parameters</h4><table class="variables-matrix table table-bordered table-striped"><thead><tr><th>Param</th><th>Type</th><th>Details</th></tr></thead><tbody><tr><td>fns</td><td><a href="" class="label type-hint type-hint-object">...(string</a><a href="" class="label type-hint type-hint-function">Function</a></td><td><div class="angular-mock-module-page"><p>any number of modules which are represented as string
|
||||
<h4 id="parameters">Parameters</h4><table class="variables-matrix table table-bordered table-striped"><thead><tr><th>Param</th><th>Type</th><th>Details</th></tr></thead><tbody><tr><td>fns</td><td><a href="" class="label type-hint type-hint-object">...(string</a><a href="" class="label type-hint type-hint-function">Function</a><a href="" class="label type-hint type-hint-object">Object</a></td><td><div class="angular-mock-module-page"><p>any number of modules which are represented as string
|
||||
aliases or as anonymous module initialization functions. The modules are used to
|
||||
configure the injector. The 'ng' and 'ngMock' modules are automatically loaded.</p>
|
||||
configure the injector. The 'ng' and 'ngMock' modules are automatically loaded. If an
|
||||
object literal is passed they will be register as values in the module, the key being
|
||||
the module name and the value being what is returned.</p>
|
||||
</div></td></tr></tbody></table></div>
|
||||
</div>
|
||||
|
|
|
@ -4,9 +4,11 @@
|
|||
</div>
|
||||
</h1>
|
||||
<div><h2 id="Description">Description</h2>
|
||||
<div class="description"><div class="angular-module-page"><p>The <code>angular.module</code> is a global place for creating and registering Angular modules. All
|
||||
modules (angular core or 3rd party) that should be available to an application must be
|
||||
<div class="description"><div class="angular-module-page"><p>The <code>angular.module</code> is a global place for creating, registering and retrieving Angular modules.
|
||||
All modules (angular core or 3rd party) that should be available to an application must be
|
||||
registered using this mechanism.</p>
|
||||
<p>When passed two or more arguments, a new module is created. If passed only one argument, an
|
||||
existing module (the name passed as the first argument to <code>module</code>) is retrieved.</p>
|
||||
<h3>Module</h3>
|
||||
<p>A module is a collection of services, directives, filters, and configuration information.
|
||||
<code>angular.module</code> is used to configure the <a href="api/AUTO.$injector"><code>$injector</code></a>.</p>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
<a href="http://github.com/angular/angular.js/tree/v1.2.0rc1/src/Angular.js#L259" class="view-source btn btn-action"><i class="icon-zoom-in"> </i> View source</a><a href="http://github.com/angular/angular.js/edit/master/src/Angular.js" class="improve-docs btn btn-primary"><i class="icon-edit"> </i> Improve this doc</a><h1><code ng:non-bindable="">angular.noop</code>
|
||||
<a href="http://github.com/angular/angular.js/tree/v1.2.0rc1/src/Angular.js#L269" class="view-source btn btn-action"><i class="icon-zoom-in"> </i> View source</a><a href="http://github.com/angular/angular.js/edit/master/src/Angular.js" class="improve-docs btn btn-primary"><i class="icon-edit"> </i> Improve this doc</a><h1><code ng:non-bindable="">angular.noop</code>
|
||||
<div><span class="hint">API in module <code ng:non-bindable="">ng</code>
|
||||
</span>
|
||||
</div>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
<a href="http://github.com/angular/angular.js/tree/v1.2.0rc1/src/Angular.js#L787" class="view-source btn btn-action"><i class="icon-zoom-in"> </i> View source</a><a href="http://github.com/angular/angular.js/edit/master/src/Angular.js" class="improve-docs btn btn-primary"><i class="icon-edit"> </i> Improve this doc</a><h1><code ng:non-bindable="">angular.toJson</code>
|
||||
<a href="http://github.com/angular/angular.js/tree/v1.2.0rc1/src/Angular.js#L797" class="view-source btn btn-action"><i class="icon-zoom-in"> </i> View source</a><a href="http://github.com/angular/angular.js/edit/master/src/Angular.js" class="improve-docs btn btn-primary"><i class="icon-edit"> </i> Improve this doc</a><h1><code ng:non-bindable="">angular.toJson</code>
|
||||
<div><span class="hint">API in module <code ng:non-bindable="">ng</code>
|
||||
</span>
|
||||
</div>
|
||||
|
|
|
@ -200,6 +200,7 @@ takes a <a href="api/ng.$q"><code>promise</code></a> and returns the original or
|
|||
return function(promise) {
|
||||
return promise.then(function(response) {
|
||||
// do something on success
|
||||
return response;
|
||||
}, function(response) {
|
||||
// do something on error
|
||||
if (canRecover(response)) {
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
<a href="http://github.com/angular/angular.js/tree/v1.2.0rc1/src/ng/interpolate.js#L79" class="view-source btn btn-action"><i class="icon-zoom-in"> </i> View source</a><a href="http://github.com/angular/angular.js/edit/master/src/ng/interpolate.js" class="improve-docs btn btn-primary"><i class="icon-edit"> </i> Improve this doc</a><h1><code ng:non-bindable="">$interpolate</code>
|
||||
<a href="http://github.com/angular/angular.js/tree/v1.2.0rc1/src/ng/interpolate.js#L88" class="view-source btn btn-action"><i class="icon-zoom-in"> </i> View source</a><a href="http://github.com/angular/angular.js/edit/master/src/ng/interpolate.js" class="improve-docs btn btn-primary"><i class="icon-edit"> </i> Improve this doc</a><h1><code ng:non-bindable="">$interpolate</code>
|
||||
<div><span class="hint">service in module <code ng:non-bindable="">ng</code>
|
||||
</span>
|
||||
</div>
|
||||
|
|
|
@ -23,29 +23,41 @@
|
|||
</div>
|
||||
<h2 id="Example">Example</h2>
|
||||
<div class="example"><div class="ng-interpolateprovider-page"><h4>Source</h2>
|
||||
<div source-edit="" source-edit-deps="angular.js script.js" source-edit-html="index.html-130" source-edit-css="" source-edit-js="script.js-129" source-edit-json="" source-edit-unit="" source-edit-scenario=""></div>
|
||||
<div source-edit="customInterpolationApp" source-edit-deps="angular.js script.js" source-edit-html="index.html-130" source-edit-css="" source-edit-js="script.js-129" source-edit-json="" source-edit-unit="" source-edit-scenario="scenario.js-131"></div>
|
||||
<div class="tabbable"><div class="tab-pane" title="index.html">
|
||||
<pre class="prettyprint linenums" ng-set-text="index.html-130" ng-html-wrap=" angular.js script.js"></pre>
|
||||
<pre class="prettyprint linenums" ng-set-text="index.html-130" ng-html-wrap="customInterpolationApp angular.js script.js"></pre>
|
||||
<script type="text/ng-template" id="index.html-130">
|
||||
|
||||
<div ng-app="App" ng-controller="Controller">
|
||||
//label//
|
||||
<div ng-app="App" ng-controller="DemoController as demo">
|
||||
//demo.label//
|
||||
</div>
|
||||
</script>
|
||||
</div>
|
||||
<div class="tab-pane" title="script.js">
|
||||
<pre class="prettyprint linenums" ng-set-text="script.js-129"></pre>
|
||||
<script type="text/ng-template" id="script.js-129">
|
||||
var myApp = angular.module('App', [], function($interpolateProvider) {
|
||||
var customInterpolationApp = angular.module('customInterpolationApp', []);
|
||||
|
||||
customInterpolationApp.config(function($interpolateProvider) {
|
||||
$interpolateProvider.startSymbol('//');
|
||||
$interpolateProvider.endSymbol('//');
|
||||
});
|
||||
function Controller($scope) {
|
||||
$scope.label = "Interpolation Provider Sample";
|
||||
}
|
||||
|
||||
|
||||
customInterpolationApp.controller('DemoController', function DemoController() {
|
||||
this.label = "This bindings is brought you you by // interpolation symbols.";
|
||||
});
|
||||
</script>
|
||||
</div>
|
||||
<div class="tab-pane" title="End to end test">
|
||||
<pre class="prettyprint linenums" ng-set-text="scenario.js-131"></pre>
|
||||
<script type="text/ng-template" id="scenario.js-131">
|
||||
it('should interpolate binding with custom symbols', function() {
|
||||
expect(binding('demo.label')).toBe('This bindings is brought you you by // interpolation symbols.');
|
||||
});
|
||||
</script>
|
||||
</div>
|
||||
</div><h2>Demo</h4>
|
||||
<div class="well doc-example-live animate-container" ng-embed-app="" ng-set-html="index.html-130" ng-eval-javascript="script.js-129"></div>
|
||||
<div class="well doc-example-live animate-container" ng-embed-app="customInterpolationApp" ng-set-html="index.html-130" ng-eval-javascript="script.js-129"></div>
|
||||
</div></div>
|
||||
</div>
|
||||
|
|
|
@ -37,10 +37,10 @@ into the browser's console (if present).</p>
|
|||
</div>
|
||||
<h2 id="Example">Example</h2>
|
||||
<div class="example"><div class="ng-log-page"><h4>Source</h2>
|
||||
<div source-edit="" source-edit-deps="angular.js script.js" source-edit-html="index.html-132" source-edit-css="" source-edit-js="script.js-131" source-edit-json="" source-edit-unit="" source-edit-scenario=""></div>
|
||||
<div source-edit="" source-edit-deps="angular.js script.js" source-edit-html="index.html-133" source-edit-css="" source-edit-js="script.js-132" source-edit-json="" source-edit-unit="" source-edit-scenario=""></div>
|
||||
<div class="tabbable"><div class="tab-pane" title="index.html">
|
||||
<pre class="prettyprint linenums" ng-set-text="index.html-132" ng-html-wrap=" angular.js script.js"></pre>
|
||||
<script type="text/ng-template" id="index.html-132">
|
||||
<pre class="prettyprint linenums" ng-set-text="index.html-133" ng-html-wrap=" angular.js script.js"></pre>
|
||||
<script type="text/ng-template" id="index.html-133">
|
||||
<div ng-controller="LogCtrl">
|
||||
<p>Reload this page with open console, enter text and hit the log button...</p>
|
||||
Message:
|
||||
|
@ -53,8 +53,8 @@ into the browser's console (if present).</p>
|
|||
</script>
|
||||
</div>
|
||||
<div class="tab-pane" title="script.js">
|
||||
<pre class="prettyprint linenums" ng-set-text="script.js-131"></pre>
|
||||
<script type="text/ng-template" id="script.js-131">
|
||||
<pre class="prettyprint linenums" ng-set-text="script.js-132"></pre>
|
||||
<script type="text/ng-template" id="script.js-132">
|
||||
function LogCtrl($scope, $log) {
|
||||
$scope.$log = $log;
|
||||
$scope.message = 'Hello World!';
|
||||
|
@ -62,6 +62,6 @@ into the browser's console (if present).</p>
|
|||
</script>
|
||||
</div>
|
||||
</div><h2>Demo</h4>
|
||||
<div class="well doc-example-live animate-container" ng-embed-app="" ng-set-html="index.html-132" ng-eval-javascript="script.js-131"></div>
|
||||
<div class="well doc-example-live animate-container" ng-embed-app="" ng-set-html="index.html-133" ng-eval-javascript="script.js-132"></div>
|
||||
</div></div>
|
||||
</div>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
<a href="http://github.com/angular/angular.js/tree/v1.2.0rc1/src/ng/parse.js#L916" class="view-source btn btn-action"><i class="icon-zoom-in"> </i> View source</a><a href="http://github.com/angular/angular.js/edit/master/src/ng/parse.js" class="improve-docs btn btn-primary"><i class="icon-edit"> </i> Improve this doc</a><h1><code ng:non-bindable="">$parse</code>
|
||||
<a href="http://github.com/angular/angular.js/tree/v1.2.0rc1/src/ng/parse.js#L927" class="view-source btn btn-action"><i class="icon-zoom-in"> </i> View source</a><a href="http://github.com/angular/angular.js/edit/master/src/ng/parse.js" class="improve-docs btn btn-primary"><i class="icon-edit"> </i> Improve this doc</a><h1><code ng:non-bindable="">$parse</code>
|
||||
<div><span class="hint">service in module <code ng:non-bindable="">ng</code>
|
||||
</span>
|
||||
</div>
|
||||
|
|
|
@ -21,6 +21,8 @@ asynchronous programming what <code>try</code>, <code>catch</code> and <code>thr
|
|||
// since this fn executes async in a future turn of the event loop, we need to wrap
|
||||
// our code into an $apply call so that the model changes are properly observed.
|
||||
scope.$apply(function() {
|
||||
deferred.notify('About to greet ' + name + '.');
|
||||
|
||||
if (okToGreet(name)) {
|
||||
deferred.resolve('Hello, ' + name + '!');
|
||||
} else {
|
||||
|
@ -37,6 +39,8 @@ asynchronous programming what <code>try</code>, <code>catch</code> and <code>thr
|
|||
alert('Success: ' + greeting);
|
||||
}, function(reason) {
|
||||
alert('Failed: ' + reason);
|
||||
}, function(update) {
|
||||
alert('Got notification: ' + update);
|
||||
});
|
||||
</pre>
|
||||
<p>At first it might not be obvious why this extra complexity is worth the trouble. The payoff
|
||||
|
@ -49,13 +53,16 @@ section on serial or parallel joining of promises.</p>
|
|||
<h3>The Deferred API</h1>
|
||||
<p>A new instance of deferred is constructed by calling <code>$q.defer()</code>.</p>
|
||||
<p>The purpose of the deferred object is to expose the associated Promise instance as well as APIs
|
||||
that can be used for signaling the successful or unsuccessful completion of the task.</p>
|
||||
that can be used for signaling the successful or unsuccessful completion, as well as the status
|
||||
of the task.</p>
|
||||
<p><strong>Methods</strong></p>
|
||||
<ul>
|
||||
<li><code>resolve(value)</code> – resolves the derived promise with the <code>value</code>. If the value is a rejection
|
||||
constructed via <code>$q.reject</code>, the promise will be rejected instead.</li>
|
||||
<li><code>reject(reason)</code> – rejects the derived promise with the <code>reason</code>. This is equivalent to
|
||||
resolving it with a rejection constructed via <code>$q.reject</code>.</li>
|
||||
<li><code>notify(value)</code> - provides updates on the status of the promises execution. This may be called
|
||||
multiple times before the promise is either resolved or rejected.</li>
|
||||
</ul>
|
||||
<p><strong>Properties</strong></p>
|
||||
<ul>
|
||||
|
@ -68,11 +75,14 @@ calling <code>deferred.promise</code>.</p>
|
|||
of the deferred task when it completes.</p>
|
||||
<p><strong>Methods</strong></p>
|
||||
<ul>
|
||||
<li><p><code>then(successCallback, errorCallback)</code> – regardless of when the promise was or will be resolved
|
||||
or rejected, <code>then</code> calls one of the success or error callbacks asynchronously as soon as the result
|
||||
is available. The callbacks are called with a single argument: the result or rejection reason.</p>
|
||||
<li><p><code>then(successCallback, errorCallback, notifyCallback)</code> – regardless of when the promise was or
|
||||
will be resolved or rejected, <code>then</code> calls one of the success or error callbacks asynchronously
|
||||
as soon as the result is available. The callbacks are called with a single argument: the result
|
||||
or rejection reason. Additionally, the notify callback may be called zero or more times to
|
||||
provide a progress indication, before the promise is resolved or rejected.</p>
|
||||
<p>This method <em>returns a new promise</em> which is resolved or rejected via the return value of the
|
||||
<code>successCallback</code> or <code>errorCallback</code>.</p>
|
||||
<code>successCallback</code>, <code>errorCallback</code>. It also notifies via the return value of the <code>notifyCallback</code>
|
||||
method. The promise can not be resolved or rejected from the notifyCallback method.</p>
|
||||
</li>
|
||||
<li><p><code>catch(errorCallback)</code> – shorthand for <code>promise.then(null, errorCallback)</code></p>
|
||||
</li>
|
||||
|
|
|
@ -196,12 +196,14 @@ expression are propagated (uncaught). This is useful when evaluating Angular exp
|
|||
<div class="$evalasync"><div class="ng-rootscope-scope-evalasync-page"><p>Executes the expression on the current scope at a later point in time.</p>
|
||||
<p>The <code>$evalAsync</code> makes no guarantees as to when the <code>expression</code> will be executed, only that:</p>
|
||||
<ul>
|
||||
<li>it will execute in the current script execution context (before any DOM rendering).</li>
|
||||
<li>at least one <a href="api/ng.$rootScope.Scope#$digest"><code>$digest cycle</code></a> will be performed after
|
||||
<code>expression</code> execution.</li>
|
||||
<li>it will execute after the function that schedule the evaluation is done running (preferably before DOM rendering).</li>
|
||||
<li>at least one <a href="api/ng.$rootScope.Scope#$digest"><code>$digest cycle</code></a> will be performed after <code>expression</code> execution.</li>
|
||||
</ul>
|
||||
<p>Any exceptions from the execution of the expression are forwarded to the
|
||||
<a href="api/ng.$exceptionHandler"><code>$exceptionHandler</code></a> service.</p>
|
||||
<p><strong>Note:</strong> if this function is called outside of <code>$digest</code> cycle, a new $digest cycle will be scheduled.
|
||||
It is however encouraged to always call code that changes the model from withing an <code>$apply</code> call.
|
||||
That includes code evaluated via <code>$evalAsync</code>.</p>
|
||||
</div><h5 id="parameters">Parameters</h5><table class="variables-matrix table table-bordered table-striped"><thead><tr><th>Param</th><th>Type</th><th>Details</th></tr></thead><tbody><tr><td>expression <div><em>(optional)</em></div></td><td><a href="" class="label type-hint type-hint-string">string</a><a href="" class="label type-hint type-hint-function">function()</a></td><td><div class="ng-rootscope-scope-evalasync-page"><p>An angular expression to be executed.</p>
|
||||
<ul>
|
||||
<li><code>string</code>: execute using the rules as defined in <a href="guide/expression">expression</a>.</li>
|
||||
|
|
|
@ -47,7 +47,7 @@ accepted by SCE / privileged contexts.</p>
|
|||
<h4>How does it work?</h2>
|
||||
<p>In privileged contexts, directives and code will bind to the result of <a href="../../../../../index.htmle#getTrusted"><code>$sce.getTrusted(context, value)</code></a> rather than to the value directly. Directives use <a href="../../../../../index.htmle#parse"><code>$sce.parseAs</code></a> rather than <code>$parse</code> to watch attribute bindings, which performs the
|
||||
<a href="../../../../../index.htmle#getTrusted"><code>$sce.getTrusted</code></a> behind the scenes on non-constant literals.</p>
|
||||
<p>As an example, <a href="../../../../../index.htmlective:ngBindHtml"><code>ngBindHtml</code></a> uses <a href="../../../../../index.htmle#parseHtml"><code>$sce.parseAsHtml(binding expression)</code></a>. Here's the actual code (slightly
|
||||
<p>As an example, <a href="../../../../../index.htmlective:ngBindHtml"><code>ngBindHtml</code></a> uses <a href="../../../../../index.htmle#parseAsHtml"><code>$sce.parseAsHtml(binding expression)</code></a>. Here's the actual code (slightly
|
||||
simplified):</p>
|
||||
<pre class="prettyprint" class="prettyprint linenums">
|
||||
var ngBindHtmlDirective = ['$sce', function($sce) {
|
||||
|
@ -86,13 +86,36 @@ served document. You can change these by setting your own custom <a href="../..
|
|||
application that's secure and can be audited to verify that with much more ease than bolting
|
||||
security onto an application later.</p>
|
||||
<h2>What trusted context types are supported?<a name="contexts"></a></h2>
|
||||
<p>| Context | Notes |
|
||||
|=====================|================|
|
||||
| <code>$sce.HTML</code> | For HTML that's safe to source into the application. The <a href="../../../../../index.htmlective:ngBindHtml"><code>ngBindHtml</code></a> directive uses this context for bindings. |
|
||||
| <code>$sce.CSS</code> | For CSS that's safe to source into the application. Currently unused. Feel free to use it in your own directives. |
|
||||
| <code>$sce.URL</code> | For URLs that are safe to follow as links. Currently unused (<code><a href=</code> and <code><img src=</code> sanitize their urls and don't consititute an SCE context. |
|
||||
| <code>$sce.RESOURCE_URL</code> | For URLs that are not only safe to follow as links, but whose contens are also safe to include in your application. Examples include <code>ng-include</code>, <code>src</code> / <code>ngSrc</code> bindings for tags other than <code>IMG</code> (e.g. <code>IFRAME</code>, <code>OBJECT</code>, etc.) <br><br>Note that <code>$sce.RESOURCE_URL</code> makes a stronger statement about the URL than <code>$sce.URL</code> does and therefore contexts requiring values trusted for <code>$sce.RESOURCE_URL</code> can be used anywhere that values trusted for <code>$sce.URL</code> are required. |
|
||||
| <code>$sce.JS</code> | For JavaScript that is safe to execute in your application's context. Currently unused. Feel free to use it in your own directives. |</p>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Context</th>
|
||||
<th>Notes</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><code>$sce.HTML</code></td>
|
||||
<td>For HTML that's safe to source into the application. The <a href="../../../../../index.htmlective:ngBindHtml"><code>ngBindHtml</code></a> directive uses this context for bindings.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>$sce.CSS</code></td>
|
||||
<td>For CSS that's safe to source into the application. Currently unused. Feel free to use it in your own directives.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>$sce.URL</code></td>
|
||||
<td>For URLs that are safe to follow as links. Currently unused (<code><a href=</code> and <code><img src=</code> sanitize their urls and don't consititute an SCE context.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>$sce.RESOURCE_URL</code></td>
|
||||
<td>For URLs that are not only safe to follow as links, but whose contens are also safe to include in your application. Examples include <code>ng-include</code>, <code>src</code> / <code>ngSrc</code> bindings for tags other than <code>IMG</code> (e.g. <code>IFRAME</code>, <code>OBJECT</code>, etc.) <br><br>Note that <code>$sce.RESOURCE_URL</code> makes a stronger statement about the URL than <code>$sce.URL</code> does and therefore contexts requiring values trusted for <code>$sce.RESOURCE_URL</code> can be used anywhere that values trusted for <code>$sce.URL</code> are required.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>$sce.JS</code></td>
|
||||
<td>For JavaScript that is safe to execute in your application's context. Currently unused. Feel free to use it in your own directives.</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<h2>Show me an example.</h4>
|
||||
</div></div>
|
||||
<div class="member method"><h2 id="Methods">Methods</h2>
|
||||
|
@ -266,10 +289,10 @@ have to do it at module config time on <a href="../../../../../index.htmleProvid
|
|||
</div>
|
||||
<h2 id="Example">Example</h2>
|
||||
<div class="example"><div class="ng-sce-page"><h4>Source</h2>
|
||||
<div source-edit="mySceApp" source-edit-deps="angular.js script.js" source-edit-html="index.html-133" source-edit-css="" source-edit-js="script.js-134" source-edit-json="test_data.json" source-edit-unit="" source-edit-scenario="scenario.js-135"></div>
|
||||
<div source-edit="mySceApp" source-edit-deps="angular.js script.js" source-edit-html="index.html-134" source-edit-css="" source-edit-js="script.js-135" source-edit-json="test_data.json" source-edit-unit="" source-edit-scenario="scenario.js-136"></div>
|
||||
<div class="tabbable"><div class="tab-pane" title="index.html">
|
||||
<pre class="prettyprint linenums" ng-set-text="index.html-133" ng-html-wrap="mySceApp angular.js script.js"></pre>
|
||||
<script type="text/ng-template" id="index.html-133">
|
||||
<pre class="prettyprint linenums" ng-set-text="index.html-134" ng-html-wrap="mySceApp angular.js script.js"></pre>
|
||||
<script type="text/ng-template" id="index.html-134">
|
||||
<div ng-controller="myAppController as myCtrl">
|
||||
<i ng-bind-html="myCtrl.explicitlyTrustedHtml" id="explicitlyTrustedHtml"></i><br><br>
|
||||
<b>User comments</b><br>
|
||||
|
@ -285,8 +308,8 @@ have to do it at module config time on <a href="../../../../../index.htmleProvid
|
|||
</script>
|
||||
</div>
|
||||
<div class="tab-pane" title="script.js">
|
||||
<pre class="prettyprint linenums" ng-set-text="script.js-134"></pre>
|
||||
<script type="text/ng-template" id="script.js-134">
|
||||
<pre class="prettyprint linenums" ng-set-text="script.js-135"></pre>
|
||||
<script type="text/ng-template" id="script.js-135">
|
||||
var mySceApp = angular.module('mySceApp', ['ngSanitize']);
|
||||
|
||||
mySceApp.controller("myAppController", function myAppController($http, $templateCache, $sce) {
|
||||
|
@ -314,8 +337,8 @@ have to do it at module config time on <a href="../../../../../index.htmleProvid
|
|||
</script>
|
||||
</div>
|
||||
<div class="tab-pane" title="End to end test">
|
||||
<pre class="prettyprint linenums" ng-set-text="scenario.js-135"></pre>
|
||||
<script type="text/ng-template" id="scenario.js-135">
|
||||
<pre class="prettyprint linenums" ng-set-text="scenario.js-136"></pre>
|
||||
<script type="text/ng-template" id="scenario.js-136">
|
||||
describe('SCE doc demo', function() {
|
||||
it('should sanitize untrusted values', function() {
|
||||
expect(element('.htmlComment').html()).toBe('<span>Is <i>anyone</i> reading this?</span>');
|
||||
|
@ -329,7 +352,7 @@ have to do it at module config time on <a href="../../../../../index.htmleProvid
|
|||
</script>
|
||||
</div>
|
||||
</div><h2>Demo</h2>
|
||||
<div class="well doc-example-live animate-container" ng-embed-app="mySceApp" ng-set-html="index.html-133" ng-eval-javascript="script.js-134"></div>
|
||||
<div class="well doc-example-live animate-container" ng-embed-app="mySceApp" ng-set-html="index.html-134" ng-eval-javascript="script.js-135"></div>
|
||||
<h2>Can I disable SCE completely?</h4>
|
||||
<p>Yes, you can. However, this is strongly discouraged. SCE gives you a lot of security benefits
|
||||
for little coding overhead. It will be much harder to take an SCE disabled application and
|
||||
|
|
|
@ -15,10 +15,10 @@ expression.</p>
|
|||
</div></div>
|
||||
<h2 id="Example">Example</h2>
|
||||
<div class="example"><div class="ng-window-page"><h4>Source</h2>
|
||||
<div source-edit="" source-edit-deps="angular.js script.js" source-edit-html="index.html-137" source-edit-css="" source-edit-js="script.js-136" source-edit-json="" source-edit-unit="" source-edit-scenario="scenario.js-138"></div>
|
||||
<div source-edit="" source-edit-deps="angular.js script.js" source-edit-html="index.html-138" source-edit-css="" source-edit-js="script.js-137" source-edit-json="" source-edit-unit="" source-edit-scenario="scenario.js-139"></div>
|
||||
<div class="tabbable"><div class="tab-pane" title="index.html">
|
||||
<pre class="prettyprint linenums" ng-set-text="index.html-137" ng-html-wrap=" angular.js script.js"></pre>
|
||||
<script type="text/ng-template" id="index.html-137">
|
||||
<pre class="prettyprint linenums" ng-set-text="index.html-138" ng-html-wrap=" angular.js script.js"></pre>
|
||||
<script type="text/ng-template" id="index.html-138">
|
||||
|
||||
<div ng-controller="Ctrl">
|
||||
<input type="text" ng-model="greeting" />
|
||||
|
@ -27,8 +27,8 @@ expression.</p>
|
|||
</script>
|
||||
</div>
|
||||
<div class="tab-pane" title="script.js">
|
||||
<pre class="prettyprint linenums" ng-set-text="script.js-136"></pre>
|
||||
<script type="text/ng-template" id="script.js-136">
|
||||
<pre class="prettyprint linenums" ng-set-text="script.js-137"></pre>
|
||||
<script type="text/ng-template" id="script.js-137">
|
||||
function Ctrl($scope, $window) {
|
||||
$scope.$window = $window;
|
||||
$scope.greeting = 'Hello, World!';
|
||||
|
@ -36,8 +36,8 @@ expression.</p>
|
|||
</script>
|
||||
</div>
|
||||
<div class="tab-pane" title="End to end test">
|
||||
<pre class="prettyprint linenums" ng-set-text="scenario.js-138"></pre>
|
||||
<script type="text/ng-template" id="scenario.js-138">
|
||||
<pre class="prettyprint linenums" ng-set-text="scenario.js-139"></pre>
|
||||
<script type="text/ng-template" id="scenario.js-139">
|
||||
it('should display the greeting in the input box', function() {
|
||||
input('greeting').enter('Hello, E2E Tests');
|
||||
// If we click the button it will block the test runner
|
||||
|
@ -46,6 +46,6 @@ expression.</p>
|
|||
</script>
|
||||
</div>
|
||||
</div><h2>Demo</h4>
|
||||
<div class="well doc-example-live animate-container" ng-embed-app="" ng-set-html="index.html-137" ng-eval-javascript="script.js-136"></div>
|
||||
<div class="well doc-example-live animate-container" ng-embed-app="" ng-set-html="index.html-138" ng-eval-javascript="script.js-137"></div>
|
||||
</div></div>
|
||||
</div>
|
||||
|
|
|
@ -22,10 +22,10 @@ interaction with the input element.</p>
|
|||
</div></td></tr></tbody></table></div>
|
||||
<h2 id="Example">Example</h2>
|
||||
<div class="example"><div class="ng-directive-page ng-directive-input-checkbox-page"><h4>Source</h2>
|
||||
<div source-edit="" source-edit-deps="angular.js script.js" source-edit-html="index.html-51" source-edit-css="" source-edit-js="script.js-50" source-edit-json="" source-edit-unit="" source-edit-scenario="scenario.js-52"></div>
|
||||
<div source-edit="" source-edit-deps="angular.js script.js" source-edit-html="index.html-38" source-edit-css="" source-edit-js="script.js-37" source-edit-json="" source-edit-unit="" source-edit-scenario="scenario.js-39"></div>
|
||||
<div class="tabbable"><div class="tab-pane" title="index.html">
|
||||
<pre class="prettyprint linenums" ng-set-text="index.html-51" ng-html-wrap=" angular.js script.js"></pre>
|
||||
<script type="text/ng-template" id="index.html-51">
|
||||
<pre class="prettyprint linenums" ng-set-text="index.html-38" ng-html-wrap=" angular.js script.js"></pre>
|
||||
<script type="text/ng-template" id="index.html-38">
|
||||
|
||||
<form name="myForm" ng-controller="Ctrl">
|
||||
Value1: <input type="checkbox" ng-model="value1"> <br/>
|
||||
|
@ -37,8 +37,8 @@ interaction with the input element.</p>
|
|||
</script>
|
||||
</div>
|
||||
<div class="tab-pane" title="script.js">
|
||||
<pre class="prettyprint linenums" ng-set-text="script.js-50"></pre>
|
||||
<script type="text/ng-template" id="script.js-50">
|
||||
<pre class="prettyprint linenums" ng-set-text="script.js-37"></pre>
|
||||
<script type="text/ng-template" id="script.js-37">
|
||||
function Ctrl($scope) {
|
||||
$scope.value1 = true;
|
||||
$scope.value2 = 'YES'
|
||||
|
@ -46,8 +46,8 @@ interaction with the input element.</p>
|
|||
</script>
|
||||
</div>
|
||||
<div class="tab-pane" title="End to end test">
|
||||
<pre class="prettyprint linenums" ng-set-text="scenario.js-52"></pre>
|
||||
<script type="text/ng-template" id="scenario.js-52">
|
||||
<pre class="prettyprint linenums" ng-set-text="scenario.js-39"></pre>
|
||||
<script type="text/ng-template" id="scenario.js-39">
|
||||
it('should change state', function() {
|
||||
expect(binding('value1')).toEqual('true');
|
||||
expect(binding('value2')).toEqual('YES');
|
||||
|
@ -60,6 +60,6 @@ interaction with the input element.</p>
|
|||
</script>
|
||||
</div>
|
||||
</div><h2>Demo</h4>
|
||||
<div class="well doc-example-live animate-container" ng-embed-app="" ng-set-html="index.html-51" ng-eval-javascript="script.js-50"></div>
|
||||
<div class="well doc-example-live animate-container" ng-embed-app="" ng-set-html="index.html-38" ng-eval-javascript="script.js-37"></div>
|
||||
</div></div>
|
||||
</div>
|
||||
|
|
|
@ -35,10 +35,10 @@ interaction with the input element.</p>
|
|||
</div></td></tr></tbody></table></div>
|
||||
<h2 id="Example">Example</h2>
|
||||
<div class="example"><div class="ng-directive-page ng-directive-input-email-page"><h4>Source</h2>
|
||||
<div source-edit="" source-edit-deps="angular.js script.js" source-edit-html="index.html-45" source-edit-css="" source-edit-js="script.js-44" source-edit-json="" source-edit-unit="" source-edit-scenario="scenario.js-46"></div>
|
||||
<div source-edit="" source-edit-deps="angular.js script.js" source-edit-html="index.html-32" source-edit-css="" source-edit-js="script.js-31" source-edit-json="" source-edit-unit="" source-edit-scenario="scenario.js-33"></div>
|
||||
<div class="tabbable"><div class="tab-pane" title="index.html">
|
||||
<pre class="prettyprint linenums" ng-set-text="index.html-45" ng-html-wrap=" angular.js script.js"></pre>
|
||||
<script type="text/ng-template" id="index.html-45">
|
||||
<pre class="prettyprint linenums" ng-set-text="index.html-32" ng-html-wrap=" angular.js script.js"></pre>
|
||||
<script type="text/ng-template" id="index.html-32">
|
||||
|
||||
<form name="myForm" ng-controller="Ctrl">
|
||||
Email: <input type="email" name="input" ng-model="text" required>
|
||||
|
@ -56,16 +56,16 @@ interaction with the input element.</p>
|
|||
</script>
|
||||
</div>
|
||||
<div class="tab-pane" title="script.js">
|
||||
<pre class="prettyprint linenums" ng-set-text="script.js-44"></pre>
|
||||
<script type="text/ng-template" id="script.js-44">
|
||||
<pre class="prettyprint linenums" ng-set-text="script.js-31"></pre>
|
||||
<script type="text/ng-template" id="script.js-31">
|
||||
function Ctrl($scope) {
|
||||
$scope.text = 'me@example.com';
|
||||
}
|
||||
</script>
|
||||
</div>
|
||||
<div class="tab-pane" title="End to end test">
|
||||
<pre class="prettyprint linenums" ng-set-text="scenario.js-46"></pre>
|
||||
<script type="text/ng-template" id="scenario.js-46">
|
||||
<pre class="prettyprint linenums" ng-set-text="scenario.js-33"></pre>
|
||||
<script type="text/ng-template" id="scenario.js-33">
|
||||
it('should initialize to model', function() {
|
||||
expect(binding('text')).toEqual('me@example.com');
|
||||
expect(binding('myForm.input.$valid')).toEqual('true');
|
||||
|
@ -84,6 +84,6 @@ interaction with the input element.</p>
|
|||
</script>
|
||||
</div>
|
||||
</div><h2>Demo</h4>
|
||||
<div class="well doc-example-live animate-container" ng-embed-app="" ng-set-html="index.html-45" ng-eval-javascript="script.js-44"></div>
|
||||
<div class="well doc-example-live animate-container" ng-embed-app="" ng-set-html="index.html-32" ng-eval-javascript="script.js-31"></div>
|
||||
</div></div>
|
||||
</div>
|
||||
|
|
|
@ -34,10 +34,10 @@ interaction with the input element.</p>
|
|||
</div></td></tr></tbody></table></div>
|
||||
<h2 id="Example">Example</h2>
|
||||
<div class="example"><div class="ng-directive-page ng-directive-input-page"><h4>Source</h2>
|
||||
<div source-edit="" source-edit-deps="angular.js script.js" source-edit-html="index.html-54" source-edit-css="" source-edit-js="script.js-53" source-edit-json="" source-edit-unit="" source-edit-scenario="scenario.js-55"></div>
|
||||
<div source-edit="" source-edit-deps="angular.js script.js" source-edit-html="index.html-41" source-edit-css="" source-edit-js="script.js-40" source-edit-json="" source-edit-unit="" source-edit-scenario="scenario.js-42"></div>
|
||||
<div class="tabbable"><div class="tab-pane" title="index.html">
|
||||
<pre class="prettyprint linenums" ng-set-text="index.html-54" ng-html-wrap=" angular.js script.js"></pre>
|
||||
<script type="text/ng-template" id="index.html-54">
|
||||
<pre class="prettyprint linenums" ng-set-text="index.html-41" ng-html-wrap=" angular.js script.js"></pre>
|
||||
<script type="text/ng-template" id="index.html-41">
|
||||
|
||||
<div ng-controller="Ctrl">
|
||||
<form name="myForm">
|
||||
|
@ -65,16 +65,16 @@ interaction with the input element.</p>
|
|||
</script>
|
||||
</div>
|
||||
<div class="tab-pane" title="script.js">
|
||||
<pre class="prettyprint linenums" ng-set-text="script.js-53"></pre>
|
||||
<script type="text/ng-template" id="script.js-53">
|
||||
<pre class="prettyprint linenums" ng-set-text="script.js-40"></pre>
|
||||
<script type="text/ng-template" id="script.js-40">
|
||||
function Ctrl($scope) {
|
||||
$scope.user = {name: 'guest', last: 'visitor'};
|
||||
}
|
||||
</script>
|
||||
</div>
|
||||
<div class="tab-pane" title="End to end test">
|
||||
<pre class="prettyprint linenums" ng-set-text="scenario.js-55"></pre>
|
||||
<script type="text/ng-template" id="scenario.js-55">
|
||||
<pre class="prettyprint linenums" ng-set-text="scenario.js-42"></pre>
|
||||
<script type="text/ng-template" id="scenario.js-42">
|
||||
it('should initialize to model', function() {
|
||||
expect(binding('user')).toEqual('{"name":"guest","last":"visitor"}');
|
||||
expect(binding('myForm.userName.$valid')).toEqual('true');
|
||||
|
@ -114,6 +114,6 @@ interaction with the input element.</p>
|
|||
</script>
|
||||
</div>
|
||||
</div><h2>Demo</h4>
|
||||
<div class="well doc-example-live animate-container" ng-embed-app="" ng-set-html="index.html-54" ng-eval-javascript="script.js-53"></div>
|
||||
<div class="well doc-example-live animate-container" ng-embed-app="" ng-set-html="index.html-41" ng-eval-javascript="script.js-40"></div>
|
||||
</div></div>
|
||||
</div>
|
||||
|
|
|
@ -39,10 +39,10 @@ interaction with the input element.</p>
|
|||
</div></td></tr></tbody></table></div>
|
||||
<h2 id="Example">Example</h2>
|
||||
<div class="example"><div class="ng-directive-page ng-directive-input-number-page"><h4>Source</h2>
|
||||
<div source-edit="" source-edit-deps="angular.js script.js" source-edit-html="index.html-39" source-edit-css="" source-edit-js="script.js-38" source-edit-json="" source-edit-unit="" source-edit-scenario="scenario.js-40"></div>
|
||||
<div source-edit="" source-edit-deps="angular.js script.js" source-edit-html="index.html-26" source-edit-css="" source-edit-js="script.js-25" source-edit-json="" source-edit-unit="" source-edit-scenario="scenario.js-27"></div>
|
||||
<div class="tabbable"><div class="tab-pane" title="index.html">
|
||||
<pre class="prettyprint linenums" ng-set-text="index.html-39" ng-html-wrap=" angular.js script.js"></pre>
|
||||
<script type="text/ng-template" id="index.html-39">
|
||||
<pre class="prettyprint linenums" ng-set-text="index.html-26" ng-html-wrap=" angular.js script.js"></pre>
|
||||
<script type="text/ng-template" id="index.html-26">
|
||||
|
||||
<form name="myForm" ng-controller="Ctrl">
|
||||
Number: <input type="number" name="input" ng-model="value"
|
||||
|
@ -60,16 +60,16 @@ interaction with the input element.</p>
|
|||
</script>
|
||||
</div>
|
||||
<div class="tab-pane" title="script.js">
|
||||
<pre class="prettyprint linenums" ng-set-text="script.js-38"></pre>
|
||||
<script type="text/ng-template" id="script.js-38">
|
||||
<pre class="prettyprint linenums" ng-set-text="script.js-25"></pre>
|
||||
<script type="text/ng-template" id="script.js-25">
|
||||
function Ctrl($scope) {
|
||||
$scope.value = 12;
|
||||
}
|
||||
</script>
|
||||
</div>
|
||||
<div class="tab-pane" title="End to end test">
|
||||
<pre class="prettyprint linenums" ng-set-text="scenario.js-40"></pre>
|
||||
<script type="text/ng-template" id="scenario.js-40">
|
||||
<pre class="prettyprint linenums" ng-set-text="scenario.js-27"></pre>
|
||||
<script type="text/ng-template" id="scenario.js-27">
|
||||
it('should initialize to model', function() {
|
||||
expect(binding('value')).toEqual('12');
|
||||
expect(binding('myForm.input.$valid')).toEqual('true');
|
||||
|
@ -89,6 +89,6 @@ interaction with the input element.</p>
|
|||
</script>
|
||||
</div>
|
||||
</div><h2>Demo</h4>
|
||||
<div class="well doc-example-live animate-container" ng-embed-app="" ng-set-html="index.html-39" ng-eval-javascript="script.js-38"></div>
|
||||
<div class="well doc-example-live animate-container" ng-embed-app="" ng-set-html="index.html-26" ng-eval-javascript="script.js-25"></div>
|
||||
</div></div>
|
||||
</div>
|
||||
|
|
|
@ -20,10 +20,10 @@ interaction with the input element.</p>
|
|||
</div></td></tr></tbody></table></div>
|
||||
<h2 id="Example">Example</h2>
|
||||
<div class="example"><div class="ng-directive-page ng-directive-input-radio-page"><h4>Source</h2>
|
||||
<div source-edit="" source-edit-deps="angular.js script.js" source-edit-html="index.html-48" source-edit-css="" source-edit-js="script.js-47" source-edit-json="" source-edit-unit="" source-edit-scenario="scenario.js-49"></div>
|
||||
<div source-edit="" source-edit-deps="angular.js script.js" source-edit-html="index.html-35" source-edit-css="" source-edit-js="script.js-34" source-edit-json="" source-edit-unit="" source-edit-scenario="scenario.js-36"></div>
|
||||
<div class="tabbable"><div class="tab-pane" title="index.html">
|
||||
<pre class="prettyprint linenums" ng-set-text="index.html-48" ng-html-wrap=" angular.js script.js"></pre>
|
||||
<script type="text/ng-template" id="index.html-48">
|
||||
<pre class="prettyprint linenums" ng-set-text="index.html-35" ng-html-wrap=" angular.js script.js"></pre>
|
||||
<script type="text/ng-template" id="index.html-35">
|
||||
|
||||
<form name="myForm" ng-controller="Ctrl">
|
||||
<input type="radio" ng-model="color" value="red"> Red <br/>
|
||||
|
@ -34,16 +34,16 @@ interaction with the input element.</p>
|
|||
</script>
|
||||
</div>
|
||||
<div class="tab-pane" title="script.js">
|
||||
<pre class="prettyprint linenums" ng-set-text="script.js-47"></pre>
|
||||
<script type="text/ng-template" id="script.js-47">
|
||||
<pre class="prettyprint linenums" ng-set-text="script.js-34"></pre>
|
||||
<script type="text/ng-template" id="script.js-34">
|
||||
function Ctrl($scope) {
|
||||
$scope.color = 'blue';
|
||||
}
|
||||
</script>
|
||||
</div>
|
||||
<div class="tab-pane" title="End to end test">
|
||||
<pre class="prettyprint linenums" ng-set-text="scenario.js-49"></pre>
|
||||
<script type="text/ng-template" id="scenario.js-49">
|
||||
<pre class="prettyprint linenums" ng-set-text="scenario.js-36"></pre>
|
||||
<script type="text/ng-template" id="scenario.js-36">
|
||||
it('should change state', function() {
|
||||
expect(binding('color')).toEqual('blue');
|
||||
|
||||
|
@ -53,6 +53,6 @@ interaction with the input element.</p>
|
|||
</script>
|
||||
</div>
|
||||
</div><h2>Demo</h4>
|
||||
<div class="well doc-example-live animate-container" ng-embed-app="" ng-set-html="index.html-48" ng-eval-javascript="script.js-47"></div>
|
||||
<div class="well doc-example-live animate-container" ng-embed-app="" ng-set-html="index.html-35" ng-eval-javascript="script.js-34"></div>
|
||||
</div></div>
|
||||
</div>
|
||||
|
|
|
@ -37,10 +37,10 @@ input.</p>
|
|||
</div></td></tr></tbody></table></div>
|
||||
<h2 id="Example">Example</h2>
|
||||
<div class="example"><div class="ng-directive-page ng-directive-input-text-page"><h4>Source</h2>
|
||||
<div source-edit="" source-edit-deps="angular.js script.js" source-edit-html="index.html-36" source-edit-css="" source-edit-js="script.js-35" source-edit-json="" source-edit-unit="" source-edit-scenario="scenario.js-37"></div>
|
||||
<div source-edit="" source-edit-deps="angular.js script.js" source-edit-html="index.html-23" source-edit-css="" source-edit-js="script.js-22" source-edit-json="" source-edit-unit="" source-edit-scenario="scenario.js-24"></div>
|
||||
<div class="tabbable"><div class="tab-pane" title="index.html">
|
||||
<pre class="prettyprint linenums" ng-set-text="index.html-36" ng-html-wrap=" angular.js script.js"></pre>
|
||||
<script type="text/ng-template" id="index.html-36">
|
||||
<pre class="prettyprint linenums" ng-set-text="index.html-23" ng-html-wrap=" angular.js script.js"></pre>
|
||||
<script type="text/ng-template" id="index.html-23">
|
||||
|
||||
<form name="myForm" ng-controller="Ctrl">
|
||||
Single word: <input type="text" name="input" ng-model="text"
|
||||
|
@ -59,8 +59,8 @@ input.</p>
|
|||
</script>
|
||||
</div>
|
||||
<div class="tab-pane" title="script.js">
|
||||
<pre class="prettyprint linenums" ng-set-text="script.js-35"></pre>
|
||||
<script type="text/ng-template" id="script.js-35">
|
||||
<pre class="prettyprint linenums" ng-set-text="script.js-22"></pre>
|
||||
<script type="text/ng-template" id="script.js-22">
|
||||
function Ctrl($scope) {
|
||||
$scope.text = 'guest';
|
||||
$scope.word = /^\s*\w*\s*$/;
|
||||
|
@ -68,8 +68,8 @@ input.</p>
|
|||
</script>
|
||||
</div>
|
||||
<div class="tab-pane" title="End to end test">
|
||||
<pre class="prettyprint linenums" ng-set-text="scenario.js-37"></pre>
|
||||
<script type="text/ng-template" id="scenario.js-37">
|
||||
<pre class="prettyprint linenums" ng-set-text="scenario.js-24"></pre>
|
||||
<script type="text/ng-template" id="scenario.js-24">
|
||||
it('should initialize to model', function() {
|
||||
expect(binding('text')).toEqual('guest');
|
||||
expect(binding('myForm.input.$valid')).toEqual('true');
|
||||
|
@ -94,6 +94,6 @@ input.</p>
|
|||
</script>
|
||||
</div>
|
||||
</div><h2>Demo</h4>
|
||||
<div class="well doc-example-live animate-container" ng-embed-app="" ng-set-html="index.html-36" ng-eval-javascript="script.js-35"></div>
|
||||
<div class="well doc-example-live animate-container" ng-embed-app="" ng-set-html="index.html-23" ng-eval-javascript="script.js-22"></div>
|
||||
</div></div>
|
||||
</div>
|
||||
|
|
|
@ -35,10 +35,10 @@ interaction with the input element.</p>
|
|||
</div></td></tr></tbody></table></div>
|
||||
<h2 id="Example">Example</h2>
|
||||
<div class="example"><div class="ng-directive-page ng-directive-input-url-page"><h4>Source</h2>
|
||||
<div source-edit="" source-edit-deps="angular.js script.js" source-edit-html="index.html-42" source-edit-css="" source-edit-js="script.js-41" source-edit-json="" source-edit-unit="" source-edit-scenario="scenario.js-43"></div>
|
||||
<div source-edit="" source-edit-deps="angular.js script.js" source-edit-html="index.html-29" source-edit-css="" source-edit-js="script.js-28" source-edit-json="" source-edit-unit="" source-edit-scenario="scenario.js-30"></div>
|
||||
<div class="tabbable"><div class="tab-pane" title="index.html">
|
||||
<pre class="prettyprint linenums" ng-set-text="index.html-42" ng-html-wrap=" angular.js script.js"></pre>
|
||||
<script type="text/ng-template" id="index.html-42">
|
||||
<pre class="prettyprint linenums" ng-set-text="index.html-29" ng-html-wrap=" angular.js script.js"></pre>
|
||||
<script type="text/ng-template" id="index.html-29">
|
||||
|
||||
<form name="myForm" ng-controller="Ctrl">
|
||||
URL: <input type="url" name="input" ng-model="text" required>
|
||||
|
@ -56,16 +56,16 @@ interaction with the input element.</p>
|
|||
</script>
|
||||
</div>
|
||||
<div class="tab-pane" title="script.js">
|
||||
<pre class="prettyprint linenums" ng-set-text="script.js-41"></pre>
|
||||
<script type="text/ng-template" id="script.js-41">
|
||||
<pre class="prettyprint linenums" ng-set-text="script.js-28"></pre>
|
||||
<script type="text/ng-template" id="script.js-28">
|
||||
function Ctrl($scope) {
|
||||
$scope.text = 'http://google.com';
|
||||
}
|
||||
</script>
|
||||
</div>
|
||||
<div class="tab-pane" title="End to end test">
|
||||
<pre class="prettyprint linenums" ng-set-text="scenario.js-43"></pre>
|
||||
<script type="text/ng-template" id="scenario.js-43">
|
||||
<pre class="prettyprint linenums" ng-set-text="scenario.js-30"></pre>
|
||||
<script type="text/ng-template" id="scenario.js-30">
|
||||
it('should initialize to model', function() {
|
||||
expect(binding('text')).toEqual('http://google.com');
|
||||
expect(binding('myForm.input.$valid')).toEqual('true');
|
||||
|
@ -84,6 +84,6 @@ interaction with the input element.</p>
|
|||
</script>
|
||||
</div>
|
||||
</div><h2>Demo</h4>
|
||||
<div class="well doc-example-live animate-container" ng-embed-app="" ng-set-html="index.html-42" ng-eval-javascript="script.js-41"></div>
|
||||
<div class="well doc-example-live animate-container" ng-embed-app="" ng-set-html="index.html-29" ng-eval-javascript="script.js-28"></div>
|
||||
</div></div>
|
||||
</div>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
<a href="http://github.com/angular/angular.js/tree/v1.2.0rc1/src/Angular.js#L958" class="view-source btn btn-action"><i class="icon-zoom-in"> </i> View source</a><a href="http://github.com/angular/angular.js/edit/master/src/Angular.js" class="improve-docs btn btn-primary"><i class="icon-edit"> </i> Improve this doc</a><h1><code ng:non-bindable="">ngApp</code>
|
||||
<a href="http://github.com/angular/angular.js/tree/v1.2.0rc1/src/Angular.js#L968" class="view-source btn btn-action"><i class="icon-zoom-in"> </i> View source</a><a href="http://github.com/angular/angular.js/edit/master/src/Angular.js" class="improve-docs btn btn-primary"><i class="icon-edit"> </i> Improve this doc</a><h1><code ng:non-bindable="">ngApp</code>
|
||||
<div><span class="hint">directive in module <code ng:non-bindable="">ng</code>
|
||||
</span>
|
||||
</div>
|
||||
|
|
|
@ -14,10 +14,10 @@ The expression is not evaluated when the value change is coming from the model.<
|
|||
</div>
|
||||
<h2 id="Example">Example</h2>
|
||||
<div class="example"><div class="ng-directive-page ng-directive-ngchange-page"><h4>Source</h2>
|
||||
<div source-edit="" source-edit-deps="angular.js script.js" source-edit-html="index.html-61" source-edit-css="" source-edit-js="script.js-60" source-edit-json="" source-edit-unit="" source-edit-scenario="scenario.js-62"></div>
|
||||
<div source-edit="" source-edit-deps="angular.js script.js" source-edit-html="index.html-47" source-edit-css="" source-edit-js="script.js-46" source-edit-json="" source-edit-unit="" source-edit-scenario="scenario.js-48"></div>
|
||||
<div class="tabbable"><div class="tab-pane" title="index.html">
|
||||
<pre class="prettyprint linenums" ng-set-text="index.html-61" ng-html-wrap=" angular.js script.js"></pre>
|
||||
<script type="text/ng-template" id="index.html-61">
|
||||
<pre class="prettyprint linenums" ng-set-text="index.html-47" ng-html-wrap=" angular.js script.js"></pre>
|
||||
<script type="text/ng-template" id="index.html-47">
|
||||
|
||||
<div ng-controller="Controller">
|
||||
<input type="checkbox" ng-model="confirmed" ng-change="change()" id="ng-change-example1" />
|
||||
|
@ -29,8 +29,8 @@ The expression is not evaluated when the value change is coming from the model.<
|
|||
</script>
|
||||
</div>
|
||||
<div class="tab-pane" title="script.js">
|
||||
<pre class="prettyprint linenums" ng-set-text="script.js-60"></pre>
|
||||
<script type="text/ng-template" id="script.js-60">
|
||||
<pre class="prettyprint linenums" ng-set-text="script.js-46"></pre>
|
||||
<script type="text/ng-template" id="script.js-46">
|
||||
function Controller($scope) {
|
||||
$scope.counter = 0;
|
||||
$scope.change = function() {
|
||||
|
@ -40,8 +40,8 @@ The expression is not evaluated when the value change is coming from the model.<
|
|||
</script>
|
||||
</div>
|
||||
<div class="tab-pane" title="End to end test">
|
||||
<pre class="prettyprint linenums" ng-set-text="scenario.js-62"></pre>
|
||||
<script type="text/ng-template" id="scenario.js-62">
|
||||
<pre class="prettyprint linenums" ng-set-text="scenario.js-48"></pre>
|
||||
<script type="text/ng-template" id="scenario.js-48">
|
||||
it('should evaluate the expression if changing from view', function() {
|
||||
expect(binding('counter')).toEqual('0');
|
||||
element('#ng-change-example1').click();
|
||||
|
@ -57,6 +57,6 @@ The expression is not evaluated when the value change is coming from the model.<
|
|||
</script>
|
||||
</div>
|
||||
</div><h2>Demo</h4>
|
||||
<div class="well doc-example-live animate-container" ng-embed-app="" ng-set-html="index.html-61" ng-eval-javascript="script.js-60"></div>
|
||||
<div class="well doc-example-live animate-container" ng-embed-app="" ng-set-html="index.html-47" ng-eval-javascript="script.js-46"></div>
|
||||
</div></div>
|
||||
</div>
|
||||
|
|
|
@ -28,10 +28,10 @@ element.</p>
|
|||
<h2 id="Example">Example</h2>
|
||||
<div class="example"><div class="ng-directive-page ng-directive-ngclass-page"><p>Example that demostrates basic bindings via ngClass directive.
|
||||
<h4>Source</h2>
|
||||
<div source-edit="" source-edit-deps="angular.js" source-edit-html="index.html-22" source-edit-css="style.css" source-edit-js="" source-edit-json="" source-edit-unit="" source-edit-scenario="scenario.js-23"></div>
|
||||
<div source-edit="" source-edit-deps="angular.js" source-edit-html="index.html-52" source-edit-css="style.css-53" source-edit-js="" source-edit-json="" source-edit-unit="" source-edit-scenario="scenario.js-54"></div>
|
||||
<div class="tabbable"><div class="tab-pane" title="index.html">
|
||||
<pre class="prettyprint linenums" ng-set-text="index.html-22" ng-html-wrap=" angular.js"></pre>
|
||||
<script type="text/ng-template" id="index.html-22">
|
||||
<pre class="prettyprint linenums" ng-set-text="index.html-52" ng-html-wrap=" angular.js"></pre>
|
||||
<script type="text/ng-template" id="index.html-52">
|
||||
<p ng-class="{strike: strike, bold: bold, red: red}">Map Syntax Example</p>
|
||||
<input type="checkbox" ng-model="bold"> bold
|
||||
<input type="checkbox" ng-model="strike"> strike
|
||||
|
@ -47,8 +47,8 @@ element.</p>
|
|||
</script>
|
||||
</div>
|
||||
<div class="tab-pane" title="style.css">
|
||||
<pre class="prettyprint linenums" ng-set-text="style.css"></pre>
|
||||
<style type="text/css" id="style.css">
|
||||
<pre class="prettyprint linenums" ng-set-text="style.css-53"></pre>
|
||||
<style type="text/css" id="style.css-53">
|
||||
.strike {
|
||||
text-decoration: line-through;
|
||||
}
|
||||
|
@ -61,8 +61,8 @@ element.</p>
|
|||
</style>
|
||||
</div>
|
||||
<div class="tab-pane" title="End to end test">
|
||||
<pre class="prettyprint linenums" ng-set-text="scenario.js-23"></pre>
|
||||
<script type="text/ng-template" id="scenario.js-23">
|
||||
<pre class="prettyprint linenums" ng-set-text="scenario.js-54"></pre>
|
||||
<script type="text/ng-template" id="scenario.js-54">
|
||||
it('should let you toggle the class', function() {
|
||||
|
||||
expect(element('.doc-example-live p:first').prop('className')).not().toMatch(/bold/);
|
||||
|
@ -91,14 +91,14 @@ element.</p>
|
|||
</script>
|
||||
</div>
|
||||
</div><h2>Demo</h2>
|
||||
<div class="well doc-example-live animate-container" ng-embed-app="" ng-set-html="index.html-22" ng-eval-javascript=""></div>
|
||||
<div class="well doc-example-live animate-container" ng-embed-app="" ng-set-html="index.html-52" ng-eval-javascript=""></div>
|
||||
<h2>Animations</h2>
|
||||
<p>Example that demostrates how addition and removal of classes can be animated.</p>
|
||||
<p>The example below demonstrates how to perform animations using ngClass.</p>
|
||||
<h2>Source</h2>
|
||||
<div source-edit="" source-edit-deps="angular.js angular-animate.js" source-edit-html="index.html-24" source-edit-css="style.css-25" source-edit-js="" source-edit-json="" source-edit-unit="" source-edit-scenario="scenario.js-26"></div>
|
||||
<div source-edit="" source-edit-deps="angular.js angular-animate.js" source-edit-html="index.html-55" source-edit-css="style.css-56" source-edit-js="" source-edit-json="" source-edit-unit="" source-edit-scenario="scenario.js-57"></div>
|
||||
<div class="tabbable"><div class="tab-pane" title="index.html">
|
||||
<pre class="prettyprint linenums" ng-set-text="index.html-24" ng-html-wrap=" angular.js angular-animate.js"></pre>
|
||||
<script type="text/ng-template" id="index.html-24">
|
||||
<pre class="prettyprint linenums" ng-set-text="index.html-55" ng-html-wrap=" angular.js angular-animate.js"></pre>
|
||||
<script type="text/ng-template" id="index.html-55">
|
||||
<input type="button" value="set" ng-click="myVar='my-class'">
|
||||
<input type="button" value="clear" ng-click="myVar=''">
|
||||
<br>
|
||||
|
@ -106,8 +106,8 @@ element.</p>
|
|||
</script>
|
||||
</div>
|
||||
<div class="tab-pane" title="style.css">
|
||||
<pre class="prettyprint linenums" ng-set-text="style.css-25"></pre>
|
||||
<style type="text/css" id="style.css-25">
|
||||
<pre class="prettyprint linenums" ng-set-text="style.css-56"></pre>
|
||||
<style type="text/css" id="style.css-56">
|
||||
.my-class-add, .my-class-remove {
|
||||
-webkit-transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 0.5s;
|
||||
-moz-transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 0.5s;
|
||||
|
@ -128,8 +128,8 @@ element.</p>
|
|||
</style>
|
||||
</div>
|
||||
<div class="tab-pane" title="End to end test">
|
||||
<pre class="prettyprint linenums" ng-set-text="scenario.js-26"></pre>
|
||||
<script type="text/ng-template" id="scenario.js-26">
|
||||
<pre class="prettyprint linenums" ng-set-text="scenario.js-57"></pre>
|
||||
<script type="text/ng-template" id="scenario.js-57">
|
||||
it('should check ng-class', function() {
|
||||
expect(element('.doc-example-live span').prop('className')).not().
|
||||
toMatch(/my-class/);
|
||||
|
@ -146,7 +146,13 @@ element.</p>
|
|||
});
|
||||
</script>
|
||||
</div>
|
||||
</div><div class="pull-right"> <button class="btn btn-primary" ng-click="animationsOff=true" ng-hide="animationsOff">Animations on</button> <button class="btn btn-primary disabled" ng-click="animationsOff=false" ng-show="animationsOff">Animations off</button></div><h2>Demo</h4>
|
||||
<div class="well doc-example-live animate-container" ng-class="{'animations-off':animationsOff == true}" ng-embed-app="" ng-set-html="index.html-24" ng-eval-javascript=""></div>
|
||||
</div><div class="pull-right"> <button class="btn btn-primary" ng-click="animationsOff=true" ng-hide="animationsOff">Animations on</button> <button class="btn btn-primary disabled" ng-click="animationsOff=false" ng-show="animationsOff">Animations off</button></div><h2>Demo</h2>
|
||||
<div class="well doc-example-live animate-container" ng-class="{'animations-off':animationsOff == true}" ng-embed-app="" ng-set-html="index.html-55" ng-eval-javascript=""></div>
|
||||
<h2>ngClass and pre-existing CSS3 Transitions/Animations</h4>
|
||||
<p>The ngClass directive still supports CSS3 Transitions/Animations even if they do not follow the ngAnimate CSS naming structure.
|
||||
Therefore, if any CSS3 Transition/Animation styles (outside of ngAnimate) are set on the element, then, if a ngClass animation
|
||||
is triggered, the ngClass animation will be skipped so that ngAnimate can allow for the pre-existing transition or animation to
|
||||
take over. This restriction allows for ngClass to still work with standard CSS3 Transitions/Animations that are defined
|
||||
outside of ngAnimate.</p>
|
||||
</div></div>
|
||||
</div>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
<a href="http://github.com/angular/angular.js/tree/v1.2.0rc1/src/ng/directive/ngClass.js#L249" class="view-source btn btn-action"><i class="icon-zoom-in"> </i> View source</a><a href="http://github.com/angular/angular.js/edit/master/src/ng/directive/ngClass.js" class="improve-docs btn btn-primary"><i class="icon-edit"> </i> Improve this doc</a><h1><code ng:non-bindable="">ngClassEven</code>
|
||||
<a href="http://github.com/angular/angular.js/tree/v1.2.0rc1/src/ng/directive/ngClass.js#L257" class="view-source btn btn-action"><i class="icon-zoom-in"> </i> View source</a><a href="http://github.com/angular/angular.js/edit/master/src/ng/directive/ngClass.js" class="improve-docs btn btn-primary"><i class="icon-edit"> </i> Improve this doc</a><h1><code ng:non-bindable="">ngClassEven</code>
|
||||
<div><span class="hint">directive in module <code ng:non-bindable="">ng</code>
|
||||
</span>
|
||||
</div>
|
||||
|
@ -22,10 +22,10 @@ result of the evaluation can be a string representing space delimited class name
|
|||
</div></td></tr></tbody></table></div>
|
||||
<h2 id="Example">Example</h2>
|
||||
<div class="example"><div class="ng-directive-page ng-directive-ngclasseven-page"><h4>Source</h2>
|
||||
<div source-edit="" source-edit-deps="angular.js" source-edit-html="index.html-30" source-edit-css="style.css-31" source-edit-js="" source-edit-json="" source-edit-unit="" source-edit-scenario="scenario.js-32"></div>
|
||||
<div source-edit="" source-edit-deps="angular.js" source-edit-html="index.html-61" source-edit-css="style.css-62" source-edit-js="" source-edit-json="" source-edit-unit="" source-edit-scenario="scenario.js-63"></div>
|
||||
<div class="tabbable"><div class="tab-pane" title="index.html">
|
||||
<pre class="prettyprint linenums" ng-set-text="index.html-30" ng-html-wrap=" angular.js"></pre>
|
||||
<script type="text/ng-template" id="index.html-30">
|
||||
<pre class="prettyprint linenums" ng-set-text="index.html-61" ng-html-wrap=" angular.js"></pre>
|
||||
<script type="text/ng-template" id="index.html-61">
|
||||
<ol ng-init="names=['John', 'Mary', 'Cate', 'Suz']">
|
||||
<li ng-repeat="name in names">
|
||||
<span ng-class-odd="'odd'" ng-class-even="'even'">
|
||||
|
@ -36,8 +36,8 @@ result of the evaluation can be a string representing space delimited class name
|
|||
</script>
|
||||
</div>
|
||||
<div class="tab-pane" title="style.css">
|
||||
<pre class="prettyprint linenums" ng-set-text="style.css-31"></pre>
|
||||
<style type="text/css" id="style.css-31">
|
||||
<pre class="prettyprint linenums" ng-set-text="style.css-62"></pre>
|
||||
<style type="text/css" id="style.css-62">
|
||||
.odd {
|
||||
color: red;
|
||||
}
|
||||
|
@ -47,8 +47,8 @@ result of the evaluation can be a string representing space delimited class name
|
|||
</style>
|
||||
</div>
|
||||
<div class="tab-pane" title="End to end test">
|
||||
<pre class="prettyprint linenums" ng-set-text="scenario.js-32"></pre>
|
||||
<script type="text/ng-template" id="scenario.js-32">
|
||||
<pre class="prettyprint linenums" ng-set-text="scenario.js-63"></pre>
|
||||
<script type="text/ng-template" id="scenario.js-63">
|
||||
it('should check ng-class-odd and ng-class-even', function() {
|
||||
expect(element('.doc-example-live li:first span').prop('className')).
|
||||
toMatch(/odd/);
|
||||
|
@ -58,6 +58,6 @@ result of the evaluation can be a string representing space delimited class name
|
|||
</script>
|
||||
</div>
|
||||
</div><h2>Demo</h4>
|
||||
<div class="well doc-example-live animate-container" ng-embed-app="" ng-set-html="index.html-30" ng-eval-javascript=""></div>
|
||||
<div class="well doc-example-live animate-container" ng-embed-app="" ng-set-html="index.html-61" ng-eval-javascript=""></div>
|
||||
</div></div>
|
||||
</div>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
<a href="http://github.com/angular/angular.js/tree/v1.2.0rc1/src/ng/directive/ngClass.js#L202" class="view-source btn btn-action"><i class="icon-zoom-in"> </i> View source</a><a href="http://github.com/angular/angular.js/edit/master/src/ng/directive/ngClass.js" class="improve-docs btn btn-primary"><i class="icon-edit"> </i> Improve this doc</a><h1><code ng:non-bindable="">ngClassOdd</code>
|
||||
<a href="http://github.com/angular/angular.js/tree/v1.2.0rc1/src/ng/directive/ngClass.js#L210" class="view-source btn btn-action"><i class="icon-zoom-in"> </i> View source</a><a href="http://github.com/angular/angular.js/edit/master/src/ng/directive/ngClass.js" class="improve-docs btn btn-primary"><i class="icon-edit"> </i> Improve this doc</a><h1><code ng:non-bindable="">ngClassOdd</code>
|
||||
<div><span class="hint">directive in module <code ng:non-bindable="">ng</code>
|
||||
</span>
|
||||
</div>
|
||||
|
@ -22,10 +22,10 @@ of the evaluation can be a string representing space delimited class names or an
|
|||
</div></td></tr></tbody></table></div>
|
||||
<h2 id="Example">Example</h2>
|
||||
<div class="example"><div class="ng-directive-page ng-directive-ngclassodd-page"><h4>Source</h2>
|
||||
<div source-edit="" source-edit-deps="angular.js" source-edit-html="index.html-27" source-edit-css="style.css-28" source-edit-js="" source-edit-json="" source-edit-unit="" source-edit-scenario="scenario.js-29"></div>
|
||||
<div source-edit="" source-edit-deps="angular.js" source-edit-html="index.html-58" source-edit-css="style.css-59" source-edit-js="" source-edit-json="" source-edit-unit="" source-edit-scenario="scenario.js-60"></div>
|
||||
<div class="tabbable"><div class="tab-pane" title="index.html">
|
||||
<pre class="prettyprint linenums" ng-set-text="index.html-27" ng-html-wrap=" angular.js"></pre>
|
||||
<script type="text/ng-template" id="index.html-27">
|
||||
<pre class="prettyprint linenums" ng-set-text="index.html-58" ng-html-wrap=" angular.js"></pre>
|
||||
<script type="text/ng-template" id="index.html-58">
|
||||
<ol ng-init="names=['John', 'Mary', 'Cate', 'Suz']">
|
||||
<li ng-repeat="name in names">
|
||||
<span ng-class-odd="'odd'" ng-class-even="'even'">
|
||||
|
@ -36,8 +36,8 @@ of the evaluation can be a string representing space delimited class names or an
|
|||
</script>
|
||||
</div>
|
||||
<div class="tab-pane" title="style.css">
|
||||
<pre class="prettyprint linenums" ng-set-text="style.css-28"></pre>
|
||||
<style type="text/css" id="style.css-28">
|
||||
<pre class="prettyprint linenums" ng-set-text="style.css-59"></pre>
|
||||
<style type="text/css" id="style.css-59">
|
||||
.odd {
|
||||
color: red;
|
||||
}
|
||||
|
@ -47,8 +47,8 @@ of the evaluation can be a string representing space delimited class names or an
|
|||
</style>
|
||||
</div>
|
||||
<div class="tab-pane" title="End to end test">
|
||||
<pre class="prettyprint linenums" ng-set-text="scenario.js-29"></pre>
|
||||
<script type="text/ng-template" id="scenario.js-29">
|
||||
<pre class="prettyprint linenums" ng-set-text="scenario.js-60"></pre>
|
||||
<script type="text/ng-template" id="scenario.js-60">
|
||||
it('should check ng-class-odd and ng-class-even', function() {
|
||||
expect(element('.doc-example-live li:first span').prop('className')).
|
||||
toMatch(/odd/);
|
||||
|
@ -58,6 +58,6 @@ of the evaluation can be a string representing space delimited class names or an
|
|||
</script>
|
||||
</div>
|
||||
</div><h2>Demo</h4>
|
||||
<div class="well doc-example-live animate-container" ng-embed-app="" ng-set-html="index.html-27" ng-eval-javascript=""></div>
|
||||
<div class="well doc-example-live animate-container" ng-embed-app="" ng-set-html="index.html-58" ng-eval-javascript=""></div>
|
||||
</div></div>
|
||||
</div>
|
||||
|
|
|
@ -37,17 +37,17 @@ as class<pre class="prettyprint linenums"><ANY class="ng-cloak">
|
|||
</div>
|
||||
<h2 id="Example">Example</h2>
|
||||
<div class="example"><div class="ng-directive-page ng-directive-ngcloak-page"><h4>Source</h2>
|
||||
<div source-edit="" source-edit-deps="angular.js" source-edit-html="index.html-33" source-edit-css="" source-edit-js="" source-edit-json="" source-edit-unit="" source-edit-scenario="scenario.js-34"></div>
|
||||
<div source-edit="" source-edit-deps="angular.js" source-edit-html="index.html-64" source-edit-css="" source-edit-js="" source-edit-json="" source-edit-unit="" source-edit-scenario="scenario.js-65"></div>
|
||||
<div class="tabbable"><div class="tab-pane" title="index.html">
|
||||
<pre class="prettyprint linenums" ng-set-text="index.html-33" ng-html-wrap=" angular.js"></pre>
|
||||
<script type="text/ng-template" id="index.html-33">
|
||||
<pre class="prettyprint linenums" ng-set-text="index.html-64" ng-html-wrap=" angular.js"></pre>
|
||||
<script type="text/ng-template" id="index.html-64">
|
||||
<div id="template1" ng-cloak>{{ 'hello' }}</div>
|
||||
<div id="template2" ng-cloak class="ng-cloak">{{ 'hello IE7' }}</div>
|
||||
</script>
|
||||
</div>
|
||||
<div class="tab-pane" title="End to end test">
|
||||
<pre class="prettyprint linenums" ng-set-text="scenario.js-34"></pre>
|
||||
<script type="text/ng-template" id="scenario.js-34">
|
||||
<pre class="prettyprint linenums" ng-set-text="scenario.js-65"></pre>
|
||||
<script type="text/ng-template" id="scenario.js-65">
|
||||
it('should remove the template directive and css class', function() {
|
||||
expect(element('.doc-example-live #template1').attr('ng-cloak')).
|
||||
not().toBeDefined();
|
||||
|
@ -57,6 +57,6 @@ as class<pre class="prettyprint linenums"><ANY class="ng-cloak">
|
|||
</script>
|
||||
</div>
|
||||
</div><h2>Demo</h4>
|
||||
<div class="well doc-example-live animate-container" ng-embed-app="" ng-set-html="index.html-33" ng-eval-javascript=""></div>
|
||||
<div class="well doc-example-live animate-container" ng-embed-app="" ng-set-html="index.html-64" ng-eval-javascript=""></div>
|
||||
</div></div>
|
||||
</div>
|
||||
|
|
|
@ -18,10 +18,10 @@ specified in form <code>/something/</code> then the value will be converted into
|
|||
</div></td></tr></tbody></table></div>
|
||||
<h2 id="Example">Example</h2>
|
||||
<div class="example"><div class="ng-directive-page ng-directive-nglist-page"><h4>Source</h2>
|
||||
<div source-edit="" source-edit-deps="angular.js script.js" source-edit-html="index.html-64" source-edit-css="" source-edit-js="script.js-63" source-edit-json="" source-edit-unit="" source-edit-scenario="scenario.js-65"></div>
|
||||
<div source-edit="" source-edit-deps="angular.js script.js" source-edit-html="index.html-50" source-edit-css="" source-edit-js="script.js-49" source-edit-json="" source-edit-unit="" source-edit-scenario="scenario.js-51"></div>
|
||||
<div class="tabbable"><div class="tab-pane" title="index.html">
|
||||
<pre class="prettyprint linenums" ng-set-text="index.html-64" ng-html-wrap=" angular.js script.js"></pre>
|
||||
<script type="text/ng-template" id="index.html-64">
|
||||
<pre class="prettyprint linenums" ng-set-text="index.html-50" ng-html-wrap=" angular.js script.js"></pre>
|
||||
<script type="text/ng-template" id="index.html-50">
|
||||
|
||||
<form name="myForm" ng-controller="Ctrl">
|
||||
List: <input name="namesInput" ng-model="names" ng-list required>
|
||||
|
@ -37,16 +37,16 @@ specified in form <code>/something/</code> then the value will be converted into
|
|||
</script>
|
||||
</div>
|
||||
<div class="tab-pane" title="script.js">
|
||||
<pre class="prettyprint linenums" ng-set-text="script.js-63"></pre>
|
||||
<script type="text/ng-template" id="script.js-63">
|
||||
<pre class="prettyprint linenums" ng-set-text="script.js-49"></pre>
|
||||
<script type="text/ng-template" id="script.js-49">
|
||||
function Ctrl($scope) {
|
||||
$scope.names = ['igor', 'misko', 'vojta'];
|
||||
}
|
||||
</script>
|
||||
</div>
|
||||
<div class="tab-pane" title="End to end test">
|
||||
<pre class="prettyprint linenums" ng-set-text="scenario.js-65"></pre>
|
||||
<script type="text/ng-template" id="scenario.js-65">
|
||||
<pre class="prettyprint linenums" ng-set-text="scenario.js-51"></pre>
|
||||
<script type="text/ng-template" id="scenario.js-51">
|
||||
it('should initialize to model', function() {
|
||||
expect(binding('names')).toEqual('["igor","misko","vojta"]');
|
||||
expect(binding('myForm.namesInput.$valid')).toEqual('true');
|
||||
|
@ -62,6 +62,6 @@ specified in form <code>/something/</code> then the value will be converted into
|
|||
</script>
|
||||
</div>
|
||||
</div><h2>Demo</h4>
|
||||
<div class="well doc-example-live animate-container" ng-embed-app="" ng-set-html="index.html-64" ng-eval-javascript="script.js-63"></div>
|
||||
<div class="well doc-example-live animate-container" ng-embed-app="" ng-set-html="index.html-50" ng-eval-javascript="script.js-49"></div>
|
||||
</div></div>
|
||||
</div>
|
||||
|
|
|
@ -16,10 +16,10 @@ propogated to the parent scope.</p>
|
|||
data-binding. Notice how different directives (<code>contenteditable</code>, <code>ng-model</code>, and <code>required</code>)
|
||||
collaborate together to achieve the desired result.</p>
|
||||
<h4>Source</h2>
|
||||
<div source-edit="customControl" source-edit-deps="angular.js script.js" source-edit-html="index.html-58" source-edit-css="style.css-56" source-edit-js="script.js-57" source-edit-json="" source-edit-unit="" source-edit-scenario="scenario.js-59"></div>
|
||||
<div source-edit="customControl" source-edit-deps="angular.js script.js" source-edit-html="index.html-44" source-edit-css="style.css" source-edit-js="script.js-43" source-edit-json="" source-edit-unit="" source-edit-scenario="scenario.js-45"></div>
|
||||
<div class="tabbable"><div class="tab-pane" title="index.html">
|
||||
<pre class="prettyprint linenums" ng-set-text="index.html-58" ng-html-wrap="customControl angular.js script.js"></pre>
|
||||
<script type="text/ng-template" id="index.html-58">
|
||||
<pre class="prettyprint linenums" ng-set-text="index.html-44" ng-html-wrap="customControl angular.js script.js"></pre>
|
||||
<script type="text/ng-template" id="index.html-44">
|
||||
<form name="myForm">
|
||||
<div contenteditable
|
||||
name="myWidget" ng-model="userContent"
|
||||
|
@ -32,8 +32,8 @@ collaborate together to achieve the desired result.</p>
|
|||
</script>
|
||||
</div>
|
||||
<div class="tab-pane" title="style.css">
|
||||
<pre class="prettyprint linenums" ng-set-text="style.css-56"></pre>
|
||||
<style type="text/css" id="style.css-56">
|
||||
<pre class="prettyprint linenums" ng-set-text="style.css"></pre>
|
||||
<style type="text/css" id="style.css">
|
||||
[contenteditable] {
|
||||
border: 1px solid black;
|
||||
background-color: white;
|
||||
|
@ -47,8 +47,8 @@ collaborate together to achieve the desired result.</p>
|
|||
</style>
|
||||
</div>
|
||||
<div class="tab-pane" title="script.js">
|
||||
<pre class="prettyprint linenums" ng-set-text="script.js-57"></pre>
|
||||
<script type="text/ng-template" id="script.js-57">
|
||||
<pre class="prettyprint linenums" ng-set-text="script.js-43"></pre>
|
||||
<script type="text/ng-template" id="script.js-43">
|
||||
angular.module('customControl', []).
|
||||
directive('contenteditable', function() {
|
||||
return {
|
||||
|
@ -84,8 +84,8 @@ collaborate together to achieve the desired result.</p>
|
|||
</script>
|
||||
</div>
|
||||
<div class="tab-pane" title="End to end test">
|
||||
<pre class="prettyprint linenums" ng-set-text="scenario.js-59"></pre>
|
||||
<script type="text/ng-template" id="scenario.js-59">
|
||||
<pre class="prettyprint linenums" ng-set-text="scenario.js-45"></pre>
|
||||
<script type="text/ng-template" id="scenario.js-45">
|
||||
it('should data-bind and become invalid', function() {
|
||||
var contentEditable = element('[contenteditable]');
|
||||
|
||||
|
@ -97,7 +97,7 @@ collaborate together to achieve the desired result.</p>
|
|||
</script>
|
||||
</div>
|
||||
</div><h2>Demo</h4>
|
||||
<div class="well doc-example-live animate-container" ng-embed-app="customControl" ng-set-html="index.html-58" ng-eval-javascript="script.js-57"></div>
|
||||
<div class="well doc-example-live animate-container" ng-embed-app="customControl" ng-set-html="index.html-44" ng-eval-javascript="script.js-43"></div>
|
||||
</div></div>
|
||||
<div class="member method"><h2 id="Methods">Methods</h2>
|
||||
<ul class="methods"><li><h3 id="$render">$render()</h3>
|
||||
|
|
|
@ -4,7 +4,8 @@
|
|||
</div>
|
||||
</h1>
|
||||
<div><h2 id="Description">Description</h2>
|
||||
<div class="description"><div class="ng-directive-page ng-directive-ngtransclude-page"><p>Insert the transcluded DOM here.</p>
|
||||
<div class="description"><div class="ng-directive-page ng-directive-ngtransclude-page"><p>Directive that marks the insertion point for the transcluded DOM of the nearest parent directive that uses transclusion.</p>
|
||||
<p>Any existing content of the element that this directive is placed on will be removed before the transcluded content is inserted.</p>
|
||||
</div></div>
|
||||
<h2 id="Usage">Usage</h2>
|
||||
<div class="usage">as attribute<pre class="prettyprint linenums"><ANY ng-transclude>
|
||||
|
|
|
@ -2,5 +2,5 @@
|
|||
<div><span class="hint"></span>
|
||||
</div>
|
||||
</h1>
|
||||
<div><div class="ng-page"><p>The <code>ng</code> is an angular module which contains all of the core angular services.</p>
|
||||
<div><div class="ng-page"><p><code>ng</code> is the name of the <a href="../../../../../index.htmlle">angular module</a> that contains all of the core angular services.</p>
|
||||
</div></div>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
<a href="http://github.com/angular/angular.js/tree/v1.2.0rc1/src/ngAnimate/animate.js#L236" class="view-source btn btn-action"><i class="icon-zoom-in"> </i> View source</a><a href="http://github.com/angular/angular.js/edit/master/src/ngAnimate/animate.js" class="improve-docs btn btn-primary"><i class="icon-edit"> </i> Improve this doc</a><h1><code ng:non-bindable="">$animate</code>
|
||||
<a href="http://github.com/angular/angular.js/tree/v1.2.0rc1/src/ngAnimate/animate.js#L233" class="view-source btn btn-action"><i class="icon-zoom-in"> </i> View source</a><a href="http://github.com/angular/angular.js/edit/master/src/ngAnimate/animate.js" class="improve-docs btn btn-primary"><i class="icon-edit"> </i> Improve this doc</a><h1><code ng:non-bindable="">$animate</code>
|
||||
<div><span class="hint">service in module <code ng:non-bindable="">ngAnimate</code>
|
||||
</span>
|
||||
</div>
|
||||
|
@ -10,7 +10,8 @@ will examine any JavaScript-defined animations (which are defined by using the $
|
|||
as well as any CSS-defined animations against the CSS classes present on the element once the DOM operation is run.</p>
|
||||
<p>The <code>$animate</code> service is used behind the scenes with pre-existing directives and animation with these directives
|
||||
will work out of the box without any extra configuration.</p>
|
||||
<p>Please visit the <a href="api/ngAnimate">ngAnimate</a> module overview page learn more about how to use animations in your application.</p>
|
||||
<p>Requires the <a href="api/ngAnimate"><code>ngAnimate</code></a> module to be installed.</p>
|
||||
<p>Please visit the <a href="api/ngAnimate"><code>ngAnimate</code></a> module overview page learn more about how to use animations in your application.</p>
|
||||
</div></div>
|
||||
<h2 id="Dependencies">Dependencies</h2>
|
||||
<ul class="dependencies"><li><code ng:non-bindable=""><a href="api/ng.$timeout,">$timeout,</a></code>
|
||||
|
@ -21,7 +22,8 @@ will work out of the box without any extra configuration.</p>
|
|||
<ul class="methods"><li><h3 id="addClass">addClass(element, className, done)</h3>
|
||||
<div class="addclass"><div class="nganimate-animate-addclass-page"><p>Triggers a custom animation event based off the className variable and then attaches the className value to the element as a CSS class.
|
||||
Unlike the other animation methods, the animate service will suffix the className value with <a href="#" class="label type-hint type-hint--add">-add</a> in order to provide
|
||||
the animate service the setup and active CSS classes in order to trigger the animation.</p>
|
||||
the animate service the setup and active CSS classes in order to trigger the animation (this will be skipped if no CSS transitions
|
||||
or keyframes are defined on the -add CSS class).</p>
|
||||
<p>Below is a breakdown of each step that occurs during addClass animation:</p>
|
||||
<table>
|
||||
<thead>
|
||||
|
@ -36,11 +38,11 @@ the animate service the setup and active CSS classes in order to trigger the ani
|
|||
<td>class=""</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>2. the .super-add class is added to the element</td>
|
||||
<td>class="super-add"</td>
|
||||
<td>2. $animate runs any JavaScript-defined animations on the element</td>
|
||||
<td>class=""</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>3. $animate runs any JavaScript-defined animations on the element</td>
|
||||
<td>3. the .super-add class is added to the element</td>
|
||||
<td>class="super-add"</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -101,11 +103,11 @@ the animation is started, the following CSS classes will be present on the eleme
|
|||
<td>class="my-animation"</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>3. the .ng-enter class is added to the element</td>
|
||||
<td>class="my-animation ng-enter"</td>
|
||||
<td>3. $animate runs any JavaScript-defined animations on the element</td>
|
||||
<td>class="my-animation"</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>4. $animate runs any JavaScript-defined animations on the element</td>
|
||||
<td>4. the .ng-enter class is added to the element</td>
|
||||
<td>class="my-animation ng-enter"</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -153,11 +155,11 @@ the animation is started, the following CSS classes will be added for the durati
|
|||
<td>class="my-animation"</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>2. the .ng-leave class is added to the element</td>
|
||||
<td>class="my-animation ng-leave"</td>
|
||||
<td>2. $animate runs any JavaScript-defined animations on the element</td>
|
||||
<td>class="my-animation"</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>3. $animate runs any JavaScript-defined animations on the element</td>
|
||||
<td>3. the .ng-leave class is added to the element</td>
|
||||
<td>class="my-animation ng-leave"</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -212,11 +214,11 @@ the animation is started, the following CSS classes will be added for the durati
|
|||
<td>class="my-animation"</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>3. the .ng-move class is added to the element</td>
|
||||
<td>class="my-animation ng-move"</td>
|
||||
<td>3. $animate runs any JavaScript-defined animations on the element</td>
|
||||
<td>class="my-animation"</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>4. $animate runs any JavaScript-defined animations on the element</td>
|
||||
<td>4. the .ng-move class is added to the element</td>
|
||||
<td>class="my-animation ng-move"</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -250,7 +252,8 @@ the animation is started, the following CSS classes will be added for the durati
|
|||
<li><h3 id="removeClass">removeClass(element, className, done)</h3>
|
||||
<div class="removeclass"><div class="nganimate-animate-removeclass-page"><p>Triggers a custom animation event based off the className variable and then removes the CSS class provided by the className value
|
||||
from the element. Unlike the other animation methods, the animate service will suffix the className value with <a href="#" class="label type-hint type-hint--remove">-remove</a> in
|
||||
order to provide the animate service the setup and active CSS classes in order to trigger the animation.</p>
|
||||
order to provide the animate service the setup and active CSS classes in order to trigger the animation (this will be skipped if
|
||||
no CSS transitions or keyframes are defined on the -remove CSS class).</p>
|
||||
<p>Below is a breakdown of each step that occurs during removeClass animation:</p>
|
||||
<table>
|
||||
<thead>
|
||||
|
@ -265,11 +268,11 @@ order to provide the animate service the setup and active CSS classes in order t
|
|||
<td>class="super"</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>2. the .super-remove class is added to the element</td>
|
||||
<td>class="super super-remove"</td>
|
||||
<td>2. $animate runs any JavaScript-defined animations on the element</td>
|
||||
<td>class="super"</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>3. $animate runs any JavaScript-defined animations on the element</td>
|
||||
<td>3. the .super-remove class is added to the element</td>
|
||||
<td>class="super super-remove"</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
|
|
@ -1,12 +1,13 @@
|
|||
<a href="http://github.com/angular/angular.js/tree/v1.2.0rc1/src/ngAnimate/animate.js#L188" class="view-source btn btn-action"><i class="icon-zoom-in"> </i> View source</a><a href="http://github.com/angular/angular.js/edit/master/src/ngAnimate/animate.js" class="improve-docs btn btn-primary"><i class="icon-edit"> </i> Improve this doc</a><h1><code ng:non-bindable="">$animateProvider</code>
|
||||
<a href="http://github.com/angular/angular.js/tree/v1.2.0rc1/src/ngAnimate/animate.js#L183" class="view-source btn btn-action"><i class="icon-zoom-in"> </i> View source</a><a href="http://github.com/angular/angular.js/edit/master/src/ngAnimate/animate.js" class="improve-docs btn btn-primary"><i class="icon-edit"> </i> Improve this doc</a><h1><code ng:non-bindable="">$animateProvider</code>
|
||||
<div><span class="hint">service in module <code ng:non-bindable="">ngAnimate</code>
|
||||
</span>
|
||||
</div>
|
||||
</h1>
|
||||
<div><h2 id="Description">Description</h2>
|
||||
<div class="description"><div class="nganimate-animateprovider-page"><p>The $AnimationProvider provider allows developers to register and access custom JavaScript animations directly inside
|
||||
<div class="description"><div class="nganimate-animateprovider-page"><p>The <code>$AnimationProvider</code> allows developers to register and access custom JavaScript animations directly inside
|
||||
of a module. When an animation is triggered, the $animate service will query the $animation function to find any
|
||||
animations that match the provided name value.</p>
|
||||
<p>Please visit the <a href="api/ngAnimate">ngAnimate</a> module overview page learn more about how to use animations in your application.</p>
|
||||
<p>Requires the <a href="api/ngAnimate"><code>ngAnimate</code></a> module to be installed.</p>
|
||||
<p>Please visit the <a href="api/ngAnimate"><code>ngAnimate</code></a> module overview page learn more about how to use animations in your application.</p>
|
||||
</div></div>
|
||||
</div>
|
||||
|
|
|
@ -2,15 +2,12 @@
|
|||
<div><span class="hint"></span>
|
||||
</div>
|
||||
</h1>
|
||||
<div><div class="nganimate-page"><h2>ngAnimate</h2>
|
||||
<p>The ngAnimate module is an optional module that comes packed with AngularJS that can be included within an AngularJS
|
||||
application to provide support for CSS and JavaScript animation hooks.</p>
|
||||
<p>To make use of animations with AngularJS, the <code>angular-animate.js</code> JavaScript file must be included into your application
|
||||
and the <code>ngAnimate</code> module must be included as a dependency.</p>
|
||||
<pre class="prettyprint linenums">
|
||||
angular.module('App', ['ngAnimate']);
|
||||
</pre>
|
||||
<p>Then, to see animations in action, all that is required is to define the appropriate CSS classes
|
||||
<div><div class="nganimate-page"><h2>ngAnimate</h1>
|
||||
<p><code>ngAnimate</code> is an optional module that provides CSS and JavaScript animation hooks.</p>
|
||||
<p><h1>Installation</h1><p>First include <code>angular-animate.js</code> in your HTML:</p><pre><code> <script src="angular.js">
|
||||
<script src="angular-animate.js"></pre></code><p>You can also find this file on the <a href="https://developers.google.com/speed/libraries/devguide#angularjs">Google CDN</a>, <a href="http://bower.io/">Bower</a> (as <code>angular-animate</code>), and on <a href="http://code.angularjs.org/">code.angularjs.org</a>.</p><p>Then load the module in your application by adding it as a dependant module:</p><pre><code> angular.module('app', ['ngAnimate']);</pre></code><p>With that you're ready to get started!</p></p>
|
||||
<h1>Usage</h2>
|
||||
<p>To see animations in action, all that is required is to define the appropriate CSS classes
|
||||
or to register a JavaScript animation via the $animation service. The directives that support animation automatically are:
|
||||
<code>ngRepeat</code>, <code>ngInclude</code>, <code>ngSwitch</code>, <code>ngShow</code>, <code>ngHide</code> and <code>ngView</code>. Custom directives can take advantage of animation
|
||||
by using the <code>$animate</code> service.</p>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
<a href="http://github.com/angular/angular.js/tree/v1.2.0rc1/src/ngCookies/cookies.js#L116" class="view-source btn btn-action"><i class="icon-zoom-in"> </i> View source</a><a href="http://github.com/angular/angular.js/edit/master/src/ngCookies/cookies.js" class="improve-docs btn btn-primary"><i class="icon-edit"> </i> Improve this doc</a><h1><code ng:non-bindable="">$cookieStore</code>
|
||||
<a href="http://github.com/angular/angular.js/tree/v1.2.0rc1/src/ngCookies/cookies.js#L129" class="view-source btn btn-action"><i class="icon-zoom-in"> </i> View source</a><a href="http://github.com/angular/angular.js/edit/master/src/ngCookies/cookies.js" class="improve-docs btn btn-primary"><i class="icon-edit"> </i> Improve this doc</a><h1><code ng:non-bindable="">$cookieStore</code>
|
||||
<div><span class="hint">service in module <code ng:non-bindable="">ngCookies</code>
|
||||
</span>
|
||||
</div>
|
||||
|
@ -7,6 +7,7 @@
|
|||
<div class="description"><div class="ngcookies-cookiestore-page"><p>Provides a key-value (string-object) storage, that is backed by session cookies.
|
||||
Objects put or retrieved from this storage are automatically serialized or
|
||||
deserialized by angular's toJson/fromJson.</p>
|
||||
<p>Requires the <a href="api/ngCookies"><code>ngCookies</code></a> module to be installed.</p>
|
||||
</div></div>
|
||||
<h2 id="Dependencies">Dependencies</h2>
|
||||
<ul class="dependencies"><li><code ng:non-bindable=""><a href="api/ng.$cookies">$cookies</a></code>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
<a href="http://github.com/angular/angular.js/tree/v1.2.0rc1/src/ngCookies/cookies.js#L10" class="view-source btn btn-action"><i class="icon-zoom-in"> </i> View source</a><a href="http://github.com/angular/angular.js/edit/master/src/ngCookies/cookies.js" class="improve-docs btn btn-primary"><i class="icon-edit"> </i> Improve this doc</a><h1><code ng:non-bindable="">$cookies</code>
|
||||
<a href="http://github.com/angular/angular.js/tree/v1.2.0rc1/src/ngCookies/cookies.js#L21" class="view-source btn btn-action"><i class="icon-zoom-in"> </i> View source</a><a href="http://github.com/angular/angular.js/edit/master/src/ngCookies/cookies.js" class="improve-docs btn btn-primary"><i class="icon-edit"> </i> Improve this doc</a><h1><code ng:non-bindable="">$cookies</code>
|
||||
<div><span class="hint">service in module <code ng:non-bindable="">ngCookies</code>
|
||||
</span>
|
||||
</div>
|
||||
|
@ -7,6 +7,7 @@
|
|||
<div class="description"><div class="ngcookies-cookies-page"><p>Provides read/write access to browser's cookies.</p>
|
||||
<p>Only a simple Object is exposed and by adding or removing properties to/from
|
||||
this object, new cookies are created/deleted at the end of current $eval.</p>
|
||||
<p>Requires the <a href="api/ngCookies"><code>ngCookies</code></a> module to be installed.</p>
|
||||
</div></div>
|
||||
<h2 id="Dependencies">Dependencies</h2>
|
||||
<ul class="dependencies"><li><code ng:non-bindable=""><a href="api/ng.$browser">$browser</a></code>
|
||||
|
@ -14,16 +15,16 @@ this object, new cookies are created/deleted at the end of current $eval.</p>
|
|||
</ul>
|
||||
<h2 id="Example">Example</h2>
|
||||
<div class="example"><div class="ngcookies-cookies-page"><h4>Source</h2>
|
||||
<div source-edit="" source-edit-deps="angular.js script.js" source-edit-html="index.html-140" source-edit-css="" source-edit-js="script.js-139" source-edit-json="" source-edit-unit="" source-edit-scenario=""></div>
|
||||
<div source-edit="" source-edit-deps="angular.js script.js" source-edit-html="index.html-141" source-edit-css="" source-edit-js="script.js-140" source-edit-json="" source-edit-unit="" source-edit-scenario=""></div>
|
||||
<div class="tabbable"><div class="tab-pane" title="index.html">
|
||||
<pre class="prettyprint linenums" ng-set-text="index.html-140" ng-html-wrap=" angular.js script.js"></pre>
|
||||
<script type="text/ng-template" id="index.html-140">
|
||||
<pre class="prettyprint linenums" ng-set-text="index.html-141" ng-html-wrap=" angular.js script.js"></pre>
|
||||
<script type="text/ng-template" id="index.html-141">
|
||||
|
||||
</script>
|
||||
</div>
|
||||
<div class="tab-pane" title="script.js">
|
||||
<pre class="prettyprint linenums" ng-set-text="script.js-139"></pre>
|
||||
<script type="text/ng-template" id="script.js-139">
|
||||
<pre class="prettyprint linenums" ng-set-text="script.js-140"></pre>
|
||||
<script type="text/ng-template" id="script.js-140">
|
||||
function ExampleController($cookies) {
|
||||
// Retrieving a cookie
|
||||
var favoriteCookie = $cookies.myFavorite;
|
||||
|
@ -33,6 +34,6 @@ this object, new cookies are created/deleted at the end of current $eval.</p>
|
|||
</script>
|
||||
</div>
|
||||
</div><h2>Demo</h4>
|
||||
<div class="well doc-example-live animate-container" ng-embed-app="" ng-set-html="index.html-140" ng-eval-javascript="script.js-139"></div>
|
||||
<div class="well doc-example-live animate-container" ng-embed-app="" ng-set-html="index.html-141" ng-eval-javascript="script.js-140"></div>
|
||||
</div></div>
|
||||
</div>
|
||||
|
|
|
@ -2,4 +2,11 @@
|
|||
<div><span class="hint"></span>
|
||||
</div>
|
||||
</h1>
|
||||
<div></div>
|
||||
<div><div class="ngcookies-page"><h2>ngCookies</h1>
|
||||
<p>Provides the <a href="api/ngCookies.$cookies"><code>$cookies</code></a> and
|
||||
<a href="api/ngCookies.$cookieStore"><code>$cookieStore</code></a> services.</p>
|
||||
<p><h1>Installation</h2><p>First include <code>angular-cookies.js</code> in your HTML:</p><pre><code> <script src="angular.js">
|
||||
<script src="angular-cookies.js"></pre></code><p>You can also find this file on the <a href="https://developers.google.com/speed/libraries/devguide#angularjs">Google CDN</a>, <a href="http://bower.io/">Bower</a> (as <code>angular-cookies</code>), and on <a href="http://code.angularjs.org/">code.angularjs.org</a>.</p><p>Then load the module in your application by adding it as a dependant module:</p><pre><code> angular.module('app', ['ngCookies']);</pre></code><p>With that you're ready to get started!</p></p>
|
||||
<p>See <a href="api/ngCookies.$cookies"><code>$cookies</code></a> and
|
||||
<a href="api/ngCookies.$cookieStore"><code>$cookieStore</code></a> for usage.</p>
|
||||
</div></div>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
<a href="http://github.com/angular/angular.js/tree/v1.2.0rc1/src/ngResource/resource.js#L11" class="view-source btn btn-action"><i class="icon-zoom-in"> </i> View source</a><a href="http://github.com/angular/angular.js/edit/master/src/ngResource/resource.js" class="improve-docs btn btn-primary"><i class="icon-edit"> </i> Improve this doc</a><h1><code ng:non-bindable="">$resource</code>
|
||||
<a href="http://github.com/angular/angular.js/tree/v1.2.0rc1/src/ngResource/resource.js#L21" class="view-source btn btn-action"><i class="icon-zoom-in"> </i> View source</a><a href="http://github.com/angular/angular.js/edit/master/src/ngResource/resource.js" class="improve-docs btn btn-primary"><i class="icon-edit"> </i> Improve this doc</a><h1><code ng:non-bindable="">$resource</code>
|
||||
<div><span class="hint">service in module <code ng:non-bindable="">ngResource</code>
|
||||
</span>
|
||||
</div>
|
||||
|
@ -8,13 +8,7 @@
|
|||
<a href="http://en.wikipedia.org/wiki/Representational_State_Transfer">RESTful</a> server-side data sources.</p>
|
||||
<p>The returned resource object has action methods which provide high-level behaviors without
|
||||
the need to interact with the low level <a href="api/ng.$http"><code>$http</code></a> service.</p>
|
||||
<h3>Installation</h3>
|
||||
<p>To use $resource make sure you have included the <code>angular-resource.js</code> that comes in Angular
|
||||
package. You can also find this file on Google CDN, bower as well as at
|
||||
<a href="http://code.angularjs.org/">code.angularjs.org</a>.</p>
|
||||
<p>Finally load the module in your application:</p>
|
||||
<pre><code> angular.module('app', ['ngResource']);</code></pre>
|
||||
<p>and you are ready to get started!</p>
|
||||
<p>Requires the <a href="api/ngResource"><code>ngResource</code></a> module to be installed.</p>
|
||||
</div></div>
|
||||
<h2 id="Dependencies">Dependencies</h2>
|
||||
<ul class="dependencies"><li><code ng:non-bindable=""><a href="api/ng.$http">$http</a></code>
|
||||
|
@ -26,8 +20,8 @@ package. You can also find this file on Google CDN, bower as well as at
|
|||
<code>/user/:username</code>. If you are using a URL with a port number (e.g.
|
||||
<code>http://example.com:8080/api</code>), it will be respected.</p>
|
||||
<p>If you are using a url with a suffix, just add the suffix, like this:
|
||||
<code>$resource('http://example.com/resource.json')</code> or <code>$resource('http://example.com/:id.json')
|
||||
or even</code>$resource('<a href="http://example.com/resource/:resource_id.:format')`">http://example.com/resource/:resource_id.:format')`</a>
|
||||
<code>$resource('http://example.com/resource.json')</code> or <code>$resource('http://example.com/:id.json')</code>
|
||||
or even <code>$resource('http://example.com/resource/:resource_id.:format')</code>
|
||||
If the parameter before the suffix is empty, :resource_id in this case, then the <code>/.</code> will be
|
||||
collapsed down to a single <code>.</code>. If you need this sequence to appear and not collapse then you
|
||||
can escape it with <code>/\.</code>.</p>
|
||||
|
@ -195,10 +189,10 @@ could rewrite the above example and get access to http headers as:</p>
|
|||
<h1>Buzz client</h1>
|
||||
<p> Let's look at what a buzz client created with the <code>$resource</code> service looks like:
|
||||
<h4>Source</h2>
|
||||
<div source-edit="" source-edit-deps="angular.js script.js" source-edit-html="index.html-145" source-edit-css="" source-edit-js="script.js-144" source-edit-json="" source-edit-unit="" source-edit-scenario="scenario.js-146"></div>
|
||||
<div source-edit="" source-edit-deps="angular.js script.js" source-edit-html="index.html-143" source-edit-css="" source-edit-js="script.js-142" source-edit-json="" source-edit-unit="" source-edit-scenario="scenario.js-144"></div>
|
||||
<div class="tabbable"><div class="tab-pane" title="index.html">
|
||||
<pre class="prettyprint linenums" ng-set-text="index.html-145" ng-html-wrap=" angular.js script.js"></pre>
|
||||
<script type="text/ng-template" id="index.html-145">
|
||||
<pre class="prettyprint linenums" ng-set-text="index.html-143" ng-html-wrap=" angular.js script.js"></pre>
|
||||
<script type="text/ng-template" id="index.html-143">
|
||||
|
||||
|
||||
<div ng-controller="BuzzController">
|
||||
|
@ -221,8 +215,8 @@ could rewrite the above example and get access to http headers as:</p>
|
|||
</script>
|
||||
</div>
|
||||
<div class="tab-pane" title="script.js">
|
||||
<pre class="prettyprint linenums" ng-set-text="script.js-144"></pre>
|
||||
<script type="text/ng-template" id="script.js-144">
|
||||
<pre class="prettyprint linenums" ng-set-text="script.js-142"></pre>
|
||||
<script type="text/ng-template" id="script.js-142">
|
||||
function BuzzController($resource) {
|
||||
this.userId = 'googlebuzz';
|
||||
this.Activity = $resource(
|
||||
|
@ -244,11 +238,11 @@ could rewrite the above example and get access to http headers as:</p>
|
|||
</script>
|
||||
</div>
|
||||
<div class="tab-pane" title="End to end test">
|
||||
<pre class="prettyprint linenums" ng-set-text="scenario.js-146"></pre>
|
||||
<script type="text/ng-template" id="scenario.js-146">
|
||||
<pre class="prettyprint linenums" ng-set-text="scenario.js-144"></pre>
|
||||
<script type="text/ng-template" id="scenario.js-144">
|
||||
</script>
|
||||
</div>
|
||||
</div><h2>Demo</h4>
|
||||
<div class="well doc-example-live animate-container" ng-embed-app="" ng-set-html="index.html-145" ng-eval-javascript="script.js-144"></div>
|
||||
<div class="well doc-example-live animate-container" ng-embed-app="" ng-set-html="index.html-143" ng-eval-javascript="script.js-142"></div>
|
||||
</div></div>
|
||||
</div>
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue