rails-angularjs 1.3.12 → 1.3.14

Sign up to get free protection for your applications and to get access to all the features.
Files changed (56) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +2 -2
  3. data/lib/rails-angularjs/version.rb +2 -2
  4. data/vendor/assets/javascripts/{angularjs/angular-animate.js → angular-animate.js} +1 -1
  5. data/vendor/assets/javascripts/{angularjs/angular-animate.min.js → angular-animate.min.js} +1 -1
  6. data/vendor/assets/javascripts/{angularjs/angular-aria.js → angular-aria.js} +16 -6
  7. data/vendor/assets/javascripts/angular-aria.min.js +12 -0
  8. data/vendor/assets/javascripts/{angularjs/angular-cookies.js → angular-cookies.js} +1 -1
  9. data/vendor/assets/javascripts/{angularjs/angular-cookies.min.js → angular-cookies.min.js} +1 -1
  10. data/vendor/assets/javascripts/{angularjs/angular-loader.js → angular-loader.js} +2 -2
  11. data/vendor/assets/javascripts/{angularjs/angular-loader.min.js → angular-loader.min.js} +2 -2
  12. data/vendor/assets/javascripts/{angularjs/angular-messages.js → angular-messages.js} +1 -1
  13. data/vendor/assets/javascripts/{angularjs/angular-messages.min.js → angular-messages.min.js} +1 -1
  14. data/vendor/assets/javascripts/{angularjs/angular-mocks.js → angular-mocks.js} +2 -2
  15. data/vendor/assets/javascripts/{angularjs/angular-resource.js → angular-resource.js} +2 -1
  16. data/vendor/assets/javascripts/{angularjs/angular-resource.min.js → angular-resource.min.js} +1 -1
  17. data/vendor/assets/javascripts/{angularjs/angular-route.js → angular-route.js} +1 -1
  18. data/vendor/assets/javascripts/{angularjs/angular-route.min.js → angular-route.min.js} +1 -1
  19. data/vendor/assets/javascripts/{angularjs/angular-sanitize.js → angular-sanitize.js} +7 -19
  20. data/vendor/assets/javascripts/angular-sanitize.min.js +16 -0
  21. data/vendor/assets/javascripts/{angularjs/angular-scenario.js → angular-scenario.js} +89 -38
  22. data/vendor/assets/javascripts/{angularjs/angular-touch.js → angular-touch.js} +1 -1
  23. data/vendor/assets/javascripts/{angularjs/angular-touch.min.js → angular-touch.min.js} +1 -1
  24. data/vendor/assets/javascripts/{angularjs/angular.js → angular.js} +89 -38
  25. data/vendor/assets/javascripts/angular.min.js +250 -0
  26. data/vendor/assets/javascripts/{angularjs/unstable → unstable}/angular-animate.js +1 -1
  27. data/vendor/assets/javascripts/{angularjs/unstable → unstable}/angular-animate.min.js +1 -1
  28. data/vendor/assets/javascripts/{angularjs/unstable → unstable}/angular-aria.js +16 -6
  29. data/vendor/assets/javascripts/unstable/angular-aria.min.js +12 -0
  30. data/vendor/assets/javascripts/{angularjs/unstable → unstable}/angular-cookies.js +1 -1
  31. data/vendor/assets/javascripts/{angularjs/unstable → unstable}/angular-cookies.min.js +1 -1
  32. data/vendor/assets/javascripts/{angularjs/unstable → unstable}/angular-loader.js +2 -2
  33. data/vendor/assets/javascripts/{angularjs/unstable → unstable}/angular-loader.min.js +2 -2
  34. data/vendor/assets/javascripts/unstable/angular-messages.js +644 -0
  35. data/vendor/assets/javascripts/unstable/angular-messages.min.js +12 -0
  36. data/vendor/assets/javascripts/{angularjs/unstable → unstable}/angular-mocks.js +2 -2
  37. data/vendor/assets/javascripts/{angularjs/unstable → unstable}/angular-resource.js +3 -2
  38. data/vendor/assets/javascripts/{angularjs/unstable → unstable}/angular-resource.min.js +1 -1
  39. data/vendor/assets/javascripts/{angularjs/unstable → unstable}/angular-route.js +1 -1
  40. data/vendor/assets/javascripts/{angularjs/unstable → unstable}/angular-route.min.js +1 -1
  41. data/vendor/assets/javascripts/{angularjs/unstable → unstable}/angular-sanitize.js +12 -22
  42. data/vendor/assets/javascripts/unstable/angular-sanitize.min.js +16 -0
  43. data/vendor/assets/javascripts/{angularjs/unstable → unstable}/angular-scenario.js +317 -155
  44. data/vendor/assets/javascripts/{angularjs/unstable → unstable}/angular-touch.js +1 -1
  45. data/vendor/assets/javascripts/{angularjs/unstable → unstable}/angular-touch.min.js +1 -1
  46. data/vendor/assets/javascripts/{angularjs/unstable → unstable}/angular.js +317 -155
  47. data/vendor/assets/javascripts/unstable/angular.min.js +282 -0
  48. metadata +46 -46
  49. data/vendor/assets/javascripts/angularjs/angular-aria.min.js +0 -12
  50. data/vendor/assets/javascripts/angularjs/angular-sanitize.min.js +0 -16
  51. data/vendor/assets/javascripts/angularjs/angular.min.js +0 -250
  52. data/vendor/assets/javascripts/angularjs/unstable/angular-aria.min.js +0 -12
  53. data/vendor/assets/javascripts/angularjs/unstable/angular-messages.js +0 -400
  54. data/vendor/assets/javascripts/angularjs/unstable/angular-messages.min.js +0 -10
  55. data/vendor/assets/javascripts/angularjs/unstable/angular-sanitize.min.js +0 -16
  56. data/vendor/assets/javascripts/angularjs/unstable/angular.min.js +0 -281
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8dd69ceafbeeb1535412c4f5fe2f1c6c3bfac9a4
4
- data.tar.gz: 28a799664f6d13ecc46150083d88abb2ccd90f17
3
+ metadata.gz: 90a69e266a797d2c64aa28343e058f1978094d92
4
+ data.tar.gz: 6cfe1c1ec8cc27bfae8290422823b778a678667f
5
5
  SHA512:
