From 8f64ca234d2eb7f16b17d83679cb863ac543f7a1 Mon Sep 17 00:00:00 2001 From: Igor Minar Date: Thu, 5 Apr 2012 12:14:45 -0700 Subject: [PATCH] upgrade to angular 1.0.0rc4 insomnia-induction --- app/lib/angular/angular-cookies.js | 16 +- app/lib/angular/angular-cookies.min.js | 2 +- app/lib/angular/angular-loader.js | 3 +- app/lib/angular/angular-loader.min.js | 4 +- app/lib/angular/angular-resource.min.js | 4 +- app/lib/angular/angular.js | 392 +++++++++++------------ app/lib/angular/angular.min.js | 302 +++++++++--------- app/lib/angular/version.txt | 2 +- test/lib/angular/angular-mocks.js | 2 +- test/lib/angular/angular-scenario.js | 396 +++++++++++------------- test/lib/angular/version.txt | 2 +- 11 files changed, 544 insertions(+), 581 deletions(-) diff --git a/app/lib/angular/angular-cookies.js b/app/lib/angular/angular-cookies.js index f6446db..a00c52e 100644 --- a/app/lib/angular/angular-cookies.js +++ b/app/lib/angular/angular-cookies.js @@ -9,7 +9,7 @@ angular.module('ngCookies', ['ng']). /** * @ngdoc object - * @name angular.module.ng.$cookies + * @name angular.module.ngCookies.$cookies * @requires $browser * * @description @@ -103,7 +103,7 @@ angular.module('ngCookies', ['ng']). /** * @ngdoc object - * @name angular.module.ng.$cookieStore + * @name angular.module.ngCookies.$cookieStore * @requires $cookies * * @description @@ -117,8 +117,8 @@ angular.module('ngCookies', ['ng']). return { /** * @ngdoc method - * @name angular.module.ng.$cookieStore#get - * @methodOf angular.module.ng.$cookieStore + * @name angular.module.ngCookies.$cookieStore#get + * @methodOf angular.module.ngCookies.$cookieStore * * @description * Returns the value of given cookie key @@ -132,8 +132,8 @@ angular.module('ngCookies', ['ng']). /** * @ngdoc method - * @name angular.module.ng.$cookieStore#put - * @methodOf angular.module.ng.$cookieStore + * @name angular.module.ngCookies.$cookieStore#put + * @methodOf angular.module.ngCookies.$cookieStore * * @description * Sets a value for given cookie key @@ -147,8 +147,8 @@ angular.module('ngCookies', ['ng']). /** * @ngdoc method - * @name angular.module.ng.$cookieStore#remove - * @methodOf angular.module.ng.$cookieStore + * @name angular.module.ngCookies.$cookieStore#remove + * @methodOf angular.module.ngCookies.$cookieStore * * @description * Remove given cookie diff --git a/app/lib/angular/angular-cookies.min.js b/app/lib/angular/angular-cookies.min.js index 7b2b1e3..89a2301 100644 --- a/app/lib/angular/angular-cookies.min.js +++ b/app/lib/angular/angular-cookies.min.js @@ -1,2 +1,2 @@ -'use strict';angular.module("ngCookies",["ng"]).factory("$cookies",["$rootScope","$browser",function(d,c){var b={},f={},g,h=!1,i=angular.copy,j=angular.isUndefined;c.addPollFn(function(){var a=c.cookies();g!=a&&(g=a,i(a,f),i(a,b),h&&d.$apply())})();h=!0;d.$watch(function(){var a,e,d;for(a in f)j(b[a])&&c.cookies(a,void 0);for(a in b)e=b[a],angular.isString(e)?e!==f[a]&&(c.cookies(a,e),d=!0):angular.isDefined(f[a])?b[a]=f[a]:delete b[a];if(d)for(a in e=c.cookies(),b)b[a]!==e[a]&&(j(e[a])?delete b[a]: +angular.module("ngCookies",["ng"]).factory("$cookies",["$rootScope","$browser",function(d,c){var b={},f={},g,h=!1,i=angular.copy,j=angular.isUndefined;c.addPollFn(function(){'use strict';var a=c.cookies();g!=a&&(g=a,i(a,f),i(a,b),h&&d.$apply())})();h=!0;d.$watch(function(){var a,e,d;for(a in f)j(b[a])&&c.cookies(a,void 0);for(a in b)e=b[a],angular.isString(e)?e!==f[a]&&(c.cookies(a,e),d=!0):angular.isDefined(f[a])?b[a]=f[a]:delete b[a];if(d)for(a in e=c.cookies(),b)b[a]!==e[a]&&(j(e[a])?delete b[a]: b[a]=e[a])});return b}]).factory("$cookieStore",["$cookies",function(d){return{get:function(c){return angular.fromJson(d[c])},put:function(c,b){d[c]=angular.toJson(b)},remove:function(c){delete d[c]}}}]); diff --git a/app/lib/angular/angular-loader.js b/app/lib/angular/angular-loader.js index eaa2597..a195c95 100644 --- a/app/lib/angular/angular-loader.js +++ b/app/lib/angular/angular-loader.js @@ -1,5 +1,5 @@ /** - * @license AngularJS v1.0.0rc3 + * @license AngularJS v1.0.0rc4 * (c) 2010-2012 AngularJS http://angularjs.org * License: MIT */ @@ -48,6 +48,7 @@ function setupModuleLoader(window) { * * // configure existing services inside initialization blocks. * myModule.config(function($locationProvider) { +'use strict'; * // Configure existing providers * $locationProvider.hashPrefix('!'); * }); diff --git a/app/lib/angular/angular-loader.min.js b/app/lib/angular/angular-loader.min.js index 7646986..00fed47 100644 --- a/app/lib/angular/angular-loader.min.js +++ b/app/lib/angular/angular-loader.min.js @@ -1,7 +1,7 @@ /* - AngularJS v1.0.0rc3 + AngularJS v1.0.0rc4 (c) 2010-2012 AngularJS http://angularjs.org License: MIT */ -'use strict';(function(i){function d(c,b,e){return c[b]||(c[b]=e())}return d(d(i,"angular",Object),"module",function(){var c={};return function(b,e,f){e&&c.hasOwnProperty(b)&&(c[b]=null);return d(c,b,function(){function a(a,b,d){return function(){c[d||"push"]([a,b,arguments]);return g}}if(!e)throw Error("No module: "+b);var c=[],d=[],h=a("$injector","invoke"),g={_invokeQueue:c,_runBlocks:d,requires:e,name:b,provider:a("$provide","provider"),factory:a("$provide","factory"),service:a("$provide","service"), +(function(i){'use strict';function d(c,b,e){return c[b]||(c[b]=e())}return d(d(i,"angular",Object),"module",function(){var c={};return function(b,e,f){e&&c.hasOwnProperty(b)&&(c[b]=null);return d(c,b,function(){function a(a,b,d){return function(){c[d||"push"]([a,b,arguments]);return g}}if(!e)throw Error("No module: "+b);var c=[],d=[],h=a("$injector","invoke"),g={_invokeQueue:c,_runBlocks:d,requires:e,name:b,provider:a("$provide","provider"),factory:a("$provide","factory"),service:a("$provide","service"), value:a("$provide","value"),constant:a("$provide","constant","unshift"),filter:a("$filterProvider","register"),controller:a("$controllerProvider","register"),directive:a("$compileProvider","directive"),config:h,run:function(a){d.push(a);return this}};f&&h(f);return g})}})})(window); diff --git a/app/lib/angular/angular-resource.min.js b/app/lib/angular/angular-resource.min.js index d47a40d..8a479e3 100644 --- a/app/lib/angular/angular-resource.min.js +++ b/app/lib/angular/angular-resource.min.js @@ -1,5 +1,5 @@ -'use strict';angular.module("ngResource",["ng"]).factory("$resource",["$http","$parse",function(u,v){function f(b,c){return encodeURIComponent(b).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(c?null:/%20/g,"+")}function h(b,c){this.template=b+="#";this.defaults=c||{};var a=this.urlParams={};j(b.split(/\W/),function(c){c&&b.match(RegExp("[^\\\\]:"+c+"\\W"))&&(a[c]=!0)});this.template=b.replace(/\\:/g,":")}function s(b,c,a){function r(d){var b={};j(c||{}, +angular.module("ngResource",["ng"]).factory("$resource",["$http","$parse",function(u,v){function f(b,c){return encodeURIComponent(b).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(c?null:/%20/g,"+")}function h(b,c){this.template=b+="#";this.defaults=c||{};var a=this.urlParams={};j(b.split(/\W/),function(c){c&&b.match(RegExp("[^\\\\]:"+c+"\\W"))&&(a[c]=!0)});this.template=b.replace(/\\:/g,":")}function s(b,c,a){function r(d){var b={};j(c||{}, function(a,w){var l;a.charAt&&a.charAt(0)=="@"?(l=a.substr(1),l=v(l)(d)):l=a;b[w]=l});return b}function e(a){t(a||{},this)}var x=new h(b),a=q({},y,a);j(a,function(d,f){var h=d.method=="POST"||d.method=="PUT";e[f]=function(a,b,c,f){var i={},g,k=n,o=null;switch(arguments.length){case 4:o=f,k=c;case 3:case 2:if(p(b)){if(p(a)){k=a;o=b;break}k=b;o=c}else{i=a;g=b;k=c;break}case 1:p(a)?k=a:h?g=a:i=a;break;case 0:break;default:throw"Expected between 0-4 arguments [params, data, success, error], got "+arguments.length+ -" arguments.";}var m=this instanceof e?this:d.isArray?[]:new e(g);u({method:d.method,url:x.url(q({},r(g),d.params||{},i)),data:g}).then(function(a){var b=a.data;if(b)d.isArray?(m.length=0,j(b,function(a){m.push(new e(a))})):t(b,m);(k||n)(m,a.headers)},o);return m};e.bind=function(d){return s(b,q({},c,d),a)};e.prototype["$"+f]=function(a,b,c){var d=r(this),i=n,g;switch(arguments.length){case 3:d=a;i=b;g=c;break;case 2:case 1:p(a)?(i=a,g=b):(d=a,i=b||n);case 0:break;default:throw"Expected between 1-3 arguments [params, success, error], got "+ +" arguments.";}var m=this instanceof e?this:d.isArray?[]:new e(g);u({method:d.method,url:x.url(q({},r(g),d.params||{},i)),data:g}).then(function(a){'use strict';var b=a.data;if(b)d.isArray?(m.length=0,j(b,function(a){m.push(new e(a))})):t(b,m);(k||n)(m,a.headers)},o);return m};e.bind=function(d){return s(b,q({},c,d),a)};e.prototype["$"+f]=function(a,b,c){var d=r(this),i=n,g;switch(arguments.length){case 3:d=a;i=b;g=c;break;case 2:case 1:p(a)?(i=a,g=b):(d=a,i=b||n);case 0:break;default:throw"Expected between 1-3 arguments [params, success, error], got "+ arguments.length+" arguments.";}e[f].call(this,d,h?this:void 0,i,g)}});return e}var y={get:{method:"GET"},save:{method:"POST"},query:{method:"GET",isArray:!0},remove:{method:"DELETE"},"delete":{method:"DELETE"}},n=angular.noop,j=angular.forEach,q=angular.extend,t=angular.copy,p=angular.isFunction;h.prototype={url:function(b){var c=this,a=this.template,h,b=b||{};j(this.urlParams,function(e,d){h=f(b[d]||c.defaults[d]||"",!0).replace(/%26/gi,"&").replace(/%3D/gi,"=").replace(/%2B/gi,"+");a=a.replace(RegExp(":"+ d+"(\\W)"),h+"$1")});var a=a.replace(/\/?#$/,""),e=[];j(b,function(a,b){c.urlParams[b]||e.push(f(b)+"="+f(a))});e.sort();a=a.replace(/\/*$/,"");return a+(e.length?"?"+e.join("&"):"")}};return s}]); diff --git a/app/lib/angular/angular.js b/app/lib/angular/angular.js index 88a224d..d932ae8 100644 --- a/app/lib/angular/angular.js +++ b/app/lib/angular/angular.js @@ -1,10 +1,10 @@ /** - * @license AngularJS v1.0.0rc3 + * @license AngularJS v1.0.0rc4 * (c) 2010-2012 AngularJS http://angularjs.org * License: MIT */ +(function(window, document, undefined) { 'use strict'; -(function(window, document, undefined){ //////////////////////////////////// @@ -1290,11 +1290,11 @@ function setupModuleLoader(window) { * - `codeName` – `{string}` – Code name of the release, such as "jiggling-armfat". */ var version = { - full: '1.0.0rc3', // all of these placeholder strings will be replaced by rake's + full: '1.0.0rc4', // all of these placeholder strings will be replaced by rake's major: 1, // compile task minor: 0, dot: 0, - codeName: 'barefoot-telepathy' + codeName: 'insomnia-induction' }; @@ -1374,7 +1374,6 @@ function publishExternalAPI(angular){ ngModel: ngModelDirective, ngList: ngListDirective, ngChange: ngChangeDirective, - ngModelInstant: ngModelInstantDirective, required: requiredDirective, ngRequired: requiredDirective, ngValue: ngValueDirective @@ -3740,7 +3739,7 @@ function $CompileProvider($provide) { var linkingFns = [], directiveLinkingFn, childLinkingFn, directives, attrs, linkingFnFound; - for(var i = 0, ii = nodeList.length; i < ii; i++) { + for(var i = 0; i < nodeList.length; i++) { attrs = new Attributes(); // we must always refer to nodeList[i] since the nodes can be replaced underneath us. @@ -3764,10 +3763,6 @@ function $CompileProvider($provide) { return linkingFnFound ? linkingFn : null; /* nodesetLinkingFn */ function linkingFn(scope, nodeList, rootElement, boundTranscludeFn) { - if (linkingFns.length != nodeList.length * 2) { - throw Error('Template changed structure!'); - } - var childLinkingFn, directiveLinkingFn, node, childScope, childTransclusionFn; for(var i=0, n=0, ii=linkingFns.length; i 7) + (!$window.document.documentMode || $window.document.documentMode > 7), + hasEvent: function(event) { + if (isUndefined(eventSupport[event])) { + var divElm = $window.document.createElement('div'); + eventSupport[event] = 'on' + event in divElm; + } + + return eventSupport[event]; + } }; }]; } @@ -8466,6 +8471,9 @@ function $HttpProvider() { * {@link angular.module.ng.$cacheFactory $cacheFactory}, this cache will be used for * caching. * - **timeout** – `{number}` – timeout in milliseconds. + * - **withCredentials** - `{boolean}` - whether to to set the `withCredentials` flag on the + * XHR object. See {@link https://developer.mozilla.org/en/http_access_control#section_5 + * requests with credentials} for more information. * * @returns {HttpPromise} Returns a {@link angular.module.ng.$q promise} object with the * standard `then` method and two http specific methods: `success` and `error`. The `then` @@ -8765,7 +8773,8 @@ function $HttpProvider() { // if we won't have the response in cache, send the request to the backend if (!cachedResp) { - $httpBackend(config.method, url, reqData, done, reqHeaders, config.timeout); + $httpBackend(config.method, url, reqData, done, reqHeaders, config.timeout, + config.withCredentials); } return promise; @@ -8865,7 +8874,7 @@ function $HttpBackendProvider() { function createHttpBackend($browser, XHR, $browserDefer, callbacks, body, locationProtocol) { // TODO(vojta): fix the signature - return function(method, url, post, callback, headers, timeout) { + return function(method, url, post, callback, headers, timeout, withCredentials) { $browser.$$incOutstandingRequestCount(); url = url || $browser.url(); @@ -8904,6 +8913,10 @@ function createHttpBackend($browser, XHR, $browserDefer, callbacks, body, locati } }; + if (withCredentials) { + xhr.withCredentials = true; + } + xhr.send(post || ''); if (timeout > 0) { @@ -9146,7 +9159,7 @@ function $FilterProvider($provide) { {name:'Adam', phone:'555-5678'}, {name:'Julie', phone:'555-8765'}]"> - Search: + Search: @@ -9155,9 +9168,9 @@ function $FilterProvider($provide) {
NamePhone

- Any:
- Name only
- Phone only
+ Any:
+ Name only
+ Phone only
@@ -9291,7 +9304,7 @@ function filterFilter() { }
-
+
default currency symbol ($): {{amount | currency}}
custom currency identifier (USD$): {{amount | currency:"USD$"}}
@@ -9342,7 +9355,7 @@ function currencyFilter($locale) { }
- Enter number:
+ Enter number:
Default formatting: {{val | number}}
No fractions: {{val | number:0}}
Negative number: {{-val | number:4}} @@ -9736,7 +9749,7 @@ var uppercaseFilter = valueFn(uppercase); }
- Snippet: + Snippet:
NamePhone
@@ -9847,7 +9860,7 @@ function linkyFilter() { }
- Limit {{numbers}} to: + Limit {{numbers}} to:

Output: {{ numbers | limitTo:limit }}

