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

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.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';