angular-gem 1.2.23 → 1.2.24

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license AngularJS v1.2.23
2
+ * @license AngularJS v1.2.24
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.2.23
2
+ * @license AngularJS v1.2.24
3
3
  * (c) 2010-2014 Google, Inc. http://angularjs.org
4
4
  * License: MIT
5
5
  */
@@ -68,7 +68,7 @@ function minErr(module) {
68
68
  return match;
69
69
  });
70
70
 
71
- message = message + '\nhttp://errors.angularjs.org/1.2.23/' +
71
+ message = message + '\nhttp://errors.angularjs.org/1.2.24/' +
72
72
  (module ? module + '/' : '') + code;
73
73
  for (i = 2; i < arguments.length; i++) {
74
74
  message = message + (i == 2 ? '?' : '&') + 'p' + (i-2) + '=' +
@@ -1987,11 +1987,11 @@ function setupModuleLoader(window) {
1987
1987
  * - `codeName` – `{string}` – Code name of the release, such as "jiggling-armfat".
1988
1988
  */
1989
1989
  var version = {
1990
- full: '1.2.23', // all of these placeholder strings will be replaced by grunt's
1990
+ full: '1.2.24', // all of these placeholder strings will be replaced by grunt's
1991
1991
  major: 1, // package task
1992
1992
  minor: 2,
1993
- dot: 23,
1994
- codeName: 'superficial-malady'
1993
+ dot: 24,
1994
+ codeName: 'static-levitation'
1995
1995
  };
1996
1996
 
1997
1997
 
@@ -4582,6 +4582,13 @@ function Browser(window, document, $log, $sniffer) {
4582
4582
  return callback;
4583
4583
  };
4584
4584
 
4585
+ /**
4586
+ * Checks whether the url has changed outside of Angular.
4587
+ * Needs to be exported to be able to check for changes that have been done in sync,
4588
+ * as hashchange/popstate events fire in async.
4589
+ */
4590
+ self.$$checkUrlChange = fireUrlChange;
4591
+
4585
4592
  //////////////////////////////////////////////////////////////
4586
4593
  // Misc API
4587
4594
  //////////////////////////////////////////////////////////////
@@ -8407,7 +8414,7 @@ function $HttpProvider() {
8407
8414
  if (isObject(v)) {
8408
8415
  if (isDate(v)){
8409
8416
  v = v.toISOString();
8410
- } else if (isObject(v)) {
8417
+ } else {
8411
8418
  v = toJson(v);
8412
8419
  }
8413
8420
  }
@@ -8857,7 +8864,7 @@ function $InterpolateProvider() {
8857
8864
  * @description
8858
8865
  * Symbol to denote the start of expression in the interpolated string. Defaults to `{{`.
8859
8866
  *
8860
- * Use {@link ng.$interpolateProvider#startSymbol $interpolateProvider#startSymbol} to change
8867
+ * Use {@link ng.$interpolateProvider#startSymbol `$interpolateProvider.startSymbol`} to change
8861
8868
  * the symbol.
8862
8869
  *
8863
8870
  * @returns {string} start symbol.
@@ -8873,7 +8880,7 @@ function $InterpolateProvider() {
8873
8880
  * @description
8874
8881
  * Symbol to denote the end of expression in the interpolated string. Defaults to `}}`.
8875
8882
  *
8876
- * Use {@link ng.$interpolateProvider#endSymbol $interpolateProvider#endSymbol} to change
8883
+ * Use {@link ng.$interpolateProvider#endSymbol `$interpolateProvider.endSymbol`} to change
8877
8884
  * the symbol.
8878
8885
  *
8879
8886
  * @returns {string} end symbol.
@@ -9463,17 +9470,16 @@ LocationHashbangInHtml5Url.prototype =
9463
9470
  * Change path, search and hash, when called with parameter and return `$location`.
9464
9471
  *
9465
9472
  * @param {string=} url New url without base prefix (e.g. `/path?a=b#hash`)
9466
- * @param {string=} replace The path that will be changed
9467
9473
  * @return {string} url
9468
9474
  */
9469
- url: function(url, replace) {
9475
+ url: function(url) {
9470
9476
  if (isUndefined(url))
9471
9477
  return this.$$url;
9472
9478
 
9473
9479
  var match = PATH_MATCH.exec(url);
9474
9480
  if (match[1]) this.path(decodeURIComponent(match[1]));
9475
9481
  if (match[2] || match[1]) this.search(match[3] || '');
9476
- this.hash(match[5] || '', replace);
9482
+ this.hash(match[5] || '');
9477
9483
 
9478
9484
  return this;
9479
9485
  },
@@ -9531,10 +9537,11 @@ LocationHashbangInHtml5Url.prototype =
9531
9537
  * Note: Path should always begin with forward slash (/), this method will add the forward slash
9532
9538
  * if it is missing.
9533
9539
  *
9534
- * @param {string=} path New path
9540
+ * @param {(string|number)=} path New path
9535
9541
  * @return {string} path
9536
9542
  */
9537
9543
  path: locationGetterSetter('$$path', function(path) {
9544
+ path = path ? path.toString() : '';
9538
9545
  return path.charAt(0) == '/' ? path : '/' + path;
9539
9546
  }),
9540
9547
 
@@ -9570,7 +9577,7 @@ LocationHashbangInHtml5Url.prototype =
9570
9577
  * If the argument is a hash object containing an array of values, these values will be encoded
9571
9578
  * as duplicate search parameters in the url.
9572
9579
  *
9573
- * @param {(string|Array<string>|boolean)=} paramValue If `search` is a string, then `paramValue`
9580
+ * @param {(string|Number|Array<string>|boolean)=} paramValue If `search` is a string or number, then `paramValue`
9574
9581
  * will override only a single search property.
9575
9582
  *
9576
9583
  * If `paramValue` is an array, it will override the property of the `search` component of
@@ -9589,7 +9596,8 @@ LocationHashbangInHtml5Url.prototype =
9589
9596
  case 0:
9590
9597
  return this.$$search;
9591
9598
  case 1:
9592
- if (isString(search)) {
9599
+ if (isString(search) || isNumber(search)) {
9600
+ search = search.toString();
9593
9601
  this.$$search = parseKeyValue(search);
9594
9602
  } else if (isObject(search)) {
9595
9603
  // remove object undefined or null properties
@@ -9626,10 +9634,12 @@ LocationHashbangInHtml5Url.prototype =
9626
9634
  *
9627
9635
  * Change hash fragment when called with parameter and return `$location`.
9628
9636
  *
9629
- * @param {string=} hash New hash fragment
9637
+ * @param {(string|number)=} hash New hash fragment
9630
9638
  * @return {string} hash
9631
9639
  */
9632
- hash: locationGetterSetter('$$hash', identity),
9640
+ hash: locationGetterSetter('$$hash', function(hash) {
9641
+ return hash ? hash.toString() : '';
9642
+ }),
9633
9643
 
9634
9644
  /**
9635
9645
  * @ngdoc method
@@ -10824,7 +10834,7 @@ Parser.prototype = {
10824
10834
  var context = contextGetter ? contextGetter(scope, locals) : scope;
10825
10835
 
10826
10836
  for (var i = 0; i < argsFn.length; i++) {
10827
- args.push(argsFn[i](scope, locals));
10837
+ args.push(ensureSafeObject(argsFn[i](scope, locals), parser.text));
10828
10838
  }
10829
10839
  var fnPtr = fn(scope, locals, context) || noop;
10830
10840
 
@@ -10912,13 +10922,15 @@ Parser.prototype = {
10912
10922
  //////////////////////////////////////////////////
10913
10923
 
10914
10924
  function setter(obj, path, setValue, fullExp, options) {
10925
+ ensureSafeObject(obj, fullExp);
10926
+
10915
10927
  //needed?
10916
10928
  options = options || {};
10917
10929
 
10918
10930
  var element = path.split('.'), key;
10919
10931
  for (var i = 0; element.length > 1; i++) {
10920
10932
  key = ensureSafeMemberName(element.shift(), fullExp);
10921
- var propertyObj = obj[key];
10933
+ var propertyObj = ensureSafeObject(obj[key], fullExp);
10922
10934
  if (!propertyObj) {
10923
10935
  propertyObj = {};
10924
10936
  obj[key] = propertyObj;
@@ -10938,7 +10950,6 @@ function setter(obj, path, setValue, fullExp, options) {
10938
10950
  }
10939
10951
  }
10940
10952
  key = ensureSafeMemberName(element.shift(), fullExp);
10941
- ensureSafeObject(obj, fullExp);
10942
10953
  ensureSafeObject(obj[key], fullExp);
10943
10954
  obj[key] = setValue;
10944
10955
  return setValue;
@@ -12002,10 +12013,26 @@ function $RootScopeProvider(){
12002
12013
  /**
12003
12014
  * @ngdoc property
12004
12015
  * @name $rootScope.Scope#$id
12005
- * @returns {number} Unique scope ID (monotonically increasing alphanumeric sequence) useful for
12006
- * debugging.
12016
+ *
12017
+ * @description
12018
+ * Unique scope ID (monotonically increasing) useful for debugging.
12007
12019
  */
12008
12020
 
12021
+ /**
12022
+ * @ngdoc property
12023
+ * @name $rootScope.Scope#$parent
12024
+ *
12025
+ * @description
12026
+ * Reference to the parent scope.
12027
+ */
12028
+
12029
+ /**
12030
+ * @ngdoc property
12031
+ * @name $rootScope.Scope#$root
12032
+ *
12033
+ * @description
12034
+ * Reference to the root scope.
12035
+ */
12009
12036
 
12010
12037
  Scope.prototype = {
12011
12038
  constructor: Scope,
@@ -12017,9 +12044,8 @@ function $RootScopeProvider(){
12017
12044
  * @description
12018
12045
  * Creates a new child {@link ng.$rootScope.Scope scope}.
12019
12046
  *
12020
- * The parent scope will propagate the {@link ng.$rootScope.Scope#$digest $digest()} and
12021
- * {@link ng.$rootScope.Scope#$digest $digest()} events. The scope can be removed from the
12022
- * scope hierarchy using {@link ng.$rootScope.Scope#$destroy $destroy()}.
12047
+ * The parent scope will propagate the {@link ng.$rootScope.Scope#$digest $digest()} event.
12048
+ * The scope can be removed from the scope hierarchy using {@link ng.$rootScope.Scope#$destroy $destroy()}.
12023
12049
  *
12024
12050
  * {@link ng.$rootScope.Scope#$destroy $destroy()} must be called on a scope when it is
12025
12051
  * desired for the scope and its child scopes to be permanently detached from the parent and
@@ -12472,6 +12498,8 @@ function $RootScopeProvider(){
12472
12498
  logIdx, logMsg, asyncTask;
12473
12499
 
12474
12500
  beginPhase('$digest');
12501
+ // Check for changes to browser url that happened in sync before the call to $digest
12502
+ $browser.$$checkUrlChange();
12475
12503
 
12476
12504
  lastDirtyWatch = null;
12477
12505
 
@@ -14525,16 +14553,6 @@ function $WindowProvider(){
14525
14553
  * For more information about how angular filters work, and how to create your own filters, see
14526
14554
  * {@link guide/filter Filters} in the Angular Developer Guide.
14527
14555
  */
14528
- /**
14529
- * @ngdoc method
14530
- * @name $filterProvider#register
14531
- * @description
14532
- * Register filter factory function.
14533
- *
14534
- * @param {String} name Name of the filter.
14535
- * @param {Function} fn The filter factory function which is injectable.
14536
- */
14537
-
14538
14556
 
14539
14557
  /**
14540
14558
  * @ngdoc service
@@ -14573,7 +14591,7 @@ function $FilterProvider($provide) {
14573
14591
 
14574
14592
  /**
14575
14593
  * @ngdoc method
14576
- * @name $controllerProvider#register
14594
+ * @name $filterProvider#register
14577
14595
  * @param {string|Object} name Name of the filter function, or an object map of filters where
14578
14596
  * the keys are the filter names and the values are the filter factories.
14579
14597
  * @returns {Object} Registered filter instance, or if a map of filters was provided then a map
@@ -14646,7 +14664,9 @@ function $FilterProvider($provide) {
14646
14664
  * which have property `name` containing "M" and property `phone` containing "1". A special
14647
14665
  * property name `$` can be used (as in `{$:"text"}`) to accept a match against any
14648
14666
  * property of the object. That's equivalent to the simple substring match with a `string`
14649
- * as described above.
14667
+ * as described above. The predicate can be negated by prefixing the string with `!`.
14668
+ * For Example `{name: "!M"}` predicate will return an array of items which have property `name`
14669
+ * not containing "M".
14650
14670
  *
14651
14671
  * - `function(value)`: A predicate function can be used to write arbitrary filters. The function is
14652
14672
  * called for each element of `array`. The final result is an array of those elements that
@@ -14995,6 +15015,10 @@ function formatNumber(number, pattern, groupSep, decimalSep, fractionSize) {
14995
15015
  // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/round
14996
15016
  number = +(Math.round(+(number.toString() + 'e' + fractionSize)).toString() + 'e' + -fractionSize);
14997
15017
 
15018
+ if (number === 0) {
15019
+ isNegative = false;
15020
+ }
15021
+
14998
15022
  var fraction = ('' + number).split(DECIMAL_SEP);
14999
15023
  var whole = fraction[0];
15000
15024
  fraction = fraction[1] || '';
@@ -15164,8 +15188,8 @@ var DATE_FORMATS_SPLIT = /((?:[^yMdHhmsaZE']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|d+
15164
15188
  * * `'mediumTime'`: equivalent to `'h:mm:ss a'` for en_US locale (e.g. 12:05:08 pm)
15165
15189
  * * `'shortTime'`: equivalent to `'h:mm a'` for en_US locale (e.g. 12:05 pm)
15166
15190
  *
15167
- * `format` string can contain literal values. These need to be quoted with single quotes (e.g.
15168
- * `"h 'in the morning'"`). In order to output single quote, use two single quotes in a sequence
15191
+ * `format` string can contain literal values. These need to be escaped by surrounding with single quotes (e.g.
15192
+ * `"h 'in the morning'"`). In order to output a single quote, escape it - i.e., two single quotes in a sequence
15169
15193
  * (e.g. `"h 'o''clock'"`).
15170
15194
  *
15171
15195
  * @param {(Date|number|string)} date Date to format either as Date object, milliseconds (string or
@@ -15185,6 +15209,8 @@ var DATE_FORMATS_SPLIT = /((?:[^yMdHhmsaZE']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|d+
15185
15209
  <span>{{1288323623006 | date:'yyyy-MM-dd HH:mm:ss Z'}}</span><br>
15186
15210
  <span ng-non-bindable>{{1288323623006 | date:'MM/dd/yyyy @ h:mma'}}</span>:
15187
15211
  <span>{{'1288323623006' | date:'MM/dd/yyyy @ h:mma'}}</span><br>
15212
+ <span ng-non-bindable>{{1288323623006 | date:"MM/dd/yyyy 'at' h:mma"}}</span>:
15213
+ <span>{{'1288323623006' | date:"MM/dd/yyyy 'at' h:mma"}}</span><br>
15188
15214
  </file>
15189
15215
  <file name="protractor.js" type="protractor">
15190
15216
  it('should format date', function() {
@@ -15194,6 +15220,8 @@ var DATE_FORMATS_SPLIT = /((?:[^yMdHhmsaZE']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|d+
15194
15220
  toMatch(/2010\-10\-2\d \d{2}:\d{2}:\d{2} (\-|\+)?\d{4}/);
15195
15221
  expect(element(by.binding("'1288323623006' | date:'MM/dd/yyyy @ h:mma'")).getText()).
15196
15222
  toMatch(/10\/2\d\/2010 @ \d{1,2}:\d{2}(AM|PM)/);
15223
+ expect(element(by.binding("'1288323623006' | date:\"MM/dd/yyyy 'at' h:mma\"")).getText()).
15224
+ toMatch(/10\/2\d\/2010 at \d{1,2}:\d{2}(AM|PM)/);
15197
15225
  });
15198
15226
  </file>
15199
15227
  </example>
@@ -15555,7 +15583,7 @@ function limitToFilter(){
15555
15583
  orderByFilter.$inject = ['$parse'];
15556
15584
  function orderByFilter($parse){
15557
15585
  return function(array, sortPredicate, reverseOrder) {
15558
- if (!isArray(array)) return array;
15586
+ if (!(isArrayLike(array))) return array;
15559
15587
  if (!sortPredicate) return array;
15560
15588
  sortPredicate = isArray(sortPredicate) ? sortPredicate: [sortPredicate];
15561
15589
  sortPredicate = map(sortPredicate, function(predicate){
@@ -16142,8 +16170,9 @@ function FormController(element, attrs, $scope, $animate) {
16142
16170
  // convenience method for easy toggling of classes
16143
16171
  function toggleValidCss(isValid, validationErrorKey) {
16144
16172
  validationErrorKey = validationErrorKey ? '-' + snake_case(validationErrorKey, '-') : '';
16145
- $animate.removeClass(element, (isValid ? INVALID_CLASS : VALID_CLASS) + validationErrorKey);
16146
- $animate.addClass(element, (isValid ? VALID_CLASS : INVALID_CLASS) + validationErrorKey);
16173
+ $animate.setClass(element,
16174
+ (isValid ? VALID_CLASS : INVALID_CLASS) + validationErrorKey,
16175
+ (isValid ? INVALID_CLASS : VALID_CLASS) + validationErrorKey);
16147
16176
  }
16148
16177
 
16149
16178
  /**
@@ -16358,8 +16387,6 @@ function FormController(element, attrs, $scope, $animate) {
16358
16387
  * hitting enter in any of the input fields will trigger the click handler on the *first* button or
16359
16388
  * input[type=submit] (`ngClick`) *and* a submit handler on the enclosing form (`ngSubmit`)
16360
16389
  *
16361
- * @param {string=} name Name of the form. If specified, the form controller will be published into
16362
- * related scope, under this name.
16363
16390
  *
16364
16391
  * ## Animation Hooks
16365
16392
  *
@@ -16437,6 +16464,8 @@ function FormController(element, attrs, $scope, $animate) {
16437
16464
  </file>
16438
16465
  </example>
16439
16466
  *
16467
+ * @param {string=} name Name of the form. If specified, the form controller will be published into
16468
+ * related scope, under this name.
16440
16469
  */
16441
16470
  var formDirectiveFactory = function(isNgForm) {
16442
16471
  return ['$timeout', function($timeout) {
@@ -17020,7 +17049,7 @@ function textInputType(scope, element, attr, ctrl, $sniffer, $browser) {
17020
17049
  // a row.
17021
17050
  var revalidate = validity && ctrl.$$hasNativeValidators;
17022
17051
  if (ctrl.$viewValue !== value || (value === '' && revalidate)) {
17023
- if (scope.$$phase) {
17052
+ if (scope.$root.$$phase) {
17024
17053
  ctrl.$setViewValue(value);
17025
17054
  } else {
17026
17055
  scope.$apply(function() {
@@ -19062,7 +19091,9 @@ var ngControllerDirective = [function() {
19062
19091
  <button ng-click="count = count + 1" ng-init="count=0">
19063
19092
  Increment
19064
19093
  </button>
19065
- count: {{count}}
19094
+ <span>
19095
+ count: {{count}}
19096
+ <span>
19066
19097
  </file>
19067
19098
  <file name="protractor.js" type="protractor">
19068
19099
  it('should check ng-click', function() {
@@ -19080,19 +19111,33 @@ var ngControllerDirective = [function() {
19080
19111
  * Events that are handled via these handler are always configured not to propagate further.
19081
19112
  */
19082
19113
  var ngEventDirectives = {};
19114
+
19115
+ // For events that might fire synchronously during DOM manipulation
19116
+ // we need to execute their event handlers asynchronously using $evalAsync,
19117
+ // so that they are not executed in an inconsistent state.
19118
+ var forceAsyncEvents = {
19119
+ 'blur': true,
19120
+ 'focus': true
19121
+ };
19083
19122
  forEach(
19084
19123
  'click dblclick mousedown mouseup mouseover mouseout mousemove mouseenter mouseleave keydown keyup keypress submit focus blur copy cut paste'.split(' '),
19085
19124
  function(name) {
19086
19125
  var directiveName = directiveNormalize('ng-' + name);
19087
- ngEventDirectives[directiveName] = ['$parse', function($parse) {
19126
+ ngEventDirectives[directiveName] = ['$parse', '$rootScope', function($parse, $rootScope) {
19088
19127
  return {
19089
19128
  compile: function($element, attr) {
19090
19129
  var fn = $parse(attr[directiveName]);
19091
19130
  return function ngEventHandler(scope, element) {
19092
- element.on(lowercase(name), function(event) {
19093
- scope.$apply(function() {
19131
+ var eventName = lowercase(name);
19132
+ element.on(eventName, function(event) {
19133
+ var callback = function() {
19094
19134
  fn(scope, {$event:event});
19095
- });
19135
+ };
19136
+ if (forceAsyncEvents[eventName] && $rootScope.$$phase) {
19137
+ scope.$evalAsync(callback);
19138
+ } else {
19139
+ scope.$apply(callback);
19140
+ }
19096
19141
  });
19097
19142
  };
19098
19143
  }
@@ -19409,6 +19454,10 @@ forEach(
19409
19454
  * @description
19410
19455
  * Specify custom behavior on focus event.
19411
19456
  *
19457
+ * Note: As the `focus` event is executed synchronously when calling `input.focus()`
19458
+ * AngularJS executes the expression using `scope.$evalAsync` if the event is fired
19459
+ * during an `$apply` to ensure a consistent state.
19460
+ *
19412
19461
  * @element window, input, select, textarea, a
19413
19462
  * @priority 0
19414
19463
  * @param {expression} ngFocus {@link guide/expression Expression} to evaluate upon
@@ -19425,6 +19474,14 @@ forEach(
19425
19474
  * @description
19426
19475
  * Specify custom behavior on blur event.
19427
19476
  *
19477
+ * A [blur event](https://developer.mozilla.org/en-US/docs/Web/Events/blur) fires when
19478
+ * an element has lost focus.
19479
+ *
19480
+ * Note: As the `blur` event is executed synchronously also during DOM manipulations
19481
+ * (e.g. removing a focussed input),
19482
+ * AngularJS executes the expression using `scope.$evalAsync` if the event is fired
19483
+ * during an `$apply` to ensure a consistent state.
19484
+ *
19428
19485
  * @element window, input, select, textarea, a
19429
19486
  * @priority 0
19430
19487
  * @param {expression} ngBlur {@link guide/expression Expression} to evaluate upon
@@ -20505,8 +20562,9 @@ var ngRepeatDirective = ['$parse', '$animate', function($parse, $animate) {
20505
20562
  if (block && block.scope) lastBlockMap[block.id] = block;
20506
20563
  });
20507
20564
  // This is a duplicate and we need to throw an error
20508
- throw ngRepeatMinErr('dupes', "Duplicates in a repeater are not allowed. Use 'track by' expression to specify unique keys. Repeater: {0}, Duplicate key: {1}",
20509
- expression, trackById);
20565
+ throw ngRepeatMinErr('dupes',
20566
+ "Duplicates in a repeater are not allowed. Use 'track by' expression to specify unique keys. Repeater: {0}, Duplicate key: {1}, Duplicate value: {2}",
20567
+ expression, trackById, toJson(value));
20510
20568
  } else {
20511
20569
  // new never before seen block
20512
20570
  nextBlockOrder[index] = { id: trackById };
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: angular-gem
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.23
4
+ version: 1.2.24
5
5
  platform: ruby
6
6
  authors:
7
7
  - Christian Vuerings
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-08-26 00:00:00.000000000 Z
11
+ date: 2014-09-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: railties
@@ -908,6 +908,16 @@ files:
908
908
  - vendor/assets/javascripts/1.2.23/angular-scenario.js
909
909
  - vendor/assets/javascripts/1.2.23/angular-touch.js
910
910
  - vendor/assets/javascripts/1.2.23/angular.js
911
+ - vendor/assets/javascripts/1.2.24/angular-animate.js
912
+ - vendor/assets/javascripts/1.2.24/angular-cookies.js
913
+ - vendor/assets/javascripts/1.2.24/angular-loader.js
914
+ - vendor/assets/javascripts/1.2.24/angular-mocks.js
915
+ - vendor/assets/javascripts/1.2.24/angular-resource.js
916
+ - vendor/assets/javascripts/1.2.24/angular-route.js
917
+ - vendor/assets/javascripts/1.2.24/angular-sanitize.js
918
+ - vendor/assets/javascripts/1.2.24/angular-scenario.js
919
+ - vendor/assets/javascripts/1.2.24/angular-touch.js
920
+ - vendor/assets/javascripts/1.2.24/angular.js
911
921
  - vendor/assets/javascripts/1.2.3/angular-animate.js
912
922
  - vendor/assets/javascripts/1.2.3/angular-cookies.js
913
923
  - vendor/assets/javascripts/1.2.3/angular-loader.js