6
- metadata.gz: 783bd487f3b8002e24d110ebb27ec43f52cada19d20c96a15d00e4d64b5a63d9f1851b933e4c534b3f5b8e5aa44a2d5b92bc74d7f2f04313af05deccf0dc97a2
7
- data.tar.gz: cdc7fd053c55f60fb0fd34f5f26cd12b2224f7ea14da4417c2335d1b6596cb74f8c46029dbd2c50cb5358e28a527d56fdefbe34c70b21b042b0c4df891451ccb
6
+ metadata.gz: aa57831b261244a2f715c15bde97559f7dd52f6737902d6cf06ecd14cb89354dd1ae28ff746862f6e47a0746371847b15636146725cd5c38e909c69ad63daf2e
7
+ data.tar.gz: 749f36044b85738341e1d2710639815129719ddce2cb6ea0dabd8a03ac81a4663fa966d5539e00b536da1bf2e100ae3a5897f1b2eb32e3491d9835b0112b8dec
data/README.md CHANGED
@@ -32,6 +32,6 @@ For minified version just add .min to file name:
32
32
 
33
33
  ## Versioning
34
34
 
35
- Current AngularJS version: 1.3.12
35
+ Current AngularJS version: 1.3.14
36
36
 
37
- Current AngularJS unstable version: 1.4.0-beta3
37
+ Current AngularJS unstable version: 1.4.0-beta5
@@ -1,4 +1,4 @@
1
1
  module RailsAngularJS
2
- VERSION = "1.3.12"
3
- UNSTABLE_VERSION = "1.4.0-beta.3"
2
+ VERSION = "1.3.14"
3
+ UNSTABLE_VERSION = "1.4.0-beta.5"
4
4
  end
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license AngularJS v1.3.12
2
+ * @license AngularJS v1.3.14
3
3
  * (c) 2010-2014 Google, Inc. http://angularjs.org
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*
2
- AngularJS v1.3.12
2
+ AngularJS v1.3.14
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.12
2
+ * @license AngularJS v1.3.14
3
3
  * (c) 2010-2014 Google, Inc. http://angularjs.org
4
4
  * License: MIT
5
5
  */