@@ -10364,7 +10377,7 @@ forEach(BOOLEAN_ATTR, function(propName, attrName) { return function(scope, element, attr) { attr.$$observers[attrName] = []; scope.$watch(attr[normalized], function(value) { - attr.$set(attrName, value); + attr.$set(attrName, !!value); }); }; } @@ -10378,13 +10391,21 @@ forEach(['src', 'href'], function(attrName) { var normalized = directiveNormalize('ng-' + attrName); ngAttributeAliasDirectives[normalized] = function() { return { - priority: 100, + priority: 99, // it needs to run after the attributes are interpolated compile: function(tpl, attr) { return function(scope, element, attr) { - attr.$$observers[attrName] = []; - attr.$observe(normalized, function(value) { + var value = attr[normalized]; + if (value == undefined) { + // undefined value means that the directive is being interpolated + // so just register observer + attr.$$observers[attrName] = []; + attr.$observe(normalized, function(value) { + attr.$set(attrName, value); + }); + } else { + // value present means that no interpolation, so copy to native attribute. attr.$set(attrName, value); - }); + } }; } }; @@ -10460,23 +10481,43 @@ function FormController(element, attrs) { if (control.$name && form[control.$name] === control) { delete form[control.$name]; } - forEach(errors, cleanupControlErrors, control); + forEach(errors, function(queue, validationToken) { + form.$setValidity(validationToken, true, control); + }); }; form.$setValidity = function(validationToken, isValid, control) { - if (isValid) { - cleanupControlErrors(errors[validationToken], validationToken, control); + var queue = errors[validationToken]; - if (!invalidCount) { - toggleValidCss(isValid); - form.$valid = true; - form.$invalid = false; + if (isValid) { + if (queue) { + arrayRemove(queue, control); + if (!queue.length) { + invalidCount--; + if (!invalidCount) { + toggleValidCss(isValid); + form.$valid = true; + form.$invalid = false; + } + errors[validationToken] = false; + toggleValidCss(true, validationToken); + parentForm.$setValidity(validationToken, true, form); + } } + } else { if (!invalidCount) { toggleValidCss(isValid); } - addControlError(validationToken, control); + if (queue) { + if (includes(queue, control)) return; + } else { + errors[validationToken] = queue = []; + invalidCount++; + toggleValidCss(false, validationToken); + parentForm.$setValidity(validationToken, false, form); + } + queue.push(control); form.$valid = false; form.$invalid = true; @@ -10489,31 +10530,6 @@ function FormController(element, attrs) { form.$pristine = false; }; - function cleanupControlErrors(queue, validationToken, control) { - if (queue) { - control = control || this; // so that we can be used in forEach; - arrayRemove(queue, control); - if (!queue.length) { - invalidCount--; - errors[validationToken] = false; - toggleValidCss(true, validationToken); - parentForm.$setValidity(validationToken, true, form); - } - } - } - - function addControlError(validationToken, control) { - var queue = errors[validationToken]; - if (queue) { - if (includes(queue, control)) return; - } else { - errors[validationToken] = queue = []; - invalidCount++; - toggleValidCss(false, validationToken); - parentForm.$setValidity(validationToken, false, form); - } - queue.push(control); - } } @@ -11024,12 +11040,43 @@ function isEmpty(value) { } -function textInputType(scope, element, attr, ctrl) { - element.bind('blur', function() { - scope.$apply(function() { - ctrl.$setViewValue(trim(element.val())); +function textInputType(scope, element, attr, ctrl, $sniffer, $browser) { + + var listener = function() { + var value = trim(element.val()); + + if (ctrl.$viewValue !== value) { + scope.$apply(function() { + ctrl.$setViewValue(value); + }); + } + }; + + // if the browser does support "input" event, we are fine + if ($sniffer.hasEvent('input')) { + element.bind('input', listener); + } else { + var timeout; + + element.bind('keydown', function(event) { + var key = event.keyCode; + + // ignore + // command modifiers arrows + if (key === 91 || (15 < key && key < 19) || (37 <= key && key <= 40)) return; + + if (!timeout) { + timeout = $browser.defer(function() { + listener(); + timeout = null; + }); + } }); - }); + + // if user paste into input using mouse, we need "change" event to catch it + element.bind('change', listener); + } + ctrl.$render = function() { element.val(isEmpty(ctrl.$viewValue) ? '' : ctrl.$viewValue); @@ -11105,8 +11152,8 @@ function textInputType(scope, element, attr, ctrl) { } }; -function numberInputType(scope, element, attr, ctrl) { - textInputType(scope, element, attr, ctrl); +function numberInputType(scope, element, attr, ctrl, $sniffer, $browser) { + textInputType(scope, element, attr, ctrl, $sniffer, $browser); ctrl.$parsers.push(function(value) { var empty = isEmpty(value); @@ -11167,8 +11214,8 @@ function numberInputType(scope, element, attr, ctrl) { }); } -function urlInputType(scope, element, attr, ctrl) { - textInputType(scope, element, attr, ctrl); +function urlInputType(scope, element, attr, ctrl, $sniffer, $browser) { + textInputType(scope, element, attr, ctrl, $sniffer, $browser); var urlValidator = function(value) { if (isEmpty(value) || URL_REGEXP.test(value)) { @@ -11184,8 +11231,8 @@ function urlInputType(scope, element, attr, ctrl) { ctrl.$parsers.push(urlValidator); } -function emailInputType(scope, element, attr, ctrl) { - textInputType(scope, element, attr, ctrl); +function emailInputType(scope, element, attr, ctrl, $sniffer, $browser) { + textInputType(scope, element, attr, ctrl, $sniffer, $browser); var emailValidator = function(value) { if (isEmpty(value) || EMAIL_REGEXP.test(value)) { @@ -11366,13 +11413,14 @@ function checkboxInputType(scope, element, attr, ctrl) { */ -var inputDirective = [function() { +var inputDirective = ['$browser', '$sniffer', function($browser, $sniffer) { return { restrict: 'E', require: '?ngModel', link: function(scope, element, attr, ctrl) { if (ctrl) { - (inputType[lowercase(attr.type)] || inputType.text)(scope, element, attr, ctrl); + (inputType[lowercase(attr.type)] || inputType.text)(scope, element, attr, ctrl, $sniffer, + $browser); } } }; @@ -11661,69 +11709,6 @@ var ngChangeDirective = valueFn({ }); -/** - * @ngdoc directive - * @name angular.module.ng.$compileProvider.directive.ng-model-instant - * - * @element input - * - * @description - * By default, Angular udpates the model only on `blur` event - when the input looses focus. - * If you want to update after every key stroke, use `ng-model-instant`. - * - * @example - * - * - * First name:
- * Last name:
- * - * First name ({{firstName}}) is only updated on `blur` event, but the last name ({{lastName}}) - * is updated immediately, because of using `ng-model-instant`. - *
- * - * it('should update first name on blur', function() { - * input('firstName').enter('santa', 'blur'); - * expect(binding('firstName')).toEqual('santa'); - * }); - * - * it('should update last name immediately', function() { - * input('lastName').enter('santa', 'keydown'); - * expect(binding('lastName')).toEqual('santa'); - * }); - * - *
- */ -var ngModelInstantDirective = ['$browser', function($browser) { - return { - require: 'ngModel', - link: function(scope, element, attr, ctrl) { - var handler = function() { - scope.$apply(function() { - ctrl.$setViewValue(trim(element.val())); - }); - }; - - var timeout; - element.bind('keydown', function(event) { - var key = event.keyCode; - - // command modifiers arrows - if (key === 91 || (15 < key && key < 19) || (37 <= key && key <= 40)) return; - - if (!timeout) { - timeout = $browser.defer(function() { - handler(); - timeout = null; - }); - } - }); - - element.bind('change input', handler); - } - }; -}]; - - var requiredDirective = [function() { return { require: '?ngModel', @@ -11875,7 +11860,7 @@ var ngValueDirective = [function() { }
- Enter name:
+ Enter name:
Hello !
@@ -11971,8 +11956,8 @@ var ngBindHtmlDirective = ['$sanitize', function($sanitize) { }
- Salutation:
- Name:
+ Salutation:
+ Name:

        
@@ -12531,7 +12516,7 @@ var ngSubmitDirective = ngDirective(function(scope, element, attrs) { /** * @ngdoc directive * @name angular.module.ng.$compileProvider.directive.ng-include - * @restrict EA + * @restrict ECA * * @description * Fetches, compiles and includes an external HTML fragment. @@ -12543,8 +12528,6 @@ var ngSubmitDirective = ngDirective(function(scope, element, attrs) { * * @param {string} ng-include|src angular expression evaluating to URL. If the source is a string constant, * make sure you wrap it in quotes, e.g. `src="'myPartialTemplate.html'"`. - * @param {Scope=} [scope=new_child_scope] optional expression which evaluates to an - * instance of angular.module.ng.$rootScope.Scope to set the HTML fragment to. * @param {string=} onload Expression to evaluate when a new partial is loaded. * * @param {string=} autoscroll Whether `ng-include` should call {@link angular.module.ng.$anchorScroll @@ -12604,10 +12587,10 @@ var ngSubmitDirective = ngDirective(function(scope, element, attrs) { var ngIncludeDirective = ['$http', '$templateCache', '$anchorScroll', '$compile', function($http, $templateCache, $anchorScroll, $compile) { return { - restrict: 'EA', + restrict: 'ECA', + terminal: true, compile: function(element, attr) { - var srcExp = attr.ngInclude || attr.src, - scopeExp = attr.scope || '', + var srcExp = attr.ngInclude || attr.src, onloadExp = attr.onload || '', autoScrollExp = attr.autoscroll; @@ -12615,47 +12598,42 @@ var ngIncludeDirective = ['$http', '$templateCache', '$anchorScroll', '$compile' var changeCounter = 0, childScope; - function incrementChange() { changeCounter++;} - scope.$watch(srcExp, incrementChange); - scope.$watch(function() { - var includeScope = scope.$eval(scopeExp); - if (includeScope) return includeScope.$id; - }, incrementChange); - scope.$watch(function() {return changeCounter;}, function(newChangeCounter) { - var src = scope.$eval(srcExp), - useScope = scope.$eval(scopeExp); - - function clearContent() { - // if this callback is still desired - if (newChangeCounter === changeCounter) { - if (childScope) childScope.$destroy(); - childScope = null; - element.html(''); - } + var clearContent = function() { + if (childScope) { + childScope.$destroy(); + childScope = null; } - if (src) { - $http.get(src, {cache: $templateCache}).success(function(response) { - // if this callback is still desired - if (newChangeCounter === changeCounter) { - element.html(response); - if (childScope) childScope.$destroy(); - childScope = useScope ? useScope : scope.$new(); - $compile(element.contents())(childScope); - if (isDefined(autoScrollExp) && (!autoScrollExp || scope.$eval(autoScrollExp))) { - $anchorScroll(); - } - scope.$emit('$includeContentLoaded'); - scope.$eval(onloadExp); - } - }).error(clearContent); - } else { - clearContent(); - } + element.html(''); + }; + + scope.$watch(srcExp, function(src) { + var thisChangeId = ++changeCounter; + + if (src) { + $http.get(src, {cache: $templateCache}).success(function(response) { + if (thisChangeId !== changeCounter) return; + + if (childScope) childScope.$destroy(); + childScope = scope.$new(); + + element.html(response); + $compile(element.contents())(childScope); + + if (isDefined(autoScrollExp) && (!autoScrollExp || scope.$eval(autoScrollExp))) { + $anchorScroll(); + } + + childScope.$emit('$includeContentLoaded'); + scope.$eval(onloadExp); + }).error(function() { + if (thisChangeId === changeCounter) clearContent(); + }); + } else clearContent(); }); }; } - } + }; }]; /** @@ -13512,42 +13490,44 @@ var ngViewDirective = ['$http', '$templateCache', '$route', '$anchorScroll', '$c lastScope, onloadExp = attr.onload || ''; - scope.$on('$afterRouteChange', function(event, next, previous) { - changeCounter++; - }); + scope.$on('$afterRouteChange', update); + update(); - scope.$watch(function() {return changeCounter;}, function(newChangeCounter) { - var template = $route.current && $route.current.template; - function destroyLastScope() { - if (lastScope) { - lastScope.$destroy(); - lastScope = null; - } + function destroyLastScope() { + if (lastScope) { + lastScope.$destroy(); + lastScope = null; } + } + + function update() { + var template = $route.current && $route.current.template, + thisChangeId = ++changeCounter; function clearContent() { // ignore callback if another route change occured since - if (newChangeCounter == changeCounter) { + if (thisChangeId === changeCounter) { element.html(''); + destroyLastScope(); } - destroyLastScope(); } if (template) { $http.get(template, {cache: $templateCache}).success(function(response) { // ignore callback if another route change occured since - if (newChangeCounter == changeCounter) { + if (thisChangeId === changeCounter) { element.html(response); destroyLastScope(); var link = $compile(element.contents()), - current = $route.current; + current = $route.current, + controller; lastScope = current.scope = scope.$new(); if (current.controller) { - element.contents(). - data('$ngControllerController', $controller(current.controller, {$scope: lastScope})); + controller = $controller(current.controller, {$scope: lastScope}); + element.contents().data('$ngControllerController', controller); } link(lastScope); @@ -13561,7 +13541,7 @@ var ngViewDirective = ['$http', '$templateCache', '$route', '$anchorScroll', '$c } else { clearContent(); } - }); + } } }; }]; diff --git a/app/lib/angular/angular.min.js b/app/lib/angular/angular.min.js index a532993..299111d 100644 --- a/app/lib/angular/angular.min.js +++ b/app/lib/angular/angular.min.js @@ -1,156 +1,156 @@ /* - AngularJS v1.0.0rc3 + AngularJS v1.0.0rc4 (c) 2010-2012 AngularJS http://angularjs.org License: MIT */ -'use strict';(function(W,X,r){function l(b,a,c){var d;if(b)if(K(b))for(d in b)d!="prototype"&&d!=oc&&d!=pc&&b.hasOwnProperty(d)&&a.call(c,b[d],d);else if(b.forEach&&b.forEach!==l)b.forEach(a,c);else if(L(b)&&ta(b.length))for(d=0;d=0&&b.splice(c,1);return a}function Y(b,a){if(ka(b)||b&&b.$evalAsync&&b.$watch)throw A("Can't copy Window or Scope"); -if(a){if(b===a)throw A("Can't copy equivalent objects or arrays");if(H(b)){for(;a.length;)a.pop();for(var c=0;c2?fa.call(arguments,2):[];return K(a)&&!(a instanceof -RegExp)?c.length?function(){return arguments.length?a.apply(b,c.concat(fa.call(arguments,0))):a.apply(b,c)}:function(){return arguments.length?a.apply(b,arguments):a.call(b)}:a}function wc(b,a){var c=a;/^\$+/.test(b)?c=r:ka(a)?c="$WINDOW":a&&X===a?c="$DOCUMENT":a&&a.$evalAsync&&a.$watch&&(c="$SCOPE");return c}function aa(b,a){return JSON.stringify(b,wc,a?" ":null)}function sb(b){return x(b)?JSON.parse(b):b}function Ya(b){b&&b.length!==0?(b=C(""+b),b=!(b=="f"||b=="0"||b=="false"||b=="no"||b=="n"|| -b=="[]")):b=!1;return b}function xa(b){b=p(b).clone();try{b.html("")}catch(a){}return p("
").append(b).html().match(/^(<[^>]+>)/)[1]}function Za(b){var a={},c,d;l((b||"").split("&"),function(b){b&&(c=b.split("="),d=decodeURIComponent(c[0]),a[d]=v(c[1])?decodeURIComponent(c[1]):!0)});return a}function tb(b){var a=[];l(b,function(b,d){a.push(ya(d,!0)+(b===!0?"":"="+ya(b,!0)))});return a.length?a.join("&"):""}function $a(b){return ya(b,!0).replace(/%26/gi,"&").replace(/%3D/gi,"=").replace(/%2B/gi, -"+")}function ya(b,a){return encodeURIComponent(b).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(a?null:/%20/g,"+")}function xc(b,a){function c(a){a&&d.push(a)}var d=[b],e,g,f=["ng:app","ng-app","x-ng-app","data-ng-app"],h=/\sng[:\-]app(:\s*([\w\d_]+);?)?\s/;l(f,function(a){f[a]=!0;c(X.getElementById(a));a=a.replace(":","\\:");b.querySelectorAll&&(l(b.querySelectorAll("."+a),c),l(b.querySelectorAll("."+a+"\\:"),c),l(b.querySelectorAll("["+a+"]"),c))}); -l(d,function(a){if(!e){var b=h.exec(" "+a.className+" ");b?(e=a,g=(b[2]||"").replace(/\s+/g,",")):l(a.attributes,function(b){if(!e&&f[b.name])e=a,g=b.value})}});e&&a(e,g?[g]:[])}function ub(b,a){b=p(b);a=a||[];a.unshift("ng");var c=vb(a);c.invoke(["$rootScope","$compile","$injector",function(a,c,g){a.$apply(function(){b.data("$injector",g);c(b)(a)})}]);return c}function ab(b,a){a=a||"_";return b.replace(yc,function(b,d){return(d?a:"")+b.toLowerCase()})}function la(b,a,c){if(!b)throw new A("Argument '"+ -(a||"?")+"' is "+(c||"required"));return b}function ma(b,a,c){c&&H(b)&&(b=b[b.length-1]);la(K(b),a,"not a function, got "+(b&&typeof b=="object"?b.constructor.name||"Object":typeof b));return b}function zc(b){function a(a,b,e){return a[b]||(a[b]=e())}return a(a(b,"angular",Object),"module",function(){var b={};return function(d,e,g){e&&b.hasOwnProperty(d)&&(b[d]=null);return a(b,d,function(){function a(c,d,e){return function(){b[e||"push"]([c,d,arguments]);return k}}if(!e)throw A("No module: "+d); +(function(V,W,t){'use strict';function l(b,a,c){var d;if(b)if(L(b))for(d in b)d!="prototype"&&d!=oc&&d!=pc&&b.hasOwnProperty(d)&&a.call(c,b[d],d);else if(b.forEach&&b.forEach!==l)b.forEach(a,c);else if(M(b)&&ta(b.length))for(d=0;d=0&&b.splice(c,1);return a}function X(b,a){if(ka(b)||b&&b.$evalAsync&&b.$watch)throw z("Can't copy Window or Scope"); +if(a){if(b===a)throw z("Can't copy equivalent objects or arrays");if(J(b)){for(;a.length;)a.pop();for(var c=0;c2?ga.call(arguments,2):[];return L(a)&&!(a instanceof +RegExp)?c.length?function(){return arguments.length?a.apply(b,c.concat(ga.call(arguments,0))):a.apply(b,c)}:function(){return arguments.length?a.apply(b,arguments):a.call(b)}:a}function wc(b,a){var c=a;/^\$+/.test(b)?c=t:ka(a)?c="$WINDOW":a&&W===a?c="$DOCUMENT":a&&a.$evalAsync&&a.$watch&&(c="$SCOPE");return c}function $(b,a){return JSON.stringify(b,wc,a?" ":null)}function sb(b){return C(b)?JSON.parse(b):b}function Xa(b){b&&b.length!==0?(b=A(""+b),b=!(b=="f"||b=="0"||b=="false"||b=="no"||b=="n"|| +b=="[]")):b=!1;return b}function xa(b){b=q(b).clone();try{b.html("")}catch(a){}return q("
").append(b).html().match(/^(<[^>]+>)/)[1]}function Ya(b){var a={},c,d;l((b||"").split("&"),function(b){b&&(c=b.split("="),d=decodeURIComponent(c[0]),a[d]=v(c[1])?decodeURIComponent(c[1]):!0)});return a}function tb(b){var a=[];l(b,function(b,d){a.push(Za(d,!0)+(b===!0?"":"="+Za(b,!0)))});return a.length?a.join("&"):""}function $a(b){return Za(b,!0).replace(/%26/gi,"&").replace(/%3D/gi,"=").replace(/%2B/gi, +"+")}function Za(b,a){return encodeURIComponent(b).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(a?null:/%20/g,"+")}function xc(b,a){function c(a){a&&d.push(a)}var d=[b],e,g,f=["ng:app","ng-app","x-ng-app","data-ng-app"],h=/\sng[:\-]app(:\s*([\w\d_]+);?)?\s/;l(f,function(a){f[a]=!0;c(W.getElementById(a));a=a.replace(":","\\:");b.querySelectorAll&&(l(b.querySelectorAll("."+a),c),l(b.querySelectorAll("."+a+"\\:"),c),l(b.querySelectorAll("["+a+"]"),c))}); +l(d,function(a){if(!e){var b=h.exec(" "+a.className+" ");b?(e=a,g=(b[2]||"").replace(/\s+/g,",")):l(a.attributes,function(b){if(!e&&f[b.name])e=a,g=b.value})}});e&&a(e,g?[g]:[])}function ub(b,a){b=q(b);a=a||[];a.unshift("ng");var c=vb(a);c.invoke(["$rootScope","$compile","$injector",function(a,c,g){a.$apply(function(){b.data("$injector",g);c(b)(a)})}]);return c}function ab(b,a){a=a||"_";return b.replace(yc,function(b,d){return(d?a:"")+b.toLowerCase()})}function la(b,a,c){if(!b)throw new z("Argument '"+ +(a||"?")+"' is "+(c||"required"));return b}function ma(b,a,c){c&&J(b)&&(b=b[b.length-1]);la(L(b),a,"not a function, got "+(b&&typeof b=="object"?b.constructor.name||"Object":typeof b));return b}function zc(b){function a(a,b,e){return a[b]||(a[b]=e())}return a(a(b,"angular",Object),"module",function(){var b={};return function(d,e,g){e&&b.hasOwnProperty(d)&&(b[d]=null);return a(b,d,function(){function a(c,d,e){return function(){b[e||"push"]([c,d,arguments]);return k}}if(!e)throw z("No module: "+d); var b=[],c=[],j=a("$injector","invoke"),k={_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"),filter:a("$filterProvider","register"),controller:a("$controllerProvider","register"),directive:a("$compileProvider","directive"),config:j,run:function(a){c.push(a);return this}};g&&j(g);return k})}})}function wb(b){return b.replace(Ac,function(a, -b,d,e){return e?d.toUpperCase():d}).replace(Bc,"Moz$1")}function bb(b,a){function c(){var e;for(var b=[this],c=a,f,h,i,j,k,m,o;b.length;){f=b.shift();h=0;for(i=f.length;h 
"+b;a.removeChild(a.firstChild);cb(this,a.childNodes);this.remove()}else cb(this,b)}function db(b){return b.cloneNode(!0)}function na(b){xb(b);for(var a=0,b=b.childNodes||[];a-1}function yb(b,a){a&&l(a.split(" "),function(a){b.className=Q((" "+b.className+" ").replace(/[\n\t]/g," ").replace(" "+Q(a)+" "," "))})}function zb(b,a){a&&l(a.split(" "),function(a){if(!Ca(b,a))b.className=Q(b.className+" "+Q(a))})}function cb(b,a){if(a)for(var a=!a.nodeName&&v(a.length)&&!ka(a)?a:[a],c=0;c4096&&d.warn("Cookie '"+a+"' possibly not set or overflowed because it was too large ("+c+" > 4096 bytes)!"),T.length>20&&d.warn("Cookie '"+a+"' possibly not set or overflowed because too many cookies were already set ("+T.length+" > 20 )")}else{if(j.cookie!==P){P=j.cookie;c=P.split("; ");T={};for(f=0;f0&&(T[unescape(e.substring(0, -g))]=unescape(e.substring(g+1)))}return T}};i.defer=function(a,b){var c;q++;c=o(function(){delete I[c];g(a)},b||0);I[c]=!0;return c};i.defer.cancel=function(a){return I[a]?(delete I[a],n(a),g(s),!0):!1};i.addCss=function(a){var b=p(j.createElement("link"));b.attr("rel","stylesheet");b.attr("type","text/css");b.attr("href",a);c.append(b)};i.addJs=function(a,b){var d=j.createElement("script");d.type="text/javascript";d.src=a;if(da)d.onreadystatechange=function(){/loaded|complete/.test(d.readyState)&& -b&&b()};else if(b)d.onload=d.onerror=b;c[0].appendChild(d);return d};i.baseHref=function(){var b=a.find("base").attr("href");return b?b.replace(/^https?\:\/\/[^\/]*/,""):b}}function Kc(){this.$get=["$window","$log","$sniffer","$document",function(b,a,c,d){return new Jc(b,d,d.find("body"),a,c)}]}function Lc(){this.$get=function(){function b(b,d){function e(a){if(a!=m){if(o){if(o==a)o=a.n}else o=a;g(a.n,a.p);g(a,m);m=a;m.n=null}}function g(a,b){if(a!=b){if(a)a.p=b;if(b)b.n=a}}if(b in a)throw A("cacheId "+ -b+" taken");var f=0,h=u({},d,{id:b}),i={},j=d&&d.capacity||Number.MAX_VALUE,k={},m=null,o=null;return a[b]={put:function(a,b){var c=k[a]||(k[a]={key:a});e(c);B(b)||(a in i||f++,i[a]=b,f>j&&this.remove(o.key))},get:function(a){var b=k[a];if(b)return e(b),i[a]},remove:function(a){var b=k[a];if(b==m)m=b.p;if(b==o)o=b.n;g(b.n,b.p);delete k[a];delete i[a];f--},removeAll:function(){i={};f=0;k={};m=o=null},destroy:function(){k=h=i=null;delete a[b]},info:function(){return u({},h,{size:f})}}}var a={};b.info= -function(){var b={};l(a,function(a,e){b[e]=a.info()});return b};b.get=function(b){return a[b]};return b}}function Mc(){this.$get=["$cacheFactory",function(b){return b("templates")}]}function Db(b){var a={},c="Directive",d=/^\s*directive\:\s*([\d\w\-_]+)\s+(.*)$/,e=/(([\d\w\-_]+)(?:\:([^;]+))?;?)/,g=/\<\\>/i,f=/^\<[\s\S]*\>$/;this.directive=function i(d,e){x(d)?(la(e,"directive"),a.hasOwnProperty(d)||(a[d]=[],b.factory(d+c,["$injector","$exceptionHandler",function(b,c){var e=[];l(a[d],function(a){try{var f= -b.invoke(a);if(K(f))f={compile:z(f)};else if(!f.compile&&f.link)f.compile=z(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}])),a[d].push(e)):l(d,rb(i));return this};this.$get=["$injector","$interpolate","$exceptionHandler","$http","$templateCache","$parse","$controller",function(b,j,k,m,o,n,I){function q(a,b,c){a instanceof p||(a=p(a));l(a,function(b,c){b.nodeType==3&&(a[c]=p(b).wrap("").parent()[0])}); -var d=M(a,b,a,c);return function(b,c){la(b,"scope");var e=c?ra.clone.call(a):a;t(e.data("$scope",b),"ng-scope");c&&c(e,b);d&&d(b,e,e);return e}}function y(a,b){throw A("Unsupported '"+b+"' for '"+a+"'.");}function t(a,b){try{a.addClass(b)}catch(c){}}function M(a,b,c,d){function e(a,c,d,g){if(f.length!=c.length*2)throw A("Template changed structure!");for(var i,j,k,m,o,R=0,n=0,Nc=f.length;R -G.priority)break;if(s=G.scope)qa("isolated scope",D,G,F),L(s)&&(t(F,"ng-isolate-scope"),D=G),t(F,"ng-scope"),J=J||G;u=G.name;if(s=G.controller)z=z||{},qa("'"+u+"' controller",z[u],G,F),z[u]=G;if(s=G.transclude)qa("transclusion",B,G,F),B=G,m=G.priority,s=="element"?(s=p(b),b=(F=c.$$element=p("<\!-- "+u+": "+c[u]+" --\>"))[0],Ha(e,p(s[0]),b),C=q(s,d,m)):(s=p(db(b)),F.html(""),C=q(s.contents(),d));if(s=G.template)qa("template",M,G,F),M=G,u=s.replace(g,F.html()),b=p(u)[0],G.replace?(Ha(e,F,b),E={$attr:{}}, -a=a.concat(N(b,a.splice(w+1,a.length-(w+1)),E)),T(c,E),E=a.length):F.html(u);if(G.templateUrl)qa("template",M,G,F),M=G,Ga=P(a.splice(w,a.length-w),j,F,c,e,G.replace,C),E=a.length;else if(G.compile)try{v=G.compile(F,c,C),K(v)?f(null,v):v&&f(v.pre,v.post)}catch(O){k(O,xa(F))}if(G.terminal)j.terminal=!0,m=Math.max(m,G.priority)}v=Ga||j;v.scope=J&&J.scope;v.transclude=B&&C;return v}function D(d,e,f,g){var j=!1;if(a.hasOwnProperty(e))for(var m,e=b.get(e+c),o=0,n=e.length;om.priority)&&m.restrict.indexOf(f)!=-1)d.push(m),j=!0}catch(q){k(q)}return j}function T(a,b){var c=b.$attr,d=a.$attr,e=a.$$element;l(a,function(d,e){e.charAt(0)!="$"&&(b[e]&&(d+=(e==="style"?";":" ")+b[e]),a.$set(e,d,!0,c[e]))});l(b,function(b,f){f=="class"?t(e,b):f=="style"?e.attr("style",e.attr("style")+";"+b):f.charAt(0)!="$"&&!a.hasOwnProperty(f)&&(a[f]=b,d[f]=c[f])})}function P(a,b,c,d,e,i,j){var k=[],n,q,y=c[0],U=a.shift(),I=u({},U,{templateUrl:null,transclude:null}),t=c.html();c.html(""); -m.get(U.templateUrl,{cache:o}).success(function(m){m=Q(m).replace(g,t);if(i&&!m.match(f))throw A("Template must have exactly one root element: "+m);var o,U;i?(U={$attr:{}},o=p(m)[0],Ha(e,c,o),N(c[0],a,U),T(d,U)):(o=c[0],c.html(m));a.unshift(I);n=J(a,c,d,j);for(q=M(c.contents(),j);k.length;){var l=k.pop(),m=k.pop();U=k.pop();var ha=k.pop(),D=o;U!==y&&(D=db(o),Ha(m,p(U),D));n(function(){b(q,ha,D,e,l)},ha,D,e,l)}k=null}).error(function(a,b,c,d){throw A("Failed to load template: "+d.url);});return function(a, -c,d,e,f){k?(k.push(c),k.push(d),k.push(e),k.push(f)):n(function(){b(q,c,d,e,f)},c,d,e,f)}}function Ga(a,b){return b.priority-a.priority}function qa(a,b,c,d){if(b)throw A("Multiple directives ["+b.name+", "+c.name+"] asking for "+a+" on: "+xa(d));}function B(a,b){var c=j(b,!0);c&&a.push({priority:0,compile:z(function(a,b){var d=b.parent(),e=d.data("$binding")||[];e.push(c);t(d.data("$binding",e),"ng-binding");a.$watch(c,function(a){b[0].nodeValue=a})})})}function F(a,b,c,d){var e=j(c,!0);e&&b.push({priority:100, -compile:z(function(a,b,c){d==="class"&&(e=j(c[d],!0));c.$$observers[d]=[];c[d]=r;a.$watch(e,function(a){c.$set(d,a)})})})}function Ha(a,b,c){var d=b[0],e=d.parentNode,f,g;if(a){f=0;for(g=a.length;f0){var e=P[0],f=e.text;if(f==a||f==b||f==c||f==d||!a&&!b&&!c&&!d)return e}return!1}function f(b,c,e,f){return(b=g(b,c,e,f))?(a&&!b.json&&d("is not valid json",b),P.shift(),b):!1}function h(a){f(a)||d("is unexpected, expecting ["+a+"]",g())}function i(a,b){return function(c,d){return a(c,d,b)}}function j(a,b,c){return function(d,e){return b(d,e,a,c)}}function k(){for(var a=[];;)if(P.length> -0&&!g("}",")",";","]")&&a.push(C()),!f(";"))return a.length==1?a[0]:function(b,c){for(var d,e=0;e","<=",">="))a=j(a,b.fn,q());return a}function y(){for(var a=t(),b;b=f("*","/","%");)a=j(a,b.fn,t());return a}function t(){var a;return f("+")?l():(a=f("-"))?j(D,a.fn,t()):(a=f("!"))?i(a.fn,t()):l()}function l(){var a;if(f("("))a=C(),h(")");else if(f("["))a=N();else if(f("{"))a=J();else{var b=f();(a=b.fn)||d("not a primary expression",b)}for(var c;b=f("(","[",".");)b.text=== -"("?(a=v(a,c),c=null):b.text==="["?(c=a,a=F(a)):b.text==="."?(c=a,a=B(a)):d("IMPOSSIBLE");return a}function N(){var a=[];if(e().text!="]"){do a.push(p());while(f(","))}h("]");return function(b,c){for(var d=[],e=0;e1;d++){var e=a.shift(),g=b[e];g||(g={},b[e]=g);b=g}return b[a.shift()]=c}function hb(b,a,c){if(!a)return b;for(var a=a.split("."),d,e=b,g=a.length,f=0;f=0;d--)if(f[d]==c)break;if(d>=0){for(e=f.length-1;e>=d;e--)a.end&&a.end(f[e]);f.length=d}}var e,g,f=[],h=b;for(f.last=function(){return f[f.length-1]};b;){g=!0;if(!f.last()||!Qb[f.last()]){if(b.indexOf("<\!--")===0)e=b.indexOf("--\>"),e>=0&&(a.comment&&a.comment(b.substring(4,e)),b=b.substring(e+ -3),g=!1);else if(ld.test(b)){if(e=b.match(Rb))b=b.substring(e[0].length),e[0].replace(Rb,d),g=!1}else if(md.test(b)&&(e=b.match(Sb)))b=b.substring(e[0].length),e[0].replace(Sb,c),g=!1;g&&(e=b.indexOf("<"),g=e<0?b:b.substring(0,e),b=e<0?"":b.substring(e),a.chars&&a.chars(lb(g)))}else b=b.replace(RegExp("(.*)<\\s*\\/\\s*"+f.last()+"[^>]*>","i"),function(b,c){c=c.replace(nd,"$1").replace(od,"$1");a.chars&&a.chars(lb(c));return""}),d("",f.last());if(b==h)throw"Parse Error: "+b;h=b}d()}function lb(b){mb.innerHTML= -b.replace(//g,">")}function Lb(b){var a=!1,c=wa(b,b.push);return{start:function(b,e,g){b=C(b);!a&&Qb[b]&&(a=b);!a&&Ub[b]==!0&&(c("<"),c(b),l(e,function(a,b){var d=C(b);if(qd[d]==!0&&(Vb[d]!==!0||a.match(rd)))c(" "),c(b),c('="'),c(Tb(a)),c('"')}),c(g?"/>":">"))},end:function(b){b=C(b);!a&&Ub[b]==!0&&(c(""));b==a&&(a=!1)},chars:function(b){a||c(Tb(b))}}}function sd(){this.$get=["$window",function(b){return{history:!(!b.history||!b.history.pushState),hashchange:"onhashchange"in b&&(!b.document.documentMode||b.document.documentMode>7)}}]}function td(){this.$get=z(W)}function Wb(b){var a={},c,d,e;if(!b)return a;l(b.split("\n"),function(b){e=b.indexOf(":");c=C(Q(b.substr(0,e)));d=Q(b.substr(e+1));c&&(a[c]?a[c]+=", "+d:a[c]=d)});return a}function Xb(b){var a=L(b)?b:r;return function(c){a||(a=Wb(b)); -return c?a[C(c)]||null:a}}function Yb(b,a,c){if(K(c))return c(b,a);l(c,function(c){b=c(b,a)});return b}function ud(){var b=/^\s*(\[|\{[^\{])/,a=/[\}\]]\s*$/,c=/^\)\]\}',?\n/,d=this.defaults={transformResponse:[function(d){x(d)&&(d=d.replace(c,""),b.test(d)&&a.test(d)&&(d=sb(d,!0)));return d}],transformRequest:[function(a){return L(a)&&Va.apply(a)!=="[object File]"?aa(a):a}],headers:{common:{Accept:"application/json, text/plain, */*","X-Requested-With":"XMLHttpRequest"},post:{"Content-Type":"application/json"}, -put:{"Content-Type":"application/json"}}},e=this.responseInterceptors=[];this.$get=["$httpBackend","$browser","$cacheFactory","$rootScope","$q","$injector",function(a,b,c,i,j,k){function m(a){function c(a){var b=u({},a,{data:Yb(a.data,a.headers,g)});return 200<=a.status&&a.status<300?b:j.reject(b)}a.method=ia(a.method);var e=a.transformRequest||d.transformRequest,g=a.transformResponse||d.transformResponse,i=d.headers,i=u({"X-XSRF-TOKEN":b.cookies()["XSRF-TOKEN"]},i.common,i[C(a.method)],a.headers), -e=Yb(a.data,Xb(i),e),h;B(a.data)&&delete i["Content-Type"];h=o(a,e,i);h=h.then(c,c);l(q,function(a){h=a(h)});h.success=function(b){h.then(function(c){b(c.data,c.status,c.headers,a)});return h};h.error=function(b){h.then(null,function(c){b(c.data,c.status,c.headers,a)});return h};return h}function o(b,c,d){function e(a,b,c){l&&(200<=a&&a<300?l.put(p,[a,b,Wb(c)]):l.remove(p));f(b,a,c);i.$apply()}function f(a,c,d){c=Math.max(c,0);(200<=c&&c<300?k.resolve:k.reject)({data:a,status:c,headers:Xb(d),config:b})} -function h(){var a=Xa(m.pendingRequests,b);a!==-1&&m.pendingRequests.splice(a,1)}var k=j.defer(),o=k.promise,l,q,p=n(b.url,b.params);m.pendingRequests.push(b);o.then(h,h);b.cache&&b.method=="GET"&&(l=L(b.cache)?b.cache:I);if(l)if(q=l.get(p))if(q.then)return q.then(h,h),q;else H(q)?f(q[1],q[0],Y(q[2])):f(q,200,{});else l.put(p,o);q||a(b.method,p,c,e,d,b.timeout);return o}function n(a,b){if(!b)return a;var c=[];qc(b,function(a,b){a==null||a==r||(L(a)&&(a=aa(a)),c.push(encodeURIComponent(b)+"="+encodeURIComponent(a)))}); -return a+(a.indexOf("?")==-1?"?":"&")+c.join("&")}var I=c("$http"),q=[];l(e,function(a){q.push(x(a)?k.get(a):k.invoke(a))});m.pendingRequests=[];(function(a){l(arguments,function(a){m[a]=function(b,c){return m(u(c||{},{method:a,url:b}))}})})("get","delete","head","jsonp");(function(a){l(arguments,function(a){m[a]=function(b,c,d){return m(u(d||{},{method:a,url:b,data:c}))}})})("post","put");return m}]}function vd(){this.$get=["$browser","$window","$document",function(b,a,c){return wd(b,xd,b.defer, -a.angular.callbacks,c[0].body,a.location.protocol.replace(":",""))}]}function wd(b,a,c,d,e,g){return function(f,h,i,j,k,m){function o(a,c,d,e){c=(h.match(Gb)||["",g])[1]=="file"?d?200:404:c;a(c==1223?204:c,d,e);b.$$completeOutstandingRequest(s)}b.$$incOutstandingRequestCount();h=h||b.url();if(C(f)=="jsonp"){var n="_"+(d.counter++).toString(36);d[n]=function(a){d[n].data=a};var I=b.addJs(h.replace("JSON_CALLBACK","angular.callbacks."+n),function(){d[n].data?o(j,200,d[n].data):o(j,-2);delete d[n];e.removeChild(I)})}else{var q= -new a;q.open(f,h,!0);l(k,function(a,b){a&&q.setRequestHeader(b,a)});var y;q.onreadystatechange=function(){q.readyState==4&&o(j,y||q.status,q.responseText,q.getAllResponseHeaders())};q.send(i||"");m>0&&c(function(){y=-1;q.abort()},m)}}}function yd(){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(b){return b===1?"one":"other"}}}}function Zb(b){function a(a,e){return b.factory(a+c,e)}var c="Filter";this.register=a;this.$get=["$injector",function(a){return function(b){return a.get(b+c)}}];a("currency",$b);a("date",ac);a("filter",zd);a("json",Ad);a("limitTo",Bd);a("linky",Cd);a("lowercase",Dd);a("number",bc);a("orderBy",cc);a("uppercase",Ed)}function zd(){return function(b,a){if(!(b instanceof Array))return b;var c= -[];c.check=function(a){for(var b=0;b-1;case "object":for(var c in a)if(c.charAt(0)!=="$"&&d(a[c],b))return!0;return!1;case "array":for(c=0;c=k+m)for(var j=f.length-k,o=0;o0||e>-c)e+=c;e===0&&c==-12&&(e=12);return nb(e,a,d)}}function Ma(b,a){return function(c,d){var e=c["get"+b](),g=ia(a?"SHORT"+b:b);return d[g][e]}}function ac(b){function a(a){var b; -if(b=a.match(c)){var a=new Date(0),g=0,f=0;b[9]&&(g=w(b[9]+b[10]),f=w(b[9]+b[11]));a.setUTCFullYear(w(b[1]),w(b[2])-1,w(b[3]));a.setUTCHours(w(b[4]||0)-g,w(b[5]||0)-f,w(b[6]||0),w(b[7]||0))}return a}var c=/^(\d{4})-?(\d\d)-?(\d\d)(?:T(\d\d)(?::?(\d\d)(?::?(\d\d)(?:\.(\d{3}))?)?)?(Z|([+-])(\d\d):?(\d\d)))?$/;return function(c,e){var g="",f=[],h,i,e=e||"mediumDate",e=b.DATETIME_FORMATS[e]||e;x(c)&&(c=Fd.test(c)?w(c):a(c));ta(c)&&(c=new Date(c));if(!ja(c))return c;for(;e;)(i=Gd.exec(e))?(f=f.concat(fa.call(i, -1)),e=f.pop()):(f.push(e),e=null);l(f,function(a){h=Hd[a];g+=h?h(c,b.DATETIME_FORMATS):a.replace(/(^'|'$)/g,"").replace(/''/g,"'")});return g}}function Ad(){return function(b){return aa(b,!0)}}function Cd(){var b=/((ftp|https?):\/\/|(mailto:)?[A-Za-z0-9._%+-]+@)\S*[^\s\.\;\,\(\)\{\}\<\>]/,a=/^mailto:/;return function(c){if(!c)return c;for(var d=c,e=[],g=Lb(e),f,h;c=d.match(b);)f=c[0],c[2]==c[3]&&(f="mailto:"+f),h=c.index,g.chars(d.substr(0,h)),g.start("a",{href:f}),g.chars(c[0].replace(a,"")),g.end("a"), -d=d.substring(h+c[0].length);g.chars(d);return e.join("")}}function Bd(){return function(b,a){if(!(b instanceof Array))return b;var a=w(a),c=[],d,e;if(!b||!(b instanceof Array))return c;a>b.length?a=b.length:a<-b.length&&(a=-b.length);a>0?(d=0,e=a):(d=b.length+a,e=b.length);for(;di?(d.$setValidity("maxlength",!1),r):(d.$setValidity("maxlength",!0),a)};d.$parsers.push(c);d.$formatters.push(c)}}function ob(b,a){b="ngClass"+b;return O(function(c,d,e){c.$watch(e[b],function(b,e){if(a===!0||c.$index%2===a)e&&b!==e&&(L(e)&&!H(e)&&(e=Wa(e,function(a,b){if(a)return b})),d.removeClass(H(e)?e.join(" "):e)),L(b)&&!H(b)&&(b=Wa(b, -function(a,b){if(a)return b})),b&&d.addClass(H(b)?b.join(" "):b)},!0)})}if(typeof X.getAttribute==Ua)X.getAttribute=function(){};var C=function(b){return x(b)?b.toLowerCase():b},ia=function(b){return x(b)?b.toUpperCase():b},oc="length",pc="name",rc="object",sc="string",Ua="undefined",A=W.Error,da=w((/msie (\d+)/.exec(C(navigator.userAgent))||[])[1]),p,ga,fa=[].slice,ea=[].push,Va=Object.prototype.toString,hc=W.angular||(W.angular={}),pa,Eb,Z=["0","0","0"];s.$inject=[];ua.$inject=[];Eb=da<9?function(b){b= -b.nodeName?b:b[0];return b.scopeName&&b.scopeName!="HTML"?ia(b.scopeName+":"+b.nodeName):b.nodeName}:function(b){return b.nodeName?b.nodeName:b[0].nodeName};var yc=/[A-Z]/g,Id={full:"1.0.0rc3",major:1,minor:0,dot:0,codeName:"barefoot-telepathy"},Aa={},za="ng-"+(new Date).getTime(),Cc=1,Jd=W.document.addEventListener?function(b,a,c){b.addEventListener(a,c,!1)}:function(b,a,c){b.attachEvent("on"+a,c)},eb=W.document.removeEventListener?function(b,a,c){b.removeEventListener(a,c,!1)}:function(b,a,c){b.detachEvent("on"+ -a,c)},Ac=/([\:\-\_]+(.))/g,Bc=/^moz([A-Z])/,ra=S.prototype={ready:function(b){function a(){c||(c=!0,b())}var c=!1;this.bind("DOMContentLoaded",a);S(W).bind("load",a)},toString:function(){var b=[];l(this,function(a){b.push(""+a)});return"["+b.join(", ")+"]"},eq:function(b){return b>=0?p(this[b]):p(this[this.length+b])},length:0,push:ea,sort:[].sort,splice:[].splice},Ea={};l("multiple,selected,checked,disabled,readOnly,required".split(","),function(b){Ea[C(b)]=b});var Cb={};l("input,select,option,textarea,button,form".split(","), -function(b){Cb[ia(b)]=!0});l({data:Ba,inheritedData:Da,scope:function(b){return Da(b,"$scope")},controller:Ab,injector:function(b){return Da(b,"$injector")},removeAttr:function(b,a){b.removeAttribute(a)},hasClass:Ca,css:function(b,a,c){a=wb(a);if(v(c))b.style[a]=c;else{var d;da<=8&&(d=b.currentStyle&&b.currentStyle[a],d===""&&(d="auto"));d=d||b.style[a];da<=8&&(d=d===""?r:d);return d}},attr:function(b,a,c){var d=C(a);if(Ea[d])if(v(c))c?(b[a]=!0,b.setAttribute(a,d)):(b[a]=!1,b.removeAttribute(d)); -else return b[a]||(b.attributes.getNamedItem(a)||s).specified?d:r;else if(v(c))b.setAttribute(a,c);else if(b.getAttribute)return b=b.getAttribute(a,2),b===null?r:b},prop:function(b,a,c){if(v(c))b[a]=c;else return b[a]},text:u(da<9?function(b,a){if(b.nodeType==1){if(B(a))return b.innerText;b.innerText=a}else{if(B(a))return b.nodeValue;b.nodeValue=a}}:function(b,a){if(B(a))return b.textContent;b.textContent=a},{$dv:""}),val:function(b,a){if(B(a))return b.value;b.value=a},html:function(b,a){if(B(a))return b.innerHTML; -for(var c=0,d=b.childNodes;c":function(a,c,d,e){return d(a,c)>e(a,c)},"<=":function(a,c,d,e){return d(a,c)<=e(a,c)},">=":function(a,c,d,e){return d(a,c)>=e(a, -c)},"&&":function(a,c,d,e){return d(a,c)&&e(a,c)},"||":function(a,c,d,e){return d(a,c)||e(a,c)},"&":function(a,c,d,e){return d(a,c)&e(a,c)},"|":function(a,c,d,e){return e(a,c)(a,c,d(a,c))},"!":function(a,c,d){return!d(a,c)}},ad={n:"\n",f:"\u000c",r:"\r",t:"\t",v:"\u000b","'":"'",'"':'"'},kb={},Sb=/^<\s*([\w:-]+)((?:\s+[\w:-]+(?:\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|[^>\s]+))?)*)\s*(\/?)\s*>/,Rb=/^<\s*\/\s*([\w:-]+)[^>]*>/,kd=/([\w:-]+)(?:\s*=\s*(?:(?:"((?:[^"])*)")|(?:'((?:[^'])*)')|([^>\s]+)))?/g,md= -/^/g,od=//g,rd=/^((ftp|https?):\/\/|mailto:|#)/,pd=/([^\#-~| |!])/g,Pb=$("area,br,col,hr,img,wbr"),ea=$("colgroup,dd,dt,li,p,tbody,td,tfoot,th,thead,tr"),jc=$("rp,rt"),Ob=u({},jc,ea),Mb=u({},ea,$("address,article,aside,blockquote,caption,center,del,dir,div,dl,figure,figcaption,footer,h1,h2,h3,h4,h5,h6,header,hgroup,hr,ins,map,menu,nav,ol,pre,script,section,table,ul")),Nb=u({},jc,$("a,abbr,acronym,b,bdi,bdo,big,br,cite,code,del,dfn,em,font,i,img,ins,kbd,label,map,mark,q,ruby,rp,rt,s,samp,small,span,strike,strong,sub,sup,time,tt,u,var")), -Qb=$("script,style"),Ub=u({},Pb,Mb,Nb,Ob),Vb=$("background,cite,href,longdesc,src,usemap"),qd=u({},Vb,$("abbr,align,alt,axis,bgcolor,border,cellpadding,cellspacing,class,clear,color,cols,colspan,compact,coords,dir,face,headers,height,hreflang,hspace,ismap,lang,language,nohref,nowrap,rel,rev,rows,rowspan,rules,scope,scrolling,shape,span,start,summary,target,title,type,valign,value,vspace,width")),mb=X.createElement("pre"),xd=W.XMLHttpRequest||function(){try{return new ActiveXObject("Msxml2.XMLHTTP.6.0")}catch(a){}try{return new ActiveXObject("Msxml2.XMLHTTP.3.0")}catch(c){}try{return new ActiveXObject("Msxml2.XMLHTTP")}catch(d){}throw new A("This browser does not support XMLHttpRequest."); -};Zb.$inject=["$provide"];$b.$inject=["$locale"];bc.$inject=["$locale"];var ec=".",Hd={yyyy:E("FullYear",4),yy:E("FullYear",2,0,!0),y:E("FullYear",1),MMMM:Ma("Month"),MMM:Ma("Month",!0),MM:E("Month",2,1),M:E("Month",1,1),dd:E("Date",2),d:E("Date",1),HH:E("Hours",2),H:E("Hours",1),hh:E("Hours",2,-12),h:E("Hours",1,-12),mm:E("Minutes",2),m:E("Minutes",1),ss:E("Seconds",2),s:E("Seconds",1),EEEE:Ma("Day"),EEE:Ma("Day",!0),a:function(a,c){return a.getHours()<12?c.AMPMS[0]:c.AMPMS[1]},Z:function(a){a=a.getTimezoneOffset(); -return nb(a/60,2)+nb(Math.abs(a%60),2)}},Gd=/((?:[^yMdHhmsaZE']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|d+|H+|h+|m+|s+|a|Z))(.*)/,Fd=/^\d+$/;ac.$inject=["$locale"];var Dd=z(C),Ed=z(ia);cc.$inject=["$parse"];var Kd=z({restrict:"E",compile:function(a,c){c.href||c.$set("href","");return function(a,c){c.bind("click",function(a){c.attr("href")||a.preventDefault()})}}}),pb={};l(Ea,function(a,c){var d=ba("ng-"+c);pb[d]=function(){return{priority:100,compile:function(){return function(a,g,f){f.$$observers[c]=[]; -a.$watch(f[d],function(a){f.$set(c,a)})}}}}});l(["src","href"],function(a){var c=ba("ng-"+a);pb[c]=function(){return{priority:100,compile:function(){return function(d,e,g){g.$$observers[a]=[];g.$observe(c,function(c){g.$set(a,c)})}}}}});var Pa={$addControl:s,$removeControl:s,$setValidity:s,$setDirty:s};fc.$inject=["$element","$attrs","$scope"];var ea={name:"form",restrict:"E",controller:fc,compile:function(){return{pre:function(a,c,d,e){d.action||c.bind("submit",function(a){a.preventDefault()});var g= -c.parent().controller("form"),f=d.name||d.ngForm;f&&(a[f]=e);g&&c.bind("$destroy",function(){g.$removeControl(e);f&&(a[f]=r);u(e,Pa)})}}}},Ld=z(ea),Md=z(u(Y(ea),{restrict:"EAC"})),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,4}$/,Pd=/^\s*(\-|\+)?(\d+|(\d*(\.\d*)))\s*$/,kc={text:Ra,number:function(a,c,d,e){Ra(a,c,d,e);e.$parsers.push(function(a){var c=V(a);return c||Pd.test(a)?(e.$setValidity("number",!0), -a===""?null:c?a:parseFloat(a)):(e.$setValidity("number",!1),r)});e.$formatters.push(function(a){return V(a)?"":""+a});if(d.min){var g=parseFloat(d.min),a=function(a){return!V(a)&&af?(e.$setValidity("max",!1),r):(e.$setValidity("max",!0),a)};e.$parsers.push(d);e.$formatters.push(d)}e.$formatters.push(function(a){return V(a)||ta(a)?(e.$setValidity("number", -!0),a):(e.$setValidity("number",!1),r)})},url:function(a,c,d,e){Ra(a,c,d,e);a=function(a){return V(a)||Nd.test(a)?(e.$setValidity("url",!0),a):(e.$setValidity("url",!1),r)};e.$formatters.push(a);e.$parsers.push(a)},email:function(a,c,d,e){Ra(a,c,d,e);a=function(a){return V(a)||Od.test(a)?(e.$setValidity("email",!0),a):(e.$setValidity("email",!1),r)};e.$formatters.push(a);e.$parsers.push(a)},radio:function(a,c,d,e){c.attr("name",d.id+"@"+d.name);c.bind("click",function(){c[0].checked&&a.$apply(function(){e.$setViewValue(d.value)})}); -e.$render=function(){c[0].checked=d.value==e.$viewValue};d.$observe("value",e.$render)},checkbox:function(a,c,d,e){var g=d.ngTrueValue,f=d.ngFalseValue;x(g)||(g=!0);x(f)||(f=!1);c.bind("click",function(){a.$apply(function(){e.$setViewValue(c[0].checked)})});e.$render=function(){c[0].checked=e.$viewValue};e.$formatters.push(function(a){return a===g});e.$parsers.push(function(a){return a?g:f})},hidden:s,button:s,submit:s,reset:s},lc=[function(){return{restrict:"E",require:"?ngModel",link:function(a, -c,d,e){e&&(kc[C(d.type)]||kc.text)(a,c,d,e)}}}],Oa="ng-valid",Na="ng-invalid",Qa="ng-pristine",gc="ng-dirty",Qd=["$scope","$exceptionHandler","$attrs","ngModel","$element",function(a,c,d,e,g){function f(a,c){c=c?"-"+ab(c,"-"):"";g.removeClass((a?Na:Oa)+c).addClass((a?Oa:Na)+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.$render=s;this.$name=d.name;var h=g.inheritedData("$formController")|| -Pa,i=0,j=this.$error={};g.addClass(Qa);f(!0);this.$setValidity=function(a,c){if(j[a]!==!c){if(c){if(j[a]&&i--,!i)f(!0),this.$valid=!0,this.$invalid=!1}else f(!1),this.$invalid=!0,this.$valid=!1,i++;j[a]=!c;f(c,a);h.$setValidity(a,c,this)}};this.$setViewValue=function(a){this.$viewValue=a;if(this.$pristine)this.$dirty=!0,this.$pristine=!1,g.removeClass(Qa).addClass(gc),h.$setDirty();l(this.$parsers,function(c){a=c(a)});if(this.$modelValue!==a)this.$modelValue=a,e(a),l(this.$viewChangeListeners,function(a){try{a()}catch(d){c(d)}})}; -var k=this;a.$watch(function(){return e()},function(a){if(k.$modelValue!==a){var c=k.$formatters,d=c.length;for(k.$modelValue=a;d--;)a=c[d](a);if(k.$viewValue!==a)k.$viewValue=a,k.$render()}})}],Rd=[function(){return{inject:{ngModel:"accessor"},require:["ngModel","^?form"],controller:Qd,link:function(a,c,d,e){var g=e[0],f=e[1]||Pa;f.$addControl(g);c.bind("$destroy",function(){f.$removeControl(g)})}}}],Sd=z({require:"ngModel",link:function(a,c,d,e){e.$viewChangeListeners.push(function(){a.$eval(d.ngChange)})}}), -Td=["$browser",function(a){return{require:"ngModel",link:function(c,d,e,g){var f=function(){c.$apply(function(){g.$setViewValue(Q(d.val()))})},h;d.bind("keydown",function(c){c=c.keyCode;c===91||15x;)o.pop().element.remove()}for(;z.length>w;)z.pop()[0].element.remove()}var i;if(!(i=o.match(d)))throw A("Expected ng-options in form of '_select_ (as _label_)? for (_key_,)?_value_ in _collection_' but got '"+ -o+"'.");var j=c(i[2]||i[1]),k=i[4]||i[6],n=i[5],u=c(i[3]||""),s=c(i[2]?i[1]:k),v=c(i[7]),B=p(X.createElement("option")),C=p(X.createElement("optgroup")),F=!1,z=[[{element:f,label:""}]];l(f.children(),function(c){c.value==""&&(F=p(c).remove(),a(F)(e))});f.html("");f.bind("change",function(){e.$apply(function(){var a,c=v(e)||[],d={},h,i,j,l,o,p;if(m){i=[];l=0;for(p=z.length;l@charset "UTF-8";[ng\\:cloak],[ng-cloak],[data-ng-cloak],[x-ng-cloak],.ng-cloak,.x-ng-cloak{display:none;}ng\\:form{display:block;}'); +b,d,e){return e?d.toUpperCase():d}).replace(Bc,"Moz$1")}function bb(b,a){function c(){var e;for(var b=[this],c=a,f,h,i,j,k,n,m;b.length;){f=b.shift();h=0;for(i=f.length;h 
"+b;a.removeChild(a.firstChild);cb(this,a.childNodes);this.remove()}else cb(this,b)}function db(b){return b.cloneNode(!0)}function na(b){xb(b);for(var a=0,b=b.childNodes||[];a-1}function yb(b,a){a&&l(a.split(" "),function(a){b.className=R((" "+b.className+" ").replace(/[\n\t]/g," ").replace(" "+R(a)+" "," "))})}function zb(b,a){a&&l(a.split(" "),function(a){if(!Ba(b,a))b.className=R(b.className+" "+R(a))})}function cb(b,a){if(a)for(var a=!a.nodeName&&v(a.length)&&!ka(a)?a:[a],c=0;c4096&&d.warn("Cookie '"+a+"' possibly not set or overflowed because it was too large ("+c+" > 4096 bytes)!"),T.length>20&&d.warn("Cookie '"+a+"' possibly not set or overflowed because too many cookies were already set ("+T.length+" > 20 )")}else{if(j.cookie!==P){P=j.cookie;c=P.split("; ");T={};for(f=0;f0&&(T[unescape(e.substring(0, +g))]=unescape(e.substring(g+1)))}return T}};i.defer=function(a,b){var c;r++;c=m(function(){delete I[c];g(a)},b||0);I[c]=!0;return c};i.defer.cancel=function(a){return I[a]?(delete I[a],o(a),g(E),!0):!1};i.addCss=function(a){var b=q(j.createElement("link"));b.attr("rel","stylesheet");b.attr("type","text/css");b.attr("href",a);c.append(b)};i.addJs=function(a,b){var d=j.createElement("script");d.type="text/javascript";d.src=a;if(ea)d.onreadystatechange=function(){/loaded|complete/.test(d.readyState)&& +b&&b()};else if(b)d.onload=d.onerror=b;c[0].appendChild(d);return d};i.baseHref=function(){var b=a.find("base").attr("href");return b?b.replace(/^https?\:\/\/[^\/]*/,""):b}}function Kc(){this.$get=["$window","$log","$sniffer","$document",function(b,a,c,d){return new Jc(b,d,d.find("body"),a,c)}]}function Lc(){this.$get=function(){function b(b,d){function e(a){if(a!=n){if(m){if(m==a)m=a.n}else m=a;g(a.n,a.p);g(a,n);n=a;n.n=null}}function g(a,b){if(a!=b){if(a)a.p=b;if(b)b.n=a}}if(b in a)throw z("cacheId "+ +b+" taken");var f=0,h=u({},d,{id:b}),i={},j=d&&d.capacity||Number.MAX_VALUE,k={},n=null,m=null;return a[b]={put:function(a,b){var c=k[a]||(k[a]={key:a});e(c);p(b)||(a in i||f++,i[a]=b,f>j&&this.remove(m.key))},get:function(a){var b=k[a];if(b)return e(b),i[a]},remove:function(a){var b=k[a];if(b==n)n=b.p;if(b==m)m=b.n;g(b.n,b.p);delete k[a];delete i[a];f--},removeAll:function(){i={};f=0;k={};n=m=null},destroy:function(){k=h=i=null;delete a[b]},info:function(){return u({},h,{size:f})}}}var a={};b.info= +function(){var b={};l(a,function(a,e){b[e]=a.info()});return b};b.get=function(b){return a[b]};return b}}function Mc(){this.$get=["$cacheFactory",function(b){return b("templates")}]}function Db(b){var a={},c="Directive",d=/^\s*directive\:\s*([\d\w\-_]+)\s+(.*)$/,e=/(([\d\w\-_]+)(?:\:([^;]+))?;?)/,g=/\<\\>/i,f=/^\<[\s\S]*\>$/;this.directive=function i(d,e){C(d)?(la(e,"directive"),a.hasOwnProperty(d)||(a[d]=[],b.factory(d+c,["$injector","$exceptionHandler",function(b,c){var e=[];l(a[d],function(a){try{var f= +b.invoke(a);if(L(f))f={compile:y(f)};else if(!f.compile&&f.link)f.compile=y(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}])),a[d].push(e)):l(d,rb(i));return this};this.$get=["$injector","$interpolate","$exceptionHandler","$http","$templateCache","$parse","$controller",function(b,j,k,n,m,o,I){function r(a,b,c){a instanceof q||(a=q(a));l(a,function(b,c){b.nodeType==3&&(a[c]=q(b).wrap("").parent()[0])}); +var d=B(a,b,a,c);return function(b,c){la(b,"scope");var e=c?ra.clone.call(a):a;x(e.data("$scope",b),"ng-scope");c&&c(e,b);d&&d(b,e,e);return e}}function s(a,b){throw z("Unsupported '"+b+"' for '"+a+"'.");}function x(a,b){try{a.addClass(b)}catch(c){}}function B(a,b,c,d){function e(a,c,d,g){for(var i,j,k,m,n,Q=0,o=0,s=f.length;QH.priority)break;if(p=H.scope)qa("isolated scope",D, +H,G),M(p)&&(x(G,"ng-isolate-scope"),D=H),x(G,"ng-scope"),K=K||H;u=H.name;if(p=H.controller)y=y||{},qa("'"+u+"' controller",y[u],H,G),y[u]=H;if(p=H.transclude)qa("transclusion",E,H,G),E=H,m=H.priority,p=="element"?(p=q(b),b=(G=c.$$element=q("<\!-- "+u+": "+c[u]+" --\>"))[0],Ga(e,q(p[0]),b),A=r(p,d,m)):(p=q(db(b)),G.html(""),A=r(p.contents(),d));if(p=H.template)qa("template",B,H,G),B=H,u=p.replace(g,G.html()),b=q(u)[0],H.replace?(Ga(e,G,b),F={$attr:{}},a=a.concat(N(b,a.splice(w+1,a.length-(w+1)),F)), +T(c,F),F=a.length):G.html(u);if(H.templateUrl)qa("template",B,H,G),B=H,Fa=P(a.splice(w,a.length-w),j,G,c,e,H.replace,A),F=a.length;else if(H.compile)try{v=H.compile(G,c,A),L(v)?f(null,v):v&&f(v.pre,v.post)}catch(O){k(O,xa(G))}if(H.terminal)j.terminal=!0,m=Math.max(m,H.priority)}v=Fa||j;v.scope=K&&K.scope;v.transclude=E&&A;return v}function D(d,e,f,g){var j=!1;if(a.hasOwnProperty(e))for(var m,e=b.get(e+c),n=0,o=e.length;nm.priority)&&m.restrict.indexOf(f)!=-1)d.push(m), +j=!0}catch(s){k(s)}return j}function T(a,b){var c=b.$attr,d=a.$attr,e=a.$$element;l(a,function(d,e){e.charAt(0)!="$"&&(b[e]&&(d+=(e==="style"?";":" ")+b[e]),a.$set(e,d,!0,c[e]))});l(b,function(b,f){f=="class"?x(e,b):f=="style"?e.attr("style",e.attr("style")+";"+b):f.charAt(0)!="$"&&!a.hasOwnProperty(f)&&(a[f]=b,d[f]=c[f])})}function P(a,b,c,d,e,i,j){var k=[],o,s,Ha=c[0],r=a.shift(),I=u({},r,{templateUrl:null,transclude:null}),x=c.html();c.html("");n.get(r.templateUrl,{cache:m}).success(function(m){m= +R(m).replace(g,x);if(i&&!m.match(f))throw z("Template must have exactly one root element: "+m);var n,r;i?(r={$attr:{}},n=q(m)[0],Ga(e,c,n),N(c[0],a,r),T(d,r)):(n=c[0],c.html(m));a.unshift(I);o=K(a,c,d,j);for(s=B(c.contents(),j);k.length;){var l=k.pop(),m=k.pop();r=k.pop();var D=k.pop(),ba=n;r!==Ha&&(ba=db(n),Ga(m,q(r),ba));o(function(){b(s,D,ba,e,l)},D,ba,e,l)}k=null}).error(function(a,b,c,d){throw z("Failed to load template: "+d.url);});return function(a,c,d,e,f){k?(k.push(c),k.push(d),k.push(e), +k.push(f)):o(function(){b(s,c,d,e,f)},c,d,e,f)}}function Fa(a,b){return b.priority-a.priority}function qa(a,b,c,d){if(b)throw z("Multiple directives ["+b.name+", "+c.name+"] asking for "+a+" on: "+xa(d));}function p(a,b){var c=j(b,!0);c&&a.push({priority:0,compile:y(function(a,b){var d=b.parent(),e=d.data("$binding")||[];e.push(c);x(d.data("$binding",e),"ng-binding");a.$watch(c,function(a){b[0].nodeValue=a})})})}function G(a,b,c,d){var e=j(c,!0);e&&b.push({priority:100,compile:y(function(a,b,c){d=== +"class"&&(e=j(c[d],!0));c.$$observers[d]=[];c[d]=t;a.$watch(e,function(a){c.$set(d,a)})})})}function Ga(a,b,c){var d=b[0],e=d.parentNode,f,g;if(a){f=0;for(g=a.length;f0){var e=P[0],f=e.text;if(f==a||f==b||f==c||f==d||!a&&!b&&!c&&!d)return e}return!1}function f(b,c,e,f){return(b=g(b,c,e,f))?(a&&!b.json&&d("is not valid json",b),P.shift(),b):!1}function h(a){f(a)||d("is unexpected, expecting ["+a+"]",g())}function i(a,b){return function(c,d){return a(c,d,b)}}function j(a,b,c){return function(d,e){return b(d,e,a,c)}}function k(){for(var a=[];;)if(P.length>0&&!g("}",")",";","]")&&a.push(A()),!f(";"))return a.length==1? +a[0]:function(b,c){for(var d,e=0;e","<=",">="))a=j(a,b.fn,r());return a}function s(){for(var a=l(),b;b=f("*","/","%");)a=j(a,b.fn,l());return a}function l(){var a;return f("+")?B():(a=f("-"))?j(D,a.fn,l()):(a=f("!"))?i(a.fn,l()):B()}function B(){var a;if(f("("))a=A(),h(")");else if(f("["))a=N();else if(f("{"))a=K();else{var b=f();(a=b.fn)||d("not a primary expression",b)}for(var c;b=f("(","[",".");)b.text==="("?(a=q(a,c),c=null):b.text==="["?(c=a,a=G(a)):b.text==="."?(c=a, +a=v(a)):d("IMPOSSIBLE");return a}function N(){var a=[];if(e().text!="]"){do a.push(p());while(f(","))}h("]");return function(b,c){for(var d=[],e=0;e1;d++){var e=a.shift(), +g=b[e];g||(g={},b[e]=g);b=g}return b[a.shift()]=c}function hb(b,a,c){if(!a)return b;for(var a=a.split("."),d,e=b,g=a.length,f=0;f=0;d--)if(f[d]==c)break;if(d>=0){for(e=f.length-1;e>=d;e--)a.end&&a.end(f[e]);f.length=d}}var e,g,f=[],h=b;for(f.last=function(){return f[f.length-1]};b;){g=!0;if(!f.last()||!Qb[f.last()]){if(b.indexOf("<\!--")===0)e=b.indexOf("--\>"),e>=0&&(a.comment&&a.comment(b.substring(4,e)),b=b.substring(e+ +3),g=!1);else if(kd.test(b)){if(e=b.match(Rb))b=b.substring(e[0].length),e[0].replace(Rb,d),g=!1}else if(ld.test(b)&&(e=b.match(Sb)))b=b.substring(e[0].length),e[0].replace(Sb,c),g=!1;g&&(e=b.indexOf("<"),g=e<0?b:b.substring(0,e),b=e<0?"":b.substring(e),a.chars&&a.chars(lb(g)))}else b=b.replace(RegExp("(.*)<\\s*\\/\\s*"+f.last()+"[^>]*>","i"),function(b,c){c=c.replace(md,"$1").replace(nd,"$1");a.chars&&a.chars(lb(c));return""}),d("",f.last());if(b==h)throw"Parse Error: "+b;h=b}d()}function lb(b){mb.innerHTML= +b.replace(//g,">")}function Lb(b){var a=!1,c=wa(b,b.push);return{start:function(b,e,g){b=A(b);!a&&Qb[b]&&(a=b);!a&&Ub[b]==!0&&(c("<"),c(b),l(e,function(a,b){var d=A(b);if(pd[d]==!0&&(Vb[d]!==!0||a.match(qd)))c(" "),c(b),c('="'),c(Tb(a)),c('"')}),c(g?"/>":">"))},end:function(b){b=A(b);!a&&Ub[b]==!0&&(c(""));b==a&&(a=!1)},chars:function(b){a||c(Tb(b))}}}function rd(){this.$get=["$window",function(b){var a={};return{history:!(!b.history||!b.history.pushState),hashchange:"onhashchange"in b&&(!b.document.documentMode||b.document.documentMode>7),hasEvent:function(c){if(p(a[c])){var d=b.document.createElement("div");a[c]="on"+c in d}return a[c]}}}]}function sd(){this.$get=y(V)}function Wb(b){var a={},c,d,e;if(!b)return a;l(b.split("\n"),function(b){e=b.indexOf(":");c=A(R(b.substr(0,e)));d=R(b.substr(e+ +1));c&&(a[c]?a[c]+=", "+d:a[c]=d)});return a}function Xb(b){var a=M(b)?b:t;return function(c){a||(a=Wb(b));return c?a[A(c)]||null:a}}function Yb(b,a,c){if(L(c))return c(b,a);l(c,function(c){b=c(b,a)});return b}function td(){var b=/^\s*(\[|\{[^\{])/,a=/[\}\]]\s*$/,c=/^\)\]\}',?\n/,d=this.defaults={transformResponse:[function(d){C(d)&&(d=d.replace(c,""),b.test(d)&&a.test(d)&&(d=sb(d,!0)));return d}],transformRequest:[function(a){return M(a)&&Ua.apply(a)!=="[object File]"?$(a):a}],headers:{common:{Accept:"application/json, text/plain, */*", +"X-Requested-With":"XMLHttpRequest"},post:{"Content-Type":"application/json"},put:{"Content-Type":"application/json"}}},e=this.responseInterceptors=[];this.$get=["$httpBackend","$browser","$cacheFactory","$rootScope","$q","$injector",function(a,b,c,i,j,k){function n(a){function c(a){var b=u({},a,{data:Yb(a.data,a.headers,g)});return 200<=a.status&&a.status<300?b:j.reject(b)}a.method=ia(a.method);var e=a.transformRequest||d.transformRequest,g=a.transformResponse||d.transformResponse,h=d.headers,h= +u({"X-XSRF-TOKEN":b.cookies()["XSRF-TOKEN"]},h.common,h[A(a.method)],a.headers),e=Yb(a.data,Xb(h),e),i;p(a.data)&&delete h["Content-Type"];i=m(a,e,h);i=i.then(c,c);l(r,function(a){i=a(i)});i.success=function(b){i.then(function(c){b(c.data,c.status,c.headers,a)});return i};i.error=function(b){i.then(null,function(c){b(c.data,c.status,c.headers,a)});return i};return i}function m(b,c,d){function e(a,b,c){l&&(200<=a&&a<300?l.put(p,[a,b,Wb(c)]):l.remove(p));f(b,a,c);i.$apply()}function f(a,c,d){c=Math.max(c, +0);(200<=c&&c<300?m.resolve:m.reject)({data:a,status:c,headers:Xb(d),config:b})}function h(){var a=Wa(n.pendingRequests,b);a!==-1&&n.pendingRequests.splice(a,1)}var m=j.defer(),k=m.promise,l,r,p=o(b.url,b.params);n.pendingRequests.push(b);k.then(h,h);b.cache&&b.method=="GET"&&(l=M(b.cache)?b.cache:I);if(l)if(r=l.get(p))if(r.then)return r.then(h,h),r;else J(r)?f(r[1],r[0],X(r[2])):f(r,200,{});else l.put(p,k);r||a(b.method,p,c,e,d,b.timeout,b.withCredentials);return k}function o(a,b){if(!b)return a; +var c=[];qc(b,function(a,b){a==null||a==t||(M(a)&&(a=$(a)),c.push(encodeURIComponent(b)+"="+encodeURIComponent(a)))});return a+(a.indexOf("?")==-1?"?":"&")+c.join("&")}var I=c("$http"),r=[];l(e,function(a){r.push(C(a)?k.get(a):k.invoke(a))});n.pendingRequests=[];(function(a){l(arguments,function(a){n[a]=function(b,c){return n(u(c||{},{method:a,url:b}))}})})("get","delete","head","jsonp");(function(a){l(arguments,function(a){n[a]=function(b,c,d){return n(u(d||{},{method:a,url:b,data:c}))}})})("post", +"put");return n}]}function ud(){this.$get=["$browser","$window","$document",function(b,a,c){return vd(b,wd,b.defer,a.angular.callbacks,c[0].body,a.location.protocol.replace(":",""))}]}function vd(b,a,c,d,e,g){return function(f,h,i,j,k,n,m){function o(a,c,d,e){c=(h.match(Gb)||["",g])[1]=="file"?d?200:404:c;a(c==1223?204:c,d,e);b.$$completeOutstandingRequest(E)}b.$$incOutstandingRequestCount();h=h||b.url();if(A(f)=="jsonp"){var I="_"+(d.counter++).toString(36);d[I]=function(a){d[I].data=a};var r=b.addJs(h.replace("JSON_CALLBACK", +"angular.callbacks."+I),function(){d[I].data?o(j,200,d[I].data):o(j,-2);delete d[I];e.removeChild(r)})}else{var s=new a;s.open(f,h,!0);l(k,function(a,b){a&&s.setRequestHeader(b,a)});var p;s.onreadystatechange=function(){s.readyState==4&&o(j,p||s.status,s.responseText,s.getAllResponseHeaders())};if(m)s.withCredentials=!0;s.send(i||"");n>0&&c(function(){p=-1;s.abort()},n)}}}function xd(){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(b){return b===1?"one":"other"}}}}function Zb(b){function a(a,e){return b.factory(a+c,e)}var c="Filter";this.register=a;this.$get=["$injector",function(a){return function(b){return a.get(b+c)}}];a("currency",$b);a("date",ac);a("filter",yd);a("json",zd);a("limitTo",Ad);a("linky",Bd); +a("lowercase",Cd);a("number",bc);a("orderBy",cc);a("uppercase",Dd)}function yd(){return function(b,a){if(!(b instanceof Array))return b;var c=[];c.check=function(a){for(var b=0;b-1;case "object":for(var c in a)if(c.charAt(0)!=="$"&&d(a[c],b))return!0;return!1;case "array":for(c=0;c=k+n)for(var j=f.length-k,m=0;m +0||e>-c)e+=c;e===0&&c==-12&&(e=12);return nb(e,a,d)}}function La(b,a){return function(c,d){var e=c["get"+b](),g=ia(a?"SHORT"+b:b);return d[g][e]}}function ac(b){function a(a){var b;if(b=a.match(c)){var a=new Date(0),g=0,f=0;b[9]&&(g=w(b[9]+b[10]),f=w(b[9]+b[11]));a.setUTCFullYear(w(b[1]),w(b[2])-1,w(b[3]));a.setUTCHours(w(b[4]||0)-g,w(b[5]||0)-f,w(b[6]||0),w(b[7]||0))}return a}var c=/^(\d{4})-?(\d\d)-?(\d\d)(?:T(\d\d)(?::?(\d\d)(?::?(\d\d)(?:\.(\d{3}))?)?)?(Z|([+-])(\d\d):?(\d\d)))?$/;return function(c, +e){var g="",f=[],h,i,e=e||"mediumDate",e=b.DATETIME_FORMATS[e]||e;C(c)&&(c=Ed.test(c)?w(c):a(c));ta(c)&&(c=new Date(c));if(!ja(c))return c;for(;e;)(i=Fd.exec(e))?(f=f.concat(ga.call(i,1)),e=f.pop()):(f.push(e),e=null);l(f,function(a){h=Gd[a];g+=h?h(c,b.DATETIME_FORMATS):a.replace(/(^'|'$)/g,"").replace(/''/g,"'")});return g}}function zd(){return function(b){return $(b,!0)}}function Bd(){var b=/((ftp|https?):\/\/|(mailto:)?[A-Za-z0-9._%+-]+@)\S*[^\s\.\;\,\(\)\{\}\<\>]/,a=/^mailto:/;return function(c){if(!c)return c; +for(var d=c,e=[],g=Lb(e),f,h;c=d.match(b);)f=c[0],c[2]==c[3]&&(f="mailto:"+f),h=c.index,g.chars(d.substr(0,h)),g.start("a",{href:f}),g.chars(c[0].replace(a,"")),g.end("a"),d=d.substring(h+c[0].length);g.chars(d);return e.join("")}}function Ad(){return function(b,a){if(!(b instanceof Array))return b;var a=w(a),c=[],d,e;if(!b||!(b instanceof Array))return c;a>b.length?a=b.length:a<-b.length&&(a=-b.length);a>0?(d=0,e=a):(d=b.length+a,e=b.length);for(;dn?(d.$setValidity("maxlength",!1),t):(d.$setValidity("maxlength",!0),a)};d.$parsers.push(c);d.$formatters.push(c)}}function ob(b,a){b="ngClass"+b;return O(function(c,d,e){c.$watch(e[b],function(b,e){if(a===!0||c.$index%2===a)e&&b!==e&&(M(e)&&!J(e)&&(e=Va(e,function(a,b){if(a)return b})),d.removeClass(J(e)?e.join(" "):e)),M(b)&&!J(b)&&(b=Va(b,function(a,b){if(a)return b})),b&&d.addClass(J(b)?b.join(" "):b)},!0)})}if(typeof W.getAttribute==Ta)W.getAttribute=function(){};var A=function(b){return C(b)? +b.toLowerCase():b},ia=function(b){return C(b)?b.toUpperCase():b},oc="length",pc="name",rc="object",sc="string",Ta="undefined",z=V.Error,ea=w((/msie (\d+)/.exec(A(navigator.userAgent))||[])[1]),q,ha,ga=[].slice,fa=[].push,Ua=Object.prototype.toString,hc=V.angular||(V.angular={}),pa,Eb,Y=["0","0","0"];E.$inject=[];ua.$inject=[];Eb=ea<9?function(b){b=b.nodeName?b:b[0];return b.scopeName&&b.scopeName!="HTML"?ia(b.scopeName+":"+b.nodeName):b.nodeName}:function(b){return b.nodeName?b.nodeName:b[0].nodeName}; +var yc=/[A-Z]/g,Hd={full:"1.0.0rc4",major:1,minor:0,dot:0,codeName:"insomnia-induction"},za={},ya="ng-"+(new Date).getTime(),Cc=1,Id=V.document.addEventListener?function(b,a,c){b.addEventListener(a,c,!1)}:function(b,a,c){b.attachEvent("on"+a,c)},eb=V.document.removeEventListener?function(b,a,c){b.removeEventListener(a,c,!1)}:function(b,a,c){b.detachEvent("on"+a,c)},Ac=/([\:\-\_]+(.))/g,Bc=/^moz([A-Z])/,ra=S.prototype={ready:function(b){function a(){c||(c=!0,b())}var c=!1;this.bind("DOMContentLoaded", +a);S(V).bind("load",a)},toString:function(){var b=[];l(this,function(a){b.push(""+a)});return"["+b.join(", ")+"]"},eq:function(b){return b>=0?q(this[b]):q(this[this.length+b])},length:0,push:fa,sort:[].sort,splice:[].splice},Da={};l("multiple,selected,checked,disabled,readOnly,required".split(","),function(b){Da[A(b)]=b});var Cb={};l("input,select,option,textarea,button,form".split(","),function(b){Cb[ia(b)]=!0});l({data:Aa,inheritedData:Ca,scope:function(b){return Ca(b,"$scope")},controller:Ab,injector:function(b){return Ca(b, +"$injector")},removeAttr:function(b,a){b.removeAttribute(a)},hasClass:Ba,css:function(b,a,c){a=wb(a);if(v(c))b.style[a]=c;else{var d;ea<=8&&(d=b.currentStyle&&b.currentStyle[a],d===""&&(d="auto"));d=d||b.style[a];ea<=8&&(d=d===""?t:d);return d}},attr:function(b,a,c){var d=A(a);if(Da[d])if(v(c))c?(b[a]=!0,b.setAttribute(a,d)):(b[a]=!1,b.removeAttribute(d));else return b[a]||(b.attributes.getNamedItem(a)||E).specified?d:t;else if(v(c))b.setAttribute(a,c);else if(b.getAttribute)return b=b.getAttribute(a, +2),b===null?t:b},prop:function(b,a,c){if(v(c))b[a]=c;else return b[a]},text:u(ea<9?function(b,a){if(b.nodeType==1){if(p(a))return b.innerText;b.innerText=a}else{if(p(a))return b.nodeValue;b.nodeValue=a}}:function(b,a){if(p(a))return b.textContent;b.textContent=a},{$dv:""}),val:function(b,a){if(p(a))return b.value;b.value=a},html:function(b,a){if(p(a))return b.innerHTML;for(var c=0,d=b.childNodes;c":function(a,c,d,e){return d(a,c)>e(a,c)},"<=":function(a,c,d,e){return d(a,c)<=e(a,c)},">=":function(a,c,d,e){return d(a,c)>=e(a,c)},"&&":function(a,c,d,e){return d(a,c)&&e(a,c)},"||":function(a,c,d,e){return d(a,c)||e(a,c)},"&":function(a,c,d,e){return d(a,c)&e(a,c)},"|":function(a,c,d,e){return e(a, +c)(a,c,d(a,c))},"!":function(a,c,d){return!d(a,c)}},$c={n:"\n",f:"\u000c",r:"\r",t:"\t",v:"\u000b","'":"'",'"':'"'},kb={},Sb=/^<\s*([\w:-]+)((?:\s+[\w:-]+(?:\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|[^>\s]+))?)*)\s*(\/?)\s*>/,Rb=/^<\s*\/\s*([\w:-]+)[^>]*>/,jd=/([\w:-]+)(?:\s*=\s*(?:(?:"((?:[^"])*)")|(?:'((?:[^'])*)')|([^>\s]+)))?/g,ld=/^/g,nd=//g,qd=/^((ftp|https?):\/\/|mailto:|#)/,od=/([^\#-~| |!])/g,Pb=Z("area,br,col,hr,img,wbr"),fa=Z("colgroup,dd,dt,li,p,tbody,td,tfoot,th,thead,tr"), +jc=Z("rp,rt"),Ob=u({},jc,fa),Mb=u({},fa,Z("address,article,aside,blockquote,caption,center,del,dir,div,dl,figure,figcaption,footer,h1,h2,h3,h4,h5,h6,header,hgroup,hr,ins,map,menu,nav,ol,pre,script,section,table,ul")),Nb=u({},jc,Z("a,abbr,acronym,b,bdi,bdo,big,br,cite,code,del,dfn,em,font,i,img,ins,kbd,label,map,mark,q,ruby,rp,rt,s,samp,small,span,strike,strong,sub,sup,time,tt,u,var")),Qb=Z("script,style"),Ub=u({},Pb,Mb,Nb,Ob),Vb=Z("background,cite,href,longdesc,src,usemap"),pd=u({},Vb,Z("abbr,align,alt,axis,bgcolor,border,cellpadding,cellspacing,class,clear,color,cols,colspan,compact,coords,dir,face,headers,height,hreflang,hspace,ismap,lang,language,nohref,nowrap,rel,rev,rows,rowspan,rules,scope,scrolling,shape,span,start,summary,target,title,type,valign,value,vspace,width")), +mb=W.createElement("pre"),wd=V.XMLHttpRequest||function(){try{return new ActiveXObject("Msxml2.XMLHTTP.6.0")}catch(a){}try{return new ActiveXObject("Msxml2.XMLHTTP.3.0")}catch(c){}try{return new ActiveXObject("Msxml2.XMLHTTP")}catch(d){}throw new z("This browser does not support XMLHttpRequest.");};Zb.$inject=["$provide"];$b.$inject=["$locale"];bc.$inject=["$locale"];var ec=".",Gd={yyyy:F("FullYear",4),yy:F("FullYear",2,0,!0),y:F("FullYear",1),MMMM:La("Month"),MMM:La("Month",!0),MM:F("Month",2,1), +M:F("Month",1,1),dd:F("Date",2),d:F("Date",1),HH:F("Hours",2),H:F("Hours",1),hh:F("Hours",2,-12),h:F("Hours",1,-12),mm:F("Minutes",2),m:F("Minutes",1),ss:F("Seconds",2),s:F("Seconds",1),EEEE:La("Day"),EEE:La("Day",!0),a:function(a,c){return a.getHours()<12?c.AMPMS[0]:c.AMPMS[1]},Z:function(a){a=a.getTimezoneOffset();return nb(a/60,2)+nb(Math.abs(a%60),2)}},Fd=/((?:[^yMdHhmsaZE']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|d+|H+|h+|m+|s+|a|Z))(.*)/,Ed=/^\d+$/;ac.$inject=["$locale"];var Cd=y(A),Dd=y(ia);cc.$inject= +["$parse"];var Jd=y({restrict:"E",compile:function(a,c){c.href||c.$set("href","");return function(a,c){c.bind("click",function(a){c.attr("href")||a.preventDefault()})}}}),pb={};l(Da,function(a,c){var d=ca("ng-"+c);pb[d]=function(){return{priority:100,compile:function(){return function(a,g,f){f.$$observers[c]=[];a.$watch(f[d],function(a){f.$set(c,!!a)})}}}}});l(["src","href"],function(a){var c=ca("ng-"+a);pb[c]=function(){return{priority:99,compile:function(){return function(d,e,g){d=g[c];d==t?(g.$$observers[a]= +[],g.$observe(c,function(c){g.$set(a,c)})):g.$set(a,d)}}}}});var Oa={$addControl:E,$removeControl:E,$setValidity:E,$setDirty:E};fc.$inject=["$element","$attrs","$scope"];var fa={name:"form",restrict:"E",controller:fc,compile:function(){return{pre:function(a,c,d,e){d.action||c.bind("submit",function(a){a.preventDefault()});var g=c.parent().controller("form"),f=d.name||d.ngForm;f&&(a[f]=e);g&&c.bind("$destroy",function(){g.$removeControl(e);f&&(a[f]=t);u(e,Oa)})}}}},Kd=y(fa),Ld=y(u(X(fa),{restrict:"EAC"})), +Md=/^(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?$/,Nd=/^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/,Od=/^\s*(\-|\+)?(\d+|(\d*(\.\d*)))\s*$/,kc={text:Qa,number:function(a,c,d,e,g,f){Qa(a,c,d,e,g,f);e.$parsers.push(function(a){var c=U(a);return c||Od.test(a)?(e.$setValidity("number",!0),a===""?null:c?a:parseFloat(a)):(e.$setValidity("number",!1),t)});e.$formatters.push(function(a){return U(a)?"":""+a});if(d.min){var h=parseFloat(d.min),a=function(a){return!U(a)&& +ai?(e.$setValidity("max",!1),t):(e.$setValidity("max",!0),a)};e.$parsers.push(d);e.$formatters.push(d)}e.$formatters.push(function(a){return U(a)||ta(a)?(e.$setValidity("number",!0),a):(e.$setValidity("number",!1),t)})},url:function(a,c,d,e,g,f){Qa(a,c,d,e,g,f);a=function(a){return U(a)||Md.test(a)?(e.$setValidity("url",!0),a):(e.$setValidity("url", +!1),t)};e.$formatters.push(a);e.$parsers.push(a)},email:function(a,c,d,e,g,f){Qa(a,c,d,e,g,f);a=function(a){return U(a)||Nd.test(a)?(e.$setValidity("email",!0),a):(e.$setValidity("email",!1),t)};e.$formatters.push(a);e.$parsers.push(a)},radio:function(a,c,d,e){c.attr("name",d.id+"@"+d.name);c.bind("click",function(){c[0].checked&&a.$apply(function(){e.$setViewValue(d.value)})});e.$render=function(){c[0].checked=d.value==e.$viewValue};d.$observe("value",e.$render)},checkbox:function(a,c,d,e){var g= +d.ngTrueValue,f=d.ngFalseValue;C(g)||(g=!0);C(f)||(f=!1);c.bind("click",function(){a.$apply(function(){e.$setViewValue(c[0].checked)})});e.$render=function(){c[0].checked=e.$viewValue};e.$formatters.push(function(a){return a===g});e.$parsers.push(function(a){return a?g:f})},hidden:E,button:E,submit:E,reset:E},lc=["$browser","$sniffer",function(a,c){return{restrict:"E",require:"?ngModel",link:function(d,e,g,f){f&&(kc[A(g.type)]||kc.text)(d,e,g,f,c,a)}}}],Na="ng-valid",Ma="ng-invalid",Pa="ng-pristine", +gc="ng-dirty",Pd=["$scope","$exceptionHandler","$attrs","ngModel","$element",function(a,c,d,e,g){function f(a,c){c=c?"-"+ab(c,"-"):"";g.removeClass((a?Ma:Na)+c).addClass((a?Na:Ma)+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.$render=E;this.$name=d.name;var h=g.inheritedData("$formController")||Oa,i=0,j=this.$error={};g.addClass(Pa);f(!0);this.$setValidity=function(a, +c){if(j[a]!==!c){if(c){if(j[a]&&i--,!i)f(!0),this.$valid=!0,this.$invalid=!1}else f(!1),this.$invalid=!0,this.$valid=!1,i++;j[a]=!c;f(c,a);h.$setValidity(a,c,this)}};this.$setViewValue=function(a){this.$viewValue=a;if(this.$pristine)this.$dirty=!0,this.$pristine=!1,g.removeClass(Pa).addClass(gc),h.$setDirty();l(this.$parsers,function(c){a=c(a)});if(this.$modelValue!==a)this.$modelValue=a,e(a),l(this.$viewChangeListeners,function(a){try{a()}catch(d){c(d)}})};var k=this;a.$watch(function(){return e()}, +function(a){if(k.$modelValue!==a){var c=k.$formatters,d=c.length;for(k.$modelValue=a;d--;)a=c[d](a);if(k.$viewValue!==a)k.$viewValue=a,k.$render()}})}],Qd=[function(){return{inject:{ngModel:"accessor"},require:["ngModel","^?form"],controller:Pd,link:function(a,c,d,e){var g=e[0],f=e[1]||Oa;f.$addControl(g);c.bind("$destroy",function(){f.$removeControl(g)})}}}],Rd=y({require:"ngModel",link:function(a,c,d,e){e.$viewChangeListeners.push(function(){a.$eval(d.ngChange)})}}),mc=[function(){return{require:"?ngModel", +link:function(a,c,d,e){if(e){var g=function(a){if(d.required&&(U(a)||a===!1))e.$setValidity("required",!1);else return e.$setValidity("required",!0),a};e.$formatters.push(g);e.$parsers.unshift(g);d.$observe("required",function(){g(e.$viewValue)})}}}}],Sd=function(){return{require:"ngModel",link:function(a,c,d,e){var g=(a=/\/(.*)\//.exec(d.ngList))&&RegExp(a[1])||d.ngList||",",f=function(a){var c=[];a&&l(a.split(g),function(a){a&&c.push(R(a))});return c};e.$parsers.push(f);e.$formatters.push(function(a){return J(a)&& +!da(f(e.$viewValue),a)?a.join(", "):t})}}},Td=/^(true|false|\d+)$/,Ud=[function(){return{priority:100,compile:function(a,c){return Td.test(c.ngValue)?function(a){c.$set("value",a.$eval(c.ngValue))}:function(a,c,g){g.$$observers.value=[];a.$watch(g.ngValue,function(a){g.$set("value",a,!1)})}}}}],Vd=O(function(a,c,d){c.addClass("ng-binding").data("$binding",d.ngBind);a.$watch(d.ngBind,function(a){c.text(a==t?"":a)})}),Wd=O(function(a,c,d){c.addClass("ng-binding").data("$binding",d.ngBindHtmlUnsafe); +a.$watch(d.ngBindHtmlUnsafe,function(a){c.html(a==t?"":a)})}),Xd=["$sanitize",function(a){return function(c,d,e){d.addClass("ng-binding").data("$binding",e.ngBindHtml);c.$watch(e.ngBindHtml,function(c){(c=a(c))&&d.html(c)})}}],Yd=["$interpolate",function(a){return function(c,d,e){c=a(d.attr(e.$attr.ngBindTemplate));d.addClass("ng-binding").data("$binding",c);e.$observe("ngBindTemplate",function(a){d.text(a)})}}],Zd=ob("",!0),$d=ob("Odd",0),ae=ob("Even",1),be=O({compile:function(a,c){c.$set("ngCloak", +t);a.removeClass("ng-cloak")}}),ce=[function(){return{scope:!0,controller:"@"}}],nc={};l("click dblclick mousedown mouseup mouseover mouseout mousemove mouseenter mouseleave".split(" "),function(a){var c=ca("ng-"+a);nc[c]=["$parse",function(d){return function(e,g,f){var h=d(f[c]);g.bind(A(a),function(a){e.$apply(function(){h(e,{$event:a})})})}}]});var de=O(function(a,c,d){c.bind("submit",function(){a.$apply(d.ngSubmit)})}),ee=["$http","$templateCache","$anchorScroll","$compile",function(a,c,d,e){return{restrict:"ECA", +terminal:!0,compile:function(g,f){var h=f.ngInclude||f.src,i=f.onload||"",j=f.autoscroll;return function(f,g){var m=0,l,p=function(){l&&(l.$destroy(),l=null);g.html("")};f.$watch(h,function(h){var s=++m;h?a.get(h,{cache:c}).success(function(a){s===m&&(l&&l.$destroy(),l=f.$new(),g.html(a),e(g.contents())(l),v(j)&&(!j||f.$eval(j))&&d(),l.$emit("$includeContentLoaded"),f.$eval(i))}).error(function(){s===m&&p()}):p()})}}}}],fe=O({compile:function(){return{pre:function(a,c,d){a.$eval(d.ngInit)}}}}),ge= +O({terminal:!0,priority:1E3}),he=["$locale","$interpolate",function(a,c){var d=/{}/g;return{restrict:"EA",link:function(e,g,f){var h=f.count,i=g.attr(f.$attr.when),j=f.offset||0,k=e.$eval(i),n={};l(k,function(a,e){n[e]=c(a.replace(d,"{{"+h+"-"+j+"}}"))});e.$watch(function(){var c=parseFloat(e.$eval(h));return isNaN(c)?"":(k[c]||(c=a.pluralCat(c-j)),n[c](e,g,!0))},function(a){g.text(a)})}}}],ie=O({transclude:"element",priority:1E3,terminal:!0,compile:function(a,c,d){return function(a,c,f){var h=f.ngRepeat, +f=h.match(/^\s*(.+)\s+in\s+(.*)\s*$/),i,j,k;if(!f)throw z("Expected ng-repeat in form of '_item_ in _collection_' but got '"+h+"'.");h=f[1];i=f[2];f=h.match(/^(?:([\$\w]+)|\(([\$\w]+)\s*,\s*([\$\w]+)\))$/);if(!f)throw z("'item' in 'item in collection' should be identifier or (key, value) but got '"+h+"'.");j=f[3]||f[1];k=f[2];var l=new gb;a.$watch(function(a){var e,f,h=a.$eval(i),s=uc(h,!0),p,B=new gb,t,q,D,u,v=c;if(J(h))D=h||[];else{D=[];for(t in h)h.hasOwnProperty(t)&&t.charAt(0)!="$"&&D.push(t); +D.sort()}e=0;for(f=D.length;ex;)m.pop().element.remove()}for(;y.length>w;)y.pop()[0].element.remove()}var h;if(!(h=m.match(d)))throw z("Expected ng-options in form of '_select_ (as _label_)? for (_key_,)?_value_ in _collection_' but got '"+ +m+"'.");var j=c(h[2]||h[1]),k=h[4]||h[6],o=h[5],p=c(h[3]||""),u=c(h[2]?h[1]:k),v=c(h[7]),A=q(W.createElement("option")),E=q(W.createElement("optgroup")),G=!1,y=[[{element:f,label:""}]];l(f.children(),function(c){c.value==""&&(G=q(c).remove(),a(G)(e))});f.html("");f.bind("change",function(){e.$apply(function(){var a,c=v(e)||[],d={},h,i,j,l,m,p;if(n){i=[];l=0;for(p=y.length;l@charset "UTF-8";[ng\\:cloak],[ng-cloak],[data-ng-cloak],[x-ng-cloak],.ng-cloak,.x-ng-cloak{display:none;}ng\\:form{display:block;}'); diff --git a/app/lib/angular/version.txt b/app/lib/angular/version.txt index 1bb1990..800a035 100644 --- a/app/lib/angular/version.txt +++ b/app/lib/angular/version.txt @@ -1 +1 @@ -1.0.0rc3 +1.0.0rc4 diff --git a/test/lib/angular/angular-mocks.js b/test/lib/angular/angular-mocks.js index 705788d..d6b0149 100644 --- a/test/lib/angular/angular-mocks.js +++ b/test/lib/angular/angular-mocks.js @@ -1,6 +1,6 @@ /** - * @license AngularJS v1.0.0rc3 + * @license AngularJS v1.0.0rc4 * (c) 2010-2011 AngularJS http://angularjs.org * License: MIT * diff --git a/test/lib/angular/angular-scenario.js b/test/lib/angular/angular-scenario.js index 4acc2e8..d9ceaf5 100644 --- a/test/lib/angular/angular-scenario.js +++ b/test/lib/angular/angular-scenario.js @@ -14,6 +14,7 @@ * Date: Thu Nov 3 16:18:21 2011 -0400 */ (function( window, undefined ) { +'use strict'; // Use the correct document accordingly with window argument (sandbox) var document = window.document, @@ -9298,7 +9299,7 @@ jQuery.each([ "Height", "Width" ], function( i, name ) { // Expose jQuery to the global object window.jQuery = window.$ = jQuery; })( window );/** - * @license AngularJS v1.0.0rc3 + * @license AngularJS v1.0.0rc4 * (c) 2010-2011 AngularJS http://angularjs.org * License: MIT */ @@ -10589,11 +10590,11 @@ function setupModuleLoader(window) { * - `codeName` – `{string}` – Code name of the release, such as "jiggling-armfat". */ var version = { - full: '1.0.0rc3', // all of these placeholder strings will be replaced by rake's + full: '1.0.0rc4', // all of these placeholder strings will be replaced by rake's major: 1, // compile task minor: 0, dot: 0, - codeName: 'barefoot-telepathy' + codeName: 'insomnia-induction' }; @@ -10673,7 +10674,6 @@ function publishExternalAPI(angular){ ngModel: ngModelDirective, ngList: ngListDirective, ngChange: ngChangeDirective, - ngModelInstant: ngModelInstantDirective, required: requiredDirective, ngRequired: requiredDirective, ngValue: ngValueDirective @@ -13039,7 +13039,7 @@ function $CompileProvider($provide) { var linkingFns = [], directiveLinkingFn, childLinkingFn, directives, attrs, linkingFnFound; - for(var i = 0, ii = nodeList.length; i < ii; i++) { + for(var i = 0; i < nodeList.length; i++) { attrs = new Attributes(); // we must always refer to nodeList[i] since the nodes can be replaced underneath us. @@ -13063,10 +13063,6 @@ function $CompileProvider($provide) { return linkingFnFound ? linkingFn : null; /* nodesetLinkingFn */ function linkingFn(scope, nodeList, rootElement, boundTranscludeFn) { - if (linkingFns.length != nodeList.length * 2) { - throw Error('Template changed structure!'); - } - var childLinkingFn, directiveLinkingFn, node, childScope, childTransclusionFn; for(var i=0, n=0, ii=linkingFns.length; i 7) + (!$window.document.documentMode || $window.document.documentMode > 7), + hasEvent: function(event) { + if (isUndefined(eventSupport[event])) { + var divElm = $window.document.createElement('div'); + eventSupport[event] = 'on' + event in divElm; + } + + return eventSupport[event]; + } }; }]; } @@ -17765,6 +17771,9 @@ function $HttpProvider() { * {@link angular.module.ng.$cacheFactory $cacheFactory}, this cache will be used for * caching. * - **timeout** – `{number}` – timeout in milliseconds. + * - **withCredentials** - `{boolean}` - whether to to set the `withCredentials` flag on the + * XHR object. See {@link https://developer.mozilla.org/en/http_access_control#section_5 + * requests with credentials} for more information. * * @returns {HttpPromise} Returns a {@link angular.module.ng.$q promise} object with the * standard `then` method and two http specific methods: `success` and `error`. The `then` @@ -18064,7 +18073,8 @@ function $HttpProvider() { // if we won't have the response in cache, send the request to the backend if (!cachedResp) { - $httpBackend(config.method, url, reqData, done, reqHeaders, config.timeout); + $httpBackend(config.method, url, reqData, done, reqHeaders, config.timeout, + config.withCredentials); } return promise; @@ -18164,7 +18174,7 @@ function $HttpBackendProvider() { function createHttpBackend($browser, XHR, $browserDefer, callbacks, body, locationProtocol) { // TODO(vojta): fix the signature - return function(method, url, post, callback, headers, timeout) { + return function(method, url, post, callback, headers, timeout, withCredentials) { $browser.$$incOutstandingRequestCount(); url = url || $browser.url(); @@ -18203,6 +18213,10 @@ function createHttpBackend($browser, XHR, $browserDefer, callbacks, body, locati } }; + if (withCredentials) { + xhr.withCredentials = true; + } + xhr.send(post || ''); if (timeout > 0) { @@ -18445,7 +18459,7 @@ function $FilterProvider($provide) { {name:'Adam', phone:'555-5678'}, {name:'Julie', phone:'555-8765'}]"> - Search: + Search:
Filter
@@ -18454,9 +18468,9 @@ function $FilterProvider($provide) {
NamePhone

- Any:
- Name only
- Phone only
+ Any:
+ Name only
+ Phone only
@@ -18590,7 +18604,7 @@ function filterFilter() { }
-
+
default currency symbol ($): {{amount | currency}}
custom currency identifier (USD$): {{amount | currency:"USD$"}}
@@ -18641,7 +18655,7 @@ function currencyFilter($locale) { }
- Enter number:
+ Enter number:
Default formatting: {{val | number}}
No fractions: {{val | number:0}}
Negative number: {{-val | number:4}} @@ -19035,7 +19049,7 @@ var uppercaseFilter = valueFn(uppercase); }
- Snippet: + Snippet:
NamePhone
@@ -19146,7 +19160,7 @@ function linkyFilter() { }
- Limit {{numbers}} to: + Limit {{numbers}} to:

Output: {{ numbers | limitTo:limit }}

@@ -19663,7 +19677,7 @@ forEach(BOOLEAN_ATTR, function(propName, attrName) { return function(scope, element, attr) { attr.$$observers[attrName] = []; scope.$watch(attr[normalized], function(value) { - attr.$set(attrName, value); + attr.$set(attrName, !!value); }); }; } @@ -19677,13 +19691,21 @@ forEach(['src', 'href'], function(attrName) { var normalized = directiveNormalize('ng-' + attrName); ngAttributeAliasDirectives[normalized] = function() { return { - priority: 100, + priority: 99, // it needs to run after the attributes are interpolated compile: function(tpl, attr) { return function(scope, element, attr) { - attr.$$observers[attrName] = []; - attr.$observe(normalized, function(value) { + var value = attr[normalized]; + if (value == undefined) { + // undefined value means that the directive is being interpolated + // so just register observer + attr.$$observers[attrName] = []; + attr.$observe(normalized, function(value) { + attr.$set(attrName, value); + }); + } else { + // value present means that no interpolation, so copy to native attribute. attr.$set(attrName, value); - }); + } }; } }; @@ -19759,23 +19781,43 @@ function FormController(element, attrs) { if (control.$name && form[control.$name] === control) { delete form[control.$name]; } - forEach(errors, cleanupControlErrors, control); + forEach(errors, function(queue, validationToken) { + form.$setValidity(validationToken, true, control); + }); }; form.$setValidity = function(validationToken, isValid, control) { - if (isValid) { - cleanupControlErrors(errors[validationToken], validationToken, control); + var queue = errors[validationToken]; - if (!invalidCount) { - toggleValidCss(isValid); - form.$valid = true; - form.$invalid = false; + if (isValid) { + if (queue) { + arrayRemove(queue, control); + if (!queue.length) { + invalidCount--; + if (!invalidCount) { + toggleValidCss(isValid); + form.$valid = true; + form.$invalid = false; + } + errors[validationToken] = false; + toggleValidCss(true, validationToken); + parentForm.$setValidity(validationToken, true, form); + } } + } else { if (!invalidCount) { toggleValidCss(isValid); } - addControlError(validationToken, control); + if (queue) { + if (includes(queue, control)) return; + } else { + errors[validationToken] = queue = []; + invalidCount++; + toggleValidCss(false, validationToken); + parentForm.$setValidity(validationToken, false, form); + } + queue.push(control); form.$valid = false; form.$invalid = true; @@ -19788,31 +19830,6 @@ function FormController(element, attrs) { form.$pristine = false; }; - function cleanupControlErrors(queue, validationToken, control) { - if (queue) { - control = control || this; // so that we can be used in forEach; - arrayRemove(queue, control); - if (!queue.length) { - invalidCount--; - errors[validationToken] = false; - toggleValidCss(true, validationToken); - parentForm.$setValidity(validationToken, true, form); - } - } - } - - function addControlError(validationToken, control) { - var queue = errors[validationToken]; - if (queue) { - if (includes(queue, control)) return; - } else { - errors[validationToken] = queue = []; - invalidCount++; - toggleValidCss(false, validationToken); - parentForm.$setValidity(validationToken, false, form); - } - queue.push(control); - } } @@ -20323,12 +20340,43 @@ function isEmpty(value) { } -function textInputType(scope, element, attr, ctrl) { - element.bind('blur', function() { - scope.$apply(function() { - ctrl.$setViewValue(trim(element.val())); +function textInputType(scope, element, attr, ctrl, $sniffer, $browser) { + + var listener = function() { + var value = trim(element.val()); + + if (ctrl.$viewValue !== value) { + scope.$apply(function() { + ctrl.$setViewValue(value); + }); + } + }; + + // if the browser does support "input" event, we are fine + if ($sniffer.hasEvent('input')) { + element.bind('input', listener); + } else { + var timeout; + + element.bind('keydown', function(event) { + var key = event.keyCode; + + // ignore + // command modifiers arrows + if (key === 91 || (15 < key && key < 19) || (37 <= key && key <= 40)) return; + + if (!timeout) { + timeout = $browser.defer(function() { + listener(); + timeout = null; + }); + } }); - }); + + // if user paste into input using mouse, we need "change" event to catch it + element.bind('change', listener); + } + ctrl.$render = function() { element.val(isEmpty(ctrl.$viewValue) ? '' : ctrl.$viewValue); @@ -20404,8 +20452,8 @@ function textInputType(scope, element, attr, ctrl) { } }; -function numberInputType(scope, element, attr, ctrl) { - textInputType(scope, element, attr, ctrl); +function numberInputType(scope, element, attr, ctrl, $sniffer, $browser) { + textInputType(scope, element, attr, ctrl, $sniffer, $browser); ctrl.$parsers.push(function(value) { var empty = isEmpty(value); @@ -20466,8 +20514,8 @@ function numberInputType(scope, element, attr, ctrl) { }); } -function urlInputType(scope, element, attr, ctrl) { - textInputType(scope, element, attr, ctrl); +function urlInputType(scope, element, attr, ctrl, $sniffer, $browser) { + textInputType(scope, element, attr, ctrl, $sniffer, $browser); var urlValidator = function(value) { if (isEmpty(value) || URL_REGEXP.test(value)) { @@ -20483,8 +20531,8 @@ function urlInputType(scope, element, attr, ctrl) { ctrl.$parsers.push(urlValidator); } -function emailInputType(scope, element, attr, ctrl) { - textInputType(scope, element, attr, ctrl); +function emailInputType(scope, element, attr, ctrl, $sniffer, $browser) { + textInputType(scope, element, attr, ctrl, $sniffer, $browser); var emailValidator = function(value) { if (isEmpty(value) || EMAIL_REGEXP.test(value)) { @@ -20665,13 +20713,14 @@ function checkboxInputType(scope, element, attr, ctrl) { */ -var inputDirective = [function() { +var inputDirective = ['$browser', '$sniffer', function($browser, $sniffer) { return { restrict: 'E', require: '?ngModel', link: function(scope, element, attr, ctrl) { if (ctrl) { - (inputType[lowercase(attr.type)] || inputType.text)(scope, element, attr, ctrl); + (inputType[lowercase(attr.type)] || inputType.text)(scope, element, attr, ctrl, $sniffer, + $browser); } } }; @@ -20960,69 +21009,6 @@ var ngChangeDirective = valueFn({ }); -/** - * @ngdoc directive - * @name angular.module.ng.$compileProvider.directive.ng-model-instant - * - * @element input - * - * @description - * By default, Angular udpates the model only on `blur` event - when the input looses focus. - * If you want to update after every key stroke, use `ng-model-instant`. - * - * @example - * - * - * First name:
- * Last name:
- * - * First name ({{firstName}}) is only updated on `blur` event, but the last name ({{lastName}}) - * is updated immediately, because of using `ng-model-instant`. - *
- * - * it('should update first name on blur', function() { - * input('firstName').enter('santa', 'blur'); - * expect(binding('firstName')).toEqual('santa'); - * }); - * - * it('should update last name immediately', function() { - * input('lastName').enter('santa', 'keydown'); - * expect(binding('lastName')).toEqual('santa'); - * }); - * - *
- */ -var ngModelInstantDirective = ['$browser', function($browser) { - return { - require: 'ngModel', - link: function(scope, element, attr, ctrl) { - var handler = function() { - scope.$apply(function() { - ctrl.$setViewValue(trim(element.val())); - }); - }; - - var timeout; - element.bind('keydown', function(event) { - var key = event.keyCode; - - // command modifiers arrows - if (key === 91 || (15 < key && key < 19) || (37 <= key && key <= 40)) return; - - if (!timeout) { - timeout = $browser.defer(function() { - handler(); - timeout = null; - }); - } - }); - - element.bind('change input', handler); - } - }; -}]; - - var requiredDirective = [function() { return { require: '?ngModel', @@ -21174,7 +21160,7 @@ var ngValueDirective = [function() { }
- Enter name:
+ Enter name:
Hello !
@@ -21270,8 +21256,8 @@ var ngBindHtmlDirective = ['$sanitize', function($sanitize) { }
- Salutation:
- Name:
+ Salutation:
+ Name:

        
@@ -21830,7 +21816,7 @@ var ngSubmitDirective = ngDirective(function(scope, element, attrs) { /** * @ngdoc directive * @name angular.module.ng.$compileProvider.directive.ng-include - * @restrict EA + * @restrict ECA * * @description * Fetches, compiles and includes an external HTML fragment. @@ -21842,8 +21828,6 @@ var ngSubmitDirective = ngDirective(function(scope, element, attrs) { * * @param {string} ng-include|src angular expression evaluating to URL. If the source is a string constant, * make sure you wrap it in quotes, e.g. `src="'myPartialTemplate.html'"`. - * @param {Scope=} [scope=new_child_scope] optional expression which evaluates to an - * instance of angular.module.ng.$rootScope.Scope to set the HTML fragment to. * @param {string=} onload Expression to evaluate when a new partial is loaded. * * @param {string=} autoscroll Whether `ng-include` should call {@link angular.module.ng.$anchorScroll @@ -21903,10 +21887,10 @@ var ngSubmitDirective = ngDirective(function(scope, element, attrs) { var ngIncludeDirective = ['$http', '$templateCache', '$anchorScroll', '$compile', function($http, $templateCache, $anchorScroll, $compile) { return { - restrict: 'EA', + restrict: 'ECA', + terminal: true, compile: function(element, attr) { - var srcExp = attr.ngInclude || attr.src, - scopeExp = attr.scope || '', + var srcExp = attr.ngInclude || attr.src, onloadExp = attr.onload || '', autoScrollExp = attr.autoscroll; @@ -21914,47 +21898,42 @@ var ngIncludeDirective = ['$http', '$templateCache', '$anchorScroll', '$compile' var changeCounter = 0, childScope; - function incrementChange() { changeCounter++;} - scope.$watch(srcExp, incrementChange); - scope.$watch(function() { - var includeScope = scope.$eval(scopeExp); - if (includeScope) return includeScope.$id; - }, incrementChange); - scope.$watch(function() {return changeCounter;}, function(newChangeCounter) { - var src = scope.$eval(srcExp), - useScope = scope.$eval(scopeExp); - - function clearContent() { - // if this callback is still desired - if (newChangeCounter === changeCounter) { - if (childScope) childScope.$destroy(); - childScope = null; - element.html(''); - } + var clearContent = function() { + if (childScope) { + childScope.$destroy(); + childScope = null; } - if (src) { - $http.get(src, {cache: $templateCache}).success(function(response) { - // if this callback is still desired - if (newChangeCounter === changeCounter) { - element.html(response); - if (childScope) childScope.$destroy(); - childScope = useScope ? useScope : scope.$new(); - $compile(element.contents())(childScope); - if (isDefined(autoScrollExp) && (!autoScrollExp || scope.$eval(autoScrollExp))) { - $anchorScroll(); - } - scope.$emit('$includeContentLoaded'); - scope.$eval(onloadExp); - } - }).error(clearContent); - } else { - clearContent(); - } + element.html(''); + }; + + scope.$watch(srcExp, function(src) { + var thisChangeId = ++changeCounter; + + if (src) { + $http.get(src, {cache: $templateCache}).success(function(response) { + if (thisChangeId !== changeCounter) return; + + if (childScope) childScope.$destroy(); + childScope = scope.$new(); + + element.html(response); + $compile(element.contents())(childScope); + + if (isDefined(autoScrollExp) && (!autoScrollExp || scope.$eval(autoScrollExp))) { + $anchorScroll(); + } + + childScope.$emit('$includeContentLoaded'); + scope.$eval(onloadExp); + }).error(function() { + if (thisChangeId === changeCounter) clearContent(); + }); + } else clearContent(); }); }; } - } + }; }]; /** @@ -22811,42 +22790,44 @@ var ngViewDirective = ['$http', '$templateCache', '$route', '$anchorScroll', '$c lastScope, onloadExp = attr.onload || ''; - scope.$on('$afterRouteChange', function(event, next, previous) { - changeCounter++; - }); + scope.$on('$afterRouteChange', update); + update(); - scope.$watch(function() {return changeCounter;}, function(newChangeCounter) { - var template = $route.current && $route.current.template; - function destroyLastScope() { - if (lastScope) { - lastScope.$destroy(); - lastScope = null; - } + function destroyLastScope() { + if (lastScope) { + lastScope.$destroy(); + lastScope = null; } + } + + function update() { + var template = $route.current && $route.current.template, + thisChangeId = ++changeCounter; function clearContent() { // ignore callback if another route change occured since - if (newChangeCounter == changeCounter) { + if (thisChangeId === changeCounter) { element.html(''); + destroyLastScope(); } - destroyLastScope(); } if (template) { $http.get(template, {cache: $templateCache}).success(function(response) { // ignore callback if another route change occured since - if (newChangeCounter == changeCounter) { + if (thisChangeId === changeCounter) { element.html(response); destroyLastScope(); var link = $compile(element.contents()), - current = $route.current; + current = $route.current, + controller; lastScope = current.scope = scope.$new(); if (current.controller) { - element.contents(). - data('$ngControllerController', $controller(current.controller, {$scope: lastScope})); + controller = $controller(current.controller, {$scope: lastScope}); + element.contents().data('$ngControllerController', controller); } link(lastScope); @@ -22860,7 +22841,7 @@ var ngViewDirective = ['$http', '$templateCache', '$route', '$anchorScroll', '$c } else { clearContent(); } - }); + } } }; }]; @@ -23686,7 +23667,7 @@ function browserTrigger(element, type, keys) { (function(fn){ var parentTrigger = fn.trigger; fn.trigger = function(type) { - if (/(click|change|keydown|blur)/.test(type)) { + if (/(click|change|keydown|blur|input)/.test(type)) { var processDefaults = []; this.each(function(index, node) { processDefaults.push(browserTrigger(node, type)); @@ -25061,12 +25042,13 @@ angular.scenario.dsl('binding', function() { */ angular.scenario.dsl('input', function() { var chain = {}; + var supportInputEvent = 'oninput' in document.createElement('div'); chain.enter = function(value, event) { return this.addFutureAction("input '" + this.name + "' enter '" + value + "'", function($window, $document, done) { var input = $document.elements('[ng\\:model="$1"]', this.name).filter(':input'); input.val(value); - input.trigger(event || 'blur'); + input.trigger(event || supportInputEvent && 'input' || 'change'); done(); }); }; diff --git a/test/lib/angular/version.txt b/test/lib/angular/version.txt index 1bb1990..800a035 100644 --- a/test/lib/angular/version.txt +++ b/test/lib/angular/version.txt @@ -1 +1 @@ -1.0.0rc3 +1.0.0rc4 -- 2.20.1
Filter