ember-source 2.9.0.beta.4 → 2.9.0.beta.5

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.
@@ -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.9.0-beta.4
9
+ * @version 2.9.0-beta.5
10
10
  */
11
11
 
12
12
  var enifed, requireModule, require, Ember;
@@ -7150,7 +7150,8 @@ enifed('ember-glimmer/component', ['exports', 'ember-utils', 'ember-views', 'emb
7150
7150
  Component[_emberMetal.NAME_KEY] = 'Ember.Component';
7151
7151
 
7152
7152
  Component.reopenClass({
7153
- isComponentFactory: true
7153
+ isComponentFactory: true,
7154
+ positionalParams: []
7154
7155
  });
7155
7156
 
7156
7157
  exports.default = Component;
@@ -8677,8 +8678,6 @@ enifed('ember-glimmer/environment', ['exports', 'ember-utils', 'ember-metal', 'e
8677
8678
  enifed('ember-glimmer/helper', ['exports', 'ember-utils', 'ember-runtime', 'glimmer-reference'], function (exports, _emberUtils, _emberRuntime, _glimmerReference) {
8678
8679
  'use strict';
8679
8680
 
8680
- var _EmberObject$extend;
8681
-
8682
8681
  exports.helper = helper;
8683
8682
  var RECOMPUTE_TAG = _emberUtils.symbol('RECOMPUTE_TAG');
8684
8683
 
@@ -8723,23 +8722,49 @@ enifed('ember-glimmer/helper', ['exports', 'ember-utils', 'ember-runtime', 'glim
8723
8722
  @public
8724
8723
  @since 1.13.0
8725
8724
  */
8726
- var Helper = _emberRuntime.Object.extend((_EmberObject$extend = {
8727
- isHelperInstance: true
8725
+ var Helper = _emberRuntime.FrameworkObject.extend({
8726
+ isHelperInstance: true,
8728
8727
 
8729
- }, _EmberObject$extend[_emberRuntime.POST_INIT] = function () {
8730
- this[RECOMPUTE_TAG] = new _glimmerReference.DirtyableTag();
8731
- }, _EmberObject$extend.recompute = function () {
8732
- this[RECOMPUTE_TAG].dirty();
8733
- }, _EmberObject$extend));
8728
+ init: function () {
8729
+ this._super.apply(this, arguments);
8730
+ this[RECOMPUTE_TAG] = new _glimmerReference.DirtyableTag();
8731
+ },
8732
+
8733
+ /**
8734
+ On a class-based helper, it may be useful to force a recomputation of that
8735
+ helpers value. This is akin to `rerender` on a component.
8736
+ For example, this component will rerender when the `currentUser` on a
8737
+ session service changes:
8738
+ ```js
8739
+ // app/helpers/current-user-email.js
8740
+ export default Ember.Helper.extend({
8741
+ session: Ember.inject.service(),
8742
+ onNewUser: Ember.observer('session.currentUser', function() {
8743
+ this.recompute();
8744
+ }),
8745
+ compute() {
8746
+ return this.get('session.currentUser.email');
8747
+ }
8748
+ });
8749
+ ```
8750
+ @method recompute
8751
+ @public
8752
+ @since 1.13.0
8753
+ */
8754
+ recompute: function () {
8755
+ this[RECOMPUTE_TAG].dirty();
8756
+ }
8757
+
8758
+ /**
8759
+ Override this function when writing a class-based helper.
8760
+ @method compute
8761
+ @param {Array} params The positional arguments to the helper
8762
+ @param {Object} hash The named arguments to the helper
8763
+ @public
8764
+ @since 1.13.0
8765
+ */
8766
+ });
8734
8767
 
8735
- /**
8736
- Override this function when writing a class-based helper.
8737
- @method compute
8738
- @param {Array} params The positional arguments to the helper
8739
- @param {Object} hash The named arguments to the helper
8740
- @public
8741
- @since 1.13.0
8742
- */
8743
8768
  Helper.reopenClass({
8744
8769
  isHelperFactory: true
8745
8770
  });
@@ -8774,28 +8799,6 @@ enifed('ember-glimmer/helper', ['exports', 'ember-utils', 'ember-runtime', 'glim
8774
8799
 
8775
8800
  exports.default = Helper;
8776
8801
  });
8777
-
8778
- /**
8779
- On a class-based helper, it may be useful to force a recomputation of that
8780
- helpers value. This is akin to `rerender` on a component.
8781
- For example, this component will rerender when the `currentUser` on a
8782
- session service changes:
8783
- ```js
8784
- // app/helpers/current-user-email.js
8785
- export default Ember.Helper.extend({
8786
- session: Ember.inject.service(),
8787
- onNewUser: Ember.observer('session.currentUser', function() {
8788
- this.recompute();
8789
- }),
8790
- compute() {
8791
- return this.get('session.currentUser.email');
8792
- }
8793
- });
8794
- ```
8795
- @method recompute
8796
- @public
8797
- @since 1.13.0
8798
- */
8799
8802
  enifed('ember-glimmer/helpers/-class', ['exports', 'ember-glimmer/utils/references', 'ember-runtime'], function (exports, _emberGlimmerUtilsReferences, _emberRuntime) {
8800
8803
  'use strict';
8801
8804
 
@@ -8888,8 +8891,10 @@ enifed('ember-glimmer/helpers/action', ['exports', 'ember-utils', 'ember-glimmer
8888
8891
 
8889
8892
  exports.createClosureAction = createClosureAction;
8890
8893
  var INVOKE = _emberUtils.symbol('INVOKE');
8891
-
8892
8894
  exports.INVOKE = INVOKE;
8895
+ var ACTION = _emberUtils.symbol('ACTION');
8896
+
8897
+ exports.ACTION = ACTION;
8893
8898
 
8894
8899
  var ClosureActionReference = (function (_CachedReference) {
8895
8900
  babelHelpers.inherits(ClosureActionReference, _CachedReference);
@@ -9023,6 +9028,7 @@ enifed('ember-glimmer/helpers/action', ['exports', 'ember-utils', 'ember-glimmer
9023
9028
  };
9024
9029
  }
9025
9030
 
9031
+ closureAction[ACTION] = true;
9026
9032
  return closureAction;
9027
9033
  }
9028
9034
  });
@@ -10459,15 +10465,6 @@ enifed('ember-glimmer/renderer', ['exports', 'ember-glimmer/utils/references', '
10459
10465
  this._scheduleRevalidate();
10460
10466
  };
10461
10467
 
10462
- Renderer.prototype.componentInitAttrs = function componentInitAttrs() {
10463
- // TODO: Remove me
10464
- };
10465
-
10466
- Renderer.prototype.ensureViewNotRendering = function ensureViewNotRendering() {
10467
- // TODO: Implement this
10468
- // throw new Error('Something you did caused a view to re-render after it rendered but before it was inserted into the DOM.');
10469
- };
10470
-
10471
10468
  Renderer.prototype.register = function register(view) {
10472
10469
  var id = _emberViews.getViewId(view);
10473
10470
  _emberMetal.assert('Attempted to register a view with an id already in use: ' + id, !this._viewRegistry[id]);
@@ -10597,6 +10594,8 @@ enifed('ember-glimmer/renderer', ['exports', 'ember-glimmer/utils/references', '
10597
10594
  globalShouldReflush = globalShouldReflush || shouldReflush;
10598
10595
  }
10599
10596
 
10597
+ this._lastRevision = _glimmerReference.CURRENT_TAG.value();
10598
+
10600
10599
  env.commit();
10601
10600
  } while (globalShouldReflush || roots.length > initialRootsLength);
10602
10601
 
@@ -10624,10 +10623,14 @@ enifed('ember-glimmer/renderer', ['exports', 'ember-glimmer/utils/references', '
10624
10623
  // while we are actively rendering roots
10625
10624
  this._isRenderingRoots = true;
10626
10625
 
10626
+ var completedWithoutError = false;
10627
10627
  try {
10628
10628
  this._renderRoots();
10629
+ completedWithoutError = true;
10629
10630
  } finally {
10630
- this._lastRevision = _glimmerReference.CURRENT_TAG.value();
10631
+ if (!completedWithoutError) {
10632
+ this._lastRevision = _glimmerReference.CURRENT_TAG.value();
10633
+ }
10631
10634
  this._isRenderingRoots = false;
10632
10635
  }
10633
10636
  };
@@ -11070,8 +11073,14 @@ babelHelpers.classCallCheck(this, CurlyComponentManager);
11070
11073
  component.trigger('didInitAttrs', { attrs: attrs });
11071
11074
  component.trigger('didReceiveAttrs', { newAttrs: attrs });
11072
11075
 
11073
- if (environment.isInteractive) {
11074
- component.trigger('willRender');
11076
+ // We usually do this in the `didCreateElement`, but that hook doesn't fire for tagless components
11077
+ if (component.tagName === '') {
11078
+ component._transitionTo('hasElement');
11079
+
11080
+ if (environment.isInteractive) {
11081
+ component.trigger('willInsertElement');
11082
+ component.trigger('willRender');
11083
+ }
11075
11084
  }
11076
11085
 
11077
11086
  var bucket = new ComponentStateBucket(environment, component, processedArgs, finalizer);
@@ -11155,6 +11164,7 @@ babelHelpers.classCallCheck(this, CurlyComponentManager);
11155
11164
 
11156
11165
  if (environment.isInteractive) {
11157
11166
  component.trigger('willInsertElement');
11167
+ component.trigger('willRender');
11158
11168
  }
11159
11169
  };
11160
11170
 
@@ -11255,8 +11265,14 @@ babelHelpers.classCallCheck(this, TopComponentManager);
11255
11265
  component.trigger('didInitAttrs');
11256
11266
  component.trigger('didReceiveAttrs');
11257
11267
 
11258
- if (environment.isInteractive) {
11259
- component.trigger('willRender');
11268
+ // We usually do this in the `didCreateElement`, but that hook doesn't fire for tagless components
11269
+ if (component.tagName === '') {
11270
+ component._transitionTo('hasElement');
11271
+
11272
+ if (environment.isInteractive) {
11273
+ component.trigger('willInsertElement');
11274
+ component.trigger('willRender');
11275
+ }
11260
11276
  }
11261
11277
 
11262
11278
  processComponentInitializationAssertions(component, {});
@@ -12146,6 +12162,17 @@ enifed('ember-glimmer/utils/bindings', ['exports', 'glimmer-runtime', 'ember-met
12146
12162
  }
12147
12163
 
12148
12164
  function referenceForParts(component, parts) {
12165
+ var isAttrs = parts[0] === 'attrs';
12166
+
12167
+ // TODO deprecate this
12168
+ if (isAttrs) {
12169
+ parts.shift();
12170
+
12171
+ if (parts.length === 1) {
12172
+ return referenceForKey(component, parts[0]);
12173
+ }
12174
+ }
12175
+
12149
12176
  return _glimmerReference.referenceFromParts(component[_emberGlimmerComponent.ROOT_REF], parts);
12150
12177
  }
12151
12178
 
@@ -12676,7 +12703,7 @@ enifed('ember-glimmer/utils/iterable', ['exports', 'ember-utils', 'ember-metal',
12676
12703
  return ArrayIterable;
12677
12704
  })();
12678
12705
  });
12679
- enifed('ember-glimmer/utils/process-args', ['exports', 'ember-utils', 'glimmer-reference', 'ember-glimmer/component', 'ember-glimmer/utils/references', 'ember-views'], function (exports, _emberUtils, _glimmerReference, _emberGlimmerComponent, _emberGlimmerUtilsReferences, _emberViews) {
12706
+ enifed('ember-glimmer/utils/process-args', ['exports', 'ember-utils', 'glimmer-reference', 'ember-glimmer/component', 'ember-glimmer/utils/references', 'ember-views', 'ember-glimmer/helpers/action'], function (exports, _emberUtils, _glimmerReference, _emberGlimmerComponent, _emberGlimmerUtilsReferences, _emberViews, _emberGlimmerHelpersAction) {
12680
12707
  'use strict';
12681
12708
 
12682
12709
  exports.default = processArgs;
@@ -12734,7 +12761,9 @@ enifed('ember-glimmer/utils/process-args', ['exports', 'ember-utils', 'glimmer-r
12734
12761
  var ref = namedArgs.get(_name);
12735
12762
  var value = attrs[_name];
12736
12763
 
12737
- if (ref[_emberGlimmerUtilsReferences.UPDATE]) {
12764
+ if (typeof value === 'function' && value[_emberGlimmerHelpersAction.ACTION]) {
12765
+ attrs[_name] = value;
12766
+ } else if (ref[_emberGlimmerUtilsReferences.UPDATE]) {
12738
12767
  attrs[_name] = new MutableCell(ref, value);
12739
12768
  }
12740
12769
 
@@ -13079,6 +13108,10 @@ enifed('ember-glimmer/utils/references', ['exports', 'ember-utils', 'ember-metal
13079
13108
 
13080
13109
  _parentObjectTag.update(_emberMetal.tagFor(parentValue));
13081
13110
 
13111
+ if (typeof parentValue === 'string' && _propertyKey === 'length') {
13112
+ return parentValue.length;
13113
+ }
13114
+
13082
13115
  if (typeof parentValue === 'object' && parentValue) {
13083
13116
  if (true) {
13084
13117
  var meta = _emberMetal.meta(parentValue);
@@ -20665,19 +20698,12 @@ enifed('ember-metal/set_properties', ['exports', 'ember-metal/property_events',
20665
20698
  return properties;
20666
20699
  }
20667
20700
  });
20668
- enifed('ember-metal/tags', ['exports', 'ember-metal/meta', 'require'], function (exports, _emberMetalMeta, _require2) {
20701
+ enifed('ember-metal/tags', ['exports', 'glimmer-reference', 'ember-metal/meta', 'require'], function (exports, _glimmerReference, _emberMetalMeta, _require) {
20669
20702
  'use strict';
20670
20703
 
20671
20704
  exports.setHasViews = setHasViews;
20672
20705
  exports.tagFor = tagFor;
20673
-
20674
- var hasGlimmer = _require2.has('glimmer-reference');
20675
-
20676
- var CONSTANT_TAG = undefined,
20677
- CURRENT_TAG = undefined,
20678
- DirtyableTag = undefined,
20679
- makeTag = undefined,
20680
- run = undefined;
20706
+ exports.markObjectAsDirty = markObjectAsDirty;
20681
20707
 
20682
20708
  var hasViews = function () {
20683
20709
  return false;
@@ -20687,56 +20713,41 @@ enifed('ember-metal/tags', ['exports', 'ember-metal/meta', 'require'], function
20687
20713
  hasViews = fn;
20688
20714
  }
20689
20715
 
20690
- var markObjectAsDirty = undefined;
20691
-
20692
- exports.markObjectAsDirty = markObjectAsDirty;
20716
+ function makeTag() {
20717
+ return new _glimmerReference.DirtyableTag();
20718
+ }
20693
20719
 
20694
20720
  function tagFor(object, _meta) {
20695
- if (!hasGlimmer) {
20696
- throw new Error('Cannot call tagFor without Glimmer');
20697
- }
20698
-
20699
20721
  if (typeof object === 'object' && object) {
20700
20722
  var meta = _meta || _emberMetalMeta.meta(object);
20701
20723
  return meta.writableTag(makeTag);
20702
20724
  } else {
20703
- return CONSTANT_TAG;
20725
+ return _glimmerReference.CONSTANT_TAG;
20726
+ }
20727
+ }
20728
+
20729
+ function markObjectAsDirty(meta) {
20730
+ var tag = meta && meta.readableTag();
20731
+
20732
+ if (tag) {
20733
+ ensureRunloop();
20734
+ tag.dirty();
20704
20735
  }
20705
20736
  }
20706
20737
 
20738
+ var run = undefined;
20739
+
20707
20740
  function K() {}
20741
+
20708
20742
  function ensureRunloop() {
20709
20743
  if (!run) {
20710
- run = _require2.default('ember-metal/run_loop').default;
20744
+ run = _require.default('ember-metal/run_loop').default;
20711
20745
  }
20712
20746
 
20713
20747
  if (hasViews() && !run.backburner.currentInstance) {
20714
20748
  run.schedule('actions', K);
20715
20749
  }
20716
20750
  }
20717
-
20718
- if (hasGlimmer) {
20719
- var _require = _require2.default('glimmer-reference');
20720
-
20721
- DirtyableTag = _require.DirtyableTag;
20722
- CONSTANT_TAG = _require.CONSTANT_TAG;
20723
- CURRENT_TAG = _require.CURRENT_TAG;
20724
-
20725
- makeTag = function () {
20726
- return new DirtyableTag();
20727
- };
20728
-
20729
- exports.markObjectAsDirty = markObjectAsDirty = function (meta) {
20730
- var tag = meta && meta.readableTag();
20731
-
20732
- if (tag) {
20733
- ensureRunloop();
20734
- tag.dirty();
20735
- }
20736
- };
20737
- } else {
20738
- exports.markObjectAsDirty = markObjectAsDirty = function () {};
20739
- }
20740
20751
  });
20741
20752
  enifed("ember-metal/testing", ["exports"], function (exports) {
20742
20753
  "use strict";
@@ -20826,7 +20837,7 @@ enifed('ember-metal/transaction', ['exports', 'ember-metal/meta', 'ember-metal/d
20826
20837
  label = 'the same value';
20827
20838
  }
20828
20839
 
20829
- return 'You modified ' + parts.join('.') + ' twice in a single render. This was unreliable and slow in Ember 1.x and ' + implication;
20840
+ return 'You modified ' + parts.join('.') + ' twice on ' + object + ' in a single render. This was unreliable and slow in Ember 1.x and ' + implication;
20830
20841
  })(), false);
20831
20842
 
20832
20843
  shouldReflush = true;
@@ -28849,6 +28860,7 @@ enifed('ember-runtime/index', ['exports', 'ember-runtime/ext/string', 'ember-run
28849
28860
  'use strict';
28850
28861
 
28851
28862
  exports.Object = _emberRuntimeSystemObject.default;
28863
+ exports.FrameworkObject = _emberRuntimeSystemObject.FrameworkObject;
28852
28864
  exports.String = _emberRuntimeSystemString.default;
28853
28865
  exports.RegistryProxyMixin = _emberRuntimeMixinsRegistry_proxy.default;
28854
28866
  exports.buildFakeRegistryWithDeprecations = _emberRuntimeMixinsRegistry_proxy.buildFakeRegistryWithDeprecations;
@@ -28869,7 +28881,6 @@ enifed('ember-runtime/index', ['exports', 'ember-runtime/ext/string', 'ember-run
28869
28881
  exports.ArrayProxy = _emberRuntimeSystemArray_proxy.default;
28870
28882
  exports.ObjectProxy = _emberRuntimeSystemObject_proxy.default;
28871
28883
  exports.CoreObject = _emberRuntimeSystemCore_object.default;
28872
- exports.POST_INIT = _emberRuntimeSystemCore_object.POST_INIT;
28873
28884
  exports.NativeArray = _emberRuntimeSystemNative_array.default;
28874
28885
  exports.A = _emberRuntimeSystemNative_array.A;
28875
28886
  exports.ActionHandler = _emberRuntimeMixinsAction_handler.default;
@@ -29067,7 +29078,7 @@ enifed('ember-runtime/is-equal', ['exports'], function (exports) {
29067
29078
  return a === b;
29068
29079
  }
29069
29080
  });
29070
- enifed('ember-runtime/mixins/-proxy', ['exports', 'ember-utils', 'ember-metal', 'ember-runtime/computed/computed_macros', 'ember-runtime/system/core_object', 'require'], function (exports, _emberUtils, _emberMetal, _emberRuntimeComputedComputed_macros, _emberRuntimeSystemCore_object, _require2) {
29081
+ enifed('ember-runtime/mixins/-proxy', ['exports', 'glimmer-reference', 'ember-utils', 'ember-metal', 'ember-runtime/computed/computed_macros'], function (exports, _glimmerReference, _emberUtils, _emberMetal, _emberRuntimeComputedComputed_macros) {
29071
29082
  /**
29072
29083
  @module ember
29073
29084
  @submodule ember-runtime
@@ -29075,12 +29086,10 @@ enifed('ember-runtime/mixins/-proxy', ['exports', 'ember-utils', 'ember-metal',
29075
29086
 
29076
29087
  'use strict';
29077
29088
 
29078
- var _PROXY_MIXIN_PROPS;
29089
+ var _Mixin$create;
29079
29090
 
29080
29091
  exports.isProxy = isProxy;
29081
29092
 
29082
- var hasGlimmer = _require2.has('glimmer-reference');
29083
-
29084
29093
  var IS_PROXY = _emberUtils.symbol('IS_PROXY');
29085
29094
 
29086
29095
  function isProxy(value) {
@@ -29103,31 +29112,66 @@ enifed('ember-runtime/mixins/-proxy', ['exports', 'ember-utils', 'ember-metal',
29103
29112
  _emberMetal.propertyDidChange(this, key);
29104
29113
  }
29105
29114
 
29106
- /**
29107
- `Ember.ProxyMixin` forwards all properties not defined by the proxy itself
29108
- to a proxied `content` object. See Ember.ObjectProxy for more details.
29109
-
29110
- @class ProxyMixin
29111
- @namespace Ember
29112
- @private
29113
- */
29114
- var PROXY_MIXIN_PROPS = (_PROXY_MIXIN_PROPS = {}, _PROXY_MIXIN_PROPS[IS_PROXY] = true, _PROXY_MIXIN_PROPS.content = null, _PROXY_MIXIN_PROPS._contentDidChange = _emberMetal.observer('content', function () {
29115
+ var ProxyTag = (function (_CachedTag) {
29116
+ babelHelpers.inherits(ProxyTag, _CachedTag);
29117
+
29118
+ function ProxyTag(proxy) {
29119
+ babelHelpers.classCallCheck(this, ProxyTag);
29120
+
29121
+ _CachedTag.call(this);
29122
+
29123
+ var content = _emberMetal.get(proxy, 'content');
29124
+
29125
+ this.proxy = proxy;
29126
+ this.proxyWrapperTag = new _glimmerReference.DirtyableTag();
29127
+ this.proxyContentTag = new _glimmerReference.UpdatableTag(_emberMetal.tagFor(content));
29128
+ }
29129
+
29130
+ /**
29131
+ `Ember.ProxyMixin` forwards all properties not defined by the proxy itself
29132
+ to a proxied `content` object. See Ember.ObjectProxy for more details.
29133
+
29134
+ @class ProxyMixin
29135
+ @namespace Ember
29136
+ @private
29137
+ */
29138
+
29139
+ ProxyTag.prototype.compute = function compute() {
29140
+ return Math.max(this.proxyWrapperTag.value(), this.proxyContentTag.value());
29141
+ };
29142
+
29143
+ ProxyTag.prototype.dirty = function dirty() {
29144
+ this.proxyWrapperTag.dirty();
29145
+ };
29146
+
29147
+ ProxyTag.prototype.contentDidChange = function contentDidChange() {
29148
+ var content = _emberMetal.get(this.proxy, 'content');
29149
+ this.proxyContentTag.update(_emberMetal.tagFor(content));
29150
+ };
29151
+
29152
+ return ProxyTag;
29153
+ })(_glimmerReference.CachedTag);
29154
+
29155
+ exports.default = _emberMetal.Mixin.create((_Mixin$create = {}, _Mixin$create[IS_PROXY] = true, _Mixin$create.content = null, _Mixin$create._initializeTag = _emberMetal.on('init', function () {
29156
+ _emberMetal.meta(this)._tag = new ProxyTag(this);
29157
+ }), _Mixin$create._contentDidChange = _emberMetal.observer('content', function () {
29115
29158
  _emberMetal.assert('Can\'t set Proxy\'s content to itself', _emberMetal.get(this, 'content') !== this);
29116
- }), _PROXY_MIXIN_PROPS.isTruthy = _emberRuntimeComputedComputed_macros.bool('content'), _PROXY_MIXIN_PROPS._debugContainerKey = null, _PROXY_MIXIN_PROPS.willWatchProperty = function (key) {
29159
+ _emberMetal.tagFor(this).contentDidChange();
29160
+ }), _Mixin$create.isTruthy = _emberRuntimeComputedComputed_macros.bool('content'), _Mixin$create._debugContainerKey = null, _Mixin$create.willWatchProperty = function (key) {
29117
29161
  var contentKey = 'content.' + key;
29118
29162
  _emberMetal._addBeforeObserver(this, contentKey, null, contentPropertyWillChange);
29119
29163
  _emberMetal.addObserver(this, contentKey, null, contentPropertyDidChange);
29120
- }, _PROXY_MIXIN_PROPS.didUnwatchProperty = function (key) {
29164
+ }, _Mixin$create.didUnwatchProperty = function (key) {
29121
29165
  var contentKey = 'content.' + key;
29122
29166
  _emberMetal._removeBeforeObserver(this, contentKey, null, contentPropertyWillChange);
29123
29167
  _emberMetal.removeObserver(this, contentKey, null, contentPropertyDidChange);
29124
- }, _PROXY_MIXIN_PROPS.unknownProperty = function (key) {
29168
+ }, _Mixin$create.unknownProperty = function (key) {
29125
29169
  var content = _emberMetal.get(this, 'content');
29126
29170
  if (content) {
29127
29171
  _emberMetal.deprecate('You attempted to access `' + key + '` from `' + this + '`, but object proxying is deprecated. Please use `model.' + key + '` instead.', !this.isController, { id: 'ember-runtime.controller-proxy', until: '3.0.0' });
29128
29172
  return _emberMetal.get(content, key);
29129
29173
  }
29130
- }, _PROXY_MIXIN_PROPS.setUnknownProperty = function (key, value) {
29174
+ }, _Mixin$create.setUnknownProperty = function (key, value) {
29131
29175
  var m = _emberMetal.meta(this);
29132
29176
  if (m.proto === this) {
29133
29177
  // if marked as prototype then just defineProperty
@@ -29141,55 +29185,7 @@ enifed('ember-runtime/mixins/-proxy', ['exports', 'ember-utils', 'ember-metal',
29141
29185
 
29142
29186
  _emberMetal.deprecate('You attempted to set `' + key + '` from `' + this + '`, but object proxying is deprecated. Please use `model.' + key + '` instead.', !this.isController, { id: 'ember-runtime.controller-proxy', until: '3.0.0' });
29143
29187
  return _emberMetal.set(content, key, value);
29144
- }, _PROXY_MIXIN_PROPS);
29145
-
29146
- if (hasGlimmer) {
29147
- (function () {
29148
- var _require = _require2.default('glimmer-reference');
29149
-
29150
- var CachedTag = _require.CachedTag;
29151
- var DirtyableTag = _require.DirtyableTag;
29152
- var UpdatableTag = _require.UpdatableTag;
29153
-
29154
- var ProxyTag = (function (_CachedTag) {
29155
- babelHelpers.inherits(ProxyTag, _CachedTag);
29156
-
29157
- function ProxyTag(proxy, content) {
29158
- babelHelpers.classCallCheck(this, ProxyTag);
29159
-
29160
- _CachedTag.call(this);
29161
- this.proxyWrapperTag = new DirtyableTag();
29162
- this.proxyContentTag = new UpdatableTag(_emberMetal.tagFor(content));
29163
- }
29164
-
29165
- ProxyTag.prototype.compute = function compute() {
29166
- return Math.max(this.proxyWrapperTag.value(), this.proxyContentTag.value());
29167
- };
29168
-
29169
- ProxyTag.prototype.dirty = function dirty() {
29170
- this.proxyWrapperTag.dirty();
29171
- };
29172
-
29173
- ProxyTag.prototype.contentDidChange = function contentDidChange(content) {
29174
- this.proxyContentTag.update(_emberMetal.tagFor(content));
29175
- };
29176
-
29177
- return ProxyTag;
29178
- })(CachedTag);
29179
-
29180
- PROXY_MIXIN_PROPS[_emberRuntimeSystemCore_object.POST_INIT] = function postInit() {
29181
- this._super();
29182
- _emberMetal.meta(this)._tag = new ProxyTag(this, _emberMetal.get(this, 'content'));
29183
- };
29184
-
29185
- PROXY_MIXIN_PROPS._contentDidChange = _emberMetal.observer('content', function () {
29186
- _emberMetal.assert('Can\'t set Proxy\'s content to itself', _emberMetal.get(this, 'content') !== this);
29187
- _emberMetal.meta(this)._tag.contentDidChange(_emberMetal.get(this, 'content'));
29188
- });
29189
- })();
29190
- }
29191
-
29192
- exports.default = _emberMetal.Mixin.create(PROXY_MIXIN_PROPS);
29188
+ }, _Mixin$create));
29193
29189
  });
29194
29190
 
29195
29191
  /**
@@ -33518,10 +33514,6 @@ enifed('ember-runtime/system/core_object', ['exports', 'ember-utils', 'ember-met
33518
33514
  // using ember-metal/lib/main here to ensure that ember-debug is setup
33519
33515
  // if present
33520
33516
 
33521
- var _Mixin$create;
33522
-
33523
- var POST_INIT = _emberUtils.symbol('POST_INIT');
33524
- exports.POST_INIT = POST_INIT;
33525
33517
  var schedule = _emberMetal.run.schedule;
33526
33518
  var applyMixin = _emberMetal.Mixin._apply;
33527
33519
  var finishPartial = _emberMetal.Mixin.finishPartial;
@@ -33628,8 +33620,6 @@ enifed('ember-runtime/system/core_object', ['exports', 'ember-utils', 'ember-met
33628
33620
 
33629
33621
  this.init.apply(this, arguments);
33630
33622
 
33631
- this[POST_INIT]();
33632
-
33633
33623
  m.proto = proto;
33634
33624
  _emberMetal.finishChains(this);
33635
33625
  _emberMetal.sendEvent(this, 'init');
@@ -33674,7 +33664,7 @@ enifed('ember-runtime/system/core_object', ['exports', 'ember-utils', 'ember-met
33674
33664
  CoreObject.toString = function () {
33675
33665
  return 'Ember.CoreObject';
33676
33666
  };
33677
- CoreObject.PrototypeMixin = _emberMetal.Mixin.create((_Mixin$create = {
33667
+ CoreObject.PrototypeMixin = _emberMetal.Mixin.create({
33678
33668
  reopen: function () {
33679
33669
  for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
33680
33670
  args[_key] = arguments[_key];
@@ -33707,39 +33697,244 @@ enifed('ember-runtime/system/core_object', ['exports', 'ember-utils', 'ember-met
33707
33697
  @method init
33708
33698
  @public
33709
33699
  */
33710
- init: function () {}
33700
+ init: function () {},
33711
33701
 
33712
- }, _Mixin$create[POST_INIT] = function () {}, _Mixin$create.__defineNonEnumerable = function (property) {
33713
- Object.defineProperty(this, property.name, property.descriptor);
33714
- //this[property.name] = property.descriptor.value;
33715
- }, _Mixin$create.concatenatedProperties = null, _Mixin$create.mergedProperties = null, _Mixin$create.isDestroyed = false, _Mixin$create.isDestroying = false, _Mixin$create.destroy = function () {
33716
- if (this.isDestroying) {
33717
- return;
33718
- }
33719
- this.isDestroying = true;
33702
+ __defineNonEnumerable: function (property) {
33703
+ Object.defineProperty(this, property.name, property.descriptor);
33704
+ //this[property.name] = property.descriptor.value;
33705
+ },
33720
33706
 
33721
- schedule('actions', this, this.willDestroy);
33722
- schedule('destroy', this, this._scheduledDestroy);
33723
- return this;
33724
- }, _Mixin$create.willDestroy = function () {}, _Mixin$create._scheduledDestroy = function () {
33725
- if (this.isDestroyed) {
33726
- return;
33727
- }
33728
- _emberMetal.destroy(this);
33729
- this.isDestroyed = true;
33730
- }, _Mixin$create.bind = function (to, from) {
33731
- if (!(from instanceof _emberMetal.Binding)) {
33732
- from = _emberMetal.Binding.from(from);
33733
- }
33734
- from.to(to).connect(this);
33735
- return from;
33736
- }, _Mixin$create.toString = function () {
33737
- var hasToStringExtension = typeof this.toStringExtension === 'function';
33738
- var extension = hasToStringExtension ? ':' + this.toStringExtension() : '';
33739
- var ret = '<' + this.constructor.toString() + ':' + _emberUtils.guidFor(this) + extension + '>';
33707
+ /**
33708
+ Defines the properties that will be concatenated from the superclass
33709
+ (instead of overridden).
33710
+ By default, when you extend an Ember class a property defined in
33711
+ the subclass overrides a property with the same name that is defined
33712
+ in the superclass. However, there are some cases where it is preferable
33713
+ to build up a property's value by combining the superclass' property
33714
+ value with the subclass' value. An example of this in use within Ember
33715
+ is the `classNames` property of `Ember.View`.
33716
+ Here is some sample code showing the difference between a concatenated
33717
+ property and a normal one:
33718
+ ```javascript
33719
+ const Bar = Ember.Object.extend({
33720
+ // Configure which properties to concatenate
33721
+ concatenatedProperties: ['concatenatedProperty'],
33722
+ someNonConcatenatedProperty: ['bar'],
33723
+ concatenatedProperty: ['bar']
33724
+ });
33725
+ const FooBar = Bar.extend({
33726
+ someNonConcatenatedProperty: ['foo'],
33727
+ concatenatedProperty: ['foo']
33728
+ });
33729
+ let fooBar = FooBar.create();
33730
+ fooBar.get('someNonConcatenatedProperty'); // ['foo']
33731
+ fooBar.get('concatenatedProperty'); // ['bar', 'foo']
33732
+ ```
33733
+ This behavior extends to object creation as well. Continuing the
33734
+ above example:
33735
+ ```javascript
33736
+ let fooBar = FooBar.create({
33737
+ someNonConcatenatedProperty: ['baz'],
33738
+ concatenatedProperty: ['baz']
33739
+ })
33740
+ fooBar.get('someNonConcatenatedProperty'); // ['baz']
33741
+ fooBar.get('concatenatedProperty'); // ['bar', 'foo', 'baz']
33742
+ ```
33743
+ Adding a single property that is not an array will just add it in the array:
33744
+ ```javascript
33745
+ let fooBar = FooBar.create({
33746
+ concatenatedProperty: 'baz'
33747
+ })
33748
+ view.get('concatenatedProperty'); // ['bar', 'foo', 'baz']
33749
+ ```
33750
+ Using the `concatenatedProperties` property, we can tell Ember to mix the
33751
+ content of the properties.
33752
+ In `Ember.Component` the `classNames`, `classNameBindings` and
33753
+ `attributeBindings` properties are concatenated.
33754
+ This feature is available for you to use throughout the Ember object model,
33755
+ although typical app developers are likely to use it infrequently. Since
33756
+ it changes expectations about behavior of properties, you should properly
33757
+ document its usage in each individual concatenated property (to not
33758
+ mislead your users to think they can override the property in a subclass).
33759
+ @property concatenatedProperties
33760
+ @type Array
33761
+ @default null
33762
+ @public
33763
+ */
33764
+ concatenatedProperties: null,
33740
33765
 
33741
- return ret;
33742
- }, _Mixin$create));
33766
+ /**
33767
+ Defines the properties that will be merged from the superclass
33768
+ (instead of overridden).
33769
+ By default, when you extend an Ember class a property defined in
33770
+ the subclass overrides a property with the same name that is defined
33771
+ in the superclass. However, there are some cases where it is preferable
33772
+ to build up a property's value by merging the superclass property value
33773
+ with the subclass property's value. An example of this in use within Ember
33774
+ is the `queryParams` property of routes.
33775
+ Here is some sample code showing the difference between a merged
33776
+ property and a normal one:
33777
+ ```javascript
33778
+ const Bar = Ember.Object.extend({
33779
+ // Configure which properties are to be merged
33780
+ mergedProperties: ['mergedProperty'],
33781
+ someNonMergedProperty: {
33782
+ nonMerged: 'superclass value of nonMerged'
33783
+ },
33784
+ mergedProperty: {
33785
+ page: {replace: false},
33786
+ limit: {replace: true}
33787
+ }
33788
+ });
33789
+ const FooBar = Bar.extend({
33790
+ someNonMergedProperty: {
33791
+ completelyNonMerged: 'subclass value of nonMerged'
33792
+ },
33793
+ mergedProperty: {
33794
+ limit: {replace: false}
33795
+ }
33796
+ });
33797
+ let fooBar = FooBar.create();
33798
+ fooBar.get('someNonMergedProperty');
33799
+ // => { completelyNonMerged: 'subclass value of nonMerged' }
33800
+ //
33801
+ // Note the entire object, including the nonMerged property of
33802
+ // the superclass object, has been replaced
33803
+ fooBar.get('mergedProperty');
33804
+ // => {
33805
+ // page: {replace: false},
33806
+ // limit: {replace: false}
33807
+ // }
33808
+ //
33809
+ // Note the page remains from the superclass, and the
33810
+ // `limit` property's value of `false` has been merged from
33811
+ // the subclass.
33812
+ ```
33813
+ This behavior is not available during object `create` calls. It is only
33814
+ available at `extend` time.
33815
+ In `Ember.Route` the `queryParams` property is merged.
33816
+ This feature is available for you to use throughout the Ember object model,
33817
+ although typical app developers are likely to use it infrequently. Since
33818
+ it changes expectations about behavior of properties, you should properly
33819
+ document its usage in each individual merged property (to not
33820
+ mislead your users to think they can override the property in a subclass).
33821
+ @property mergedProperties
33822
+ @type Array
33823
+ @default null
33824
+ @public
33825
+ */
33826
+ mergedProperties: null,
33827
+
33828
+ /**
33829
+ Destroyed object property flag.
33830
+ if this property is `true` the observers and bindings were already
33831
+ removed by the effect of calling the `destroy()` method.
33832
+ @property isDestroyed
33833
+ @default false
33834
+ @public
33835
+ */
33836
+ isDestroyed: false,
33837
+
33838
+ /**
33839
+ Destruction scheduled flag. The `destroy()` method has been called.
33840
+ The object stays intact until the end of the run loop at which point
33841
+ the `isDestroyed` flag is set.
33842
+ @property isDestroying
33843
+ @default false
33844
+ @public
33845
+ */
33846
+ isDestroying: false,
33847
+
33848
+ /**
33849
+ Destroys an object by setting the `isDestroyed` flag and removing its
33850
+ metadata, which effectively destroys observers and bindings.
33851
+ If you try to set a property on a destroyed object, an exception will be
33852
+ raised.
33853
+ Note that destruction is scheduled for the end of the run loop and does not
33854
+ happen immediately. It will set an isDestroying flag immediately.
33855
+ @method destroy
33856
+ @return {Ember.Object} receiver
33857
+ @public
33858
+ */
33859
+ destroy: function () {
33860
+ if (this.isDestroying) {
33861
+ return;
33862
+ }
33863
+ this.isDestroying = true;
33864
+
33865
+ schedule('actions', this, this.willDestroy);
33866
+ schedule('destroy', this, this._scheduledDestroy);
33867
+ return this;
33868
+ },
33869
+
33870
+ /**
33871
+ Override to implement teardown.
33872
+ @method willDestroy
33873
+ @public
33874
+ */
33875
+ willDestroy: function () {},
33876
+
33877
+ /**
33878
+ Invoked by the run loop to actually destroy the object. This is
33879
+ scheduled for execution by the `destroy` method.
33880
+ @private
33881
+ @method _scheduledDestroy
33882
+ */
33883
+ _scheduledDestroy: function () {
33884
+ if (this.isDestroyed) {
33885
+ return;
33886
+ }
33887
+ _emberMetal.destroy(this);
33888
+ this.isDestroyed = true;
33889
+ },
33890
+
33891
+ bind: function (to, from) {
33892
+ if (!(from instanceof _emberMetal.Binding)) {
33893
+ from = _emberMetal.Binding.from(from);
33894
+ }
33895
+ from.to(to).connect(this);
33896
+ return from;
33897
+ },
33898
+
33899
+ /**
33900
+ Returns a string representation which attempts to provide more information
33901
+ than Javascript's `toString` typically does, in a generic way for all Ember
33902
+ objects.
33903
+ ```javascript
33904
+ const Person = Ember.Object.extend()
33905
+ person = Person.create()
33906
+ person.toString() //=> "<Person:ember1024>"
33907
+ ```
33908
+ If the object's class is not defined on an Ember namespace, it will
33909
+ indicate it is a subclass of the registered superclass:
33910
+ ```javascript
33911
+ const Student = Person.extend()
33912
+ let student = Student.create()
33913
+ student.toString() //=> "<(subclass of Person):ember1025>"
33914
+ ```
33915
+ If the method `toStringExtension` is defined, its return value will be
33916
+ included in the output.
33917
+ ```javascript
33918
+ const Teacher = Person.extend({
33919
+ toStringExtension() {
33920
+ return this.get('fullName');
33921
+ }
33922
+ });
33923
+ teacher = Teacher.create()
33924
+ teacher.toString(); //=> "<Teacher:ember1026:Tom Dale>"
33925
+ ```
33926
+ @method toString
33927
+ @return {String} string representation
33928
+ @public
33929
+ */
33930
+ toString: function () {
33931
+ var hasToStringExtension = typeof this.toStringExtension === 'function';
33932
+ var extension = hasToStringExtension ? ':' + this.toStringExtension() : '';
33933
+ var ret = '<' + this.constructor.toString() + ':' + _emberUtils.guidFor(this) + extension + '>';
33934
+
33935
+ return ret;
33936
+ }
33937
+ });
33743
33938
 
33744
33939
  CoreObject.PrototypeMixin.ownerConstructor = CoreObject;
33745
33940
 
@@ -34120,200 +34315,6 @@ enifed('ember-runtime/system/core_object', ['exports', 'ember-utils', 'ember-met
34120
34315
 
34121
34316
  exports.default = CoreObject;
34122
34317
  });
34123
-
34124
- /**
34125
- Defines the properties that will be concatenated from the superclass
34126
- (instead of overridden).
34127
- By default, when you extend an Ember class a property defined in
34128
- the subclass overrides a property with the same name that is defined
34129
- in the superclass. However, there are some cases where it is preferable
34130
- to build up a property's value by combining the superclass' property
34131
- value with the subclass' value. An example of this in use within Ember
34132
- is the `classNames` property of `Ember.View`.
34133
- Here is some sample code showing the difference between a concatenated
34134
- property and a normal one:
34135
- ```javascript
34136
- const Bar = Ember.Object.extend({
34137
- // Configure which properties to concatenate
34138
- concatenatedProperties: ['concatenatedProperty'],
34139
- someNonConcatenatedProperty: ['bar'],
34140
- concatenatedProperty: ['bar']
34141
- });
34142
- const FooBar = Bar.extend({
34143
- someNonConcatenatedProperty: ['foo'],
34144
- concatenatedProperty: ['foo']
34145
- });
34146
- let fooBar = FooBar.create();
34147
- fooBar.get('someNonConcatenatedProperty'); // ['foo']
34148
- fooBar.get('concatenatedProperty'); // ['bar', 'foo']
34149
- ```
34150
- This behavior extends to object creation as well. Continuing the
34151
- above example:
34152
- ```javascript
34153
- let fooBar = FooBar.create({
34154
- someNonConcatenatedProperty: ['baz'],
34155
- concatenatedProperty: ['baz']
34156
- })
34157
- fooBar.get('someNonConcatenatedProperty'); // ['baz']
34158
- fooBar.get('concatenatedProperty'); // ['bar', 'foo', 'baz']
34159
- ```
34160
- Adding a single property that is not an array will just add it in the array:
34161
- ```javascript
34162
- let fooBar = FooBar.create({
34163
- concatenatedProperty: 'baz'
34164
- })
34165
- view.get('concatenatedProperty'); // ['bar', 'foo', 'baz']
34166
- ```
34167
- Using the `concatenatedProperties` property, we can tell Ember to mix the
34168
- content of the properties.
34169
- In `Ember.Component` the `classNames`, `classNameBindings` and
34170
- `attributeBindings` properties are concatenated.
34171
- This feature is available for you to use throughout the Ember object model,
34172
- although typical app developers are likely to use it infrequently. Since
34173
- it changes expectations about behavior of properties, you should properly
34174
- document its usage in each individual concatenated property (to not
34175
- mislead your users to think they can override the property in a subclass).
34176
- @property concatenatedProperties
34177
- @type Array
34178
- @default null
34179
- @public
34180
- */
34181
-
34182
- /**
34183
- Defines the properties that will be merged from the superclass
34184
- (instead of overridden).
34185
- By default, when you extend an Ember class a property defined in
34186
- the subclass overrides a property with the same name that is defined
34187
- in the superclass. However, there are some cases where it is preferable
34188
- to build up a property's value by merging the superclass property value
34189
- with the subclass property's value. An example of this in use within Ember
34190
- is the `queryParams` property of routes.
34191
- Here is some sample code showing the difference between a merged
34192
- property and a normal one:
34193
- ```javascript
34194
- const Bar = Ember.Object.extend({
34195
- // Configure which properties are to be merged
34196
- mergedProperties: ['mergedProperty'],
34197
- someNonMergedProperty: {
34198
- nonMerged: 'superclass value of nonMerged'
34199
- },
34200
- mergedProperty: {
34201
- page: {replace: false},
34202
- limit: {replace: true}
34203
- }
34204
- });
34205
- const FooBar = Bar.extend({
34206
- someNonMergedProperty: {
34207
- completelyNonMerged: 'subclass value of nonMerged'
34208
- },
34209
- mergedProperty: {
34210
- limit: {replace: false}
34211
- }
34212
- });
34213
- let fooBar = FooBar.create();
34214
- fooBar.get('someNonMergedProperty');
34215
- // => { completelyNonMerged: 'subclass value of nonMerged' }
34216
- //
34217
- // Note the entire object, including the nonMerged property of
34218
- // the superclass object, has been replaced
34219
- fooBar.get('mergedProperty');
34220
- // => {
34221
- // page: {replace: false},
34222
- // limit: {replace: false}
34223
- // }
34224
- //
34225
- // Note the page remains from the superclass, and the
34226
- // `limit` property's value of `false` has been merged from
34227
- // the subclass.
34228
- ```
34229
- This behavior is not available during object `create` calls. It is only
34230
- available at `extend` time.
34231
- In `Ember.Route` the `queryParams` property is merged.
34232
- This feature is available for you to use throughout the Ember object model,
34233
- although typical app developers are likely to use it infrequently. Since
34234
- it changes expectations about behavior of properties, you should properly
34235
- document its usage in each individual merged property (to not
34236
- mislead your users to think they can override the property in a subclass).
34237
- @property mergedProperties
34238
- @type Array
34239
- @default null
34240
- @public
34241
- */
34242
-
34243
- /**
34244
- Destroyed object property flag.
34245
- if this property is `true` the observers and bindings were already
34246
- removed by the effect of calling the `destroy()` method.
34247
- @property isDestroyed
34248
- @default false
34249
- @public
34250
- */
34251
-
34252
- /**
34253
- Destruction scheduled flag. The `destroy()` method has been called.
34254
- The object stays intact until the end of the run loop at which point
34255
- the `isDestroyed` flag is set.
34256
- @property isDestroying
34257
- @default false
34258
- @public
34259
- */
34260
-
34261
- /**
34262
- Destroys an object by setting the `isDestroyed` flag and removing its
34263
- metadata, which effectively destroys observers and bindings.
34264
- If you try to set a property on a destroyed object, an exception will be
34265
- raised.
34266
- Note that destruction is scheduled for the end of the run loop and does not
34267
- happen immediately. It will set an isDestroying flag immediately.
34268
- @method destroy
34269
- @return {Ember.Object} receiver
34270
- @public
34271
- */
34272
-
34273
- /**
34274
- Override to implement teardown.
34275
- @method willDestroy
34276
- @public
34277
- */
34278
-
34279
- /**
34280
- Invoked by the run loop to actually destroy the object. This is
34281
- scheduled for execution by the `destroy` method.
34282
- @private
34283
- @method _scheduledDestroy
34284
- */
34285
-
34286
- /**
34287
- Returns a string representation which attempts to provide more information
34288
- than Javascript's `toString` typically does, in a generic way for all Ember
34289
- objects.
34290
- ```javascript
34291
- const Person = Ember.Object.extend()
34292
- person = Person.create()
34293
- person.toString() //=> "<Person:ember1024>"
34294
- ```
34295
- If the object's class is not defined on an Ember namespace, it will
34296
- indicate it is a subclass of the registered superclass:
34297
- ```javascript
34298
- const Student = Person.extend()
34299
- let student = Student.create()
34300
- student.toString() //=> "<(subclass of Person):ember1025>"
34301
- ```
34302
- If the method `toStringExtension` is defined, its return value will be
34303
- included in the output.
34304
- ```javascript
34305
- const Teacher = Person.extend({
34306
- toStringExtension() {
34307
- return this.get('fullName');
34308
- }
34309
- });
34310
- teacher = Teacher.create()
34311
- teacher.toString(); //=> "<Teacher:ember1026:Tom Dale>"
34312
- ```
34313
- @method toString
34314
- @return {String} string representation
34315
- @public
34316
- */
34317
34318
  enifed('ember-runtime/system/each_proxy', ['exports', 'ember-utils', 'ember-metal', 'ember-runtime/mixins/array'], function (exports, _emberUtils, _emberMetal, _emberRuntimeMixinsArray) {
34318
34319
  'use strict';
34319
34320
 
@@ -34897,7 +34898,7 @@ enifed('ember-runtime/system/native_array', ['exports', 'ember-metal', 'ember-en
34897
34898
  exports.default = NativeArray;
34898
34899
  });
34899
34900
  // Ember.A circular
34900
- enifed('ember-runtime/system/object', ['exports', 'ember-runtime/system/core_object', 'ember-runtime/mixins/observable'], function (exports, _emberRuntimeSystemCore_object, _emberRuntimeMixinsObservable) {
34901
+ enifed('ember-runtime/system/object', ['exports', 'ember-utils', 'ember-metal', 'ember-runtime/system/core_object', 'ember-runtime/mixins/observable'], function (exports, _emberUtils, _emberMetal, _emberRuntimeSystemCore_object, _emberRuntimeMixinsObservable) {
34901
34902
  /**
34902
34903
  @module ember
34903
34904
  @submodule ember-runtime
@@ -34921,6 +34922,26 @@ enifed('ember-runtime/system/object', ['exports', 'ember-runtime/system/core_obj
34921
34922
  return 'Ember.Object';
34922
34923
  };
34923
34924
 
34925
+ var FrameworkObject = EmberObject;
34926
+
34927
+ exports.FrameworkObject = FrameworkObject;
34928
+ _emberMetal.runInDebug(function () {
34929
+ var _EmberObject$extend;
34930
+
34931
+ var INIT_WAS_CALLED = _emberUtils.symbol('INIT_WAS_CALLED');
34932
+ var ASSERT_INIT_WAS_CALLED = _emberUtils.symbol('ASSERT_INIT_WAS_CALLED');
34933
+
34934
+ exports.FrameworkObject = FrameworkObject = EmberObject.extend((_EmberObject$extend = {
34935
+ init: function () {
34936
+ this._super.apply(this, arguments);
34937
+ this[INIT_WAS_CALLED] = true;
34938
+ }
34939
+
34940
+ }, _EmberObject$extend[ASSERT_INIT_WAS_CALLED] = _emberMetal.on('init', function () {
34941
+ _emberMetal.assert('You must call `this._super(...arguments);` when overriding `init` on a framework object. Please update ' + this + ' to call `this._super(...arguments);` from `init`.', this[INIT_WAS_CALLED]);
34942
+ }), _EmberObject$extend));
34943
+ });
34944
+
34924
34945
  exports.default = EmberObject;
34925
34946
  });
34926
34947
  enifed('ember-runtime/system/object_proxy', ['exports', 'ember-runtime/system/object', 'ember-runtime/mixins/-proxy'], function (exports, _emberRuntimeSystemObject, _emberRuntimeMixinsProxy) {
@@ -38575,13 +38596,9 @@ enifed('ember-views/mixins/view_state_support', ['exports', 'ember-metal'], func
38575
38596
  }
38576
38597
  });
38577
38598
  });
38578
- enifed('ember-views/mixins/view_support', ['exports', 'ember-utils', 'ember-metal', 'ember-runtime', 'ember-environment', 'ember-views/system/utils', 'ember-views/system/jquery'], function (exports, _emberUtils, _emberMetal, _emberRuntime, _emberEnvironment, _emberViewsSystemUtils, _emberViewsSystemJquery) {
38599
+ enifed('ember-views/mixins/view_support', ['exports', 'ember-utils', 'ember-metal', 'ember-environment', 'ember-views/system/utils', 'ember-views/system/jquery'], function (exports, _emberUtils, _emberMetal, _emberEnvironment, _emberViewsSystemUtils, _emberViewsSystemJquery) {
38579
38600
  'use strict';
38580
38601
 
38581
- var _Mixin$create;
38582
-
38583
- var INIT_WAS_CALLED = _emberUtils.symbol('INIT_WAS_CALLED');
38584
-
38585
38602
  function K() {
38586
38603
  return this;
38587
38604
  }
@@ -38591,7 +38608,7 @@ enifed('ember-views/mixins/view_support', ['exports', 'ember-utils', 'ember-meta
38591
38608
  @namespace Ember
38592
38609
  @private
38593
38610
  */
38594
- exports.default = _emberMetal.Mixin.create((_Mixin$create = {
38611
+ exports.default = _emberMetal.Mixin.create({
38595
38612
  concatenatedProperties: ['attributeBindings'],
38596
38613
 
38597
38614
  // ..........................................................
@@ -38964,51 +38981,35 @@ enifed('ember-views/mixins/view_support', ['exports', 'ember-utils', 'ember-meta
38964
38981
  this.elementId = _emberUtils.guidFor(this);
38965
38982
  }
38966
38983
 
38967
- this[INIT_WAS_CALLED] = true;
38968
-
38969
- if (typeof this.didInitAttrs === 'function') {
38970
- _emberMetal.deprecate('[DEPRECATED] didInitAttrs called in ' + this.toString() + '.', false, {
38971
- id: 'ember-views.did-init-attrs',
38972
- until: '3.0.0',
38973
- url: 'http://emberjs.com/deprecations/v2.x#toc_ember-component-didinitattrs'
38974
- });
38975
- }
38984
+ _emberMetal.deprecate('[DEPRECATED] didInitAttrs called in ' + this.toString() + '.', typeof this.didInitAttrs !== 'function', {
38985
+ id: 'ember-views.did-init-attrs',
38986
+ until: '3.0.0',
38987
+ url: 'http://emberjs.com/deprecations/v2.x#toc_ember-component-didinitattrs'
38988
+ });
38976
38989
 
38977
38990
  _emberMetal.assert('Using a custom `.render` function is no longer supported.', !this.render);
38978
- }
38991
+ },
38979
38992
 
38980
- }, _Mixin$create[_emberRuntime.POST_INIT] = function () {
38981
- this._super();
38993
+ __defineNonEnumerable: function (property) {
38994
+ this[property.name] = property.descriptor.value;
38995
+ },
38982
38996
 
38983
- _emberMetal.assert('You must call `this._super(...arguments);` when implementing `init` in a component. Please update ' + this + ' to call `this._super` from `init`.', this[INIT_WAS_CALLED]);
38997
+ // .......................................................
38998
+ // EVENT HANDLING
38999
+ //
38984
39000
 
38985
- this.renderer.componentInitAttrs(this, this.attrs || {});
38986
- }, _Mixin$create.__defineNonEnumerable = function (property) {
38987
- this[property.name] = property.descriptor.value;
38988
- }, _Mixin$create.handleEvent = function (eventName, evt) {
38989
- return this._currentState.handleEvent(this, eventName, evt);
38990
- }, _Mixin$create));
39001
+ /**
39002
+ Handle events from `Ember.EventDispatcher`
39003
+ @method handleEvent
39004
+ @param eventName {String}
39005
+ @param evt {Event}
39006
+ @private
39007
+ */
39008
+ handleEvent: function (eventName, evt) {
39009
+ return this._currentState.handleEvent(this, eventName, evt);
39010
+ }
39011
+ });
38991
39012
  });
38992
- /*
38993
- This is a special hook implemented in CoreObject, that allows Views/Components
38994
- to have a way to ensure that `init` fires before `didInitAttrs` / `didReceiveAttrs`
38995
- (so that `this._super` in init does not trigger `didReceiveAttrs` before the classes
38996
- own `init` is finished).
38997
- @method __postInitInitialization
38998
- @private
38999
- */
39000
-
39001
- // .......................................................
39002
- // EVENT HANDLING
39003
- //
39004
-
39005
- /**
39006
- Handle events from `Ember.EventDispatcher`
39007
- @method handleEvent
39008
- @param eventName {String}
39009
- @param evt {Event}
39010
- @private
39011
- */
39012
39013
  enifed("ember-views/system/action_manager", ["exports"], function (exports) {
39013
39014
  /**
39014
39015
  @module ember
@@ -39662,7 +39663,7 @@ enifed('ember-views/views/core_view', ['exports', 'ember-runtime', 'ember-views/
39662
39663
  @uses Ember.ActionHandler
39663
39664
  @private
39664
39665
  */
39665
- var CoreView = _emberRuntime.Object.extend(_emberRuntime.Evented, _emberRuntime.ActionHandler, {
39666
+ var CoreView = _emberRuntime.FrameworkObject.extend(_emberRuntime.Evented, _emberRuntime.ActionHandler, {
39666
39667
  isView: true,
39667
39668
 
39668
39669
  _states: _emberViewsViewsStates.cloneStates(_emberViewsViewsStates.states),
@@ -39799,11 +39800,9 @@ enifed('ember-views/views/states/default', ['exports', 'ember-metal'], function
39799
39800
  return true; // continue event propagation
39800
39801
  },
39801
39802
 
39802
- destroy: function () {},
39803
+ rerender: function () {},
39803
39804
 
39804
- rerender: function (view) {
39805
- view.renderer.ensureViewNotRendering(view);
39806
- }
39805
+ destroy: function () {}
39807
39806
  };
39808
39807
  });
39809
39808
  enifed('ember-views/views/states/destroying', ['exports', 'ember-utils', 'ember-metal', 'ember-views/views/states/default'], function (exports, _emberUtils, _emberMetal, _emberViewsViewsStatesDefault) {
@@ -39838,10 +39837,7 @@ enifed('ember-views/views/states/has_element', ['exports', 'ember-utils', 'ember
39838
39837
  return sel ? _emberViewsSystemJquery.default(sel, elem) : _emberViewsSystemJquery.default(elem);
39839
39838
  },
39840
39839
 
39841
- // once the view has been inserted into the DOM, rerendering is
39842
- // deferred to allow bindings to synchronize.
39843
39840
  rerender: function (view) {
39844
- view.renderer.ensureViewNotRendering(view);
39845
39841
  view.renderer.rerender(view);
39846
39842
  },
39847
39843
 
@@ -40937,7 +40933,7 @@ enifed('ember/index', ['exports', 'require', 'ember-environment', 'ember-utils',
40937
40933
  enifed("ember/version", ["exports"], function (exports) {
40938
40934
  "use strict";
40939
40935
 
40940
- exports.default = "2.9.0-beta.4";
40936
+ exports.default = "2.9.0-beta.5";
40941
40937
  });
40942
40938
  enifed('internal-test-helpers/factory', ['exports'], function (exports) {
40943
40939
  'use strict';