@@ -105,7 +105,8 @@ function $AriaProvider() {
105
105
  * - **ariaMultiline** – `{boolean}` – Enables/disables aria-multiline tags
106
106
  * - **ariaValue** – `{boolean}` – Enables/disables aria-valuemin, aria-valuemax and aria-valuenow tags
107
107
  * - **tabindex** – `{boolean}` – Enables/disables tabindex tags
108
- * - **bindKeypress** – `{boolean}` – Enables/disables keypress event binding on ng-click
108
+ * - **bindKeypress** – `{boolean}` – Enables/disables keypress event binding on `<div>` and
109
+ * `<li>` elements with ng-click
109
110
  *
110
111
  * @description
111
112
  * Enables/disables various ARIA attributes
@@ -133,6 +134,7 @@ function $AriaProvider() {
133
134
  * @name $aria
134
135
  *
135
136
  * @description
137
+ * @priority 200
136
138
  *
137
139
  * The $aria service contains helper methods for applying common
138
140
  * [ARIA](http://www.w3.org/TR/wai-aria/) attributes to HTML directives.
@@ -209,6 +211,7 @@ ngAriaModule.directive('ngShow', ['$aria', function($aria) {
209
211
  return {
210
212
  restrict: 'A',
211
213
  require: '?ngModel',
214
+ priority: 200, //Make sure watches are fired after any other directives that affect the ngModel value
212
215
  link: function(scope, elem, attr, ngModel) {
213
216
  var shape = getShape(attr, elem);
214
217
  var needsTabIndex = shouldAttachAttr('tabindex', 'tabindex', elem);
@@ -221,19 +224,19 @@ ngAriaModule.directive('ngShow', ['$aria', function($aria) {
221
224
  if (needsTabIndex) {
222
225
  needsTabIndex = false;
223
226
  return function ngAriaRadioReaction(newVal) {
224
- var boolVal = newVal === attr.value;
227
+ var boolVal = (attr.value == ngModel.$viewValue);
225
228
  elem.attr('aria-checked', boolVal);
226
229
  elem.attr('tabindex', 0 - !boolVal);
227
230
  };
228
231
  } else {
229
232
  return function ngAriaRadioReaction(newVal) {
230
- elem.attr('aria-checked', newVal === attr.value);
233
+ elem.attr('aria-checked', (attr.value == ngModel.$viewValue));
231
234
  };
232
235
  }
233
236
  }
234
237
 
235
238
  function ngAriaCheckboxReaction(newVal) {
236
- elem.attr('aria-checked', !!newVal);
239
+ elem.attr('aria-checked', !ngModel.$isEmpty(ngModel.$viewValue));
237
240
  }
238
241
 
239
242
  switch (shape) {
@@ -308,11 +311,18 @@ ngAriaModule.directive('ngShow', ['$aria', function($aria) {
308
311
  compile: function(elem, attr) {
309
312
  var fn = $parse(attr.ngClick, /* interceptorFn */ null, /* expensiveChecks */ true);
310
313
  return function(scope, elem, attr) {
314
+
315
+ function isNodeOneOf(elem, nodeTypeArray) {
316
+ if (nodeTypeArray.indexOf(elem[0].nodeName) !== -1) {
317
+ return true;
318
+ }
319
+ }
320
+
311
321
  if ($aria.config('tabindex') && !elem.attr('tabindex')) {
312
322
  elem.attr('tabindex', 0);
313
323
  }
314
324
 
315
- if ($aria.config('bindKeypress') && !attr.ngKeypress) {
325
+ if ($aria.config('bindKeypress') && !attr.ngKeypress && isNodeOneOf(elem, ['DIV', 'LI'])) {
316
326
  elem.on('keypress', function(event) {
317
327
  if (event.keyCode === 32 || event.keyCode === 13) {
318
328
  scope.$apply(callback);
@@ -0,0 +1,12 @@
1
+ /*
2
+ AngularJS v1.3.14
3
+ (c) 2010-2014 Google, Inc. http://angularjs.org
4
+ License: MIT
5
+ */
6
+ (function(q,m,r){'use strict';m.module("ngAria",["ng"]).provider("$aria",function(){function a(a,f,b){return function(d,c,h){var k=h.$normalize(f);e[k]&&!h[k]&&d.$watch(h[a],function(d){b&&(d=!d);c.attr(f,d)})}}var e={ariaHidden:!0,ariaChecked:!0,ariaDisabled:!0,ariaRequired:!0,ariaInvalid:!0,ariaMultiline:!0,ariaValue:!0,tabindex:!0,bindKeypress:!0};this.config=function(a){e=m.extend(e,a)};this.$get=function(){return{config:function(a){return e[a]},$$watchExpr:a}}}).directive("ngShow",["$aria",function(a){return a.$$watchExpr("ngShow",
7
+ "aria-hidden",!0)}]).directive("ngHide",["$aria",function(a){return a.$$watchExpr("ngHide","aria-hidden",!1)}]).directive("ngModel",["$aria",function(a){function e(e,b,d){return a.config(b)&&!d.attr(e)}function g(a,b){var d=a.type,c=a.role;return"checkbox"===(d||c)||"menuitemcheckbox"===c?"checkbox":"radio"===(d||c)||"menuitemradio"===c?"radio":"range"===d||"progressbar"===c||"slider"===c?"range":"textbox"===(d||c)||"TEXTAREA"===b[0].nodeName?"multiline":""}return{restrict:"A",require:"?ngModel",
8
+ priority:200,link:function(f,b,d,c){function h(){return c.$modelValue}function k(){return l?(l=!1,function(a){a=d.value==c.$viewValue;b.attr("aria-checked",a);b.attr("tabindex",0-!a)}):function(a){b.attr("aria-checked",d.value==c.$viewValue)}}function p(a){b.attr("aria-checked",!c.$isEmpty(c.$viewValue))}var n=g(d,b),l=e("tabindex","tabindex",b);switch(n){case "radio":case "checkbox":e("aria-checked","ariaChecked",b)&&f.$watch(h,"radio"===n?k():p);break;case "range":a.config("ariaValue")&&(d.min&&
9
+ !b.attr("aria-valuemin")&&b.attr("aria-valuemin",d.min),d.max&&!b.attr("aria-valuemax")&&b.attr("aria-valuemax",d.max),b.attr("aria-valuenow")||f.$watch(h,function(a){b.attr("aria-valuenow",a)}));break;case "multiline":e("aria-multiline","ariaMultiline",b)&&b.attr("aria-multiline",!0)}l&&b.attr("tabindex",0);c.$validators.required&&e("aria-required","ariaRequired",b)&&f.$watch(function(){return c.$error.required},function(a){b.attr("aria-required",!!a)});e("aria-invalid","ariaInvalid",b)&&f.$watch(function(){return c.$invalid},
10
+ function(a){b.attr("aria-invalid",!!a)})}}}]).directive("ngDisabled",["$aria",function(a){return a.$$watchExpr("ngDisabled","aria-disabled")}]).directive("ngMessages",function(){return{restrict:"A",require:"?ngMessages",link:function(a,e,g,f){e.attr("aria-live")||e.attr("aria-live","assertive")}}}).directive("ngClick",["$aria","$parse",function(a,e){return{restrict:"A",compile:function(g,f){var b=e(f.ngClick,null,!0);return function(d,c,e){function f(a,b){if(-1!==b.indexOf(a[0].nodeName))return!0}
11
+ a.config("tabindex")&&!c.attr("tabindex")&&c.attr("tabindex",0);if(a.config("bindKeypress")&&!e.ngKeypress&&f(c,["DIV","LI"]))c.on("keypress",function(a){function c(){b(d,{$event:a})}32!==a.keyCode&&13!==a.keyCode||d.$apply(c)})}}}}]).directive("ngDblclick",["$aria",function(a){return function(e,g,f){a.config("tabindex")&&!g.attr("tabindex")&&g.attr("tabindex",0)}}])})(window,window.angular);
12
+ //# sourceMappingURL=angular-aria.min.js.map
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license AngularJS v1.3.12
2
+ * @license AngularJS v1.3.14
3
3
  * (c) 2010-2014 Google, Inc. http://angularjs.org
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*
2
- AngularJS v1.3.12
2
+ AngularJS v1.3.14
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.12
2
+ * @license AngularJS v1.3.14
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.12/' +
58
+ message = message + '\nhttp://errors.angularjs.org/1.3.14/' +
59
59
  (module ? module + '/' : '') + code;
60
60
  for (i = 2; i < arguments.length; i++) {
61
61
  message = message + (i == 2 ? '?' : '&') + 'p' + (i - 2) + '=' +
@@ -1,9 +1,9 @@
1
1
  /*
2
- AngularJS v1.3.12
2
+ AngularJS v1.3.14
3
3
  (c) 2010-2014 Google, Inc. http://angularjs.org
4
4
  License: MIT
5
5
  */
6
- (function(){'use strict';function d(b){return function(){var c=arguments[0],e;e="["+(b?b+":":"")+c+"] http://errors.angularjs.org/1.3.12/"+(b?b+"/":"")+c;for(c=1;c<arguments.length;c++){e=e+(1==c?"?":"&")+"p"+(c-1)+"=";var d=encodeURIComponent,a;a=arguments[c];a="function"==typeof a?a.toString().replace(/ \{[\s\S]*$/,""):"undefined"==typeof a?"undefined":"string"!=typeof a?JSON.stringify(a):a;e+=d(a)}return Error(e)}}(function(b){function c(a,c,b){return a[c]||(a[c]=b())}var e=d("$injector"),n=d("ng");
6
+ (function(){'use strict';function d(b){return function(){var c=arguments[0],e;e="["+(b?b+":":"")+c+"] http://errors.angularjs.org/1.3.14/"+(b?b+"/":"")+c;for(c=1;c<arguments.length;c++){e=e+(1==c?"?":"&")+"p"+(c-1)+"=";var d=encodeURIComponent,a;a=arguments[c];a="function"==typeof a?a.toString().replace(/ \{[\s\S]*$/,""):"undefined"==typeof a?"undefined":"string"!=typeof a?JSON.stringify(a):a;e+=d(a)}return Error(e)}}(function(b){function c(a,c,b){return a[c]||(a[c]=b())}var e=d("$injector"),n=d("ng");
7
7
  b=c(b,"angular",Object);b.$$minErr=b.$$minErr||d;return c(b,"module",function(){var a={};return function(b,d,g){if("hasOwnProperty"===b)throw n("badname","module");d&&a.hasOwnProperty(b)&&(a[b]=null);return c(a,b,function(){function a(b,d,e,f){f||(f=c);return function(){f[e||"push"]([b,d,arguments]);return h}}if(!d)throw e("nomod",b);var c=[],k=[],l=[],m=a("$injector","invoke","push",k),h={_invokeQueue:c,_configBlocks:k,_runBlocks:l,requires:d,name:b,provider:a("$provide","provider"),factory:a("$provide",
8
8
  "factory"),service:a("$provide","service"),value:a("$provide","value"),constant:a("$provide","constant","unshift"),animation:a("$animateProvider","register"),filter:a("$filterProvider","register"),controller:a("$controllerProvider","register"),directive:a("$compileProvider","directive"),config:m,run:function(a){l.push(a);return this}};g&&m(g);return h})}})})(window)})(window);
9
9
  //# sourceMappingURL=angular-loader.min.js.map
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license AngularJS v1.3.12
2
+ * @license AngularJS v1.3.14
3
3
  * (c) 2010-2014 Google, Inc. http://angularjs.org
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*
2
- AngularJS v1.3.12
2
+ AngularJS v1.3.14
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.12
2
+ * @license AngularJS v1.3.14
3
3
  * (c) 2010-2014 Google, Inc. http://angularjs.org
4
4
  * License: MIT
5
5
  */
@@ -2134,7 +2134,7 @@ angular.mock.$RootScopeDecorator = ['$delegate', function($delegate) {
2134
2134
  if (window.jasmine || window.mocha) {
2135
2135
 
2136
2136
  var currentSpec = null,
2137
- annotatedFunctions,
2137
+ annotatedFunctions = [],
2138
2138
  isSpecRunning = function() {
2139
2139
  return !!currentSpec;
2140
2140
  };
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license AngularJS v1.3.12
2
+ * @license AngularJS v1.3.14
3
3
  * (c) 2010-2014 Google, Inc. http://angularjs.org
4
4
  * License: MIT
5
5
  */
@@ -213,6 +213,7 @@ function shallowClearAndCopy(src, dst) {
213
213
  * - non-GET "class" actions: `Resource.action([parameters], postData, [success], [error])`
214
214
  * - non-GET instance actions: `instance.$action([parameters], [success], [error])`
215
215
  *
216
+ *
216
217
  * Success callback is called with (value, responseHeaders) arguments. Error callback is called
217
218
  * with (httpResponse) argument.
218
219
  *
@@ -1,5 +1,5 @@
1
1
  /*
2
- AngularJS v1.3.12
2
+ AngularJS v1.3.14
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.12
2
+ * @license AngularJS v1.3.14
3
3
  * (c) 2010-2014 Google, Inc. http://angularjs.org
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*
2
- AngularJS v1.3.12
2
+ AngularJS v1.3.14
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.12
2
+ * @license AngularJS v1.3.14
3
3
  * (c) 2010-2014 Google, Inc. http://angularjs.org
4
4
  * License: MIT
5
5
  */
@@ -341,7 +341,8 @@ function htmlParser(html, handler) {
341
341
  }
342
342
 
343
343
  } else {
344
- html = html.replace(new RegExp("(.*)<\\s*\\/\\s*" + stack.last() + "[^>]*>", 'i'),
344
+ // IE versions 9 and 10 do not understand the regex '[^]', so using a workaround with [\W\w].
345
+ html = html.replace(new RegExp("([\\W\\w]*)<\\s*\\/\\s*" + stack.last() + "[^>]*>", 'i'),
345
346
  function(all, text) {
346
347
  text = text.replace(COMMENT_REGEXP, "$1").replace(CDATA_REGEXP, "$1");
347
348
 
@@ -415,7 +416,6 @@ function htmlParser(html, handler) {
415
416
  }
416
417
 
417
418
  var hiddenPre=document.createElement("pre");
418
- var spaceRe = /^(\s*)([\s\S]*?)(\s*)$/;
419
419
  /**
420
420
  * decodes all entities into regular string
421
421
  * @param value
@@ -424,22 +424,10 @@ var spaceRe = /^(\s*)([\s\S]*?)(\s*)$/;
424
424
  function decodeEntities(value) {
425
425
  if (!value) { return ''; }
426
426
 
427
- // Note: IE8 does not preserve spaces at the start/end of innerHTML
428
- // so we must capture them and reattach them afterward
429
- var parts = spaceRe.exec(value);
430
- var spaceBefore = parts[1];
431
- var spaceAfter = parts[3];
432
- var content = parts[2];
433
- if (content) {
434
- hiddenPre.innerHTML=content.replace(/</g,"&lt;");
435
- // innerText depends on styling as it doesn't display hidden elements.
436
- // Therefore, it's better to use textContent not to cause unnecessary
437
- // reflows. However, IE<9 don't support textContent so the innerText
438
- // fallback is necessary.
439
- content = 'textContent' in hiddenPre ?
440
- hiddenPre.textContent : hiddenPre.innerText;
441
- }
442
- return spaceBefore + content + spaceAfter;
427
+ hiddenPre.innerHTML = value.replace(/</g,"&lt;");
428
+ // innerText depends on styling as it doesn't display hidden elements.
429
+ // Therefore, it's better to use textContent not to cause unnecessary reflows.
430
+ return hiddenPre.textContent;
443
431
  }
444
432
 
445
433
  /**
@@ -0,0 +1,16 @@
1
+ /*
2
+ AngularJS v1.3.14
3
+ (c) 2010-2014 Google, Inc. http://angularjs.org
4
+ License: MIT
5
+ */
6
+ (function(n,h,p){'use strict';function E(a){var e=[];r(e,h.noop).chars(a);return e.join("")}function g(a){var e={};a=a.split(",");var d;for(d=0;d<a.length;d++)e[a[d]]=!0;return e}function F(a,e){function d(a,b,d,l){b=h.lowercase(b);if(s[b])for(;f.last()&&t[f.last()];)c("",f.last());u[b]&&f.last()==b&&c("",b);(l=v[b]||!!l)||f.push(b);var m={};d.replace(G,function(a,b,e,c,d){m[b]=q(e||c||d||"")});e.start&&e.start(b,m,l)}function c(a,b){var c=0,d;if(b=h.lowercase(b))for(c=f.length-1;0<=c&&f[c]!=b;c--);
7
+ if(0<=c){for(d=f.length-1;d>=c;d--)e.end&&e.end(f[d]);f.length=c}}"string"!==typeof a&&(a=null===a||"undefined"===typeof a?"":""+a);var b,k,f=[],m=a,l;for(f.last=function(){return f[f.length-1]};a;){l="";k=!0;if(f.last()&&w[f.last()])a=a.replace(new RegExp("([\\W\\w]*)<\\s*\\/\\s*"+f.last()+"[^>]*>","i"),function(a,b){b=b.replace(H,"$1").replace(I,"$1");e.chars&&e.chars(q(b));return""}),c("",f.last());else{if(0===a.indexOf("\x3c!--"))b=a.indexOf("--",4),0<=b&&a.lastIndexOf("--\x3e",b)===b&&(e.comment&&
8
+ e.comment(a.substring(4,b)),a=a.substring(b+3),k=!1);else if(x.test(a)){if(b=a.match(x))a=a.replace(b[0],""),k=!1}else if(J.test(a)){if(b=a.match(y))a=a.substring(b[0].length),b[0].replace(y,c),k=!1}else K.test(a)&&((b=a.match(z))?(b[4]&&(a=a.substring(b[0].length),b[0].replace(z,d)),k=!1):(l+="<",a=a.substring(1)));k&&(b=a.indexOf("<"),l+=0>b?a:a.substring(0,b),a=0>b?"":a.substring(b),e.chars&&e.chars(q(l)))}if(a==m)throw L("badparse",a);m=a}c()}function q(a){if(!a)return"";A.innerHTML=a.replace(/</g,
9
+ "&lt;");return A.textContent}function B(a){return a.replace(/&/g,"&amp;").replace(M,function(a){var d=a.charCodeAt(0);a=a.charCodeAt(1);return"&#"+(1024*(d-55296)+(a-56320)+65536)+";"}).replace(N,function(a){return"&#"+a.charCodeAt(0)+";"}).replace(/</g,"&lt;").replace(/>/g,"&gt;")}function r(a,e){var d=!1,c=h.bind(a,a.push);return{start:function(a,k,f){a=h.lowercase(a);!d&&w[a]&&(d=a);d||!0!==C[a]||(c("<"),c(a),h.forEach(k,function(d,f){var k=h.lowercase(f),g="img"===a&&"src"===k||"background"===
10
+ k;!0!==O[k]||!0===D[k]&&!e(d,g)||(c(" "),c(f),c('="'),c(B(d)),c('"'))}),c(f?"/>":">"))},end:function(a){a=h.lowercase(a);d||!0!==C[a]||(c("</"),c(a),c(">"));a==d&&(d=!1)},chars:function(a){d||c(B(a))}}}var L=h.$$minErr("$sanitize"),z=/^<((?:[a-zA-Z])[\w:-]*)((?:\s+[\w:-]+(?:\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|[^>\s]+))?)*)\s*(\/?)\s*(>?)/,y=/^<\/\s*([\w:-]+)[^>]*>/,G=/([\w:-]+)(?:\s*=\s*(?:(?:"((?:[^"])*)")|(?:'((?:[^'])*)')|([^>\s]+)))?/g,K=/^</,J=/^<\//,H=/\x3c!--(.*?)--\x3e/g,x=/<!DOCTYPE([^>]*?)>/i,
11
+ I=/<!\[CDATA\[(.*?)]]\x3e/g,M=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,N=/([^\#-~| |!])/g,v=g("area,br,col,hr,img,wbr");n=g("colgroup,dd,dt,li,p,tbody,td,tfoot,th,thead,tr");p=g("rp,rt");var u=h.extend({},p,n),s=h.extend({},n,g("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")),t=h.extend({},p,g("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"));
12
+ n=g("animate,animateColor,animateMotion,animateTransform,circle,defs,desc,ellipse,font-face,font-face-name,font-face-src,g,glyph,hkern,image,linearGradient,line,marker,metadata,missing-glyph,mpath,path,polygon,polyline,radialGradient,rect,set,stop,svg,switch,text,title,tspan,use");var w=g("script,style"),C=h.extend({},v,s,t,u,n),D=g("background,cite,href,longdesc,src,usemap,xlink:href");n=g("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,size,span,start,summary,target,title,type,valign,value,vspace,width");
13
+ p=g("accent-height,accumulate,additive,alphabetic,arabic-form,ascent,attributeName,attributeType,baseProfile,bbox,begin,by,calcMode,cap-height,class,color,color-rendering,content,cx,cy,d,dx,dy,descent,display,dur,end,fill,fill-rule,font-family,font-size,font-stretch,font-style,font-variant,font-weight,from,fx,fy,g1,g2,glyph-name,gradientUnits,hanging,height,horiz-adv-x,horiz-origin-x,ideographic,k,keyPoints,keySplines,keyTimes,lang,marker-end,marker-mid,marker-start,markerHeight,markerUnits,markerWidth,mathematical,max,min,offset,opacity,orient,origin,overline-position,overline-thickness,panose-1,path,pathLength,points,preserveAspectRatio,r,refX,refY,repeatCount,repeatDur,requiredExtensions,requiredFeatures,restart,rotate,rx,ry,slope,stemh,stemv,stop-color,stop-opacity,strikethrough-position,strikethrough-thickness,stroke,stroke-dasharray,stroke-dashoffset,stroke-linecap,stroke-linejoin,stroke-miterlimit,stroke-opacity,stroke-width,systemLanguage,target,text-anchor,to,transform,type,u1,u2,underline-position,underline-thickness,unicode,unicode-range,units-per-em,values,version,viewBox,visibility,width,widths,x,x-height,x1,x2,xlink:actuate,xlink:arcrole,xlink:role,xlink:show,xlink:title,xlink:type,xml:base,xml:lang,xml:space,xmlns,xmlns:xlink,y,y1,y2,zoomAndPan");
14
+ var O=h.extend({},D,p,n),A=document.createElement("pre");h.module("ngSanitize",[]).provider("$sanitize",function(){this.$get=["$$sanitizeUri",function(a){return function(e){var d=[];F(e,r(d,function(c,b){return!/^unsafe/.test(a(c,b))}));return d.join("")}}]});h.module("ngSanitize").filter("linky",["$sanitize",function(a){var e=/((ftp|https?):\/\/|(www\.)|(mailto:)?[A-Za-z0-9._%+-]+@)\S*[^\s.;,(){}<>"\u201d\u2019]/,d=/^mailto:/;return function(c,b){function k(a){a&&g.push(E(a))}function f(a,c){g.push("<a ");
15
+ h.isDefined(b)&&g.push('target="',b,'" ');g.push('href="',a.replace(/"/g,"&quot;"),'">');k(c);g.push("</a>")}if(!c)return c;for(var m,l=c,g=[],n,p;m=l.match(e);)n=m[0],m[2]||m[4]||(n=(m[3]?"http://":"mailto:")+n),p=m.index,k(l.substr(0,p)),f(n,m[0].replace(d,"")),l=l.substring(p+m[0].length);k(l);return a(g.join(""))}}])})(window,window.angular);
16
+ //# sourceMappingURL=angular-sanitize.min.js.map
@@ -9190,7 +9190,7 @@ return jQuery;
9190
9190
  }));
9191
9191
 
9192
9192
  /**
9193
- * @license AngularJS v1.3.12
9193
+ * @license AngularJS v1.3.14
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.12/' +
9249
+ message = message + '\nhttp://errors.angularjs.org/1.3.14/' +
9250
9250
  (module ? module + '/' : '') + code;
9251
9251
  for (i = 2; i < arguments.length; i++) {
9252
9252
  message = message + (i == 2 ? '?' : '&') + 'p' + (i - 2) + '=' +
@@ -11313,11 +11313,11 @@ function toDebugString(obj) {
11313
11313
  * - `codeName` – `{string}` – Code name of the release, such as "jiggling-armfat".
11314
11314
  */
11315
11315
  var version = {
11316
- full: '1.3.12', // all of these placeholder strings will be replaced by grunt's
11316
+ full: '1.3.14', // all of these placeholder strings will be replaced by grunt's
11317
11317
  major: 1, // package task
11318
11318
  minor: 3,
11319
- dot: 12,
11320
- codeName: 'outlandish-knitting'
11319
+ dot: 14,
11320
+ codeName: 'instantaneous-browserification'
11321
11321
  };
11322
11322
 
11323
11323
 
@@ -20563,7 +20563,7 @@ function $LocationProvider() {
20563
20563
 
20564
20564
 
20565
20565
  // rewrite hashbang url <> html5 url
20566
- if ($location.absUrl() != initialUrl) {
20566
+ if (trimEmptyHash($location.absUrl()) != trimEmptyHash(initialUrl)) {
20567
20567
  $browser.url($location.absUrl(), true);
20568
20568
  }
20569
20569
 
@@ -27046,20 +27046,23 @@ var htmlAnchorDirective = valueFn({
27046
27046
  *
27047
27047
  * @description
27048
27048
  *
27049
- * We shouldn't do this, because it will make the button enabled on Chrome/Firefox but not on IE8 and older IEs:
27049
+ * This directive sets the `disabled` attribute on the element if the
27050
+ * {@link guide/expression expression} inside `ngDisabled` evaluates to truthy.
27051
+ *
27052
+ * A special directive is necessary because we cannot use interpolation inside the `disabled`
27053
+ * attribute. The following example would make the button enabled on Chrome/Firefox
27054
+ * but not on older IEs:
27055
+ *
27050
27056
  * ```html
27051
- * <div ng-init="scope = { isDisabled: false }">
27052
- * <button disabled="{{scope.isDisabled}}">Disabled</button>
27057
+ * <div ng-init="isDisabled = false">
27058
+ * <button disabled="{{isDisabled}}">Disabled</button>
27053
27059
  * </div>
27054
27060
  * ```
27055
27061
  *
27056
- * The HTML specification does not require browsers to preserve the values of boolean attributes
27057
- * such as disabled. (Their presence means true and their absence means false.)
27062
+ * This is because the HTML specification does not require browsers to preserve the values of
27063
+ * boolean attributes such as `disabled` (Their presence means true and their absence means false.)
27058
27064
  * If we put an Angular interpolation expression into such an attribute then the
27059
27065
  * binding information would be lost when the browser removes the attribute.
27060
- * The `ngDisabled` directive solves this problem for the `disabled` attribute.
27061
- * This complementary directive is not removed by the browser and so provides
27062
- * a permanent reliable place to store the binding information.
27063
27066
  *
27064
27067
  * @example
27065
27068
  <example>
@@ -27078,7 +27081,7 @@ var htmlAnchorDirective = valueFn({
27078
27081
  *
27079
27082
  * @element INPUT
27080
27083
  * @param {expression} ngDisabled If the {@link guide/expression expression} is truthy,
27081
- * then special attribute "disabled" will be set on the element
27084
+ * then the `disabled` attribute will be set on the element
27082
27085
  */
27083
27086
 
27084
27087
 
@@ -29080,7 +29083,7 @@ function numberInputType(scope, element, attr, ctrl, $sniffer, $browser) {
29080
29083
  return value;
29081
29084
  });
29082
29085
 
29083
- if (attr.min || attr.ngMin) {
29086
+ if (isDefined(attr.min) || attr.ngMin) {
29084
29087
  var minVal;
29085
29088
  ctrl.$validators.min = function(value) {
29086
29089
  return ctrl.$isEmpty(value) || isUndefined(minVal) || value >= minVal;
@@ -29096,7 +29099,7 @@ function numberInputType(scope, element, attr, ctrl, $sniffer, $browser) {
29096
29099
  });
29097
29100
  }
29098
29101
 
29099
- if (attr.max || attr.ngMax) {
29102
+ if (isDefined(attr.max) || attr.ngMax) {
29100
29103
  var maxVal;
29101
29104
  ctrl.$validators.max = function(value) {
29102
29105
  return ctrl.$isEmpty(value) || isUndefined(maxVal) || value <= maxVal;
@@ -31902,6 +31905,7 @@ var NgModelController = ['$scope', '$exceptionHandler', '$attrs', '$element', '$
31902
31905
  ngModelGet = parsedNgModel,
31903
31906
  ngModelSet = parsedNgModelAssign,
31904
31907
  pendingDebounce = null,
31908
+ parserValid,
31905
31909
  ctrl = this;
31906
31910
 
31907
31911
  this.$$setOptions = function(options) {
@@ -32174,16 +32178,12 @@ var NgModelController = ['$scope', '$exceptionHandler', '$attrs', '$element', '$
32174
32178
  // the model although neither viewValue nor the model on the scope changed
32175
32179
  var modelValue = ctrl.$$rawModelValue;
32176
32180
 
32177
- // Check if the there's a parse error, so we don't unset it accidentially
32178
- var parserName = ctrl.$$parserName || 'parse';
32179
- var parserValid = ctrl.$error[parserName] ? false : undefined;
32180
-
32181
32181
  var prevValid = ctrl.$valid;
32182
32182
  var prevModelValue = ctrl.$modelValue;
32183
32183
 
32184
32184
  var allowInvalid = ctrl.$options && ctrl.$options.allowInvalid;
32185
32185
 
32186
- ctrl.$$runValidators(parserValid, modelValue, viewValue, function(allValid) {
32186
+ ctrl.$$runValidators(modelValue, viewValue, function(allValid) {
32187
32187
  // If there was no change in validity, don't update the model
32188
32188
  // This prevents changing an invalid modelValue to undefined
32189
32189
  if (!allowInvalid && prevValid !== allValid) {
@@ -32201,12 +32201,12 @@ var NgModelController = ['$scope', '$exceptionHandler', '$attrs', '$element', '$
32201
32201
 
32202
32202
  };
32203
32203
 
32204
- this.$$runValidators = function(parseValid, modelValue, viewValue, doneCallback) {
32204
+ this.$$runValidators = function(modelValue, viewValue, doneCallback) {
32205
32205
  currentValidationRunId++;
32206
32206
  var localValidationRunId = currentValidationRunId;
32207
32207
 
32208
32208
  // check parser error
32209
- if (!processParseErrors(parseValid)) {
32209
+ if (!processParseErrors()) {
32210
32210
  validationDone(false);
32211
32211
  return;
32212
32212
  }
@@ -32216,21 +32216,22 @@ var NgModelController = ['$scope', '$exceptionHandler', '$attrs', '$element', '$
32216
32216
  }
32217
32217
  processAsyncValidators();
32218
32218
 
32219
- function processParseErrors(parseValid) {
32219
+ function processParseErrors() {
32220
32220
  var errorKey = ctrl.$$parserName || 'parse';
32221
- if (parseValid === undefined) {
32221
+ if (parserValid === undefined) {
32222
32222
  setValidity(errorKey, null);
32223
32223
  } else {
32224
- setValidity(errorKey, parseValid);
32225
- if (!parseValid) {
32224
+ if (!parserValid) {
32226
32225
  forEach(ctrl.$validators, function(v, name) {
32227
32226
  setValidity(name, null);
32228
32227
  });
32229
32228
  forEach(ctrl.$asyncValidators, function(v, name) {
32230
32229
  setValidity(name, null);
32231
32230
  });
32232
- return false;
32233
32231
  }
32232
+ // Set the parse error last, to prevent unsetting it, should a $validators key == parserName
32233
+ setValidity(errorKey, parserValid);
32234
+ return parserValid;
32234
32235
  }
32235
32236
  return true;
32236
32237
  }
@@ -32325,7 +32326,7 @@ var NgModelController = ['$scope', '$exceptionHandler', '$attrs', '$element', '$
32325
32326
  this.$$parseAndValidate = function() {
32326
32327
  var viewValue = ctrl.$$lastCommittedViewValue;
32327
32328
  var modelValue = viewValue;
32328
- var parserValid = isUndefined(modelValue) ? undefined : true;
32329
+ parserValid = isUndefined(modelValue) ? undefined : true;
32329
32330
 
32330
32331
  if (parserValid) {
32331
32332
  for (var i = 0; i < ctrl.$parsers.length; i++) {
@@ -32351,7 +32352,7 @@ var NgModelController = ['$scope', '$exceptionHandler', '$attrs', '$element', '$
32351
32352
 
32352
32353
  // Pass the $$lastCommittedViewValue here, because the cached viewValue might be out of date.
32353
32354
  // This can happen if e.g. $setViewValue is called from inside a parser
32354
- ctrl.$$runValidators(parserValid, modelValue, ctrl.$$lastCommittedViewValue, function(allValid) {
32355
+ ctrl.$$runValidators(modelValue, ctrl.$$lastCommittedViewValue, function(allValid) {
32355
32356
  if (!allowInvalid) {
32356
32357
  // Note: Don't check ctrl.$valid here, as we could have
32357
32358
  // external validators (e.g. calculated on the server),
@@ -32472,6 +32473,7 @@ var NgModelController = ['$scope', '$exceptionHandler', '$attrs', '$element', '$
32472
32473
  // TODO(perf): why not move this to the action fn?
32473
32474
  if (modelValue !== ctrl.$modelValue) {
32474
32475
  ctrl.$modelValue = ctrl.$$rawModelValue = modelValue;
32476
+ parserValid = undefined;
32475
32477
 
32476
32478
  var formatters = ctrl.$formatters,
32477
32479
  idx = formatters.length;
@@ -32484,7 +32486,7 @@ var NgModelController = ['$scope', '$exceptionHandler', '$attrs', '$element', '$
32484
32486
  ctrl.$viewValue = ctrl.$$lastCommittedViewValue = viewValue;
32485
32487
  ctrl.$render();
32486
32488
 
32487
- ctrl.$$runValidators(undefined, modelValue, viewValue, noop);
32489
+ ctrl.$$runValidators(modelValue, viewValue, noop);
32488
32490
  }
32489
32491
  }
32490
32492
 
@@ -33300,6 +33302,55 @@ var ngPluralizeDirective = ['$locale', '$interpolate', function($locale, $interp
33300
33302
  * when keys are deleted and reinstated.
33301
33303
  *
33302
33304
  *
33305
+ * # Tracking and Duplicates
33306
+ *
33307
+ * When the contents of the collection change, `ngRepeat` makes the corresponding changes to the DOM:
33308
+ *
33309
+ * * When an item is added, a new instance of the template is added to the DOM.
33310
+ * * When an item is removed, its template instance is removed from the DOM.
33311
+ * * When items are reordered, their respective templates are reordered in the DOM.
33312
+ *
33313
+ * By default, `ngRepeat` does not allow duplicate items in arrays. This is because when
33314
+ * there are duplicates, it is not possible to maintain a one-to-one mapping between collection
33315
+ * items and DOM elements.
33316
+ *
33317
+ * If you do need to repeat duplicate items, you can substitute the default tracking behavior
33318
+ * with your own using the `track by` expression.
33319
+ *
33320
+ * For example, you may track items by the index of each item in the collection, using the
33321
+ * special scope property `$index`:
33322
+ * ```html
33323
+ * <div ng-repeat="n in [42, 42, 43, 43] track by $index">
33324
+ * {{n}}
33325
+ * </div>
33326
+ * ```
33327
+ *
33328
+ * You may use arbitrary expressions in `track by`, including references to custom functions
33329
+ * on the scope:
33330
+ * ```html
33331
+ * <div ng-repeat="n in [42, 42, 43, 43] track by myTrackingFunction(n)">
33332
+ * {{n}}
33333
+ * </div>
33334
+ * ```
33335
+ *
33336
+ * If you are working with objects that have an identifier property, you can track
33337
+ * by the identifier instead of the whole object. Should you reload your data later, `ngRepeat`
33338
+ * will not have to rebuild the DOM elements for items it has already rendered, even if the
33339
+ * JavaScript objects in the collection have been substituted for new ones:
33340
+ * ```html
33341
+ * <div ng-repeat="model in collection track by model.id">
33342
+ * {{model.name}}
33343
+ * </div>
33344
+ * ```
33345
+ *
33346
+ * When no `track by` expression is provided, it is equivalent to tracking by the built-in
33347
+ * `$id` function, which tracks items by their identity:
33348
+ * ```html
33349
+ * <div ng-repeat="obj in collection track by $id(obj)">
33350
+ * {{obj.prop}}
33351
+ * </div>
33352
+ * ```
33353
+ *
33303
33354
  * # Special repeat start and end points
33304
33355
  * To repeat a series of elements instead of just one parent element, ngRepeat (as well as other ng directives) supports extending
33305
33356
  * the range of the repeater by defining explicit start and end points by using **ng-repeat-start** and **ng-repeat-end** respectively.
@@ -33367,12 +33418,12 @@ var ngPluralizeDirective = ['$locale', '$interpolate', function($locale, $interp
33367
33418
  *
33368
33419
  * For example: `(name, age) in {'adam':10, 'amalie':12}`.
33369
33420
  *
33370
- * * `variable in expression track by tracking_expression` – You can also provide an optional tracking function
33371
- * which can be used to associate the objects in the collection with the DOM elements. If no tracking function
33372
- * is specified the ng-repeat associates elements by identity in the collection. It is an error to have
33373
- * more than one tracking function to resolve to the same key. (This would mean that two distinct objects are
33374
- * mapped to the same DOM element, which is not possible.) Filters should be applied to the expression,
33375
- * before specifying a tracking expression.
33421
+ * * `variable in expression track by tracking_expression` – You can also provide an optional tracking expression
33422
+ * which can be used to associate the objects in the collection with the DOM elements. If no tracking expression
33423
+ * is specified, ng-repeat associates elements by identity. It is an error to have
33424
+ * more than one tracking expression value resolve to the same key. (This would mean that two distinct objects are
33425
+ * mapped to the same DOM element, which is not possible.) If filters are used in the expression, they should be
33426
+ * applied before the tracking expression.
33376
33427
  *
33377
33428
  * For example: `item in items` is equivalent to `item in items track by $id(item)`. This implies that the DOM elements
33378
33429
  * will be associated by item identity in the array.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license AngularJS v1.3.12
2
+ * @license AngularJS v1.3.14
3
3
  * (c) 2010-2014 Google, Inc. http://angularjs.org
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*
2
- AngularJS v1.3.12
2
+ AngularJS v1.3.14
3
3
  (c) 2010-2014 Google, Inc. http://angularjs.org
4
4
  License: MIT
5
5
  */