ember-source 2.2.1 → 2.3.0.beta.1

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: 8dd103d9ee225689de844209524899806d9a6b52
4
- data.tar.gz: ee61bde96238c3469d655af6629815c1742fa109
3
+ metadata.gz: 987389815feafd5a73278765ff968fd8250abc47
4
+ data.tar.gz: 9c4b5d1a0ec33c1b22607385985ea620861984e0
5
5
  SHA512:
6
- metadata.gz: 80240d5bd75f9e187e674a672adf7d704ed279944a62105901522371e8112a83aec182151dca3979969b59c4078d5021a2ff2c7e2f0c2aef8f690b5d4ad52c89
7
- data.tar.gz: e9b7a0613898856cb364050e48219edfb5cd946d8788d5e7709b6e264b59652c4a7451e6266f40c4848ac52864aca355f70e70dedc756d0d1b2b1b6b8c19903f
6
+ metadata.gz: 30e7b90369fbc10bcf604ca63bc53fa592d35b4aeddef818ee949bd96ad5cc2fa12b298876f98dce876082042219f4c66706ed9ed91d7934220c20d01c8914b0
7
+ data.tar.gz: 3bb440e2c99aeeccdda293655439e8d8b33596801e677edb25b6a7318c5f413eb41272c6364143b6b7910b5fc70a28448f03a6e2e82a67a07775ccbad6dff5f2
data/VERSION CHANGED
@@ -1 +1 @@
1
- 2.2.1
1
+ 2.3.0-beta.1
@@ -6,7 +6,7 @@
6
6
  * Portions Copyright 2008-2011 Apple Inc. All rights reserved.
7
7
  * @license Licensed under MIT license
8
8
  * See https://raw.github.com/emberjs/ember.js/master/LICENSE
9
- * @version 2.2.1
9
+ * @version 2.3.0-beta.1
10
10
  */
11
11
 
12
12
  var enifed, requireModule, require, requirejs, Ember;
@@ -43,6 +43,15 @@ var mainContext = this;
43
43
  requirejs = require = requireModule = function(name) {
44
44
  return internalRequire(name, null);
45
45
  }
46
+ require['default'] = require;
47
+
48
+ function missingModule(name, referrerName) {
49
+ if (referrerName) {
50
+ throw new Error('Could not find module ' + name + ' required by: ' + referrerName);
51
+ } else {
52
+ throw new Error('Could not find module ' + name);
53
+ }
54
+ }
46
55
 
47
56
  function internalRequire(name, referrerName) {
48
57
  var exports = seen[name];
@@ -54,24 +63,22 @@ var mainContext = this;
54
63
  exports = seen[name] = {};
55
64
 
56
65
  if (!registry[name]) {
57
- if (referrerName) {
58
- throw new Error('Could not find module ' + name + ' required by: ' + referrerName);
59
- } else {
60
- throw new Error('Could not find module ' + name);
61
- }
66
+ missingModule(name, referrerName);
62
67
  }
63
68
 
64
69
  var mod = registry[name];
65
70
  var deps = mod.deps;
66
71
  var callback = mod.callback;
67
- var reified = [];
68
72
  var length = deps.length;
73
+ var reified = new Array(length);;
69
74
 
70
75
  for (var i = 0; i < length; i++) {
71
76
  if (deps[i] === 'exports') {
72
- reified.push(exports);
77
+ reified[i] = exports;
78
+ } else if (deps[i] === 'require') {
79
+ reified[i] = require;
73
80
  } else {
74
- reified.push(internalRequire(deps[i], name));
81
+ reified[i] = internalRequire(deps[i], name);
75
82
  }
76
83
  }
77
84
 
@@ -1182,7 +1189,7 @@ enifed('backburner', ['exports', 'backburner/utils', 'backburner/platform', 'bac
1182
1189
  clearTimeout(item[2]);
1183
1190
  }
1184
1191
  });
