angularjs-rails 1.3.9 → 1.3.10

Sign up to get free protection for your applications and to get access to all the features.
Files changed (27) hide show
  1. checksums.yaml +4 -4
  2. data/lib/angularjs-rails/version.rb +2 -2
  3. data/vendor/assets/javascripts/angular-animate.js +2 -2
  4. data/vendor/assets/javascripts/angular-aria.js +1 -1
  5. data/vendor/assets/javascripts/angular-cookies.js +1 -1
  6. data/vendor/assets/javascripts/angular-loader.js +2 -2
  7. data/vendor/assets/javascripts/angular-messages.js +2 -2
  8. data/vendor/assets/javascripts/angular-mocks.js +1 -1
  9. data/vendor/assets/javascripts/angular-resource.js +1 -1
  10. data/vendor/assets/javascripts/angular-route.js +1 -1
  11. data/vendor/assets/javascripts/angular-sanitize.js +1 -1
  12. data/vendor/assets/javascripts/angular-scenario.js +69 -37
  13. data/vendor/assets/javascripts/angular-touch.js +1 -1
  14. data/vendor/assets/javascripts/angular.js +69 -37
  15. data/vendor/assets/javascripts/unstable/angular-animate.js +2 -2
  16. data/vendor/assets/javascripts/unstable/angular-aria.js +1 -1
  17. data/vendor/assets/javascripts/unstable/angular-cookies.js +1 -1
  18. data/vendor/assets/javascripts/unstable/angular-loader.js +2 -2
  19. data/vendor/assets/javascripts/unstable/angular-messages.js +2 -2
  20. data/vendor/assets/javascripts/unstable/angular-mocks.js +1 -1
  21. data/vendor/assets/javascripts/unstable/angular-resource.js +1 -1
  22. data/vendor/assets/javascripts/unstable/angular-route.js +1 -1
  23. data/vendor/assets/javascripts/unstable/angular-sanitize.js +1 -1
  24. data/vendor/assets/javascripts/unstable/angular-scenario.js +69 -37
  25. data/vendor/assets/javascripts/unstable/angular-touch.js +1 -1
  26. data/vendor/assets/javascripts/unstable/angular.js +69 -37
  27. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 05f8f0b0cff989012a66f467a4ba91c17d7fbd79
4
- data.tar.gz: 18f0e5d4335c0d4ef0beeb57fac047d93c798aea
3
+ metadata.gz: 5a121dbbf6f1ca3f7e7398f18c2dc67475ef4747
4
+ data.tar.gz: 4156411033215270bb5a45f65efd6b5e92cc3ae3
5
5
  SHA512:
6
- metadata.gz: 10bb41b16d31def6e4864f8bedf7298a55422e3d67a64697fcaf9279d66073348c1e72e17bfc29c95af85e8352bd294abcda7ac8af7b7e9316303156797c0748
7
- data.tar.gz: b4a73b0b17b0e6dd54519f83cfb89cc4b6c8b12cd000af4895f4e9f8c50e8ef4571384f6b92e25f63c15b361123dc23465676a53611c65cbed9b193631a81d68
6
+ metadata.gz: b1d0ecd81cd37e143a25d9a1dbfff375a89b4e0eede79dcfecf37bc0539a685d97d125bdfb647046d0211ca1c509fdd7abb52f3399f7594945b14c9b8549d167
7
+ data.tar.gz: 27032be69e3320d65b331e8e93a265201d1b81060a4648919d620eb9d862fa5ede2fd1d3dffabd3e6c1d9b7883794a49cdd57ad731dd28cd28683df58306f7f9
@@ -1,6 +1,6 @@
1
1
  module AngularJS
2
2
  module Rails
3
- VERSION = "1.3.9"
4
- UNSTABLE_VERSION = "1.3.9"
3
+ VERSION = "1.3.10"
4
+ UNSTABLE_VERSION = "1.3.10"
5
5
  end
6
6
  end
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license AngularJS v1.3.9
2
+ * @license AngularJS v1.3.10
3
3
  * (c) 2010-2014 Google, Inc. http://angularjs.org
4
4
  * License: MIT
5
5
  */
@@ -1875,7 +1875,7 @@ angular.module('ngAnimate', ['ng'])
1875
1875
  return;
1876
1876
  }
1877
1877
 
