ember-source 1.12.0.beta.1 → 1.12.0.beta.3

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.

Potentially problematic release.


This version of ember-source might be problematic. Click here for more details.

@@ -5,7 +5,7 @@
5
5
  * Portions Copyright 2008-2011 Apple Inc. All rights reserved.
6
6
  * @license Licensed under MIT license
7
7
  * See https://raw.github.com/emberjs/ember.js/master/LICENSE
8
- * @version 1.12.0-beta.1
8
+ * @version 1.12.0-beta.3
9
9
  */
10
10
 
11
11
  (function() {
@@ -1100,21 +1100,9 @@ enifed('container', ['exports', 'container/registry', 'container/container'], fu
1100
1100
 
1101
1101
  'use strict';
1102
1102
 
1103
- /*
1104
- Public api for the container is still in flux.
1105
- The public api, specified on the application namespace should be considered the stable api.
1106
- // @module container
1107
- @private
1108
- */
1109
-
1110
- /*
1111
- Flag to enable/disable model factory injections (disabled by default)
1112
- If model factory injections are enabled, models should not be
1113
- accessed globally (only through `container.lookupFactory('model:modelName'))`);
1114
- */
1115
1103
  Ember.MODEL_FACTORY_INJECTIONS = false;
1116
1104
 
1117
- if (Ember.ENV && typeof Ember.ENV.MODEL_FACTORY_INJECTIONS !== "undefined") {
1105
+ if (Ember.ENV && typeof Ember.ENV.MODEL_FACTORY_INJECTIONS !== 'undefined') {
1118
1106
  Ember.MODEL_FACTORY_INJECTIONS = !!Ember.ENV.MODEL_FACTORY_INJECTIONS;
1119
1107
  }
1120
1108
 
@@ -1143,11 +1131,11 @@ enifed('container/container', ['exports', 'ember-metal/core', 'ember-metal/keys'
1143
1131
  */
1144
1132
  function Container(registry, options) {
1145
1133
  this._registry = registry || (function () {
1146
- Ember['default'].deprecate("A container should only be created for an already instantiated " + "registry. For backward compatibility, an isolated registry will " + "be instantiated just for this container.");
1134
+ Ember['default'].deprecate('A container should only be created for an already instantiated ' + 'registry. For backward compatibility, an isolated registry will ' + 'be instantiated just for this container.');
1147
1135
 
1148
1136
  // TODO - See note above about transpiler import workaround.
1149
1137
  if (!Registry) {
1150
- Registry = requireModule("container/registry")["default"];
1138
+ Registry = requireModule('container/registry')['default'];
1151
1139
  }
1152
1140
 
1153
1141
  return new Registry();
@@ -1216,7 +1204,7 @@ enifed('container/container', ['exports', 'ember-metal/core', 'ember-metal/keys'
1216
1204
  @return {any}
1217
1205
  */
1218
1206
  lookup: function (fullName, options) {
1219
- Ember['default'].assert("fullName must be a proper full name", this._registry.validateFullName(fullName));
1207
+ Ember['default'].assert('fullName must be a proper full name', this._registry.validateFullName(fullName));
1220
1208
  return lookup(this, this._registry.normalize(fullName), options);
1221
1209
  },
1222
1210
 
@@ -1227,7 +1215,7 @@ enifed('container/container', ['exports', 'ember-metal/core', 'ember-metal/keys'
1227
1215
  @return {any}
1228
1216
  */
1229
1217
  lookupFactory: function (fullName) {
1230
- Ember['default'].assert("fullName must be a proper full name", this._registry.validateFullName(fullName));
1218
+ Ember['default'].assert('fullName must be a proper full name', this._registry.validateFullName(fullName));
1231
1219
  return factoryFor(this, this._registry.normalize(fullName));
1232
1220
  },
1233
1221
 
@@ -1261,11 +1249,11 @@ enifed('container/container', ['exports', 'ember-metal/core', 'ember-metal/keys'
1261
1249
  };
1262
1250
 
1263
1251
  (function exposeRegistryMethods() {
1264
- var methods = ["register", "unregister", "resolve", "normalize", "typeInjection", "injection", "factoryInjection", "factoryTypeInjection", "has", "options", "optionsForType"];
1252
+ var methods = ['register', 'unregister', 'resolve', 'normalize', 'typeInjection', 'injection', 'factoryInjection', 'factoryTypeInjection', 'has', 'options', 'optionsForType'];
1265
1253
 
1266
1254
  function exposeRegistryMethod(method) {
1267
1255
  Container.prototype[method] = function () {
1268
- Ember['default'].deprecate(method + " should be called on the registry instead of the container");
1256
+ Ember['default'].deprecate(method + ' should be called on the registry instead of the container');
1269
1257
  return this._registry[method].apply(this._registry, arguments);
1270
1258
  };
1271
1259
  }
@@ -1288,7 +1276,7 @@ enifed('container/container', ['exports', 'ember-metal/core', 'ember-metal/keys'
1288
1276
  return;
1289
1277
  }
1290
1278
 
1291
- if (container._registry.getOption(fullName, "singleton") !== false && options.singleton !== false) {
1279
+ if (container._registry.getOption(fullName, 'singleton') !== false && options.singleton !== false) {
1292
1280
  container.cache[fullName] = value;
1293
1281
  }
1294
1282
 
@@ -1331,9 +1319,9 @@ enifed('container/container', ['exports', 'ember-metal/core', 'ember-metal/keys'
1331
1319
  return;
1332
1320
  }
1333
1321
 
1334
- var type = fullName.split(":")[0];
1335
- if (!factory || typeof factory.extend !== "function" || !Ember['default'].MODEL_FACTORY_INJECTIONS && type === "model") {
1336
- if (factory && typeof factory._onLookup === "function") {
1322
+ var type = fullName.split(':')[0];
1323
+ if (!factory || typeof factory.extend !== 'function' || !Ember['default'].MODEL_FACTORY_INJECTIONS && type === 'model') {
1324
+ if (factory && typeof factory._onLookup === 'function') {
1337
1325
  factory._onLookup(fullName);
1338
1326
  }
1339
1327
 
@@ -1350,7 +1338,7 @@ enifed('container/container', ['exports', 'ember-metal/core', 'ember-metal/keys'
1350
1338
  var injectedFactory = factory.extend(injections);
1351
1339
  injectedFactory.reopenClass(factoryInjections);
1352
1340
 
1353
- if (factory && typeof factory._onLookup === "function") {
1341
+ if (factory && typeof factory._onLookup === 'function') {
1354
1342
  factory._onLookup(fullName);
1355
1343
  }
1356
1344
 
@@ -1362,7 +1350,7 @@ enifed('container/container', ['exports', 'ember-metal/core', 'ember-metal/keys'
1362
1350
 
1363
1351
  function injectionsFor(container, fullName) {
1364
1352
  var registry = container._registry;
1365
- var splitName = fullName.split(":");
1353
+ var splitName = fullName.split(':');
1366
1354
  var type = splitName[0];
1367
1355
 
1368
1356
  var injections = buildInjections(container, registry.getTypeInjections(type), registry.getInjections(fullName));
@@ -1374,7 +1362,7 @@ enifed('container/container', ['exports', 'ember-metal/core', 'ember-metal/keys'
1374
1362
 
1375
1363
  function factoryInjectionsFor(container, fullName) {
1376
1364
  var registry = container._registry;
1377
- var splitName = fullName.split(":");
1365
+ var splitName = fullName.split(':');
1378
1366
  var type = splitName[0];
1379
1367
 
1380
1368
  var factoryInjections = buildInjections(container, registry.getFactoryTypeInjections(type), registry.getFactoryInjections(fullName));
@@ -1387,19 +1375,19 @@ enifed('container/container', ['exports', 'ember-metal/core', 'ember-metal/keys'
1387
1375
  var factory = factoryFor(container, fullName);
1388
1376
  var lazyInjections, validationCache;
1389
1377
 
1390
- if (container._registry.getOption(fullName, "instantiate") === false) {
1378
+ if (container._registry.getOption(fullName, 'instantiate') === false) {
1391
1379
  return factory;
1392
1380
  }
1393
1381
 
1394
1382
  if (factory) {
1395
- if (typeof factory.create !== "function") {
1396
- throw new Error("Failed to create an instance of '" + fullName + "'. " + "Most likely an improperly defined class or an invalid module export.");
1383
+ if (typeof factory.create !== 'function') {
1384
+ throw new Error('Failed to create an instance of \'' + fullName + '\'. ' + 'Most likely an improperly defined class or an invalid module export.');
1397
1385
  }
1398
1386
 
1399
1387
  validationCache = container.validationCache;
1400
1388
 
1401
1389
  // Ensure that all lazy injections are valid at instantiation time
1402
- if (!validationCache[fullName] && typeof factory._lazyInjections === "function") {
1390
+ if (!validationCache[fullName] && typeof factory._lazyInjections === 'function') {
1403
1391
  lazyInjections = factory._lazyInjections();
1404
1392
  lazyInjections = container._registry.normalizeInjectionsHash(lazyInjections);
1405
1393
 
@@ -1408,7 +1396,7 @@ enifed('container/container', ['exports', 'ember-metal/core', 'ember-metal/keys'
1408
1396
 
1409
1397
  validationCache[fullName] = true;
1410
1398
 
1411
- if (typeof factory.extend === "function") {
1399
+ if (typeof factory.extend === 'function') {
1412
1400
  // assume the factory was extendable and is already injected
1413
1401
  return factory.create();
1414
1402
  } else {
@@ -1429,7 +1417,7 @@ enifed('container/container', ['exports', 'ember-metal/core', 'ember-metal/keys'
1429
1417
  key = keys[i];
1430
1418
  value = cache[key];
1431
1419
 
1432
- if (container._registry.getOption(key, "instantiate") !== false) {
1420
+ if (container._registry.getOption(key, 'instantiate') !== false) {
1433
1421
  callback(value);
1434
1422
  }
1435
1423
  }
@@ -1625,20 +1613,20 @@ enifed('container/registry', ['exports', 'ember-metal/core', 'ember-metal/dictio
1625
1613
  },
1626
1614
 
1627
1615
  lookup: function (fullName, options) {
1628
- Ember['default'].assert("Create a container on the registry (with `registry.container()`) before calling `lookup`.", this._defaultContainer);
1616
+ Ember['default'].assert('Create a container on the registry (with `registry.container()`) before calling `lookup`.', this._defaultContainer);
1629
1617
 
1630
1618
  if (instanceInitializersFeatureEnabled) {
1631
- Ember['default'].deprecate("`lookup` was called on a Registry. The `initializer` API no longer receives a container, and you should use an `instanceInitializer` to look up objects from the container.", { url: "http://emberjs.com/guides/deprecations#toc_deprecate-access-to-instances-in-initializers" });
1619
+ Ember['default'].deprecate('`lookup` was called on a Registry. The `initializer` API no longer receives a container, and you should use an `instanceInitializer` to look up objects from the container.', false, { url: 'http://emberjs.com/guides/deprecations#toc_deprecate-access-to-instances-in-initializers' });
1632
1620
  }
1633
1621
 
1634
1622
  return this._defaultContainer.lookup(fullName, options);
1635
1623
  },
1636
1624
 
1637
1625
  lookupFactory: function (fullName) {
1638
- Ember['default'].assert("Create a container on the registry (with `registry.container()`) before calling `lookupFactory`.", this._defaultContainer);
1626
+ Ember['default'].assert('Create a container on the registry (with `registry.container()`) before calling `lookupFactory`.', this._defaultContainer);
1639
1627
 
1640
1628
  if (instanceInitializersFeatureEnabled) {
1641
- Ember['default'].deprecate("`lookupFactory` was called on a Registry. The `initializer` API no longer receives a container, and you should use an `instanceInitializer` to look up objects from the container.", { url: "http://emberjs.com/guides/deprecations#toc_deprecate-access-to-instances-in-initializers" });
1629
+ Ember['default'].deprecate('`lookupFactory` was called on a Registry. The `initializer` API no longer receives a container, and you should use an `instanceInitializer` to look up objects from the container.', false, { url: 'http://emberjs.com/guides/deprecations#toc_deprecate-access-to-instances-in-initializers' });
1642
1630
  }
1643
1631
 
1644
1632
  return this._defaultContainer.lookupFactory(fullName);
@@ -1659,16 +1647,16 @@ enifed('container/registry', ['exports', 'ember-metal/core', 'ember-metal/dictio
1659
1647
  @param {Object} options
1660
1648
  */
1661
1649
  register: function (fullName, factory, options) {
1662
- Ember['default'].assert("fullName must be a proper full name", this.validateFullName(fullName));
1650
+ Ember['default'].assert('fullName must be a proper full name', this.validateFullName(fullName));
1663
1651
 
1664
1652
  if (factory === undefined) {
1665
- throw new TypeError("Attempting to register an unknown factory: `" + fullName + "`");
1653
+ throw new TypeError('Attempting to register an unknown factory: `' + fullName + '`');
1666
1654
  }
1667
1655
 
1668
1656
  var normalizedName = this.normalize(fullName);
1669
1657
 
1670
1658
  if (this._resolveCache[normalizedName]) {
1671
- throw new Error("Cannot re-register: `" + fullName + "`, as it has already been resolved.");
1659
+ throw new Error('Cannot re-register: `' + fullName + '`, as it has already been resolved.');
1672
1660
  }
1673
1661
 
1674
1662
  this.registrations[normalizedName] = factory;
@@ -1688,7 +1676,7 @@ enifed('container/registry', ['exports', 'ember-metal/core', 'ember-metal/dictio
1688
1676
  @param {String} fullName
1689
1677
  */
1690
1678
  unregister: function (fullName) {
1691
- Ember['default'].assert("fullName must be a proper full name", this.validateFullName(fullName));
1679
+ Ember['default'].assert('fullName must be a proper full name', this.validateFullName(fullName));
1692
1680
 
1693
1681
  var normalizedName = this.normalize(fullName);
1694
1682
 
@@ -1723,7 +1711,7 @@ enifed('container/registry', ['exports', 'ember-metal/core', 'ember-metal/dictio
1723
1711
  @return {Function} fullName's factory
1724
1712
  */
1725
1713
  resolve: function (fullName) {
1726
- Ember['default'].assert("fullName must be a proper full name", this.validateFullName(fullName));
1714
+ Ember['default'].assert('fullName must be a proper full name', this.validateFullName(fullName));
1727
1715
  var factory = resolve(this, this.normalize(fullName));
1728
1716
  if (factory === undefined && this.fallback) {
1729
1717
  factory = this.fallback.resolve(fullName);
@@ -1783,7 +1771,7 @@ enifed('container/registry', ['exports', 'ember-metal/core', 'ember-metal/dictio
1783
1771
  @return {Boolean}
1784
1772
  */
1785
1773
  has: function (fullName) {
1786
- Ember['default'].assert("fullName must be a proper full name", this.validateFullName(fullName));
1774
+ Ember['default'].assert('fullName must be a proper full name', this.validateFullName(fullName));
1787
1775
  return has(this, this.normalize(fullName));
1788
1776
  },
1789
1777
 
@@ -1846,7 +1834,7 @@ enifed('container/registry', ['exports', 'ember-metal/core', 'ember-metal/dictio
1846
1834
  return options[optionName];
1847
1835
  }
1848
1836
 
1849
- var type = fullName.split(":")[0];
1837
+ var type = fullName.split(':')[0];
1850
1838
  options = this._typeOptions[type];
1851
1839
 
1852
1840
  if (options && options[optionName] !== undefined) {
@@ -1857,7 +1845,7 @@ enifed('container/registry', ['exports', 'ember-metal/core', 'ember-metal/dictio
1857
1845
  },
1858
1846
 
1859
1847
  option: function (fullName, optionName) {
1860
- Ember['default'].deprecate("`Registry.option()` has been deprecated. Call `Registry.getOption()` instead.");
1848
+ Ember['default'].deprecate('`Registry.option()` has been deprecated. Call `Registry.getOption()` instead.');
1861
1849
  return this.getOption(fullName, optionName);
1862
1850
  },
1863
1851
 
@@ -1889,11 +1877,11 @@ enifed('container/registry', ['exports', 'ember-metal/core', 'ember-metal/dictio
1889
1877
  @param {String} fullName
1890
1878
  */
1891
1879
  typeInjection: function (type, property, fullName) {
1892
- Ember['default'].assert("fullName must be a proper full name", this.validateFullName(fullName));
1880
+ Ember['default'].assert('fullName must be a proper full name', this.validateFullName(fullName));
1893
1881
 
1894
- var fullNameType = fullName.split(":")[0];
1882
+ var fullNameType = fullName.split(':')[0];
1895
1883
  if (fullNameType === type) {
1896
- throw new Error("Cannot inject a `" + fullName + "` on other " + type + "(s).");
1884
+ throw new Error('Cannot inject a `' + fullName + '` on other ' + type + '(s).');
1897
1885
  }
1898
1886
 
1899
1887
  var injections = this._typeInjections[type] || (this._typeInjections[type] = []);
@@ -1940,11 +1928,11 @@ enifed('container/registry', ['exports', 'ember-metal/core', 'ember-metal/dictio
1940
1928
  this.validateFullName(injectionName);
1941
1929
  var normalizedInjectionName = this.normalize(injectionName);
1942
1930
 
1943
- if (fullName.indexOf(":") === -1) {
1931
+ if (fullName.indexOf(':') === -1) {
1944
1932
  return this.typeInjection(fullName, property, normalizedInjectionName);
1945
1933
  }
1946
1934
 
1947
- Ember['default'].assert("fullName must be a proper full name", this.validateFullName(fullName));
1935
+ Ember['default'].assert('fullName must be a proper full name', this.validateFullName(fullName));
1948
1936
  var normalizedName = this.normalize(fullName);
1949
1937
 
1950
1938
  var injections = this._injections[normalizedName] || (this._injections[normalizedName] = []);
@@ -2027,7 +2015,7 @@ enifed('container/registry', ['exports', 'ember-metal/core', 'ember-metal/dictio
2027
2015
 
2028
2016
  this.validateFullName(injectionName);
2029
2017
 
2030
- if (fullName.indexOf(":") === -1) {
2018
+ if (fullName.indexOf(':') === -1) {
2031
2019
  return this.factoryTypeInjection(normalizedName, property, normalizedInjectionName);
2032
2020
  }
2033
2021
 
@@ -2041,7 +2029,7 @@ enifed('container/registry', ['exports', 'ember-metal/core', 'ember-metal/dictio
2041
2029
 
2042
2030
  validateFullName: function (fullName) {
2043
2031
  if (!VALID_FULL_NAME_REGEXP.test(fullName)) {
2044
- throw new TypeError("Invalid Fullname, expected: `type:name` got: " + fullName);
2032
+ throw new TypeError('Invalid Fullname, expected: `type:name` got: ' + fullName);
2045
2033
  }
2046
2034
  return true;
2047
2035
  },
@@ -2057,7 +2045,7 @@ enifed('container/registry', ['exports', 'ember-metal/core', 'ember-metal/dictio
2057
2045
  fullName = injections[i].fullName;
2058
2046
 
2059
2047
  if (!this.has(fullName)) {
2060
- throw new Error("Attempting to inject an unknown injection: `" + fullName + "`");
2048
+ throw new Error('Attempting to inject an unknown injection: `' + fullName + '`');
2061
2049
  }
2062
2050
  }
2063
2051
  },
@@ -2067,7 +2055,7 @@ enifed('container/registry', ['exports', 'ember-metal/core', 'ember-metal/dictio
2067
2055
 
2068
2056
  for (var key in hash) {
2069
2057
  if (hash.hasOwnProperty(key)) {
2070
- Ember['default'].assert("Expected a proper full name, given '" + hash[key] + "'", this.validateFullName(hash[key]));
2058
+ Ember['default'].assert('Expected a proper full name, given \'' + hash[key] + '\'', this.validateFullName(hash[key]));
2071
2059
 
2072
2060
  injections.push({
2073
2061
  property: key,
@@ -3207,7 +3195,7 @@ enifed('ember-application', ['ember-metal/core', 'ember-runtime/system/lazy_load
3207
3195
  Ember['default'].Resolver = DefaultResolver.Resolver;
3208
3196
  Ember['default'].DefaultResolver = DefaultResolver['default'];
3209
3197
 
3210
- lazy_load.runLoadHooks("Ember.Application", Application['default']);
3198
+ lazy_load.runLoadHooks('Ember.Application', Application['default']);
3211
3199
 
3212
3200
  });
3213
3201
  enifed('ember-application/ext/controller', ['exports', 'ember-metal/core', 'ember-metal/property_get', 'ember-metal/error', 'ember-metal/utils', 'ember-metal/computed', 'ember-runtime/mixins/controller', 'ember-routing/system/controller_for'], function (exports, Ember, property_get, EmberError, utils, computed, ControllerMixin, controllerFor) {
@@ -3715,7 +3703,7 @@ enifed('ember-application/system/application', ['exports', 'dag-map', 'container
3715
3703
  @type DOMElement
3716
3704
  @default 'body'
3717
3705
  */
3718
- rootElement: "body",
3706
+ rootElement: 'body',
3719
3707
 
3720
3708
  /**
3721
3709
  The `Ember.EventDispatcher` responsible for delegating events to this
@@ -3809,8 +3797,8 @@ enifed('ember-application/system/application', ['exports', 'dag-map', 'container
3809
3797
  */
3810
3798
  buildInstance: function () {
3811
3799
  return ApplicationInstance['default'].create({
3812
- customEvents: property_get.get(this, "customEvents"),
3813
- rootElement: property_get.get(this, "rootElement"),
3800
+ customEvents: property_get.get(this, 'customEvents'),
3801
+ rootElement: property_get.get(this, 'rootElement'),
3814
3802
  applicationRegistry: this.registry
3815
3803
  });
3816
3804
  },
@@ -3820,7 +3808,7 @@ enifed('ember-application/system/application', ['exports', 'dag-map', 'container
3820
3808
 
3821
3809
  // For the default instance only, set the view registry to the global
3822
3810
  // Ember.View.views hash for backwards-compatibility.
3823
- EmberView['default'].views = instance.container.lookup("-view-registry:main");
3811
+ EmberView['default'].views = instance.container.lookup('-view-registry:main');
3824
3812
 
3825
3813
  // TODO2.0: Legacy support for App.__container__
3826
3814
  // and global methods on App that rely on a single,
@@ -3846,9 +3834,9 @@ enifed('ember-application/system/application', ['exports', 'dag-map', 'container
3846
3834
  */
3847
3835
  waitForDOMReady: function (_instance) {
3848
3836
  if (!this.$ || this.$.isReady) {
3849
- run['default'].schedule("actions", this, "domReady", _instance);
3837
+ run['default'].schedule('actions', this, 'domReady', _instance);
3850
3838
  } else {
3851
- this.$().ready(run['default'].bind(this, "domReady", _instance));
3839
+ this.$().ready(run['default'].bind(this, 'domReady', _instance));
3852
3840
  }
3853
3841
  },
3854
3842
 
@@ -3858,7 +3846,7 @@ enifed('ember-application/system/application', ['exports', 'dag-map', 'container
3858
3846
  ```javascript
3859
3847
  var App = Ember.Application.create();
3860
3848
  App.deferReadiness();
3861
- // Ember.$ is a reference to the jQuery object/function
3849
+ // Ember.$ is a reference to the jQuery object/function
3862
3850
  Ember.$.getJSON('/auth-token', function(token) {
3863
3851
  App.token = token;
3864
3852
  App.advanceReadiness();
@@ -3871,8 +3859,8 @@ enifed('ember-application/system/application', ['exports', 'dag-map', 'container
3871
3859
  @method deferReadiness
3872
3860
  */
3873
3861
  deferReadiness: function () {
3874
- Ember['default'].assert("You must call deferReadiness on an instance of Ember.Application", this instanceof Application);
3875
- Ember['default'].assert("You cannot defer readiness since the `ready()` hook has already been called.", this._readinessDeferrals > 0);
3862
+ Ember['default'].assert('You must call deferReadiness on an instance of Ember.Application', this instanceof Application);
3863
+ Ember['default'].assert('You cannot defer readiness since the `ready()` hook has already been called.', this._readinessDeferrals > 0);
3876
3864
  this._readinessDeferrals++;
3877
3865
  },
3878
3866
 
@@ -3884,7 +3872,7 @@ enifed('ember-application/system/application', ['exports', 'dag-map', 'container
3884
3872
  @see {Ember.Application#deferReadiness}
3885
3873
  */
3886
3874
  advanceReadiness: function () {
3887
- Ember['default'].assert("You must call advanceReadiness on an instance of Ember.Application", this instanceof Application);
3875
+ Ember['default'].assert('You must call advanceReadiness on an instance of Ember.Application', this instanceof Application);
3888
3876
  this._readinessDeferrals--;
3889
3877
 
3890
3878
  if (this._readinessDeferrals === 0) {
@@ -3922,9 +3910,9 @@ enifed('ember-application/system/application', ['exports', 'dag-map', 'container
3922
3910
  Some examples modifying that default behavior:
3923
3911
  ```javascript
3924
3912
  var App = Ember.Application.create();
3925
- App.Person = Ember.Object.extend();
3926
- App.Orange = Ember.Object.extend();
3927
- App.Email = Ember.Object.extend();
3913
+ App.Person = Ember.Object.extend();
3914
+ App.Orange = Ember.Object.extend();
3915
+ App.Email = Ember.Object.extend();
3928
3916
  App.session = Ember.Object.create();
3929
3917
  App.register('model:user', App.Person, { singleton: false });
3930
3918
  App.register('fruit:favorite', App.Orange);
@@ -3981,9 +3969,9 @@ enifed('ember-application/system/application', ['exports', 'dag-map', 'container
3981
3969
  @param injectionName {String}
3982
3970
  **/
3983
3971
  inject: function () {
3984
- var _registry;
3972
+ var _registry2;
3985
3973
 
3986
- (_registry = this.registry).injection.apply(_registry, arguments);
3974
+ (_registry2 = this.registry).injection.apply(_registry2, arguments);
3987
3975
  },
3988
3976
 
3989
3977
  /**
@@ -3995,7 +3983,7 @@ enifed('ember-application/system/application', ['exports', 'dag-map', 'container
3995
3983
  @method initialize
3996
3984
  **/
3997
3985
  initialize: function () {
3998
- Ember['default'].deprecate("Calling initialize manually is not supported. Please see Ember.Application#advanceReadiness and Ember.Application#deferReadiness");
3986
+ Ember['default'].deprecate('Calling initialize manually is not supported. Please see Ember.Application#advanceReadiness and Ember.Application#deferReadiness');
3999
3987
  },
4000
3988
 
4001
3989
  /**
@@ -4030,7 +4018,7 @@ enifed('ember-application/system/application', ['exports', 'dag-map', 'container
4030
4018
  this._bootResolver = defer;
4031
4019
 
4032
4020
  this.runInitializers(this.registry);
4033
- lazy_load.runLoadHooks("application", this);
4021
+ lazy_load.runLoadHooks('application', this);
4034
4022
 
4035
4023
  this.advanceReadiness();
4036
4024
 
@@ -4097,11 +4085,11 @@ enifed('ember-application/system/application', ['exports', 'dag-map', 'container
4097
4085
  this._bootResolver = null;
4098
4086
 
4099
4087
  function handleReset() {
4100
- run['default'](instance, "destroy");
4088
+ run['default'](instance, 'destroy');
4101
4089
 
4102
4090
  this.buildDefaultInstance();
4103
4091
 
4104
- run['default'].schedule("actions", this, "domReady");
4092
+ run['default'].schedule('actions', this, 'domReady');
4105
4093
  }
4106
4094
 
4107
4095
  run['default'].join(this, handleReset);
@@ -4113,8 +4101,8 @@ enifed('ember-application/system/application', ['exports', 'dag-map', 'container
4113
4101
  */
4114
4102
  runInitializers: function (registry) {
4115
4103
  var App = this;
4116
- this._runInitializer("initializers", function (name, initializer) {
4117
- Ember['default'].assert("No application initializer named '" + name + "'", !!initializer);
4104
+ this._runInitializer('initializers', function (name, initializer) {
4105
+ Ember['default'].assert('No application initializer named \'' + name + '\'', !!initializer);
4118
4106
 
4119
4107
 
4120
4108
  initializer.initialize(registry, App);
@@ -4122,8 +4110,8 @@ enifed('ember-application/system/application', ['exports', 'dag-map', 'container
4122
4110
  },
4123
4111
 
4124
4112
  runInstanceInitializers: function (instance) {
4125
- this._runInitializer("instanceInitializers", function (name, initializer) {
4126
- Ember['default'].assert("No instance initializer named '" + name + "'", !!initializer);
4113
+ this._runInitializer('instanceInitializers', function (name, initializer) {
4114
+ Ember['default'].assert('No instance initializer named \'' + name + '\'', !!initializer);
4127
4115
  initializer.initialize(instance);
4128
4116
  });
4129
4117
  },
@@ -4193,6 +4181,7 @@ enifed('ember-application/system/application', ['exports', 'dag-map', 'container
4193
4181
 
4194
4182
  // This method must be moved to the application instance object
4195
4183
  willDestroy: function () {
4184
+ this._super.apply(this, arguments);
4196
4185
  Ember['default'].BOOTED = false;
4197
4186
  this._bootPromise = null;
4198
4187
  this._bootResolver = null;
@@ -4209,7 +4198,7 @@ enifed('ember-application/system/application', ['exports', 'dag-map', 'container
4209
4198
  @deprecated
4210
4199
  */
4211
4200
  then: function () {
4212
- Ember['default'].deprecate("Do not use `.then` on an instance of Ember.Application. Please use the `.ready` hook instead.", false, { url: "http://emberjs.com/guides/deprecations/#toc_deprecate-code-then-code-on-ember-application" });
4201
+ Ember['default'].deprecate('Do not use `.then` on an instance of Ember.Application. Please use the `.ready` hook instead.', false, { url: 'http://emberjs.com/guides/deprecations/#toc_deprecate-code-then-code-on-ember-application' });
4213
4202
 
4214
4203
  this._super.apply(this, arguments);
4215
4204
  }
@@ -4223,7 +4212,7 @@ enifed('ember-application/system/application', ['exports', 'dag-map', 'container
4223
4212
  });
4224
4213
 
4225
4214
  Application.reopenClass({
4226
- instanceInitializer: buildInitializerMethod("instanceInitializers", "instance initializer")
4215
+ instanceInitializer: buildInitializerMethod('instanceInitializers', 'instance initializer')
4227
4216
  });
4228
4217
 
4229
4218
 
@@ -4326,7 +4315,7 @@ enifed('ember-application/system/application', ['exports', 'dag-map', 'container
4326
4315
  @method initializer
4327
4316
  @param initializer {Object}
4328
4317
  */
4329
- initializer: buildInitializerMethod("initializers", "initializer"),
4318
+ initializer: buildInitializerMethod('initializers', 'initializer'),
4330
4319
 
4331
4320
  /**
4332
4321
  This creates a registry with the default Ember naming conventions.
@@ -4359,62 +4348,62 @@ enifed('ember-application/system/application', ['exports', 'dag-map', 'container
4359
4348
  registry.describe = registry.resolver.describe;
4360
4349
  registry.makeToString = registry.resolver.makeToString;
4361
4350
 
4362
- registry.optionsForType("component", { singleton: false });
4363
- registry.optionsForType("view", { singleton: false });
4364
- registry.optionsForType("template", { instantiate: false });
4365
- registry.optionsForType("helper", { instantiate: false });
4351
+ registry.optionsForType('component', { singleton: false });
4352
+ registry.optionsForType('view', { singleton: false });
4353
+ registry.optionsForType('template', { instantiate: false });
4354
+ registry.optionsForType('helper', { instantiate: false });
4366
4355
 
4367
- registry.register("application:main", namespace, { instantiate: false });
4356
+ registry.register('application:main', namespace, { instantiate: false });
4368
4357
 
4369
- registry.register("controller:basic", Controller['default'], { instantiate: false });
4370
- registry.register("controller:object", ObjectController['default'], { instantiate: false });
4371
- registry.register("controller:array", ArrayController['default'], { instantiate: false });
4358
+ registry.register('controller:basic', Controller['default'], { instantiate: false });
4359
+ registry.register('controller:object', ObjectController['default'], { instantiate: false });
4360
+ registry.register('controller:array', ArrayController['default'], { instantiate: false });
4372
4361
 
4373
- registry.register("renderer:-dom", { create: function () {
4362
+ registry.register('renderer:-dom', { create: function () {
4374
4363
  return new Renderer['default'](new DOMHelper['default']());
4375
4364
  } });
4376
4365
 
4377
- registry.injection("view", "renderer", "renderer:-dom");
4378
- registry.register("view:select", SelectView['default']);
4379
- registry.register("view:-outlet", outlet.OutletView);
4366
+ registry.injection('view', 'renderer', 'renderer:-dom');
4367
+ registry.register('view:select', SelectView['default']);
4368
+ registry.register('view:-outlet', outlet.OutletView);
4380
4369
 
4381
- registry.register("-view-registry:main", { create: function () {
4370
+ registry.register('-view-registry:main', { create: function () {
4382
4371
  return {};
4383
4372
  } });
4384
4373
 
4385
- registry.injection("view", "_viewRegistry", "-view-registry:main");
4374
+ registry.injection('view', '_viewRegistry', '-view-registry:main');
4386
4375
 
4387
- registry.register("view:default", _MetamorphView['default']);
4388
- registry.register("view:toplevel", EmberView['default'].extend());
4376
+ registry.register('view:default', _MetamorphView['default']);
4377
+ registry.register('view:toplevel', EmberView['default'].extend());
4389
4378
 
4390
- registry.register("route:basic", Route['default'], { instantiate: false });
4391
- registry.register("event_dispatcher:main", EventDispatcher['default']);
4379
+ registry.register('route:basic', Route['default'], { instantiate: false });
4380
+ registry.register('event_dispatcher:main', EventDispatcher['default']);
4392
4381
 
4393
- registry.injection("router:main", "namespace", "application:main");
4394
- registry.injection("view:-outlet", "namespace", "application:main");
4382
+ registry.injection('router:main', 'namespace', 'application:main');
4383
+ registry.injection('view:-outlet', 'namespace', 'application:main');
4395
4384
 
4396
- registry.register("location:auto", AutoLocation['default']);
4397
- registry.register("location:hash", HashLocation['default']);
4398
- registry.register("location:history", HistoryLocation['default']);
4399
- registry.register("location:none", NoneLocation['default']);
4385
+ registry.register('location:auto', AutoLocation['default']);
4386
+ registry.register('location:hash', HashLocation['default']);
4387
+ registry.register('location:history', HistoryLocation['default']);
4388
+ registry.register('location:none', NoneLocation['default']);
4400
4389
 
4401
- registry.injection("controller", "target", "router:main");
4402
- registry.injection("controller", "namespace", "application:main");
4390
+ registry.injection('controller', 'target', 'router:main');
4391
+ registry.injection('controller', 'namespace', 'application:main');
4403
4392
 
4404
- registry.register("-bucket-cache:main", BucketCache['default']);
4405
- registry.injection("router", "_bucketCache", "-bucket-cache:main");
4406
- registry.injection("route", "_bucketCache", "-bucket-cache:main");
4407
- registry.injection("controller", "_bucketCache", "-bucket-cache:main");
4393
+ registry.register('-bucket-cache:main', BucketCache['default']);
4394
+ registry.injection('router', '_bucketCache', '-bucket-cache:main');
4395
+ registry.injection('route', '_bucketCache', '-bucket-cache:main');
4396
+ registry.injection('controller', '_bucketCache', '-bucket-cache:main');
4408
4397
 
4409
- registry.injection("route", "router", "router:main");
4398
+ registry.injection('route', 'router', 'router:main');
4410
4399
 
4411
4400
  // DEBUGGING
4412
- registry.register("resolver-for-debugging:main", registry.resolver.__resolver__, { instantiate: false });
4413
- registry.injection("container-debug-adapter:main", "resolver", "resolver-for-debugging:main");
4414
- registry.injection("data-adapter:main", "containerDebugAdapter", "container-debug-adapter:main");
4401
+ registry.register('resolver-for-debugging:main', registry.resolver.__resolver__, { instantiate: false });
4402
+ registry.injection('container-debug-adapter:main', 'resolver', 'resolver-for-debugging:main');
4403
+ registry.injection('data-adapter:main', 'containerDebugAdapter', 'container-debug-adapter:main');
4415
4404
  // Custom resolver authors may want to register their own ContainerDebugAdapter with this key
4416
4405
 
4417
- registry.register("container-debug-adapter:main", ContainerDebugAdapter['default']);
4406
+ registry.register('container-debug-adapter:main', ContainerDebugAdapter['default']);
4418
4407
 
4419
4408
  return registry;
4420
4409
  }
@@ -4437,9 +4426,9 @@ enifed('ember-application/system/application', ['exports', 'dag-map', 'container
4437
4426
  @return {*} the resolved value for a given lookup
4438
4427
  */
4439
4428
  function resolverFor(namespace) {
4440
- Ember['default'].deprecate("Application.resolver is deprecated in favor of Application.Resolver", !namespace.get("resolver"));
4429
+ Ember['default'].deprecate('Application.resolver is deprecated in favor of Application.Resolver', !namespace.get('resolver'));
4441
4430
 
4442
- var ResolverClass = namespace.get("resolver") || namespace.get("Resolver") || DefaultResolver['default'];
4431
+ var ResolverClass = namespace.get('resolver') || namespace.get('Resolver') || DefaultResolver['default'];
4443
4432
  var resolver = ResolverClass.create({
4444
4433
  namespace: namespace
4445
4434
  });
@@ -4460,7 +4449,7 @@ enifed('ember-application/system/application', ['exports', 'dag-map', 'container
4460
4449
  if (resolver.normalize) {
4461
4450
  return resolver.normalize(fullName);
4462
4451
  } else {
4463
- Ember['default'].deprecate("The Resolver should now provide a 'normalize' function");
4452
+ Ember['default'].deprecate('The Resolver should now provide a \'normalize\' function');
4464
4453
  return fullName;
4465
4454
  }
4466
4455
  };
@@ -4475,7 +4464,7 @@ enifed('ember-application/system/application', ['exports', 'dag-map', 'container
4475
4464
  librariesRegistered = true;
4476
4465
 
4477
4466
  if (environment['default'].hasDOM) {
4478
- Ember['default'].libraries.registerCoreLibrary("jQuery", jQuery['default']().jquery);
4467
+ Ember['default'].libraries.registerCoreLibrary('jQuery', jQuery['default']().jquery);
4479
4468
  }
4480
4469
  }
4481
4470
  }
@@ -4487,18 +4476,18 @@ enifed('ember-application/system/application', ['exports', 'dag-map', 'container
4487
4476
  var libs = Ember['default'].libraries._registry;
4488
4477
 
4489
4478
  var nameLengths = EnumerableUtils['default'].map(libs, function (item) {
4490
- return property_get.get(item, "name.length");
4479
+ return property_get.get(item, 'name.length');
4491
4480
  });
4492
4481
 
4493
4482
  var maxNameLength = Math.max.apply(this, nameLengths);
4494
4483
 
4495
- Ember['default'].debug("-------------------------------");
4484
+ Ember['default'].debug('-------------------------------');
4496
4485
  for (var i = 0, l = libs.length; i < l; i++) {
4497
4486
  var lib = libs[i];
4498
- var spaces = new Array(maxNameLength - lib.name.length + 1).join(" ");
4499
- Ember['default'].debug([lib.name, spaces, " : ", lib.version].join(""));
4487
+ var spaces = new Array(maxNameLength - lib.name.length + 1).join(' ');
4488
+ Ember['default'].debug([lib.name, spaces, ' : ', lib.version].join(''));
4500
4489
  }
4501
- Ember['default'].debug("-------------------------------");
4490
+ Ember['default'].debug('-------------------------------');
4502
4491
  }
4503
4492
  }
4504
4493
 
@@ -4514,9 +4503,9 @@ enifed('ember-application/system/application', ['exports', 'dag-map', 'container
4514
4503
  this.reopenClass(attrs);
4515
4504
  }
4516
4505
 
4517
- Ember['default'].assert("The " + humanName + " '" + initializer.name + "' has already been registered", !this[bucketName][initializer.name]);
4518
- Ember['default'].assert("An " + humanName + " cannot be registered without an initialize function", utils.canInvoke(initializer, "initialize"));
4519
- Ember['default'].assert("An " + humanName + " cannot be registered without a name property", initializer.name !== undefined);
4506
+ Ember['default'].assert('The ' + humanName + ' \'' + initializer.name + '\' has already been registered', !this[bucketName][initializer.name]);
4507
+ Ember['default'].assert('An ' + humanName + ' cannot be registered without an initialize function', utils.canInvoke(initializer, 'initialize'));
4508
+ Ember['default'].assert('An ' + humanName + ' cannot be registered without a name property', initializer.name !== undefined);
4520
4509
 
4521
4510
  this[bucketName][initializer.name] = initializer;
4522
4511
  };
@@ -4529,8 +4518,6 @@ enifed('ember-application/system/resolver', ['exports', 'ember-metal/core', 'emb
4529
4518
 
4530
4519
  'use strict';
4531
4520
 
4532
- var _slicedToArray = function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { var _arr = []; for (var _iterator = arr[Symbol.iterator](), _step; !(_step = _iterator.next()).done;) { _arr.push(_step.value); if (i && _arr.length === i) break; } return _arr; } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } };
4533
-
4534
4521
  /**
4535
4522
  @module ember
4536
4523
  @submodule ember-application
@@ -4550,9 +4537,7 @@ enifed('ember-application/system/resolver', ['exports', 'ember-metal/core', 'emb
4550
4537
  makeToString: null, // required
4551
4538
  resolveOther: null, // required
4552
4539
  _logLookup: null // required
4553
- });
4554
-
4555
- exports['default'] = EmberObject['default'].extend({
4540
+ });exports['default'] = EmberObject['default'].extend({
4556
4541
  /**
4557
4542
  This will be set to the Application instance when it is
4558
4543
  created.
@@ -4564,31 +4549,29 @@ enifed('ember-application/system/resolver', ['exports', 'ember-metal/core', 'emb
4564
4549
  this._parseNameCache = dictionary['default'](null);
4565
4550
  },
4566
4551
  normalize: function (fullName) {
4567
- var _fullName$split = fullName.split(":", 2);
4552
+ var _fullName$split = fullName.split(':', 2);
4568
4553
 
4569
- var _fullName$split2 = _slicedToArray(_fullName$split, 2);
4554
+ var type = _fullName$split[0];
4555
+ var name = _fullName$split[1];
4570
4556
 
4571
- var type = _fullName$split2[0];
4572
- var name = _fullName$split2[1];
4557
+ Ember['default'].assert('Tried to normalize a container name without a colon (:) in it.' + ' You probably tried to lookup a name that did not contain a type,' + ' a colon, and a name. A proper lookup name would be `view:post`.', fullName.split(':').length === 2);
4573
4558
 
4574
- Ember['default'].assert("Tried to normalize a container name without a colon (:) in it." + " You probably tried to lookup a name that did not contain a type," + " a colon, and a name. A proper lookup name would be `view:post`.", fullName.split(":").length === 2);
4575
-
4576
- if (type !== "template") {
4559
+ if (type !== 'template') {
4577
4560
  var result = name;
4578
4561
 
4579
- if (result.indexOf(".") > -1) {
4562
+ if (result.indexOf('.') > -1) {
4580
4563
  result = result.replace(/\.(.)/g, function (m) {
4581
4564
  return m.charAt(1).toUpperCase();
4582
4565
  });
4583
4566
  }
4584
4567
 
4585
- if (name.indexOf("_") > -1) {
4568
+ if (name.indexOf('_') > -1) {
4586
4569
  result = result.replace(/_(.)/g, function (m) {
4587
4570
  return m.charAt(1).toUpperCase();
4588
4571
  });
4589
4572
  }
4590
4573
 
4591
- return type + ":" + result;
4574
+ return type + ':' + result;
4592
4575
  } else {
4593
4576
  return fullName;
4594
4577
  }
@@ -4634,30 +4617,28 @@ enifed('ember-application/system/resolver', ['exports', 'ember-metal/core', 'emb
4634
4617
  },
4635
4618
 
4636
4619
  _parseName: function (fullName) {
4637
- var _fullName$split = fullName.split(":");
4638
-
4639
- var _fullName$split2 = _slicedToArray(_fullName$split, 2);
4620
+ var _fullName$split2 = fullName.split(':');
4640
4621
 
4641
4622
  var type = _fullName$split2[0];
4642
4623
  var fullNameWithoutType = _fullName$split2[1];
4643
4624
 
4644
4625
  var name = fullNameWithoutType;
4645
- var namespace = property_get.get(this, "namespace");
4626
+ var namespace = property_get.get(this, 'namespace');
4646
4627
  var root = namespace;
4647
4628
 
4648
- if (type !== "template" && name.indexOf("/") !== -1) {
4649
- var parts = name.split("/");
4629
+ if (type !== 'template' && name.indexOf('/') !== -1) {
4630
+ var parts = name.split('/');
4650
4631
  name = parts[parts.length - 1];
4651
- var namespaceName = string.capitalize(parts.slice(0, -1).join("."));
4632
+ var namespaceName = string.capitalize(parts.slice(0, -1).join('.'));
4652
4633
  root = Namespace['default'].byName(namespaceName);
4653
4634
 
4654
- Ember['default'].assert("You are looking for a " + name + " " + type + " in the " + namespaceName + " namespace, but the namespace could not be found", root);
4635
+ Ember['default'].assert('You are looking for a ' + name + ' ' + type + ' in the ' + namespaceName + ' namespace, but the namespace could not be found', root);
4655
4636
  }
4656
4637
 
4657
- var resolveMethodName = fullNameWithoutType === "main" ? "Main" : string.classify(type);
4638
+ var resolveMethodName = fullNameWithoutType === 'main' ? 'Main' : string.classify(type);
4658
4639
 
4659
4640
  if (!(name && type)) {
4660
- throw new TypeError("Invalid fullName: `" + fullName + "`, must be of the form `type:name` ");
4641
+ throw new TypeError('Invalid fullName: `' + fullName + '`, must be of the form `type:name` ');
4661
4642
  }
4662
4643
 
4663
4644
  return {
@@ -4666,7 +4647,7 @@ enifed('ember-application/system/resolver', ['exports', 'ember-metal/core', 'emb
4666
4647
  fullNameWithoutType: fullNameWithoutType,
4667
4648
  name: name,
4668
4649
  root: root,
4669
- resolveMethodName: "resolve" + resolveMethodName
4650
+ resolveMethodName: 'resolve' + resolveMethodName
4670
4651
  };
4671
4652
  },
4672
4653
 
@@ -4683,13 +4664,13 @@ enifed('ember-application/system/resolver', ['exports', 'ember-metal/core', 'emb
4683
4664
  var parsedName = this.parseName(fullName);
4684
4665
  var description;
4685
4666
 
4686
- if (parsedName.type === "template") {
4687
- return "template at " + parsedName.fullNameWithoutType.replace(/\./g, "/");
4667
+ if (parsedName.type === 'template') {
4668
+ return 'template at ' + parsedName.fullNameWithoutType.replace(/\./g, '/');
4688
4669
  }
4689
4670
 
4690
- description = parsedName.root + "." + string.classify(parsedName.name).replace(/\./g, "");
4671
+ description = parsedName.root + '.' + string.classify(parsedName.name).replace(/\./g, '');
4691
4672
 
4692
- if (parsedName.type !== "model") {
4673
+ if (parsedName.type !== 'model') {
4693
4674
  description += string.classify(parsedName.type);
4694
4675
  }
4695
4676
 
@@ -4709,9 +4690,9 @@ enifed('ember-application/system/resolver', ['exports', 'ember-metal/core', 'emb
4709
4690
  @method useRouterNaming
4710
4691
  */
4711
4692
  useRouterNaming: function (parsedName) {
4712
- parsedName.name = parsedName.name.replace(/\./g, "_");
4713
- if (parsedName.name === "basic") {
4714
- parsedName.name = "";
4693
+ parsedName.name = parsedName.name.replace(/\./g, '_');
4694
+ if (parsedName.name === 'basic') {
4695
+ parsedName.name = '';
4715
4696
  }
4716
4697
  },
4717
4698
  /**
@@ -4722,7 +4703,7 @@ enifed('ember-application/system/resolver', ['exports', 'ember-metal/core', 'emb
4722
4703
  @method resolveTemplate
4723
4704
  */
4724
4705
  resolveTemplate: function (parsedName) {
4725
- var templateName = parsedName.fullNameWithoutType.replace(/\./g, "/");
4706
+ var templateName = parsedName.fullNameWithoutType.replace(/\./g, '/');
4726
4707
 
4727
4708
  if (Ember['default'].TEMPLATES[templateName]) {
4728
4709
  return Ember['default'].TEMPLATES[templateName];
@@ -4826,15 +4807,15 @@ enifed('ember-application/system/resolver', ['exports', 'ember-metal/core', 'emb
4826
4807
  var symbol, padding;
4827
4808
 
4828
4809
  if (found) {
4829
- symbol = "[✓]";
4810
+ symbol = '[✓]';
4830
4811
  } else {
4831
- symbol = "[ ]";
4812
+ symbol = '[ ]';
4832
4813
  }
4833
4814
 
4834
4815
  if (parsedName.fullName.length > 60) {
4835
- padding = ".";
4816
+ padding = '.';
4836
4817
  } else {
4837
- padding = new Array(60 - parsedName.fullName.length).join(".");
4818
+ padding = new Array(60 - parsedName.fullName.length).join('.');
4838
4819
  }
4839
4820
 
4840
4821
  Logger['default'].info(symbol, parsedName.fullName, padding, this.lookupDescription(parsedName.fullName));
@@ -4844,7 +4825,7 @@ enifed('ember-application/system/resolver', ['exports', 'ember-metal/core', 'emb
4844
4825
  exports.Resolver = Resolver;
4845
4826
 
4846
4827
  });
4847
- enifed('ember-debug', ['exports', 'ember-metal/core', 'ember-metal/error', 'ember-metal/logger', 'ember-metal/environment'], function (exports, Ember, EmberError, Logger, environment) {
4828
+ enifed('ember-debug', ['exports', 'ember-metal/core', 'ember-metal/utils', 'ember-metal/error', 'ember-metal/logger', 'ember-metal/environment'], function (exports, Ember, utils, EmberError, Logger, environment) {
4848
4829
 
4849
4830
  'use strict';
4850
4831
 
@@ -4863,7 +4844,7 @@ enifed('ember-debug', ['exports', 'ember-metal/core', 'ember-metal/error', 'embe
4863
4844
  Ember['default'].assert = function (desc, test) {
4864
4845
  var throwAssertion;
4865
4846
 
4866
- if (Ember['default'].typeOf(test) === "function") {
4847
+ if (utils.typeOf(test) === "function") {
4867
4848
  throwAssertion = !test();
4868
4849
  } else {
4869
4850
  throwAssertion = !test;
@@ -4914,8 +4895,9 @@ enifed('ember-debug', ['exports', 'ember-metal/core', 'ember-metal/error', 'embe
4914
4895
 
4915
4896
  @method deprecate
4916
4897
  @param {String} message A description of the deprecation.
4917
- @param {Boolean} test An optional boolean. If falsy, the deprecation
4918
- will be displayed.
4898
+ @param {Boolean|Function} test An optional boolean. If falsy, the deprecation
4899
+ will be displayed. If this is a function, it will be executed and its return
4900
+ value will be used as condition.
4919
4901
  @param {Object} options An optional object that can be used to pass
4920
4902
  in a `url` to the transition guide on the emberjs.com website.
4921
4903
  */
@@ -5668,7 +5650,7 @@ enifed('ember-htmlbars/compat/handlebars-get', ['exports'], function (exports) {
5668
5650
  exports['default'] = handlebarsGet;
5669
5651
 
5670
5652
  function handlebarsGet(root, path, options) {
5671
- Ember.deprecate("Usage of Ember.Handlebars.get is deprecated, use a Component or Ember.Handlebars.makeBoundHelper instead.");
5653
+ Ember.deprecate('Usage of Ember.Handlebars.get is deprecated, use a Component or Ember.Handlebars.makeBoundHelper instead.');
5672
5654
 
5673
5655
  return options.data.view.getStream(path).value();
5674
5656
  }
@@ -5703,7 +5685,7 @@ enifed('ember-htmlbars/compat/helper', ['exports', 'ember-metal/merge', 'ember-h
5703
5685
  function HandlebarsCompatibleHelper(fn) {
5704
5686
  this.helperFunction = function helperFunc(params, hash, options, env) {
5705
5687
  var param, blockResult, fnResult;
5706
- var context = this;
5688
+ var context = env.data.view;
5707
5689
  var handlebarsOptions = {
5708
5690
  hash: {},
5709
5691
  types: new Array(params.length),
@@ -5719,6 +5701,12 @@ enifed('ember-htmlbars/compat/helper', ['exports', 'ember-metal/merge', 'ember-h
5719
5701
  handlebarsOptions.fn = function () {
5720
5702
  blockResult = options.template.render(context, env, options.morph.contextualElement);
5721
5703
  };
5704
+
5705
+ if (options.inverse) {
5706
+ handlebarsOptions.inverse = function () {
5707
+ blockResult = options.inverse.render(context, env, options.morph.contextualElement);
5708
+ };
5709
+ }
5722
5710
  }
5723
5711
 
5724
5712
  for (var prop in hash) {
@@ -6083,12 +6071,6 @@ enifed('ember-htmlbars/helpers', ['exports', 'ember-metal/platform/create', 'emb
6083
6071
  @param {Object|Function} helperFunc the helper function to add
6084
6072
  */
6085
6073
  var helpers = o_create['default'](null);
6086
-
6087
- /**
6088
- @module ember
6089
- @submodule ember-htmlbars
6090
- */
6091
-
6092
6074
  function registerHelper(name, helperFunc) {
6093
6075
  var helper;
6094
6076
 
@@ -6571,14 +6553,14 @@ enifed('ember-htmlbars/helpers/debugger', ['exports', 'ember-metal/logger'], fun
6571
6553
  var view = env.data.view;
6572
6554
 
6573
6555
  /* jshint unused: false */
6574
- var context = view.get("context");
6556
+ var context = view.get('context');
6575
6557
 
6576
6558
  /* jshint unused: false */
6577
6559
  function get(path) {
6578
6560
  return view.getStream(path).value();
6579
6561
  }
6580
6562
 
6581
- Logger['default'].info("Use `view`, `context`, and `get(<path>)` to debug this template.");
6563
+ Logger['default'].info('Use `view`, `context`, and `get(<path>)` to debug this template.');
6582
6564
 
6583
6565
  debugger;
6584
6566
  }
@@ -6599,7 +6581,7 @@ enifed('ember-htmlbars/helpers/each', ['exports', 'ember-metal/core', 'ember-vie
6599
6581
  var helperName = "each";
6600
6582
  var path = params[0] || view.getStream("");
6601
6583
 
6602
- Ember['default'].assert("If you pass more than one argument to the each helper, " + "it must be in the form #each foo in bar", params.length <= 1);
6584
+ Ember['default'].assert("If you pass more than one argument to the each helper, " + "it must be in the form {{#each foo in bar}}", params.length <= 1);
6603
6585
 
6604
6586
  var blockParams = options.template && options.template.blockParams;
6605
6587
 
@@ -6608,7 +6590,7 @@ enifed('ember-htmlbars/helpers/each', ['exports', 'ember-metal/core', 'ember-vie
6608
6590
  hash.blockParams = blockParams;
6609
6591
  }
6610
6592
 
6611
- Ember['default'].deprecate("Using the context switching form of {{each}} is deprecated. " + "Please use the keyword form (`{{#each foo in bar}}`) instead.", hash.keyword === true || typeof hash.keyword === "string", { url: "http://emberjs.com/guides/deprecations/#toc_more-consistent-handlebars-scope" });
6593
+ Ember['default'].deprecate("Using the context switching form of {{each}} is deprecated. " + "Please use the block param form (`{{#each bar as |foo|}}`) instead.", hash.keyword === true || typeof hash.keyword === "string", { url: "http://emberjs.com/guides/deprecations/#toc_more-consistent-handlebars-scope" });
6612
6594
 
6613
6595
  hash.dataSource = path;
6614
6596
  options.helperName = options.helperName || helperName;
@@ -6948,7 +6930,7 @@ enifed('ember-htmlbars/helpers/loc', ['exports', 'ember-metal/core', 'ember-runt
6948
6930
  @see {Ember.String#loc}
6949
6931
  */
6950
6932
  function locHelper(params, hash, options, env) {
6951
- Ember['default'].assert("You cannot pass bindings to `loc` helper", (function ifParamsContainBindings() {
6933
+ Ember['default'].assert('You cannot pass bindings to `loc` helper', (function ifParamsContainBindings() {
6952
6934
  for (var i = 0, l = params.length; i < l; i++) {
6953
6935
  if (utils.isStream(params[i])) {
6954
6936
  return false;
@@ -7591,12 +7573,12 @@ enifed('ember-htmlbars/helpers/with', ['exports', 'ember-metal/core', 'ember-vie
7591
7573
 
7592
7574
  ```handlebars
7593
7575
  // posts might not be
7594
- {{#with user.posts as blogPosts}}
7576
+ {{#with user.posts as |blogPosts|}}
7595
7577
  <div class="notice">
7596
7578
  There are {{blogPosts.length}} blog posts written by {{user.name}}.
7597
7579
  </div>
7598
7580
 
7599
- {{#each post in blogPosts}}
7581
+ {{#each blogPosts as |post|}}
7600
7582
  <li>{{post.title}}</li>
7601
7583
  {{/each}}
7602
7584
  {{/with}}
@@ -7605,8 +7587,8 @@ enifed('ember-htmlbars/helpers/with', ['exports', 'ember-metal/core', 'ember-vie
7605
7587
  Without the `as` operator, it would be impossible to reference `user.name` in the example above.
7606
7588
 
7607
7589
  NOTE: The alias should not reuse a name from the bound property path.
7608
- For example: `{{#with foo.bar as foo}}` is not supported because it attempts to alias using
7609
- the first part of the property path, `foo`. Instead, use `{{#with foo.bar as baz}}`.
7590
+ For example: `{{#with foo as |foo.bar|}}` is not supported because it attempts to alias using
7591
+ the first part of the property path, `foo`. Instead, use `{{#with foo.bar as |baz|}}`.
7610
7592
 
7611
7593
  ### `controller` option
7612
7594
 
@@ -7616,7 +7598,7 @@ enifed('ember-htmlbars/helpers/with', ['exports', 'ember-metal/core', 'ember-vie
7616
7598
  This is very similar to using an `itemController` option with the `{{each}}` helper.
7617
7599
 
7618
7600
  ```handlebars
7619
- {{#with users.posts as posts controller='userBlogPosts'}}
7601
+ {{#with users.posts controller='userBlogPosts' as |posts|}}
7620
7602
  {{!- `posts` is wrapped in our controller instance }}
7621
7603
  {{/with}}
7622
7604
  ```
@@ -7632,7 +7614,7 @@ enifed('ember-htmlbars/helpers/with', ['exports', 'ember-metal/core', 'ember-vie
7632
7614
  @return {String} HTML string
7633
7615
  */
7634
7616
  function withHelper(params, hash, options, env) {
7635
- Ember['default'].assert("{{#with foo}} must be called with a single argument or the use the " + "{{#with foo as bar}} syntax", params.length === 1);
7617
+ Ember['default'].assert("{{#with}} must be called with an argument. For example, `{{#with foo as |bar|}}{{/with}}`", params.length === 1);
7636
7618
 
7637
7619
  Ember['default'].assert("The {{#with}} helper must be called with a block", !!options.template);
7638
7620
 
@@ -7642,7 +7624,7 @@ enifed('ember-htmlbars/helpers/with', ['exports', 'ember-metal/core', 'ember-vie
7642
7624
  if (options.template.blockParams) {
7643
7625
  preserveContext = true;
7644
7626
  } else {
7645
- Ember['default'].deprecate("Using the context switching form of `{{with}}` is deprecated. " + "Please use the keyword form (`{{with foo as bar}}`) instead.", false, { url: "http://emberjs.com/guides/deprecations/#toc_more-consistent-handlebars-scope" });
7627
+ Ember['default'].deprecate("Using the context switching form of `{{with}}` is deprecated. " + "Please use the block param form (`{{#with bar as |foo|}}`) instead.", false, { url: "http://emberjs.com/guides/deprecations/#toc_more-consistent-handlebars-scope" });
7646
7628
  preserveContext = false;
7647
7629
  }
7648
7630
 
@@ -8490,7 +8472,7 @@ enifed('ember-htmlbars/system/render-view', ['exports', 'ember-metal/core', 'emb
8490
8472
  }
8491
8473
 
8492
8474
  function renderHTMLBarsTemplate(view, buffer, template) {
8493
- Ember['default'].assert("The template being rendered by `" + view + "` was compiled with `" + template.revision + "` which does not match `Ember@1.12.0-beta.1` (this revision).", template.revision === "Ember@1.12.0-beta.1");
8475
+ Ember['default'].assert("The template being rendered by `" + view + "` was compiled with `" + template.revision + "` which does not match `Ember@1.12.0-beta.3` (this revision).", template.revision === "Ember@1.12.0-beta.3");
8494
8476
 
8495
8477
  var contextualElement = buffer.innerContextualElement();
8496
8478
  var args = view._blockArguments;
@@ -8529,7 +8511,7 @@ enifed('ember-htmlbars/templates/component', ['exports', 'ember-template-compile
8529
8511
  exports['default'] = template['default']((function () {
8530
8512
  return {
8531
8513
  isHTMLBars: true,
8532
- revision: "Ember@1.12.0-beta.1",
8514
+ revision: "Ember@1.12.0-beta.3",
8533
8515
  blockParams: 0,
8534
8516
  cachedFragment: null,
8535
8517
  hasRendered: false,
@@ -8577,7 +8559,7 @@ enifed('ember-htmlbars/templates/empty', ['exports', 'ember-template-compiler/sy
8577
8559
  exports['default'] = template['default']((function () {
8578
8560
  return {
8579
8561
  isHTMLBars: true,
8580
- revision: "Ember@1.12.0-beta.1",
8562
+ revision: "Ember@1.12.0-beta.3",
8581
8563
  blockParams: 0,
8582
8564
  cachedFragment: null,
8583
8565
  hasRendered: false,
@@ -8617,7 +8599,7 @@ enifed('ember-htmlbars/templates/link-to-escaped', ['exports', 'ember-template-c
8617
8599
  exports['default'] = template['default']((function () {
8618
8600
  return {
8619
8601
  isHTMLBars: true,
8620
- revision: "Ember@1.12.0-beta.1",
8602
+ revision: "Ember@1.12.0-beta.3",
8621
8603
  blockParams: 0,
8622
8604
  cachedFragment: null,
8623
8605
  hasRendered: false,
@@ -8665,7 +8647,7 @@ enifed('ember-htmlbars/templates/link-to-unescaped', ['exports', 'ember-template
8665
8647
  exports['default'] = template['default']((function () {
8666
8648
  return {
8667
8649
  isHTMLBars: true,
8668
- revision: "Ember@1.12.0-beta.1",
8650
+ revision: "Ember@1.12.0-beta.3",
8669
8651
  blockParams: 0,
8670
8652
  cachedFragment: null,
8671
8653
  hasRendered: false,
@@ -8705,6 +8687,54 @@ enifed('ember-htmlbars/templates/link-to-unescaped', ['exports', 'ember-template
8705
8687
  };
8706
8688
  })());
8707
8689
 
8690
+ });
8691
+ enifed('ember-htmlbars/templates/select-option', ['exports', 'ember-template-compiler/system/template'], function (exports, template) {
8692
+
8693
+ 'use strict';
8694
+
8695
+ exports['default'] = template['default']((function () {
8696
+ return {
8697
+ isHTMLBars: true,
8698
+ revision: "Ember@1.12.0-beta.3",
8699
+ blockParams: 0,
8700
+ cachedFragment: null,
8701
+ hasRendered: false,
8702
+ build: function build(dom) {
8703
+ var el0 = dom.createDocumentFragment();
8704
+ var el1 = dom.createComment("");
8705
+ dom.appendChild(el0, el1);
8706
+ return el0;
8707
+ },
8708
+ render: function render(context, env, contextualElement) {
8709
+ var dom = env.dom;
8710
+ var hooks = env.hooks,
8711
+ content = hooks.content;
8712
+ dom.detectNamespace(contextualElement);
8713
+ var fragment;
8714
+ if (env.useFragmentCache && dom.canClone) {
8715
+ if (this.cachedFragment === null) {
8716
+ fragment = this.build(dom);
8717
+ if (this.hasRendered) {
8718
+ this.cachedFragment = fragment;
8719
+ } else {
8720
+ this.hasRendered = true;
8721
+ }
8722
+ }
8723
+ if (this.cachedFragment) {
8724
+ fragment = dom.cloneNode(this.cachedFragment, true);
8725
+ }
8726
+ } else {
8727
+ fragment = this.build(dom);
8728
+ }
8729
+ var morph0 = dom.createMorphAt(fragment, 0, 0, contextualElement);
8730
+ dom.insertBoundary(fragment, null);
8731
+ dom.insertBoundary(fragment, 0);
8732
+ content(env, morph0, context, "view.label");
8733
+ return fragment;
8734
+ }
8735
+ };
8736
+ })());
8737
+
8708
8738
  });
8709
8739
  enifed('ember-htmlbars/templates/select', ['exports', 'ember-template-compiler/system/template'], function (exports, template) {
8710
8740
 
@@ -8714,7 +8744,7 @@ enifed('ember-htmlbars/templates/select', ['exports', 'ember-template-compiler/s
8714
8744
  var child0 = (function () {
8715
8745
  return {
8716
8746
  isHTMLBars: true,
8717
- revision: "Ember@1.12.0-beta.1",
8747
+ revision: "Ember@1.12.0-beta.3",
8718
8748
  blockParams: 0,
8719
8749
  cachedFragment: null,
8720
8750
  hasRendered: false,
@@ -8758,7 +8788,7 @@ enifed('ember-htmlbars/templates/select', ['exports', 'ember-template-compiler/s
8758
8788
  var child0 = (function () {
8759
8789
  return {
8760
8790
  isHTMLBars: true,
8761
- revision: "Ember@1.12.0-beta.1",
8791
+ revision: "Ember@1.12.0-beta.3",
8762
8792
  blockParams: 0,
8763
8793
  cachedFragment: null,
8764
8794
  hasRendered: false,
@@ -8800,7 +8830,7 @@ enifed('ember-htmlbars/templates/select', ['exports', 'ember-template-compiler/s
8800
8830
  })();
8801
8831
  return {
8802
8832
  isHTMLBars: true,
8803
- revision: "Ember@1.12.0-beta.1",
8833
+ revision: "Ember@1.12.0-beta.3",
8804
8834
  blockParams: 0,
8805
8835
  cachedFragment: null,
8806
8836
  hasRendered: false,
@@ -8844,7 +8874,7 @@ enifed('ember-htmlbars/templates/select', ['exports', 'ember-template-compiler/s
8844
8874
  var child0 = (function () {
8845
8875
  return {
8846
8876
  isHTMLBars: true,
8847
- revision: "Ember@1.12.0-beta.1",
8877
+ revision: "Ember@1.12.0-beta.3",
8848
8878
  blockParams: 0,
8849
8879
  cachedFragment: null,
8850
8880
  hasRendered: false,
@@ -8886,7 +8916,7 @@ enifed('ember-htmlbars/templates/select', ['exports', 'ember-template-compiler/s
8886
8916
  })();
8887
8917
  return {
8888
8918
  isHTMLBars: true,
8889
- revision: "Ember@1.12.0-beta.1",
8919
+ revision: "Ember@1.12.0-beta.3",
8890
8920
  blockParams: 0,
8891
8921
  cachedFragment: null,
8892
8922
  hasRendered: false,
@@ -8928,7 +8958,7 @@ enifed('ember-htmlbars/templates/select', ['exports', 'ember-template-compiler/s
8928
8958
  })();
8929
8959
  return {
8930
8960
  isHTMLBars: true,
8931
- revision: "Ember@1.12.0-beta.1",
8961
+ revision: "Ember@1.12.0-beta.3",
8932
8962
  blockParams: 0,
8933
8963
  cachedFragment: null,
8934
8964
  hasRendered: false,
@@ -9199,8 +9229,8 @@ enifed('ember-metal-views/renderer', ['exports', 'dom-helper', 'ember-metal/envi
9199
9229
 
9200
9230
  Renderer.prototype.replaceIn = function Renderer_replaceIn(view, target) {
9201
9231
  var morph;
9202
- if (target.firstNode) {
9203
- morph = this._dom.createMorph(target, target.firstNode, target.lastNode);
9232
+ if (target.firstChild) {
9233
+ morph = this._dom.createMorph(target, target.firstChild, target.lastChild);
9204
9234
  } else {
9205
9235
  morph = this._dom.appendMorph(target);
9206
9236
  }
@@ -9237,7 +9267,7 @@ enifed('ember-metal-views/renderer', ['exports', 'dom-helper', 'ember-metal/envi
9237
9267
 
9238
9268
  this.beforeRemove(removeQueue[idx]);
9239
9269
 
9240
- childViews = view._childViews;
9270
+ childViews = this.childViews(view);
9241
9271
  if (childViews) {
9242
9272
  for (i = 0, l = childViews.length; i < l; i++) {
9243
9273
  queue.push(childViews[i]);
@@ -9250,7 +9280,7 @@ enifed('ember-metal-views/renderer', ['exports', 'dom-helper', 'ember-metal/envi
9250
9280
 
9251
9281
  this.beforeRemove(destroyQueue[idx]);
9252
9282
 
9253
- childViews = view._childViews;
9283
+ childViews = this.childViews(view);
9254
9284
  if (childViews) {
9255
9285
  for (i = 0, l = childViews.length; i < l; i++) {
9256
9286
  destroyQueue.push(childViews[i]);
@@ -9369,8 +9399,9 @@ enifed('ember-metal', ['exports', 'ember-metal/core', 'ember-metal/merge', 'embe
9369
9399
  computed.computed.and = computed_macros.and;
9370
9400
  computed.computed.or = computed_macros.or;
9371
9401
  computed.computed.any = computed_macros.any;
9372
- computed.computed.collect = computed_macros.collect;
9402
+ computed.computed.collect = computed_macros.collect; // END IMPORTS
9373
9403
 
9404
+ // BEGIN EXPORTS
9374
9405
  var EmberInstrumentation = Ember['default'].Instrumentation = {};
9375
9406
  EmberInstrumentation.instrument = instrumentation.instrument;
9376
9407
  EmberInstrumentation.subscribe = instrumentation.subscribe;
@@ -10791,7 +10822,7 @@ enifed('ember-metal/computed', ['exports', 'ember-metal/property_set', 'ember-me
10791
10822
  this._getter = config;
10792
10823
  if (config.__ember_arity > 1) {
10793
10824
  Ember.deprecate("Using the same function as getter and setter is deprecated.", false, {
10794
- url: "http://emberjs.com/deprecations/v1.x/#toc_deprecate-using-the-same-function-as-getter-and-setter-in-computed-properties"
10825
+ url: "http://emberjs.com/deprecations/v1.x/#toc_computed-properties-with-a-shared-getter-and-setter"
10795
10826
  });
10796
10827
  this._setter = config;
10797
10828
  }
@@ -10884,6 +10915,8 @@ enifed('ember-metal/computed', ['exports', 'ember-metal/property_set', 'ember-me
10884
10915
  ComputedPropertyPrototype.readOnly = function (readOnly) {
10885
10916
  Ember.deprecate("Passing arguments to ComputedProperty.readOnly() is deprecated.", arguments.length === 0);
10886
10917
  this._readOnly = readOnly === undefined || !!readOnly; // Force to true once this deprecation is gone
10918
+ Ember.assert("Computed properties that define a setter using the new syntax cannot be read-only", !(this._readOnly && this._setter && this._setter !== this._getter));
10919
+
10887
10920
  return this;
10888
10921
  };
10889
10922
 
@@ -11582,10 +11615,10 @@ enifed('ember-metal/core', ['exports'], function (exports) {
11582
11615
 
11583
11616
  @class Ember
11584
11617
  @static
11585
- @version 1.12.0-beta.1
11618
+ @version 1.12.0-beta.3
11586
11619
  */
11587
11620
 
11588
- if ("undefined" === typeof Ember) {
11621
+ if ('undefined' === typeof Ember) {
11589
11622
  // Create core object. Make it act like an instance of Ember.Namespace so that
11590
11623
  // objects assigned to it are given a sane string representation.
11591
11624
  Ember = {};
@@ -11605,16 +11638,16 @@ enifed('ember-metal/core', ['exports'], function (exports) {
11605
11638
  Ember.isNamespace = true;
11606
11639
 
11607
11640
  Ember.toString = function () {
11608
- return "Ember";
11641
+ return 'Ember';
11609
11642
  };
11610
11643
 
11611
11644
  /**
11612
11645
  @property VERSION
11613
11646
  @type String
11614
- @default '1.12.0-beta.1'
11647
+ @default '1.12.0-beta.3'
11615
11648
  @static
11616
11649
  */
11617
- Ember.VERSION = "1.12.0-beta.1";
11650
+ Ember.VERSION = '1.12.0-beta.3';
11618
11651
 
11619
11652
  /**
11620
11653
  Standard environmental variables. You can define these in a global `EmberENV`
@@ -11629,10 +11662,10 @@ enifed('ember-metal/core', ['exports'], function (exports) {
11629
11662
 
11630
11663
  if (Ember.ENV) {
11631
11664
  // do nothing if Ember.ENV is already setup
11632
- Ember.assert("Ember.ENV should be an object.", "object" !== typeof Ember.ENV);
11633
- } else if ("undefined" !== typeof EmberENV) {
11665
+ Ember.assert('Ember.ENV should be an object.', 'object' !== typeof Ember.ENV);
11666
+ } else if ('undefined' !== typeof EmberENV) {
11634
11667
  Ember.ENV = EmberENV;
11635
- } else if ("undefined" !== typeof ENV) {
11668
+ } else if ('undefined' !== typeof ENV) {
11636
11669
  Ember.ENV = ENV;
11637
11670
  } else {
11638
11671
  Ember.ENV = {};
@@ -11641,7 +11674,7 @@ enifed('ember-metal/core', ['exports'], function (exports) {
11641
11674
  Ember.config = Ember.config || {};
11642
11675
 
11643
11676
  // We disable the RANGE API by default for performance reasons
11644
- if ("undefined" === typeof Ember.ENV.DISABLE_RANGE_API) {
11677
+ if ('undefined' === typeof Ember.ENV.DISABLE_RANGE_API) {
11645
11678
  Ember.ENV.DISABLE_RANGE_API = true;
11646
11679
  }
11647
11680
 
@@ -11655,11 +11688,14 @@ enifed('ember-metal/core', ['exports'], function (exports) {
11655
11688
  @static
11656
11689
  @since 1.1.0
11657
11690
  */
11691
+ Ember.FEATURES = {"features-stripped-test":false,"ember-routing-named-substates":true,"mandatory-setter":true,"ember-htmlbars-component-generation":false,"ember-htmlbars-component-helper":true,"ember-htmlbars-inline-if-helper":true,"ember-htmlbars-attribute-syntax":true,"ember-routing-transitioning-classes":true,"new-computed-syntax":true,"ember-testing-checkbox-helpers":false,"ember-metal-stream":false,"ember-application-instance-initializers":true,"ember-application-initializer-context":true,"ember-router-willtransition":true,"ember-application-visit":false,"ember-views-component-block-info":false,"ember-routing-core-outlet":false,"ember-libraries-isregistered":false}; //jshint ignore:line
11658
11692
 
11659
- Ember.FEATURES = Ember.ENV.FEATURES;
11660
-
11661
- if (!Ember.FEATURES) {
11662
- Ember.FEATURES = {"features-stripped-test":false,"ember-routing-named-substates":true,"mandatory-setter":true,"ember-htmlbars-component-generation":false,"ember-htmlbars-component-helper":true,"ember-htmlbars-inline-if-helper":true,"ember-htmlbars-attribute-syntax":true,"ember-routing-transitioning-classes":true,"new-computed-syntax":true,"ember-testing-checkbox-helpers":false,"ember-metal-stream":false,"ember-htmlbars-each-with-index":true,"ember-application-instance-initializers":true,"ember-application-initializer-context":true,"ember-router-willtransition":true,"ember-application-visit":false,"ember-views-component-block-info":false,"ember-routing-core-outlet":false,"ember-libraries-isregistered":false}; //jshint ignore:line
11693
+ if (Ember.ENV.FEATURES) {
11694
+ for (var feature in Ember.ENV.FEATURES) {
11695
+ if (Ember.ENV.FEATURES.hasOwnProperty(feature)) {
11696
+ Ember.FEATURES[feature] = Ember.ENV.FEATURES[feature];
11697
+ }
11698
+ }
11663
11699
  }
11664
11700
 
11665
11701
  /**
@@ -11714,7 +11750,7 @@ enifed('ember-metal/core', ['exports'], function (exports) {
11714
11750
  */
11715
11751
  Ember.EXTEND_PROTOTYPES = Ember.ENV.EXTEND_PROTOTYPES;
11716
11752
 
11717
- if (typeof Ember.EXTEND_PROTOTYPES === "undefined") {
11753
+ if (typeof Ember.EXTEND_PROTOTYPES === 'undefined') {
11718
11754
  Ember.EXTEND_PROTOTYPES = true;
11719
11755
  }
11720
11756
 
@@ -11760,22 +11796,22 @@ enifed('ember-metal/core', ['exports'], function (exports) {
11760
11796
 
11761
11797
  // Stub out the methods defined by the ember-debug package in case it's not loaded
11762
11798
 
11763
- if ("undefined" === typeof Ember.assert) {
11799
+ if ('undefined' === typeof Ember.assert) {
11764
11800
  Ember.assert = K;
11765
11801
  }
11766
- if ("undefined" === typeof Ember.warn) {
11802
+ if ('undefined' === typeof Ember.warn) {
11767
11803
  Ember.warn = K;
11768
11804
  }
11769
- if ("undefined" === typeof Ember.debug) {
11805
+ if ('undefined' === typeof Ember.debug) {
11770
11806
  Ember.debug = K;
11771
11807
  }
11772
- if ("undefined" === typeof Ember.runInDebug) {
11808
+ if ('undefined' === typeof Ember.runInDebug) {
11773
11809
  Ember.runInDebug = K;
11774
11810
  }
11775
- if ("undefined" === typeof Ember.deprecate) {
11811
+ if ('undefined' === typeof Ember.deprecate) {
11776
11812
  Ember.deprecate = K;
11777
11813
  }
11778
- if ("undefined" === typeof Ember.deprecateFunc) {
11814
+ if ('undefined' === typeof Ember.deprecateFunc) {
11779
11815
  Ember.deprecateFunc = function (_, func) {
11780
11816
  return func;
11781
11817
  };
@@ -11911,13 +11947,13 @@ enifed('ember-metal/dictionary', ['exports', 'ember-metal/platform/create'], fun
11911
11947
  exports['default'] = makeDictionary;
11912
11948
  function makeDictionary(parent) {
11913
11949
  var dict = create['default'](parent);
11914
- dict["_dict"] = null;
11915
- delete dict["_dict"];
11950
+ dict['_dict'] = null;
11951
+ delete dict['_dict'];
11916
11952
  return dict;
11917
11953
  }
11918
11954
 
11919
11955
  });
11920
- enifed('ember-metal/enumerable_utils', ['exports', 'ember-metal/array'], function (exports, array) {
11956
+ enifed('ember-metal/enumerable_utils', ['exports', 'ember-metal/array'], function (exports, ember_metal__array) {
11921
11957
 
11922
11958
  'use strict';
11923
11959
 
@@ -11954,19 +11990,19 @@ enifed('ember-metal/enumerable_utils', ['exports', 'ember-metal/array'], functio
11954
11990
  */
11955
11991
  var splice = Array.prototype.splice;
11956
11992
  function map(obj, callback, thisArg) {
11957
- return obj.map ? obj.map(callback, thisArg) : array.map.call(obj, callback, thisArg);
11993
+ return obj.map ? obj.map(callback, thisArg) : ember_metal__array.map.call(obj, callback, thisArg);
11958
11994
  }
11959
11995
 
11960
11996
  function forEach(obj, callback, thisArg) {
11961
- return obj.forEach ? obj.forEach(callback, thisArg) : array.forEach.call(obj, callback, thisArg);
11997
+ return obj.forEach ? obj.forEach(callback, thisArg) : ember_metal__array.forEach.call(obj, callback, thisArg);
11962
11998
  }
11963
11999
 
11964
12000
  function filter(obj, callback, thisArg) {
11965
- return obj.filter ? obj.filter(callback, thisArg) : array.filter.call(obj, callback, thisArg);
12001
+ return obj.filter ? obj.filter(callback, thisArg) : ember_metal__array.filter.call(obj, callback, thisArg);
11966
12002
  }
11967
12003
 
11968
12004
  function indexOf(obj, element, index) {
11969
- return obj.indexOf ? obj.indexOf(element, index) : array.indexOf.call(obj, element, index);
12005
+ return obj.indexOf ? obj.indexOf(element, index) : ember_metal__array.indexOf.call(obj, element, index);
11970
12006
  }
11971
12007
 
11972
12008
  function indexesOf(obj, elements) {
@@ -12060,7 +12096,7 @@ enifed('ember-metal/environment', ['exports', 'ember-metal/core'], function (exp
12060
12096
  // by searching for window and document.createElement. An environment
12061
12097
  // with DOM may disable the DOM functionality of Ember explicitly by
12062
12098
  // defining a `disableBrowserEnvironment` ENV.
12063
- var hasDOM = typeof window !== "undefined" && typeof document !== "undefined" && typeof document.createElement !== "undefined" && !Ember['default'].ENV.disableBrowserEnvironment;
12099
+ var hasDOM = typeof window !== 'undefined' && typeof document !== 'undefined' && typeof document.createElement !== 'undefined' && !Ember['default'].ENV.disableBrowserEnvironment;
12064
12100
 
12065
12101
  if (hasDOM) {
12066
12102
  environment = {
@@ -12077,7 +12113,7 @@ enifed('ember-metal/environment', ['exports', 'ember-metal/core'], function (exp
12077
12113
  isChrome: false,
12078
12114
  location: null,
12079
12115
  history: null,
12080
- userAgent: "Lynx (textmode)",
12116
+ userAgent: 'Lynx (textmode)',
12081
12117
  global: null
12082
12118
  };
12083
12119
  }
@@ -12089,7 +12125,7 @@ enifed('ember-metal/error', ['exports', 'ember-metal/platform/create'], function
12089
12125
 
12090
12126
  'use strict';
12091
12127
 
12092
- var errorProps = ["description", "fileName", "lineNumber", "message", "name", "number", "stack"];
12128
+ var errorProps = ['description', 'fileName', 'lineNumber', 'message', 'name', 'number', 'stack'];
12093
12129
 
12094
12130
  /**
12095
12131
  A subclass of the JavaScript Error object for use in Ember.
@@ -12488,7 +12524,7 @@ enifed('ember-metal/expand_properties', ['exports', 'ember-metal/error', 'ember-
12488
12524
  Ember.expandProperties('foo.bar', echo); //=> 'foo.bar'
12489
12525
  Ember.expandProperties('{foo,bar}', echo); //=> 'foo', 'bar'
12490
12526
  Ember.expandProperties('foo.{bar,baz}', echo); //=> 'foo.bar', 'foo.baz'
12491
- Ember.expandProperties('{foo,bar}.baz', echo); //=> '{foo,bar}.baz'
12527
+ Ember.expandProperties('{foo,bar}.baz', echo); //=> 'foo.baz', 'bar.baz'
12492
12528
  Ember.expandProperties('foo.{bar,baz}.@each', echo) //=> 'foo.bar.@each', 'foo.baz.@each'
12493
12529
  Ember.expandProperties('{foo,bar}.{spam,eggs}', echo) //=> 'foo.spam', 'foo.eggs', 'bar.spam', 'bar.eggs'
12494
12530
  Ember.expandProperties('{foo}.bar.{baz}') //=> 'foo.bar.baz'
@@ -12504,22 +12540,22 @@ enifed('ember-metal/expand_properties', ['exports', 'ember-metal/error', 'ember-
12504
12540
 
12505
12541
  var SPLIT_REGEX = /\{|\}/;
12506
12542
  function expandProperties(pattern, callback) {
12507
- if (pattern.indexOf(" ") > -1) {
12508
- throw new EmberError['default']("Brace expanded properties cannot contain spaces, e.g. 'user.{firstName, lastName}' should be 'user.{firstName,lastName}'");
12543
+ if (pattern.indexOf(' ') > -1) {
12544
+ throw new EmberError['default']('Brace expanded properties cannot contain spaces, e.g. \'user.{firstName, lastName}\' should be \'user.{firstName,lastName}\'');
12509
12545
  }
12510
12546
 
12511
- if ("string" === utils.typeOf(pattern)) {
12547
+ if ('string' === utils.typeOf(pattern)) {
12512
12548
  var parts = pattern.split(SPLIT_REGEX);
12513
12549
  var properties = [parts];
12514
12550
 
12515
12551
  enumerable_utils.forEach(parts, function (part, index) {
12516
- if (part.indexOf(",") >= 0) {
12517
- properties = duplicateAndReplace(properties, part.split(","), index);
12552
+ if (part.indexOf(',') >= 0) {
12553
+ properties = duplicateAndReplace(properties, part.split(','), index);
12518
12554
  }
12519
12555
  });
12520
12556
 
12521
12557
  enumerable_utils.forEach(properties, function (property) {
12522
- callback(property.join(""));
12558
+ callback(property.join(''));
12523
12559
  });
12524
12560
  } else {
12525
12561
  callback(pattern);
@@ -12820,7 +12856,7 @@ enifed('ember-metal/is_blank', ['exports', 'ember-metal/is_empty'], function (ex
12820
12856
  */
12821
12857
  exports['default'] = isBlank;
12822
12858
  function isBlank(obj) {
12823
- return isEmpty['default'](obj) || typeof obj === "string" && obj.match(/\S/) === null;
12859
+ return isEmpty['default'](obj) || typeof obj === 'string' && obj.match(/\S/) === null;
12824
12860
  }
12825
12861
 
12826
12862
  });
@@ -12834,26 +12870,26 @@ enifed('ember-metal/is_empty', ['exports', 'ember-metal/property_get', 'ember-me
12834
12870
  return none;
12835
12871
  }
12836
12872
 
12837
- if (typeof obj.size === "number") {
12873
+ if (typeof obj.size === 'number') {
12838
12874
  return !obj.size;
12839
12875
  }
12840
12876
 
12841
12877
  var objectType = typeof obj;
12842
12878
 
12843
- if (objectType === "object") {
12844
- var size = property_get.get(obj, "size");
12845
- if (typeof size === "number") {
12879
+ if (objectType === 'object') {
12880
+ var size = property_get.get(obj, 'size');
12881
+ if (typeof size === 'number') {
12846
12882
  return !size;
12847
12883
  }
12848
12884
  }
12849
12885
 
12850
- if (typeof obj.length === "number" && objectType !== "function") {
12886
+ if (typeof obj.length === 'number' && objectType !== 'function') {
12851
12887
  return !obj.length;
12852
12888
  }
12853
12889
 
12854
- if (objectType === "object") {
12855
- var length = property_get.get(obj, "length");
12856
- if (typeof length === "number") {
12890
+ if (objectType === 'object') {
12891
+ var length = property_get.get(obj, 'length');
12892
+ if (typeof length === 'number') {
12857
12893
  return !length;
12858
12894
  }
12859
12895
  }
@@ -12940,20 +12976,20 @@ enifed('ember-metal/keys', ['exports', 'ember-metal/platform/define_property'],
12940
12976
  // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys
12941
12977
  keys = (function () {
12942
12978
  var hasOwnProperty = Object.prototype.hasOwnProperty;
12943
- var hasDontEnumBug = !({ toString: null }).propertyIsEnumerable("toString");
12944
- var dontEnums = ["toString", "toLocaleString", "valueOf", "hasOwnProperty", "isPrototypeOf", "propertyIsEnumerable", "constructor"];
12979
+ var hasDontEnumBug = !({ toString: null }).propertyIsEnumerable('toString');
12980
+ var dontEnums = ['toString', 'toLocaleString', 'valueOf', 'hasOwnProperty', 'isPrototypeOf', 'propertyIsEnumerable', 'constructor'];
12945
12981
  var dontEnumsLength = dontEnums.length;
12946
12982
 
12947
12983
  return function keys(obj) {
12948
- if (typeof obj !== "object" && (typeof obj !== "function" || obj === null)) {
12949
- throw new TypeError("Object.keys called on non-object");
12984
+ if (typeof obj !== 'object' && (typeof obj !== 'function' || obj === null)) {
12985
+ throw new TypeError('Object.keys called on non-object');
12950
12986
  }
12951
12987
 
12952
12988
  var result = [];
12953
12989
  var prop, i;
12954
12990
 
12955
12991
  for (prop in obj) {
12956
- if (prop !== "_super" && prop.lastIndexOf("__", 0) !== 0 && hasOwnProperty.call(obj, prop)) {
12992
+ if (prop !== '_super' && prop.lastIndexOf('__', 0) !== 0 && hasOwnProperty.call(obj, prop)) {
12957
12993
  result.push(prop);
12958
12994
  }
12959
12995
  }
@@ -13710,7 +13746,7 @@ enifed('ember-metal/merge', ['exports', 'ember-metal/keys'], function (exports,
13710
13746
  */
13711
13747
  exports['default'] = merge;
13712
13748
  function merge(original, updates) {
13713
- if (!updates || typeof updates !== "object") {
13749
+ if (!updates || typeof updates !== 'object') {
13714
13750
  return original;
13715
13751
  }
13716
13752
 
@@ -13727,7 +13763,7 @@ enifed('ember-metal/merge', ['exports', 'ember-metal/keys'], function (exports,
13727
13763
  }
13728
13764
 
13729
13765
  });
13730
- enifed('ember-metal/mixin', ['exports', 'ember-metal/core', 'ember-metal/merge', 'ember-metal/array', 'ember-metal/platform/create', 'ember-metal/property_get', 'ember-metal/property_set', 'ember-metal/utils', 'ember-metal/expand_properties', 'ember-metal/properties', 'ember-metal/computed', 'ember-metal/binding', 'ember-metal/observer', 'ember-metal/events', 'ember-metal/streams/utils'], function (exports, Ember, merge, array, o_create, property_get, property_set, utils, expandProperties, properties, computed, ember_metal__binding, ember_metal__observer, events, streams__utils) {
13766
+ enifed('ember-metal/mixin', ['exports', 'ember-metal/core', 'ember-metal/merge', 'ember-metal/array', 'ember-metal/platform/create', 'ember-metal/property_get', 'ember-metal/property_set', 'ember-metal/utils', 'ember-metal/expand_properties', 'ember-metal/properties', 'ember-metal/computed', 'ember-metal/binding', 'ember-metal/observer', 'ember-metal/events', 'ember-metal/streams/utils'], function (exports, Ember, merge, array, o_create, property_get, property_set, utils, expandProperties, ember_metal__properties, computed, ember_metal__binding, ember_metal__observer, events, streams__utils) {
13731
13767
 
13732
13768
 
13733
13769
  exports.mixin = mixin;
@@ -13959,7 +13995,7 @@ enifed('ember-metal/mixin', ['exports', 'ember-metal/core', 'ember-metal/merge',
13959
13995
  }
13960
13996
 
13961
13997
  function addNormalizedProperty(base, key, value, meta, descs, values, concats, mergings) {
13962
- if (value instanceof properties.Descriptor) {
13998
+ if (value instanceof ember_metal__properties.Descriptor) {
13963
13999
  if (value === REQUIRED && descs[key]) {
13964
14000
  return CONTINUE;
13965
14001
  }
@@ -14191,7 +14227,7 @@ enifed('ember-metal/mixin', ['exports', 'ember-metal/core', 'ember-metal/merge',
14191
14227
 
14192
14228
  replaceObserversAndListeners(obj, key, value);
14193
14229
  detectBinding(obj, key, value, m);
14194
- properties.defineProperty(obj, key, desc, value, m);
14230
+ ember_metal__properties.defineProperty(obj, key, desc, value, m);
14195
14231
  }
14196
14232
 
14197
14233
  if (!partial) {
@@ -14307,8 +14343,8 @@ enifed('ember-metal/mixin', ['exports', 'ember-metal/core', 'ember-metal/merge',
14307
14343
  @param arguments*
14308
14344
  */
14309
14345
  Mixin.create = function () {
14310
- for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
14311
- args[_key] = arguments[_key];
14346
+ for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
14347
+ args[_key2] = arguments[_key2];
14312
14348
  }
14313
14349
 
14314
14350
  // ES6TODO: this relies on a global state?
@@ -14407,8 +14443,8 @@ enifed('ember-metal/mixin', ['exports', 'ember-metal/core', 'ember-metal/merge',
14407
14443
  };
14408
14444
 
14409
14445
  MixinPrototype.without = function () {
14410
- for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
14411
- args[_key] = arguments[_key];
14446
+ for (var _len3 = arguments.length, args = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
14447
+ args[_key3] = arguments[_key3];
14412
14448
  }
14413
14449
 
14414
14450
  var ret = new Mixin([this]);
@@ -14472,7 +14508,7 @@ enifed('ember-metal/mixin', ['exports', 'ember-metal/core', 'ember-metal/merge',
14472
14508
  return ret;
14473
14509
  };
14474
14510
 
14475
- exports.REQUIRED = REQUIRED = new properties.Descriptor();
14511
+ REQUIRED = new ember_metal__properties.Descriptor();
14476
14512
  REQUIRED.toString = function () {
14477
14513
  return "(Required Property)";
14478
14514
  };
@@ -14486,14 +14522,14 @@ enifed('ember-metal/mixin', ['exports', 'ember-metal/core', 'ember-metal/merge',
14486
14522
  this.methodName = methodName;
14487
14523
  }
14488
14524
 
14489
- Alias.prototype = new properties.Descriptor();
14525
+ Alias.prototype = new ember_metal__properties.Descriptor();
14490
14526
  function aliasMethod(methodName) {
14491
14527
  return new Alias(methodName);
14492
14528
  }
14493
14529
 
14494
14530
  function observer() {
14495
- for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
14496
- args[_key] = arguments[_key];
14531
+ for (var _len4 = arguments.length, args = Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
14532
+ args[_key4] = arguments[_key4];
14497
14533
  }
14498
14534
 
14499
14535
  var func = args.slice(-1)[0];
@@ -14535,8 +14571,8 @@ enifed('ember-metal/mixin', ['exports', 'ember-metal/core', 'ember-metal/merge',
14535
14571
  }
14536
14572
 
14537
14573
  function beforeObserver() {
14538
- for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
14539
- args[_key] = arguments[_key];
14574
+ for (var _len5 = arguments.length, args = Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {
14575
+ args[_key5] = arguments[_key5];
14540
14576
  }
14541
14577
 
14542
14578
  var func = args.slice(-1)[0];
@@ -14570,6 +14606,7 @@ enifed('ember-metal/mixin', ['exports', 'ember-metal/core', 'ember-metal/merge',
14570
14606
  }
14571
14607
 
14572
14608
  exports.IS_BINDING = IS_BINDING;
14609
+ exports.REQUIRED = REQUIRED;
14573
14610
 
14574
14611
  });
14575
14612
  enifed('ember-metal/observer', ['exports', 'ember-metal/watching', 'ember-metal/array', 'ember-metal/events'], function (exports, watching, array, ember_metal__events) {
@@ -14725,7 +14762,7 @@ enifed('ember-metal/path_cache', ['exports', 'ember-metal/cache'], function (exp
14725
14762
 
14726
14763
  var IS_GLOBAL = /^[A-Z$]/;
14727
14764
  var IS_GLOBAL_PATH = /^[A-Z$].*[\.]/;
14728
- var HAS_THIS = "this.";
14765
+ var HAS_THIS = 'this.';
14729
14766
 
14730
14767
  var isGlobalCache = new Cache['default'](1000, function (key) {
14731
14768
  return IS_GLOBAL.test(key);
@@ -14740,7 +14777,7 @@ enifed('ember-metal/path_cache', ['exports', 'ember-metal/cache'], function (exp
14740
14777
  });
14741
14778
 
14742
14779
  var firstDotIndexCache = new Cache['default'](1000, function (key) {
14743
- return key.indexOf(".");
14780
+ return key.indexOf('.');
14744
14781
  });
14745
14782
 
14746
14783
  var firstKeyCache = new Cache['default'](1000, function (path) {
@@ -14799,7 +14836,7 @@ enifed('ember-metal/platform/create', ['exports', 'ember-metal/platform/define_p
14799
14836
  // Remove "use strict"; from transpiled module until
14800
14837
  // https://bugs.webkit.org/show_bug.cgi?id=138038 is fixed
14801
14838
  //
14802
- "REMOVE_USE_STRICT: true";
14839
+ 'REMOVE_USE_STRICT: true';
14803
14840
 
14804
14841
  var create;
14805
14842
  // ES5 15.2.3.5
@@ -14808,13 +14845,13 @@ enifed('ember-metal/platform/create', ['exports', 'ember-metal/platform/define_p
14808
14845
  /* jshint scripturl:true, proto:true */
14809
14846
  // Contributed by Brandon Benvie, October, 2012
14810
14847
  var createEmpty;
14811
- var supportsProto = !({ "__proto__": null } instanceof Object);
14848
+ var supportsProto = !({ '__proto__': null } instanceof Object);
14812
14849
  // the following produces false positives
14813
14850
  // in Opera Mini => not a reliable check
14814
14851
  // Object.prototype.__proto__ === null
14815
- if (supportsProto || typeof document === "undefined") {
14852
+ if (supportsProto || typeof document === 'undefined') {
14816
14853
  createEmpty = function () {
14817
- return { "__proto__": null };
14854
+ return { '__proto__': null };
14818
14855
  };
14819
14856
  } else {
14820
14857
  // In old IE __proto__ can't be used to manually set `null`, nor does
@@ -14823,11 +14860,11 @@ enifed('ember-metal/platform/create', ['exports', 'ember-metal/platform/define_p
14823
14860
  // object and *steal* its Object.prototype and strip it bare. This is
14824
14861
  // used as the prototype to create nullary objects.
14825
14862
  createEmpty = function () {
14826
- var iframe = document.createElement("iframe");
14863
+ var iframe = document.createElement('iframe');
14827
14864
  var parent = document.body || document.documentElement;
14828
- iframe.style.display = "none";
14865
+ iframe.style.display = 'none';
14829
14866
  parent.appendChild(iframe);
14830
- iframe.src = "javascript:";
14867
+ iframe.src = 'javascript:';
14831
14868
  var empty = iframe.contentWindow.Object.prototype;
14832
14869
  parent.removeChild(iframe);
14833
14870
  iframe = null;
@@ -14857,13 +14894,13 @@ enifed('ember-metal/platform/create', ['exports', 'ember-metal/platform/define_p
14857
14894
  if (prototype === null) {
14858
14895
  object = createEmpty();
14859
14896
  } else {
14860
- if (typeof prototype !== "object" && typeof prototype !== "function") {
14897
+ if (typeof prototype !== 'object' && typeof prototype !== 'function') {
14861
14898
  // In the native implementation `parent` can be `null`
14862
14899
  // OR *any* `instanceof Object` (Object|Function|Array|RegExp|etc)
14863
14900
  // Use `typeof` tho, b/c in old IE, DOM elements are not `instanceof Object`
14864
14901
  // like they are in modern browsers. Using `Object.create` on DOM elements
14865
14902
  // is...err...probably inappropriate, but the native version allows for it.
14866
- throw new TypeError("Object prototype may only be an Object or null"); // same msg as Chrome
14903
+ throw new TypeError('Object prototype may only be an Object or null'); // same msg as Chrome
14867
14904
  }
14868
14905
 
14869
14906
  Type.prototype = prototype;
@@ -14945,7 +14982,7 @@ enifed('ember-metal/platform/define_property', ['exports'], function (exports) {
14945
14982
  try {
14946
14983
  var a = 5;
14947
14984
  var obj = {};
14948
- defineProperty(obj, "a", {
14985
+ defineProperty(obj, 'a', {
14949
14986
  configurable: true,
14950
14987
  enumerable: true,
14951
14988
  get: function () {
@@ -14965,14 +15002,14 @@ enifed('ember-metal/platform/define_property', ['exports'], function (exports) {
14965
15002
  }
14966
15003
 
14967
15004
  // check non-enumerability
14968
- defineProperty(obj, "a", {
15005
+ defineProperty(obj, 'a', {
14969
15006
  configurable: true,
14970
15007
  enumerable: false,
14971
15008
  writable: true,
14972
15009
  value: true
14973
15010
  });
14974
15011
  for (var key in obj) {
14975
- if (key === "a") {
15012
+ if (key === 'a') {
14976
15013
  return;
14977
15014
  }
14978
15015
  }
@@ -14985,7 +15022,7 @@ enifed('ember-metal/platform/define_property', ['exports'], function (exports) {
14985
15022
 
14986
15023
  // Detects a bug in Android <3 where redefining a property without a value changes the value
14987
15024
  // Object.defineProperty once accessors have already been set.
14988
- defineProperty(obj, "a", {
15025
+ defineProperty(obj, 'a', {
14989
15026
  enumerable: false
14990
15027
  });
14991
15028
  if (obj.a !== true) {
@@ -15002,12 +15039,12 @@ enifed('ember-metal/platform/define_property', ['exports'], function (exports) {
15002
15039
 
15003
15040
  var hasES5CompliantDefineProperty = !!defineProperty;
15004
15041
 
15005
- if (hasES5CompliantDefineProperty && typeof document !== "undefined") {
15042
+ if (hasES5CompliantDefineProperty && typeof document !== 'undefined') {
15006
15043
  // This is for Safari 5.0, which supports Object.defineProperty, but not
15007
15044
  // on DOM nodes.
15008
15045
  var canDefinePropertyOnDOM = (function () {
15009
15046
  try {
15010
- defineProperty(document.createElement("div"), "definePropertyOnDOM", {});
15047
+ defineProperty(document.createElement('div'), 'definePropertyOnDOM', {});
15011
15048
  return true;
15012
15049
  } catch (e) {}
15013
15050
 
@@ -15018,10 +15055,10 @@ enifed('ember-metal/platform/define_property', ['exports'], function (exports) {
15018
15055
  defineProperty = function (obj, keyName, desc) {
15019
15056
  var isNode;
15020
15057
 
15021
- if (typeof Node === "object") {
15058
+ if (typeof Node === 'object') {
15022
15059
  isNode = obj instanceof Node;
15023
15060
  } else {
15024
- isNode = typeof obj === "object" && typeof obj.nodeType === "number" && typeof obj.nodeName === "string";
15061
+ isNode = typeof obj === 'object' && typeof obj.nodeType === 'number' && typeof obj.nodeName === 'string';
15025
15062
  }
15026
15063
 
15027
15064
  if (isNode) {
@@ -15753,8 +15790,6 @@ enifed('ember-metal/run_loop', ['exports', 'ember-metal/core', 'ember-metal/util
15753
15790
 
15754
15791
  'use strict';
15755
15792
 
15756
- var _toConsumableArray = function (arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i]; return arr2; } else { return Array.from(arr); } };
15757
-
15758
15793
  function onBegin(current) {
15759
15794
  run.currentRunLoop = current;
15760
15795
  }
@@ -15764,17 +15799,17 @@ enifed('ember-metal/run_loop', ['exports', 'ember-metal/core', 'ember-metal/util
15764
15799
  }
15765
15800
 
15766
15801
  // ES6TODO: should Backburner become es6?
15767
- var backburner = new Backburner['default'](["sync", "actions", "destroy"], {
15802
+ var backburner = new Backburner['default'](['sync', 'actions', 'destroy'], {
15768
15803
  GUID_KEY: utils.GUID_KEY,
15769
15804
  sync: {
15770
15805
  before: property_events.beginPropertyChanges,
15771
15806
  after: property_events.endPropertyChanges
15772
15807
  },
15773
- defaultQueue: "actions",
15808
+ defaultQueue: 'actions',
15774
15809
  onBegin: onBegin,
15775
15810
  onEnd: onEnd,
15776
15811
  onErrorTarget: Ember['default'],
15777
- onErrorMethod: "onerror"
15812
+ onErrorMethod: 'onerror'
15778
15813
  });
15779
15814
 
15780
15815
  // ..........................................................
@@ -15872,12 +15907,12 @@ enifed('ember-metal/run_loop', ['exports', 'ember-metal/core', 'ember-metal/util
15872
15907
 
15873
15908
  ```javascript
15874
15909
  App.RichTextEditorComponent = Ember.Component.extend({
15875
- initializeTinyMCE: function() {
15910
+ initializeTinyMCE: Ember.on('didInsertElement', function() {
15876
15911
  tinymce.init({
15877
15912
  selector: '#' + this.$().prop('id'),
15878
15913
  setup: Ember.run.bind(this, this.setupEditor)
15879
15914
  });
15880
- }.on('didInsertElement'),
15915
+ }),
15881
15916
 
15882
15917
  setupEditor: function(editor) {
15883
15918
  this.set('editor', editor);
@@ -15913,7 +15948,7 @@ enifed('ember-metal/run_loop', ['exports', 'ember-metal/core', 'ember-metal/util
15913
15948
  args[_key2] = arguments[_key2];
15914
15949
  }
15915
15950
 
15916
- return run.join.apply(run, _toConsumableArray(curried.concat(args)));
15951
+ return run.join.apply(run, curried.concat(args));
15917
15952
  };
15918
15953
  };
15919
15954
 
@@ -16084,12 +16119,12 @@ enifed('ember-metal/run_loop', ['exports', 'ember-metal/core', 'ember-metal/util
16084
16119
  @return {Object} Timer information for use in cancelling, see `run.cancel`.
16085
16120
  */
16086
16121
  run.once = function () {
16087
- for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
16088
- args[_key] = arguments[_key];
16122
+ for (var _len3 = arguments.length, args = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
16123
+ args[_key3] = arguments[_key3];
16089
16124
  }
16090
16125
 
16091
16126
  checkAutoRun();
16092
- args.unshift("actions");
16127
+ args.unshift('actions');
16093
16128
  return backburner.scheduleOnce.apply(backburner, args);
16094
16129
  };
16095
16130
 
@@ -16208,8 +16243,8 @@ enifed('ember-metal/run_loop', ['exports', 'ember-metal/core', 'ember-metal/util
16208
16243
  @return {Object} Timer information for use in cancelling, see `run.cancel`.
16209
16244
  */
16210
16245
  run.next = function () {
16211
- for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
16212
- args[_key] = arguments[_key];
16246
+ for (var _len4 = arguments.length, args = Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
16247
+ args[_key4] = arguments[_key4];
16213
16248
  }
16214
16249
 
16215
16250
  args.push(1);
@@ -16385,7 +16420,7 @@ enifed('ember-metal/run_loop', ['exports', 'ember-metal/core', 'ember-metal/util
16385
16420
  // Make sure it's not an autorun during testing
16386
16421
  function checkAutoRun() {
16387
16422
  if (!run.currentRunLoop) {
16388
- Ember['default'].assert("You have turned on testing mode, which disabled the run-loop's autorun.\n You will need to wrap any code with asynchronous side-effects in a run", !Ember['default'].testing);
16423
+ Ember['default'].assert('You have turned on testing mode, which disabled the run-loop\'s autorun.\n You will need to wrap any code with asynchronous side-effects in a run', !Ember['default'].testing);
16389
16424
  }
16390
16425
  }
16391
16426
 
@@ -16603,7 +16638,7 @@ enifed('ember-metal/streams/stream', ['exports', 'ember-metal/platform/create',
16603
16638
  }
16604
16639
  };
16605
16640
 
16606
- /**
16641
+ /*
16607
16642
  @public
16608
16643
  @class Stream
16609
16644
  @namespace Ember.stream
@@ -16854,7 +16889,7 @@ enifed('ember-metal/streams/utils', ['exports', './stream'], function (exports,
16854
16889
  exports.concat = concat;
16855
16890
  exports.chain = chain;
16856
16891
 
16857
- /**
16892
+ /*
16858
16893
  Check whether an object is a stream or not
16859
16894
 
16860
16895
  @public
@@ -18604,7 +18639,7 @@ enifed('ember-routing-htmlbars/helpers/query-params', ['exports', 'ember-metal/c
18604
18639
  }
18605
18640
 
18606
18641
  });
18607
- enifed('ember-routing-htmlbars/helpers/render', ['exports', 'ember-metal/core', 'ember-metal/error', 'ember-runtime/system/string', 'ember-routing/system/generate_controller', 'ember-metal/streams/utils', 'ember-htmlbars/system/merge-view-bindings', 'ember-htmlbars/system/append-templated-view', 'ember-metal/platform/create'], function (exports, Ember, EmberError, string, generateController, utils, mergeViewBindings, appendTemplatedView, create) {
18642
+ enifed('ember-routing-htmlbars/helpers/render', ['exports', 'ember-metal/core', 'ember-metal/property_get', 'ember-metal/error', 'ember-runtime/system/string', 'ember-routing/system/generate_controller', 'ember-metal/streams/utils', 'ember-htmlbars/system/merge-view-bindings', 'ember-htmlbars/system/append-templated-view', 'ember-metal/platform/create'], function (exports, Ember, property_get, EmberError, string, generateController, utils, mergeViewBindings, appendTemplatedView, create) {
18608
18643
 
18609
18644
  'use strict';
18610
18645
 
@@ -18715,6 +18750,9 @@ enifed('ember-routing-htmlbars/helpers/render', ['exports', 'ember-metal/core',
18715
18750
  view = container.lookup("view:" + name);
18716
18751
  if (!view) {
18717
18752
  view = container.lookup("view:default");
18753
+ }
18754
+ var viewHasTemplateSpecified = !!property_get.get(view, "template");
18755
+ if (!viewHasTemplateSpecified) {
18718
18756
  template = template || container.lookup(templateName);
18719
18757
  }
18720
18758
 
@@ -18781,6 +18819,13 @@ enifed('ember-routing-htmlbars/helpers/render', ['exports', 'ember-metal/core',
18781
18819
  view._isOutlet = true;
18782
18820
  view._outletName = "__ember_orphans__";
18783
18821
  view._matchOutletName = name;
18822
+ view._parentOutlet = function () {
18823
+ var parent = this._parentView;
18824
+ while (parent && !parent._isOutlet) {
18825
+ parent = parent._parentView;
18826
+ }
18827
+ return parent;
18828
+ };
18784
18829
  view.setOutletState = function (state) {
18785
18830
  var ownState;
18786
18831
  if (state && (ownState = state.outlets[this._matchOutletName])) {
@@ -19944,7 +19989,7 @@ enifed('ember-routing/ext/run_loop', ['ember-metal/run_loop'], function (run) {
19944
19989
 
19945
19990
  'use strict';
19946
19991
 
19947
- run['default']._addQueue("routerTransitions", "actions");
19992
+ run['default']._addQueue('routerTransitions', 'actions');
19948
19993
 
19949
19994
  });
19950
19995
  enifed('ember-routing/location/api', ['exports', 'ember-metal/core', 'ember-metal/environment', 'ember-routing/location/util'], function (exports, Ember, environment, util) {
@@ -20418,7 +20463,13 @@ enifed('ember-routing/location/history_location', ['exports', 'ember-metal/prope
20418
20463
  @method initState
20419
20464
  */
20420
20465
  initState: function () {
20421
- property_set.set(this, "history", property_get.get(this, "history") || window.history);
20466
+ var history = property_get.get(this, "history") || window.history;
20467
+ property_set.set(this, "history", history);
20468
+
20469
+ if (history && "state" in history) {
20470
+ this.supportsHistory = true;
20471
+ }
20472
+
20422
20473
  this.replaceState(this.formatURL(this.getURL()));
20423
20474
  },
20424
20475
 
@@ -20460,7 +20511,7 @@ enifed('ember-routing/location/history_location', ['exports', 'ember-metal/prope
20460
20511
  @param path {String}
20461
20512
  */
20462
20513
  setURL: function (path) {
20463
- var state = this._historyState;
20514
+ var state = this.getState();
20464
20515
  path = this.formatURL(path);
20465
20516
 
20466
20517
  if (!state || state.path !== path) {
@@ -20476,7 +20527,7 @@ enifed('ember-routing/location/history_location', ['exports', 'ember-metal/prope
20476
20527
  @param path {String}
20477
20528
  */
20478
20529
  replaceURL: function (path) {
20479
- var state = this._historyState;
20530
+ var state = this.getState();
20480
20531
  path = this.formatURL(path);
20481
20532
 
20482
20533
  if (!state || state.path !== path) {
@@ -20484,6 +20535,23 @@ enifed('ember-routing/location/history_location', ['exports', 'ember-metal/prope
20484
20535
  }
20485
20536
  },
20486
20537
 
20538
+ /**
20539
+ Get the current `history.state`. Checks for if a polyfill is
20540
+ required and if so fetches this._historyState. The state returned
20541
+ from getState may be null if an iframe has changed a window's
20542
+ history.
20543
+ @private
20544
+ @method getState
20545
+ @return state {Object}
20546
+ */
20547
+ getState: function () {
20548
+ if (this.supportsHistory) {
20549
+ return property_get.get(this, "history").state;
20550
+ }
20551
+
20552
+ return this._historyState;
20553
+ },
20554
+
20487
20555
  /**
20488
20556
  Pushes a new state.
20489
20557
  @private
@@ -20493,7 +20561,7 @@ enifed('ember-routing/location/history_location', ['exports', 'ember-metal/prope
20493
20561
  pushState: function (path) {
20494
20562
  var state = { path: path };
20495
20563
 
20496
- property_get.get(this, "history").pushState(null, null, path);
20564
+ property_get.get(this, "history").pushState(state, null, path);
20497
20565
 
20498
20566
  this._historyState = state;
20499
20567
 
@@ -20509,7 +20577,7 @@ enifed('ember-routing/location/history_location', ['exports', 'ember-metal/prope
20509
20577
  */
20510
20578
  replaceState: function (path) {
20511
20579
  var state = { path: path };
20512
- property_get.get(this, "history").replaceState(null, null, path);
20580
+ property_get.get(this, "history").replaceState(state, null, path);
20513
20581
 
20514
20582
  this._historyState = state;
20515
20583
 
@@ -20673,8 +20741,8 @@ enifed('ember-routing/location/util', ['exports'], function (exports) {
20673
20741
  function getPath(location) {
20674
20742
  var pathname = location.pathname;
20675
20743
  // Various versions of IE/Opera don't always return a leading slash
20676
- if (pathname.charAt(0) !== "/") {
20677
- pathname = "/" + pathname;
20744
+ if (pathname.charAt(0) !== '/') {
20745
+ pathname = '/' + pathname;
20678
20746
  }
20679
20747
 
20680
20748
  return pathname;
@@ -20686,10 +20754,10 @@ enifed('ember-routing/location/util', ['exports'], function (exports) {
20686
20754
 
20687
20755
  function getHash(location) {
20688
20756
  var href = location.href;
20689
- var hashIndex = href.indexOf("#");
20757
+ var hashIndex = href.indexOf('#');
20690
20758
 
20691
20759
  if (hashIndex === -1) {
20692
- return "";
20760
+ return '';
20693
20761
  } else {
20694
20762
  return href.substr(hashIndex);
20695
20763
  }
@@ -20704,10 +20772,10 @@ enifed('ember-routing/location/util', ['exports'], function (exports) {
20704
20772
 
20705
20773
  // Older browsers, especially IE, don't have origin
20706
20774
  if (!origin) {
20707
- origin = location.protocol + "//" + location.hostname;
20775
+ origin = location.protocol + '//' + location.hostname;
20708
20776
 
20709
20777
  if (location.port) {
20710
- origin += ":" + location.port;
20778
+ origin += ':' + location.port;
20711
20779
  }
20712
20780
  }
20713
20781
 
@@ -20715,7 +20783,7 @@ enifed('ember-routing/location/util', ['exports'], function (exports) {
20715
20783
  }
20716
20784
 
20717
20785
  function supportsHashChange(documentMode, global) {
20718
- return "onhashchange" in global && (documentMode === undefined || documentMode > 7);
20786
+ return 'onhashchange' in global && (documentMode === undefined || documentMode > 7);
20719
20787
  }
20720
20788
 
20721
20789
  function supportsHistory(userAgent, history) {
@@ -20726,11 +20794,11 @@ enifed('ember-routing/location/util', ['exports'], function (exports) {
20726
20794
 
20727
20795
  // We only want Android 2, stock browser, and not Chrome which identifies
20728
20796
  // itself as 'Mobile Safari' as well
20729
- if (userAgent.indexOf("Android 2") !== -1 && userAgent.indexOf("Mobile Safari") !== -1 && userAgent.indexOf("Chrome") === -1) {
20797
+ if (userAgent.indexOf('Android 2') !== -1 && userAgent.indexOf('Mobile Safari') !== -1 && userAgent.indexOf('Chrome') === -1) {
20730
20798
  return false;
20731
20799
  }
20732
20800
 
20733
- return !!(history && "pushState" in history);
20801
+ return !!(history && 'pushState' in history);
20734
20802
  }
20735
20803
 
20736
20804
  function replacePath(location, path) {
@@ -20792,7 +20860,7 @@ enifed('ember-routing/system/controller_for', ['exports'], function (exports) {
20792
20860
  exports['default'] = controllerFor;
20793
20861
 
20794
20862
  function controllerFor(container, controllerName, lookupOptions) {
20795
- return container.lookup("controller:" + controllerName, lookupOptions);
20863
+ return container.lookup('controller:' + controllerName, lookupOptions);
20796
20864
  }
20797
20865
 
20798
20866
  });
@@ -23125,9 +23193,9 @@ enifed('ember-routing/system/router', ['exports', 'ember-metal/core', 'ember-met
23125
23193
  },
23126
23194
 
23127
23195
  generate: function () {
23128
- var _router;
23196
+ var _router2;
23129
23197
 
23130
- var url = (_router = this.router).generate.apply(_router, arguments);
23198
+ var url = (_router2 = this.router).generate.apply(_router2, arguments);
23131
23199
  return this.location.formatURL(url);
23132
23200
  },
23133
23201
 
@@ -23160,9 +23228,9 @@ enifed('ember-routing/system/router', ['exports', 'ember-metal/core', 'ember-met
23160
23228
  },
23161
23229
 
23162
23230
  send: function (name, context) {
23163
- var _router;
23231
+ var _router3;
23164
23232
 
23165
- (_router = this.router).trigger.apply(_router, arguments);
23233
+ (_router3 = this.router).trigger.apply(_router3, arguments);
23166
23234
  },
23167
23235
 
23168
23236
  /**
@@ -23985,8 +24053,8 @@ enifed('ember-routing/utils', ['exports', 'ember-metal/utils'], function (export
23985
24053
 
23986
24054
  function routeArgs(targetRouteName, models, queryParams) {
23987
24055
  var args = [];
23988
- if (utils.typeOf(targetRouteName) === "string") {
23989
- args.push("" + targetRouteName);
24056
+ if (utils.typeOf(targetRouteName) === 'string') {
24057
+ args.push('' + targetRouteName);
23990
24058
  }
23991
24059
  args.push.apply(args, models);
23992
24060
  args.push({ queryParams: queryParams });
@@ -24159,17 +24227,17 @@ enifed('ember-runtime/compare', ['exports', 'ember-metal/utils', 'ember-runtime/
24159
24227
  */
24160
24228
  exports['default'] = compare;
24161
24229
  var TYPE_ORDER = {
24162
- "undefined": 0,
24163
- "null": 1,
24164
- "boolean": 2,
24165
- "number": 3,
24166
- "string": 4,
24167
- "array": 5,
24168
- "object": 6,
24169
- "instance": 7,
24170
- "function": 8,
24171
- "class": 9,
24172
- "date": 10
24230
+ 'undefined': 0,
24231
+ 'null': 1,
24232
+ 'boolean': 2,
24233
+ 'number': 3,
24234
+ 'string': 4,
24235
+ 'array': 5,
24236
+ 'object': 6,
24237
+ 'instance': 7,
24238
+ 'function': 8,
24239
+ 'class': 9,
24240
+ 'date': 10
24173
24241
  };
24174
24242
 
24175
24243
  //
@@ -24188,11 +24256,11 @@ enifed('ember-runtime/compare', ['exports', 'ember-metal/utils', 'ember-runtime/
24188
24256
  var type2 = utils.typeOf(w);
24189
24257
 
24190
24258
  if (Comparable['default']) {
24191
- if (type1 === "instance" && Comparable['default'].detect(v) && v.constructor.compare) {
24259
+ if (type1 === 'instance' && Comparable['default'].detect(v) && v.constructor.compare) {
24192
24260
  return v.constructor.compare(v, w);
24193
24261
  }
24194
24262
 
24195
- if (type2 === "instance" && Comparable['default'].detect(w) && w.constructor.compare) {
24263
+ if (type2 === 'instance' && Comparable['default'].detect(w) && w.constructor.compare) {
24196
24264
  return w.constructor.compare(w, v) * -1;
24197
24265
  }
24198
24266
  }
@@ -24205,14 +24273,14 @@ enifed('ember-runtime/compare', ['exports', 'ember-metal/utils', 'ember-runtime/
24205
24273
 
24206
24274
  // types are equal - so we have to check values now
24207
24275
  switch (type1) {
24208
- case "boolean":
24209
- case "number":
24276
+ case 'boolean':
24277
+ case 'number':
24210
24278
  return spaceship(v, w);
24211
24279
 
24212
- case "string":
24280
+ case 'string':
24213
24281
  return spaceship(v.localeCompare(w), 0);
24214
24282
 
24215
- case "array":
24283
+ case 'array':
24216
24284
  var vLen = v.length;
24217
24285
  var wLen = w.length;
24218
24286
  var len = Math.min(vLen, wLen);
@@ -24228,13 +24296,13 @@ enifed('ember-runtime/compare', ['exports', 'ember-metal/utils', 'ember-runtime/
24228
24296
  // shorter array should be ordered first
24229
24297
  return spaceship(vLen, wLen);
24230
24298
 
24231
- case "instance":
24299
+ case 'instance':
24232
24300
  if (Comparable['default'] && Comparable['default'].detect(v)) {
24233
24301
  return v.compare(v, w);
24234
24302
  }
24235
24303
  return 0;
24236
24304
 
24237
- case "date":
24305
+ case 'date':
24238
24306
  return spaceship(v.getTime(), w.getTime());
24239
24307
 
24240
24308
  default:
@@ -24415,8 +24483,8 @@ enifed('ember-runtime/computed/array_computed', ['exports', 'ember-metal/core',
24415
24483
  options = a_slice.call(arguments, -1)[0];
24416
24484
  }
24417
24485
 
24418
- if (typeof options !== "object") {
24419
- throw new EmberError['default']("Array Computed Property declared without an options hash");
24486
+ if (typeof options !== 'object') {
24487
+ throw new EmberError['default']('Array Computed Property declared without an options hash');
24420
24488
  }
24421
24489
 
24422
24490
  var cp = new ArrayComputedProperty(options);
@@ -24632,7 +24700,7 @@ enifed('ember-runtime/computed/reduce_computed', ['exports', 'ember-metal/core',
24632
24700
  var arrayBracketPattern = /\.\[\]$/;
24633
24701
 
24634
24702
  function get(obj, key) {
24635
- if (key === "@this") {
24703
+ if (key === '@this') {
24636
24704
  return obj;
24637
24705
  }
24638
24706
 
@@ -24681,7 +24749,7 @@ enifed('ember-runtime/computed/reduce_computed', ['exports', 'ember-metal/core',
24681
24749
  }
24682
24750
 
24683
24751
  function ItemPropertyObserverContext(dependentArray, index, trackedArray) {
24684
- Ember['default'].assert("Internal error: trackedArray is null or undefined", trackedArray);
24752
+ Ember['default'].assert('Internal error: trackedArray is null or undefined', trackedArray);
24685
24753
 
24686
24754
  this.dependentArray = dependentArray;
24687
24755
  this.index = index;
@@ -24705,8 +24773,8 @@ enifed('ember-runtime/computed/reduce_computed', ['exports', 'ember-metal/core',
24705
24773
  this.dependentKeysByGuid[utils.guidFor(dependentArray)] = dependentKey;
24706
24774
 
24707
24775
  dependentArray.addArrayObserver(this, {
24708
- willChange: "dependentArrayWillChange",
24709
- didChange: "dependentArrayDidChange"
24776
+ willChange: 'dependentArrayWillChange',
24777
+ didChange: 'dependentArrayDidChange'
24710
24778
  });
24711
24779
 
24712
24780
  if (this.cp._itemPropertyKeys[dependentKey]) {
@@ -24722,8 +24790,8 @@ enifed('ember-runtime/computed/reduce_computed', ['exports', 'ember-metal/core',
24722
24790
  this.teardownPropertyObservers(dependentKey, itemPropertyKeys);
24723
24791
 
24724
24792
  dependentArray.removeArrayObserver(this, {
24725
- willChange: "dependentArrayWillChange",
24726
- didChange: "dependentArrayDidChange"
24793
+ willChange: 'dependentArrayWillChange',
24794
+ didChange: 'dependentArrayDidChange'
24727
24795
  });
24728
24796
  },
24729
24797
 
@@ -24736,7 +24804,7 @@ enifed('ember-runtime/computed/reduce_computed', ['exports', 'ember-metal/core',
24736
24804
 
24737
24805
  setupPropertyObservers: function (dependentKey, itemPropertyKeys) {
24738
24806
  var dependentArray = get(this.instanceMeta.context, dependentKey);
24739
- var length = get(dependentArray, "length");
24807
+ var length = get(dependentArray, 'length');
24740
24808
  var observerContexts = new Array(length);
24741
24809
 
24742
24810
  this.resetTransformations(dependentKey, observerContexts);
@@ -24823,7 +24891,7 @@ enifed('ember-runtime/computed/reduce_computed', ['exports', 'ember-metal/core',
24823
24891
  },
24824
24892
 
24825
24893
  updateIndexes: function (trackedArray, array) {
24826
- var length = get(array, "length");
24894
+ var length = get(array, 'length');
24827
24895
  // OPTIMIZE: we could stop updating once we hit the object whose observer
24828
24896
  // fired; ie partially apply the transformations
24829
24897
  trackedArray.apply(function (observerContexts, offset, operation, operationIndex) {
@@ -24854,7 +24922,7 @@ enifed('ember-runtime/computed/reduce_computed', ['exports', 'ember-metal/core',
24854
24922
  var guid = utils.guidFor(dependentArray);
24855
24923
  var dependentKey = this.dependentKeysByGuid[guid];
24856
24924
  var itemPropertyKeys = this.cp._itemPropertyKeys[dependentKey] || [];
24857
- var length = get(dependentArray, "length");
24925
+ var length = get(dependentArray, 'length');
24858
24926
  var normalizedIndex = normalizeIndex(index, length, 0);
24859
24927
  var normalizedRemoveCount = normalizeRemoveCount(normalizedIndex, length, removedCount);
24860
24928
  var item, itemIndex, sliceIndex, observerContexts;
@@ -24893,7 +24961,7 @@ enifed('ember-runtime/computed/reduce_computed', ['exports', 'ember-metal/core',
24893
24961
  var dependentKey = this.dependentKeysByGuid[guid];
24894
24962
  var observerContexts = new Array(addedCount);
24895
24963
  var itemPropertyKeys = this.cp._itemPropertyKeys[dependentKey];
24896
- var length = get(dependentArray, "length");
24964
+ var length = get(dependentArray, 'length');
24897
24965
  var normalizedIndex = normalizeIndex(index, length, addedCount);
24898
24966
  var endIndex = normalizedIndex + addedCount;
24899
24967
  var changeMeta, observerContext;
@@ -25107,7 +25175,7 @@ enifed('ember-runtime/computed/reduce_computed', ['exports', 'ember-metal/core',
25107
25175
 
25108
25176
  meta.dependentArraysObserver.suspendArrayObservers(function () {
25109
25177
  enumerable_utils.forEach(cp._dependentKeys, function (dependentKey) {
25110
- Ember['default'].assert("dependent array " + dependentKey + " must be an `Ember.Array`. " + "If you are not extending arrays, you will need to wrap native arrays with `Ember.A`", !(utils.isArray(get(this, dependentKey)) && !EmberArray['default'].detect(get(this, dependentKey))));
25178
+ Ember['default'].assert('dependent array ' + dependentKey + ' must be an `Ember.Array`. ' + 'If you are not extending arrays, you will need to wrap native arrays with `Ember.A`', !(utils.isArray(get(this, dependentKey)) && !EmberArray['default'].detect(get(this, dependentKey))));
25111
25179
 
25112
25180
  if (!partiallyRecomputeFor(this, dependentKey)) {
25113
25181
  return;
@@ -25153,7 +25221,7 @@ enifed('ember-runtime/computed/reduce_computed', ['exports', 'ember-metal/core',
25153
25221
  };
25154
25222
 
25155
25223
  this._getter = function (propertyName) {
25156
- Ember['default'].assert("Computed reduce values require at least one dependent key", cp._dependentKeys);
25224
+ Ember['default'].assert('Computed reduce values require at least one dependent key', cp._dependentKeys);
25157
25225
 
25158
25226
  recompute.call(this, propertyName);
25159
25227
 
@@ -25204,7 +25272,7 @@ enifed('ember-runtime/computed/reduce_computed', ['exports', 'ember-metal/core',
25204
25272
  };
25205
25273
 
25206
25274
  ReduceComputedProperty.prototype.initialValue = function () {
25207
- if (typeof this.options.initialValue === "function") {
25275
+ if (typeof this.options.initialValue === 'function') {
25208
25276
  return this.options.initialValue();
25209
25277
  } else {
25210
25278
  return this.options.initialValue;
@@ -25235,7 +25303,7 @@ enifed('ember-runtime/computed/reduce_computed', ['exports', 'ember-metal/core',
25235
25303
 
25236
25304
  enumerable_utils.forEach(args, function (dependentKey) {
25237
25305
  if (doubleEachPropertyPattern.test(dependentKey)) {
25238
- throw new EmberError['default']("Nested @each properties not supported: " + dependentKey);
25306
+ throw new EmberError['default']('Nested @each properties not supported: ' + dependentKey);
25239
25307
  } else if (match = eachPropertyPattern.exec(dependentKey)) {
25240
25308
  dependentArrayKey = match[1];
25241
25309
 
@@ -25266,12 +25334,12 @@ enifed('ember-runtime/computed/reduce_computed', ['exports', 'ember-metal/core',
25266
25334
  options = a_slice.call(arguments, -1)[0];
25267
25335
  }
25268
25336
 
25269
- if (typeof options !== "object") {
25270
- throw new EmberError['default']("Reduce Computed Property declared without an options hash");
25337
+ if (typeof options !== 'object') {
25338
+ throw new EmberError['default']('Reduce Computed Property declared without an options hash');
25271
25339
  }
25272
25340
 
25273
- if (!("initialValue" in options)) {
25274
- throw new EmberError['default']("Reduce Computed Property declared without an initial value");
25341
+ if (!('initialValue' in options)) {
25342
+ throw new EmberError['default']('Reduce Computed Property declared without an initial value');
25275
25343
  }
25276
25344
 
25277
25345
  var cp = new ReduceComputedProperty(options);
@@ -25378,7 +25446,7 @@ enifed('ember-runtime/computed/reduce_computed_macros', ['exports', 'ember-metal
25378
25446
  var callback = function (item) {
25379
25447
  return property_get.get(item, propertyKey);
25380
25448
  };
25381
- return map(dependentKey + ".@each." + propertyKey, callback);
25449
+ return map(dependentKey + '.@each.' + propertyKey, callback);
25382
25450
  }
25383
25451
 
25384
25452
  /**
@@ -25432,7 +25500,7 @@ enifed('ember-runtime/computed/reduce_computed_macros', ['exports', 'ember-metal
25432
25500
  };
25433
25501
  }
25434
25502
 
25435
- return filter(dependentKey + ".@each." + propertyKey, callback);
25503
+ return filter(dependentKey + '.@each.' + propertyKey, callback);
25436
25504
  }
25437
25505
 
25438
25506
  /**
@@ -25546,7 +25614,7 @@ enifed('ember-runtime/computed/reduce_computed_macros', ['exports', 'ember-metal
25546
25614
 
25547
25615
  function setDiff(setAProperty, setBProperty) {
25548
25616
  if (arguments.length !== 2) {
25549
- throw new EmberError['default']("setDiff requires exactly two dependent arrays.");
25617
+ throw new EmberError['default']('setDiff requires exactly two dependent arrays.');
25550
25618
  }
25551
25619
 
25552
25620
  return array_computed.arrayComputed(setAProperty, setBProperty, {
@@ -25586,7 +25654,7 @@ enifed('ember-runtime/computed/reduce_computed_macros', ['exports', 'ember-metal
25586
25654
  var mid, midItem, res, guidMid, guidItem;
25587
25655
 
25588
25656
  if (arguments.length < 4) {
25589
- high = property_get.get(array, "length");
25657
+ high = property_get.get(array, 'length');
25590
25658
  }
25591
25659
 
25592
25660
  if (arguments.length < 3) {
@@ -25622,9 +25690,9 @@ enifed('ember-runtime/computed/reduce_computed_macros', ['exports', 'ember-metal
25622
25690
  return mid;
25623
25691
  }
25624
25692
  function sort(itemsKey, sortDefinition) {
25625
- Ember['default'].assert("Ember.computed.sort requires two arguments: an array key to sort and " + "either a sort properties key or sort function", arguments.length === 2);
25693
+ Ember['default'].assert('Ember.computed.sort requires two arguments: an array key to sort and ' + 'either a sort properties key or sort function', arguments.length === 2);
25626
25694
 
25627
- if (typeof sortDefinition === "function") {
25695
+ if (typeof sortDefinition === 'function') {
25628
25696
  return customSort(itemsKey, sortDefinition);
25629
25697
  } else {
25630
25698
  return propertySort(itemsKey, sortDefinition);
@@ -25677,14 +25745,14 @@ enifed('ember-runtime/computed/reduce_computed_macros', ['exports', 'ember-metal
25677
25745
  var sortPropertyAscending = instanceMeta.sortPropertyAscending = {};
25678
25746
  var sortProperty, idx, asc;
25679
25747
 
25680
- Ember['default'].assert("Cannot sort: '" + sortPropertiesKey + "' is not an array.", utils.isArray(sortPropertyDefinitions));
25748
+ Ember['default'].assert('Cannot sort: \'' + sortPropertiesKey + '\' is not an array.', utils.isArray(sortPropertyDefinitions));
25681
25749
 
25682
25750
  changeMeta.property.clearItemPropertyKeys(itemsKey);
25683
25751
 
25684
25752
  enumerable_utils.forEach(sortPropertyDefinitions, function (sortPropertyDefinition) {
25685
- if ((idx = sortPropertyDefinition.indexOf(":")) !== -1) {
25753
+ if ((idx = sortPropertyDefinition.indexOf(':')) !== -1) {
25686
25754
  sortProperty = sortPropertyDefinition.substring(0, idx);
25687
- asc = sortPropertyDefinition.substring(idx + 1).toLowerCase() !== "desc";
25755
+ asc = sortPropertyDefinition.substring(idx + 1).toLowerCase() !== 'desc';
25688
25756
  } else {
25689
25757
  sortProperty = sortPropertyDefinition;
25690
25758
  asc = true;
@@ -25695,7 +25763,7 @@ enifed('ember-runtime/computed/reduce_computed_macros', ['exports', 'ember-metal
25695
25763
  changeMeta.property.itemPropertyKey(itemsKey, sortProperty);
25696
25764
  });
25697
25765
 
25698
- sortPropertyDefinitions.addObserver("@each", this, updateSortPropertiesOnce);
25766
+ this.addObserver(sortPropertiesKey + '.@each', this, updateSortPropertiesOnce);
25699
25767
  }
25700
25768
 
25701
25769
  function updateSortPropertiesOnce() {
@@ -25823,12 +25891,12 @@ enifed('ember-runtime/controllers/array_controller', ['exports', 'ember-metal/co
25823
25891
  @return {String}
25824
25892
  */
25825
25893
  lookupItemController: function (object) {
25826
- return property_get.get(this, "itemController");
25894
+ return property_get.get(this, 'itemController');
25827
25895
  },
25828
25896
 
25829
25897
  objectAtContent: function (idx) {
25830
- var length = property_get.get(this, "length");
25831
- var arrangedContent = property_get.get(this, "arrangedContent");
25898
+ var length = property_get.get(this, 'length');
25899
+ var arrangedContent = property_get.get(this, 'arrangedContent');
25832
25900
  var object = arrangedContent && arrangedContent.objectAt(idx);
25833
25901
  var controllerClass;
25834
25902
 
@@ -25885,7 +25953,7 @@ enifed('ember-runtime/controllers/array_controller', ['exports', 'ember-metal/co
25885
25953
  return Ember['default'].A();
25886
25954
  },
25887
25955
  set: function (key, value) {
25888
- Ember['default'].assert("ArrayController expects `model` to implement the Ember.Array mixin. " + "This can often be fixed by wrapping your model with `Ember.A()`.", EmberArray['default'].detect(value));
25956
+ Ember['default'].assert('ArrayController expects `model` to implement the Ember.Array mixin. ' + 'This can often be fixed by wrapping your model with `Ember.A()`.', EmberArray['default'].detect(value) || !value);
25889
25957
 
25890
25958
  return value;
25891
25959
  }
@@ -25902,7 +25970,7 @@ enifed('ember-runtime/controllers/array_controller', ['exports', 'ember-metal/co
25902
25970
  _isVirtual: false,
25903
25971
 
25904
25972
  controllerAt: function (idx, object, controllerClass) {
25905
- var container = property_get.get(this, "container");
25973
+ var container = property_get.get(this, 'container');
25906
25974
  var subControllers = this._subControllers;
25907
25975
  var fullName, subController, parentController;
25908
25976
 
@@ -25915,15 +25983,15 @@ enifed('ember-runtime/controllers/array_controller', ['exports', 'ember-metal/co
25915
25983
  }
25916
25984
 
25917
25985
  if (this._isVirtual) {
25918
- parentController = property_get.get(this, "parentController");
25986
+ parentController = property_get.get(this, 'parentController');
25919
25987
  } else {
25920
25988
  parentController = this;
25921
25989
  }
25922
25990
 
25923
- fullName = "controller:" + controllerClass;
25991
+ fullName = 'controller:' + controllerClass;
25924
25992
 
25925
25993
  if (!container._registry.has(fullName)) {
25926
- throw new EmberError['default']("Could not resolve itemController: \"" + controllerClass + "\"");
25994
+ throw new EmberError['default']('Could not resolve itemController: "' + controllerClass + '"');
25927
25995
  }
25928
25996
 
25929
25997
  subController = container.lookupFactory(fullName).create({
@@ -25970,7 +26038,7 @@ enifed('ember-runtime/controllers/controller', ['exports', 'ember-metal/core', '
25970
26038
  var Controller = EmberObject['default'].extend(Mixin['default']);
25971
26039
 
25972
26040
  function controllerInjectionHelper(factory) {
25973
- Ember['default'].assert("Defining an injected controller property on a " + "non-controller is not allowed.", Mixin['default'].detect(factory.PrototypeMixin));
26041
+ Ember['default'].assert('Defining an injected controller property on a ' + 'non-controller is not allowed.', Mixin['default'].detect(factory.PrototypeMixin));
25974
26042
  }
25975
26043
 
25976
26044
  /**
@@ -26003,7 +26071,7 @@ enifed('ember-runtime/controllers/controller', ['exports', 'ember-metal/core', '
26003
26071
  to the property's name
26004
26072
  @return {Ember.InjectedProperty} injection descriptor instance
26005
26073
  */
26006
- inject.createInjectionHelper("controller", controllerInjectionHelper);
26074
+ inject.createInjectionHelper('controller', controllerInjectionHelper);
26007
26075
 
26008
26076
  exports['default'] = Controller;
26009
26077
 
@@ -26012,7 +26080,7 @@ enifed('ember-runtime/controllers/object_controller', ['exports', 'ember-metal/c
26012
26080
 
26013
26081
  'use strict';
26014
26082
 
26015
- var objectControllerDeprecation = "Ember.ObjectController is deprecated, " + "please use Ember.Controller and use `model.propertyName`.";
26083
+ var objectControllerDeprecation = 'Ember.ObjectController is deprecated, ' + 'please use Ember.Controller and use `model.propertyName`.';
26016
26084
 
26017
26085
  exports['default'] = ObjectProxy['default'].extend(ControllerMixin['default'], {
26018
26086
  init: function () {
@@ -26050,7 +26118,7 @@ enifed('ember-runtime/copy', ['exports', 'ember-metal/enumerable_utils', 'ember-
26050
26118
  var ret, loc, key;
26051
26119
 
26052
26120
  // primitive data types are immutable, just return them.
26053
- if (typeof obj !== "object" || obj === null) {
26121
+ if (typeof obj !== 'object' || obj === null) {
26054
26122
  return obj;
26055
26123
  }
26056
26124
 
@@ -26059,11 +26127,11 @@ enifed('ember-runtime/copy', ['exports', 'ember-metal/enumerable_utils', 'ember-
26059
26127
  return copies[loc];
26060
26128
  }
26061
26129
 
26062
- Ember.assert("Cannot clone an Ember.Object that does not implement Ember.Copyable", !(obj instanceof EmberObject['default']) || Copyable['default'] && Copyable['default'].detect(obj));
26130
+ Ember.assert('Cannot clone an Ember.Object that does not implement Ember.Copyable', !(obj instanceof EmberObject['default']) || Copyable['default'] && Copyable['default'].detect(obj));
26063
26131
 
26064
26132
  // IMPORTANT: this specific test will detect a native array only. Any other
26065
26133
  // object will need to implement Copyable.
26066
- if (utils.typeOf(obj) === "array") {
26134
+ if (utils.typeOf(obj) === 'array') {
26067
26135
  ret = obj.slice();
26068
26136
 
26069
26137
  if (deep) {
@@ -26088,7 +26156,7 @@ enifed('ember-runtime/copy', ['exports', 'ember-metal/enumerable_utils', 'ember-
26088
26156
 
26089
26157
  // Prevents browsers that don't respect non-enumerability from
26090
26158
  // copying internal Ember properties
26091
- if (key.substring(0, 2) === "__") {
26159
+ if (key.substring(0, 2) === '__') {
26092
26160
  continue;
26093
26161
  }
26094
26162
 
@@ -26105,7 +26173,7 @@ enifed('ember-runtime/copy', ['exports', 'ember-metal/enumerable_utils', 'ember-
26105
26173
  }
26106
26174
  function copy(obj, deep) {
26107
26175
  // fast paths
26108
- if ("object" !== typeof obj || obj === null) {
26176
+ if ('object' !== typeof obj || obj === null) {
26109
26177
  return obj; // can't copy primitives
26110
26178
  }
26111
26179
 
@@ -26147,7 +26215,7 @@ enifed('ember-runtime/core', ['exports'], function (exports) {
26147
26215
  @return {Boolean}
26148
26216
  */
26149
26217
  function isEqual(a, b) {
26150
- if (a && typeof a.isEqual === "function") {
26218
+ if (a && typeof a.isEqual === 'function') {
26151
26219
  return a.isEqual(b);
26152
26220
  }
26153
26221
 
@@ -26275,9 +26343,9 @@ enifed('ember-runtime/ext/function', ['ember-metal/core', 'ember-metal/expand_pr
26275
26343
  @for Function
26276
26344
  */
26277
26345
  FunctionPrototype.observesImmediately = function () {
26278
- Ember['default'].assert("Immediate observers must observe internal properties only, " + "not properties on other objects.", function checkIsInternalProperty() {
26346
+ Ember['default'].assert('Immediate observers must observe internal properties only, ' + 'not properties on other objects.', function checkIsInternalProperty() {
26279
26347
  for (var i = 0, l = arguments.length; i < l; i++) {
26280
- if (arguments[i].indexOf(".") !== -1) {
26348
+ if (arguments[i].indexOf('.') !== -1) {
26281
26349
  return false;
26282
26350
  }
26283
26351
  }
@@ -26353,7 +26421,7 @@ enifed('ember-runtime/ext/rsvp', ['exports', 'ember-metal/core', 'ember-metal/lo
26353
26421
 
26354
26422
  exports.onerrorDefault = onerrorDefault;
26355
26423
 
26356
- var testModuleName = "ember-testing/test";
26424
+ var testModuleName = 'ember-testing/test';
26357
26425
  var Test;
26358
26426
 
26359
26427
  var asyncStart = function () {
@@ -26368,14 +26436,14 @@ enifed('ember-runtime/ext/rsvp', ['exports', 'ember-metal/core', 'ember-metal/lo
26368
26436
  }
26369
26437
  };
26370
26438
 
26371
- RSVP.configure("async", function (callback, promise) {
26439
+ RSVP.configure('async', function (callback, promise) {
26372
26440
  var async = !run['default'].currentRunLoop;
26373
26441
 
26374
26442
  if (Ember['default'].testing && async) {
26375
26443
  asyncStart();
26376
26444
  }
26377
26445
 
26378
- run['default'].backburner.schedule("actions", function () {
26446
+ run['default'].backburner.schedule('actions', function () {
26379
26447
  if (Ember['default'].testing && async) {
26380
26448
  asyncEnd();
26381
26449
  }
@@ -26384,8 +26452,8 @@ enifed('ember-runtime/ext/rsvp', ['exports', 'ember-metal/core', 'ember-metal/lo
26384
26452
  });
26385
26453
 
26386
26454
  RSVP.Promise.prototype.fail = function (callback, label) {
26387
- Ember['default'].deprecate("RSVP.Promise.fail has been renamed as RSVP.Promise.catch");
26388
- return this["catch"](callback, label);
26455
+ Ember['default'].deprecate('RSVP.Promise.fail has been renamed as RSVP.Promise.catch');
26456
+ return this['catch'](callback, label);
26389
26457
  };
26390
26458
  function onerrorDefault(e) {
26391
26459
  var error;
@@ -26393,7 +26461,7 @@ enifed('ember-runtime/ext/rsvp', ['exports', 'ember-metal/core', 'ember-metal/lo
26393
26461
  if (e && e.errorThrown) {
26394
26462
  // jqXHR provides this
26395
26463
  error = e.errorThrown;
26396
- if (typeof error === "string") {
26464
+ if (typeof error === 'string') {
26397
26465
  error = new Error(error);
26398
26466
  }
26399
26467
  error.__reason_with_error_thrown__ = e;
@@ -26401,11 +26469,11 @@ enifed('ember-runtime/ext/rsvp', ['exports', 'ember-metal/core', 'ember-metal/lo
26401
26469
  error = e;
26402
26470
  }
26403
26471
 
26404
- if (error && error.name !== "TransitionAborted") {
26472
+ if (error && error.name !== 'TransitionAborted') {
26405
26473
  if (Ember['default'].testing) {
26406
26474
  // ES6TODO: remove when possible
26407
26475
  if (!Test && Ember['default'].__loader.registry[testModuleName]) {
26408
- Test = requireModule(testModuleName)["default"];
26476
+ Test = requireModule(testModuleName)['default'];
26409
26477
  }
26410
26478
 
26411
26479
  if (Test && Test.adapter) {
@@ -26422,7 +26490,7 @@ enifed('ember-runtime/ext/rsvp', ['exports', 'ember-metal/core', 'ember-metal/lo
26422
26490
  }
26423
26491
  }
26424
26492
 
26425
- RSVP.on("error", onerrorDefault);
26493
+ RSVP.on('error', onerrorDefault);
26426
26494
 
26427
26495
  exports['default'] = RSVP;
26428
26496
 
@@ -26872,19 +26940,19 @@ enifed('ember-runtime/mixins/array', ['exports', 'ember-metal/core', 'ember-meta
26872
26940
  // HELPERS
26873
26941
  //
26874
26942
  function arrayObserversHelper(obj, target, opts, operation, notify) {
26875
- var willChange = opts && opts.willChange || "arrayWillChange";
26876
- var didChange = opts && opts.didChange || "arrayDidChange";
26877
- var hasObservers = property_get.get(obj, "hasArrayObservers");
26943
+ var willChange = opts && opts.willChange || 'arrayWillChange';
26944
+ var didChange = opts && opts.didChange || 'arrayDidChange';
26945
+ var hasObservers = property_get.get(obj, 'hasArrayObservers');
26878
26946
 
26879
26947
  if (hasObservers === notify) {
26880
- property_events.propertyWillChange(obj, "hasArrayObservers");
26948
+ property_events.propertyWillChange(obj, 'hasArrayObservers');
26881
26949
  }
26882
26950
 
26883
- operation(obj, "@array:before", target, willChange);
26884
- operation(obj, "@array:change", target, didChange);
26951
+ operation(obj, '@array:before', target, willChange);
26952
+ operation(obj, '@array:change', target, didChange);
26885
26953
 
26886
26954
  if (hasObservers === notify) {
26887
- property_events.propertyDidChange(obj, "hasArrayObservers");
26955
+ property_events.propertyDidChange(obj, 'hasArrayObservers');
26888
26956
  }
26889
26957
 
26890
26958
  return obj;
@@ -26959,7 +27027,7 @@ enifed('ember-runtime/mixins/array', ['exports', 'ember-metal/core', 'ember-meta
26959
27027
  @return {*} item at index or undefined
26960
27028
  */
26961
27029
  objectAt: function (idx) {
26962
- if (idx < 0 || idx >= property_get.get(this, "length")) {
27030
+ if (idx < 0 || idx >= property_get.get(this, 'length')) {
26963
27031
  return undefined;
26964
27032
  }
26965
27033
 
@@ -26998,12 +27066,12 @@ enifed('ember-runtime/mixins/array', ['exports', 'ember-metal/core', 'ember-meta
26998
27066
  @property []
26999
27067
  @return this
27000
27068
  */
27001
- "[]": computed.computed({
27069
+ '[]': computed.computed({
27002
27070
  get: function (key) {
27003
27071
  return this;
27004
27072
  },
27005
27073
  set: function (key, value) {
27006
- this.replace(0, property_get.get(this, "length"), value);
27074
+ this.replace(0, property_get.get(this, 'length'), value);
27007
27075
  return this;
27008
27076
  }
27009
27077
  }),
@@ -27013,7 +27081,7 @@ enifed('ember-runtime/mixins/array', ['exports', 'ember-metal/core', 'ember-meta
27013
27081
  }),
27014
27082
 
27015
27083
  lastObject: computed.computed(function () {
27016
- return this.objectAt(property_get.get(this, "length") - 1);
27084
+ return this.objectAt(property_get.get(this, 'length') - 1);
27017
27085
  }),
27018
27086
 
27019
27087
  // optimized version from Enumerable
@@ -27039,7 +27107,7 @@ enifed('ember-runtime/mixins/array', ['exports', 'ember-metal/core', 'ember-meta
27039
27107
  */
27040
27108
  slice: function (beginIndex, endIndex) {
27041
27109
  var ret = Ember['default'].A();
27042
- var length = property_get.get(this, "length");
27110
+ var length = property_get.get(this, 'length');
27043
27111
 
27044
27112
  if (isNone['default'](beginIndex)) {
27045
27113
  beginIndex = 0;
@@ -27084,7 +27152,7 @@ enifed('ember-runtime/mixins/array', ['exports', 'ember-metal/core', 'ember-meta
27084
27152
  @return {Number} index or -1 if not found
27085
27153
  */
27086
27154
  indexOf: function (object, startAt) {
27087
- var len = property_get.get(this, "length");
27155
+ var len = property_get.get(this, 'length');
27088
27156
  var idx;
27089
27157
 
27090
27158
  if (startAt === undefined) {
@@ -27124,7 +27192,7 @@ enifed('ember-runtime/mixins/array', ['exports', 'ember-metal/core', 'ember-meta
27124
27192
  @return {Number} index or -1 if not found
27125
27193
  */
27126
27194
  lastIndexOf: function (object, startAt) {
27127
- var len = property_get.get(this, "length");
27195
+ var len = property_get.get(this, 'length');
27128
27196
  var idx;
27129
27197
 
27130
27198
  if (startAt === undefined || startAt >= len) {
@@ -27193,7 +27261,7 @@ enifed('ember-runtime/mixins/array', ['exports', 'ember-metal/core', 'ember-meta
27193
27261
  @property {Boolean} hasArrayObservers
27194
27262
  */
27195
27263
  hasArrayObservers: computed.computed(function () {
27196
- return events.hasListeners(this, "@array:change") || events.hasListeners(this, "@array:before");
27264
+ return events.hasListeners(this, '@array:change') || events.hasListeners(this, '@array:before');
27197
27265
  }),
27198
27266
 
27199
27267
  /**
@@ -27227,13 +27295,13 @@ enifed('ember-runtime/mixins/array', ['exports', 'ember-metal/core', 'ember-meta
27227
27295
  }
27228
27296
 
27229
27297
  // Make sure the @each proxy is set up if anyone is observing @each
27230
- if (watching.isWatching(this, "@each")) {
27231
- property_get.get(this, "@each");
27298
+ if (watching.isWatching(this, '@each')) {
27299
+ property_get.get(this, '@each');
27232
27300
  }
27233
27301
 
27234
- events.sendEvent(this, "@array:before", [this, startIdx, removeAmt, addAmt]);
27302
+ events.sendEvent(this, '@array:before', [this, startIdx, removeAmt, addAmt]);
27235
27303
 
27236
- if (startIdx >= 0 && removeAmt >= 0 && property_get.get(this, "hasEnumerableObservers")) {
27304
+ if (startIdx >= 0 && removeAmt >= 0 && property_get.get(this, 'hasEnumerableObservers')) {
27237
27305
  removing = [];
27238
27306
  lim = startIdx + removeAmt;
27239
27307
 
@@ -27279,7 +27347,7 @@ enifed('ember-runtime/mixins/array', ['exports', 'ember-metal/core', 'ember-meta
27279
27347
  }
27280
27348
  }
27281
27349
 
27282
- if (startIdx >= 0 && addAmt >= 0 && property_get.get(this, "hasEnumerableObservers")) {
27350
+ if (startIdx >= 0 && addAmt >= 0 && property_get.get(this, 'hasEnumerableObservers')) {
27283
27351
  adding = [];
27284
27352
  lim = startIdx + addAmt;
27285
27353
 
@@ -27291,20 +27359,20 @@ enifed('ember-runtime/mixins/array', ['exports', 'ember-metal/core', 'ember-meta
27291
27359
  }
27292
27360
 
27293
27361
  this.enumerableContentDidChange(removeAmt, adding);
27294
- events.sendEvent(this, "@array:change", [this, startIdx, removeAmt, addAmt]);
27362
+ events.sendEvent(this, '@array:change', [this, startIdx, removeAmt, addAmt]);
27295
27363
 
27296
- var length = property_get.get(this, "length");
27297
- var cachedFirst = computed.cacheFor(this, "firstObject");
27298
- var cachedLast = computed.cacheFor(this, "lastObject");
27364
+ var length = property_get.get(this, 'length');
27365
+ var cachedFirst = computed.cacheFor(this, 'firstObject');
27366
+ var cachedLast = computed.cacheFor(this, 'lastObject');
27299
27367
 
27300
27368
  if (this.objectAt(0) !== cachedFirst) {
27301
- property_events.propertyWillChange(this, "firstObject");
27302
- property_events.propertyDidChange(this, "firstObject");
27369
+ property_events.propertyWillChange(this, 'firstObject');
27370
+ property_events.propertyDidChange(this, 'firstObject');
27303
27371
  }
27304
27372
 
27305
27373
  if (this.objectAt(length - 1) !== cachedLast) {
27306
- property_events.propertyWillChange(this, "lastObject");
27307
- property_events.propertyDidChange(this, "lastObject");
27374
+ property_events.propertyWillChange(this, 'lastObject');
27375
+ property_events.propertyDidChange(this, 'lastObject');
27308
27376
  }
27309
27377
 
27310
27378
  return this;
@@ -27323,10 +27391,10 @@ enifed('ember-runtime/mixins/array', ['exports', 'ember-metal/core', 'ember-meta
27323
27391
  use the `[]` property instead of `@each`.
27324
27392
  @property @each
27325
27393
  */
27326
- "@each": computed.computed(function () {
27394
+ '@each': computed.computed(function () {
27327
27395
  if (!this.__each) {
27328
27396
  // ES6TODO: GRRRRR
27329
- var EachProxy = requireModule("ember-runtime/system/each_proxy")["EachProxy"];
27397
+ var EachProxy = requireModule('ember-runtime/system/each_proxy')['EachProxy'];
27330
27398
 
27331
27399
  this.__each = new EachProxy(this);
27332
27400
  }
@@ -27429,9 +27497,9 @@ enifed('ember-runtime/mixins/controller_content_model_alias_deprecation', ['expo
27429
27497
 
27430
27498
  if (props.content && !modelSpecified) {
27431
27499
  props.model = props.content;
27432
- delete props["content"];
27500
+ delete props['content'];
27433
27501
 
27434
- Ember['default'].deprecate("Do not specify `content` on a Controller, use `model` instead.");
27502
+ Ember['default'].deprecate('Do not specify `content` on a Controller, use `model` instead.');
27435
27503
  }
27436
27504
  }
27437
27505
  });
@@ -27661,8 +27729,8 @@ enifed('ember-runtime/mixins/enumerable', ['exports', 'ember-metal/core', 'ember
27661
27729
  @property firstObject
27662
27730
  @return {Object} the object or undefined
27663
27731
  */
27664
- firstObject: computed.computed("[]", function () {
27665
- if (property_get.get(this, "length") === 0) {
27732
+ firstObject: computed.computed('[]', function () {
27733
+ if (property_get.get(this, 'length') === 0) {
27666
27734
  return undefined;
27667
27735
  }
27668
27736
 
@@ -27688,8 +27756,8 @@ enifed('ember-runtime/mixins/enumerable', ['exports', 'ember-metal/core', 'ember
27688
27756
  @property lastObject
27689
27757
  @return {Object} the last object or undefined
27690
27758
  */
27691
- lastObject: computed.computed("[]", function () {
27692
- var len = property_get.get(this, "length");
27759
+ lastObject: computed.computed('[]', function () {
27760
+ var len = property_get.get(this, 'length');
27693
27761
 
27694
27762
  if (len === 0) {
27695
27763
  return undefined;
@@ -27752,12 +27820,12 @@ enifed('ember-runtime/mixins/enumerable', ['exports', 'ember-metal/core', 'ember
27752
27820
  @return {Object} receiver
27753
27821
  */
27754
27822
  forEach: function (callback, target) {
27755
- if (typeof callback !== "function") {
27823
+ if (typeof callback !== 'function') {
27756
27824
  throw new TypeError();
27757
27825
  }
27758
27826
 
27759
27827
  var context = popCtx();
27760
- var len = property_get.get(this, "length");
27828
+ var len = property_get.get(this, 'length');
27761
27829
  var last = null;
27762
27830
 
27763
27831
  if (target === undefined) {
@@ -27782,7 +27850,7 @@ enifed('ember-runtime/mixins/enumerable', ['exports', 'ember-metal/core', 'ember
27782
27850
  @param {String} key name of the property
27783
27851
  @return {Array} The mapped array.
27784
27852
  */
27785
- getEach: mixin.aliasMethod("mapBy"),
27853
+ getEach: mixin.aliasMethod('mapBy'),
27786
27854
 
27787
27855
  /**
27788
27856
  Sets the value on the named property for each member. This is more
@@ -27852,7 +27920,7 @@ enifed('ember-runtime/mixins/enumerable', ['exports', 'ember-metal/core', 'ember
27852
27920
  @deprecated Use `mapBy` instead
27853
27921
  */
27854
27922
 
27855
- mapProperty: mixin.aliasMethod("mapBy"),
27923
+ mapProperty: mixin.aliasMethod('mapBy'),
27856
27924
 
27857
27925
  /**
27858
27926
  Returns an array with all of the items in the enumeration that the passed
@@ -27937,7 +28005,7 @@ enifed('ember-runtime/mixins/enumerable', ['exports', 'ember-metal/core', 'ember
27937
28005
  @return {Array} filtered array
27938
28006
  @deprecated Use `filterBy` instead
27939
28007
  */
27940
- filterProperty: mixin.aliasMethod("filterBy"),
28008
+ filterProperty: mixin.aliasMethod('filterBy'),
27941
28009
 
27942
28010
  /**
27943
28011
  Returns an array with the items that do not have truthy values for
@@ -27972,7 +28040,7 @@ enifed('ember-runtime/mixins/enumerable', ['exports', 'ember-metal/core', 'ember
27972
28040
  @return {Array} rejected array
27973
28041
  @deprecated Use `rejectBy` instead
27974
28042
  */
27975
- rejectProperty: mixin.aliasMethod("rejectBy"),
28043
+ rejectProperty: mixin.aliasMethod('rejectBy'),
27976
28044
 
27977
28045
  /**
27978
28046
  Returns the first item in the array for which the callback returns true.
@@ -27997,7 +28065,7 @@ enifed('ember-runtime/mixins/enumerable', ['exports', 'ember-metal/core', 'ember
27997
28065
  @return {Object} Found item or `undefined`.
27998
28066
  */
27999
28067
  find: function (callback, target) {
28000
- var len = property_get.get(this, "length");
28068
+ var len = property_get.get(this, 'length');
28001
28069
 
28002
28070
  if (target === undefined) {
28003
28071
  target = null;
@@ -28049,7 +28117,7 @@ enifed('ember-runtime/mixins/enumerable', ['exports', 'ember-metal/core', 'ember
28049
28117
  @return {Object} found item or `undefined`
28050
28118
  @deprecated Use `findBy` instead
28051
28119
  */
28052
- findProperty: mixin.aliasMethod("findBy"),
28120
+ findProperty: mixin.aliasMethod('findBy'),
28053
28121
 
28054
28122
  /**
28055
28123
  Returns `true` if the passed function returns true for every item in the
@@ -28090,7 +28158,7 @@ enifed('ember-runtime/mixins/enumerable', ['exports', 'ember-metal/core', 'ember
28090
28158
  @deprecated Use `isEvery` instead
28091
28159
  @return {Boolean}
28092
28160
  */
28093
- everyBy: mixin.aliasMethod("isEvery"),
28161
+ everyBy: mixin.aliasMethod('isEvery'),
28094
28162
 
28095
28163
  /**
28096
28164
  @method everyProperty
@@ -28099,7 +28167,7 @@ enifed('ember-runtime/mixins/enumerable', ['exports', 'ember-metal/core', 'ember
28099
28167
  @deprecated Use `isEvery` instead
28100
28168
  @return {Boolean}
28101
28169
  */
28102
- everyProperty: mixin.aliasMethod("isEvery"),
28170
+ everyProperty: mixin.aliasMethod('isEvery'),
28103
28171
 
28104
28172
  /**
28105
28173
  Returns `true` if the passed property resolves to `true` for all items in
@@ -28142,7 +28210,7 @@ enifed('ember-runtime/mixins/enumerable', ['exports', 'ember-metal/core', 'ember
28142
28210
  @return {Boolean} `true` if the passed function returns `true` for any item
28143
28211
  */
28144
28212
  any: function (callback, target) {
28145
- var len = property_get.get(this, "length");
28213
+ var len = property_get.get(this, 'length');
28146
28214
  var context = popCtx();
28147
28215
  var found = false;
28148
28216
  var last = null;
@@ -28191,7 +28259,7 @@ enifed('ember-runtime/mixins/enumerable', ['exports', 'ember-metal/core', 'ember
28191
28259
  @return {Boolean} `true` if the passed function returns `true` for any item
28192
28260
  @deprecated Use `any` instead
28193
28261
  */
28194
- some: mixin.aliasMethod("any"),
28262
+ some: mixin.aliasMethod('any'),
28195
28263
 
28196
28264
  /**
28197
28265
  Returns `true` if the passed property resolves to `true` for any item in
@@ -28213,7 +28281,7 @@ enifed('ember-runtime/mixins/enumerable', ['exports', 'ember-metal/core', 'ember
28213
28281
  @return {Boolean}
28214
28282
  @deprecated Use `isAny` instead
28215
28283
  */
28216
- anyBy: mixin.aliasMethod("isAny"),
28284
+ anyBy: mixin.aliasMethod('isAny'),
28217
28285
 
28218
28286
  /**
28219
28287
  @method someProperty
@@ -28222,7 +28290,7 @@ enifed('ember-runtime/mixins/enumerable', ['exports', 'ember-metal/core', 'ember
28222
28290
  @return {Boolean}
28223
28291
  @deprecated Use `isAny` instead
28224
28292
  */
28225
- someProperty: mixin.aliasMethod("isAny"),
28293
+ someProperty: mixin.aliasMethod('isAny'),
28226
28294
 
28227
28295
  /**
28228
28296
  This will combine the values of the enumerator into a single value. It
@@ -28251,7 +28319,7 @@ enifed('ember-runtime/mixins/enumerable', ['exports', 'ember-metal/core', 'ember
28251
28319
  @return {Object} The reduced value.
28252
28320
  */
28253
28321
  reduce: function (callback, initialValue, reducerProperty) {
28254
- if (typeof callback !== "function") {
28322
+ if (typeof callback !== 'function') {
28255
28323
  throw new TypeError();
28256
28324
  }
28257
28325
 
@@ -28283,7 +28351,7 @@ enifed('ember-runtime/mixins/enumerable', ['exports', 'ember-metal/core', 'ember
28283
28351
  this.forEach(function (x, idx) {
28284
28352
  var method = x && x[methodName];
28285
28353
 
28286
- if ("function" === typeof method) {
28354
+ if ('function' === typeof method) {
28287
28355
  ret[idx] = args ? method.apply(x, args) : x[methodName]();
28288
28356
  }
28289
28357
  }, this);
@@ -28383,7 +28451,7 @@ enifed('ember-runtime/mixins/enumerable', ['exports', 'ember-metal/core', 'ember
28383
28451
  @type Array
28384
28452
  @return this
28385
28453
  */
28386
- "[]": computed.computed({
28454
+ '[]': computed.computed({
28387
28455
  get: function (key) {
28388
28456
  return this;
28389
28457
  }
@@ -28402,19 +28470,19 @@ enifed('ember-runtime/mixins/enumerable', ['exports', 'ember-metal/core', 'ember
28402
28470
  @return this
28403
28471
  */
28404
28472
  addEnumerableObserver: function (target, opts) {
28405
- var willChange = opts && opts.willChange || "enumerableWillChange";
28406
- var didChange = opts && opts.didChange || "enumerableDidChange";
28407
- var hasObservers = property_get.get(this, "hasEnumerableObservers");
28473
+ var willChange = opts && opts.willChange || 'enumerableWillChange';
28474
+ var didChange = opts && opts.didChange || 'enumerableDidChange';
28475
+ var hasObservers = property_get.get(this, 'hasEnumerableObservers');
28408
28476
 
28409
28477
  if (!hasObservers) {
28410
- property_events.propertyWillChange(this, "hasEnumerableObservers");
28478
+ property_events.propertyWillChange(this, 'hasEnumerableObservers');
28411
28479
  }
28412
28480
 
28413
- events.addListener(this, "@enumerable:before", target, willChange);
28414
- events.addListener(this, "@enumerable:change", target, didChange);
28481
+ events.addListener(this, '@enumerable:before', target, willChange);
28482
+ events.addListener(this, '@enumerable:change', target, didChange);
28415
28483
 
28416
28484
  if (!hasObservers) {
28417
- property_events.propertyDidChange(this, "hasEnumerableObservers");
28485
+ property_events.propertyDidChange(this, 'hasEnumerableObservers');
28418
28486
  }
28419
28487
 
28420
28488
  return this;
@@ -28428,19 +28496,19 @@ enifed('ember-runtime/mixins/enumerable', ['exports', 'ember-metal/core', 'ember
28428
28496
  @return this
28429
28497
  */
28430
28498
  removeEnumerableObserver: function (target, opts) {
28431
- var willChange = opts && opts.willChange || "enumerableWillChange";
28432
- var didChange = opts && opts.didChange || "enumerableDidChange";
28433
- var hasObservers = property_get.get(this, "hasEnumerableObservers");
28499
+ var willChange = opts && opts.willChange || 'enumerableWillChange';
28500
+ var didChange = opts && opts.didChange || 'enumerableDidChange';
28501
+ var hasObservers = property_get.get(this, 'hasEnumerableObservers');
28434
28502
 
28435
28503
  if (hasObservers) {
28436
- property_events.propertyWillChange(this, "hasEnumerableObservers");
28504
+ property_events.propertyWillChange(this, 'hasEnumerableObservers');
28437
28505
  }
28438
28506
 
28439
- events.removeListener(this, "@enumerable:before", target, willChange);
28440
- events.removeListener(this, "@enumerable:change", target, didChange);
28507
+ events.removeListener(this, '@enumerable:before', target, willChange);
28508
+ events.removeListener(this, '@enumerable:change', target, didChange);
28441
28509
 
28442
28510
  if (hasObservers) {
28443
- property_events.propertyDidChange(this, "hasEnumerableObservers");
28511
+ property_events.propertyDidChange(this, 'hasEnumerableObservers');
28444
28512
  }
28445
28513
 
28446
28514
  return this;
@@ -28453,7 +28521,7 @@ enifed('ember-runtime/mixins/enumerable', ['exports', 'ember-metal/core', 'ember
28453
28521
  @type Boolean
28454
28522
  */
28455
28523
  hasEnumerableObservers: computed.computed(function () {
28456
- return events.hasListeners(this, "@enumerable:change") || events.hasListeners(this, "@enumerable:before");
28524
+ return events.hasListeners(this, '@enumerable:change') || events.hasListeners(this, '@enumerable:before');
28457
28525
  }),
28458
28526
 
28459
28527
  /**
@@ -28470,18 +28538,18 @@ enifed('ember-runtime/mixins/enumerable', ['exports', 'ember-metal/core', 'ember
28470
28538
  enumerableContentWillChange: function (removing, adding) {
28471
28539
  var removeCnt, addCnt, hasDelta;
28472
28540
 
28473
- if ("number" === typeof removing) {
28541
+ if ('number' === typeof removing) {
28474
28542
  removeCnt = removing;
28475
28543
  } else if (removing) {
28476
- removeCnt = property_get.get(removing, "length");
28544
+ removeCnt = property_get.get(removing, 'length');
28477
28545
  } else {
28478
28546
  removeCnt = removing = -1;
28479
28547
  }
28480
28548
 
28481
- if ("number" === typeof adding) {
28549
+ if ('number' === typeof adding) {
28482
28550
  addCnt = adding;
28483
28551
  } else if (adding) {
28484
- addCnt = property_get.get(adding, "length");
28552
+ addCnt = property_get.get(adding, 'length');
28485
28553
  } else {
28486
28554
  addCnt = adding = -1;
28487
28555
  }
@@ -28496,13 +28564,13 @@ enifed('ember-runtime/mixins/enumerable', ['exports', 'ember-metal/core', 'ember
28496
28564
  adding = null;
28497
28565
  }
28498
28566
 
28499
- property_events.propertyWillChange(this, "[]");
28567
+ property_events.propertyWillChange(this, '[]');
28500
28568
 
28501
28569
  if (hasDelta) {
28502
- property_events.propertyWillChange(this, "length");
28570
+ property_events.propertyWillChange(this, 'length');
28503
28571
  }
28504
28572
 
28505
- events.sendEvent(this, "@enumerable:before", [this, removing, adding]);
28573
+ events.sendEvent(this, '@enumerable:before', [this, removing, adding]);
28506
28574
 
28507
28575
  return this;
28508
28576
  },
@@ -28523,18 +28591,18 @@ enifed('ember-runtime/mixins/enumerable', ['exports', 'ember-metal/core', 'ember
28523
28591
  enumerableContentDidChange: function (removing, adding) {
28524
28592
  var removeCnt, addCnt, hasDelta;
28525
28593
 
28526
- if ("number" === typeof removing) {
28594
+ if ('number' === typeof removing) {
28527
28595
  removeCnt = removing;
28528
28596
  } else if (removing) {
28529
- removeCnt = property_get.get(removing, "length");
28597
+ removeCnt = property_get.get(removing, 'length');
28530
28598
  } else {
28531
28599
  removeCnt = removing = -1;
28532
28600
  }
28533
28601
 
28534
- if ("number" === typeof adding) {
28602
+ if ('number' === typeof adding) {
28535
28603
  addCnt = adding;
28536
28604
  } else if (adding) {
28537
- addCnt = property_get.get(adding, "length");
28605
+ addCnt = property_get.get(adding, 'length');
28538
28606
  } else {
28539
28607
  addCnt = adding = -1;
28540
28608
  }
@@ -28549,13 +28617,13 @@ enifed('ember-runtime/mixins/enumerable', ['exports', 'ember-metal/core', 'ember
28549
28617
  adding = null;
28550
28618
  }
28551
28619
 
28552
- events.sendEvent(this, "@enumerable:change", [this, removing, adding]);
28620
+ events.sendEvent(this, '@enumerable:change', [this, removing, adding]);
28553
28621
 
28554
28622
  if (hasDelta) {
28555
- property_events.propertyDidChange(this, "length");
28623
+ property_events.propertyDidChange(this, 'length');
28556
28624
  }
28557
28625
 
28558
- property_events.propertyDidChange(this, "[]");
28626
+ property_events.propertyDidChange(this, '[]');
28559
28627
 
28560
28628
  return this;
28561
28629
  },
@@ -28735,25 +28803,33 @@ enifed('ember-runtime/mixins/mutable_array', ['exports', 'ember-metal/property_g
28735
28803
 
28736
28804
  'use strict';
28737
28805
 
28738
- /**
28739
- @module ember
28740
- @submodule ember-runtime
28741
- */
28742
28806
 
28743
- // require('ember-runtime/mixins/array');
28744
- // require('ember-runtime/mixins/mutable_enumerable');
28745
-
28746
- // ..........................................................
28747
- // CONSTANTS
28748
- //
28749
-
28750
- var OUT_OF_RANGE_EXCEPTION = "Index out of range";
28751
- var EMPTY = [];
28752
28807
 
28753
28808
  // ..........................................................
28754
28809
  // HELPERS
28755
28810
  //
28756
28811
 
28812
+ var OUT_OF_RANGE_EXCEPTION = "Index out of range";
28813
+ var EMPTY = []; /**
28814
+ This mixin defines the API for modifying array-like objects. These methods
28815
+ can be applied only to a collection that keeps its items in an ordered set.
28816
+ It builds upon the Array mixin and adds methods to modify the array.
28817
+ Concrete implementations of this class include ArrayProxy and ArrayController.
28818
+
28819
+ It is important to use the methods in this class to modify arrays so that
28820
+ changes are observable. This allows the binding system in Ember to function
28821
+ correctly.
28822
+
28823
+
28824
+ Note that an Array can change even if it does not implement this mixin.
28825
+ For example, one might implement a SparseArray that cannot be directly
28826
+ modified, but if its underlying enumerable changes, it will change also.
28827
+
28828
+ @class MutableArray
28829
+ @namespace Ember
28830
+ @uses Ember.Array
28831
+ @uses Ember.MutableEnumerable
28832
+ */
28757
28833
  exports['default'] = mixin.Mixin.create(EmberArray['default'], MutableEnumerable['default'], {
28758
28834
 
28759
28835
  /**
@@ -29521,7 +29597,7 @@ enifed('ember-runtime/mixins/promise_proxy', ['exports', 'ember-metal/property_g
29521
29597
  }
29522
29598
 
29523
29599
  /**
29524
- A low level mixin making ObjectProxy, ObjectController or ArrayController's promise aware.
29600
+ A low level mixin making ObjectProxy, ObjectController or ArrayControllers promise-aware.
29525
29601
 
29526
29602
  ```javascript
29527
29603
  var ObjectPromiseController = Ember.ObjectController.extend(Ember.PromiseProxyMixin);
@@ -30419,7 +30495,7 @@ enifed('ember-runtime/system/container', ['exports', 'ember-metal/property_set',
30419
30495
  exports.Container = Container['default'];
30420
30496
 
30421
30497
  });
30422
- enifed('ember-runtime/system/core_object', ['exports', 'ember-metal', 'ember-metal/merge', 'ember-metal/property_get', 'ember-metal/utils', 'ember-metal/platform/create', 'ember-metal/chains', 'ember-metal/events', 'ember-metal/mixin', 'ember-metal/enumerable_utils', 'ember-metal/error', 'ember-metal/platform/define_property', 'ember-metal/keys', '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, Ember, merge, property_get, utils, o_create, chains, events, mixin, enumerable_utils, EmberError, define_property, keys, ActionHandler, ember_metal__properties, binding, computed, InjectedProperty, run, watching, core, inject) {
30498
+ enifed('ember-runtime/system/core_object', ['exports', 'ember-metal', 'ember-metal/merge', 'ember-metal/property_get', 'ember-metal/utils', 'ember-metal/platform/create', 'ember-metal/chains', 'ember-metal/events', 'ember-metal/mixin', 'ember-metal/enumerable_utils', 'ember-metal/error', 'ember-metal/platform/define_property', 'ember-metal/keys', '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, Ember, merge, property_get, utils, o_create, chains, events, mixin, enumerable_utils, EmberError, define_property, keys, ActionHandler, ember_metal__properties, ember_metal__binding, computed, InjectedProperty, run, watching, core, inject) {
30423
30499
 
30424
30500
 
30425
30501
  // Remove "use strict"; from transpiled module until
@@ -30763,8 +30839,8 @@ enifed('ember-runtime/system/core_object', ['exports', 'ember-metal', 'ember-met
30763
30839
  },
30764
30840
 
30765
30841
  bind: function (to, from) {
30766
- if (!(from instanceof binding.Binding)) {
30767
- from = binding.Binding.from(from);
30842
+ if (!(from instanceof ember_metal__binding.Binding)) {
30843
+ from = ember_metal__binding.Binding.from(from);
30768
30844
  }
30769
30845
  from.to(to).connect(this);
30770
30846
  return from;
@@ -30924,8 +31000,8 @@ enifed('ember-runtime/system/core_object', ['exports', 'ember-metal', 'ember-met
30924
31000
  @param [arguments]*
30925
31001
  */
30926
31002
  createWithMixins: function () {
30927
- for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
30928
- args[_key] = arguments[_key];
31003
+ for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
31004
+ args[_key2] = arguments[_key2];
30929
31005
  }
30930
31006
 
30931
31007
  var C = this;
@@ -30965,8 +31041,8 @@ enifed('ember-runtime/system/core_object', ['exports', 'ember-metal', 'ember-met
30965
31041
  @param [arguments]*
30966
31042
  */
30967
31043
  create: function () {
30968
- for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
30969
- args[_key] = arguments[_key];
31044
+ for (var _len3 = arguments.length, args = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
31045
+ args[_key3] = arguments[_key3];
30970
31046
  }
30971
31047
 
30972
31048
  var C = this;
@@ -31501,7 +31577,7 @@ enifed('ember-runtime/system/lazy_load', ['exports', 'ember-metal/core', 'ember-
31501
31577
  }
31502
31578
 
31503
31579
  });
31504
- enifed('ember-runtime/system/namespace', ['exports', 'ember-metal/core', 'ember-metal/property_get', 'ember-metal/array', 'ember-metal/utils', 'ember-metal/mixin', 'ember-runtime/system/object'], function (exports, Ember, property_get, array, utils, mixin, EmberObject) {
31580
+ enifed('ember-runtime/system/namespace', ['exports', 'ember-metal/core', 'ember-metal/property_get', 'ember-metal/array', 'ember-metal/utils', 'ember-metal/mixin', 'ember-runtime/system/object'], function (exports, Ember, property_get, array, utils, ember_metal__mixin, EmberObject) {
31505
31581
 
31506
31582
  'use strict';
31507
31583
 
@@ -31710,7 +31786,7 @@ enifed('ember-runtime/system/namespace', ['exports', 'ember-metal/core', 'ember-
31710
31786
  };
31711
31787
  }
31712
31788
 
31713
- mixin.Mixin.prototype.toString = classToString; // ES6TODO: altering imported objects. SBB.
31789
+ ember_metal__mixin.Mixin.prototype.toString = classToString; // ES6TODO: altering imported objects. SBB.
31714
31790
 
31715
31791
  exports['default'] = Namespace;
31716
31792
 
@@ -31859,7 +31935,7 @@ enifed('ember-runtime/system/native_array', ['exports', 'ember-metal/core', 'emb
31859
31935
  NativeArray.activate = function () {
31860
31936
  NativeArray.apply(Array.prototype);
31861
31937
 
31862
- A = function (arr) {
31938
+ exports.A = A = function (arr) {
31863
31939
  return arr || [];
31864
31940
  };
31865
31941
  };
@@ -31903,7 +31979,7 @@ enifed('ember-runtime/system/service', ['exports', 'ember-runtime/system/object'
31903
31979
 
31904
31980
  'use strict';
31905
31981
 
31906
- inject.createInjectionHelper("service");
31982
+ inject.createInjectionHelper('service');
31907
31983
 
31908
31984
  /**
31909
31985
  @class Service
@@ -33106,22 +33182,22 @@ enifed('ember-template-compiler/compat/precompile', ['exports', 'ember-template-
33106
33182
  var compile, compileSpec;
33107
33183
 
33108
33184
  exports['default'] = function (string) {
33109
- if ((!compile || !compileSpec) && Ember.__loader.registry["htmlbars-compiler/compiler"]) {
33110
- var Compiler = requireModule("htmlbars-compiler/compiler");
33185
+ if ((!compile || !compileSpec) && Ember.__loader.registry['htmlbars-compiler/compiler']) {
33186
+ var Compiler = requireModule('htmlbars-compiler/compiler');
33111
33187
 
33112
33188
  compile = Compiler.compile;
33113
33189
  compileSpec = Compiler.compileSpec;
33114
33190
  }
33115
33191
 
33116
33192
  if (!compile || !compileSpec) {
33117
- throw new Error("Cannot call `precompile` without the template compiler loaded. Please load `ember-template-compiler.js` prior to calling `precompile`.");
33193
+ throw new Error('Cannot call `precompile` without the template compiler loaded. Please load `ember-template-compiler.js` prior to calling `precompile`.');
33118
33194
  }
33119
33195
 
33120
33196
  var asObject = arguments[1] === undefined ? true : arguments[1];
33121
33197
  var compileFunc = asObject ? compile : compileSpec;
33122
33198
 
33123
33199
  return compileFunc(string, compileOptions['default']());
33124
- };
33200
+ }
33125
33201
 
33126
33202
  });
33127
33203
  enifed('ember-template-compiler/plugins', ['exports'], function (exports) {
@@ -33141,7 +33217,7 @@ enifed('ember-template-compiler/plugins', ['exports'], function (exports) {
33141
33217
  };
33142
33218
  function registerPlugin(type, Plugin) {
33143
33219
  if (!plugins[type]) {
33144
- throw new Error("Attempting to register \"" + Plugin + "\" as \"" + type + "\" which is not a valid HTMLBars plugin type.");
33220
+ throw new Error('Attempting to register "' + Plugin + '" as "' + type + '" which is not a valid HTMLBars plugin type.');
33145
33221
  }
33146
33222
 
33147
33223
  plugins[type].push(Plugin);
@@ -33177,9 +33253,10 @@ enifed('ember-template-compiler/plugins/transform-each-in-to-hash', ['exports'],
33177
33253
  @class TransformEachInToHash
33178
33254
  @private
33179
33255
  */
33180
- function TransformEachInToHash() {
33256
+ function TransformEachInToHash(options) {
33181
33257
  // set later within HTMLBars to the syntax package
33182
33258
  this.syntax = null;
33259
+ this.options = options || {};
33183
33260
  }
33184
33261
 
33185
33262
  /**
@@ -33196,7 +33273,7 @@ enifed('ember-template-compiler/plugins/transform-each-in-to-hash', ['exports'],
33196
33273
  if (pluginContext.validate(node)) {
33197
33274
 
33198
33275
  if (node.program && node.program.blockParams.length) {
33199
- throw new Error("You cannot use keyword (`{{each foo in bar}}`) and block params (`{{each bar as |foo|}}`) at the same time.");
33276
+ throw new Error('You cannot use keyword (`{{each foo in bar}}`) and block params (`{{each bar as |foo|}}`) at the same time.');
33200
33277
  }
33201
33278
 
33202
33279
  var removedParams = node.sexpr.params.splice(0, 2);
@@ -33207,7 +33284,7 @@ enifed('ember-template-compiler/plugins/transform-each-in-to-hash', ['exports'],
33207
33284
  node.sexpr.hash = b.hash();
33208
33285
  }
33209
33286
 
33210
- node.sexpr.hash.pairs.push(b.pair("keyword", b.string(keyword)));
33287
+ node.sexpr.hash.pairs.push(b.pair('keyword', b.string(keyword)));
33211
33288
  }
33212
33289
  });
33213
33290
 
@@ -33215,7 +33292,7 @@ enifed('ember-template-compiler/plugins/transform-each-in-to-hash', ['exports'],
33215
33292
  };
33216
33293
 
33217
33294
  TransformEachInToHash.prototype.validate = function TransformEachInToHash_validate(node) {
33218
- return (node.type === "BlockStatement" || node.type === "MustacheStatement") && node.sexpr.path.original === "each" && node.sexpr.params.length === 3 && node.sexpr.params[1].type === "PathExpression" && node.sexpr.params[1].original === "in";
33295
+ return (node.type === 'BlockStatement' || node.type === 'MustacheStatement') && node.sexpr.path.original === 'each' && node.sexpr.params.length === 3 && node.sexpr.params[1].type === 'PathExpression' && node.sexpr.params[1].original === 'in';
33219
33296
  };
33220
33297
 
33221
33298
  exports['default'] = TransformEachInToHash;
@@ -33248,9 +33325,10 @@ enifed('ember-template-compiler/plugins/transform-with-as-to-hash', ['exports'],
33248
33325
  @private
33249
33326
  @class TransformWithAsToHash
33250
33327
  */
33251
- function TransformWithAsToHash() {
33328
+ function TransformWithAsToHash(options) {
33252
33329
  // set later within HTMLBars to the syntax package
33253
33330
  this.syntax = null;
33331
+ this.options = options;
33254
33332
  }
33255
33333
 
33256
33334
  /**
@@ -33261,6 +33339,7 @@ enifed('ember-template-compiler/plugins/transform-with-as-to-hash', ['exports'],
33261
33339
  TransformWithAsToHash.prototype.transform = function TransformWithAsToHash_transform(ast) {
33262
33340
  var pluginContext = this;
33263
33341
  var walker = new pluginContext.syntax.Walker();
33342
+ var moduleName = this.options.moduleName;
33264
33343
 
33265
33344
  walker.visit(ast, function (node) {
33266
33345
  if (pluginContext.validate(node)) {
@@ -33269,6 +33348,8 @@ enifed('ember-template-compiler/plugins/transform-with-as-to-hash', ['exports'],
33269
33348
  throw new Error("You cannot use keyword (`{{with foo as bar}}`) and block params (`{{with foo as |bar|}}`) at the same time.");
33270
33349
  }
33271
33350
 
33351
+ Ember.deprecate("Using {{with}} without block syntax is deprecated. " + "Please use standard block form (`{{#with foo as |bar|}}`) " + (moduleName ? " in `" + moduleName + "` " : "") + "instead.", false, { url: "http://emberjs.com/deprecations/v1.x/#toc_code-as-code-sytnax-for-code-with-code" });
33352
+
33272
33353
  var removedParams = node.sexpr.params.splice(1, 2);
33273
33354
  var keyword = removedParams[1].original;
33274
33355
  node.program.blockParams = [keyword];
@@ -33289,13 +33370,18 @@ enifed('ember-template-compiler/system/compile', ['exports', 'ember-template-com
33289
33370
 
33290
33371
  'use strict';
33291
33372
 
33292
- /**
33293
- @module ember
33294
- @submodule ember-template-compiler
33295
- */
33296
33373
 
33297
- var compile;
33298
- exports['default'] = function (templateString) {
33374
+ var compile; /**
33375
+ Uses HTMLBars `compile` function to process a string into a compiled template.
33376
+
33377
+ This is not present in production builds.
33378
+
33379
+ @private
33380
+ @method compile
33381
+ @param {String} templateString This is the string to be compiled by HTMLBars.
33382
+ @param {Object} options This is an options hash to augment the compiler options.
33383
+ */
33384
+ exports['default'] = function (templateString, options) {
33299
33385
  if (!compile && Ember.__loader.registry["htmlbars-compiler/compiler"]) {
33300
33386
  compile = requireModule("htmlbars-compiler/compiler").compile;
33301
33387
  }
@@ -33304,10 +33390,10 @@ enifed('ember-template-compiler/system/compile', ['exports', 'ember-template-com
33304
33390
  throw new Error("Cannot call `compile` without the template compiler loaded. Please load `ember-template-compiler.js` prior to calling `compile`.");
33305
33391
  }
33306
33392
 
33307
- var templateSpec = compile(templateString, compileOptions['default']());
33393
+ var templateSpec = compile(templateString, compileOptions['default'](options));
33308
33394
 
33309
33395
  return template['default'](templateSpec);
33310
- };
33396
+ }
33311
33397
 
33312
33398
  });
33313
33399
  enifed('ember-template-compiler/system/compile_options', ['exports', 'ember-metal/core', 'ember-template-compiler/plugins'], function (exports, Ember, plugins) {
@@ -33319,17 +33405,23 @@ enifed('ember-template-compiler/system/compile_options', ['exports', 'ember-meta
33319
33405
  @submodule ember-template-compiler
33320
33406
  */
33321
33407
 
33322
- exports['default'] = function () {
33408
+ exports['default'] = function (_options) {
33323
33409
  var disableComponentGeneration = true;
33324
33410
 
33325
- return {
33326
- revision: "Ember@1.12.0-beta.1",
33411
+ var options = _options || {};
33412
+ // When calling `Ember.Handlebars.compile()` a second argument of `true`
33413
+ // had a special meaning (long since lost), this just gaurds against
33414
+ // `options` being true, and causing an error during compilation.
33415
+ if (options === true) {
33416
+ options = {};
33417
+ }
33327
33418
 
33328
- disableComponentGeneration: disableComponentGeneration,
33419
+ options.revision = "Ember@1.12.0-beta.3";
33420
+ options.disableComponentGeneration = disableComponentGeneration;
33421
+ options.plugins = plugins['default'];
33329
33422
 
33330
- plugins: plugins['default']
33331
- };
33332
- };
33423
+ return options;
33424
+ }
33333
33425
 
33334
33426
  });
33335
33427
  enifed('ember-template-compiler/system/precompile', ['exports', 'ember-template-compiler/system/compile_options'], function (exports, compileOptions) {
@@ -33353,17 +33445,17 @@ enifed('ember-template-compiler/system/precompile', ['exports', 'ember-template-
33353
33445
  @method precompile
33354
33446
  @param {String} templateString This is the string to be compiled by HTMLBars.
33355
33447
  */
33356
- exports['default'] = function (templateString) {
33357
- if (!compileSpec && Ember.__loader.registry["htmlbars-compiler/compiler"]) {
33358
- compileSpec = requireModule("htmlbars-compiler/compiler").compileSpec;
33448
+ exports['default'] = function (templateString, options) {
33449
+ if (!compileSpec && Ember.__loader.registry['htmlbars-compiler/compiler']) {
33450
+ compileSpec = requireModule('htmlbars-compiler/compiler').compileSpec;
33359
33451
  }
33360
33452
 
33361
33453
  if (!compileSpec) {
33362
- throw new Error("Cannot call `compileSpec` without the template compiler loaded. Please load `ember-template-compiler.js` prior to calling `compileSpec`.");
33454
+ throw new Error('Cannot call `compileSpec` without the template compiler loaded. Please load `ember-template-compiler.js` prior to calling `compileSpec`.');
33363
33455
  }
33364
33456
 
33365
- return compileSpec(templateString, compileOptions['default']());
33366
- };
33457
+ return compileSpec(templateString, compileOptions['default'](options));
33458
+ }
33367
33459
 
33368
33460
  });
33369
33461
  enifed('ember-template-compiler/system/template', ['exports'], function (exports) {
@@ -33389,7 +33481,7 @@ enifed('ember-template-compiler/system/template', ['exports'], function (exports
33389
33481
  templateSpec.isMethod = false;
33390
33482
 
33391
33483
  return templateSpec;
33392
- };
33484
+ }
33393
33485
 
33394
33486
  });
33395
33487
  enifed('ember-testing', ['ember-metal/core', 'ember-testing/initializers', 'ember-testing/support', 'ember-testing/setup_for_testing', 'ember-testing/test', 'ember-testing/adapters/adapter', 'ember-testing/adapters/qunit', 'ember-testing/helpers'], function (Ember, __dep1__, __dep2__, setupForTesting, Test, Adapter, QUnitAdapter) {
@@ -33948,9 +34040,9 @@ enifed('ember-testing/initializers', ['ember-runtime/system/lazy_load'], functio
33948
34040
 
33949
34041
  'use strict';
33950
34042
 
33951
- var name = "deferReadiness in `testing` mode";
34043
+ var name = 'deferReadiness in `testing` mode';
33952
34044
 
33953
- lazy_load.onLoad("Ember.Application", function (Application) {
34045
+ lazy_load.onLoad('Ember.Application', function (Application) {
33954
34046
  if (!Application.initializers[name]) {
33955
34047
  Application.initializer({
33956
34048
  name: name,
@@ -34476,8 +34568,8 @@ enifed('ember-testing/test', ['exports', 'ember-metal/core', 'ember-metal/run_lo
34476
34568
  // of helper chaining
34477
34569
  function protoWrap(proto, name, callback, isAsync) {
34478
34570
  proto[name] = function () {
34479
- for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
34480
- args[_key] = arguments[_key];
34571
+ for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
34572
+ args[_key2] = arguments[_key2];
34481
34573
  }
34482
34574
 
34483
34575
  if (isAsync) {
@@ -34609,7 +34701,7 @@ enifed('ember-views/attr_nodes/attr_node', ['exports', 'ember-metal/core', 'embe
34609
34701
  this.init(attrName, attrValue);
34610
34702
  }
34611
34703
 
34612
- var styleWarning = "Binding style attributes may introduce cross-site scripting vulnerabilities; " + "please ensure that values being bound are properly escaped. For more information, " + "including how to disable this warning, see " + "http://emberjs.com/deprecations/v1.x/#toc_warning-when-binding-style-attributes.";
34704
+ var styleWarning = "Binding style attributes may introduce cross-site scripting vulnerabilities; " + "please ensure that values being bound are properly escaped. For more information, " + "including how to disable this warning, see " + "http://emberjs.com/deprecations/v1.x/#toc_binding-style-attributes.";
34613
34705
 
34614
34706
  AttrNode.prototype.init = function init(attrName, simpleAttrValue) {
34615
34707
  this.isAttrNode = true;
@@ -34760,12 +34852,12 @@ enifed('ember-views/component_lookup', ['exports', 'ember-runtime/system/object'
34760
34852
 
34761
34853
  container = container || this.container;
34762
34854
 
34763
- var fullName = "component:" + name;
34764
- var templateFullName = "template:components/" + name;
34855
+ var fullName = 'component:' + name;
34856
+ var templateFullName = 'template:components/' + name;
34765
34857
  var templateRegistered = container && container._registry.has(templateFullName);
34766
34858
 
34767
34859
  if (templateRegistered) {
34768
- container._registry.injection(fullName, "layout", templateFullName);
34860
+ container._registry.injection(fullName, 'layout', templateFullName);
34769
34861
  }
34770
34862
 
34771
34863
  var Component = container.lookupFactory(fullName);
@@ -34787,8 +34879,16 @@ enifed('ember-views/mixins/attribute_bindings_support', ['exports', 'ember-metal
34787
34879
 
34788
34880
  'use strict';
34789
34881
 
34882
+ /**
34883
+ @module ember
34884
+ @submodule ember-views
34885
+ */
34790
34886
  var EMPTY_ARRAY = [];
34791
34887
 
34888
+ /**
34889
+ @class AttributeBindingsSupport
34890
+ @namespace Ember
34891
+ */
34792
34892
  var AttributeBindingsSupport = mixin.Mixin.create({
34793
34893
  concatenatedProperties: ["attributeBindings"],
34794
34894
 
@@ -34816,6 +34916,8 @@ enifed('ember-views/mixins/attribute_bindings_support', ['exports', 'ember-metal
34816
34916
  */
34817
34917
  attributeBindings: EMPTY_ARRAY,
34818
34918
 
34919
+ _attrNodes: EMPTY_ARRAY,
34920
+
34819
34921
  _unspecifiedAttributeBindings: null,
34820
34922
 
34821
34923
  /**
@@ -34898,8 +35000,16 @@ enifed('ember-views/mixins/class_names_support', ['exports', 'ember-metal/core',
34898
35000
 
34899
35001
  'use strict';
34900
35002
 
35003
+ /**
35004
+ @module ember
35005
+ @submodule ember-views
35006
+ */
34901
35007
  var EMPTY_ARRAY = [];
34902
35008
 
35009
+ /**
35010
+ @class ClassNamesSupport
35011
+ @namespace Ember
35012
+ */
34903
35013
  var ClassNamesSupport = mixin.Mixin.create({
34904
35014
  concatenatedProperties: ["classNames", "classNameBindings"],
34905
35015
 
@@ -35073,25 +35183,25 @@ enifed('ember-views/mixins/component_template_deprecation', ['exports', 'ember-m
35073
35183
  this._super.apply(this, arguments);
35074
35184
 
35075
35185
  var deprecatedProperty, replacementProperty;
35076
- var layoutSpecified = props.layoutName || props.layout || property_get.get(this, "layoutName");
35186
+ var layoutSpecified = props.layoutName || props.layout || property_get.get(this, 'layoutName');
35077
35187
 
35078
35188
  if (props.templateName && !layoutSpecified) {
35079
- deprecatedProperty = "templateName";
35080
- replacementProperty = "layoutName";
35189
+ deprecatedProperty = 'templateName';
35190
+ replacementProperty = 'layoutName';
35081
35191
 
35082
35192
  props.layoutName = props.templateName;
35083
- delete props["templateName"];
35193
+ delete props['templateName'];
35084
35194
  }
35085
35195
 
35086
35196
  if (props.template && !layoutSpecified) {
35087
- deprecatedProperty = "template";
35088
- replacementProperty = "layout";
35197
+ deprecatedProperty = 'template';
35198
+ replacementProperty = 'layout';
35089
35199
 
35090
35200
  props.layout = props.template;
35091
- delete props["template"];
35201
+ delete props['template'];
35092
35202
  }
35093
35203
 
35094
- Ember['default'].deprecate("Do not specify " + deprecatedProperty + " on a Component, use " + replacementProperty + " instead.", !deprecatedProperty);
35204
+ Ember['default'].deprecate('Do not specify ' + deprecatedProperty + ' on a Component, use ' + replacementProperty + ' instead.', !deprecatedProperty);
35095
35205
  }
35096
35206
  });
35097
35207
 
@@ -35100,6 +35210,10 @@ enifed('ember-views/mixins/instrumentation_support', ['exports', 'ember-metal/mi
35100
35210
 
35101
35211
  'use strict';
35102
35212
 
35213
+ /**
35214
+ @module ember
35215
+ @submodule ember-views
35216
+ */
35103
35217
  var InstrumentationSupport = mixin.Mixin.create({
35104
35218
  /**
35105
35219
  Used to identify this view during debugging
@@ -35127,6 +35241,10 @@ enifed('ember-views/mixins/legacy_view_support', ['exports', 'ember-metal/core',
35127
35241
 
35128
35242
  'use strict';
35129
35243
 
35244
+ /**
35245
+ @module ember
35246
+ @submodule ember-views
35247
+ */
35130
35248
  var LegacyViewSupport = mixin.Mixin.create({
35131
35249
  beforeRender: function (buffer) {},
35132
35250
 
@@ -35251,6 +35369,10 @@ enifed('ember-views/mixins/template_rendering_support', ['exports', 'ember-metal
35251
35369
 
35252
35370
  'use strict';
35253
35371
 
35372
+ /**
35373
+ @module ember
35374
+ @submodule ember-views
35375
+ */
35254
35376
  var _renderView;
35255
35377
  function renderView(view, buffer, template) {
35256
35378
  if (_renderView === undefined) {
@@ -35259,6 +35381,10 @@ enifed('ember-views/mixins/template_rendering_support', ['exports', 'ember-metal
35259
35381
  _renderView(view, buffer, template);
35260
35382
  }
35261
35383
 
35384
+ /**
35385
+ @class TemplateRenderingSupport
35386
+ @namespace Ember
35387
+ */
35262
35388
  var TemplateRenderingSupport = mixin.Mixin.create({
35263
35389
  /**
35264
35390
  Called on your view when it should push strings of HTML into a
@@ -35500,6 +35626,10 @@ enifed('ember-views/mixins/view_child_views_support', ['exports', 'ember-metal/c
35500
35626
 
35501
35627
  'use strict';
35502
35628
 
35629
+ /**
35630
+ @module ember
35631
+ @submodule ember-views
35632
+ */
35503
35633
  var childViewsProperty = computed.computed(function () {
35504
35634
  var childViews = this._childViews;
35505
35635
  var ret = native_array.A();
@@ -35638,6 +35768,10 @@ enifed('ember-views/mixins/view_context_support', ['exports', 'ember-metal/mixin
35638
35768
 
35639
35769
  'use strict';
35640
35770
 
35771
+ /**
35772
+ @module ember
35773
+ @submodule ember-views
35774
+ */
35641
35775
  var ViewContextSupport = mixin.Mixin.create({
35642
35776
  /**
35643
35777
  The object from which templates should access properties.
@@ -35900,10 +36034,18 @@ enifed('ember-views/mixins/visibility_support', ['exports', 'ember-metal/mixin',
35900
36034
 
35901
36035
  'use strict';
35902
36036
 
36037
+ /**
36038
+ @module ember
36039
+ @submodule ember-views
36040
+ */
35903
36041
  function K() {
35904
36042
  return this;
35905
36043
  }
35906
36044
 
36045
+ /**
36046
+ @class VisibilitySupport
36047
+ @namespace Ember
36048
+ */
35907
36049
  var VisibilitySupport = mixin.Mixin.create({
35908
36050
  /**
35909
36051
  If `false`, the view will appear hidden in DOM.
@@ -36110,7 +36252,7 @@ enifed('ember-views/streams/context_stream', ['exports', 'ember-metal/core', 'em
36110
36252
  'use strict';
36111
36253
 
36112
36254
  function ContextStream(view) {
36113
- Ember['default'].assert("ContextStream error: the argument is not a view", view && view.isView);
36255
+ Ember['default'].assert('ContextStream error: the argument is not a view', view && view.isView);
36114
36256
 
36115
36257
  this.init();
36116
36258
  this.view = view;
@@ -36124,10 +36266,10 @@ enifed('ember-views/streams/context_stream', ['exports', 'ember-metal/core', 'em
36124
36266
  _makeChildStream: function (key, _fullPath) {
36125
36267
  var stream;
36126
36268
 
36127
- if (key === "" || key === "this") {
36269
+ if (key === '' || key === 'this') {
36128
36270
  stream = this.view._baseContext;
36129
36271
  } else if (path_cache.isGlobal(key) && Ember['default'].lookup[key]) {
36130
- Ember['default'].deprecate("Global lookup of " + _fullPath + " from a Handlebars template is deprecated.");
36272
+ Ember['default'].deprecate('Global lookup of ' + _fullPath + ' from a Handlebars template is deprecated.');
36131
36273
  stream = new SimpleStream['default'](Ember['default'].lookup[key]);
36132
36274
  stream._isGlobal = true;
36133
36275
  } else if (key in this.view._keywords) {
@@ -36138,7 +36280,7 @@ enifed('ember-views/streams/context_stream', ['exports', 'ember-metal/core', 'em
36138
36280
 
36139
36281
  stream._isRoot = true;
36140
36282
 
36141
- if (key === "controller") {
36283
+ if (key === 'controller') {
36142
36284
  stream._isController = true;
36143
36285
  }
36144
36286
 
@@ -36154,8 +36296,8 @@ enifed('ember-views/streams/key_stream', ['exports', 'ember-metal/core', 'ember-
36154
36296
  'use strict';
36155
36297
 
36156
36298
  function KeyStream(source, key) {
36157
- Ember['default'].assert("KeyStream error: key must be a non-empty string", typeof key === "string" && key.length > 0);
36158
- Ember['default'].assert("KeyStream error: key must not have a '.'", key.indexOf(".") === -1);
36299
+ Ember['default'].assert('KeyStream error: key must be a non-empty string', typeof key === 'string' && key.length > 0);
36300
+ Ember['default'].assert('KeyStream error: key must not have a \'.\'', key.indexOf('.') === -1);
36159
36301
 
36160
36302
  this.init();
36161
36303
  this.source = source;
@@ -36175,11 +36317,11 @@ enifed('ember-views/streams/key_stream', ['exports', 'ember-metal/core', 'ember-
36175
36317
  var nextObj = utils.read(this.source);
36176
36318
 
36177
36319
  if (nextObj !== prevObj) {
36178
- if (prevObj && typeof prevObj === "object") {
36320
+ if (prevObj && typeof prevObj === 'object') {
36179
36321
  observer.removeObserver(prevObj, this.key, this, this._didChange);
36180
36322
  }
36181
36323
 
36182
- if (nextObj && typeof nextObj === "object") {
36324
+ if (nextObj && typeof nextObj === 'object') {
36183
36325
  observer.addObserver(nextObj, this.key, this, this._didChange);
36184
36326
  }
36185
36327
 
@@ -36198,7 +36340,7 @@ enifed('ember-views/streams/key_stream', ['exports', 'ember-metal/core', 'ember-
36198
36340
  },
36199
36341
 
36200
36342
  setSource: function (nextSource) {
36201
- Ember['default'].assert("KeyStream error: source must be an object", typeof nextSource === "object");
36343
+ Ember['default'].assert('KeyStream error: source must be an object', typeof nextSource === 'object');
36202
36344
 
36203
36345
  var prevSource = this.source;
36204
36346
 
@@ -36228,7 +36370,7 @@ enifed('ember-views/streams/key_stream', ['exports', 'ember-metal/core', 'ember-
36228
36370
  this.source.unsubscribe(this._didChange, this);
36229
36371
  }
36230
36372
 
36231
- if (this.obj && typeof this.obj === "object") {
36373
+ if (this.obj && typeof this.obj === 'object') {
36232
36374
  observer.removeObserver(this.obj, this.key, this, this._didChange);
36233
36375
  }
36234
36376
 
@@ -36620,8 +36762,8 @@ enifed('ember-views/system/ext', ['ember-metal/run_loop'], function (run) {
36620
36762
  @submodule ember-views
36621
36763
  */
36622
36764
 
36623
- run['default']._addQueue("render", "actions");
36624
- run['default']._addQueue("afterRender", "render");
36765
+ run['default']._addQueue('render', 'actions');
36766
+ run['default']._addQueue('afterRender', 'render');
36625
36767
 
36626
36768
  });
36627
36769
  enifed('ember-views/system/jquery', ['exports', 'ember-metal/core', 'ember-metal/enumerable_utils', 'ember-metal/environment'], function (exports, Ember, enumerable_utils, environment) {
@@ -36633,11 +36775,11 @@ enifed('ember-views/system/jquery', ['exports', 'ember-metal/core', 'ember-metal
36633
36775
  if (environment['default'].hasDOM) {
36634
36776
  // mainContext is set in `package/loader/lib/main.js` to the `this` context before entering strict mode
36635
36777
  jQuery = Ember['default'].imports && Ember['default'].imports.jQuery || mainContext && mainContext.jQuery; //jshint ignore:line
36636
- if (!jQuery && typeof eriuqer === "function") {
36637
- jQuery = eriuqer("jquery");
36778
+ if (!jQuery && typeof eriuqer === 'function') {
36779
+ jQuery = eriuqer('jquery');
36638
36780
  }
36639
36781
 
36640
- Ember['default'].assert("Ember Views require jQuery between 1.7 and 2.1", jQuery && (jQuery().jquery.match(/^((1\.(7|8|9|10|11))|(2\.(0|1)))(\.\d+)?(pre|rc\d?)?/) || Ember['default'].ENV.FORCE_JQUERY));
36782
+ Ember['default'].assert('Ember Views require jQuery between 1.7 and 2.1', jQuery && (jQuery().jquery.match(/^((1\.(7|8|9|10|11))|(2\.(0|1)))(\.\d+)?(pre|rc\d?)?/) || Ember['default'].ENV.FORCE_JQUERY));
36641
36783
 
36642
36784
  /**
36643
36785
  @module ember
@@ -36645,13 +36787,13 @@ enifed('ember-views/system/jquery', ['exports', 'ember-metal/core', 'ember-metal
36645
36787
  */
36646
36788
  if (jQuery) {
36647
36789
  // http://www.whatwg.org/specs/web-apps/current-work/multipage/dnd.html#dndevents
36648
- var dragEvents = ["dragstart", "drag", "dragenter", "dragleave", "dragover", "drop", "dragend"];
36790
+ var dragEvents = ['dragstart', 'drag', 'dragenter', 'dragleave', 'dragover', 'drop', 'dragend'];
36649
36791
 
36650
36792
  // Copies the `dataTransfer` property from a browser event object onto the
36651
36793
  // jQuery event object for the specified events
36652
36794
  enumerable_utils.forEach(dragEvents, function (eventName) {
36653
36795
  jQuery.event.fixHooks[eventName] = {
36654
- props: ["dataTransfer"]
36796
+ props: ['dataTransfer']
36655
36797
  };
36656
36798
  });
36657
36799
  }
@@ -36690,13 +36832,13 @@ enifed('ember-views/system/platform', ['exports', 'ember-metal/environment'], fu
36690
36832
  'use strict';
36691
36833
 
36692
36834
  var canSetNameOnInputs = environment['default'].hasDOM && (function () {
36693
- var div = document.createElement("div");
36694
- var el = document.createElement("input");
36835
+ var div = document.createElement('div');
36836
+ var el = document.createElement('input');
36695
36837
 
36696
- el.setAttribute("name", "foo");
36838
+ el.setAttribute('name', 'foo');
36697
36839
  div.appendChild(el);
36698
36840
 
36699
- return !!div.innerHTML.match("foo");
36841
+ return !!div.innerHTML.match('foo');
36700
36842
  })();
36701
36843
 
36702
36844
  exports.canSetNameOnInputs = canSetNameOnInputs;
@@ -37263,7 +37405,7 @@ enifed('ember-views/system/renderer', ['exports', 'ember-metal/core', 'ember-met
37263
37405
  EmberRenderer.prototype._super$constructor = Renderer['default'];
37264
37406
 
37265
37407
  EmberRenderer.prototype.scheduleRender = function EmberRenderer_scheduleRender(ctx, fn) {
37266
- return run['default'].scheduleOnce("render", ctx, fn);
37408
+ return run['default'].scheduleOnce('render', ctx, fn);
37267
37409
  };
37268
37410
 
37269
37411
  EmberRenderer.prototype.cancelRender = function EmberRenderer_cancelRender(id) {
@@ -37276,18 +37418,18 @@ enifed('ember-views/system/renderer', ['exports', 'ember-metal/core', 'ember-met
37276
37418
  // provided buffer operation (for example, `insertAfter` will
37277
37419
  // insert a new buffer after the "parent buffer").
37278
37420
  var tagName = view.tagName;
37279
- if (tagName !== null && typeof tagName === "object" && tagName.isDescriptor) {
37280
- tagName = property_get.get(view, "tagName");
37281
- Ember['default'].deprecate("In the future using a computed property to define tagName will not be permitted. That value will be respected, but changing it will not update the element.", !tagName);
37421
+ if (tagName !== null && typeof tagName === 'object' && tagName.isDescriptor) {
37422
+ tagName = property_get.get(view, 'tagName');
37423
+ Ember['default'].deprecate('In the future using a computed property to define tagName will not be permitted. That value will be respected, but changing it will not update the element.', !tagName);
37282
37424
  }
37283
37425
  var classNameBindings = view.classNameBindings;
37284
- var taglessViewWithClassBindings = tagName === "" && (classNameBindings && classNameBindings.length > 0);
37426
+ var taglessViewWithClassBindings = tagName === '' && (classNameBindings && classNameBindings.length > 0);
37285
37427
 
37286
37428
  if (tagName === null || tagName === undefined) {
37287
- tagName = "div";
37429
+ tagName = 'div';
37288
37430
  }
37289
37431
 
37290
- Ember['default'].assert("You cannot use `classNameBindings` on a tag-less view: " + view.toString(), !taglessViewWithClassBindings);
37432
+ Ember['default'].assert('You cannot use `classNameBindings` on a tag-less view: ' + view.toString(), !taglessViewWithClassBindings);
37291
37433
 
37292
37434
  var buffer = view.buffer = this.buffer;
37293
37435
  buffer.reset(tagName, contextualElement);
@@ -37296,7 +37438,7 @@ enifed('ember-views/system/renderer', ['exports', 'ember-metal/core', 'ember-met
37296
37438
  view.beforeRender(buffer);
37297
37439
  }
37298
37440
 
37299
- if (tagName !== "") {
37441
+ if (tagName !== '') {
37300
37442
  if (view.applyAttributesToBuffer) {
37301
37443
  view.applyAttributesToBuffer(buffer);
37302
37444
  }
@@ -37326,24 +37468,27 @@ enifed('ember-views/system/renderer', ['exports', 'ember-metal/core', 'ember-met
37326
37468
  };
37327
37469
 
37328
37470
  EmberRenderer.prototype.childViews = function childViews(view) {
37329
- return view._childViews;
37471
+ if (view._attrNodes && view._childViews) {
37472
+ return view._attrNodes.concat(view._childViews);
37473
+ }
37474
+ return view._attrNodes || view._childViews;
37330
37475
  };
37331
37476
 
37332
37477
  Renderer['default'].prototype.willCreateElement = function (view) {
37333
37478
  if (instrumentation.subscribers.length && view.instrumentDetails) {
37334
- view._instrumentEnd = instrumentation._instrumentStart("render." + view.instrumentName, function viewInstrumentDetails() {
37479
+ view._instrumentEnd = instrumentation._instrumentStart('render.' + view.instrumentName, function viewInstrumentDetails() {
37335
37480
  var details = {};
37336
37481
  view.instrumentDetails(details);
37337
37482
  return details;
37338
37483
  });
37339
37484
  }
37340
37485
  if (view._transitionTo) {
37341
- view._transitionTo("inBuffer");
37486
+ view._transitionTo('inBuffer');
37342
37487
  }
37343
37488
  }; // inBuffer
37344
37489
  Renderer['default'].prototype.didCreateElement = function (view) {
37345
37490
  if (view._transitionTo) {
37346
- view._transitionTo("hasElement");
37491
+ view._transitionTo('hasElement');
37347
37492
  }
37348
37493
  if (view._instrumentEnd) {
37349
37494
  view._instrumentEnd();
@@ -37352,18 +37497,18 @@ enifed('ember-views/system/renderer', ['exports', 'ember-metal/core', 'ember-met
37352
37497
  Renderer['default'].prototype.willInsertElement = function (view) {
37353
37498
  if (this._destinedForDOM) {
37354
37499
  if (view.trigger) {
37355
- view.trigger("willInsertElement");
37500
+ view.trigger('willInsertElement');
37356
37501
  }
37357
37502
  }
37358
37503
  }; // will place into DOM
37359
37504
  Renderer['default'].prototype.didInsertElement = function (view) {
37360
37505
  if (view._transitionTo) {
37361
- view._transitionTo("inDOM");
37506
+ view._transitionTo('inDOM');
37362
37507
  }
37363
37508
 
37364
37509
  if (this._destinedForDOM) {
37365
37510
  if (view.trigger) {
37366
- view.trigger("didInsertElement");
37511
+ view.trigger('didInsertElement');
37367
37512
  }
37368
37513
  }
37369
37514
  }; // inDOM // placed into DOM
@@ -37376,8 +37521,8 @@ enifed('ember-views/system/renderer', ['exports', 'ember-metal/core', 'ember-met
37376
37521
  view._willDestroyElement();
37377
37522
  }
37378
37523
  if (view.trigger) {
37379
- view.trigger("willDestroyElement");
37380
- view.trigger("willClearRender");
37524
+ view.trigger('willDestroyElement');
37525
+ view.trigger('willClearRender');
37381
37526
  }
37382
37527
  }
37383
37528
  };
@@ -37385,7 +37530,7 @@ enifed('ember-views/system/renderer', ['exports', 'ember-metal/core', 'ember-met
37385
37530
  Renderer['default'].prototype.didDestroyElement = function (view) {
37386
37531
  view.element = null;
37387
37532
  if (view._transitionTo) {
37388
- view._transitionTo("preRender");
37533
+ view._transitionTo('preRender');
37389
37534
  }
37390
37535
  }; // element destroyed so view.destroy shouldn't try to remove it removedFromDOM
37391
37536
 
@@ -37434,7 +37579,7 @@ enifed('ember-views/system/utils', ['exports'], function (exports) {
37434
37579
  }
37435
37580
 
37436
37581
  });
37437
- enifed('ember-views/views/bound_component_view', ['exports', 'ember-views/views/metamorph_view', 'ember-metal/streams/utils', 'ember-views/streams/utils', 'ember-htmlbars/system/merge-view-bindings', 'ember-metal/error', 'ember-views/views/container_view'], function (exports, metamorph_view, utils, streams__utils, mergeViewBindings, EmberError, ContainerView) {
37582
+ enifed('ember-views/views/bound_component_view', ['exports', 'ember-views/views/metamorph_view', 'ember-metal/streams/utils', 'ember-views/streams/utils', 'ember-htmlbars/system/merge-view-bindings', 'ember-metal/error', 'ember-views/views/container_view', 'ember-views/views/view'], function (exports, metamorph_view, utils, streams__utils, mergeViewBindings, EmberError, ContainerView, View) {
37438
37583
 
37439
37584
  'use strict';
37440
37585
 
@@ -37446,24 +37591,25 @@ enifed('ember-views/views/bound_component_view', ['exports', 'ember-views/views/
37446
37591
  exports['default'] = ContainerView['default'].extend(metamorph_view._Metamorph, {
37447
37592
  init: function () {
37448
37593
  this._super.apply(this, arguments);
37449
- var componentNameStream = this._boundComponentOptions.componentNameStream;
37450
- var container = this.container;
37451
- this.componentClassStream = utils.chain(componentNameStream, function () {
37452
- return streams__utils.readComponentFactory(componentNameStream, container);
37453
- });
37594
+ this.componentNameStream = this._boundComponentOptions.componentNameStream;
37454
37595
 
37455
- utils.subscribe(this.componentClassStream, this._updateBoundChildComponent, this);
37596
+ utils.subscribe(this.componentNameStream, this._updateBoundChildComponent, this);
37456
37597
  this._updateBoundChildComponent();
37457
37598
  },
37458
37599
  willDestroy: function () {
37459
- utils.unsubscribe(this.componentClassStream, this._updateBoundChildComponent, this);
37600
+ utils.unsubscribe(this.componentNameStream, this._updateBoundChildComponent, this);
37460
37601
  this._super.apply(this, arguments);
37461
37602
  },
37462
37603
  _updateBoundChildComponent: function () {
37463
37604
  this.replace(0, 1, [this._createNewComponent()]);
37464
37605
  },
37465
37606
  _createNewComponent: function () {
37466
- var componentClass = utils.read(this.componentClassStream);
37607
+ var componentName = utils.read(this.componentNameStream);
37608
+ if (!componentName) {
37609
+ return this.createChildView(View['default']);
37610
+ }
37611
+
37612
+ var componentClass = streams__utils.readComponentFactory(componentName, this.container);
37467
37613
  if (!componentClass) {
37468
37614
  throw new EmberError['default']("HTMLBars error: Could not find component named \"" + utils.read(this._boundComponentOptions.componentNameStream) + "\".");
37469
37615
  }
@@ -37472,7 +37618,7 @@ enifed('ember-views/views/bound_component_view', ['exports', 'ember-views/views/
37472
37618
 
37473
37619
  var prop;
37474
37620
  for (prop in hash) {
37475
- if (prop === "_boundComponentOptions" || prop === "componentClassStream") {
37621
+ if (prop === "_boundComponentOptions" || prop === "componentNameStream") {
37476
37622
  continue;
37477
37623
  }
37478
37624
  hashForComponent[prop] = hash[prop];
@@ -37767,27 +37913,25 @@ enifed('ember-views/views/collection_view', ['exports', 'ember-metal/core', 'emb
37767
37913
 
37768
37914
  view = this.createChildView(itemViewClass, itemViewProps);
37769
37915
 
37770
-
37771
- if (this.blockParams > 1) {
37772
- view._blockArguments = [item, view.getStream("_view.contentIndex")];
37773
- } else if (this.blockParams === 1) {
37774
- view._blockArguments = [item];
37775
- }
37776
-
37916
+ if (this.blockParams > 0) {
37917
+ view._blockArguments = [item];
37918
+ }
37919
+ if (this.blockParams > 1) {
37920
+ view._blockArguments.push(view.getStream("_view.contentIndex"));
37921
+ }
37922
+
37777
37923
  addedViews.push(view);
37778
37924
  }
37779
37925
 
37780
37926
  this.replace(start, 0, addedViews);
37781
37927
 
37782
-
37783
- if (this.blockParams > 1) {
37784
- var childViews = this._childViews;
37785
- for (idx = start + added; idx < len; idx++) {
37786
- view = childViews[idx];
37787
- property_set.set(view, "contentIndex", idx);
37788
- }
37928
+ if (this.blockParams > 1) {
37929
+ var childViews = this._childViews;
37930
+ for (idx = start + added; idx < len; idx++) {
37931
+ view = childViews[idx];
37932
+ property_set.set(view, "contentIndex", idx);
37789
37933
  }
37790
-
37934
+ }
37791
37935
  } else {
37792
37936
  emptyView = property_get.get(this, "emptyView");
37793
37937
 
@@ -37906,19 +38050,18 @@ enifed('ember-views/views/component', ['exports', 'ember-metal/core', 'ember-vie
37906
38050
  @deprecated
37907
38051
  @property template
37908
38052
  */
37909
- template: computed.computed({
38053
+ template: computed.computed("templateName", {
37910
38054
  get: function () {
37911
38055
  var templateName = property_get.get(this, "templateName");
37912
38056
  var template = this.templateForName(templateName, "template");
37913
38057
 
37914
38058
  Ember['default'].assert("You specified the templateName " + templateName + " for " + this + ", but it did not exist.", !templateName || !!template);
37915
-
37916
38059
  return template || property_get.get(this, "defaultTemplate");
37917
38060
  },
37918
38061
  set: function (key, value) {
37919
38062
  return value;
37920
38063
  }
37921
- }).property("templateName"),
38064
+ }),
37922
38065
 
37923
38066
  /**
37924
38067
  Specifying a components `templateName` is deprecated without also
@@ -37958,10 +38101,10 @@ enifed('ember-views/views/component', ['exports', 'ember-metal/core', 'ember-vie
37958
38101
  @type Ember.Controller
37959
38102
  @default null
37960
38103
  */
37961
- targetObject: computed.computed(function (key) {
38104
+ targetObject: computed.computed("_parentView", function (key) {
37962
38105
  var parentView = this._parentView;
37963
38106
  return parentView ? property_get.get(parentView, "controller") : null;
37964
- }).property("_parentView"),
38107
+ }),
37965
38108
 
37966
38109
  /**
37967
38110
  Triggers a named action on the controller context where the component is used if
@@ -38058,8 +38201,8 @@ enifed('ember-views/views/component', ['exports', 'ember-metal/core', 'ember-vie
38058
38201
  },
38059
38202
 
38060
38203
  send: function (actionName) {
38061
- for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
38062
- args[_key - 1] = arguments[_key];
38204
+ for (var _len2 = arguments.length, args = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
38205
+ args[_key2 - 1] = arguments[_key2];
38063
38206
  }
38064
38207
 
38065
38208
  var target;
@@ -38743,7 +38886,7 @@ enifed('ember-views/views/metamorph_view', ['exports', 'ember-metal/core', 'embe
38743
38886
  exports._Metamorph = _Metamorph;
38744
38887
 
38745
38888
  });
38746
- enifed('ember-views/views/select', ['exports', 'ember-metal/enumerable_utils', 'ember-metal/property_get', 'ember-metal/property_set', 'ember-views/views/view', 'ember-views/views/collection_view', 'ember-metal/utils', 'ember-metal/is_none', 'ember-metal/computed', 'ember-runtime/system/native_array', 'ember-metal/mixin', 'ember-metal/properties', 'ember-metal/run_loop', 'ember-htmlbars/templates/select'], function (exports, enumerable_utils, property_get, property_set, View, CollectionView, utils, isNone, computed, native_array, mixin, properties, run, htmlbarsTemplate) {
38889
+ enifed('ember-views/views/select', ['exports', 'ember-metal/enumerable_utils', 'ember-metal/property_get', 'ember-metal/property_set', 'ember-views/views/view', 'ember-views/views/collection_view', 'ember-metal/utils', 'ember-metal/is_none', 'ember-metal/computed', 'ember-runtime/system/native_array', 'ember-metal/mixin', 'ember-metal/properties', 'ember-htmlbars/templates/select', 'ember-htmlbars/templates/select-option'], function (exports, enumerable_utils, property_get, property_set, View, CollectionView, utils, isNone, computed, native_array, mixin, properties, htmlbarsTemplate, selectOptionDefaultTemplate) {
38747
38890
 
38748
38891
  'use strict';
38749
38892
 
@@ -38754,27 +38897,13 @@ enifed('ember-views/views/select', ['exports', 'ember-metal/enumerable_utils', '
38754
38897
 
38755
38898
  var defaultTemplate = htmlbarsTemplate['default'];
38756
38899
 
38757
- var selectOptionDefaultTemplate = {
38758
- isHTMLBars: true,
38759
- revision: "Ember@1.12.0-beta.1",
38760
- render: function (context, env, contextualElement) {
38761
- var lazyValue = context.getStream("view.label");
38762
-
38763
- lazyValue.subscribe(context._wrapAsScheduled(function () {
38764
- run['default'].scheduleOnce("render", context, "rerender");
38765
- }));
38766
-
38767
- return lazyValue.value();
38768
- }
38769
- };
38770
-
38771
38900
  var SelectOption = View['default'].extend({
38772
38901
  instrumentDisplay: "Ember.SelectOption",
38773
38902
 
38774
38903
  tagName: "option",
38775
38904
  attributeBindings: ["value", "selected"],
38776
38905
 
38777
- defaultTemplate: selectOptionDefaultTemplate,
38906
+ defaultTemplate: selectOptionDefaultTemplate['default'],
38778
38907
 
38779
38908
  init: function () {
38780
38909
  this.labelPathDidChange();
@@ -38839,7 +38968,7 @@ enifed('ember-views/views/select', ['exports', 'ember-metal/enumerable_utils', '
38839
38968
  Example:
38840
38969
 
38841
38970
  ```javascript
38842
- App.ApplicationController = Ember.ObjectController.extend({
38971
+ App.ApplicationController = Ember.Controller.extend({
38843
38972
  names: ["Yehuda", "Tom"]
38844
38973
  });
38845
38974
  ```
@@ -38861,7 +38990,7 @@ enifed('ember-views/views/select', ['exports', 'ember-metal/enumerable_utils', '
38861
38990
  `value` property:
38862
38991
 
38863
38992
  ```javascript
38864
- App.ApplicationController = Ember.ObjectController.extend({
38993
+ App.ApplicationController = Ember.Controller.extend({
38865
38994
  selectedName: 'Tom',
38866
38995
  names: ["Yehuda", "Tom"]
38867
38996
  });
@@ -38898,7 +39027,7 @@ enifed('ember-views/views/select', ['exports', 'ember-metal/enumerable_utils', '
38898
39027
  element's text. Both paths must reference each object itself as `content`:
38899
39028
 
38900
39029
  ```javascript
38901
- App.ApplicationController = Ember.ObjectController.extend({
39030
+ App.ApplicationController = Ember.Controller.extend({
38902
39031
  programmers: [
38903
39032
  {firstName: "Yehuda", id: 1},
38904
39033
  {firstName: "Tom", id: 2}
@@ -38926,7 +39055,7 @@ enifed('ember-views/views/select', ['exports', 'ember-metal/enumerable_utils', '
38926
39055
  can be bound to a property on another object:
38927
39056
 
38928
39057
  ```javascript
38929
- App.ApplicationController = Ember.ObjectController.extend({
39058
+ App.ApplicationController = Ember.Controller.extend({
38930
39059
  programmers: [
38931
39060
  {firstName: "Yehuda", id: 1},
38932
39061
  {firstName: "Tom", id: 2}
@@ -38969,7 +39098,7 @@ enifed('ember-views/views/select', ['exports', 'ember-metal/enumerable_utils', '
38969
39098
  var yehuda = {firstName: "Yehuda", id: 1, bff4eva: 'tom'}
38970
39099
  var tom = {firstName: "Tom", id: 2, bff4eva: 'yehuda'};
38971
39100
 
38972
- App.ApplicationController = Ember.ObjectController.extend({
39101
+ App.ApplicationController = Ember.Controller.extend({
38973
39102
  selectedPerson: tom,
38974
39103
  programmers: [ yehuda, tom ]
38975
39104
  });
@@ -39003,7 +39132,7 @@ enifed('ember-views/views/select', ['exports', 'ember-metal/enumerable_utils', '
39003
39132
  results in there being no `<option>` with a `selected` attribute:
39004
39133
 
39005
39134
  ```javascript
39006
- App.ApplicationController = Ember.ObjectController.extend({
39135
+ App.ApplicationController = Ember.Controller.extend({
39007
39136
  selectedProgrammer: null,
39008
39137
  programmers: ["Yehuda", "Tom"]
39009
39138
  });
@@ -39032,7 +39161,7 @@ enifed('ember-views/views/select', ['exports', 'ember-metal/enumerable_utils', '
39032
39161
  with the `prompt` option:
39033
39162
 
39034
39163
  ```javascript
39035
- App.ApplicationController = Ember.ObjectController.extend({
39164
+ App.ApplicationController = Ember.Controller.extend({
39036
39165
  selectedProgrammer: null,
39037
39166
  programmers: [ "Yehuda", "Tom" ]
39038
39167
  });
@@ -39635,14 +39764,8 @@ enifed('ember-views/views/states/has_element', ['exports', 'ember-views/views/st
39635
39764
  if (view._root._morph && !view._elementInserted) {
39636
39765
  throw new EmberError['default']("Something you did caused a view to re-render after it rendered but before it was inserted into the DOM.");
39637
39766
  }
39638
- // TODO: should be scheduled with renderer
39639
- run['default'].scheduleOnce("render", function () {
39640
- if (view.isDestroying) {
39641
- return;
39642
- }
39643
39767
 
39644
- view._renderer.renderTree(view, view._parentView);
39645
- });
39768
+ run['default'].scheduleOnce("render", view, "_rerender");
39646
39769
  },
39647
39770
 
39648
39771
  // once the view is already in the DOM, destroying it removes it
@@ -39719,12 +39842,12 @@ enifed('ember-views/views/states/in_buffer', ['exports', 'ember-views/views/stat
39719
39842
 
39720
39843
  appendAttr: function (view, attrNode) {
39721
39844
  var buffer = view.buffer;
39722
- var _childViews = view._childViews;
39845
+ var _attrNodes = view._attrNodes;
39723
39846
 
39724
- if (!_childViews.length) {
39725
- _childViews = view._childViews = _childViews.slice();
39847
+ if (!_attrNodes.length) {
39848
+ _attrNodes = view._attrNodes = _attrNodes.slice();
39726
39849
  }
39727
- _childViews.push(attrNode);
39850
+ _attrNodes.push(attrNode);
39728
39851
 
39729
39852
  if (!attrNode._morph) {
39730
39853
  Ember.assert("bound attributes that do not have a morph must have a buffer", !!buffer);
@@ -39772,12 +39895,12 @@ enifed('ember-views/views/states/in_dom', ['exports', 'ember-metal/platform/crea
39772
39895
  },
39773
39896
 
39774
39897
  appendAttr: function (view, attrNode) {
39775
- var _childViews = view._childViews;
39898
+ var _attrNodes = view._attrNodes;
39776
39899
 
39777
- if (!_childViews.length) {
39778
- _childViews = view._childViews = _childViews.slice();
39900
+ if (!_attrNodes.length) {
39901
+ _attrNodes = view._attrNodes = _attrNodes.slice();
39779
39902
  }
39780
- _childViews.push(attrNode);
39903
+ _attrNodes.push(attrNode);
39781
39904
 
39782
39905
  attrNode._parentView = view;
39783
39906
  view.renderer.appendAttrTo(attrNode, view.element, attrNode.attrName);
@@ -39969,7 +40092,7 @@ enifed('ember-views/views/text_field', ['exports', 'ember-metal/core', 'ember-me
39969
40092
  });
39970
40093
 
39971
40094
  });
39972
- enifed('ember-views/views/view', ['exports', 'ember-metal/core', 'ember-runtime/mixins/evented', 'ember-runtime/system/object', 'ember-metal/error', 'ember-metal/property_get', 'ember-metal/run_loop', 'ember-metal/observer', 'ember-metal/utils', 'ember-metal/computed', 'ember-metal/mixin', 'ember-metal/deprecate_property', 'ember-metal/property_events', 'ember-views/system/jquery', 'ember-views/system/ext', 'ember-views/views/core_view', 'ember-views/mixins/view_stream_support', 'ember-views/mixins/view_keyword_support', 'ember-views/mixins/view_context_support', 'ember-views/mixins/view_child_views_support', 'ember-views/mixins/view_state_support', 'ember-views/mixins/template_rendering_support', 'ember-views/mixins/class_names_support', 'ember-views/mixins/attribute_bindings_support', 'ember-views/mixins/legacy_view_support', 'ember-views/mixins/instrumentation_support', 'ember-views/mixins/visibility_support'], function (exports, Ember, Evented, EmberObject, EmberError, property_get, run, observer, utils, computed, mixin, deprecate_property, property_events, jQuery, __dep13__, CoreView, ViewStreamSupport, ViewKeywordSupport, ViewContextSupport, ViewChildViewsSupport, ViewStateSupport, TemplateRenderingSupport, ClassNamesSupport, AttributeBindingsSupport, LegacyViewSupport, InstrumentationSupport, VisibilitySupport) {
40095
+ enifed('ember-views/views/view', ['exports', 'ember-metal/core', 'ember-runtime/mixins/evented', 'ember-runtime/system/object', 'ember-metal/error', 'ember-metal/property_get', 'ember-metal/run_loop', 'ember-metal/observer', 'ember-metal/utils', 'ember-metal/computed', 'ember-metal/mixin', 'ember-metal/deprecate_property', 'ember-metal/property_events', 'ember-views/system/jquery', 'ember-views/system/ext', 'ember-views/views/core_view', 'ember-views/mixins/view_stream_support', 'ember-views/mixins/view_keyword_support', 'ember-views/mixins/view_context_support', 'ember-views/mixins/view_child_views_support', 'ember-views/mixins/view_state_support', 'ember-views/mixins/template_rendering_support', 'ember-views/mixins/class_names_support', 'ember-views/mixins/attribute_bindings_support', 'ember-views/mixins/legacy_view_support', 'ember-views/mixins/instrumentation_support', 'ember-views/mixins/visibility_support'], function (exports, Ember, Evented, EmberObject, EmberError, property_get, run, ember_metal__observer, utils, computed, mixin, deprecate_property, property_events, jQuery, __dep13__, CoreView, ViewStreamSupport, ViewKeywordSupport, ViewContextSupport, ViewChildViewsSupport, ViewStateSupport, TemplateRenderingSupport, ClassNamesSupport, AttributeBindingsSupport, LegacyViewSupport, InstrumentationSupport, VisibilitySupport) {
39973
40096
 
39974
40097
  'use strict';
39975
40098
 
@@ -40603,6 +40726,14 @@ enifed('ember-views/views/view', ['exports', 'ember-metal/core', 'ember-runtime/
40603
40726
  @class View
40604
40727
  @namespace Ember
40605
40728
  @extends Ember.CoreView
40729
+ @uses Ember.ViewContextSupport
40730
+ @uses Ember.ViewChildViewsSupport
40731
+ @uses Ember.TemplateRenderingSupport
40732
+ @uses Ember.ClassNamesSupport
40733
+ @uses Ember.AttributeBindingsSupport
40734
+ @uses Ember.LegacyViewSupport
40735
+ @uses Ember.InstrumentationSupport
40736
+ @uses Ember.VisibilitySupport
40606
40737
  */
40607
40738
  // jscs:disable validateIndentation
40608
40739
  var View = CoreView['default'].extend(ViewStreamSupport['default'], ViewKeywordSupport['default'], ViewContextSupport['default'], ViewChildViewsSupport['default'], ViewStateSupport['default'], TemplateRenderingSupport['default'], ClassNamesSupport['default'], AttributeBindingsSupport['default'], LegacyViewSupport['default'], InstrumentationSupport['default'], VisibilitySupport['default'], {
@@ -40675,15 +40806,21 @@ enifed('ember-views/views/view', ['exports', 'ember-metal/core', 'ember-runtime/
40675
40806
  on a subclass.
40676
40807
  @property layout
40677
40808
  @type Function
40678
- */
40679
- layout: computed.computed(function (key) {
40680
- var layoutName = property_get.get(this, "layoutName");
40681
- var layout = this.templateForName(layoutName, "layout");
40809
+ */
40810
+ layout: computed.computed("layoutName", {
40811
+ get: function (key) {
40812
+ var layoutName = property_get.get(this, "layoutName");
40813
+ var layout = this.templateForName(layoutName, "layout");
40682
40814
 
40683
- Ember['default'].assert("You specified the layoutName " + layoutName + " for " + this + ", but it did not exist.", !layoutName || !!layout);
40815
+ Ember['default'].assert("You specified the layoutName " + layoutName + " for " + this + ", but it did not exist.", !layoutName || !!layout);
40684
40816
 
40685
- return layout || property_get.get(this, "defaultLayout");
40686
- }).property("layoutName"),
40817
+ return layout || property_get.get(this, "defaultLayout");
40818
+ },
40819
+
40820
+ set: function (key, value) {
40821
+ return value;
40822
+ }
40823
+ }),
40687
40824
 
40688
40825
  _yield: function (context, options, morph) {
40689
40826
  var template = property_get.get(this, "template");
@@ -40832,6 +40969,19 @@ enifed('ember-views/views/view', ['exports', 'ember-metal/core', 'ember-runtime/
40832
40969
  return this.currentState.rerender(this);
40833
40970
  },
40834
40971
 
40972
+ /*
40973
+ * @private
40974
+ *
40975
+ * @method _rerender
40976
+ */
40977
+ _rerender: function () {
40978
+ if (this.isDestroying || this.isDestroyed) {
40979
+ return;
40980
+ }
40981
+
40982
+ this._renderer.renderTree(this, this._parentView);
40983
+ },
40984
+
40835
40985
  /**
40836
40986
  Given a property name, returns a dasherized version of that
40837
40987
  property name if the property evaluates to a non-falsy value.
@@ -41022,7 +41172,17 @@ enifed('ember-views/views/view', ['exports', 'ember-metal/core', 'ember-runtime/
41022
41172
  ```
41023
41173
  If not manually set a default value will be provided by the framework.
41024
41174
  Once rendered an element's `elementId` is considered immutable and you
41025
- should never change it.
41175
+ should never change it. If you need to compute a dynamic value for the
41176
+ `elementId`, you should do this when the component or element is being
41177
+ instantiated:
41178
+ ```javascript
41179
+ export default Ember.Component.extend({
41180
+ setElementId: function() {
41181
+ var index = this.get('index');
41182
+ this.set('elementId', 'component-id' + index);
41183
+ }.on('init')
41184
+ });
41185
+ ```
41026
41186
  @property elementId
41027
41187
  @type String
41028
41188
  */
@@ -41301,10 +41461,10 @@ enifed('ember-views/views/view', ['exports', 'ember-metal/core', 'ember-runtime/
41301
41461
 
41302
41462
  var scheduledObserver = this._wrapAsScheduled(observer);
41303
41463
 
41304
- observer.addObserver(root, path, target, scheduledObserver);
41464
+ ember_metal__observer.addObserver(root, path, target, scheduledObserver);
41305
41465
 
41306
41466
  this.one("willClearRender", function () {
41307
- observer.removeObserver(root, path, target, scheduledObserver);
41467
+ ember_metal__observer.removeObserver(root, path, target, scheduledObserver);
41308
41468
  });
41309
41469
  },
41310
41470