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.
- checksums.yaml +4 -4
- data/VERSION +1 -1
- data/dist/ember-data-deps.js +204 -177
- data/dist/ember-data-deps.min.js +5 -5
- data/dist/ember-data-deps.prod.js +204 -177
- data/dist/ember-runtime.js +204 -177
- data/dist/ember-runtime.min.js +5 -5
- data/dist/ember-runtime.prod.js +204 -177
- data/dist/ember-spade.js +2 -2
- data/dist/ember-template-compiler.js +1 -1
- data/dist/ember-template-compiler.min.js +1 -1
- data/dist/ember-template-compiler.prod.js +1 -1
- data/dist/ember-tests.js +2 -2
- data/dist/ember.js +368 -205
- data/dist/ember.min.js +11 -11
- data/dist/ember.prod.js +366 -203
- metadata +4 -4
data/dist/ember-runtime.js
CHANGED
@@ -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
|
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
|
-
//
|
1078
|
-
//
|
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')
|
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
|
-
|
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
|
-
|
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
|
-
|
1292
|
+
var person = Person.create();
|
1295
1293
|
|
1296
|
-
|
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
|
-
|
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
|
-
|
1320
|
+
var president = President.create({
|
1323
1321
|
firstName: 'Barack',
|
1324
1322
|
lastName: 'Obama',
|
1325
1323
|
});
|
1326
1324
|
|
1327
|
-
|
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
|
-
|
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
|
-
|
1666
|
+
Example
|
1671
1667
|
|
1672
|
-
|
1673
|
-
|
1674
|
-
|
1675
|
-
|
1668
|
+
```javascript
|
1669
|
+
var ToDoList = Ember.Object.extend({
|
1670
|
+
done: Ember.computed.empty('todos')
|
1671
|
+
});
|
1676
1672
|
|
1677
|
-
|
1673
|
+
var todoList = ToDoList.create({
|
1674
|
+
todos: ['Unit Test', 'Documentation', 'Release']
|
1675
|
+
});
|
1678
1676
|
|
1679
|
-
|
1680
|
-
|
1681
|
-
|
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');
|
1712
|
+
hamster.get('hasStuff'); // true
|
1715
1713
|
hamster.get('backpack').clear(); // []
|
1716
|
-
hamster.get('hasStuff');
|
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');
|
2202
|
+
teddy.get('nickName'); // 'Teddy'
|
2205
2203
|
teddy.set('nickName', 'TeddyBear'); // 'TeddyBear'
|
2206
|
-
teddy.get('firstName');
|
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');
|
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');
|
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');
|
2273
|
+
hamster.get('wishList'); // 'Banana'
|
2276
2274
|
hamster.set('wishList', 'More Unit Tests');
|
2277
|
-
hamster.get('wishList');
|
2278
|
-
hamster.get('favoriteFood');
|
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
|
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
|
2354
|
+
@default '1.6.0'
|
2357
2355
|
@static
|
2358
2356
|
*/
|
2359
|
-
Ember.VERSION = '1.6.0
|
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
|
-
|
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
|
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:
|
7009
|
-
lastName:
|
7010
|
-
age:
|
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();
|
7402
|
-
Ember.isArray([]);
|
7403
|
-
Ember.isArray(
|
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');
|
7442
|
-
Ember.makeArray([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
|
-
|
7485
|
-
Ember.tryInvoke(d, '
|
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
|
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
|
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]);
|
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
|
-
//
|
7715
|
-
Ember.typeOf({a: 'b'});
|
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
|
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
|
-
|
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
|
-
|
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
|
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.
|
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
|
-
|
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
|
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
|
13092
|
+
Ember.computed.max = function(dependentKey) {
|
13076
13093
|
return Ember.reduceComputed(dependentKey, {
|
13077
13094
|
initialValue: -Infinity,
|
13078
13095
|
|
13079
|
-
addedItem: function
|
13096
|
+
addedItem: function(accumulatedValue, item, changeMeta, instanceMeta) {
|
13080
13097
|
return Math.max(accumulatedValue, item);
|
13081
13098
|
},
|
13082
13099
|
|
13083
|
-
removedItem: function
|
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
|
-
|
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 =
|
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
|
-
|
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 =
|
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
|
-
|
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 =
|
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
|
-
|
13412
|
+
var Person = Ember.Object.extend({
|
13393
13413
|
childAges: Ember.computed.mapBy('children', 'age')
|
13394
13414
|
});
|
13395
13415
|
|
13396
|
-
var lordByron =
|
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
|
-
|
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 =
|
13448
|
-
|
13449
|
-
|
13450
|
-
|
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
|
-
|
13520
|
+
var Hamster = Ember.Object.extend({
|
13497
13521
|
remainingChores: Ember.computed.filterBy('chores', 'done', false)
|
13498
13522
|
});
|
13499
13523
|
|
13500
|
-
var hamster =
|
13501
|
-
|
13502
|
-
|
13503
|
-
|
13504
|
-
|
13505
|
-
|
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
|
-
|
13575
|
+
var Hamster = Ember.Object.extend({
|
13549
13576
|
uniqueFruits: Ember.computed.uniq('fruits')
|
13550
13577
|
});
|
13551
13578
|
|
13552
|
-
var hamster =
|
13553
|
-
|
13554
|
-
|
13555
|
-
|
13556
|
-
|
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
|
-
|
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 =
|
13699
|
-
|
13700
|
-
|
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');
|
13843
|
-
todoList.get('sortedTodosDesc');
|
13844
|
-
todoList.get('priorityTodos');
|
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]);
|
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
|
-
|
15819
|
-
|
15820
|
-
|
15821
|
-
|
15822
|
-
|
15823
|
-
}
|
15824
|
-
};
|
15853
|
+
var asyncStart = function() {
|
15854
|
+
if (Ember.Test && Ember.Test.adapter) {
|
15855
|
+
Ember.Test.adapter.asyncStart();
|
15856
|
+
}
|
15857
|
+
};
|
15825
15858
|
|
15826
|
-
|
15827
|
-
|
15828
|
-
|
15829
|
-
|
15830
|
-
|
15859
|
+
var asyncEnd = function() {
|
15860
|
+
if (Ember.Test && Ember.Test.adapter) {
|
15861
|
+
Ember.Test.adapter.asyncEnd();
|
15862
|
+
}
|
15863
|
+
};
|
15831
15864
|
|
15832
|
-
|
15833
|
-
|
15865
|
+
RSVP.configure('async', function(callback, promise) {
|
15866
|
+
var async = !run.currentRunLoop;
|
15834
15867
|
|
15835
|
-
|
15868
|
+
if (Ember.testing && async) { asyncStart(); }
|
15836
15869
|
|
15837
|
-
|
15838
|
-
|
15839
|
-
|
15840
|
-
});
|
15870
|
+
run.backburner.schedule('actions', function(){
|
15871
|
+
if (Ember.testing && async) { asyncEnd(); }
|
15872
|
+
callback(promise);
|
15841
15873
|
});
|
15842
|
-
}
|
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.
|
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
|
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
|
-
|
22572
|
+
twitter2 instanceof Twitter; // => true
|
22546
22573
|
|
22547
22574
|
twitter === twitter2; //=> true
|
22548
22575
|
```
|