1878
- if (!staggerTime && styles) {
1878
+ if (!staggerTime && styles && Object.keys(styles).length > 0) {
1879
1879
  if (!timings.transitionDuration) {
1880
1880
  element.css('transition', timings.animationDuration + 's linear all');
1881
1881
  appliedStyles.push('transition');
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license AngularJS v1.3.9
2
+ * @license AngularJS v1.3.10
3
3
  * (c) 2010-2014 Google, Inc. http://angularjs.org
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license AngularJS v1.3.9
2
+ * @license AngularJS v1.3.10
3
3
  * (c) 2010-2014 Google, Inc. http://angularjs.org
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license AngularJS v1.3.9
2
+ * @license AngularJS v1.3.10
3
3
  * (c) 2010-2014 Google, Inc. http://angularjs.org
4
4
  * License: MIT
5
5
  */
@@ -55,7 +55,7 @@ function minErr(module, ErrorConstructor) {
55
55
  return match;
56
56
  });
57
57
 
58
- message = message + '\nhttp://errors.angularjs.org/1.3.9/' +
58
+ message = message + '\nhttp://errors.angularjs.org/1.3.10/' +
59
59
  (module ? module + '/' : '') + code;
60
60
  for (i = 2; i < arguments.length; i++) {
61
61
  message = message + (i == 2 ? '?' : '&') + 'p' + (i - 2) + '=' +
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license AngularJS v1.3.9
2
+ * @license AngularJS v1.3.10
3
3
  * (c) 2010-2014 Google, Inc. http://angularjs.org
4
4
  * License: MIT
5
5
  */
@@ -178,7 +178,7 @@ angular.module('ngMessages', [])
178
178
  * at a time and this depends on the prioritization of the messages within the template. (This can
179
179
  * be changed by using the ng-messages-multiple on the directive container.)
180
180
  *
181
- * A remote template can also be used to promote message reuseability and messages can also be
181
+ * A remote template can also be used to promote message reusability and messages can also be
182
182
  * overridden.
183
183
  *
184
184
  * {@link module:ngMessages Click here} to learn more about `ngMessages` and `ngMessage`.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license AngularJS v1.3.9
2
+ * @license AngularJS v1.3.10
3
3
  * (c) 2010-2014 Google, Inc. http://angularjs.org
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license AngularJS v1.3.9
2
+ * @license AngularJS v1.3.10
3
3
  * (c) 2010-2014 Google, Inc. http://angularjs.org
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license AngularJS v1.3.9
2
+ * @license AngularJS v1.3.10
3
3
  * (c) 2010-2014 Google, Inc. http://angularjs.org
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license AngularJS v1.3.9
2
+ * @license AngularJS v1.3.10
3
3
  * (c) 2010-2014 Google, Inc. http://angularjs.org
4
4
  * License: MIT
5
5
  */
@@ -9190,7 +9190,7 @@ return jQuery;
9190
9190
  }));
9191
9191
 
9192
9192
  /**
9193
- * @license AngularJS v1.3.9
9193
+ * @license AngularJS v1.3.10
9194
9194
  * (c) 2010-2014 Google, Inc. http://angularjs.org
9195
9195
  * License: MIT
9196
9196
  */
@@ -9246,7 +9246,7 @@ function minErr(module, ErrorConstructor) {
9246
9246
  return match;
9247
9247
  });
9248
9248
 
9249
- message = message + '\nhttp://errors.angularjs.org/1.3.9/' +
9249
+ message = message + '\nhttp://errors.angularjs.org/1.3.10/' +
9250
9250
  (module ? module + '/' : '') + code;
