ember-source 1.6.0.beta.5 → 1.6.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: fc25ccb888bf671697975c7fc440e3c473204493
4
- data.tar.gz: 40f151ad28c789001b907fbd183742339ef81ec5
3
+ metadata.gz: 534b86d0f6071ad2f32ba4613dd1c16d69771f85
4
+ data.tar.gz: bfcc40b4faddf8c5f10b2713bfd0ed11a8ba86a7
5
5
  SHA512:
6
- metadata.gz: 7dd6c4a7d33bb9f2381a9ca3be370f252f6b3c809d8396fc93fe48e86d0c1bf579f87782522762298c3f39ed849038a8780220062388502c9e13ff577f6ad368
7
- data.tar.gz: 43fc0f5e4b01d8c07bf5586e03d1984f9123a456cd6f744b54482e1790ef465cdb5e86aea85f0b9af88a0d2ed669f0683330aa25c079cdf4e451379a3b71dc38
6
+ metadata.gz: c042f640493128abd61f99e39e607899c68482a36948edfc2eabf15f82443fea5284426b404249c30408683d4bd88344000f842d2200893a4b4723aaa5ec79d6
7
+ data.tar.gz: ef1863dd53ac98dcb02e28148106201fa4e9099e52ac86ddc4f6154311b7f2365011abeba28b0b97c1217f0202d42e53ab2589f37822ff8e75b35d6f5c84549d
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.6.0-beta.5
1
+ 1.6.0
@@ -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
  ```