1185
- enifed('container/container', ['exports', 'ember-metal/core', 'ember-metal/debug', 'ember-metal/dictionary', 'ember-metal/features'], function (exports, _emberMetalCore, _emberMetalDebug, _emberMetalDictionary, _emberMetalFeatures) {
1192
+ enifed('container/container', ['exports', 'ember-metal/core', 'ember-metal/debug', 'ember-metal/dictionary', 'ember-metal/features', 'container/owner', 'ember-runtime/mixins/container_proxy'], function (exports, _emberMetalCore, _emberMetalDebug, _emberMetalDictionary, _emberMetalFeatures, _containerOwner, _emberRuntimeMixinsContainer_proxy) {
1186
1193
  'use strict';
1187
1194
 
1188
1195
  /**
@@ -1200,12 +1207,24 @@ enifed('container/container', ['exports', 'ember-metal/core', 'ember-metal/debug
1200
1207
  */
1201
1208
  function Container(registry, options) {
1202
1209
  this.registry = registry;
1210
+ this.owner = options && options.owner ? options.owner : null;
1203
1211
  this.cache = _emberMetalDictionary.default(options && options.cache ? options.cache : null);
1204
1212
  this.factoryCache = _emberMetalDictionary.default(options && options.factoryCache ? options.factoryCache : null);
1205
1213
  this.validationCache = _emberMetalDictionary.default(options && options.validationCache ? options.validationCache : null);
1214
+
1215
+ if (_emberMetalFeatures.default('ember-container-inject-owner')) {
1216
+ this._fakeContainerToInject = _emberRuntimeMixinsContainer_proxy.buildFakeContainerWithDeprecations(this);
1217
+ }
1206
1218
  }
1207
1219
 
1208
1220
  Container.prototype = {
1221
+ /**
1222
+ @private
1223
+ @property owner
1224
+ @type Object
1225
+ */
1226
+ owner: null,
1227
+
1209
1228
  /**
1210
1229
  @private
1211
1230
  @property registry
@@ -1346,17 +1365,17 @@ enifed('container/container', ['exports', 'ember-metal/core', 'ember-metal/debug
1346
1365
  return !!injections._dynamic;
1347
1366
  }
1348
1367
 
1349
- function buildInjections(container) {
1368
+ function buildInjections() /* container, ...injections */{
1350
1369
  var hash = {};
1351
1370
 
1352
1371
  if (arguments.length > 1) {
1353
- var injectionArgs = Array.prototype.slice.call(arguments, 1);
1372
+ var container = arguments[0];
1354
1373
  var injections = [];
1355
1374
  var injection;
1356
1375
 
1357
- for (var i = 0, l = injectionArgs.length; i < l; i++) {
1358
- if (injectionArgs[i]) {
1359
- injections = injections.concat(injectionArgs[i]);
1376
+ for (var i = 1, l = arguments.length; i < l; i++) {
1377
+ if (arguments[i]) {
1378
+ injections = injections.concat(arguments[i]);
1360
1379
  }
1361
1380
  }
1362
1381
 
@@ -1403,6 +1422,14 @@ enifed('container/container', ['exports', 'ember-metal/core', 'ember-metal/debug
1403
1422
  factoryInjections._toString = registry.makeToString(factory, fullName);
1404
1423
 
1405
1424
  var injectedFactory = factory.extend(injections);
1425
+
1426
+ // TODO - remove all `container` injections when Ember reaches v3.0.0
1427
+ if (_emberMetalFeatures.default('ember-container-inject-owner')) {
1428
+ injectDeprecatedContainer(injectedFactory.prototype, container);
1429
+ } else {
1430
+ injectedFactory.prototype.container = container;
1431
+ }
1432
+
1406
1433
  injectedFactory.reopenClass(factoryInjections);
1407
1434
 
1408
1435
  if (factory && typeof factory._onLookup === 'function') {
@@ -1424,7 +1451,8 @@ enifed('container/container', ['exports', 'ember-metal/core', 'ember-metal/debug
1424
1451
 
1425
1452
  var injections = buildInjections(container, registry.getTypeInjections(type), registry.getInjections(fullName));
1426
1453
  injections._debugContainerKey = fullName;
1427
- injections.container = container;
1454
+
1455
+ _containerOwner.setOwner(injections, container.owner);
1428
1456
 
1429
1457
  return injections;
1430
1458
  }
@@ -1465,18 +1493,51 @@ enifed('container/container', ['exports', 'ember-metal/core', 'ember-metal/debug
1465
1493
 
1466
1494
  validationCache[fullName] = true;
1467
1495
 
1496
+ var obj = undefined;
1497
+
1468
1498
  if (typeof factory.extend === 'function') {
1469
1499
  // assume the factory was extendable and is already injected
1470
- return factory.create();
1500
+ obj = factory.create();
1471
1501
  } else {
1472
1502
  // assume the factory was extendable
1473
1503
  // to create time injections
1474
1504
  // TODO: support new'ing for instantiation and merge injections for pure JS Functions
1475
- return factory.create(injectionsFor(container, fullName));
1505
+ var injections = injectionsFor(container, fullName);
1506
+
1507
+ // Ensure that a container is available to an object during instantiation.
1508
+ // TODO - remove when Ember reaches v3.0.0
1509
+ if (_emberMetalFeatures.default('ember-container-inject-owner')) {
1510
+ // This "fake" container will be replaced after instantiation with a
1511
+ // property that raises deprecations every time it is accessed.
1512
+ injections.container = container._fakeContainerToInject;
1513
+ } else {
1514
+ injections.container = container;
1515
+ }
1516
+
1517
+ obj = factory.create(injections);
1518
+
1519
+ // TODO - remove when Ember reaches v3.0.0
1520
+ if (_emberMetalFeatures.default('ember-container-inject-owner')) {
1521
+ injectDeprecatedContainer(obj, container);
1522
+ }
1476
1523
  }
1524
+
1525
+ return obj;
1477
1526
  }
1478
1527
  }
1479
1528
 
1529
+ // TODO - remove when Ember reaches v3.0.0
1530
+ function injectDeprecatedContainer(object, container) {
1531
+ Object.defineProperty(object, 'container', {
1532
+ configurable: true,
1533
+ enumerable: false,
1534
+ get: function () {
1535
+ _emberMetalDebug.deprecate('Using the injected `container` is deprecated. Please use the `getOwner` helper instead to access the owner of this object.', false, { id: 'ember-application.injected-container', until: '3.0.0', url: 'http://emberjs.com/deprecations/v2.x#toc_injected-container-access' });
1536
+ return container;
1537
+ }
1538
+ });
1539
+ }
1540
+
1480
1541
  function eachDestroyable(container, callback) {
1481
1542
  var cache = container.cache;
1482
1543
  var keys = Object.keys(cache);
@@ -1516,19 +1577,79 @@ enifed('container/container', ['exports', 'ember-metal/core', 'ember-metal/debug
1516
1577
  }
1517
1578
  }
1518
1579
 
1519
- // Once registry / container reform is enabled, we no longer need to expose
1520
- // Container#_registry, since Container itself will be fully private.
1521
- if (!_emberMetalFeatures.default('ember-registry-container-reform')) {
1522
- Object.defineProperty(Container.prototype, '_registry', {
1523
- configurable: true,
1524
- enumerable: false,
1525
- get: function () {
1526
- return this.registry;
1580
+ exports.default = Container;
1581
+ });
1582
+ enifed('container/owner', ['exports', 'ember-metal/symbol'], function (exports, _emberMetalSymbol) {
1583
+ /**
1584
+ @module ember
1585
+ @submodule ember-runtime
1586
+ */
1587
+
1588
+ 'use strict';
1589
+
1590
+ exports.getOwner = getOwner;
1591
+ exports.setOwner = setOwner;
1592
+ var OWNER = _emberMetalSymbol.default('OWNER');
1593
+
1594
+ exports.OWNER = OWNER;
1595
+ /**
1596
+ Framework objects in an Ember application (components, services, routes, etc.)
1597
+ are created via a factory and dependency injection system. Each of these
1598
+ objects is the responsibility of an "owner", which handled its
1599
+ instantiation and manages its lifetime.
1600
+
1601
+ `getOwner` fetches the owner object responsible for an instance. This can
1602
+ be used to lookup or resolve other class instances, or register new factories
1603
+ into the owner.
1604
+
1605
+ For example, this component dynamically looks up a service based on the
1606
+ `audioType` passed as an attribute:
1607
+
1608
+ ```
1609
+ // app/components/play-audio.js
1610
+ import Ember from 'ember';
1611
+
1612
+ // Usage:
1613
+ //
1614
+ // {{play-audio audioType=model.audioType audioFile=model.file}}
1615
+ //
1616
+ export default Ember.Component.extend({
1617
+ audioService: Ember.computed('audioType', function() {
1618
+ let owner = Ember.getOwner(this);
1619
+ return owner.lookup(`service:${this.get('audioType')}`);
1620
+ }),
1621
+ click() {
1622
+ let player = this.get('audioService');
1623
+ player.play(this.get('audioFile'));
1527
1624
  }
1528
1625
  });
1626
+ ```
1627
+
1628
+ @method getOwner
1629
+ @param {Object} object A object with an owner.
1630
+ @return {Object} an owner object.
1631
+ @for Ember
1632
+ @public
1633
+ */
1634
+
1635
+ function getOwner(object) {
1636
+ return object[OWNER];
1529
1637
  }
1530
1638
 
1531
- exports.default = Container;
1639
+ /**
1640
+ `setOwner` forces a new owner on a given object instance. This is primarily
1641
+ useful in some testing cases.
1642
+
1643
+ @method setOwner
1644
+ @param {Object} object A object with an owner.
1645
+ @return {Object} an owner object.
1646
+ @for Ember
1647
+ @public
1648
+ */
1649
+
1650
+ function setOwner(object, owner) {
1651
+ object[OWNER] = owner;
1652
+ }
1532
1653
  });
1533
1654
  enifed('container/registry', ['exports', 'ember-metal/debug', 'ember-metal/dictionary', 'ember-metal/assign', 'container/container'], function (exports, _emberMetalDebug, _emberMetalDictionary, _emberMetalAssign, _containerContainer) {
1534
1655
  'use strict';
@@ -2192,7 +2313,7 @@ enifed('container/registry', ['exports', 'ember-metal/debug', 'ember-metal/dicti
2192
2313
 
2193
2314
  exports.default = Registry;
2194
2315
  });
2195
- enifed('container', ['exports', 'ember-metal/core', 'container/registry', 'container/container'], function (exports, _emberMetalCore, _containerRegistry, _containerContainer) {
2316
+ enifed('container', ['exports', 'ember-metal/core', 'container/registry', 'container/container', 'container/owner'], function (exports, _emberMetalCore, _containerRegistry, _containerContainer, _containerOwner) {
2196
2317
  'use strict';
2197
2318
 
2198
2319
  /*
@@ -2215,6 +2336,8 @@ enifed('container', ['exports', 'ember-metal/core', 'container/registry', 'conta
2215
2336
 
2216
2337
  exports.Registry = _containerRegistry.default;
2217
2338
  exports.Container = _containerContainer.default;
2339
+ exports.getOwner = _containerOwner.getOwner;
2340
+ exports.setOwner = _containerOwner.setOwner;
2218
2341
  });
2219
2342
  enifed('ember-metal/alias', ['exports', 'ember-metal/debug', 'ember-metal/property_get', 'ember-metal/property_set', 'ember-metal/error', 'ember-metal/properties', 'ember-metal/computed', 'ember-metal/utils', 'ember-metal/meta', 'ember-metal/dependent_keys'], function (exports, _emberMetalDebug, _emberMetalProperty_get, _emberMetalProperty_set, _emberMetalError, _emberMetalProperties, _emberMetalComputed, _emberMetalUtils, _emberMetalMeta, _emberMetalDependent_keys) {
2220
2343
  'use strict';
@@ -2990,7 +3113,7 @@ enifed('ember-metal/chains', ['exports', 'ember-metal/debug', 'ember-metal/prope
2990
3113
  return;
2991
3114
  }
2992
3115
 
2993
- var m = obj.__ember_meta__;
3116
+ var m = _emberMetalMeta.peekMeta(obj);
2994
3117
 
2995
3118
  if (!m || !m.readableChainWatchers()) {
2996
3119
  return;
@@ -3038,7 +3161,7 @@ enifed('ember-metal/chains', ['exports', 'ember-metal/debug', 'ember-metal/prope
3038
3161
  return;
3039
3162
  }
3040
3163
 
3041
- var meta = obj['__ember_meta__'];
3164
+ var meta = _emberMetalMeta.peekMeta(obj);
3042
3165
 
3043
3166
  // check if object meant only to be a prototype
3044
3167
  if (meta && meta.proto === obj) {
@@ -3244,7 +3367,7 @@ enifed('ember-metal/chains', ['exports', 'ember-metal/debug', 'ember-metal/prope
3244
3367
 
3245
3368
  function finishChains(obj) {
3246
3369
  // We only create meta if we really have to
3247
- var m = obj.__ember_meta__;
3370
+ var m = _emberMetalMeta.peekMeta(obj);
3248
3371
  if (m) {
3249
3372
  m = _emberMetalMeta.meta(obj);
3250
3373
 
@@ -3560,7 +3683,7 @@ enifed('ember-metal/computed', ['exports', 'ember-metal/debug', 'ember-metal/pro
3560
3683
  }
3561
3684
 
3562
3685
  // don't create objects just to invalidate
3563
- var meta = obj.__ember_meta__;
3686
+ var meta = _emberMetalMeta.peekMeta(obj);
3564
3687
  if (!meta || meta.source !== obj) {
3565
3688
  return;
3566
3689
  }
@@ -3784,22 +3907,20 @@ enifed('ember-metal/computed', ['exports', 'ember-metal/debug', 'ember-metal/pro
3784
3907
  computed property function. You can use this helper to define properties
3785
3908
  with mixins or via `Ember.defineProperty()`.
3786
3909
 
3787
- If you pass function as argument - it will be used as getter.
3788
- You can pass hash with two functions - instead of single function - as argument to provide both getter and setter.
3789
-
3790
- The `get` function should accept two parameters, `key` and `value`. If `value` is not
3791
- undefined you should set the `value` first. In either case return the
3792
- current value of the property.
3793
-
3794
- A computed property defined in this way might look like this:
3910
+ If you pass a function as an argument, it will be used as a getter. A computed
3911
+ property defined in this way might look like this:
3795
3912
 
3796
3913
  ```js
3797
3914
  let Person = Ember.Object.extend({
3798
- firstName: 'Betty',
3799
- lastName: 'Jones',
3915
+ init() {
3916
+ this._super(...arguments);
3917
+
3918
+ this.firstName = 'Betty';
3919
+ this.lastName = 'Jones';
3920
+ },
3800
3921
 
3801
3922
  fullName: Ember.computed('firstName', 'lastName', function() {
3802
- return this.get('firstName') + ' ' + this.get('lastName');
3923
+ return `${this.get('firstName')} ${this.get('lastName')}`;
3803
3924
  })
3804
3925
  });
3805
3926
 
@@ -3811,14 +3932,45 @@ enifed('ember-metal/computed', ['exports', 'ember-metal/debug', 'ember-metal/pro
3811
3932
  client.get('fullName'); // 'Betty Fuller'
3812
3933
  ```
3813
3934
 
3935
+ You can pass a hash with two functions, `get` and `set`, as an
3936
+ argument to provide both a getter and setter:
3937
+
3938
+ ```js
3939
+ let Person = Ember.Object.extend({
3940
+ init() {
3941
+ this._super(...arguments);
3942
+
3943
+ this.firstName = 'Betty';
3944
+ this.lastName = 'Jones';
3945
+ },
3946
+
3947
+ fullName: Ember.computed({
3948
+ get(key) {
3949
+ return `${this.get('firstName')} ${this.get('lastName')}`;
3950
+ },
3951
+ set(key, value) {
3952
+ let [firstName, lastName] = value.split(/\s+/);
3953
+ this.setProperties({ firstName, lastName });
3954
+ return value;
3955
+ }
3956
+ });
3957
+ })
3958
+
3959
+ let client = Person.create();
3960
+ client.get('firstName'); // 'Betty'
3961
+
3962
+ client.set('fullName', 'Carroll Fuller');
3963
+ client.get('firstName'); // 'Carroll'
3964
+ ```
3965
+
3966
+ The `set` function should accept two parameters, `key` and `value`. The value
3967
+ returned from `set` will be the new value of the property.
3968
+
3814
3969
  _Note: This is the preferred way to define computed properties when writing third-party
3815
3970
  libraries that depend on or use Ember, since there is no guarantee that the user
3816
- will have prototype extensions enabled._
3971
+ will have [prototype Extensions](http://emberjs.com/guides/configuring-ember/disabling-prototype-extensions/) enabled._
3817
3972
 
3818
- You might use this method if you disabled
3819
- [Prototype Extensions](http://emberjs.com/guides/configuring-ember/disabling-prototype-extensions/).
3820
- The alternative syntax might look like this
3821
- (if prototype extensions are enabled, which is the default behavior):
3973
+ The alternative syntax, with prototype extensions, might look like:
3822
3974
 
3823
3975
  ```js
3824
3976
  fullName() {
@@ -3868,7 +4020,7 @@ enifed('ember-metal/computed', ['exports', 'ember-metal/debug', 'ember-metal/pro
3868
4020
  @public
3869
4021
  */
3870
4022
  function cacheFor(obj, key) {
3871
- var meta = obj.__ember_meta__;
4023
+ var meta = _emberMetalMeta.peekMeta(obj);
3872
4024
  var cache = meta && meta.source === obj && meta.readableCache();
3873
4025
  var ret = cache && cache[key];
3874
4026
 
@@ -3902,7 +4054,7 @@ enifed('ember-metal/computed', ['exports', 'ember-metal/debug', 'ember-metal/pro
3902
4054
  exports.computed = computed;
3903
4055
  exports.cacheFor = cacheFor;
3904
4056
  });
3905
- enifed('ember-metal/computed_macros', ['exports', 'ember-metal/core', 'ember-metal/debug', 'ember-metal/property_get', 'ember-metal/property_set', 'ember-metal/computed', 'ember-metal/is_empty', 'ember-metal/is_none', 'ember-metal/alias'], function (exports, _emberMetalCore, _emberMetalDebug, _emberMetalProperty_get, _emberMetalProperty_set, _emberMetalComputed, _emberMetalIs_empty, _emberMetalIs_none, _emberMetalAlias) {
4057
+ enifed('ember-metal/computed_macros', ['exports', 'ember-metal/debug', 'ember-metal/property_get', 'ember-metal/property_set', 'ember-metal/computed', 'ember-metal/is_empty', 'ember-metal/is_none', 'ember-metal/alias'], function (exports, _emberMetalDebug, _emberMetalProperty_get, _emberMetalProperty_set, _emberMetalComputed, _emberMetalIs_empty, _emberMetalIs_none, _emberMetalAlias) {
3906
4058
  'use strict';
3907
4059
 
3908
4060
  exports.empty = empty;
@@ -4408,47 +4560,6 @@ enifed('ember-metal/computed_macros', ['exports', 'ember-metal/core', 'ember-met
4408
4560
  });
4409
4561
 
4410
4562
  exports.or = or;
4411
- /**
4412
- A computed property that returns the array of values
4413
- for the provided dependent properties.
4414
-
4415
- Example
4416
-
4417
- ```javascript
4418
- var Hamster = Ember.Object.extend({
4419
- clothes: Ember.computed.collect('hat', 'shirt')
4420
- });
4421
-
4422
- var hamster = Hamster.create();
4423
-
4424
- hamster.get('clothes'); // [null, null]
4425
- hamster.set('hat', 'Camp Hat');
4426
- hamster.set('shirt', 'Camp Shirt');
4427
- hamster.get('clothes'); // ['Camp Hat', 'Camp Shirt']
4428
- ```
4429
-
4430
- @method collect
4431
- @for Ember.computed
4432
- @param {String} dependentKey*
4433
- @return {Ember.ComputedProperty} computed property which maps
4434
- values of all passed in properties to an array.
4435
- @public
4436
- */
4437
- var collect = generateComputedWithProperties(function (properties) {
4438
- var res = _emberMetalCore.default.A();
4439
- for (var key in properties) {
4440
- if (properties.hasOwnProperty(key)) {
4441
- if (_emberMetalIs_none.default(properties[key])) {
4442
- res.push(null);
4443
- } else {
4444
- res.push(properties[key]);
4445
- }
4446
- }
4447
- }
4448
- return res;
4449
- });
4450
-
4451
- exports.collect = collect;
4452
4563
  /**
4453
4564
  Creates a new property that is an alias for another property
4454
4565
  on an object. Calls to `get` or `set` this property behave as
@@ -4619,7 +4730,7 @@ enifed('ember-metal/core', ['exports'], function (exports) {
4619
4730
 
4620
4731
  @class Ember
4621
4732
  @static
4622
- @version 2.2.1
4733
+ @version 2.3.0-beta.1
4623
4734
  @public
4624
4735
  */
4625
4736
 
@@ -4663,11 +4774,11 @@ enifed('ember-metal/core', ['exports'], function (exports) {
4663
4774
 
4664
4775
  @property VERSION
4665
4776
  @type String
4666
- @default '2.2.1'
4777
+ @default '2.3.0-beta.1'
4667
4778
  @static
4668
4779
  @public
4669
4780
  */
4670
- Ember.VERSION = '2.2.1';
4781
+ Ember.VERSION = '2.3.0-beta.1';
4671
4782
 
4672
4783
  /**
4673
4784
  The hash of environment variables used to control various configuration
@@ -5122,7 +5233,7 @@ enifed('ember-metal/events', ['exports', 'ember-metal/debug', 'ember-metal/utils
5122
5233
  }
5123
5234
 
5124
5235
  function accumulateListeners(obj, eventName, otherActions) {
5125
- var meta = obj['__ember_meta__'];
5236
+ var meta = _emberMetalMeta.peekMeta(obj);
5126
5237
  if (!meta) {
5127
5238
  return;
5128
5239
  }
@@ -5282,7 +5393,7 @@ enifed('ember-metal/events', ['exports', 'ember-metal/debug', 'ember-metal/utils
5282
5393
 
5283
5394
  function sendEvent(obj, eventName, params, actions) {
5284
5395
  if (!actions) {
5285
- var meta = obj['__ember_meta__'];
5396
+ var meta = _emberMetalMeta.peekMeta(obj);
5286
5397
  actions = meta && meta.matchingListeners(eventName);
5287
5398
  }
5288
5399
 
@@ -5334,7 +5445,7 @@ enifed('ember-metal/events', ['exports', 'ember-metal/debug', 'ember-metal/utils
5334
5445
  */
5335
5446
 
5336
5447
  function hasListeners(obj, eventName) {
5337
- var meta = obj['__ember_meta__'];
5448
+ var meta = _emberMetalMeta.peekMeta(obj);
5338
5449
  if (!meta) {
5339
5450
  return false;
5340
5451
  }
@@ -5351,7 +5462,7 @@ enifed('ember-metal/events', ['exports', 'ember-metal/debug', 'ember-metal/utils
5351
5462
 
5352
5463
  function listenersFor(obj, eventName) {
5353
5464
  var ret = [];
5354
- var meta = obj['__ember_meta__'];
5465
+ var meta = _emberMetalMeta.peekMeta(obj);
5355
5466
  var actions = meta && meta.matchingListeners(eventName);
5356
5467
 
5357
5468
  if (!actions) {
@@ -5577,7 +5688,7 @@ enifed('ember-metal/get_properties', ['exports', 'ember-metal/property_get'], fu
5577
5688
  return ret;
5578
5689
  }
5579
5690
  });
5580
- enifed('ember-metal/injected_property', ['exports', 'ember-metal/debug', 'ember-metal/computed', 'ember-metal/alias', 'ember-metal/properties'], function (exports, _emberMetalDebug, _emberMetalComputed, _emberMetalAlias, _emberMetalProperties) {
5691
+ enifed('ember-metal/injected_property', ['exports', 'ember-metal/debug', 'ember-metal/computed', 'ember-metal/alias', 'ember-metal/properties', 'container/owner'], function (exports, _emberMetalDebug, _emberMetalComputed, _emberMetalAlias, _emberMetalProperties, _containerOwner) {
5581
5692
  'use strict';
5582
5693
 
5583
5694
  /**
@@ -5601,11 +5712,12 @@ enifed('ember-metal/injected_property', ['exports', 'ember-metal/debug', 'ember-
5601
5712
 
5602
5713
  function injectedPropertyGet(keyName) {
5603
5714
  var desc = this[keyName];
5715
+ var owner = _containerOwner.getOwner(this);
5604
5716
 
5605
5717
  _emberMetalDebug.assert('InjectedProperties should be defined with the Ember.inject computed property macros.', desc && desc.isDescriptor && desc.type);
5606
- _emberMetalDebug.assert('Attempting to lookup an injected property on an object without a container, ensure that the object was instantiated via a container.', this.container);
5718
+ _emberMetalDebug.assert('Attempting to lookup an injected property on an object without a container, ensure that the object was instantiated via a container.', owner);
5607
5719
 
5608
- return this.container.lookup(desc.type + ':' + (desc.name || keyName));
5720
+ return owner.lookup(desc.type + ':' + (desc.name || keyName));
5609
5721
  }
5610
5722
 
5611
5723
  InjectedProperty.prototype = Object.create(_emberMetalProperties.Descriptor.prototype);
@@ -5928,6 +6040,8 @@ enifed('ember-metal/is_empty', ['exports', 'ember-metal/property_get', 'ember-me
5928
6040
  Ember.isEmpty({}); // false
5929
6041
  Ember.isEmpty('Adam Hawkins'); // false
5930
6042
  Ember.isEmpty([0,1,2]); // false
6043
+ Ember.isEmpty('\n\t'); // false
6044
+ Ember.isEmpty(' '); // false
5931
6045
  ```
5932
6046
 
5933
6047
  @method isEmpty
@@ -6797,6 +6911,8 @@ enifed('ember-metal/meta', ['exports', 'ember-metal/meta_listeners', 'ember-meta
6797
6911
  // https://bugs.webkit.org/show_bug.cgi?id=138038 is fixed
6798
6912
 
6799
6913
  exports.meta = meta;
6914
+ exports.peekMeta = peekMeta;
6915
+ exports.deleteMeta = deleteMeta;
6800
6916
 
6801
6917
  /**
6802
6918
  @module ember-metal
@@ -6835,6 +6951,7 @@ enifed('ember-metal/meta', ['exports', 'ember-metal/meta_listeners', 'ember-meta
6835
6951
  };
6836
6952
 
6837
6953
  var memberNames = Object.keys(members);
6954
+ var META_FIELD = '__ember_meta__';
6838
6955
 
6839
6956
  function Meta(obj, parentMeta) {
6840
6957
  this._cache = undefined;
@@ -7093,14 +7210,25 @@ enifed('ember-metal/meta', ['exports', 'ember-metal/meta_listeners', 'ember-meta
7093
7210
 
7094
7211
  exports.META_DESC = META_DESC;
7095
7212
  var EMBER_META_PROPERTY = {
7096
- name: '__ember_meta__',
7213
+ name: META_FIELD,
7097
7214
  descriptor: META_DESC
7098
7215
  };
7099
7216
 
7100
- // Placeholder for non-writable metas.
7101
- var EMPTY_META = new Meta(null);
7217
+ // choose the one appropriate for given platform
7218
+ var setMeta = function (obj, meta) {
7219
+ // if `null` already, just set it to the new value
7220
+ // otherwise define property first
7221
+ if (obj[META_FIELD] !== null) {
7222
+ if (obj.__defineNonEnumerable) {
7223
+ obj.__defineNonEnumerable(EMBER_META_PROPERTY);
7224
+ } else {
7225
+ Object.defineProperty(obj, META_FIELD, META_DESC);
7226
+ }
7227
+ }
7228
+
7229
+ obj[META_FIELD] = meta;
7230
+ };
7102
7231
 
7103
- exports.EMPTY_META = EMPTY_META;
7104
7232
  /**
7105
7233
  Retrieves the meta hash for an object. If `writable` is true ensures the
7106
7234
  hash is writable for this object as well.
@@ -7120,34 +7248,32 @@ enifed('ember-metal/meta', ['exports', 'ember-metal/meta_listeners', 'ember-meta
7120
7248
  @return {Object} the meta hash for an object
7121
7249
  */
7122
7250
 
7123
- function meta(obj, writable) {
7124
- var ret = obj.__ember_meta__;
7125
- if (writable === false) {
7126
- return ret || EMPTY_META;
7127
- }
7251
+ function meta(obj) {
7252
+ var maybeMeta = peekMeta(obj);
7253
+ var parent = undefined;
7128
7254
 
7129
- if (ret && ret.source === obj) {
7130
- return ret;
7255
+ // remove this code, in-favor of explicit parent
7256
+ if (maybeMeta) {
7257
+ if (maybeMeta.source === obj) {
7258
+ return maybeMeta;
7259
+ }
7260
+ parent = maybeMeta;
7131
7261
  }
7132
7262
 
7133
- if (!ret) {
7134
- ret = new Meta(obj);
7135
- } else {
7136
- ret = new Meta(obj, ret);
7137
- }
7263
+ var newMeta = new Meta(obj, parent);
7264
+ setMeta(obj, newMeta);
7265
+ return newMeta;
7266
+ }
7138
7267
 
7139
- // if `null` already, just set it to the new value
7140
- // otherwise define property first
7141
- if (obj.__ember_meta__ !== null) {
7142
- if (obj.__defineNonEnumerable) {
7143
- obj.__defineNonEnumerable(EMBER_META_PROPERTY);
7144
- } else {
7145
- Object.defineProperty(obj, '__ember_meta__', META_DESC);
7146
- }
7147
- }
7148
- obj.__ember_meta__ = ret;
7268
+ function peekMeta(obj) {
7269
+ return obj[META_FIELD];
7270
+ }
7149
7271
 
7150
- return ret;
7272
+ function deleteMeta(obj) {
7273
+ if (typeof obj[META_FIELD] !== 'object') {
7274
+ return;
7275
+ }
7276
+ obj[META_FIELD] = null;
7151
7277
  }
7152
7278
  });
7153
7279
  enifed('ember-metal/meta_listeners', ['exports'], function (exports) {
@@ -7332,7 +7458,6 @@ enifed('ember-metal/mixin', ['exports', 'ember-metal/core', 'ember-metal/error',
7332
7458
  @module ember
7333
7459
  @submodule ember-metal
7334
7460
  */
7335
-
7336
7461
  exports.mixin = mixin;
7337
7462
  exports.default = Mixin;
7338
7463
  exports.required = required;
@@ -7822,6 +7947,10 @@ enifed('ember-metal/mixin', ['exports', 'ember-metal/core', 'ember-metal/error',
7822
7947
  this.mixins = undefined;
7823
7948
  }
7824
7949
  this.ownerConstructor = undefined;
7950
+ this._without = undefined;
7951
+ this[_emberMetalUtils.GUID_KEY] = null;
7952
+ this[_emberMetalUtils.GUID_KEY + '_name'] = null;
7953
+ _emberMetalDebug.debugSeal(this);
7825
7954
  }
7826
7955
 
7827
7956
  Mixin._apply = applyMixin;
@@ -7938,7 +8067,7 @@ enifed('ember-metal/mixin', ['exports', 'ember-metal/core', 'ember-metal/error',
7938
8067
  if (obj instanceof Mixin) {
7939
8068
  return _detect(obj, this, {});
7940
8069
  }
7941
- var m = obj.__ember_meta__;
8070
+ var m = _emberMetalMeta.peekMeta(obj);
7942
8071
  if (!m) {
7943
8072
  return false;
7944
8073
  }
@@ -7989,10 +8118,12 @@ enifed('ember-metal/mixin', ['exports', 'ember-metal/core', 'ember-metal/error',
7989
8118
  return ret;
7990
8119
  };
7991
8120
 
8121
+ _emberMetalDebug.debugSeal(MixinPrototype);
8122
+
7992
8123
  // returns the mixins currently applied to the specified object
7993
8124
  // TODO: Make Ember.mixin
7994
8125
  Mixin.mixins = function (obj) {
7995
- var m = obj['__ember_meta__'];
8126
+ var m = _emberMetalMeta.peekMeta(obj);
7996
8127
  var ret = [];
7997
8128
  if (!m) {
7998
8129
  return ret;
@@ -8083,7 +8214,7 @@ enifed('ember-metal/mixin', ['exports', 'ember-metal/core', 'ember-metal/error',
8083
8214
  @param {String} propertyNames*
8084
8215
  @param {Function} func
8085
8216
  @return func
8086
- @private
8217
+ @public
8087
8218
  */
8088
8219
 
8089
8220
  function observer() {
@@ -8598,10 +8729,10 @@ enifed('ember-metal/properties', ['exports', 'ember-metal/debug', 'ember-metal/f
8598
8729
  return this;
8599
8730
  }
8600
8731
  });
8601
- enifed('ember-metal/property_events', ['exports', 'ember-metal/utils', 'ember-metal/events', 'ember-metal/observer_set'], function (exports, _emberMetalUtils, _emberMetalEvents, _emberMetalObserver_set) {
8732
+ enifed('ember-metal/property_events', ['exports', 'ember-metal/utils', 'ember-metal/meta', 'ember-metal/events', 'ember-metal/observer_set', 'ember-metal/symbol'], function (exports, _emberMetalUtils, _emberMetalMeta, _emberMetalEvents, _emberMetalObserver_set, _emberMetalSymbol) {
8602
8733
  'use strict';
8603
8734
 
8604
- var PROPERTY_DID_CHANGE = _emberMetalUtils.symbol('PROPERTY_DID_CHANGE');
8735
+ var PROPERTY_DID_CHANGE = _emberMetalSymbol.default('PROPERTY_DID_CHANGE');
8605
8736
 
8606
8737
  exports.PROPERTY_DID_CHANGE = PROPERTY_DID_CHANGE;
8607
8738
  var beforeObserverSet = new _emberMetalObserver_set.default();
@@ -8629,7 +8760,7 @@ enifed('ember-metal/property_events', ['exports', 'ember-metal/utils', 'ember-me
8629
8760
  @private
8630
8761
  */
8631
8762
  function propertyWillChange(obj, keyName) {
8632
- var m = obj['__ember_meta__'];
8763
+ var m = _emberMetalMeta.peekMeta(obj);
8633
8764
  var watching = m && m.peekWatching(keyName) > 0 || keyName === 'length';
8634
8765
  var proto = m && m.proto;
8635
8766
  var possibleDesc = obj[keyName];
@@ -8669,7 +8800,7 @@ enifed('ember-metal/property_events', ['exports', 'ember-metal/utils', 'ember-me
8669
8800
  @private
8670
8801
  */
8671
8802
  function propertyDidChange(obj, keyName) {
8672
- var m = obj['__ember_meta__'];
8803
+ var m = _emberMetalMeta.peekMeta(obj);
8673
8804
  var watching = m && m.peekWatching(keyName) > 0 || keyName === 'length';
8674
8805
  var proto = m && m.proto;
8675
8806
  var possibleDesc = obj[keyName];
@@ -8881,7 +9012,7 @@ enifed('ember-metal/property_events', ['exports', 'ember-metal/utils', 'ember-me
8881
9012
  exports.endPropertyChanges = endPropertyChanges;
8882
9013
  exports.changeProperties = changeProperties;
8883
9014
  });
8884
- enifed('ember-metal/property_get', ['exports', 'ember-metal/core', 'ember-metal/debug', 'ember-metal/features', 'ember-metal/error', 'ember-metal/path_cache'], function (exports, _emberMetalCore, _emberMetalDebug, _emberMetalFeatures, _emberMetalError, _emberMetalPath_cache) {
9015
+ enifed('ember-metal/property_get', ['exports', 'ember-metal/core', 'ember-metal/debug', 'ember-metal/features', 'ember-metal/error', 'ember-metal/path_cache', 'ember-metal/meta'], function (exports, _emberMetalCore, _emberMetalDebug, _emberMetalFeatures, _emberMetalError, _emberMetalPath_cache, _emberMetalMeta) {
8885
9016
  /**
8886
9017
  @module ember-metal
8887
9018
  */
@@ -8939,9 +9070,9 @@ enifed('ember-metal/property_get', ['exports', 'ember-metal/core', 'ember-metal/
8939
9070
  return obj;
8940
9071
  }
8941
9072
 
8942
- var meta = obj['__ember_meta__'];
8943
- var possibleDesc = obj[keyName];
8944
- var desc = possibleDesc !== null && typeof possibleDesc === 'object' && possibleDesc.isDescriptor ? possibleDesc : undefined;
9073
+ var meta = _emberMetalMeta.peekMeta(obj);
9074
+ var value = obj[keyName];
9075
+ var desc = value !== null && typeof value === 'object' && value.isDescriptor ? value : undefined;
8945
9076
  var ret;
8946
9077
 
8947
9078
  if (desc === undefined && _emberMetalPath_cache.isPath(keyName)) {
@@ -8955,10 +9086,10 @@ enifed('ember-metal/property_get', ['exports', 'ember-metal/core', 'ember-metal/
8955
9086
  if (meta && meta.peekWatching(keyName) > 0) {
8956
9087
  ret = meta.peekValues(keyName);
8957
9088
  } else {
8958
- ret = obj[keyName];
9089
+ ret = value;
8959
9090
  }
8960
9091
  } else {
8961
- ret = obj[keyName];
9092
+ ret = value;
8962
9093
  }
8963
9094
 
8964
9095
  if (ret === undefined && 'object' === typeof obj && !(keyName in obj) && 'function' === typeof obj.unknownProperty) {
@@ -9042,6 +9173,23 @@ enifed('ember-metal/property_get', ['exports', 'ember-metal/core', 'ember-metal/
9042
9173
  return root;
9043
9174
  }
9044
9175
 
9176
+ /**
9177
+ Retrieves the value of a property from an Object, or a default value in the
9178
+ case that the property returns `undefined`.
9179
+
9180
+ ```javascript
9181
+ Ember.getWithDefault(person, 'lastName', 'Doe');
9182
+ ```
9183
+
9184
+ @method getWithDefault
9185
+ @for Ember
9186
+ @param {Object} obj The object to retrieve from.
9187
+ @param {String} keyName The name of the property to retrieve
9188
+ @param {Object} defaultValue The value to return if the property value is undefined
9189
+ @return {Object} The property value or the defaultValue.
9190
+ @public
9191
+ */
9192
+
9045
9193
  function getWithDefault(root, key, defaultValue) {
9046
9194
  var value = get(root, key);
9047
9195
 
@@ -9053,7 +9201,7 @@ enifed('ember-metal/property_get', ['exports', 'ember-metal/core', 'ember-metal/
9053
9201
 
9054
9202
  exports.default = get;
9055
9203
  });
9056
- enifed('ember-metal/property_set', ['exports', 'ember-metal/debug', 'ember-metal/features', 'ember-metal/property_get', 'ember-metal/property_events', 'ember-metal/properties', 'ember-metal/error', 'ember-metal/path_cache'], function (exports, _emberMetalDebug, _emberMetalFeatures, _emberMetalProperty_get, _emberMetalProperty_events, _emberMetalProperties, _emberMetalError, _emberMetalPath_cache) {
9204
+ enifed('ember-metal/property_set', ['exports', 'ember-metal/debug', 'ember-metal/features', 'ember-metal/property_get', 'ember-metal/property_events', 'ember-metal/properties', 'ember-metal/error', 'ember-metal/path_cache', 'ember-metal/meta'], function (exports, _emberMetalDebug, _emberMetalFeatures, _emberMetalProperty_get, _emberMetalProperty_events, _emberMetalProperties, _emberMetalError, _emberMetalPath_cache, _emberMetalMeta) {
9057
9205
  'use strict';
9058
9206
 
9059
9207
  exports.set = set;
@@ -9082,7 +9230,7 @@ enifed('ember-metal/property_set', ['exports', 'ember-metal/debug', 'ember-metal
9082
9230
 
9083
9231
  var meta, possibleDesc, desc;
9084
9232
  if (obj) {
9085
- meta = obj['__ember_meta__'];
9233
+ meta = _emberMetalMeta.peekMeta(obj);
9086
9234
  possibleDesc = obj[keyName];
9087
9235
  desc = possibleDesc !== null && typeof possibleDesc === 'object' && possibleDesc.isDescriptor ? possibleDesc : undefined;
9088
9236
  }
@@ -10056,7 +10204,11 @@ enifed('ember-metal/streams/dependency', ['exports', 'ember-metal/debug', 'ember
10056
10204
  enifed('ember-metal/streams/key-stream', ['exports', 'ember-metal/debug', 'ember-metal/property_get', 'ember-metal/property_set', 'ember-metal/observer', 'ember-metal/streams/stream', 'ember-metal/streams/utils'], function (exports, _emberMetalDebug, _emberMetalProperty_get, _emberMetalProperty_set, _emberMetalObserver, _emberMetalStreamsStream, _emberMetalStreamsUtils) {
10057
10205
  'use strict';
10058
10206
 
10059
- var KeyStream = _emberMetalStreamsStream.default.extend({
10207
+ function labelFor(source, key) {
10208
+ return source.label ? source.label + '.' + key : key;
10209
+ }
10210
+
10211
+ exports.default = _emberMetalStreamsStream.default.extend({
10060
10212
  init: function (source, key) {
10061
10213
  _emberMetalDebug.assert('KeyStream error: source must be a stream', _emberMetalStreamsUtils.isStream(source)); // TODO: This isn't necessary.
10062
10214
  _emberMetalDebug.assert('KeyStream error: key must be a non-empty string', typeof key === 'string' && key.length > 0);
@@ -10073,9 +10225,17 @@ enifed('ember-metal/streams/key-stream', ['exports', 'ember-metal/debug', 'ember
10073
10225
 
10074
10226
  compute: function () {
10075
10227
  var object = this.sourceDep.getValue();
10076
- if (object) {
10228
+ var type = typeof object;
10229
+
10230
+ if (!object || type === 'boolean') {
10231
+ return;
10232
+ }
10233
+
10234
+ if (type === 'object') {
10077
10235
  return _emberMetalProperty_get.get(object, this.key);
10078
10236
  }
10237
+
10238
+ return object[this.key];
10079
10239
  },
10080
10240
 
10081
10241
  setValue: function (value) {
@@ -10120,12 +10280,6 @@ enifed('ember-metal/streams/key-stream', ['exports', 'ember-metal/debug', 'ember
10120
10280
  this._clearObservedObject();
10121
10281
  }
10122
10282
  });
10123
-
10124
- function labelFor(source, key) {
10125
- return source.label ? source.label + '.' + key : key;
10126
- }
10127
-
10128
- exports.default = KeyStream;
10129
10283
  });
10130
10284
  enifed('ember-metal/streams/proxy-stream', ['exports', 'ember-runtime/system/object', 'ember-metal/streams/stream'], function (exports, _emberRuntimeSystemObject, _emberMetalStreamsStream) {
10131
10285
  'use strict';
@@ -10159,7 +10313,7 @@ enifed('ember-metal/streams/proxy-stream', ['exports', 'ember-runtime/system/obj
10159
10313
 
10160
10314
  exports.default = ProxyStream;
10161
10315
  });
10162
- enifed('ember-metal/streams/stream', ['exports', 'ember-metal/core', 'ember-metal/assign', 'ember-metal/debug', 'ember-metal/path_cache', 'ember-metal/observer', 'ember-metal/streams/utils', 'ember-metal/empty_object', 'ember-metal/streams/subscriber', 'ember-metal/streams/dependency', 'ember-metal/utils'], function (exports, _emberMetalCore, _emberMetalAssign, _emberMetalDebug, _emberMetalPath_cache, _emberMetalObserver, _emberMetalStreamsUtils, _emberMetalEmpty_object, _emberMetalStreamsSubscriber, _emberMetalStreamsDependency, _emberMetalUtils) {
10316
+ enifed('ember-metal/streams/stream', ['exports', 'ember-metal/assign', 'ember-metal/debug', 'ember-metal/path_cache', 'ember-metal/observer', 'ember-metal/streams/utils', 'ember-metal/empty_object', 'ember-metal/streams/subscriber', 'ember-metal/streams/dependency', 'ember-metal/utils', 'require'], function (exports, _emberMetalAssign, _emberMetalDebug, _emberMetalPath_cache, _emberMetalObserver, _emberMetalStreamsUtils, _emberMetalEmpty_object, _emberMetalStreamsSubscriber, _emberMetalStreamsDependency, _emberMetalUtils, _require) {
10163
10317
  'use strict';
10164
10318
 
10165
10319
  exports.wrap = wrap;
@@ -10201,7 +10355,7 @@ enifed('ember-metal/streams/stream', ['exports', 'ember-metal/core', 'ember-meta
10201
10355
  },
10202
10356
 
10203
10357
  _makeChildStream: function (key) {
10204
- KeyStream = KeyStream || _emberMetalCore.default.__loader.require('ember-metal/streams/key-stream').default;
10358
+ KeyStream = KeyStream || _require.default('ember-metal/streams/key-stream').default;
10205
10359
  return new KeyStream(this, key);
10206
10360
  },
10207
10361
 
@@ -10341,7 +10495,7 @@ enifed('ember-metal/streams/stream', ['exports', 'ember-metal/core', 'ember-meta
10341
10495
  if (value !== this.observedProxy) {
10342
10496
  this._clearObservedProxy();
10343
10497
 
10344
- ProxyMixin = ProxyMixin || _emberMetalCore.default.__loader.require('ember-runtime/mixins/-proxy').default;
10498
+ ProxyMixin = ProxyMixin || _require.default('ember-runtime/mixins/-proxy').default;
10345
10499
 
10346
10500
  if (ProxyMixin.detect(value)) {
10347
10501
  _emberMetalObserver.addObserver(value, 'content', this, this.notify);
@@ -10936,8 +11090,18 @@ enifed('ember-metal/streams/utils', ['exports', 'ember-metal/debug', 'ember-meta
10936
11090
  }
10937
11091
  }
10938
11092
  });
10939
- enifed("ember-metal/symbol", ["exports"], function (exports) {
10940
- "use strict";
11093
+ enifed('ember-metal/symbol', ['exports', 'ember-metal/utils'], function (exports, _emberMetalUtils) {
11094
+ 'use strict';
11095
+
11096
+ exports.default = symbol;
11097
+
11098
+ function symbol(debugName) {
11099
+ // TODO: Investigate using platform symbols, but we do not
11100
+ // want to require non-enumerability for this API, which
11101
+ // would introduce a large cost.
11102
+
11103
+ return _emberMetalUtils.intern(debugName + ' [id=' + _emberMetalUtils.GUID_KEY + Math.floor(Math.random() * new Date()) + ']');
11104
+ }
10941
11105
  });
10942
11106
  enifed('ember-metal/utils', ['exports'], function (exports) {
10943
11107
  'no use strict';
@@ -10956,7 +11120,7 @@ enifed('ember-metal/utils', ['exports'], function (exports) {
10956
11120
  @return {Number} the uuid
10957
11121
  */
10958
11122
  exports.uuid = uuid;
10959
- exports.symbol = symbol;
11123
+ exports.intern = intern;
10960
11124
  exports.generateGuid = generateGuid;
10961
11125
  exports.guidFor = guidFor;
10962
11126
  exports.wrap = wrap;
@@ -11033,6 +11197,7 @@ enifed('ember-metal/utils', ['exports'], function (exports) {
11033
11197
  @private
11034
11198
  @return {String} interned version of the provided string
11035
11199
  */
11200
+
11036
11201
  function intern(str) {
11037
11202
  var obj = {};
11038
11203
  obj[str] = 1;
@@ -11044,14 +11209,6 @@ enifed('ember-metal/utils', ['exports'], function (exports) {
11044
11209
  return str;
11045
11210
  }
11046
11211
 
11047
- function symbol(debugName) {
11048
- // TODO: Investigate using platform symbols, but we do not
11049
- // want to require non-enumerability for this API, which
11050
- // would introduce a large cost.
11051
-
11052
- return intern(debugName + ' [id=' + GUID_KEY + Math.floor(Math.random() * new Date()) + ']');
11053
- }
11054
-
11055
11212
  /**
11056
11213
  A unique key used to assign guids and other private metadata to objects.
11057
11214
  If you inspect an object in your browser debugger you will often see these.
@@ -11514,6 +11671,9 @@ enifed('ember-metal/watch_key', ['exports', 'ember-metal/features', 'ember-metal
11514
11671
  exports.watchKey = watchKey;
11515
11672
  exports.unwatchKey = unwatchKey;
11516
11673
 
11674
+ var handleMandatorySetter = undefined,
11675
+ lookupDescriptor = undefined;
11676
+
11517
11677
  function watchKey(obj, keyName, meta) {
11518
11678
  // can't watch length on Array - it is special...
11519
11679
  if (keyName === 'length' && Array.isArray(obj)) {
@@ -11545,8 +11705,23 @@ enifed('ember-metal/watch_key', ['exports', 'ember-metal/features', 'ember-metal
11545
11705
  }
11546
11706
 
11547
11707
  if (_emberMetalFeatures.default('mandatory-setter')) {
11548
- var handleMandatorySetter = function handleMandatorySetter(m, obj, keyName) {
11549
- var descriptor = Object.getOwnPropertyDescriptor && Object.getOwnPropertyDescriptor(obj, keyName);
11708
+ lookupDescriptor = function lookupDescriptor(obj, keyName) {
11709
+ var current = obj;
11710
+ while (current) {
11711
+ var descriptor = Object.getOwnPropertyDescriptor(current, keyName);
11712
+
11713
+ if (descriptor) {
11714
+ return descriptor;
11715
+ }
11716
+
11717
+ current = Object.getPrototypeOf(current);
11718
+ }
11719
+
11720
+ return null;
11721
+ };
11722
+
11723
+ handleMandatorySetter = function handleMandatorySetter(m, obj, keyName) {
11724
+ var descriptor = lookupDescriptor(obj, keyName);
11550
11725
  var configurable = descriptor ? descriptor.configurable : true;
11551
11726
  var isWritable = descriptor ? descriptor.writable : true;
11552
11727
  var hasValue = descriptor ? 'value' in descriptor : true;
@@ -11656,7 +11831,7 @@ enifed('ember-metal/watch_path', ['exports', 'ember-metal/meta', 'ember-metal/ch
11656
11831
  }
11657
11832
  }
11658
11833
  });
11659
- enifed('ember-metal/watching', ['exports', 'ember-metal/chains', 'ember-metal/watch_key', 'ember-metal/watch_path', 'ember-metal/path_cache'], function (exports, _emberMetalChains, _emberMetalWatch_key, _emberMetalWatch_path, _emberMetalPath_cache) {
11834
+ enifed('ember-metal/watching', ['exports', 'ember-metal/chains', 'ember-metal/watch_key', 'ember-metal/watch_path', 'ember-metal/path_cache', 'ember-metal/meta'], function (exports, _emberMetalChains, _emberMetalWatch_key, _emberMetalWatch_path, _emberMetalPath_cache, _emberMetalMeta) {
11660
11835
  /**
11661
11836
  @module ember-metal
11662
11837
  */
@@ -11696,7 +11871,7 @@ enifed('ember-metal/watching', ['exports', 'ember-metal/chains', 'ember-metal/wa
11696
11871
  exports.watch = watch;
11697
11872
 
11698
11873
  function isWatching(obj, key) {
11699
- var meta = obj['__ember_meta__'];
11874
+ var meta = _emberMetalMeta.peekMeta(obj);
11700
11875
  return (meta && meta.peekWatching(key)) > 0;
11701
11876
  }
11702
11877
 
@@ -11729,11 +11904,11 @@ enifed('ember-metal/watching', ['exports', 'ember-metal/chains', 'ember-metal/wa
11729
11904
  */
11730
11905
 
11731
11906
  function destroy(obj) {
11732
- var meta = obj['__ember_meta__'];
11907
+ var meta = _emberMetalMeta.peekMeta(obj);
11733
11908
  var node, nodes, key, nodeObject;
11734
11909
 
11735
11910
  if (meta) {
11736
- obj['__ember_meta__'] = null;
11911
+ _emberMetalMeta.deleteMeta(obj);
11737
11912
  // remove chainWatchers to remove circular references that would prevent GC
11738
11913
  node = meta.readableChains();
11739
11914
  if (node) {
@@ -11817,9 +11992,9 @@ enifed('ember-metal', ['exports', 'ember-metal/core', 'ember-metal/debug', 'embe
11817
11992
  _emberMetalCore.default.Error = _emberMetalError.default;
11818
11993
  _emberMetalCore.default.guidFor = _emberMetalUtils.guidFor;
11819
11994
  _emberMetalCore.default.META_DESC = _emberMetalMeta.META_DESC;
11820
- _emberMetalCore.default.EMPTY_META = _emberMetalMeta.EMPTY_META;
11821
11995
  _emberMetalCore.default.meta = _emberMetalMeta.meta;
11822
11996
  _emberMetalCore.default.inspect = _emberMetalUtils.inspect;
11997
+
11823
11998
  _emberMetalCore.default.tryCatchFinally = _emberMetalUtils.deprecatedTryCatchFinally;
11824
11999
  _emberMetalCore.default.makeArray = _emberMetalUtils.makeArray;
11825
12000
  _emberMetalCore.default.canInvoke = _emberMetalUtils.canInvoke;
@@ -12097,7 +12272,7 @@ enifed('ember-runtime/compare', ['exports', 'ember-runtime/utils', 'ember-runtim
12097
12272
  }
12098
12273
  }
12099
12274
  });
12100
- enifed('ember-runtime/computed/reduce_computed_macros', ['exports', 'ember-metal/debug', 'ember-metal/property_get', 'ember-metal/error', 'ember-metal/computed', 'ember-metal/observer', 'ember-runtime/compare', 'ember-runtime/utils', 'ember-runtime/system/native_array'], function (exports, _emberMetalDebug, _emberMetalProperty_get, _emberMetalError, _emberMetalComputed, _emberMetalObserver, _emberRuntimeCompare, _emberRuntimeUtils, _emberRuntimeSystemNative_array) {
12275
+ enifed('ember-runtime/computed/reduce_computed_macros', ['exports', 'ember-metal/debug', 'ember-metal/property_get', 'ember-metal/error', 'ember-metal/computed', 'ember-metal/observer', 'ember-runtime/compare', 'ember-runtime/utils', 'ember-runtime/system/native_array', 'ember-metal/is_none', 'ember-metal/get_properties'], function (exports, _emberMetalDebug, _emberMetalProperty_get, _emberMetalError, _emberMetalComputed, _emberMetalObserver, _emberRuntimeCompare, _emberRuntimeUtils, _emberRuntimeSystemNative_array, _emberMetalIs_none, _emberMetalGet_properties) {
12101
12276
  /**
12102
12277
  @module ember
12103
12278
  @submodule ember-runtime
@@ -12115,6 +12290,7 @@ enifed('ember-runtime/computed/reduce_computed_macros', ['exports', 'ember-metal
12115
12290
  exports.uniq = uniq;
12116
12291
  exports.intersect = intersect;
12117
12292
  exports.setDiff = setDiff;
12293
+ exports.collect = collect;
12118
12294
  exports.sort = sort;
12119
12295
 
12120
12296
  function reduceMacro(dependentKey, callback, initialValue) {
@@ -12619,6 +12795,54 @@ enifed('ember-runtime/computed/reduce_computed_macros', ['exports', 'ember-metal
12619
12795
  }).readOnly();
12620
12796
  }
12621
12797
 
12798
+ /**
12799
+ A computed property that returns the array of values
12800
+ for the provided dependent properties.
12801
+
12802
+ Example
12803
+
12804
+ ```javascript
12805
+ var Hamster = Ember.Object.extend({
12806
+ clothes: Ember.computed.collect('hat', 'shirt')
12807
+ });
12808
+
12809
+ var hamster = Hamster.create();
12810
+
12811
+ hamster.get('clothes'); // [null, null]
12812
+ hamster.set('hat', 'Camp Hat');
12813
+ hamster.set('shirt', 'Camp Shirt');
12814
+ hamster.get('clothes'); // ['Camp Hat', 'Camp Shirt']
12815
+ ```
12816
+
12817
+ @method collect
12818
+ @for Ember.computed
12819
+ @param {String} dependentKey*
12820
+ @return {Ember.ComputedProperty} computed property which maps
12821
+ values of all passed in properties to an array.
12822
+ @public
12823
+ */
12824
+
12825
+ function collect() {
12826
+ for (var _len3 = arguments.length, dependentKeys = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
12827
+ dependentKeys[_key3] = arguments[_key3];
12828
+ }
12829
+
12830
+ return multiArrayMacro(dependentKeys, function () {
12831
+ var properties = _emberMetalGet_properties.default(this, dependentKeys);
12832
+ var res = _emberRuntimeSystemNative_array.A();
12833
+ for (var key in properties) {
12834
+ if (properties.hasOwnProperty(key)) {
12835
+ if (_emberMetalIs_none.default(properties[key])) {
12836
+ res.push(null);
12837
+ } else {
12838
+ res.push(properties[key]);
12839
+ }
12840
+ }
12841
+ }
12842
+ return res;
12843
+ });
12844
+ }
12845
+
12622
12846
  /**
12623
12847
  A computed property which returns a new array with all the
12624
12848
  properties from the first dependent array sorted based on a property
@@ -14223,13 +14447,15 @@ enifed('ember-runtime/mixins/comparable', ['exports', 'ember-metal/mixin'], func
14223
14447
  compare: null
14224
14448
  });
14225
14449
  });
14226
- enifed('ember-runtime/mixins/container_proxy', ['exports', 'ember-metal/run_loop', 'ember-metal/mixin'], function (exports, _emberMetalRun_loop, _emberMetalMixin) {
14450
+ enifed('ember-runtime/mixins/container_proxy', ['exports', 'ember-metal/run_loop', 'ember-metal/debug', 'ember-metal/mixin'], function (exports, _emberMetalRun_loop, _emberMetalDebug, _emberMetalMixin) {
14227
14451
  /**
14228
14452
  @module ember
14229
14453
  @submodule ember-runtime
14230
14454
  */
14231
14455
  'use strict';
14232
14456
 
14457
+ exports.buildFakeContainerWithDeprecations = buildFakeContainerWithDeprecations;
14458
+
14233
14459
  /**
14234
14460
  ContainerProxyMixin is used to provide public access to specific
14235
14461
  container functionality.
@@ -14306,6 +14532,31 @@ enifed('ember-runtime/mixins/container_proxy', ['exports', 'ember-metal/run_loop
14306
14532
  return (_container__ = this.__container__)[name].apply(_container__, arguments);
14307
14533
  };
14308
14534
  }
14535
+
14536
+ function buildFakeContainerWithDeprecations(container) {
14537
+ var fakeContainer = {};
14538
+ var propertyMappings = {
14539
+ lookup: 'lookup',
14540
+ lookupFactory: '_lookupFactory'
14541
+ };
14542
+
14543
+ for (var containerProperty in propertyMappings) {
14544
+ fakeContainer[containerProperty] = buildFakeContainerFunction(container, containerProperty, propertyMappings[containerProperty]);
14545
+ }
14546
+
14547
+ return fakeContainer;
14548
+ }
14549
+
14550
+ function buildFakeContainerFunction(container, containerProperty, ownerProperty) {
14551
+ return function () {
14552
+ _emberMetalDebug.deprecate('Using the injected `container` is deprecated. Please use the `getOwner` helper to access the owner of this object and then call `' + ownerProperty + '` instead.', false, {
14553
+ id: 'ember-application.injected-container',
14554
+ until: '3.0.0',
14555
+ url: 'http://emberjs.com/deprecations/v2.x#toc_injected-container-access'
14556
+ });
14557
+ return container[containerProperty].apply(container, arguments);
14558
+ };
14559
+ }
14309
14560
  });
14310
14561
  enifed('ember-runtime/mixins/controller', ['exports', 'ember-metal/mixin', 'ember-metal/alias', 'ember-runtime/mixins/action_handler', 'ember-runtime/mixins/controller_content_model_alias_deprecation'], function (exports, _emberMetalMixin, _emberMetalAlias, _emberRuntimeMixinsAction_handler, _emberRuntimeMixinsController_content_model_alias_deprecation) {
14311
14562
  'use strict';
@@ -14338,8 +14589,6 @@ enifed('ember-runtime/mixins/controller', ['exports', 'ember-metal/mixin', 'embe
14338
14589
  */
14339
14590
  target: null,
14340
14591
 
14341
- container: null,
14342
-
14343
14592
  parentController: null,
14344
14593
 
14345
14594
  store: null,
@@ -14461,7 +14710,7 @@ enifed('ember-runtime/mixins/copyable', ['exports', 'ember-metal/debug', 'ember-
14461
14710
  }
14462
14711
  });
14463
14712
  });
14464
- enifed('ember-runtime/mixins/enumerable', ['exports', 'ember-metal/core', 'ember-metal/property_get', 'ember-metal/property_set', 'ember-metal/mixin', 'ember-metal/computed', 'ember-metal/property_events', 'ember-metal/events', 'ember-runtime/compare'], function (exports, _emberMetalCore, _emberMetalProperty_get, _emberMetalProperty_set, _emberMetalMixin, _emberMetalComputed, _emberMetalProperty_events, _emberMetalEvents, _emberRuntimeCompare) {
14713
+ enifed('ember-runtime/mixins/enumerable', ['exports', 'ember-metal/property_get', 'ember-metal/property_set', 'ember-metal/mixin', 'ember-metal/computed', 'ember-metal/property_events', 'ember-metal/events', 'ember-runtime/compare', 'require'], function (exports, _emberMetalProperty_get, _emberMetalProperty_set, _emberMetalMixin, _emberMetalComputed, _emberMetalProperty_events, _emberMetalEvents, _emberRuntimeCompare, _require) {
14465
14714
  /**
14466
14715
  @module ember
14467
14716
  @submodule ember-runtime
@@ -14473,6 +14722,12 @@ enifed('ember-runtime/mixins/enumerable', ['exports', 'ember-metal/core', 'ember
14473
14722
 
14474
14723
  'use strict';
14475
14724
 
14725
+ var _emberA = undefined;
14726
+
14727
+ function emberA() {
14728
+ return (_emberA || (_emberA = _require.default('ember-runtime/system/native_array').A))();
14729
+ }
14730
+
14476
14731
  var contexts = [];
14477
14732
 
14478
14733
  function popCtx() {
@@ -14750,7 +15005,7 @@ enifed('ember-runtime/mixins/enumerable', ['exports', 'ember-metal/core', 'ember
14750
15005
  @public
14751
15006
  */
14752
15007
  map: function (callback, target) {
14753
- var ret = _emberMetalCore.default.A();
15008
+ var ret = emberA();
14754
15009
 
14755
15010
  this.forEach(function (x, idx, i) {
14756
15011
  ret[idx] = callback.call(target, x, idx, i);
@@ -14797,7 +15052,7 @@ enifed('ember-runtime/mixins/enumerable', ['exports', 'ember-metal/core', 'ember
14797
15052
  @public
14798
15053
  */
14799
15054
  filter: function (callback, target) {
14800
- var ret = _emberMetalCore.default.A();
15055
+ var ret = emberA();
14801
15056
 
14802
15057
  this.forEach(function (x, idx, i) {
14803
15058
  if (callback.call(target, x, idx, i)) {
@@ -15108,7 +15363,7 @@ enifed('ember-runtime/mixins/enumerable', ['exports', 'ember-metal/core', 'ember
15108
15363
  args[_key - 1] = arguments[_key];
15109
15364
  }
15110
15365
 
15111
- var ret = _emberMetalCore.default.A();
15366
+ var ret = emberA();
15112
15367
 
15113
15368
  this.forEach(function (x, idx) {
15114
15369
  var method = x && x[methodName];
@@ -15129,7 +15384,7 @@ enifed('ember-runtime/mixins/enumerable', ['exports', 'ember-metal/core', 'ember
15129
15384
  @public
15130
15385
  */
15131
15386
  toArray: function () {
15132
- var ret = _emberMetalCore.default.A();
15387
+ var ret = emberA();
15133
15388
 
15134
15389
  this.forEach(function (o, idx) {
15135
15390
  ret[idx] = o;
@@ -15172,7 +15427,7 @@ enifed('ember-runtime/mixins/enumerable', ['exports', 'ember-metal/core', 'ember
15172
15427
  return this; // nothing to do
15173
15428
  }
15174
15429
 
15175
- var ret = _emberMetalCore.default.A();
15430
+ var ret = emberA();
15176
15431
 
15177
15432
  this.forEach(function (k) {
15178
15433
  if (k !== value) {
@@ -15196,7 +15451,7 @@ enifed('ember-runtime/mixins/enumerable', ['exports', 'ember-metal/core', 'ember
15196
15451
  @public
15197
15452
  */
15198
15453
  uniq: function () {
15199
- var ret = _emberMetalCore.default.A();
15454
+ var ret = emberA();
15200
15455
 
15201
15456
  this.forEach(function (k) {
15202
15457
  if (ret.indexOf(k) < 0) {
@@ -17179,6 +17434,29 @@ enifed('ember-runtime/mixins/target_action_support', ['exports', 'ember-metal/co
17179
17434
  exports.default = TargetActionSupport;
17180
17435
  });
17181
17436
  // Ember.lookup
17437
+ enifed("ember-runtime/string_registry", ["exports"], function (exports) {
17438
+ // STATE within a module is frowned apon, this exists
17439
+ // to support Ember.STRINGS but shield ember internals from this legacy global
17440
+ // API.
17441
+ "use strict";
17442
+
17443
+ exports.setStrings = setStrings;
17444
+ exports.getStrings = getStrings;
17445
+ exports.get = get;
17446
+ var STRINGS = {};
17447
+
17448
+ function setStrings(strings) {
17449
+ STRINGS = strings;
17450
+ }
17451
+
17452
+ function getStrings() {
17453
+ return STRINGS;
17454
+ }
17455
+
17456
+ function get(name) {
17457
+ return STRINGS[name];
17458
+ }
17459
+ });
17182
17460
  enifed('ember-runtime/system/application', ['exports', 'ember-runtime/system/namespace'], function (exports, _emberRuntimeSystemNamespace) {
17183
17461
  'use strict';
17184
17462
 
@@ -17545,7 +17823,7 @@ enifed('ember-runtime/system/array_proxy', ['exports', 'ember-metal/debug', 'emb
17545
17823
 
17546
17824
  exports.default = ArrayProxy;
17547
17825
  });
17548
- enifed('ember-runtime/system/container', ['exports', 'ember-metal/property_set', 'container/registry', 'container/container'], function (exports, _emberMetalProperty_set, _containerRegistry, _containerContainer) {
17826
+ enifed('ember-runtime/system/container', ['exports', 'ember-metal/property_set', 'container/registry', 'container/container', 'container/owner'], function (exports, _emberMetalProperty_set, _containerRegistry, _containerContainer, _containerOwner) {
17549
17827
  'use strict';
17550
17828
 
17551
17829
  _containerRegistry.default.set = _emberMetalProperty_set.set;
@@ -17553,8 +17831,10 @@ enifed('ember-runtime/system/container', ['exports', 'ember-metal/property_set',
17553
17831
 
17554
17832
  exports.Registry = _containerRegistry.default;
17555
17833
  exports.Container = _containerContainer.default;
17834
+ exports.getOwner = _containerOwner.getOwner;
17835
+ exports.setOwner = _containerOwner.setOwner;
17556
17836
  });
17557
- enifed('ember-runtime/system/core_object', ['exports', 'ember-metal', 'ember-metal/debug', 'ember-metal/features', 'ember-metal/assign', 'ember-metal/property_get', 'ember-metal/utils', 'ember-metal/meta', 'ember-metal/chains', 'ember-metal/events', 'ember-metal/mixin', 'ember-metal/error', 'ember-runtime/mixins/action_handler', 'ember-metal/properties', 'ember-metal/binding', 'ember-metal/computed', 'ember-metal/injected_property', 'ember-metal/run_loop', 'ember-metal/watching', 'ember-metal/core', 'ember-runtime/inject'], function (exports, _emberMetal, _emberMetalDebug, _emberMetalFeatures, _emberMetalAssign, _emberMetalProperty_get, _emberMetalUtils, _emberMetalMeta, _emberMetalChains, _emberMetalEvents, _emberMetalMixin, _emberMetalError, _emberRuntimeMixinsAction_handler, _emberMetalProperties, _emberMetalBinding, _emberMetalComputed, _emberMetalInjected_property, _emberMetalRun_loop, _emberMetalWatching, _emberMetalCore, _emberRuntimeInject) {
17837
+ enifed('ember-runtime/system/core_object', ['exports', 'ember-metal/debug', 'ember-metal/features', 'ember-metal/assign', 'ember-metal/property_get', 'ember-metal/utils', 'ember-metal/meta', 'ember-metal/chains', 'ember-metal/events', 'ember-metal/mixin', 'ember-metal/error', 'ember-runtime/mixins/action_handler', 'ember-metal/properties', 'ember-metal/binding', 'ember-metal/computed', 'ember-metal/injected_property', 'ember-metal/run_loop', 'ember-metal/watching', 'ember-metal/core', 'ember-runtime/inject', 'ember-metal/symbol'], function (exports, _emberMetalDebug, _emberMetalFeatures, _emberMetalAssign, _emberMetalProperty_get, _emberMetalUtils, _emberMetalMeta, _emberMetalChains, _emberMetalEvents, _emberMetalMixin, _emberMetalError, _emberRuntimeMixinsAction_handler, _emberMetalProperties, _emberMetalBinding, _emberMetalComputed, _emberMetalInjected_property, _emberMetalRun_loop, _emberMetalWatching, _emberMetalCore, _emberRuntimeInject, _emberMetalSymbol) {
17558
17838
  'no use strict';
17559
17839
  // Remove "use strict"; from transpiled module until
17560
17840
  // https://bugs.webkit.org/show_bug.cgi?id=138038 is fixed
@@ -17569,7 +17849,7 @@ enifed('ember-runtime/system/core_object', ['exports', 'ember-metal', 'ember-met
17569
17849
 
17570
17850
  var _Mixin$create;
17571
17851
 
17572
- var POST_INIT = _emberMetalUtils.symbol('POST_INIT');
17852
+ var POST_INIT = _emberMetalSymbol.default('POST_INIT');
17573
17853
  exports.POST_INIT = POST_INIT;
17574
17854
  var schedule = _emberMetalRun_loop.default.schedule;
17575
17855
  var applyMixin = _emberMetalMixin.Mixin._apply;
@@ -18179,8 +18459,8 @@ enifed('ember-runtime/system/core_object', ['exports', 'ember-metal', 'ember-met
18179
18459
  if (hasCachedComputedProperties === false) {
18180
18460
  return;
18181
18461
  }
18182
- if (value instanceof _emberMetal.default.ComputedProperty) {
18183
- var cache = _emberMetal.default.meta(this.constructor).readableCache();
18462
+ if (value instanceof _emberMetalComputed.ComputedProperty) {
18463
+ var cache = _emberMetalMeta.meta(this.constructor).readableCache();
18184
18464
 
18185
18465
  if (cache && cache._computedProperties !== undefined) {
18186
18466
  cache._computedProperties = undefined;
@@ -18681,10 +18961,9 @@ enifed('ember-runtime/system/namespace', ['exports', 'ember-metal/core', 'ember-
18681
18961
  paths[idx] = key;
18682
18962
 
18683
18963
  // If we have found an unprocessed class
18684
- if (obj && obj.toString === classToString) {
18964
+ if (obj && obj.toString === classToString && !obj[NAME_KEY]) {
18685
18965
  // Replace the class' `toString` with the dot-separated path
18686
18966
  // and set its `NAME_KEY`
18687
- obj.toString = makeToString(paths.join('.'));
18688
18967
  obj[NAME_KEY] = paths.join('.');
18689
18968
 
18690
18969
  // Support nested namespaces
@@ -18943,44 +19222,21 @@ enifed('ember-runtime/system/native_array', ['exports', 'ember-metal/core', 'emb
18943
19222
  @return {Ember.NativeArray}
18944
19223
  @public
18945
19224
  */
18946
- var A = function (arr) {
18947
- if (arr === undefined) {
18948
- arr = [];
18949
- }
18950
- return _emberRuntimeMixinsArray.default.detect(arr) ? arr : NativeArray.apply(arr);
18951
- };
19225
+ var A;
18952
19226
 
18953
- /**
18954
- Activates the mixin on the Array.prototype if not already applied. Calling
18955
- this method more than once is safe. This will be called when ember is loaded
18956
- unless you have `Ember.EXTEND_PROTOTYPES` or `Ember.EXTEND_PROTOTYPES.Array`
18957
- set to `false`.
18958
-
18959
- Example
18960
-
18961
- ```js
18962
- if (Ember.EXTEND_PROTOTYPES === true || Ember.EXTEND_PROTOTYPES.Array) {
18963
- Ember.NativeArray.activate();
18964
- }
18965
- ```
18966
-
18967
- @method activate
18968
- @for Ember.NativeArray
18969
- @static
18970
- @return {void}
18971
- @private
18972
- */
18973
- NativeArray.activate = function () {
19227
+ if (_emberMetalCore.default.EXTEND_PROTOTYPES === true || _emberMetalCore.default.EXTEND_PROTOTYPES.Array) {
18974
19228
  NativeArray.apply(Array.prototype);
18975
-
18976
19229
  exports. // ES6TODO: Setting A onto the object returned by ember-metal/core to avoid circles
18977
19230
  A = A = function (arr) {
18978
19231
  return arr || [];
18979
19232
  };
18980
- };
18981
-
18982
- if (_emberMetalCore.default.EXTEND_PROTOTYPES === true || _emberMetalCore.default.EXTEND_PROTOTYPES.Array) {
18983
- NativeArray.activate();
19233
+ } else {
19234
+ exports.A = A = function (arr) {
19235
+ if (arr === undefined) {
19236
+ arr = [];
19237
+ }
19238
+ return _emberRuntimeMixinsArray.default.detect(arr) ? arr : NativeArray.apply(arr);
19239
+ };
18984
19240
  }
18985
19241
 
18986
19242
  _emberMetalCore.default.A = A;exports.A = A;
@@ -19137,7 +19393,7 @@ enifed('ember-runtime/system/service', ['exports', 'ember-runtime/system/object'
19137
19393
 
19138
19394
  exports.default = Service;
19139
19395
  });
19140
- enifed('ember-runtime/system/string', ['exports', 'ember-metal/core', 'ember-metal/debug', 'ember-metal/utils', 'ember-runtime/utils', 'ember-metal/cache'], function (exports, _emberMetalCore, _emberMetalDebug, _emberMetalUtils, _emberRuntimeUtils, _emberMetalCache) {
19396
+ enifed('ember-runtime/system/string', ['exports', 'ember-metal/debug', 'ember-metal/utils', 'ember-runtime/utils', 'ember-runtime/string_registry', 'ember-metal/cache'], function (exports, _emberMetalDebug, _emberMetalUtils, _emberRuntimeUtils, _emberRuntimeString_registry, _emberMetalCache) {
19141
19397
  /**
19142
19398
  @module ember
19143
19399
  @submodule ember-runtime
@@ -19232,7 +19488,7 @@ enifed('ember-runtime/system/string', ['exports', 'ember-metal/core', 'ember-met
19232
19488
  formats = Array.prototype.slice.call(arguments, 1);
19233
19489
  }
19234
19490
 
19235
- str = _emberMetalCore.default.STRINGS[str] || str;
19491
+ str = _emberRuntimeString_registry.get(str) || str;
19236
19492
  return _fmt(str, formats);
19237
19493
  }
19238
19494
 
@@ -19264,18 +19520,6 @@ enifed('ember-runtime/system/string', ['exports', 'ember-metal/core', 'ember-met
19264
19520
  return CAPITALIZE_CACHE.get(str);
19265
19521
  }
19266
19522
 
19267
- /**
19268
- Defines the hash of localized strings for the current language. Used by
19269
- the `Ember.String.loc()` helper. To localize, add string values to this
19270
- hash.
19271
-
19272
- @property STRINGS
19273
- @for Ember
19274
- @type Object
19275
- @private
19276
- */
19277
- _emberMetalCore.default.STRINGS = {};
19278
-
19279
19523
  /**
19280
19524
  Defines string helper methods including string formatting and localization.
19281
19525
  Unless `Ember.EXTEND_PROTOTYPES.String` is `false` these methods will also be
@@ -19457,7 +19701,6 @@ enifed('ember-runtime/system/string', ['exports', 'ember-metal/core', 'ember-met
19457
19701
  exports.underscore = underscore;
19458
19702
  exports.capitalize = capitalize;
19459
19703
  });
19460
- // Ember.STRINGS
19461
19704
  enifed('ember-runtime/utils', ['exports', 'ember-runtime/mixins/array', 'ember-runtime/system/object'], function (exports, _emberRuntimeMixinsArray, _emberRuntimeSystemObject) {
19462
19705
  'use strict';
19463
19706
 
@@ -19606,7 +19849,7 @@ enifed('ember-runtime/utils', ['exports', 'ember-runtime/mixins/array', 'ember-r
19606
19849
  return ret;
19607
19850
  }
19608
19851
  });
19609
- enifed('ember-runtime', ['exports', 'ember-metal', 'ember-runtime/is-equal', 'ember-runtime/compare', 'ember-runtime/copy', 'ember-runtime/inject', 'ember-runtime/system/namespace', 'ember-runtime/system/object', 'ember-runtime/system/container', 'ember-runtime/system/array_proxy', 'ember-runtime/system/object_proxy', 'ember-runtime/system/core_object', 'ember-runtime/system/native_array', 'ember-runtime/system/string', 'ember-runtime/system/lazy_load', 'ember-runtime/mixins/array', 'ember-runtime/mixins/comparable', 'ember-runtime/mixins/copyable', 'ember-runtime/mixins/enumerable', 'ember-runtime/mixins/freezable', 'ember-runtime/mixins/-proxy', 'ember-runtime/mixins/observable', 'ember-runtime/mixins/action_handler', 'ember-runtime/mixins/mutable_enumerable', 'ember-runtime/mixins/mutable_array', 'ember-runtime/mixins/target_action_support', 'ember-runtime/mixins/evented', 'ember-runtime/mixins/promise_proxy', 'ember-runtime/computed/reduce_computed_macros', 'ember-runtime/controllers/controller', 'ember-runtime/mixins/controller', 'ember-runtime/system/service', 'ember-runtime/ext/rsvp', 'ember-runtime/ext/string', 'ember-runtime/ext/function', 'ember-runtime/utils'], function (exports, _emberMetal, _emberRuntimeIsEqual, _emberRuntimeCompare, _emberRuntimeCopy, _emberRuntimeInject, _emberRuntimeSystemNamespace, _emberRuntimeSystemObject, _emberRuntimeSystemContainer, _emberRuntimeSystemArray_proxy, _emberRuntimeSystemObject_proxy, _emberRuntimeSystemCore_object, _emberRuntimeSystemNative_array, _emberRuntimeSystemString, _emberRuntimeSystemLazy_load, _emberRuntimeMixinsArray, _emberRuntimeMixinsComparable, _emberRuntimeMixinsCopyable, _emberRuntimeMixinsEnumerable, _emberRuntimeMixinsFreezable, _emberRuntimeMixinsProxy, _emberRuntimeMixinsObservable, _emberRuntimeMixinsAction_handler, _emberRuntimeMixinsMutable_enumerable, _emberRuntimeMixinsMutable_array, _emberRuntimeMixinsTarget_action_support, _emberRuntimeMixinsEvented, _emberRuntimeMixinsPromise_proxy, _emberRuntimeComputedReduce_computed_macros, _emberRuntimeControllersController, _emberRuntimeMixinsController, _emberRuntimeSystemService, _emberRuntimeExtRsvp, _emberRuntimeExtString, _emberRuntimeExtFunction, _emberRuntimeUtils) {
19852
+ enifed('ember-runtime', ['exports', 'ember-metal', 'ember-runtime/is-equal', 'ember-runtime/compare', 'ember-runtime/copy', 'ember-runtime/inject', 'ember-runtime/system/namespace', 'ember-runtime/system/object', 'ember-runtime/system/container', 'ember-runtime/system/array_proxy', 'ember-runtime/system/object_proxy', 'ember-runtime/system/core_object', 'ember-runtime/system/native_array', 'ember-runtime/system/string', 'ember-runtime/system/lazy_load', 'ember-runtime/mixins/array', 'ember-runtime/mixins/comparable', 'ember-runtime/mixins/copyable', 'ember-runtime/mixins/enumerable', 'ember-runtime/mixins/freezable', 'ember-runtime/mixins/-proxy', 'ember-runtime/mixins/observable', 'ember-runtime/mixins/action_handler', 'ember-runtime/mixins/mutable_enumerable', 'ember-runtime/mixins/mutable_array', 'ember-runtime/mixins/target_action_support', 'ember-runtime/mixins/evented', 'ember-runtime/mixins/promise_proxy', 'ember-runtime/computed/reduce_computed_macros', 'ember-runtime/controllers/controller', 'ember-runtime/mixins/controller', 'ember-runtime/system/service', 'ember-runtime/ext/rsvp', 'ember-runtime/ext/string', 'ember-runtime/ext/function', 'ember-runtime/utils', 'ember-metal/features', 'ember-runtime/mixins/registry_proxy', 'ember-runtime/mixins/container_proxy', 'ember-runtime/string_registry'], function (exports, _emberMetal, _emberRuntimeIsEqual, _emberRuntimeCompare, _emberRuntimeCopy, _emberRuntimeInject, _emberRuntimeSystemNamespace, _emberRuntimeSystemObject, _emberRuntimeSystemContainer, _emberRuntimeSystemArray_proxy, _emberRuntimeSystemObject_proxy, _emberRuntimeSystemCore_object, _emberRuntimeSystemNative_array, _emberRuntimeSystemString, _emberRuntimeSystemLazy_load, _emberRuntimeMixinsArray, _emberRuntimeMixinsComparable, _emberRuntimeMixinsCopyable, _emberRuntimeMixinsEnumerable, _emberRuntimeMixinsFreezable, _emberRuntimeMixinsProxy, _emberRuntimeMixinsObservable, _emberRuntimeMixinsAction_handler, _emberRuntimeMixinsMutable_enumerable, _emberRuntimeMixinsMutable_array, _emberRuntimeMixinsTarget_action_support, _emberRuntimeMixinsEvented, _emberRuntimeMixinsPromise_proxy, _emberRuntimeComputedReduce_computed_macros, _emberRuntimeControllersController, _emberRuntimeMixinsController, _emberRuntimeSystemService, _emberRuntimeExtRsvp, _emberRuntimeExtString, _emberRuntimeExtFunction, _emberRuntimeUtils, _emberMetalFeatures, _emberRuntimeMixinsRegistry_proxy, _emberRuntimeMixinsContainer_proxy, _emberRuntimeString_registry) {
19610
19853
  /**
19611
19854
  @module ember
19612
19855
  @submodule ember-runtime
@@ -19665,6 +19908,15 @@ enifed('ember-runtime', ['exports', 'ember-metal', 'ember-runtime/is-equal', 'em
19665
19908
  _emberMetal.default.Object = _emberRuntimeSystemObject.default;
19666
19909
  _emberMetal.default.Container = _emberRuntimeSystemContainer.Container;
19667
19910
  _emberMetal.default.Registry = _emberRuntimeSystemContainer.Registry;
19911
+
19912
+ if (_emberMetalFeatures.default('ember-container-inject-owner')) {
19913
+ _emberMetal.default.getOwner = _emberRuntimeSystemContainer.getOwner;
19914
+ _emberMetal.default.setOwner = _emberRuntimeSystemContainer.setOwner;
19915
+
19916
+ _emberMetal.default._RegistryProxyMixin = _emberRuntimeMixinsRegistry_proxy.default;
19917
+ _emberMetal.default._ContainerProxyMixin = _emberRuntimeMixinsContainer_proxy.default;
19918
+ }
19919
+
19668
19920
  _emberMetal.default.Namespace = _emberRuntimeSystemNamespace.default;
19669
19921
  _emberMetal.default.Enumerable = _emberRuntimeMixinsEnumerable.default;
19670
19922
  _emberMetal.default.ArrayProxy = _emberRuntimeSystemArray_proxy.default;
@@ -19687,6 +19939,22 @@ enifed('ember-runtime', ['exports', 'ember-metal', 'ember-runtime/is-equal', 'em
19687
19939
  _emberMetal.default.RSVP = _emberRuntimeExtRsvp.default;
19688
19940
  // END EXPORTS
19689
19941
 
19942
+ /**
19943
+ Defines the hash of localized strings for the current language. Used by
19944
+ the `Ember.String.loc()` helper. To localize, add string values to this
19945
+ hash.
19946
+
19947
+ @property STRINGS
19948
+ @for Ember
19949
+ @type Object
19950
+ @private
19951
+ */
19952
+ Object.defineProperty(_emberMetal.default, 'STRINGS', {
19953
+ configurable: false,
19954
+ get: _emberRuntimeString_registry.getStrings,
19955
+ set: _emberRuntimeString_registry.setStrings
19956
+ });
19957
+
19690
19958
  exports.default = _emberMetal.default;
19691
19959
  });
19692
19960
  // just for side effect of extending Ember.RSVP