9251
9251
  for (i = 2; i < arguments.length; i++) {
9252
9252
  message = message + (i == 2 ? '?' : '&') + 'p' + (i - 2) + '=' +
@@ -10594,7 +10594,7 @@ function angularInit(element, bootstrap) {
10594
10594
  * @param {DOMElement} element DOM element which is the root of angular application.
10595
10595
  * @param {Array<String|Function|Array>=} modules an array of modules to load into the application.
10596
10596
  * Each item in the array should be the name of a predefined module or a (DI annotated)
10597
- * function that will be invoked by the injector as a run block.
10597
+ * function that will be invoked by the injector as a `config` block.
10598
10598
  * See: {@link angular.module modules}
10599
10599
  * @param {Object=} config an object for defining configuration options for the application. The
10600
10600
  * following keys are supported:
@@ -11310,11 +11310,11 @@ function toDebugString(obj) {
11310
11310
  * - `codeName` – `{string}` – Code name of the release, such as "jiggling-armfat".
11311
11311
  */
11312
11312
  var version = {
11313
- full: '1.3.9', // all of these placeholder strings will be replaced by grunt's
11313
+ full: '1.3.10', // all of these placeholder strings will be replaced by grunt's
11314
11314
  major: 1, // package task
11315
11315
  minor: 3,
11316
- dot: 9,
11317
- codeName: 'multidimensional-awareness'
11316
+ dot: 10,
11317
+ codeName: 'heliotropic-sundial'
11318
11318
  };
11319
11319
 
11320
11320
 
@@ -13378,7 +13378,7 @@ function createInjector(modulesToLoad, strictDi) {
13378
13378
  // Check if Type is annotated and use just the given function at n-1 as parameter
13379
13379
  // e.g. someModule.factory('greeter', ['$window', function(renamed$window) {}]);
13380
13380
  // Object creation: http://jsperf.com/create-constructor/2
13381
- var instance = Object.create((isArray(Type) ? Type[Type.length - 1] : Type).prototype);
13381
+ var instance = Object.create((isArray(Type) ? Type[Type.length - 1] : Type).prototype || null);
13382
13382
  var returnedValue = invoke(Type, instance, locals, serviceName);
13383
13383
 
13384
13384
  return isObject(returnedValue) || isFunction(returnedValue) ? returnedValue : instance;
@@ -16357,6 +16357,10 @@ function $CompileProvider($provide, $$sanitizeUriProvider) {
16357
16357
 
16358
16358
  // use class as directive
16359
16359
  className = node.className;
16360
+ if (isObject(className)) {
16361
+ // Maybe SVGAnimatedString
16362
+ className = className.animVal;
16363
+ }
16360
16364
  if (isString(className) && className !== '') {
16361
16365
  while (match = CLASS_DIRECTIVE_REGEXP.exec(className)) {
16362
16366
  nName = directiveNormalize(match[2]);
@@ -17623,7 +17627,7 @@ function $ControllerProvider() {
17623
17627
  // Object creation: http://jsperf.com/create-constructor/2
17624
17628
  var controllerPrototype = (isArray(expression) ?
17625
17629
  expression[expression.length - 1] : expression).prototype;
17626
- instance = Object.create(controllerPrototype);
17630
+ instance = Object.create(controllerPrototype || null);
17627
17631
 
17628
17632
  if (identifier) {
17629
17633
  addIdentifier(locals, identifier, instance, constructor || expression.name);
@@ -23692,7 +23696,7 @@ function $RootScopeProvider() {
23692
23696
  * @kind function
23693
23697
  *
23694
23698
  * @description
23695
- * Schedule the invokation of $apply to occur at a later time. The actual time difference
23699
+ * Schedule the invocation of $apply to occur at a later time. The actual time difference
23696
23700
  * varies across browsers, but is typically around ~10 milliseconds.
23697
23701
  *
23698
23702
  * This can be used to queue up multiple expressions which need to be evaluated in the same
@@ -25202,8 +25206,7 @@ var $compileMinErr = minErr('$compile');
25202
25206
  function $TemplateRequestProvider() {
25203
25207
  this.$get = ['$templateCache', '$http', '$q', function($templateCache, $http, $q) {
25204
25208
  function handleRequestFn(tpl, ignoreRequestError) {
25205
- var self = handleRequestFn;
25206
- self.totalPendingRequests++;
25209
+ handleRequestFn.totalPendingRequests++;
25207
25210
 
25208
25211
  var transformResponse = $http.defaults && $http.defaults.transformResponse;
25209
25212
 
@@ -25221,13 +25224,14 @@ function $TemplateRequestProvider() {
25221
25224
  };
25222
25225
 
25223
25226
  return $http.get(tpl, httpOptions)
25227
+ .finally(function() {
25228
+ handleRequestFn.totalPendingRequests--;
25229
+ })
25224
25230
  .then(function(response) {
25225
- self.totalPendingRequests--;
25226
25231
  return response.data;
25227
25232
  }, handleError);
25228
25233
 
25229
25234
  function handleError(resp) {
25230
- self.totalPendingRequests--;
25231
25235
  if (!ignoreRequestError) {
25232
25236
  throw $compileMinErr('tpload', 'Failed to load template: {0}', tpl);
25233
25237
  }
@@ -26317,7 +26321,7 @@ var DATE_FORMATS_SPLIT = /((?:[^yMdHhmsaZEw']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|d
26317
26321
  * * `'m'`: Minute in hour (0-59)
26318
26322
  * * `'ss'`: Second in minute, padded (00-59)
26319
26323
  * * `'s'`: Second in minute (0-59)
26320
- * * `'.sss' or ',sss'`: Millisecond in second, padded (000-999)
26324
+ * * `'sss'`: Millisecond in second, padded (000-999)
26321
26325
  * * `'a'`: AM/PM marker
26322
26326
  * * `'Z'`: 4 digit (+sign) representation of the timezone offset (-1200-+1200)
26323
26327
  * * `'ww'`: Week of year, padded (00-53). Week 01 is the week with the first Thursday of the year
@@ -27453,6 +27457,9 @@ function FormController(element, attrs, $scope, $animate, $interpolate) {
27453
27457
  forEach(form.$error, function(value, name) {
27454
27458
  form.$setValidity(name, null, control);
27455
27459
  });
27460
+ forEach(form.$$success, function(value, name) {
27461
+ form.$setValidity(name, null, control);
27462
+ });
27456
27463
 
27457
27464
  arrayRemove(controls, control);
27458
27465
  };
@@ -27470,23 +27477,23 @@ function FormController(element, attrs, $scope, $animate, $interpolate) {
27470
27477
  addSetValidityMethod({
27471
27478
  ctrl: this,
27472
27479
  $element: element,
27473
- set: function(object, property, control) {
27480
+ set: function(object, property, controller) {
27474
27481
  var list = object[property];
27475
27482
  if (!list) {
27476
- object[property] = [control];
27483
+ object[property] = [controller];
27477
27484
  } else {
27478
- var index = list.indexOf(control);
27485
+ var index = list.indexOf(controller);
27479
27486
  if (index === -1) {
27480
- list.push(control);
27487
+ list.push(controller);
27481
27488
  }
27482
27489
  }
27483
27490
  },
27484
- unset: function(object, property, control) {
27491
+ unset: function(object, property, controller) {
27485
27492
  var list = object[property];
27486
27493
  if (!list) {
27487
27494
  return;
27488
27495
  }
27489
- arrayRemove(list, control);
27496
+ arrayRemove(list, controller);
27490
27497
  if (list.length === 0) {
27491
27498
  delete object[property];
27492
27499
  }
@@ -29831,8 +29838,9 @@ function classDirective(name, selector) {
29831
29838
  * new classes are added.
29832
29839
  *
29833
29840
  * @animations
29834
- * add - happens just before the class is applied to the element
29835
- * remove - happens just before the class is removed from the element
29841
+ * **add** - happens just before the class is applied to the elements
29842
+ *
29843
+ * **remove** - happens just before the class is removed from the element
29836
29844
  *
29837
29845
  * @element ANY
29838
29846
  * @param {expression} ngClass {@link guide/expression Expression} to eval. The result
@@ -31298,7 +31306,7 @@ var ngIfDirective = ['$animate', function($animate) {
31298
31306
  * @name ngInclude#$includeContentError
31299
31307
  * @eventType emit on the scope ngInclude was declared in
31300
31308
  * @description
31301
- * Emitted when a template HTTP request yields an erronous response (status < 200 || status > 299)
31309
+ * Emitted when a template HTTP request yields an erroneous response (status < 200 || status > 299)
31302
31310
  *
31303
31311
  * @param {Object} angularEvent Synthetic event object.
31304
31312
  * @param {String} src URL of content to load.
@@ -32855,22 +32863,22 @@ function addSetValidityMethod(context) {
32855
32863
 
32856
32864
  ctrl.$setValidity = setValidity;
32857
32865
 
32858
- function setValidity(validationErrorKey, state, options) {
32866
+ function setValidity(validationErrorKey, state, controller) {
32859
32867
  if (state === undefined) {
32860
- createAndSet('$pending', validationErrorKey, options);
32868
+ createAndSet('$pending', validationErrorKey, controller);
32861
32869
  } else {
32862
- unsetAndCleanup('$pending', validationErrorKey, options);
32870
+ unsetAndCleanup('$pending', validationErrorKey, controller);
32863
32871
  }
32864
32872
  if (!isBoolean(state)) {
32865
- unset(ctrl.$error, validationErrorKey, options);
32866
- unset(ctrl.$$success, validationErrorKey, options);
32873
+ unset(ctrl.$error, validationErrorKey, controller);
32874
+ unset(ctrl.$$success, validationErrorKey, controller);
32867
32875
  } else {
32868
32876
  if (state) {
32869
- unset(ctrl.$error, validationErrorKey, options);
32870
- set(ctrl.$$success, validationErrorKey, options);
32877
+ unset(ctrl.$error, validationErrorKey, controller);
32878
+ set(ctrl.$$success, validationErrorKey, controller);
32871
32879
  } else {
32872
- set(ctrl.$error, validationErrorKey, options);
32873
- unset(ctrl.$$success, validationErrorKey, options);
32880
+ set(ctrl.$error, validationErrorKey, controller);
32881
+ unset(ctrl.$$success, validationErrorKey, controller);
32874
32882
  }
32875
32883
  }
32876
32884
  if (ctrl.$pending) {
@@ -32898,20 +32906,21 @@ function addSetValidityMethod(context) {
32898
32906
  } else {
32899
32907
  combinedState = null;
32900
32908
  }
32909
+
32901
32910
  toggleValidationCss(validationErrorKey, combinedState);
32902
32911
  parentForm.$setValidity(validationErrorKey, combinedState, ctrl);
32903
32912
  }
32904
32913
 
32905
- function createAndSet(name, value, options) {
32914
+ function createAndSet(name, value, controller) {
32906
32915
  if (!ctrl[name]) {
32907
32916
  ctrl[name] = {};
32908
32917
  }
32909
- set(ctrl[name], value, options);
32918
+ set(ctrl[name], value, controller);
32910
32919
  }
32911
32920
 
32912
- function unsetAndCleanup(name, value, options) {
32921
+ function unsetAndCleanup(name, value, controller) {
32913
32922
  if (ctrl[name]) {
32914
- unset(ctrl[name], value, options);
32923
+ unset(ctrl[name], value, controller);
32915
32924
  }
32916
32925
  if (isObjectEmpty(ctrl[name])) {
32917
32926
  ctrl[name] = undefined;
@@ -33230,6 +33239,29 @@ var ngPluralizeDirective = ['$locale', '$interpolate', function($locale, $interp
33230
33239
  * Creating aliases for these properties is possible with {@link ng.directive:ngInit `ngInit`}.
33231
33240
  * This may be useful when, for instance, nesting ngRepeats.
33232
33241
  *
33242
+ * # Iterating over object properties
33243
+ *
33244
+ * It is possible to get `ngRepeat` to iterate over the properties of an object using the following
33245
+ * syntax:
33246
+ *
33247
+ * ```js
33248
+ * <div ng-repeat="(key, value) in myObj"> ... </div>
33249
+ * ```
33250
+ *
33251
+ * You need to be aware that the JavaScript specification does not define what order
33252
+ * it will return the keys for an object. In order to have a guaranteed deterministic order
33253
+ * for the keys, Angular versions up to and including 1.3 **sort the keys alphabetically**.
33254
+ *
33255
+ * If this is not desired, the recommended workaround is to convert your object into an array
33256
+ * that is sorted into the order that you prefer before providing it to `ngRepeat`. You could
33257
+ * do this with a filter such as [toArrayFilter](http://ngmodules.org/modules/angular-toArrayFilter)
33258
+ * or implement a `$watch` on the object yourself.
33259
+ *
33260
+ * In version 1.4 we will remove the sorting, since it seems that browsers generally follow the
33261
+ * strategy of providing keys in the order in which they were defined, although there are exceptions
33262
+ * when keys are deleted and reinstated.
33263
+ *
33264
+ *
33233
33265
  * # Special repeat start and end points
33234
33266
  * To repeat a series of elements instead of just one parent element, ngRepeat (as well as other ng directives) supports extending
33235
33267
  * the range of the repeater by defining explicit start and end points by using **ng-repeat-start** and **ng-repeat-end** respectively.
@@ -33474,7 +33506,7 @@ var ngRepeatDirective = ['$parse', '$animate', function($parse, $animate) {
33474
33506
  var keyIdentifier = match[2];
33475
33507
 
33476
33508
  if (aliasAs && (!/^[$a-zA-Z_][$a-zA-Z0-9_]*$/.test(aliasAs) ||
33477
- /^(null|undefined|this|\$index|\$first|\$middle|\$last|\$even|\$odd|\$parent)$/.test(aliasAs))) {
33509
+ /^(null|undefined|this|\$index|\$first|\$middle|\$last|\$even|\$odd|\$parent|\$root|\$id)$/.test(aliasAs))) {
33478
33510
  throw ngRepeatMinErr('badident', "alias '{0}' is invalid --- must be a valid JS identifier which is not a reserved name.",
33479
33511
  aliasAs);
33480
33512
  }
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license AngularJS v1.3.9
2
+ * @license AngularJS v1.3.10
3
3
  * (c) 2010-2014 Google, Inc. http://angularjs.org
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license AngularJS v1.3.9
2
+ * @license AngularJS v1.3.10
3
3
  * (c) 2010-2014 Google, Inc. http://angularjs.org
4
4
  * License: MIT
5
5
  */
@@ -54,7 +54,7 @@ function minErr(module, ErrorConstructor) {
54
54
  return match;
55
55
  });
56
56
 
57
- message = message + '\nhttp://errors.angularjs.org/1.3.9/' +
57
+ message = message + '\nhttp://errors.angularjs.org/1.3.10/' +
58
58
  (module ? module + '/' : '') + code;
59
59
  for (i = 2; i < arguments.length; i++) {
60
60
  message = message + (i == 2 ? '?' : '&') + 'p' + (i - 2) + '=' +
@@ -1402,7 +1402,7 @@ function angularInit(element, bootstrap) {
1402
1402
  * @param {DOMElement} element DOM element which is the root of angular application.
1403
1403
  * @param {Array<String|Function|Array>=} modules an array of modules to load into the application.
1404
1404
  * Each item in the array should be the name of a predefined module or a (DI annotated)
1405
- * function that will be invoked by the injector as a run block.
1405
+ * function that will be invoked by the injector as a `config` block.
1406
1406
  * See: {@link angular.module modules}
1407
1407
  * @param {Object=} config an object for defining configuration options for the application. The
1408
1408
  * following keys are supported:
@@ -2118,11 +2118,11 @@ function toDebugString(obj) {
2118
2118
  * - `codeName` – `{string}` – Code name of the release, such as "jiggling-armfat".
2119
2119
  */
2120
2120
  var version = {
2121
- full: '1.3.9', // all of these placeholder strings will be replaced by grunt's
2121
+ full: '1.3.10', // all of these placeholder strings will be replaced by grunt's
2122
2122
  major: 1, // package task
2123
2123
  minor: 3,
2124
- dot: 9,
2125
- codeName: 'multidimensional-awareness'
2124
+ dot: 10,
2125
+ codeName: 'heliotropic-sundial'
2126
2126
  };
2127
2127
 
2128
2128
 
@@ -4186,7 +4186,7 @@ function createInjector(modulesToLoad, strictDi) {
4186
4186
  // Check if Type is annotated and use just the given function at n-1 as parameter
4187
4187
  // e.g. someModule.factory('greeter', ['$window', function(renamed$window) {}]);
4188
4188
  // Object creation: http://jsperf.com/create-constructor/2
4189
- var instance = Object.create((isArray(Type) ? Type[Type.length - 1] : Type).prototype);
4189
+ var instance = Object.create((isArray(Type) ? Type[Type.length - 1] : Type).prototype || null);
4190
4190
  var returnedValue = invoke(Type, instance, locals, serviceName);
4191
4191
 
4192
4192
  return isObject(returnedValue) || isFunction(returnedValue) ? returnedValue : instance;
@@ -7165,6 +7165,10 @@ function $CompileProvider($provide, $$sanitizeUriProvider) {
7165
7165
 
7166
7166
  // use class as directive
7167
7167
  className = node.className;
7168
+ if (isObject(className)) {
7169
+ // Maybe SVGAnimatedString
7170
+ className = className.animVal;
7171
+ }
7168
7172
  if (isString(className) && className !== '') {
7169
7173
  while (match = CLASS_DIRECTIVE_REGEXP.exec(className)) {
7170
7174
  nName = directiveNormalize(match[2]);
@@ -8431,7 +8435,7 @@ function $ControllerProvider() {
8431
8435
  // Object creation: http://jsperf.com/create-constructor/2
8432
8436
  var controllerPrototype = (isArray(expression) ?
8433
8437
  expression[expression.length - 1] : expression).prototype;
8434
- instance = Object.create(controllerPrototype);
8438
+ instance = Object.create(controllerPrototype || null);
8435
8439
 
8436
8440
  if (identifier) {
8437
8441
  addIdentifier(locals, identifier, instance, constructor || expression.name);
@@ -14500,7 +14504,7 @@ function $RootScopeProvider() {
14500
14504
  * @kind function
14501
14505
  *
14502
14506
  * @description
14503
- * Schedule the invokation of $apply to occur at a later time. The actual time difference
14507
+ * Schedule the invocation of $apply to occur at a later time. The actual time difference
14504
14508
  * varies across browsers, but is typically around ~10 milliseconds.
14505
14509
  *
14506
14510
  * This can be used to queue up multiple expressions which need to be evaluated in the same
@@ -16010,8 +16014,7 @@ var $compileMinErr = minErr('$compile');
16010
16014
  function $TemplateRequestProvider() {
16011
16015
  this.$get = ['$templateCache', '$http', '$q', function($templateCache, $http, $q) {
16012
16016
  function handleRequestFn(tpl, ignoreRequestError) {
16013
- var self = handleRequestFn;
16014
- self.totalPendingRequests++;
16017
+ handleRequestFn.totalPendingRequests++;
16015
16018
 
16016
16019
  var transformResponse = $http.defaults && $http.defaults.transformResponse;
16017
16020
 
@@ -16029,13 +16032,14 @@ function $TemplateRequestProvider() {
16029
16032
  };
16030
16033
 
16031
16034
  return $http.get(tpl, httpOptions)
16035
+ .finally(function() {
16036
+ handleRequestFn.totalPendingRequests--;
16037
+ })
16032
16038
  .then(function(response) {
16033
- self.totalPendingRequests--;
16034
16039
  return response.data;
16035
16040
  }, handleError);
16036
16041
 
16037
16042
  function handleError(resp) {
16038
- self.totalPendingRequests--;
16039
16043
  if (!ignoreRequestError) {
16040
16044
  throw $compileMinErr('tpload', 'Failed to load template: {0}', tpl);
16041
16045
  }
@@ -17125,7 +17129,7 @@ var DATE_FORMATS_SPLIT = /((?:[^yMdHhmsaZEw']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|d
17125
17129
  * * `'m'`: Minute in hour (0-59)
17126
17130
  * * `'ss'`: Second in minute, padded (00-59)
17127
17131
  * * `'s'`: Second in minute (0-59)
17128
- * * `'.sss' or ',sss'`: Millisecond in second, padded (000-999)
17132
+ * * `'sss'`: Millisecond in second, padded (000-999)
17129
17133
  * * `'a'`: AM/PM marker
17130
17134
  * * `'Z'`: 4 digit (+sign) representation of the timezone offset (-1200-+1200)
17131
17135
  * * `'ww'`: Week of year, padded (00-53). Week 01 is the week with the first Thursday of the year
@@ -18261,6 +18265,9 @@ function FormController(element, attrs, $scope, $animate, $interpolate) {
18261
18265
  forEach(form.$error, function(value, name) {
18262
18266
  form.$setValidity(name, null, control);
18263
18267
  });
18268
+ forEach(form.$$success, function(value, name) {
18269
+ form.$setValidity(name, null, control);
18270
+ });
18264
18271
 
18265
18272
  arrayRemove(controls, control);
18266
18273
  };
@@ -18278,23 +18285,23 @@ function FormController(element, attrs, $scope, $animate, $interpolate) {
18278
18285
  addSetValidityMethod({
18279
18286
  ctrl: this,
18280
18287
  $element: element,
18281
- set: function(object, property, control) {
18288
+ set: function(object, property, controller) {
18282
18289
  var list = object[property];
18283
18290
  if (!list) {
18284
- object[property] = [control];
18291
+ object[property] = [controller];
18285
18292
  } else {
18286
- var index = list.indexOf(control);
18293
+ var index = list.indexOf(controller);
18287
18294
  if (index === -1) {
18288
- list.push(control);
18295
+ list.push(controller);
18289
18296
  }
18290
18297
  }
18291
18298
  },
18292
- unset: function(object, property, control) {
18299
+ unset: function(object, property, controller) {
18293
18300
  var list = object[property];
18294
18301
  if (!list) {
18295
18302
  return;
18296
18303
  }
18297
- arrayRemove(list, control);
18304
+ arrayRemove(list, controller);
18298
18305
  if (list.length === 0) {
18299
18306
  delete object[property];
18300
18307
  }
@@ -20639,8 +20646,9 @@ function classDirective(name, selector) {
20639
20646
  * new classes are added.
20640
20647
  *
20641
20648
  * @animations
20642
- * add - happens just before the class is applied to the element
20643
- * remove - happens just before the class is removed from the element
20649
+ * **add** - happens just before the class is applied to the elements
20650
+ *
20651
+ * **remove** - happens just before the class is removed from the element
20644
20652
  *
20645
20653
  * @element ANY
20646
20654
  * @param {expression} ngClass {@link guide/expression Expression} to eval. The result
@@ -22106,7 +22114,7 @@ var ngIfDirective = ['$animate', function($animate) {
22106
22114
  * @name ngInclude#$includeContentError
22107
22115
  * @eventType emit on the scope ngInclude was declared in
22108
22116
  * @description
22109
- * Emitted when a template HTTP request yields an erronous response (status < 200 || status > 299)
22117
+ * Emitted when a template HTTP request yields an erroneous response (status < 200 || status > 299)
22110
22118
  *
22111
22119
  * @param {Object} angularEvent Synthetic event object.
22112
22120
  * @param {String} src URL of content to load.
@@ -23663,22 +23671,22 @@ function addSetValidityMethod(context) {
23663
23671
 
23664
23672
  ctrl.$setValidity = setValidity;
23665
23673
 
23666
- function setValidity(validationErrorKey, state, options) {
23674
+ function setValidity(validationErrorKey, state, controller) {
23667
23675
  if (state === undefined) {
23668
- createAndSet('$pending', validationErrorKey, options);
23676
+ createAndSet('$pending', validationErrorKey, controller);
23669
23677
  } else {
23670
- unsetAndCleanup('$pending', validationErrorKey, options);
23678
+ unsetAndCleanup('$pending', validationErrorKey, controller);
23671
23679
  }
23672
23680
  if (!isBoolean(state)) {
23673
- unset(ctrl.$error, validationErrorKey, options);
23674
- unset(ctrl.$$success, validationErrorKey, options);
23681
+ unset(ctrl.$error, validationErrorKey, controller);
23682
+ unset(ctrl.$$success, validationErrorKey, controller);
23675
23683
  } else {
23676
23684
  if (state) {
23677
- unset(ctrl.$error, validationErrorKey, options);
23678
- set(ctrl.$$success, validationErrorKey, options);
23685
+ unset(ctrl.$error, validationErrorKey, controller);
23686
+ set(ctrl.$$success, validationErrorKey, controller);
23679
23687
  } else {
23680
- set(ctrl.$error, validationErrorKey, options);
23681
- unset(ctrl.$$success, validationErrorKey, options);
23688
+ set(ctrl.$error, validationErrorKey, controller);
23689
+ unset(ctrl.$$success, validationErrorKey, controller);
23682
23690
  }
23683
23691
  }
23684
23692
  if (ctrl.$pending) {
@@ -23706,20 +23714,21 @@ function addSetValidityMethod(context) {
23706
23714
  } else {
23707
23715
  combinedState = null;
23708
23716
  }
23717
+
23709
23718
  toggleValidationCss(validationErrorKey, combinedState);
23710
23719
  parentForm.$setValidity(validationErrorKey, combinedState, ctrl);
23711
23720
  }
23712
23721
 
23713
- function createAndSet(name, value, options) {
23722
+ function createAndSet(name, value, controller) {
23714
23723
  if (!ctrl[name]) {
23715
23724
  ctrl[name] = {};
23716
23725
  }
23717
- set(ctrl[name], value, options);
23726
+ set(ctrl[name], value, controller);
23718
23727
  }
23719
23728
 
23720
- function unsetAndCleanup(name, value, options) {
23729
+ function unsetAndCleanup(name, value, controller) {
23721
23730
  if (ctrl[name]) {
23722
- unset(ctrl[name], value, options);
23731
+ unset(ctrl[name], value, controller);
23723
23732
  }
23724
23733
  if (isObjectEmpty(ctrl[name])) {
23725
23734
  ctrl[name] = undefined;
@@ -24038,6 +24047,29 @@ var ngPluralizeDirective = ['$locale', '$interpolate', function($locale, $interp
24038
24047
  * Creating aliases for these properties is possible with {@link ng.directive:ngInit `ngInit`}.
24039
24048
  * This may be useful when, for instance, nesting ngRepeats.
24040
24049
  *
24050
+ * # Iterating over object properties
24051
+ *
24052
+ * It is possible to get `ngRepeat` to iterate over the properties of an object using the following
24053
+ * syntax:
24054
+ *
24055
+ * ```js
24056
+ * <div ng-repeat="(key, value) in myObj"> ... </div>
24057
+ * ```
24058
+ *
24059
+ * You need to be aware that the JavaScript specification does not define what order
24060
+ * it will return the keys for an object. In order to have a guaranteed deterministic order
24061
+ * for the keys, Angular versions up to and including 1.3 **sort the keys alphabetically**.
24062
+ *
24063
+ * If this is not desired, the recommended workaround is to convert your object into an array
24064
+ * that is sorted into the order that you prefer before providing it to `ngRepeat`. You could
24065
+ * do this with a filter such as [toArrayFilter](http://ngmodules.org/modules/angular-toArrayFilter)
24066
+ * or implement a `$watch` on the object yourself.
24067
+ *
24068
+ * In version 1.4 we will remove the sorting, since it seems that browsers generally follow the
24069
+ * strategy of providing keys in the order in which they were defined, although there are exceptions
24070
+ * when keys are deleted and reinstated.
24071
+ *
24072
+ *
24041
24073
  * # Special repeat start and end points
24042
24074
  * To repeat a series of elements instead of just one parent element, ngRepeat (as well as other ng directives) supports extending
24043
24075
  * the range of the repeater by defining explicit start and end points by using **ng-repeat-start** and **ng-repeat-end** respectively.
@@ -24282,7 +24314,7 @@ var ngRepeatDirective = ['$parse', '$animate', function($parse, $animate) {
24282
24314
  var keyIdentifier = match[2];
24283
24315
 
24284
24316
  if (aliasAs && (!/^[$a-zA-Z_][$a-zA-Z0-9_]*$/.test(aliasAs) ||
24285
- /^(null|undefined|this|\$index|\$first|\$middle|\$last|\$even|\$odd|\$parent)$/.test(aliasAs))) {
24317
+ /^(null|undefined|this|\$index|\$first|\$middle|\$last|\$even|\$odd|\$parent|\$root|\$id)$/.test(aliasAs))) {
24286
24318
  throw ngRepeatMinErr('badident', "alias '{0}' is invalid --- must be a valid JS identifier which is not a reserved name.",
24287
24319
  aliasAs);
24288
24320
  }