ember-source 2.2.1 → 2.3.0.beta.1

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 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