Return-Path: X-Original-To: apmail-cordova-commits-archive@www.apache.org Delivered-To: apmail-cordova-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 823D610FE6 for ; Mon, 6 Jan 2014 20:25:42 +0000 (UTC) Received: (qmail 53443 invoked by uid 500); 6 Jan 2014 20:25:42 -0000 Delivered-To: apmail-cordova-commits-archive@cordova.apache.org Received: (qmail 53345 invoked by uid 500); 6 Jan 2014 20:25:42 -0000 Mailing-List: contact commits-help@cordova.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@cordova.apache.org Delivered-To: mailing list commits@cordova.apache.org Received: (qmail 53081 invoked by uid 99); 6 Jan 2014 20:25:41 -0000 Received: from tyr.zones.apache.org (HELO tyr.zones.apache.org) (140.211.11.114) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 06 Jan 2014 20:25:41 +0000 Received: by tyr.zones.apache.org (Postfix, from userid 65534) id 4E482882C90; Mon, 6 Jan 2014 20:25:41 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit From: braden@apache.org To: commits@cordova.apache.org Date: Mon, 06 Jan 2014 20:25:49 -0000 Message-Id: <0de82df7c41447248767abbd01f597f5@git.apache.org> In-Reply-To: References: X-Mailer: ASF-Git Admin Mailer Subject: [09/13] git commit: Updating Angular to 1.2.3 release Updating Angular to 1.2.3 release Project: http://git-wip-us.apache.org/repos/asf/cordova-app-harness/repo Commit: http://git-wip-us.apache.org/repos/asf/cordova-app-harness/commit/9c3b3ee1 Tree: http://git-wip-us.apache.org/repos/asf/cordova-app-harness/tree/9c3b3ee1 Diff: http://git-wip-us.apache.org/repos/asf/cordova-app-harness/diff/9c3b3ee1 Branch: refs/heads/master Commit: 9c3b3ee1888bfc91abae151b3181752f23edf8f0 Parents: 82f00ef Author: Braden Shepherdson Authored: Tue Dec 3 11:48:12 2013 -0800 Committer: Braden Shepherdson Committed: Mon Jan 6 15:24:12 2014 -0500 ---------------------------------------------------------------------- www/cdvah/js/libs/angular-route.js | 297 ++- www/cdvah/js/libs/angular.js | 4031 ++++++++++++++++++++----------- 2 files changed, 2750 insertions(+), 1578 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cordova-app-harness/blob/9c3b3ee1/www/cdvah/js/libs/angular-route.js ---------------------------------------------------------------------- diff --git a/www/cdvah/js/libs/angular-route.js b/www/cdvah/js/libs/angular-route.js index d0c4cd5..532d1e7 100644 --- a/www/cdvah/js/libs/angular-route.js +++ b/www/cdvah/js/libs/angular-route.js @@ -1,34 +1,27 @@ /** - * @license AngularJS v1.2.0rc1 - * (c) 2010-2012 Google, Inc. http://angularjs.org + * @license AngularJS v1.2.3 + * (c) 2010-2014 Google, Inc. http://angularjs.org * License: MIT */ (function(window, angular, undefined) {'use strict'; -var copy = angular.copy, - equals = angular.equals, - extend = angular.extend, - forEach = angular.forEach, - isDefined = angular.isDefined, - isFunction = angular.isFunction, - isString = angular.isString, - jqLite = angular.element, - noop = angular.noop, - toJson = angular.toJson; - - -function inherit(parent, extra) { - return extend(new (extend(function() {}, {prototype:parent}))(), extra); -} - /** * @ngdoc overview * @name ngRoute * @description * - * Module that provides routing and deeplinking services and directives for angular apps. + * # ngRoute + * + * The `ngRoute` module provides routing and deeplinking services and directives for angular apps. + * + * ## Example + * See {@link ngRoute.$route#example $route} for an example of configuring and using `ngRoute`. + * + * {@installModule route} + * + *
*/ - + /* global -ngRouteModule */ var ngRouteModule = angular.module('ngRoute', ['ng']). provider('$route', $RouteProvider); @@ -39,9 +32,19 @@ var ngRouteModule = angular.module('ngRoute', ['ng']). * * @description * - * Used for configuring routes. See {@link ngRoute.$route $route} for an example. + * Used for configuring routes. + * + * ## Example + * See {@link ngRoute.$route#example $route} for an example of configuring and using `ngRoute`. + * + * ## Dependencies + * Requires the {@link ngRoute `ngRoute`} module to be installed. */ function $RouteProvider(){ + function inherit(parent, extra) { + return angular.extend(new (angular.extend(function() {}, {prototype:parent}))(), extra); + } + var routes = {}; /** @@ -57,8 +60,8 @@ function $RouteProvider(){ * * `path` can contain named groups starting with a colon (`:name`). All characters up * to the next slash are matched and stored in `$routeParams` under the given `name` * when the route matches. - * * `path` can contain named groups starting with a colon and ending with a star (`:name*`). - * All characters are eagerly stored in `$routeParams` under the given `name` + * * `path` can contain named groups starting with a colon and ending with a star (`:name*`). + * All characters are eagerly stored in `$routeParams` under the given `name` * when the route matches. * * `path` can contain optional named groups with a question mark (`:name?`). * @@ -74,9 +77,9 @@ function $RouteProvider(){ * * Object properties: * - * - `controller` – `{(string|function()=}` – Controller fn that should be associated with newly - * created scope or the name of a {@link angular.Module#controller registered controller} - * if passed as a string. + * - `controller` – `{(string|function()=}` – Controller fn that should be associated with + * newly created scope or the name of a {@link angular.Module#controller registered + * controller} if passed as a string. * - `controllerAs` – `{string=}` – A controller alias name. If present the controller will be * published to scope under the `controllerAs` name. * - `template` – `{string=|function()=}` – html template as a string or a function that @@ -98,17 +101,22 @@ function $RouteProvider(){ * `$location.path()` by applying the current route * * - `resolve` - `{Object.=}` - An optional map of dependencies which should - * be injected into the controller. If any of these dependencies are promises, they will be - * resolved and converted to a value before the controller is instantiated and the - * `$routeChangeSuccess` event is fired. The map object is: + * be injected into the controller. If any of these dependencies are promises, the router + * will wait for them all to be resolved or one to be rejected before the controller is + * instantiated. + * If all the promises are resolved successfully, the values of the resolved promises are + * injected and {@link ngRoute.$route#$routeChangeSuccess $routeChangeSuccess} event is + * fired. If any of the promises are rejected the + * {@link ngRoute.$route#$routeChangeError $routeChangeError} event is fired. The map object + * is: * * - `key` – `{string}`: a name of a dependency to be injected into the controller. * - `factory` - `{string|function}`: If `string` then it is an alias for a service. * Otherwise if function, then it is {@link api/AUTO.$injector#invoke injected} - * and the return value is treated as the dependency. If the result is a promise, it is resolved - * before its value is injected into the controller. Be aware that `ngRoute.$routeParams` will - * still refer to the previous route within these resolve functions. Use `$route.current.params` - * to access the new route parameters, instead. + * and the return value is treated as the dependency. If the result is a promise, it is + * resolved before its value is injected into the controller. Be aware that + * `ngRoute.$routeParams` will still refer to the previous route within these resolve + * functions. Use `$route.current.params` to access the new route parameters, instead. * * - `redirectTo` – {(string|function())=} – value to update * {@link ng.$location $location} path with and trigger route redirection. @@ -123,8 +131,8 @@ function $RouteProvider(){ * The custom `redirectTo` function is expected to return a string which will be used * to update `$location.path()` and `$location.search()`. * - * - `[reloadOnSearch=true]` - {boolean=} - reload route when only $location.search() - * changes. + * - `[reloadOnSearch=true]` - {boolean=} - reload route when only `$location.search()` + * or `$location.hash()` changes. * * If the option is set to `false` and url in the browser changes, then * `$routeUpdate` event is broadcasted on the root scope. @@ -140,7 +148,7 @@ function $RouteProvider(){ * Adds a new route definition to the `$route` service. */ this.when = function(path, route) { - routes[path] = extend( + routes[path] = angular.extend( {reloadOnSearch: true}, route, path && pathRegExp(path, route) @@ -149,10 +157,10 @@ function $RouteProvider(){ // create redirection for trailing slashes if (path) { var redirectPath = (path[path.length-1] == '/') - ? path.substr(0, path.length-1) - : path +'/'; + ? path.substr(0, path.length-1) + : path +'/'; - routes[redirectPath] = extend( + routes[redirectPath] = angular.extend( {redirectTo: path}, pathRegExp(redirectPath, route) ); @@ -191,7 +199,9 @@ function $RouteProvider(){ + (optional ? '' : slash) + '(?:' + (optional ? slash : '') - + (star && '(.+)?' || '([^/]+)?') + ')' + + (star && '(.+?)' || '([^/]+)') + + (optional || '') + + ')' + (optional || ''); }) .replace(/([\/$\*])/g, '\\$1'); @@ -218,8 +228,15 @@ function $RouteProvider(){ }; - this.$get = ['$rootScope', '$location', '$routeParams', '$q', '$injector', '$http', '$templateCache', '$sce', - function( $rootScope, $location, $routeParams, $q, $injector, $http, $templateCache, $sce) { + this.$get = ['$rootScope', + '$location', + '$routeParams', + '$q', + '$injector', + '$http', + '$templateCache', + '$sce', + function($rootScope, $location, $routeParams, $q, $injector, $http, $templateCache, $sce) { /** * @ngdoc object @@ -241,13 +258,16 @@ function $RouteProvider(){ * @property {Array.} routes Array of all configured routes. * * @description - * Is used for deep-linking URLs to controllers and views (HTML partials). + * `$route` is used for deep-linking URLs to controllers and views (HTML partials). * It watches `$location.url()` and tries to map the path to an existing route definition. * + * Requires the {@link ngRoute `ngRoute`} module to be installed. + * * You can define routes through {@link ngRoute.$routeProvider $routeProvider}'s API. * - * The `$route` service is typically used in conjunction with {@link ngRoute.directive:ngView ngView} - * directive and the {@link ngRoute.$routeParams $routeParams} service. + * The `$route` service is typically used in conjunction with the + * {@link ngRoute.directive:ngView `ngView`} directive and the + * {@link ngRoute.$routeParams `$routeParams`} service. * * @example This example shows how changing the URL hash causes the `$route` to match a route against the @@ -256,7 +276,7 @@ function $RouteProvider(){ Note that this example is using {@link ng.directive:script inlined templates} to get it working on jsfiddle as well. - +
Choose: @@ -289,7 +309,9 @@ function $RouteProvider(){ - angular.module('ngView', ['ngRoute']).config(function($routeProvider, $locationProvider) { + angular.module('ngViewExample', ['ngRoute']) + + .config(function($routeProvider, $locationProvider) { $routeProvider.when('/Book/:bookId', { templateUrl: 'book.html', controller: BookCntl, @@ -358,6 +380,7 @@ function $RouteProvider(){ * defined in `resolve` route property. Once all of the dependencies are resolved * `$routeChangeSuccess` is fired. * + * @param {Object} angularEvent Synthetic event object. * @param {Route} next Future route information. * @param {Route} current Current route information. */ @@ -374,7 +397,8 @@ function $RouteProvider(){ * * @param {Object} angularEvent Synthetic event object. * @param {Route} current Current route information. - * @param {Route|Undefined} previous Previous route information, or undefined if current is first route entered. + * @param {Route|Undefined} previous Previous route information, or undefined if current is + * first route entered. */ /** @@ -385,6 +409,7 @@ function $RouteProvider(){ * @description * Broadcasted if any of the resolve promises are rejected. * + * @param {Object} angularEvent Synthetic event object * @param {Route} current Current route information. * @param {Route} previous Previous route information. * @param {Route} rejection Rejection of the promise. Usually the error of the failed promise. @@ -449,13 +474,12 @@ function $RouteProvider(){ var m = route.regexp.exec(on); if (!m) return null; - var N = 0; for (var i = 1, len = m.length; i < len; ++i) { var key = keys[i - 1]; var val = 'string' == typeof m[i] - ? decodeURIComponent(m[i]) - : m[i]; + ? decodeURIComponent(m[i]) + : m[i]; if (key && val) { params[key.name] = val; @@ -469,9 +493,10 @@ function $RouteProvider(){ last = $route.current; if (next && last && next.$$route === last.$$route - && equals(next.pathParams, last.pathParams) && !next.reloadOnSearch && !forceReload) { + && angular.equals(next.pathParams, last.pathParams) + && !next.reloadOnSearch && !forceReload) { last.params = next.params; - copy(last.params, $routeParams); + angular.copy(last.params, $routeParams); $rootScope.$broadcast('$routeUpdate', last); } else if (next || last) { forceReload = false; @@ -479,7 +504,7 @@ function $RouteProvider(){ $route.current = next; if (next) { if (next.redirectTo) { - if (isString(next.redirectTo)) { + if (angular.isString(next.redirectTo)) { $location.path(interpolate(next.redirectTo, next.params)).search(next.params) .replace(); } else { @@ -492,29 +517,30 @@ function $RouteProvider(){ $q.when(next). then(function() { if (next) { - var locals = extend({}, next.resolve), + var locals = angular.extend({}, next.resolve), template, templateUrl; - forEach(locals, function(value, key) { - locals[key] = isString(value) ? $injector.get(value) : $injector.invoke(value); + angular.forEach(locals, function(value, key) { + locals[key] = angular.isString(value) ? + $injector.get(value) : $injector.invoke(value); }); - if (isDefined(template = next.template)) { - if (isFunction(template)) { + if (angular.isDefined(template = next.template)) { + if (angular.isFunction(template)) { template = template(next.params); } - } else if (isDefined(templateUrl = next.templateUrl)) { - if (isFunction(templateUrl)) { + } else if (angular.isDefined(templateUrl = next.templateUrl)) { + if (angular.isFunction(templateUrl)) { templateUrl = templateUrl(next.params); } templateUrl = $sce.getTrustedResourceUrl(templateUrl); - if (isDefined(templateUrl)) { + if (angular.isDefined(templateUrl)) { next.loadedTemplateUrl = templateUrl; template = $http.get(templateUrl, {cache: $templateCache}). then(function(response) { return response.data; }); } } - if (isDefined(template)) { + if (angular.isDefined(template)) { locals['$template'] = template; } return $q.all(locals); @@ -525,7 +551,7 @@ function $RouteProvider(){ if (next == $route.current) { if (next) { next.locals = locals; - copy(next.params, $routeParams); + angular.copy(next.params, $routeParams); } $rootScope.$broadcast('$routeChangeSuccess', next, last); } @@ -544,10 +570,10 @@ function $RouteProvider(){ function parseRoute() { // Match a route var params, match; - forEach(routes, function(route, path) { + angular.forEach(routes, function(route, path) { if (!match && (params = switchRouteMatcher($location.path(), route))) { match = inherit(route, { - params: extend({}, $location.search(), params), + params: angular.extend({}, $location.search(), params), pathParams: params}); match.$$route = route; } @@ -561,8 +587,8 @@ function $RouteProvider(){ */ function interpolate(string, params) { var result = []; - forEach((string||'').split(':'), function(segment, i) { - if (i == 0) { + angular.forEach((string||'').split(':'), function(segment, i) { + if (i === 0) { result.push(segment); } else { var segmentMatch = segment.match(/(\w+)(.*)/); @@ -586,9 +612,13 @@ ngRouteModule.provider('$routeParams', $RouteParamsProvider); * @requires $route * * @description - * Current set of route parameters. The route parameters are a combination of the - * {@link ng.$location $location} `search()`, and `path()`. The `path` parameters - * are extracted when the {@link ngRoute.$route $route} path is matched. + * The `$routeParams` service allows you to retrieve the current set of route parameters. + * + * Requires the {@link ngRoute `ngRoute`} module to be installed. + * + * The route parameters are a combination of {@link ng.$location `$location`}'s + * {@link ng.$location#methods_search `search()`} and {@link ng.$location#methods_path `path()`}. + * The `path` parameters are extracted when the {@link ngRoute.$route `$route`} path is matched. * * In case of parameter name collision, `path` params take precedence over `search` params. * @@ -613,6 +643,8 @@ function $RouteParamsProvider() { this.$get = function() { return {}; }; } +ngRouteModule.directive('ngView', ngViewFactory); + /** * @ngdoc directive * @name ngRoute.directive:ngView @@ -625,6 +657,8 @@ function $RouteParamsProvider() { * Every time the current route changes, the included view changes with it according to the * configuration of the `$route` service. * + * Requires the {@link ngRoute `ngRoute`} module to be installed. + * * @animations * enter - animation is used to bring new content into the browser. * leave - animation is used to animate existing content away. @@ -632,6 +666,7 @@ function $RouteParamsProvider() { * The enter and leave animation occur concurrently. * * @scope + * @priority 400 * @example @@ -643,8 +678,8 @@ function $RouteParamsProvider() { Gatsby: Ch4 | Scarlet Letter
-
-
+
+

@@ -672,7 +707,9 @@ function $RouteParamsProvider() { - .example-animate-container { + .view-animate-container { + position:relative; + height:100px!important; position:relative; background:white; border:1px solid black; @@ -680,14 +717,12 @@ function $RouteParamsProvider() { overflow:hidden; } - .example-animate-container > div { + .view-animate { padding:10px; } - .view-example.ng-enter, .view-example.ng-leave { + .view-animate.ng-enter, .view-animate.ng-leave { -webkit-transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 1.5s; - -moz-transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 1.5s; - -o-transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 1.5s; transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 1.5s; display:block; @@ -702,39 +737,33 @@ function $RouteParamsProvider() { padding:10px; } - .example-animate-container { - position:relative; - height:100px; - } - - .view-example.ng-enter { + .view-animate.ng-enter { left:100%; } - .view-example.ng-enter.ng-enter-active { + .view-animate.ng-enter.ng-enter-active { left:0; } - - .view-example.ng-leave { } - .view-example.ng-leave.ng-leave-active { + .view-animate.ng-leave.ng-leave-active { left:-100%; } - angular.module('ngViewExample', ['ngRoute', 'ngAnimate'], function($routeProvider, $locationProvider) { - $routeProvider.when('/Book/:bookId', { - templateUrl: 'book.html', - controller: BookCntl, - controllerAs: 'book' - }); - $routeProvider.when('/Book/:bookId/ch/:chapterId', { - templateUrl: 'chapter.html', - controller: ChapterCntl, - controllerAs: 'chapter' - }); - - // configure html5 to get links working on jsfiddle - $locationProvider.html5Mode(true); + angular.module('ngViewExample', ['ngRoute', 'ngAnimate'], + function($routeProvider, $locationProvider) { + $routeProvider.when('/Book/:bookId', { + templateUrl: 'book.html', + controller: BookCntl, + controllerAs: 'book' + }); + $routeProvider.when('/Book/:bookId/ch/:chapterId', { + templateUrl: 'chapter.html', + controller: ChapterCntl, + controllerAs: 'chapter' + }); + + // configure html5 to get links working on jsfiddle + $locationProvider.html5Mode(true); }); function MainCntl($route, $routeParams, $location) { @@ -780,22 +809,18 @@ function $RouteParamsProvider() { * @description * Emitted every time the ngView content is reloaded. */ -var NG_VIEW_PRIORITY = 500; -var ngViewDirective = ['$route', '$anchorScroll', '$compile', '$controller', '$animate', - function($route, $anchorScroll, $compile, $controller, $animate) { +ngViewFactory.$inject = ['$route', '$anchorScroll', '$compile', '$controller', '$animate']; +function ngViewFactory( $route, $anchorScroll, $compile, $controller, $animate) { return { restrict: 'ECA', terminal: true, - priority: NG_VIEW_PRIORITY, - compile: function(element, attr) { - var onloadExp = attr.onload || ''; - - element.html(''); - var anchor = jqLite(document.createComment(' ngView ')); - element.replaceWith(anchor); - - return function(scope) { - var currentScope, currentElement; + priority: 400, + transclude: 'element', + link: function(scope, $element, attr, ctrl, $transclude) { + var currentScope, + currentElement, + autoScrollExp = attr.autoscroll, + onloadExp = attr.onload || ''; scope.$on('$routeChangeSuccess', update); update(); @@ -816,45 +841,51 @@ var ngViewDirective = ['$route', '$anchorScroll', '$compile', '$controller', '$a template = locals && locals.$template; if (template) { - cleanupLastView(); + var newScope = scope.$new(); + + // Note: This will also link all children of ng-view that were contained in the original + // html. If that content contains controllers, ... they could pollute/change the scope. + // However, using ng-view on an element with additional content does not make sense... + // Note: We can't remove them in the cloneAttchFn of $transclude as that + // function is called before linking the content, which would apply child + // directives to non existing elements. + var clone = $transclude(newScope, angular.noop); + clone.html(template); + $animate.enter(clone, null, currentElement || $element, function onNgViewEnter () { + if (angular.isDefined(autoScrollExp) + && (!autoScrollExp || scope.$eval(autoScrollExp))) { + $anchorScroll(); + } + }); - currentScope = scope.$new(); - currentElement = element.clone(); - currentElement.html(template); - $animate.enter(currentElement, null, anchor); + cleanupLastView(); - var link = $compile(currentElement, false, NG_VIEW_PRIORITY - 1), + var link = $compile(clone.contents()), current = $route.current; + currentScope = current.scope = newScope; + currentElement = clone; + if (current.controller) { locals.$scope = currentScope; var controller = $controller(current.controller, locals); if (current.controllerAs) { currentScope[current.controllerAs] = controller; } - currentElement.data('$ngControllerController', controller); - currentElement.children().data('$ngControllerController', controller); + clone.data('$ngControllerController', controller); + clone.children().data('$ngControllerController', controller); } - current.scope = currentScope; - link(currentScope); - currentScope.$emit('$viewContentLoaded'); currentScope.$eval(onloadExp); - - // $anchorScroll might listen on event... - $anchorScroll(); } else { cleanupLastView(); } } - } } }; -}]; - -ngRouteModule.directive('ngView', ngViewDirective); +} })(window, window.angular);