ember-source 1.6.0.beta.5 → 1.6.0

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.
@@ -5,7 +5,7 @@
5
5
  * Portions Copyright 2008-2011 Apple Inc. All rights reserved.
6
6
  * @license Licensed under MIT license
7
7
  * See https://raw.github.com/emberjs/ember.js/master/LICENSE
8
- * @version 1.6.0-beta.5
8
+ * @version 1.6.0
9
9
  */
10
10
 
11
11
 
@@ -1064,9 +1064,7 @@ define("ember-metal/computed",
1064
1064
 
1065
1065
  function UNDEFINED() { }
1066
1066
 
1067
-
1068
- var lengthPattern = /\.(length|\[\])$/;
1069
-
1067
+ var lengthPattern = /\.(length|\[\])$/;
1070
1068
 
1071
1069
  // ..........................................................
1072
1070
  // DEPENDENT KEYS
@@ -1074,9 +1072,9 @@ define("ember-metal/computed",
1074
1072
 
1075
1073
  // data structure:
1076
1074
  // meta.deps = {
1077
- // 'depKey': {
1078
- // 'keyName': count,
1079
- // }
1075
+ // 'depKey': {
1076
+ // 'keyName': count,
1077
+ // }
1080
1078
  // }
1081
1079
 
1082
1080
  /*
@@ -1160,7 +1158,7 @@ define("ember-metal/computed",
1160
1158
  values.
1161
1159
 
1162
1160
  ```javascript
1163
- Person = Ember.Object.extend({
1161
+ var Person = Ember.Object.extend({
1164
1162
  // these will be supplied by `create`
1165
1163
  firstName: null,
1166
1164
  lastName: null,
@@ -1187,8 +1185,7 @@ define("ember-metal/computed",
1187
1185
  third parameter.
1188
1186
 
1189
1187
  ```javascript
1190
-
1191
- Person = Ember.Object.extend({
1188
+ var Person = Ember.Object.extend({
1192
1189
  // these will be supplied by `create`
1193
1190
  firstName: null,
1194
1191
  lastName: null,
@@ -1203,7 +1200,7 @@ define("ember-metal/computed",
1203
1200
 
1204
1201
  // setter
1205
1202
  } else {
1206
- var name = value.split(" ");
1203
+ var name = value.split(' ');
1207
1204
 
1208
1205
  this.set('firstName', name[0]);
1209
1206
  this.set('lastName', name[1]);
@@ -1214,9 +1211,10 @@ define("ember-metal/computed",
1214
1211
  });
1215
1212
 
1216
1213
  var person = Person.create();
1214
+
1217
1215
  person.set('fullName', 'Peter Wagenet');
1218
- person.get('firstName') // 'Peter'
1219
- person.get('lastName') // 'Wagenet'
1216
+ person.get('firstName'); // 'Peter'
1217
+ person.get('lastName'); // 'Wagenet'
1220
1218
  ```
1221
1219
 
1222
1220
  @class ComputedProperty
@@ -1265,7 +1263,7 @@ define("ember-metal/computed",
1265
1263
  mode the computed property will not automatically cache the return value.
1266
1264
 
1267
1265
  ```javascript
1268
- MyApp.outsideService = Ember.Object.extend({
1266
+ var outsideService = Ember.Object.extend({
1269
1267
  value: function() {
1270
1268
  return OutsideService.getValue();
1271
1269
  }.property().volatile()
@@ -1285,15 +1283,15 @@ define("ember-metal/computed",
1285
1283
  mode the computed property will throw an error when set.
1286
1284
 
1287
1285
  ```javascript
1288
- MyApp.Person = Ember.Object.extend({
1286
+ var Person = Ember.Object.extend({
1289
1287
  guid: function() {
1290
1288
  return 'guid-guid-guid';
1291
1289
  }.property().readOnly()
1292
1290
  });
1293
1291
 
1294
- MyApp.person = MyApp.Person.create();
1292
+ var person = Person.create();
1295
1293
 
1296
- MyApp.person.set('guid', 'new-guid'); // will throw an exception
1294
+ person.set('guid', 'new-guid'); // will throw an exception
1297
1295
  ```
1298
1296
 
1299
1297
  @method readOnly
@@ -1310,7 +1308,7 @@ define("ember-metal/computed",
1310
1308
  arguments containing key paths that this computed property depends on.
1311
1309
 
1312
1310
  ```javascript
1313
- MyApp.President = Ember.Object.extend({
1311
+ var President = Ember.Object.extend({
1314
1312
  fullName: computed(function() {
1315
1313
  return this.get('firstName') + ' ' + this.get('lastName');
1316
1314
 
@@ -1319,12 +1317,12 @@ define("ember-metal/computed",
1319
1317
  }).property('firstName', 'lastName')
1320
1318
  });
1321
1319
 
1322
- MyApp.president = MyApp.President.create({
1320
+ var president = President.create({
1323
1321
  firstName: 'Barack',
1324
1322
  lastName: 'Obama',
1325
1323
  });
1326
1324
 
1327
- MyApp.president.get('fullName'); // 'Barack Obama'
1325
+ president.get('fullName'); // 'Barack Obama'
1328
1326
  ```
1329
1327
 
1330
1328
  @method property
@@ -1408,10 +1406,9 @@ define("ember-metal/computed",
1408
1406
  Otherwise, call the function passing the property name as an argument.
1409
1407
 
1410
1408
  ```javascript
1411
- Person = Ember.Object.extend({
1409
+ var Person = Ember.Object.extend({
1412
1410
  fullName: function(keyName) {
1413
1411
  // the keyName parameter is 'fullName' in this case.
1414
-
1415
1412
  return this.get('firstName') + ' ' + this.get('lastName');
1416
1413
  }.property('firstName', 'lastName')
1417
1414
  });
@@ -1662,38 +1659,39 @@ define("ember-metal/computed",
1662
1659
  };
1663
1660
  };
1664
1661
 
1665
-
1666
- /**
1667
- A computed property that returns true if the value of the dependent
1668
- property is null, an empty string, empty array, or empty function.
1662
+ /**
1663
+ A computed property that returns true if the value of the dependent
1664
+ property is null, an empty string, empty array, or empty function.
1669
1665
 
1670
- Example
1666
+ Example
1671
1667
 
1672
- ```javascript
1673
- var ToDoList = Ember.Object.extend({
1674
- done: Ember.computed.empty('todos')
1675
- });
1668
+ ```javascript
1669
+ var ToDoList = Ember.Object.extend({
1670
+ done: Ember.computed.empty('todos')
1671
+ });
1676
1672
 
1677
- var todoList = ToDoList.create({todos: ['Unit Test', 'Documentation', 'Release']});
1673
+ var todoList = ToDoList.create({
1674
+ todos: ['Unit Test', 'Documentation', 'Release']
1675
+ });
1678
1676
 
1679
- todoList.get('done'); // false
1680
- todoList.get('todos').clear();
1681
- todoList.get('done'); // true
1682
- ```
1677
+ todoList.get('done'); // false
1678
+ todoList.get('todos').clear();
1679
+ todoList.get('done'); // true
1680
+ ```
1681
+
1682
+ @since 1.6.0
1683
+ @method computed.empty
1684
+ @for Ember
1685
+ @param {String} dependentKey
1686
+ @return {Ember.ComputedProperty} computed property which negate
1687
+ the original value for property
1688
+ */
1689
+ computed.empty = function (dependentKey) {
1690
+ return computed(dependentKey + '.length', function () {
1691
+ return isEmpty(get(this, dependentKey));
1692
+ });
1693
+ };
1683
1694
 
1684
- @since 1.6.0
1685
- @method computed.empty
1686
- @for Ember
1687
- @param {String} dependentKey
1688
- @return {Ember.ComputedProperty} computed property which negate
1689
- the original value for property
1690
- */
1691
- computed.empty = function (dependentKey) {
1692
- return computed(dependentKey + '.length', function () {
1693
- return isEmpty(get(this, dependentKey));
1694
- });
1695
- };
1696
-
1697
1695
  /**
1698
1696
  A computed property that returns true if the value of the dependent
1699
1697
  property is NOT null, an empty string, empty array, or empty function.
@@ -1709,11 +1707,11 @@ define("ember-metal/computed",
1709
1707
  hasStuff: Ember.computed.notEmpty('backpack.[]')
1710
1708
  });
1711
1709
 
1712
- var hamster = Hamster.create({backpack: ['Food', 'Sleeping Bag', 'Tent']});
1710
+ var hamster = Hamster.create({ backpack: ['Food', 'Sleeping Bag', 'Tent'] });
1713
1711
 
1714
- hamster.get('hasStuff'); // true
1712
+ hamster.get('hasStuff'); // true
1715
1713
  hamster.get('backpack').clear(); // []
1716
- hamster.get('hasStuff'); // false
1714
+ hamster.get('hasStuff'); // false
1717
1715
  ```
1718
1716
 
1719
1717
  @method computed.notEmpty
@@ -2149,12 +2147,12 @@ define("ember-metal/computed",
2149
2147
  though they were called on the original property.
2150
2148
 
2151
2149
  ```javascript
2152
- Person = Ember.Object.extend({
2150
+ var Person = Ember.Object.extend({
2153
2151
  name: 'Alex Matchneer',
2154
2152
  nomen: Ember.computed.alias('name')
2155
2153
  });
2156
2154
 
2157
- alex = Person.create();
2155
+ var alex = Person.create();
2158
2156
 
2159
2157
  alex.get('nomen'); // 'Alex Matchneer'
2160
2158
  alex.get('name'); // 'Alex Matchneer'
@@ -2201,9 +2199,9 @@ define("ember-metal/computed",
2201
2199
  lastName: 'Zeenny'
2202
2200
  });
2203
2201
 
2204
- teddy.get('nickName'); // 'Teddy'
2202
+ teddy.get('nickName'); // 'Teddy'
2205
2203
  teddy.set('nickName', 'TeddyBear'); // 'TeddyBear'
2206
- teddy.get('firstName'); // 'Teddy'
2204
+ teddy.get('firstName'); // 'Teddy'
2207
2205
  ```
2208
2206
 
2209
2207
  @method computed.oneWay
@@ -2240,10 +2238,10 @@ define("ember-metal/computed",
2240
2238
  lastName: 'Zeenny'
2241
2239
  });
2242
2240
 
2243
- teddy.get('nickName'); // 'Teddy'
2241
+ teddy.get('nickName'); // 'Teddy'
2244
2242
  teddy.set('nickName', 'TeddyBear'); // throws Exception
2245
2243
  // throw new Ember.Error('Cannot Set: nickName on: <User:ember27288>' );`
2246
- teddy.get('firstName'); // 'Teddy'
2244
+ teddy.get('firstName'); // 'Teddy'
2247
2245
  ```
2248
2246
 
2249
2247
  @method computed.readOnly
@@ -2270,12 +2268,12 @@ define("ember-metal/computed",
2270
2268
  wishList: Ember.computed.defaultTo('favoriteFood')
2271
2269
  });
2272
2270
 
2273
- var hamster = Hamster.create({favoriteFood: 'Banana'});
2271
+ var hamster = Hamster.create({ favoriteFood: 'Banana' });
2274
2272
 
2275
- hamster.get('wishList'); // 'Banana'
2273
+ hamster.get('wishList'); // 'Banana'
2276
2274
  hamster.set('wishList', 'More Unit Tests');
2277
- hamster.get('wishList'); // 'More Unit Tests'
2278
- hamster.get('favoriteFood'); // 'Banana'
2275
+ hamster.get('wishList'); // 'More Unit Tests'
2276
+ hamster.get('favoriteFood'); // 'Banana'
2279
2277
  ```
2280
2278
 
2281
2279
  @method computed.defaultTo
@@ -2326,7 +2324,7 @@ define("ember-metal/core",
2326
2324
 
2327
2325
  @class Ember
2328
2326
  @static
2329
- @version 1.6.0-beta.5
2327
+ @version 1.6.0
2330
2328
  */
2331
2329
 
2332
2330
  if ('undefined' === typeof Ember) {
@@ -2353,10 +2351,10 @@ define("ember-metal/core",
2353
2351
  /**
2354
2352
  @property VERSION
2355
2353
  @type String
2356
- @default '1.6.0-beta.5'
2354
+ @default '1.6.0'
2357
2355
  @static
2358
2356
  */
2359
- Ember.VERSION = '1.6.0-beta.5';
2357
+ Ember.VERSION = '1.6.0';
2360
2358
 
2361
2359
  /**
2362
2360
  Standard environmental variables. You can define these in a global `EmberENV`
@@ -3183,12 +3181,14 @@ define("ember-metal/events",
3183
3181
 
3184
3182
  ``` javascript
3185
3183
  var Job = Ember.Object.extend({
3186
- logCompleted: Ember.on('completed', function(){
3184
+ logCompleted: Ember.on('completed', function() {
3187
3185
  console.log('Job completed!');
3188
3186
  })
3189
3187
  });
3188
+
3190
3189
  var job = Job.create();
3191
- Ember.sendEvent(job, 'completed'); // Logs "Job completed!"
3190
+
3191
+ Ember.sendEvent(job, 'completed'); // Logs 'Job completed!'
3192
3192
  ```
3193
3193
 
3194
3194
  @method on
@@ -5095,7 +5095,10 @@ define("ember-metal/mixin",
5095
5095
  moniker: Ember.aliasMethod('name')
5096
5096
  });
5097
5097
 
5098
- var goodGuy = App.Person.create()
5098
+ var goodGuy = App.Person.create();
5099
+
5100
+ goodGuy.name(); // 'Tomhuda Katzdale'
5101
+ goodGuy.moniker(); // 'Tomhuda Katzdale'
5099
5102
  ```
5100
5103
 
5101
5104
  @method aliasMethod
@@ -5206,7 +5209,6 @@ define("ember-metal/mixin",
5206
5209
 
5207
5210
  ```javascript
5208
5211
  App.PersonView = Ember.View.extend({
5209
-
5210
5212
  friends: [{ name: 'Tom' }, { name: 'Stefan' }, { name: 'Kris' }],
5211
5213
 
5212
5214
  valueWillChange: Ember.beforeObserver('content.value', function(obj, keyName) {
@@ -6907,7 +6909,7 @@ define("ember-metal/run_loop",
6907
6909
  run.debounce(myContext, myFunc, 150, true);
6908
6910
 
6909
6911
  // console logs 'debounce ran.' one time immediately.
6910
- // 150ms passes and nothing else is logged tot he console and
6912
+ // 150ms passes and nothing else is logged to the console and
6911
6913
  // the debouncee is no longer being watched
6912
6914
 
6913
6915
  ```
@@ -7004,11 +7006,13 @@ define("ember-metal/set_properties",
7004
7006
  observers will be buffered.
7005
7007
 
7006
7008
  ```javascript
7009
+ var anObject = Ember.Object.create();
7010
+
7007
7011
  anObject.setProperties({
7008
- firstName: "Stanley",
7009
- lastName: "Stuart",
7010
- age: "21"
7011
- })
7012
+ firstName: 'Stanley',
7013
+ lastName: 'Stuart',
7014
+ age: 21
7015
+ });
7012
7016
  ```
7013
7017
 
7014
7018
  @method setProperties
@@ -7398,9 +7402,9 @@ define("ember-metal/utils",
7398
7402
  not formally array but appears to be array-like (i.e. implements `Ember.Array`)
7399
7403
 
7400
7404
  ```javascript
7401
- Ember.isArray(); // false
7402
- Ember.isArray([]); // true
7403
- Ember.isArray( Ember.ArrayProxy.create({ content: [] }) ); // true
7405
+ Ember.isArray(); // false
7406
+ Ember.isArray([]); // true
7407
+ Ember.isArray(Ember.ArrayProxy.create({ content: [] })); // true
7404
7408
  ```
7405
7409
 
7406
7410
  @method isArray
@@ -7435,13 +7439,14 @@ define("ember-metal/utils",
7435
7439
  an array. If obj is `null` or `undefined`, returns an empty array.
7436
7440
 
7437
7441
  ```javascript
7438
- Ember.makeArray(); // []
7439
- Ember.makeArray(null); // []
7440
- Ember.makeArray(undefined); // []
7441
- Ember.makeArray('lindsay'); // ['lindsay']
7442
- Ember.makeArray([1,2,42]); // [1,2,42]
7442
+ Ember.makeArray(); // []
7443
+ Ember.makeArray(null); // []
7444
+ Ember.makeArray(undefined); // []
7445
+ Ember.makeArray('lindsay'); // ['lindsay']
7446
+ Ember.makeArray([1, 2, 42]); // [1, 2, 42]
7443
7447
 
7444
7448
  var controller = Ember.ArrayProxy.create({ content: [] });
7449
+
7445
7450
  Ember.makeArray(controller) === controller; // true
7446
7451
  ```
7447
7452
 
@@ -7459,7 +7464,8 @@ define("ember-metal/utils",
7459
7464
  Checks to see if the `methodName` exists on the `obj`.
7460
7465
 
7461
7466
  ```javascript
7462
- var foo = {bar: Ember.K, baz: null};
7467
+ var foo = { bar: Ember.K, baz: null };
7468
+
7463
7469
  Ember.canInvoke(foo, 'bar'); // true
7464
7470
  Ember.canInvoke(foo, 'baz'); // false
7465
7471
  Ember.canInvoke(foo, 'bat'); // false
@@ -7481,8 +7487,9 @@ define("ember-metal/utils",
7481
7487
 
7482
7488
  ```javascript
7483
7489
  var d = new Date('03/15/2013');
7484
- Ember.tryInvoke(d, 'getTime'); // 1363320000000
7485
- Ember.tryInvoke(d, 'setFullYear', [2014]); // 1394856000000
7490
+
7491
+ Ember.tryInvoke(d, 'getTime'); // 1363320000000
7492
+ Ember.tryInvoke(d, 'setFullYear', [2014]); // 1394856000000
7486
7493
  Ember.tryInvoke(d, 'noSuchMethod', [2014]); // undefined
7487
7494
  ```
7488
7495
 
@@ -7514,7 +7521,7 @@ define("ember-metal/utils",
7514
7521
  })();
7515
7522
 
7516
7523
  /**
7517
- Provides try { } finally { } functionality, while working
7524
+ Provides try/finally functionality, while working
7518
7525
  around Safari's double finally bug.
7519
7526
 
7520
7527
  ```javascript
@@ -7522,9 +7529,11 @@ define("ember-metal/utils",
7522
7529
  someResource.lock();
7523
7530
  runCallback(); // May throw error.
7524
7531
  };
7532
+
7525
7533
  var finalizer = function() {
7526
7534
  someResource.unlock();
7527
7535
  };
7536
+
7528
7537
  Ember.tryFinally(tryable, finalizer);
7529
7538
  ```
7530
7539
 
@@ -7576,12 +7585,12 @@ define("ember-metal/utils",
7576
7585
  }
7577
7586
 
7578
7587
  /**
7579
- Provides try { } catch finally { } functionality, while working
7588
+ Provides try/catch/finally functionality, while working
7580
7589
  around Safari's double finally bug.
7581
7590
 
7582
7591
  ```javascript
7583
7592
  var tryable = function() {
7584
- for (i=0, l=listeners.length; i<l; i++) {
7593
+ for (i = 0, l = listeners.length; i < l; i++) {
7585
7594
  listener = listeners[i];
7586
7595
  beforeValues[i] = listener.before(name, time(), payload);
7587
7596
  }
@@ -7595,11 +7604,12 @@ define("ember-metal/utils",
7595
7604
  };
7596
7605
 
7597
7606
  var finalizer = function() {
7598
- for (i=0, l=listeners.length; i<l; i++) {
7607
+ for (i = 0, l = listeners.length; i < l; i++) {
7599
7608
  listener = listeners[i];
7600
7609
  listener.after(name, time(), payload, beforeValues[i]);
7601
7610
  }
7602
7611
  };
7612
+
7603
7613
  Ember.tryCatchFinally(tryable, catchable, finalizer);
7604
7614
  ```
7605
7615
 
@@ -7704,15 +7714,15 @@ define("ember-metal/utils",
7704
7714
  Ember.typeOf(true); // 'boolean'
7705
7715
  Ember.typeOf(new Boolean(true)); // 'boolean'
7706
7716
  Ember.typeOf(Ember.makeArray); // 'function'
7707
- Ember.typeOf([1,2,90]); // 'array'
7717
+ Ember.typeOf([1, 2, 90]); // 'array'
7708
7718
  Ember.typeOf(/abc/); // 'regexp'
7709
7719
  Ember.typeOf(new Date()); // 'date'
7710
7720
  Ember.typeOf(Ember.Object.extend()); // 'class'
7711
7721
  Ember.typeOf(Ember.Object.create()); // 'instance'
7712
7722
  Ember.typeOf(new Error('teamocil')); // 'error'
7713
7723
 
7714
- // "normal" JavaScript object
7715
- Ember.typeOf({a: 'b'}); // 'object'
7724
+ // 'normal' JavaScript object
7725
+ Ember.typeOf({ a: 'b' }); // 'object'
7716
7726
  ```
7717
7727
 
7718
7728
  @method typeOf
@@ -11243,7 +11253,7 @@ define("container/container",
11243
11253
 
11244
11254
  Optionally the container can be provided with a custom resolver.
11245
11255
  If provided, `resolve` will first provide the custom resolver
11246
- the oppertunity to resolve the fullName, otherwise it will fallback
11256
+ the opportunity to resolve the fullName, otherwise it will fallback
11247
11257
  to the registry.
11248
11258
 
11249
11259
  ```javascript
@@ -11330,7 +11340,7 @@ define("container/container",
11330
11340
 
11331
11341
  // by default the container will return singletons
11332
11342
  var twitter2 = container.lookup('api:twitter');
11333
- twitter instanceof Twitter; // => true
11343
+ twitter2 instanceof Twitter; // => true
11334
11344
 
11335
11345
  twitter === twitter2; //=> true
11336
11346
  ```
@@ -12224,7 +12234,7 @@ define("ember-runtime/computed/array_computed",
12224
12234
  The `initialize` function has the following signature:
12225
12235
 
12226
12236
  ```javascript
12227
- function (array, changeMeta, instanceMeta)
12237
+ function(array, changeMeta, instanceMeta)
12228
12238
  ```
12229
12239
 
12230
12240
  `array` - The initial value of the arrayComputed, an empty array.
@@ -12244,7 +12254,7 @@ define("ember-runtime/computed/array_computed",
12244
12254
  The `removedItem` and `addedItem` functions both have the following signature:
12245
12255
 
12246
12256
  ```javascript
12247
- function (accumulatedValue, item, changeMeta, instanceMeta)
12257
+ function(accumulatedValue, item, changeMeta, instanceMeta)
12248
12258
  ```
12249
12259
 
12250
12260
  `accumulatedValue` - The value returned from the last time
@@ -12417,8 +12427,12 @@ define("ember-runtime/computed/reduce_computed",
12417
12427
  // because we only have the key; instead we make the observers no-ops
12418
12428
  this.suspended = false;
12419
12429
 
12420
- // This is used to coalesce item changes from property observers.
12430
+ // This is used to coalesce item changes from property observers within a
12431
+ // single item.
12421
12432
  this.changedItems = {};
12433
+ // This is used to coalesce item changes for multiple items that depend on
12434
+ // some shared state.
12435
+ this.changedItemCount = 0;
12422
12436
  }
12423
12437
 
12424
12438
  function ItemPropertyObserverContext (dependentArray, index, trackedArray) {
@@ -12660,12 +12674,15 @@ define("ember-runtime/computed/reduce_computed",
12660
12674
  previousValues: {}
12661
12675
  };
12662
12676
  }
12677
+ ++this.changedItemCount;
12663
12678
 
12664
12679
  this.changedItems[guid].previousValues[keyName] = get(obj, keyName);
12665
12680
  },
12666
12681
 
12667
12682
  itemPropertyDidChange: function(obj, keyName, array, observerContext) {
12668
- this.flushChanges();
12683
+ if (--this.changedItemCount === 0) {
12684
+ this.flushChanges();
12685
+ }
12669
12686
  },
12670
12687
 
12671
12688
  flushChanges: function() {
@@ -13001,7 +13018,7 @@ define("ember-runtime/computed/reduce_computed",
13001
13018
  The `initialize` function has the following signature:
13002
13019
 
13003
13020
  ```javascript
13004
- function (initialValue, changeMeta, instanceMeta)
13021
+ function(initialValue, changeMeta, instanceMeta)
13005
13022
  ```
13006
13023
 
13007
13024
  `initialValue` - The value of the `initialValue` property from the
@@ -13022,7 +13039,7 @@ define("ember-runtime/computed/reduce_computed",
13022
13039
  The `removedItem` and `addedItem` functions both have the following signature:
13023
13040
 
13024
13041
  ```javascript
13025
- function (accumulatedValue, item, changeMeta, instanceMeta)
13042
+ function(accumulatedValue, item, changeMeta, instanceMeta)
13026
13043
  ```
13027
13044
 
13028
13045
  `accumulatedValue` - The value returned from the last time
@@ -13072,15 +13089,15 @@ define("ember-runtime/computed/reduce_computed",
13072
13089
  Example
13073
13090
 
13074
13091
  ```javascript
13075
- Ember.computed.max = function (dependentKey) {
13092
+ Ember.computed.max = function(dependentKey) {
13076
13093
  return Ember.reduceComputed(dependentKey, {
13077
13094
  initialValue: -Infinity,
13078
13095
 
13079
- addedItem: function (accumulatedValue, item, changeMeta, instanceMeta) {
13096
+ addedItem: function(accumulatedValue, item, changeMeta, instanceMeta) {
13080
13097
  return Math.max(accumulatedValue, item);
13081
13098
  },
13082
13099
 
13083
- removedItem: function (accumulatedValue, item, changeMeta, instanceMeta) {
13100
+ removedItem: function(accumulatedValue, item, changeMeta, instanceMeta) {
13084
13101
  if (item < accumulatedValue) {
13085
13102
  return accumulatedValue;
13086
13103
  }
@@ -13114,10 +13131,10 @@ define("ember-runtime/computed/reduce_computed",
13114
13131
  });
13115
13132
 
13116
13133
  App.PersonController = Ember.ObjectController.extend({
13117
- reversedName: function () {
13134
+ reversedName: function() {
13118
13135
  return reverse(get(this, 'name'));
13119
13136
  }.property('name')
13120
- })
13137
+ });
13121
13138
  ```
13122
13139
 
13123
13140
  Dependent keys whose values are not arrays are treated as regular
@@ -13248,12 +13265,13 @@ define("ember-runtime/computed/reduce_computed_macros",
13248
13265
  array is empty.
13249
13266
 
13250
13267
  ```javascript
13251
- App.Person = Ember.Object.extend({
13268
+ var Person = Ember.Object.extend({
13252
13269
  childAges: Ember.computed.mapBy('children', 'age'),
13253
13270
  maxChildAge: Ember.computed.max('childAges')
13254
13271
  });
13255
13272
 
13256
- var lordByron = App.Person.create({children: []});
13273
+ var lordByron = Person.create({ children: [] });
13274
+
13257
13275
  lordByron.get('maxChildAge'); // -Infinity
13258
13276
  lordByron.get('children').pushObject({
13259
13277
  name: 'Augusta Ada Byron', age: 7
@@ -13296,12 +13314,13 @@ define("ember-runtime/computed/reduce_computed_macros",
13296
13314
  array is empty.
13297
13315
 
13298
13316
  ```javascript
13299
- App.Person = Ember.Object.extend({
13317
+ var Person = Ember.Object.extend({
13300
13318
  childAges: Ember.computed.mapBy('children', 'age'),
13301
13319
  minChildAge: Ember.computed.min('childAges')
13302
13320
  });
13303
13321
 
13304
- var lordByron = App.Person.create({children: []});
13322
+ var lordByron = Person.create({ children: [] });
13323
+
13305
13324
  lordByron.get('minChildAge'); // Infinity
13306
13325
  lordByron.get('children').pushObject({
13307
13326
  name: 'Augusta Ada Byron', age: 7
@@ -13351,15 +13370,16 @@ define("ember-runtime/computed/reduce_computed_macros",
13351
13370
  Example
13352
13371
 
13353
13372
  ```javascript
13354
- App.Hamster = Ember.Object.extend({
13373
+ var Hamster = Ember.Object.extend({
13355
13374
  excitingChores: Ember.computed.map('chores', function(chore) {
13356
13375
  return chore.toUpperCase() + '!';
13357
13376
  })
13358
13377
  });
13359
13378
 
13360
- var hamster = App.Hamster.create({
13379
+ var hamster = Hamster.create({
13361
13380
  chores: ['clean', 'write more unit tests']
13362
13381
  });
13382
+
13363
13383
  hamster.get('excitingChores'); // ['CLEAN!', 'WRITE MORE UNIT TESTS!']
13364
13384
  ```
13365
13385
 
@@ -13389,13 +13409,14 @@ define("ember-runtime/computed/reduce_computed_macros",
13389
13409
  Returns an array mapped to the specified key.
13390
13410
 
13391
13411
  ```javascript
13392
- App.Person = Ember.Object.extend({
13412
+ var Person = Ember.Object.extend({
13393
13413
  childAges: Ember.computed.mapBy('children', 'age')
13394
13414
  });
13395
13415
 
13396
- var lordByron = App.Person.create({children: []});
13416
+ var lordByron = Person.create({ children: [] });
13417
+
13397
13418
  lordByron.get('childAges'); // []
13398
- lordByron.get('children').pushObject({name: 'Augusta Ada Byron', age: 7});
13419
+ lordByron.get('children').pushObject({ name: 'Augusta Ada Byron', age: 7 });
13399
13420
  lordByron.get('childAges'); // [7]
13400
13421
  lordByron.get('children').pushObjects([{
13401
13422
  name: 'Allegra Byron',
@@ -13438,17 +13459,20 @@ define("ember-runtime/computed/reduce_computed_macros",
13438
13459
  ```
13439
13460
 
13440
13461
  ```javascript
13441
- App.Hamster = Ember.Object.extend({
13462
+ var Hamster = Ember.Object.extend({
13442
13463
  remainingChores: Ember.computed.filter('chores', function(chore) {
13443
13464
  return !chore.done;
13444
13465
  })
13445
13466
  });
13446
13467
 
13447
- var hamster = App.Hamster.create({chores: [
13448
- {name: 'cook', done: true},
13449
- {name: 'clean', done: true},
13450
- {name: 'write more unit tests', done: false}
13451
- ]});
13468
+ var hamster = Hamster.create({
13469
+ chores: [
13470
+ { name: 'cook', done: true },
13471
+ { name: 'clean', done: true },
13472
+ { name: 'write more unit tests', done: false }
13473
+ ]
13474
+ });
13475
+
13452
13476
  hamster.get('remainingChores'); // [{name: 'write more unit tests', done: false}]
13453
13477
  ```
13454
13478
 
@@ -13493,16 +13517,19 @@ define("ember-runtime/computed/reduce_computed_macros",
13493
13517
  Filters the array by the property and value
13494
13518
 
13495
13519
  ```javascript
13496
- App.Hamster = Ember.Object.extend({
13520
+ var Hamster = Ember.Object.extend({
13497
13521
  remainingChores: Ember.computed.filterBy('chores', 'done', false)
13498
13522
  });
13499
13523
 
13500
- var hamster = App.Hamster.create({chores: [
13501
- {name: 'cook', done: true},
13502
- {name: 'clean', done: true},
13503
- {name: 'write more unit tests', done: false}
13504
- ]});
13505
- hamster.get('remainingChores'); // [{name: 'write more unit tests', done: false}]
13524
+ var hamster = Hamster.create({
13525
+ chores: [
13526
+ { name: 'cook', done: true },
13527
+ { name: 'clean', done: true },
13528
+ { name: 'write more unit tests', done: false }
13529
+ ]
13530
+ });
13531
+
13532
+ hamster.get('remainingChores'); // [{ name: 'write more unit tests', done: false }]
13506
13533
  ```
13507
13534
 
13508
13535
  @method computed.filterBy
@@ -13545,16 +13572,19 @@ define("ember-runtime/computed/reduce_computed_macros",
13545
13572
  Example
13546
13573
 
13547
13574
  ```javascript
13548
- App.Hamster = Ember.Object.extend({
13575
+ var Hamster = Ember.Object.extend({
13549
13576
  uniqueFruits: Ember.computed.uniq('fruits')
13550
13577
  });
13551
13578
 
13552
- var hamster = App.Hamster.create({fruits: [
13553
- 'banana',
13554
- 'grape',
13555
- 'kale',
13556
- 'banana'
13557
- ]});
13579
+ var hamster = Hamster.create({
13580
+ fruits: [
13581
+ 'banana',
13582
+ 'grape',
13583
+ 'kale',
13584
+ 'banana'
13585
+ ]
13586
+ });
13587
+
13558
13588
  hamster.get('uniqueFruits'); // ['banana', 'grape', 'kale']
13559
13589
  ```
13560
13590
 
@@ -13690,15 +13720,18 @@ define("ember-runtime/computed/reduce_computed_macros",
13690
13720
  Example
13691
13721
 
13692
13722
  ```javascript
13693
- App.Hamster = Ember.Object.extend({
13723
+ var Hamster = Ember.Object.extend({
13694
13724
  likes: ['banana', 'grape', 'kale'],
13695
13725
  wants: Ember.computed.setDiff('likes', 'fruits')
13696
13726
  });
13697
13727
 
13698
- var hamster = App.Hamster.create({fruits: [
13699
- 'grape',
13700
- 'kale',
13701
- ]});
13728
+ var hamster = Hamster.create({
13729
+ fruits: [
13730
+ 'grape',
13731
+ 'kale',
13732
+ ]
13733
+ });
13734
+
13702
13735
  hamster.get('wants'); // ['banana']
13703
13736
  ```
13704
13737
 
@@ -13830,18 +13863,20 @@ define("ember-runtime/computed/reduce_computed_macros",
13830
13863
  } else if (a.priority < b.priority) {
13831
13864
  return -1;
13832
13865
  }
13866
+
13833
13867
  return 0;
13834
13868
  }),
13835
13869
  });
13870
+
13836
13871
  var todoList = ToDoList.create({todos: [
13837
- {name: 'Unit Test', priority: 2},
13838
- {name: 'Documentation', priority: 3},
13839
- {name: 'Release', priority: 1}
13872
+ { name: 'Unit Test', priority: 2 },
13873
+ { name: 'Documentation', priority: 3 },
13874
+ { name: 'Release', priority: 1 }
13840
13875
  ]});
13841
13876
 
13842
- todoList.get('sortedTodos'); // [{name:'Documentation', priority:3}, {name:'Release', priority:1}, {name:'Unit Test', priority:2}]
13843
- todoList.get('sortedTodosDesc'); // [{name:'Unit Test', priority:2}, {name:'Release', priority:1}, {name:'Documentation', priority:3}]
13844
- todoList.get('priorityTodos'); // [{name:'Release', priority:1}, {name:'Unit Test', priority:2}, {name:'Documentation', priority:3}]
13877
+ todoList.get('sortedTodos'); // [{ name:'Documentation', priority:3 }, { name:'Release', priority:1 }, { name:'Unit Test', priority:2 }]
13878
+ todoList.get('sortedTodosDesc'); // [{ name:'Unit Test', priority:2 }, { name:'Release', priority:1 }, { name:'Documentation', priority:3 }]
13879
+ todoList.get('priorityTodos'); // [{ name:'Release', priority:1 }, { name:'Unit Test', priority:2 }, { name:'Documentation', priority:3 }]
13845
13880
  ```
13846
13881
 
13847
13882
  @method computed.sort
@@ -14444,7 +14479,7 @@ define("ember-runtime/core",
14444
14479
  ```javascript
14445
14480
  Ember.isEqual('hello', 'hello'); // true
14446
14481
  Ember.isEqual(1, 2); // false
14447
- Ember.isEqual([4,2], [4,2]); // false
14482
+ Ember.isEqual([4, 2], [4, 2]); // false
14448
14483
  ```
14449
14484
 
14450
14485
  @method isEqual
@@ -15815,37 +15850,28 @@ define("ember-runtime/mixins/deferred",
15815
15850
  var run = __dependency5__["default"];
15816
15851
  var RSVP = __dependency6__["default"];
15817
15852
 
15818
- if (Ember.FEATURES['ember-runtime-test-friendly-promises']) {
15819
-
15820
- var asyncStart = function() {
15821
- if (Ember.Test && Ember.Test.adapter) {
15822
- Ember.Test.adapter.asyncStart();
15823
- }
15824
- };
15853
+ var asyncStart = function() {
15854
+ if (Ember.Test && Ember.Test.adapter) {
15855
+ Ember.Test.adapter.asyncStart();
15856
+ }
15857
+ };
15825
15858
 
15826
- var asyncEnd = function() {
15827
- if (Ember.Test && Ember.Test.adapter) {
15828
- Ember.Test.adapter.asyncEnd();
15829
- }
15830
- };
15859
+ var asyncEnd = function() {
15860
+ if (Ember.Test && Ember.Test.adapter) {
15861
+ Ember.Test.adapter.asyncEnd();
15862
+ }
15863
+ };
15831
15864
 
15832
- RSVP.configure('async', function(callback, promise) {
15833
- var async = !run.currentRunLoop;
15865
+ RSVP.configure('async', function(callback, promise) {
15866
+ var async = !run.currentRunLoop;
15834
15867
 
15835
- if (Ember.testing && async) { asyncStart(); }
15868
+ if (Ember.testing && async) { asyncStart(); }
15836
15869
 
15837
- run.backburner.schedule('actions', function(){
15838
- if (Ember.testing && async) { asyncEnd(); }
15839
- callback(promise);
15840
- });
15870
+ run.backburner.schedule('actions', function(){
15871
+ if (Ember.testing && async) { asyncEnd(); }
15872
+ callback(promise);
15841
15873
  });
15842
- } else {
15843
- RSVP.configure('async', function(callback, promise) {
15844
- run.backburner.schedule('actions', function(){
15845
- callback(promise);
15846
- });
15847
- });
15848
- }
15874
+ });
15849
15875
 
15850
15876
  RSVP.Promise.prototype.fail = function(callback, label){
15851
15877
  Ember.deprecate('RSVP.Promise.fail has been renamed as RSVP.Promise.catch');
@@ -18578,7 +18604,7 @@ define("ember-runtime/mixins/sortable",
18578
18604
  return this._super();
18579
18605
  },
18580
18606
 
18581
- isSorted: computed.bool('sortProperties'),
18607
+ isSorted: computed.notEmpty('sortProperties'),
18582
18608
 
18583
18609
  /**
18584
18610
  Overrides the default arrangedContent from arrayProxy in order to sort by sortFunction.
@@ -20314,7 +20340,7 @@ define("ember-runtime/system/lazy_load",
20314
20340
  resolved from a string into the object:
20315
20341
 
20316
20342
  ``` javascript
20317
- Ember.onLoad('Ember.Handlebars' function(hbars){
20343
+ Ember.onLoad('Ember.Handlebars' function(hbars) {
20318
20344
  hbars.registerHelper(...);
20319
20345
  });
20320
20346
  ```
@@ -20729,10 +20755,11 @@ define("ember-runtime/system/native_array",
20729
20755
  var Pagination = Ember.CollectionView.extend({
20730
20756
  tagName: 'ul',
20731
20757
  classNames: ['pagination'],
20758
+
20732
20759
  init: function() {
20733
20760
  this._super();
20734
20761
  if (!this.get('content')) {
20735
- this.set('content', Ember.A([]));
20762
+ this.set('content', Ember.A());
20736
20763
  }
20737
20764
  }
20738
20765
  });
@@ -22455,7 +22482,7 @@ define("container/container",
22455
22482
 
22456
22483
  Optionally the container can be provided with a custom resolver.
22457
22484
  If provided, `resolve` will first provide the custom resolver
22458
- the oppertunity to resolve the fullName, otherwise it will fallback
22485
+ the opportunity to resolve the fullName, otherwise it will fallback
22459
22486
  to the registry.
22460
22487
 
22461
22488
  ```javascript
@@ -22542,7 +22569,7 @@ define("container/container",
22542
22569
 
22543
22570
  // by default the container will return singletons
22544
22571
  var twitter2 = container.lookup('api:twitter');
22545
- twitter instanceof Twitter; // => true
22572
+ twitter2 instanceof Twitter; // => true
22546
22573
 
22547
22574
  twitter === twitter2; //=> true
22548
22575
  ```