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

Sign up to get free protection for your applications and to get access to all the features.
@@ -6,7 +6,7 @@
6
6
  * Portions Copyright 2008-2011 Apple Inc. All rights reserved.
7
7
  * @license Licensed under MIT license
8
8
  * See https://raw.github.com/emberjs/ember.js/master/LICENSE
9
- * @version 2.3.0-beta.1
9
+ * @version 2.3.0-beta.3
10
10
  */
11
11
 
12
12
  var enifed, requireModule, require, requirejs, Ember;
@@ -1189,9 +1189,11 @@ enifed('backburner', ['exports', 'backburner/utils', 'backburner/platform', 'bac
1189
1189
  clearTimeout(item[2]);
1190
1190
  }
1191
1191
  });
1192
- enifed('container/container', ['exports', 'ember-metal/core', 'ember-metal/debug', 'ember-metal/dictionary', 'ember-metal/features', 'container/owner', 'ember-runtime/mixins/container_proxy'], function (exports, _emberMetalCore, _emberMetalDebug, _emberMetalDictionary, _emberMetalFeatures, _containerOwner, _emberRuntimeMixinsContainer_proxy) {
1192
+ enifed('container/container', ['exports', 'ember-metal/core', 'ember-metal/debug', 'ember-metal/dictionary', 'ember-metal/features', 'container/owner', 'ember-runtime/mixins/container_proxy', 'ember-metal/symbol'], function (exports, _emberMetalCore, _emberMetalDebug, _emberMetalDictionary, _emberMetalFeatures, _containerOwner, _emberRuntimeMixinsContainer_proxy, _emberMetalSymbol) {
1193
1193
  'use strict';
1194
1194
 
1195
+ var CONTAINER_OVERRIDE = _emberMetalSymbol.default('CONTAINER_OVERRIDE');
1196
+
1195
1197
  /**
1196
1198
  A container used to instantiate and cache objects.
1197
1199
 
@@ -1213,6 +1215,7 @@ enifed('container/container', ['exports', 'ember-metal/core', 'ember-metal/debug
1213
1215
  this.validationCache = _emberMetalDictionary.default(options && options.validationCache ? options.validationCache : null);
1214
1216
 
1215
1217
  this._fakeContainerToInject = _emberRuntimeMixinsContainer_proxy.buildFakeContainerWithDeprecations(this);
1218
+ this[CONTAINER_OVERRIDE] = undefined;
1216
1219
  }
1217
1220
 
1218
1221
  Container.prototype = {
@@ -1328,6 +1331,19 @@ enifed('container/container', ['exports', 'ember-metal/core', 'ember-metal/debug
1328
1331
  } else {
1329
1332
  resetCache(this);
1330
1333
  }
1334
+ },
1335
+
1336
+ /**
1337
+ Returns an object that can be used to provide an owner to a
1338
+ manually created instance.
1339
+ @private
1340
+ @method ownerInjection
1341
+ @returns { Object }
1342
+ */
1343
+ ownerInjection: function () {
1344
+ var _ref;
1345
+
1346
+ return _ref = {}, _ref[_containerOwner.OWNER] = this.owner, _ref;
1331
1347
  }
1332
1348
  };
1333
1349
 
@@ -1510,7 +1526,9 @@ enifed('container/container', ['exports', 'ember-metal/core', 'ember-metal/debug
1510
1526
 
1511
1527
  // TODO - remove when Ember reaches v3.0.0
1512
1528
 
1513
- injectDeprecatedContainer(obj, container);
1529
+ if (!Object.isFrozen(obj) && 'container' in obj) {
1530
+ injectDeprecatedContainer(obj, container);
1531
+ }
1514
1532
  }
1515
1533
 
1516
1534
  return obj;
@@ -1524,7 +1542,15 @@ enifed('container/container', ['exports', 'ember-metal/core', 'ember-metal/debug
1524
1542
  enumerable: false,
1525
1543
  get: function () {
1526
1544
  _emberMetalDebug.deprecate('Using the injected `container` is deprecated. Please use the `getOwner` helper instead to access the owner of this object.', false, { id: 'ember-application.injected-container', until: '3.0.0', url: 'http://emberjs.com/deprecations/v2.x#toc_injected-container-access' });
1527
- return container;
1545
+ return this[CONTAINER_OVERRIDE] || container;
1546
+ },
1547
+
1548
+ set: function (value) {
1549
+ _emberMetalDebug.deprecate('Providing the `container` property to ' + this + ' is deprecated. Please use `Ember.setOwner` or `owner.ownerInjection()` instead to provide an owner to the instance being created.', false, { id: 'ember-application.injected-container', until: '3.0.0', url: 'http://emberjs.com/deprecations/v2.x#toc_injected-container-access' });
1550
+
1551
+ this[CONTAINER_OVERRIDE] = value;
1552
+
1553
+ return value;
1528
1554
  }
1529
1555
  });
1530
1556
  }
@@ -1663,7 +1689,13 @@ enifed('container/registry', ['exports', 'ember-metal/debug', 'ember-metal/dicti
1663
1689
  function Registry(options) {
1664
1690
  this.fallback = options && options.fallback ? options.fallback : null;
1665
1691
 
1666
- this.resolver = options && options.resolver ? options.resolver : function () {};
1692
+ if (options && options.resolver) {
1693
+ this.resolver = options.resolver;
1694
+
1695
+ if (typeof this.resolver === 'function') {
1696
+ deprecateResolverFunction(this);
1697
+ }
1698
+ }
1667
1699
 
1668
1700
  this.registrations = _emberMetalDictionary.default(options && options.registrations ? options.registrations : null);
1669
1701
 
@@ -1690,9 +1722,10 @@ enifed('container/registry', ['exports', 'ember-metal/debug', 'ember-metal/dicti
1690
1722
  fallback: null,
1691
1723
 
1692
1724
  /**
1693
- @private
1725
+ An object that has a `resolve` method that resolves a name.
1726
+ @private
1694
1727
  @property resolver
1695
- @type function
1728
+ @type Resolver
1696
1729
  */
1697
1730
  resolver: null,
1698
1731
 
@@ -1874,7 +1907,13 @@ enifed('container/registry', ['exports', 'ember-metal/debug', 'ember-metal/dicti
1874
1907
  @return {string} described fullName
1875
1908
  */
1876
1909
  describe: function (fullName) {
1877
- return fullName;
1910
+ if (this.resolver && this.resolver.lookupDescription) {
1911
+ return this.resolver.lookupDescription(fullName);
1912
+ } else if (this.fallback) {
1913
+ return this.fallback.describe(fullName);
1914
+ } else {
1915
+ return fullName;
1916
+ }
1878
1917
  },
1879
1918
 
1880
1919
  /**
@@ -1885,7 +1924,13 @@ enifed('container/registry', ['exports', 'ember-metal/debug', 'ember-metal/dicti
1885
1924
  @return {string} normalized fullName
1886
1925
  */
1887
1926
  normalizeFullName: function (fullName) {
1888
- return fullName;
1927
+ if (this.resolver && this.resolver.normalize) {
1928
+ return this.resolver.normalize(fullName);
1929
+ } else if (this.fallback) {
1930
+ return this.fallback.normalizeFullName(fullName);
1931
+ } else {
1932
+ return fullName;
1933
+ }
1889
1934
  },
1890
1935
 
1891
1936
  /**
@@ -1907,7 +1952,13 @@ enifed('container/registry', ['exports', 'ember-metal/debug', 'ember-metal/dicti
1907
1952
  @return {function} toString function
1908
1953
  */
1909
1954
  makeToString: function (factory, fullName) {
1910
- return factory.toString();
1955
+ if (this.resolver && this.resolver.makeToString) {
1956
+ return this.resolver.makeToString(factory, fullName);
1957
+ } else if (this.fallback) {
1958
+ return this.fallback.makeToString(factory, fullName);
1959
+ } else {
1960
+ return factory.toString();
1961
+ }
1911
1962
  },
1912
1963
 
1913
1964
  /**
@@ -2198,7 +2249,7 @@ enifed('container/registry', ['exports', 'ember-metal/debug', 'ember-metal/dicti
2198
2249
  fallbackKnown = this.fallback.knownForType(type);
2199
2250
  }
2200
2251
 
2201
- if (this.resolver.knownForType) {
2252
+ if (this.resolver && this.resolver.knownForType) {
2202
2253
  resolverKnown = this.resolver.knownForType(type);
2203
2254
  }
2204
2255
 
@@ -2278,6 +2329,13 @@ enifed('container/registry', ['exports', 'ember-metal/debug', 'ember-metal/dicti
2278
2329
  }
2279
2330
  };
2280
2331
 
2332
+ function deprecateResolverFunction(registry) {
2333
+ _emberMetalDebug.deprecate('Passing a `resolver` function into a Registry is deprecated. Please pass in a Resolver object with a `resolve` method.', false, { id: 'ember-application.registry-resolver-as-function', until: '3.0.0', url: 'http://emberjs.com/deprecations/v2.x#toc_registry-resolver-as-function' });
2334
+ registry.resolver = {
2335
+ resolve: registry.resolver
2336
+ };
2337
+ }
2338
+
2281
2339
  function resolve(registry, normalizedName) {
2282
2340
  var cached = registry._resolveCache[normalizedName];
2283
2341
  if (cached) {
@@ -2287,7 +2345,13 @@ enifed('container/registry', ['exports', 'ember-metal/debug', 'ember-metal/dicti
2287
2345
  return;
2288
2346
  }
2289
2347
 
2290
- var resolved = registry.resolver(normalizedName) || registry.registrations[normalizedName];
2348
+ var resolved = undefined;
2349
+
2350
+ if (registry.resolver) {
2351
+ resolved = registry.resolver.resolve(normalizedName);
2352
+ }
2353
+
2354
+ resolved = resolved || registry.registrations[normalizedName];
2291
2355
 
2292
2356
  if (resolved) {
2293
2357
  registry._resolveCache[normalizedName] = resolved;
@@ -2965,6 +3029,8 @@ enifed('dom-helper/prop', ['exports'], function (exports) {
2965
3029
  }
2966
3030
  });
2967
3031
  enifed("dom-helper", ["exports", "htmlbars-runtime/morph", "morph-attr", "dom-helper/build-html-dom", "dom-helper/classes", "dom-helper/prop"], function (exports, _htmlbarsRuntimeMorph, _morphAttr, _domHelperBuildHtmlDom, _domHelperClasses, _domHelperProp) {
3032
+ /*globals module, URL*/
3033
+
2968
3034
  "use strict";
2969
3035
 
2970
3036
  var doc = typeof document === 'undefined' ? false : document;
@@ -3115,6 +3181,8 @@ enifed("dom-helper", ["exports", "htmlbars-runtime/morph", "morph-attr", "dom-he
3115
3181
  }
3116
3182
  this.canClone = canClone;
3117
3183
  this.namespace = null;
3184
+
3185
+ installEnvironmentSpecificMethods(this);
3118
3186
  }
3119
3187
 
3120
3188
  var prototype = DOMHelper.prototype;
@@ -3514,17 +3582,57 @@ enifed("dom-helper", ["exports", "htmlbars-runtime/morph", "morph-attr", "dom-he
3514
3582
  return fragment;
3515
3583
  };
3516
3584
 
3585
+ var nodeURL;
3517
3586
  var parsingNode;
3518
3587
 
3519
- // Used to determine whether a URL needs to be sanitized.
3520
- prototype.protocolForURL = function (url) {
3588
+ function installEnvironmentSpecificMethods(domHelper) {
3589
+ var protocol = browserProtocolForURL.call(domHelper, 'foobar:baz');
3590
+
3591
+ // Test to see if our DOM implementation parses
3592
+ // and normalizes URLs.
3593
+ if (protocol === 'foobar:') {
3594
+ // Swap in the method that doesn't do this test now that
3595
+ // we know it works.
3596
+ domHelper.protocolForURL = browserProtocolForURL;
3597
+ } else if (typeof URL === 'object') {
3598
+ // URL globally provided, likely from FastBoot's sandbox
3599
+ nodeURL = URL;
3600
+ domHelper.protocolForURL = nodeProtocolForURL;
3601
+ } else if (typeof module === 'object' && typeof module.require === 'function') {
3602
+ // Otherwise, we need to fall back to our own URL parsing.
3603
+ // Global `require` is shadowed by Ember's loader so we have to use the fully
3604
+ // qualified `module.require`.
3605
+ nodeURL = module.require('url');
3606
+ domHelper.protocolForURL = nodeProtocolForURL;
3607
+ } else {
3608
+ throw new Error("DOM Helper could not find valid URL parsing mechanism");
3609
+ }
3610
+
3611
+ // A SimpleDOM-specific extension that allows us to place HTML directly
3612
+ // into the DOM tree, for when the output target is always serialized HTML.
3613
+ if (domHelper.document.createRawHTMLSection) {
3614
+ domHelper.setMorphHTML = nodeSetMorphHTML;
3615
+ }
3616
+ }
3617
+
3618
+ function nodeSetMorphHTML(morph, html) {
3619
+ var section = this.document.createRawHTMLSection(html);
3620
+ morph.setNode(section);
3621
+ }
3622
+
3623
+ function browserProtocolForURL(url) {
3521
3624
  if (!parsingNode) {
3522
3625
  parsingNode = this.document.createElement('a');
3523
3626
  }
3524
3627
 
3525
3628
  parsingNode.href = url;
3526
3629
  return parsingNode.protocol;
3527
- };
3630
+ }
3631
+
3632
+ function nodeProtocolForURL(url) {
3633
+ var protocol = nodeURL.parse(url).protocol;
3634
+ return protocol === null ? ':' : protocol;
3635
+ }
3528
3636
 
3529
3637
  exports.default = DOMHelper;
3530
3638
  });
@@ -3604,8 +3712,6 @@ enifed('ember-application/system/application-instance', ['exports', 'ember-metal
3604
3712
  var registry = this.__registry__ = new _containerRegistry.default({
3605
3713
  fallback: applicationRegistry
3606
3714
  });
3607
- registry.normalizeFullName = applicationRegistry.normalizeFullName;
3608
- registry.makeToString = applicationRegistry.makeToString;
3609
3715
 
3610
3716
  // Create a per-instance container from the instance's registry
3611
3717
  this.__container__ = registry.container({ owner: this });
@@ -3780,6 +3886,19 @@ enifed('ember-application/system/application-instance', ['exports', 'ember-metal
3780
3886
  willDestroy: function () {
3781
3887
  this._super.apply(this, arguments);
3782
3888
  _emberMetalRun_loop.default(this.__container__, 'destroy');
3889
+ },
3890
+
3891
+ /**
3892
+ Unregister a factory.
3893
+ Overrides `RegistryProxy#unregister` in order to clear any cached instances
3894
+ of the unregistered factory.
3895
+ @public
3896
+ @method unregister
3897
+ @param {String} fullName
3898
+ */
3899
+ unregister: function (fullName) {
3900
+ this.__container__.reset(fullName);
3901
+ this._super.apply(this, arguments);
3783
3902
  }
3784
3903
  });
3785
3904
 
@@ -5180,13 +5299,11 @@ enifed('ember-application/system/application', ['exports', 'dag-map', 'container
5180
5299
  @public
5181
5300
  */
5182
5301
  buildRegistry: function (namespace) {
5183
- var registry = new _containerRegistry.default();
5302
+ var registry = new _containerRegistry.default({
5303
+ resolver: resolverFor(namespace)
5304
+ });
5184
5305
 
5185
5306
  registry.set = _emberMetalProperty_set.set;
5186
- registry.resolver = resolverFor(namespace);
5187
- registry.normalizeFullName = registry.resolver.normalize;
5188
- registry.describe = registry.resolver.describe;
5189
- registry.makeToString = registry.resolver.makeToString;
5190
5307
 
5191
5308
  registry.optionsForType('component', { singleton: false });
5192
5309
  registry.optionsForType('view', { singleton: false });
@@ -5247,7 +5364,7 @@ enifed('ember-application/system/application', ['exports', 'dag-map', 'container
5247
5364
  registry.injection('service:-routing', 'router', 'router:main');
5248
5365
 
5249
5366
  // DEBUGGING
5250
- registry.register('resolver-for-debugging:main', registry.resolver.__resolver__, { instantiate: false });
5367
+ registry.register('resolver-for-debugging:main', registry.resolver, { instantiate: false });
5251
5368
  registry.injection('container-debug-adapter:main', 'resolver', 'resolver-for-debugging:main');
5252
5369
  registry.injection('data-adapter:main', 'containerDebugAdapter', 'container-debug-adapter:main');
5253
5370
  // Custom resolver authors may want to register their own ContainerDebugAdapter with this key
@@ -5276,39 +5393,10 @@ enifed('ember-application/system/application', ['exports', 'dag-map', 'container
5276
5393
  */
5277
5394
  function resolverFor(namespace) {
5278
5395
  var ResolverClass = namespace.get('Resolver') || _emberApplicationSystemResolver.default;
5279
- var resolver = ResolverClass.create({
5396
+
5397
+ return ResolverClass.create({
5280
5398
  namespace: namespace
5281
5399
  });
5282
-
5283
- function resolve(fullName) {
5284
- return resolver.resolve(fullName);
5285
- }
5286
-
5287
- resolve.describe = function (fullName) {
5288
- return resolver.lookupDescription(fullName);
5289
- };
5290
-
5291
- resolve.makeToString = function (factory, fullName) {
5292
- return resolver.makeToString(factory, fullName);
5293
- };
5294
-
5295
- resolve.normalize = function (fullName) {
5296
- if (resolver.normalize) {
5297
- return resolver.normalize(fullName);
5298
- }
5299
- };
5300
-
5301
- resolve.knownForType = function knownForType(type) {
5302
- if (resolver.knownForType) {
5303
- return resolver.knownForType(type);
5304
- }
5305
- };
5306
-
5307
- resolve.moduleBasedResolver = resolver.moduleBasedResolver;
5308
-
5309
- resolve.__resolver__ = resolver;
5310
-
5311
- return resolve;
5312
5400
  }
5313
5401
 
5314
5402
  function registerLibraries() {
@@ -6282,7 +6370,7 @@ enifed('ember-debug', ['exports', 'ember-metal/core', 'ember-metal/debug', 'embe
6282
6370
  _emberMetalDebug.setDebugFunction('warn', _emberDebugWarn.default);
6283
6371
 
6284
6372
  /**
6285
- Will call `Ember.warn()` if ENABLE_ALL_FEATURES, ENABLE_OPTIONAL_FEATURES, or
6373
+ Will call `Ember.warn()` if ENABLE_OPTIONAL_FEATURES or
6286
6374
  any specific FEATURES flag is truthy.
6287
6375
 
6288
6376
  This method is called automatically in debug canary builds.
@@ -6294,7 +6382,6 @@ enifed('ember-debug', ['exports', 'ember-metal/core', 'ember-metal/debug', 'embe
6294
6382
 
6295
6383
  function _warnIfUsingStrippedFeatureFlags(FEATURES, featuresWereStripped) {
6296
6384
  if (featuresWereStripped) {
6297
- _emberMetalDebug.warn('Ember.ENV.ENABLE_ALL_FEATURES is only available in canary builds.', !_emberMetalCore.default.ENV.ENABLE_ALL_FEATURES, { id: 'ember-debug.feature-flag-with-features-stripped' });
6298
6385
  _emberMetalDebug.warn('Ember.ENV.ENABLE_OPTIONAL_FEATURES is only available in canary builds.', !_emberMetalCore.default.ENV.ENABLE_OPTIONAL_FEATURES, { id: 'ember-debug.feature-flag-with-features-stripped' });
6299
6386
 
6300
6387
  for (var key in FEATURES) {
@@ -6310,10 +6397,6 @@ enifed('ember-debug', ['exports', 'ember-metal/core', 'ember-metal/debug', 'embe
6310
6397
  _emberMetalFeatures.FEATURES['features-stripped-test'] = true;
6311
6398
  var featuresWereStripped = true;
6312
6399
 
6313
- if (_emberMetalFeatures.default('features-stripped-test')) {
6314
- exports.featuresWereStripped = featuresWereStripped = false;
6315
- }
6316
-
6317
6400
  delete _emberMetalFeatures.FEATURES['features-stripped-test'];
6318
6401
  _warnIfUsingStrippedFeatureFlags(_emberMetalCore.default.ENV.FEATURES, featuresWereStripped);
6319
6402
 
@@ -7816,7 +7899,7 @@ enifed('ember-htmlbars/helpers/with', ['exports', 'ember-views/streams/should_di
7816
7899
  for semantic clarity as it allows you to retain default scope or to reference a property from another
7817
7900
  `{{with}}` block.
7818
7901
 
7819
- If the aliased property is "falsey", for example: `false`, `undefined` `null`, `""`, `0` or
7902
+ If the aliased property is "falsey", for example: `false`, `undefined` `null`, `""`, `0`, NaN or
7820
7903
  an empty array, the block will not be rendered.
7821
7904
 
7822
7905
  ```handlebars
@@ -8084,22 +8167,37 @@ enifed('ember-htmlbars/hooks/component', ['exports', 'ember-metal/debug', 'ember
8084
8167
  function componentHook(renderNode, env, scope, _tagName, params, attrs, templates, visitor) {
8085
8168
  var state = renderNode.getState();
8086
8169
 
8087
- // Determine if this is an initial render or a re-render
8088
- if (state.manager) {
8089
- state.manager.rerender(env, attrs, visitor);
8090
- return;
8091
- }
8092
-
8093
8170
  var tagName = _tagName;
8094
8171
  if (_emberHtmlbarsSystemLookupHelper.CONTAINS_DOT_CACHE.get(tagName)) {
8095
8172
  var stream = env.hooks.get(env, scope, tagName);
8096
8173
  var componentCell = stream.value();
8097
8174
  if (_emberHtmlbarsKeywordsClosureComponent.isComponentCell(componentCell)) {
8098
8175
  tagName = componentCell[_emberHtmlbarsKeywordsClosureComponent.COMPONENT_PATH];
8176
+
8177
+ /*
8178
+ * Processing positional params before merging into a hash must be done
8179
+ * here to avoid problems with rest positional parameters rendered using
8180
+ * the dot notation.
8181
+ *
8182
+ * Closure components (for the contextual component feature) do not
8183
+ * actually keep the positional params, but process them at each level.
8184
+ * Therefore, when rendering a closure component with the component
8185
+ * helper we process the parameters and attributes and then merge those
8186
+ * on top of the closure component attributes.
8187
+ *
8188
+ */
8189
+ _emberHtmlbarsKeywordsClosureComponent.processPositionalParamsFromCell(componentCell, params, attrs);
8190
+ params = [];
8099
8191
  attrs = _emberHtmlbarsKeywordsClosureComponent.mergeInNewHash(componentCell[_emberHtmlbarsKeywordsClosureComponent.COMPONENT_HASH], attrs);
8100
8192
  }
8101
8193
  }
8102
8194
 
8195
+ // Determine if this is an initial render or a re-render
8196
+ if (state.manager) {
8197
+ state.manager.rerender(env, attrs, visitor);
8198
+ return;
8199
+ }
8200
+
8103
8201
  var isAngleBracket = false;
8104
8202
  var isTopLevel = false;
8105
8203
  var isDasherized = false;
@@ -8681,7 +8779,7 @@ enifed('ember-htmlbars/hooks/invoke-helper', ['exports', 'ember-htmlbars/system/
8681
8779
  return { value: helperStream.value() };
8682
8780
  }
8683
8781
  });
8684
- enifed('ember-htmlbars/hooks/link-render-node', ['exports', 'ember-htmlbars/utils/subscribe', 'ember-runtime/utils', 'ember-metal/streams/utils'], function (exports, _emberHtmlbarsUtilsSubscribe, _emberRuntimeUtils, _emberMetalStreamsUtils) {
8782
+ enifed('ember-htmlbars/hooks/link-render-node', ['exports', 'ember-htmlbars/utils/subscribe', 'ember-runtime/utils', 'ember-metal/streams/utils', 'ember-htmlbars/system/lookup-helper', 'ember-htmlbars/keywords/closure-component'], function (exports, _emberHtmlbarsUtilsSubscribe, _emberRuntimeUtils, _emberMetalStreamsUtils, _emberHtmlbarsSystemLookupHelper, _emberHtmlbarsKeywordsClosureComponent) {
8685
8783
  /**
8686
8784
  @module ember
8687
8785
  @submodule ember-htmlbars
@@ -8711,6 +8809,22 @@ enifed('ember-htmlbars/hooks/link-render-node', ['exports', 'ember-htmlbars/util
8711
8809
  }
8712
8810
  }
8713
8811
 
8812
+ // If has a dot in the path, we need to subscribe to the arguments in the
8813
+ // closure component as well.
8814
+
8815
+ if (_emberHtmlbarsSystemLookupHelper.CONTAINS_DOT_CACHE.get(path)) {
8816
+ var stream = env.hooks.get(env, scope, path);
8817
+ var componentCell = stream.value();
8818
+
8819
+ if (_emberHtmlbarsKeywordsClosureComponent.isComponentCell(componentCell)) {
8820
+ var closureAttrs = _emberHtmlbarsKeywordsClosureComponent.mergeInNewHash(componentCell[_emberHtmlbarsKeywordsClosureComponent.COMPONENT_HASH], hash);
8821
+
8822
+ for (var key in closureAttrs) {
8823
+ _emberHtmlbarsUtilsSubscribe.default(renderNode, env, scope, closureAttrs[key]);
8824
+ }
8825
+ }
8826
+ }
8827
+
8714
8828
  if (params && params.length) {
8715
8829
  for (var i = 0; i < params.length; i++) {
8716
8830
  _emberHtmlbarsUtilsSubscribe.default(renderNode, env, scope, params[i]);
@@ -8929,6 +9043,7 @@ enifed('ember-htmlbars/keywords/closure-component', ['exports', 'ember-metal/deb
8929
9043
 
8930
9044
  exports.default = closureComponent;
8931
9045
  exports.isComponentCell = isComponentCell;
9046
+ exports.processPositionalParamsFromCell = processPositionalParamsFromCell;
8932
9047
  exports.mergeInNewHash = mergeInNewHash;
8933
9048
  var COMPONENT_REFERENCE = _emberMetalSymbol.default('COMPONENT_REFERENCE');
8934
9049
  exports.COMPONENT_REFERENCE = COMPONENT_REFERENCE;
@@ -9004,12 +9119,16 @@ enifed('ember-htmlbars/keywords/closure-component', ['exports', 'ember-metal/deb
9004
9119
  function createNestedClosureComponentCell(componentCell, params, hash) {
9005
9120
  var _ref;
9006
9121
 
9122
+ // This needs to be done in each nesting level to avoid raising assertions
9123
+ processPositionalParamsFromCell(componentCell, params, hash);
9124
+
9125
+ return _ref = {}, _ref[COMPONENT_PATH] = componentCell[COMPONENT_PATH], _ref[COMPONENT_HASH] = mergeInNewHash(componentCell[COMPONENT_HASH], hash), _ref[COMPONENT_POSITIONAL_PARAMS] = componentCell[COMPONENT_POSITIONAL_PARAMS], _ref[COMPONENT_CELL] = true, _ref;
9126
+ }
9127
+
9128
+ function processPositionalParamsFromCell(componentCell, params, hash) {
9007
9129
  var positionalParams = componentCell[COMPONENT_POSITIONAL_PARAMS];
9008
9130
 
9009
- // This needs to be done in each nesting level to avoid raising assertions
9010
9131
  _emberHtmlbarsUtilsExtractPositionalParams.processPositionalParams(null, positionalParams, params, hash);
9011
-
9012
- return _ref = {}, _ref[COMPONENT_PATH] = componentCell[COMPONENT_PATH], _ref[COMPONENT_HASH] = mergeInNewHash(componentCell[COMPONENT_HASH], hash), _ref[COMPONENT_POSITIONAL_PARAMS] = positionalParams, _ref[COMPONENT_CELL] = true, _ref;
9013
9132
  }
9014
9133
 
9015
9134
  function createNewClosureComponentCell(env, componentPath, params, hash) {
@@ -9424,7 +9543,7 @@ enifed('ember-htmlbars/keywords/each', ['exports'], function (exports) {
9424
9543
  return false;
9425
9544
  }
9426
9545
  });
9427
- enifed('ember-htmlbars/keywords/element-component', ['exports', 'ember-metal/assign', 'ember-htmlbars/keywords/closure-component', 'ember-htmlbars/utils/extract-positional-params'], function (exports, _emberMetalAssign, _emberHtmlbarsKeywordsClosureComponent, _emberHtmlbarsUtilsExtractPositionalParams) {
9546
+ enifed('ember-htmlbars/keywords/element-component', ['exports', 'ember-metal/assign', 'ember-htmlbars/keywords/closure-component'], function (exports, _emberMetalAssign, _emberHtmlbarsKeywordsClosureComponent) {
9428
9547
  'use strict';
9429
9548
 
9430
9549
  exports.default = {
@@ -9485,10 +9604,9 @@ enifed('ember-htmlbars/keywords/element-component', ['exports', 'ember-metal/ass
9485
9604
 
9486
9605
  if (_emberHtmlbarsKeywordsClosureComponent.isComponentCell(path)) {
9487
9606
  var closureComponent = env.hooks.getValue(path);
9488
- var positionalParams = closureComponent[_emberHtmlbarsKeywordsClosureComponent.COMPONENT_POSITIONAL_PARAMS];
9489
9607
 
9490
9608
  // This needs to be done in each nesting level to avoid raising assertions
9491
- _emberHtmlbarsUtilsExtractPositionalParams.processPositionalParams(null, positionalParams, params, hash);
9609
+ _emberHtmlbarsKeywordsClosureComponent.processPositionalParamsFromCell(closureComponent, params, hash);
9492
9610
  params = [];
9493
9611
  hash = _emberHtmlbarsKeywordsClosureComponent.mergeInNewHash(closureComponent[_emberHtmlbarsKeywordsClosureComponent.COMPONENT_HASH], hash);
9494
9612
  }
@@ -10006,7 +10124,7 @@ enifed('ember-htmlbars/keywords/outlet', ['exports', 'ember-metal/debug', 'ember
10006
10124
 
10007
10125
  'use strict';
10008
10126
 
10009
- _emberHtmlbarsTemplatesTopLevelView.default.meta.revision = 'Ember@2.3.0-beta.1';
10127
+ _emberHtmlbarsTemplatesTopLevelView.default.meta.revision = 'Ember@2.3.0-beta.3';
10010
10128
 
10011
10129
  /**
10012
10130
  The `{{outlet}}` helper lets you specify where a child routes will render in
@@ -10115,10 +10233,6 @@ enifed('ember-htmlbars/keywords/outlet', ['exports', 'ember-metal/debug', 'ember
10115
10233
 
10116
10234
  var Component;
10117
10235
 
10118
- if (_emberMetalFeatures.default('ember-routing-routable-components')) {
10119
- Component = outletState.render.Component;
10120
- }
10121
-
10122
10236
  var options;
10123
10237
  var attrs = {};
10124
10238
  if (Component) {
@@ -10915,7 +11029,7 @@ enifed('ember-htmlbars/keywords', ['exports', 'htmlbars-runtime'], function (exp
10915
11029
 
10916
11030
  exports.default = keywords;
10917
11031
  });
10918
- enifed('ember-htmlbars/morphs/attr-morph', ['exports', 'ember-metal/debug', 'dom-helper'], function (exports, _emberMetalDebug, _domHelper) {
11032
+ enifed('ember-htmlbars/morphs/attr-morph', ['exports', 'ember-metal/debug', 'dom-helper', 'ember-metal/is_none'], function (exports, _emberMetalDebug, _domHelper, _emberMetalIs_none) {
10919
11033
  'use strict';
10920
11034
 
10921
11035
  var HTMLBarsAttrMorph = _domHelper.default.prototype.AttrMorphClass;
@@ -10934,7 +11048,7 @@ enifed('ember-htmlbars/morphs/attr-morph', ['exports', 'ember-metal/debug', 'dom
10934
11048
  function deprecateEscapedStyle(morph, value) {
10935
11049
  _emberMetalDebug.warn(styleWarning, (function (name, value, escaped) {
10936
11050
  // SafeString
10937
- if (value && value.toHTML) {
11051
+ if (_emberMetalIs_none.default(value) || value && value.toHTML) {
10938
11052
  return true;
10939
11053
  }
10940
11054
 
@@ -12999,9 +13113,9 @@ enifed('ember-htmlbars/utils/extract-positional-params', ['exports', 'ember-meta
12999
13113
  }
13000
13114
 
13001
13115
  function processPositionalParams(renderNode, positionalParams, params, attrs) {
13002
- var isNamed = typeof positionalParams === 'string';
13116
+ var isRest = typeof positionalParams === 'string';
13003
13117
 
13004
- if (isNamed) {
13118
+ if (isRest) {
13005
13119
  processRestPositionalParameters(renderNode, positionalParams, params, attrs);
13006
13120
  } else {
13007
13121
  processNamedPositionalParameters(renderNode, positionalParams, params, attrs);
@@ -13341,10 +13455,6 @@ enifed('ember-htmlbars', ['exports', 'ember-metal/core', 'ember-metal/features',
13341
13455
  DOMHelper: _emberHtmlbarsSystemDomHelper.default
13342
13456
  };
13343
13457
 
13344
- if (_emberMetalFeatures.default('ember-htmlbars-component-generation')) {
13345
- _emberMetalCore.default.GlimmerComponent = _emberHtmlbarsGlimmerComponent.default;
13346
- }
13347
-
13348
13458
  _emberHtmlbarsHelper.default.helper = _emberHtmlbarsHelper.helper;
13349
13459
  _emberMetalCore.default.Helper = _emberHtmlbarsHelper.default;
13350
13460
 
@@ -15761,7 +15871,7 @@ enifed('ember-metal/core', ['exports'], function (exports) {
15761
15871
 
15762
15872
  @class Ember
15763
15873
  @static
15764
- @version 2.3.0-beta.1
15874
+ @version 2.3.0-beta.3
15765
15875
  @public
15766
15876
  */
15767
15877
 
@@ -15805,11 +15915,11 @@ enifed('ember-metal/core', ['exports'], function (exports) {
15805
15915
 
15806
15916
  @property VERSION
15807
15917
  @type String
15808
- @default '2.3.0-beta.1'
15918
+ @default '2.3.0-beta.3'
15809
15919
  @static
15810
15920
  @public
15811
15921
  */
15812
- Ember.VERSION = '2.3.0-beta.1';
15922
+ Ember.VERSION = '2.3.0-beta.3';
15813
15923
 
15814
15924
  /**
15815
15925
  The hash of environment variables used to control various configuration
@@ -15834,13 +15944,13 @@ enifed('ember-metal/core', ['exports'], function (exports) {
15834
15944
  Ember.ENV = {};
15835
15945
  }
15836
15946
 
15837
- Ember.config = Ember.config || {};
15838
-
15839
- // We disable the RANGE API by default for performance reasons
15840
- if ('undefined' === typeof Ember.ENV.DISABLE_RANGE_API) {
15841
- Ember.ENV.DISABLE_RANGE_API = true;
15947
+ // ENABLE_ALL_FEATURES was documented, but you can't actually enable non optional features.
15948
+ if (Ember.ENV.ENABLE_ALL_FEATURES) {
15949
+ Ember.ENV.ENABLE_OPTIONAL_FEATURES = Ember.ENV.ENABLE_ALL_FEATURES;
15842
15950
  }
15843
15951
 
15952
+ Ember.config = Ember.config || {};
15953
+
15844
15954
  // ..........................................................
15845
15955
  // BOOTSTRAP
15846
15956
  //
@@ -15881,17 +15991,6 @@ enifed('ember-metal/core', ['exports'], function (exports) {
15881
15991
  */
15882
15992
  Ember.LOG_STACKTRACE_ON_DEPRECATION = Ember.ENV.LOG_STACKTRACE_ON_DEPRECATION !== false;
15883
15993
 
15884
- /**
15885
- The `SHIM_ES5` property, when true, tells Ember to add ECMAScript 5 Array
15886
- shims to older browsers.
15887
-
15888
- @property SHIM_ES5
15889
- @type Boolean
15890
- @default Ember.EXTEND_PROTOTYPES
15891
- @public
15892
- */
15893
- Ember.SHIM_ES5 = Ember.ENV.SHIM_ES5 === false ? false : Ember.EXTEND_PROTOTYPES;
15894
-
15895
15994
  /**
15896
15995
  The `LOG_VERSION` property, when true, tells Ember to log versions of all
15897
15996
  dependent libraries in use.
@@ -16649,7 +16748,6 @@ enifed('ember-metal/features', ['exports', 'ember-metal/core', 'ember-metal/assi
16649
16748
 
16650
16749
  You can define the following configuration options:
16651
16750
 
16652
- * `EmberENV.ENABLE_ALL_FEATURES` - force all features to be enabled.
16653
16751
  * `EmberENV.ENABLE_OPTIONAL_FEATURES` - enable any features that have not been explicitly
16654
16752
  enabled/disabled.
16655
16753
 
@@ -16664,9 +16762,7 @@ enifed('ember-metal/features', ['exports', 'ember-metal/core', 'ember-metal/assi
16664
16762
  function isEnabled(feature) {
16665
16763
  var featureValue = FEATURES[feature];
16666
16764
 
16667
- if (_emberMetalCore.default.ENV.ENABLE_ALL_FEATURES) {
16668
- return true;
16669
- } else if (featureValue === true || featureValue === false || featureValue === undefined) {
16765
+ if (featureValue === true || featureValue === false || featureValue === undefined) {
16670
16766
  return featureValue;
16671
16767
  } else if (_emberMetalCore.default.ENV.ENABLE_OPTIONAL_FEATURES) {
16672
16768
  return true;
@@ -19064,6 +19160,10 @@ enifed('ember-metal/mixin', ['exports', 'ember-metal/core', 'ember-metal/error',
19064
19160
  return applyMixin(obj, [this], true);
19065
19161
  };
19066
19162
 
19163
+ MixinPrototype.toString = function Mixin_toString() {
19164
+ return '(unknown mixin)';
19165
+ };
19166
+
19067
19167
  function _detect(curMixin, targetMixin, seen) {
19068
19168
  var guid = _emberMetalUtils.guidFor(curMixin);
19069
19169
 
@@ -23260,7 +23360,6 @@ enifed('ember-metal', ['exports', 'ember-metal/core', 'ember-metal/debug', 'embe
23260
23360
  _emberMetalComputed.computed.and = _emberMetalComputed_macros.and;
23261
23361
  _emberMetalComputed.computed.or = _emberMetalComputed_macros.or;
23262
23362
  _emberMetalComputed.computed.any = _emberMetalComputed_macros.any;
23263
- _emberMetalComputed.computed.collect = _emberMetalComputed_macros.collect;
23264
23363
 
23265
23364
  // END IMPORTS
23266
23365
 
@@ -23398,12 +23497,7 @@ enifed('ember-metal', ['exports', 'ember-metal/core', 'ember-metal/debug', 'embe
23398
23497
  _emberMetalCore.default.isBlank = _emberMetalIs_blank.default;
23399
23498
  _emberMetalCore.default.isPresent = _emberMetalIs_present.default;
23400
23499
 
23401
- if (_emberMetalFeatures.default('ember-metal-ember-assign')) {
23402
- _emberMetalCore.default.assign = Object.assign || _emberMetalAssign.default;
23403
- _emberMetalCore.default.merge = _emberMetalMerge.default;
23404
- } else {
23405
- _emberMetalCore.default.merge = _emberMetalMerge.default;
23406
- }
23500
+ _emberMetalCore.default.merge = _emberMetalMerge.default;
23407
23501
 
23408
23502
  _emberMetalCore.default.FEATURES = _emberMetalFeatures.FEATURES;
23409
23503
  _emberMetalCore.default.FEATURES.isEnabled = _emberMetalFeatures.default;
@@ -25097,12 +25191,6 @@ enifed('ember-routing/system/route', ['exports', 'ember-metal/core', 'ember-meta
25097
25191
  var controllerDefinedQueryParameterConfiguration = _emberMetalProperty_get.get(controllerProto, 'queryParams');
25098
25192
  var normalizedControllerQueryParameterConfiguration = _emberRoutingUtils.normalizeControllerQueryParams(controllerDefinedQueryParameterConfiguration);
25099
25193
  combinedQueryParameterConfiguration = mergeEachQueryParams(normalizedControllerQueryParameterConfiguration, queryParameterConfiguraton);
25100
-
25101
- if (_emberMetalFeatures.default('ember-routing-route-configured-query-params')) {
25102
- if (controllerDefinedQueryParameterConfiguration.length) {
25103
- _emberMetalDebug.deprecate('Configuring query parameters on a controller is deprecated. Migrate the query parameters configuration from the \'' + controllerName + '\' controller to the \'' + this.routeName + '\' route: ' + combinedQueryParameterConfiguration, false, { id: 'ember-routing.controller-configured-query-params', until: '3.0.0' });
25104
- }
25105
- }
25106
25194
  } else if (hasRouterDefinedQueryParams) {
25107
25195
  // the developer has not defined a controller but *has* supplied route query params.
25108
25196
  // Generate a class for them so we can later insert default values
@@ -25129,19 +25217,6 @@ enifed('ember-routing/system/route', ['exports', 'ember-metal/core', 'ember-meta
25129
25217
 
25130
25218
  var desc = combinedQueryParameterConfiguration[propName];
25131
25219
 
25132
- if (_emberMetalFeatures.default('ember-routing-route-configured-query-params')) {
25133
- // apply default values to controllers
25134
- // detect that default value defined on router config
25135
- if (desc.hasOwnProperty('defaultValue')) {
25136
- // detect that property was not defined on controller
25137
- if (controllerProto[propName] === undefined) {
25138
- controllerProto[propName] = desc.defaultValue;
25139
- } else {
25140
- deprecateQueryParamDefaultValuesSetOnController(controllerName, this.routeName, propName);
25141
- }
25142
- }
25143
- }
25144
-
25145
25220
  var scope = desc.scope || 'model';
25146
25221
  var parts;
25147
25222
 
@@ -25370,7 +25445,7 @@ enifed('ember-routing/system/route', ['exports', 'ember-metal/core', 'ember-meta
25370
25445
  ```javascript
25371
25446
  App.ArticlesRoute = Ember.Route.extend({
25372
25447
  // ...
25373
- resetController: function (controller, isExiting, transition) {
25448
+ resetController: function(controller, isExiting, transition) {
25374
25449
  if (isExiting) {
25375
25450
  controller.set('page', 1);
25376
25451
  }
@@ -26464,7 +26539,7 @@ enifed('ember-routing/system/route', ['exports', 'ember-metal/core', 'ember-meta
26464
26539
  model: function() {
26465
26540
  return this.store.find('photo');
26466
26541
  },
26467
- setupController: function (controller, model) {
26542
+ setupController: function(controller, model) {
26468
26543
  // Call _super for default behavior
26469
26544
  this._super(controller, model);
26470
26545
  // Implement your custom setup after
@@ -26944,17 +27019,6 @@ enifed('ember-routing/system/route', ['exports', 'ember-metal/core', 'ember-meta
26944
27019
  };
26945
27020
 
26946
27021
  var Component = undefined;
26947
- if (_emberMetalFeatures.default('ember-routing-routable-components')) {
26948
- var componentName = options && options.component || namePassed && name || route.componentName || name;
26949
- var componentLookup = owner.lookup('component-lookup:main');
26950
- Component = componentLookup.lookupFactory(componentName);
26951
- var isGlimmerComponent = Component && Component.proto().isGlimmerComponent;
26952
- if (!template && !ViewClass && Component && isGlimmerComponent) {
26953
- renderOptions.Component = Component;
26954
- renderOptions.ViewClass = undefined;
26955
- renderOptions.attrs = { model: _emberMetalProperty_get.get(controller, 'model') };
26956
- }
26957
- }
26958
27022
 
26959
27023
  if (!ViewClass && !template && !Component) {
26960
27024
  _emberMetalDebug.assert('Could not find "' + name + '" template, view, or component.', isDefaultRender);
@@ -27022,16 +27086,12 @@ enifed('ember-routing/system/route', ['exports', 'ember-metal/core', 'ember-meta
27022
27086
  var keysAlreadyMergedOrSkippable;
27023
27087
  var qps = {};
27024
27088
 
27025
- if (_emberMetalFeatures.default('ember-routing-route-configured-query-params')) {
27026
- keysAlreadyMergedOrSkippable = {};
27027
- } else {
27028
- keysAlreadyMergedOrSkippable = {
27029
- defaultValue: true,
27030
- type: true,
27031
- scope: true,
27032
- as: true
27033
- };
27034
- }
27089
+ keysAlreadyMergedOrSkippable = {
27090
+ defaultValue: true,
27091
+ type: true,
27092
+ scope: true,
27093
+ as: true
27094
+ };
27035
27095
 
27036
27096
  // first loop over all controller qps, merging them with any matching route qps
27037
27097
  // into a new empty object to avoid mutating.
@@ -27078,6 +27138,11 @@ enifed('ember-routing/system/route', ['exports', 'ember-metal/core', 'ember-meta
27078
27138
  exports.default = Route;
27079
27139
  });
27080
27140
  // FEATURES, A, deprecate, assert, Logger
27141
+
27142
+ // apply default values to controllers
27143
+ // detect that default value defined on router config
27144
+
27145
+ // detect that property was not defined on controller
27081
27146
  enifed('ember-routing/system/router', ['exports', 'ember-metal/logger', 'ember-metal/debug', 'ember-metal/error', 'ember-metal/property_get', 'ember-metal/property_set', 'ember-metal/properties', 'ember-metal/empty_object', 'ember-metal/computed', 'ember-metal/assign', 'ember-metal/run_loop', 'ember-runtime/system/object', 'ember-runtime/mixins/evented', 'ember-routing/system/dsl', 'ember-routing/location/api', 'ember-routing/utils', 'ember-routing/system/router_state', 'container/owner', 'router', 'router/transition'], function (exports, _emberMetalLogger, _emberMetalDebug, _emberMetalError, _emberMetalProperty_get, _emberMetalProperty_set, _emberMetalProperties, _emberMetalEmpty_object, _emberMetalComputed, _emberMetalAssign, _emberMetalRun_loop, _emberRuntimeSystemObject, _emberRuntimeMixinsEvented, _emberRoutingSystemDsl, _emberRoutingLocationApi, _emberRoutingUtils, _emberRoutingSystemRouter_state, _containerOwner, _router4, _routerTransition) {
27082
27147
  'use strict';
27083
27148
 
@@ -29571,7 +29636,7 @@ enifed('ember-routing-views/components/link-to', ['exports', 'ember-metal/logger
29571
29636
 
29572
29637
  'use strict';
29573
29638
 
29574
- _emberHtmlbarsTemplatesLinkTo.default.meta.revision = 'Ember@2.3.0-beta.1';
29639
+ _emberHtmlbarsTemplatesLinkTo.default.meta.revision = 'Ember@2.3.0-beta.3';
29575
29640
 
29576
29641
  /**
29577
29642
  `Ember.LinkComponent` renders an element whose `click` event triggers a
@@ -30061,7 +30126,7 @@ enifed('ember-routing-views/views/outlet', ['exports', 'ember-views/views/view',
30061
30126
 
30062
30127
  'use strict';
30063
30128
 
30064
- _emberHtmlbarsTemplatesTopLevelView.default.meta.revision = 'Ember@2.3.0-beta.1';
30129
+ _emberHtmlbarsTemplatesTopLevelView.default.meta.revision = 'Ember@2.3.0-beta.3';
30065
30130
 
30066
30131
  var CoreOutletView = _emberViewsViewsView.default.extend({
30067
30132
  defaultTemplate: _emberHtmlbarsTemplatesTopLevelView.default,
@@ -32450,6 +32515,23 @@ enifed('ember-runtime/mixins/container_proxy', ['exports', 'ember-metal/run_loop
32450
32515
  */
32451
32516
  __container__: null,
32452
32517
 
32518
+ /**
32519
+ Returns an object that can be used to provide an owner to a
32520
+ manually created instance.
32521
+ Example:
32522
+ ```
32523
+ let owner = Ember.getOwner(this);
32524
+ User.create(
32525
+ owner.ownerInjection(),
32526
+ { username: 'rwjblue' }
32527
+ )
32528
+ ```
32529
+ @public
32530
+ @method ownerInjection
32531
+ @return {Object}
32532
+ */
32533
+ ownerInjection: containerAlias('ownerInjection'),
32534
+
32453
32535
  /**
32454
32536
  Given a fullName return a corresponding instance.
32455
32537
  The default behaviour is for lookup to return a singleton instance.
@@ -36372,14 +36454,13 @@ enifed('ember-runtime/system/core_object', ['exports', 'ember-metal/debug', 'emb
36372
36454
  @private
36373
36455
  */
36374
36456
  eachComputedProperty: function (callback, binding) {
36375
- var property, name;
36457
+ var property;
36376
36458
  var empty = {};
36377
36459
 
36378
36460
  var properties = _emberMetalProperty_get.get(this, '_computedProperties');
36379
36461
 
36380
36462
  for (var i = 0, length = properties.length; i < length; i++) {
36381
36463
  property = properties[i];
36382
- name = property.name;
36383
36464
  callback.call(binding || this, property.name, property.meta || empty);
36384
36465
  }
36385
36466
  }
@@ -37291,7 +37372,7 @@ enifed('ember-runtime/system/object_proxy', ['exports', 'ember-runtime/system/ob
37291
37372
 
37292
37373
  ```javascript
37293
37374
  ProxyWithComputedProperty = Ember.ObjectProxy.extend({
37294
- fullName: function () {
37375
+ fullName: function() {
37295
37376
  var firstName = this.get('firstName'),
37296
37377
  lastName = this.get('lastName');
37297
37378
  if (firstName && lastName) {
@@ -37454,7 +37535,7 @@ enifed('ember-runtime/system/string', ['exports', 'ember-metal/debug', 'ember-me
37454
37535
  }
37455
37536
 
37456
37537
  function fmt(str, formats) {
37457
- _emberMetalDebug.deprecate('Ember.String.fmt is deprecated, use ES6 template strings instead.', false, { id: 'ember-string-utils.fmt', until: '3.0.0', url: 'https://babeljs.io/docs/learn-es6/#template-strings' });
37538
+ _emberMetalDebug.deprecate('Ember.String.fmt is deprecated, use ES6 template strings instead.', false, { id: 'ember-string-utils.fmt', until: '3.0.0', url: 'http://babeljs.io/docs/learn-es2015/#template-strings' });
37458
37539
  return _fmt.apply(undefined, arguments);
37459
37540
  }
37460
37541
 
@@ -37523,7 +37604,7 @@ enifed('ember-runtime/system/string', ['exports', 'ember-metal/debug', 'ember-me
37523
37604
  @param {Array} formats An array of parameters to interpolate into string.
37524
37605
  @return {String} formatted string
37525
37606
  @public
37526
- @deprecated Use ES6 template strings instead: https://babeljs.io/docs/learn-es6/#template-strings');
37607
+ @deprecated Use ES6 template strings instead: http://babeljs.io/docs/learn-es2015/#template-strings
37527
37608
  */
37528
37609
  fmt: fmt,
37529
37610
 
@@ -37657,7 +37738,7 @@ enifed('ember-runtime/system/string', ['exports', 'ember-metal/debug', 'ember-me
37657
37738
  'action_name'.capitalize() // 'Action_name'
37658
37739
  'css-class-name'.capitalize() // 'Css-class-name'
37659
37740
  'my favorite items'.capitalize() // 'My favorite items'
37660
- 'privateDocs/ownerInvoice'.capitalize(); // 'PrivateDocs/OwnerInvoice'
37741
+ 'privateDocs/ownerInvoice'.capitalize(); // 'PrivateDocs/ownerInvoice'
37661
37742
  ```
37662
37743
  @method capitalize
37663
37744
  @param {String} str The string to capitalize.
@@ -37878,6 +37959,7 @@ enifed('ember-runtime', ['exports', 'ember-metal', 'ember-runtime/is-equal', 'em
37878
37959
  EmComputed.uniq = _emberRuntimeComputedReduce_computed_macros.uniq;
37879
37960
  EmComputed.union = _emberRuntimeComputedReduce_computed_macros.union;
37880
37961
  EmComputed.intersect = _emberRuntimeComputedReduce_computed_macros.intersect;
37962
+ EmComputed.collect = _emberRuntimeComputedReduce_computed_macros.collect;
37881
37963
 
37882
37964
  _emberMetal.default.String = _emberRuntimeSystemString.default;
37883
37965
  _emberMetal.default.Object = _emberRuntimeSystemObject.default;
@@ -38993,7 +39075,7 @@ enifed('ember-template-compiler/system/compile_options', ['exports', 'ember-meta
38993
39075
  options.buildMeta = function buildMeta(program) {
38994
39076
  return {
38995
39077
  fragmentReason: fragmentReason(program),
38996
- revision: 'Ember@2.3.0-beta.1',
39078
+ revision: 'Ember@2.3.0-beta.3',
38997
39079
  loc: program.loc,
38998
39080
  moduleName: options.moduleName
38999
39081
  };
@@ -44283,7 +44365,7 @@ enifed('ember-views/views/collection_view', ['exports', 'ember-metal/core', 'emb
44283
44365
  enifed('ember-views/views/container_view', ['exports', 'ember-metal/core', 'ember-metal/debug', 'ember-runtime/mixins/mutable_array', 'ember-runtime/system/native_array', 'ember-views/views/view', 'ember-metal/property_get', 'ember-metal/property_set', 'ember-metal/mixin', 'ember-metal/events', 'ember-htmlbars/templates/container-view'], function (exports, _emberMetalCore, _emberMetalDebug, _emberRuntimeMixinsMutable_array, _emberRuntimeSystemNative_array, _emberViewsViewsView, _emberMetalProperty_get, _emberMetalProperty_set, _emberMetalMixin, _emberMetalEvents, _emberHtmlbarsTemplatesContainerView) {
44284
44366
  'use strict';
44285
44367
 
44286
- _emberHtmlbarsTemplatesContainerView.default.meta.revision = 'Ember@2.3.0-beta.1';
44368
+ _emberHtmlbarsTemplatesContainerView.default.meta.revision = 'Ember@2.3.0-beta.3';
44287
44369
 
44288
44370
  /**
44289
44371
  @module ember
@@ -45851,10 +45933,6 @@ enifed('ember-views/views/view', ['exports', 'ember-metal/core', 'ember-metal/de
45851
45933
  @submodule ember-views
45852
45934
  */
45853
45935
 
45854
- _emberMetalDebug.warn('The VIEW_PRESERVES_CONTEXT flag has been removed and the functionality can no longer be disabled.', _emberMetalCore.default.ENV.VIEW_PRESERVES_CONTEXT !== false, {
45855
- id: 'ember-views.view-preserves-context-flag',
45856
- until: '2.0.0'
45857
- });
45858
45936
  /**
45859
45937
  `Ember.View` is the class in Ember responsible for encapsulating templates of
45860
45938
  HTML content, combining templates with data to render as sections of a page's
@@ -46901,7 +46979,7 @@ enifed("htmlbars-runtime/hooks", ["exports", "htmlbars-runtime/render", "morph-r
46901
46979
  return {
46902
46980
  meta: template.meta,
46903
46981
  arity: template.arity,
46904
- yield: yieldArgs,
46982
+ 'yield': yieldArgs, // quoted since it's a reserved word, see issue #420
46905
46983
  yieldItem: yieldItem(template, env, scope, morph, renderState, visitor),
46906
46984
  raw: template,
46907
46985
 
@@ -47088,7 +47166,7 @@ enifed("htmlbars-runtime/hooks", ["exports", "htmlbars-runtime/render", "morph-r
47088
47166
  function thisFor(options) {
47089
47167
  return {
47090
47168
  arity: options.template.arity,
47091
- yield: options.template.yield,
47169
+ 'yield': options.template.yield, // quoted since it's a reserved word, see issue #420
47092
47170
  yieldItem: options.template.yieldItem,
47093
47171
  yieldIn: options.template.yieldIn
47094
47172
  };
@@ -47577,7 +47655,8 @@ enifed("htmlbars-runtime/hooks", ["exports", "htmlbars-runtime/render", "morph-r
47577
47655
  return true;
47578
47656
  },
47579
47657
 
47580
- yield: function (morph, env, scope, params, hash, template, inverse, visitor) {
47658
+ // quoted since it's a reserved word, see issue #420
47659
+ 'yield': function (morph, env, scope, params, hash, template, inverse, visitor) {
47581
47660
  // the current scope is provided purely for the creation of shadow
47582
47661
  // scopes; it should not be provided to user code.
47583
47662
 
@@ -49077,7 +49156,7 @@ enifed("htmlbars-util/template-utils", ["exports", "htmlbars-util/morph-utils",
49077
49156
  // If we don't see the key in handledMorphs, it wasn't
49078
49157
  // yielded in and we can safely remove it from DOM.
49079
49158
  if (!(item.key in handledMorphs)) {
49080
- delete morphMap[item.key];
49159
+ morphMap[item.key] = undefined;
49081
49160
  clearMorph(item, env, true);
49082
49161
  item.destroy();
49083
49162
  }
@@ -49140,7 +49219,7 @@ enifed("htmlbars-util/template-utils", ["exports", "htmlbars-util/morph-utils",
49140
49219
 
49141
49220
  while (item) {
49142
49221
  var next = item.nextMorph;
49143
- delete morph.morphMap[item.key];
49222
+ morph.morphMap[item.key] = undefined;
49144
49223
  clearMorph(item, env, true);
49145
49224
  item.destroy();
49146
49225