ember-source 2.4.0.beta.2 → 2.4.0.beta.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,12 +1,12 @@
1
1
  ;(function() {
2
2
  /*!
3
3
  * @overview Ember - JavaScript Application Framework
4
- * @copyright Copyright 2011-2015 Tilde Inc. and contributors
4
+ * @copyright Copyright 2011-2016 Tilde Inc. and contributors
5
5
  * Portions Copyright 2006-2011 Strobe Inc.
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.4.0-beta.2
9
+ * @version 2.4.0-beta.3
10
10
  */
11
11
 
12
12
  var enifed, requireModule, require, requirejs, Ember;
@@ -212,20 +212,24 @@ enifed('backburner/deferred-action-queues', ['exports', 'backburner/utils', 'bac
212
212
  enifed('backburner/platform', ['exports'], function (exports) {
213
213
  'use strict';
214
214
 
215
- var platform;
215
+ var GlobalContext;
216
216
 
217
217
  /* global self */
218
218
  if (typeof self === 'object') {
219
- platform = self;
219
+ GlobalContext = self;
220
220
 
221
221
  /* global global */
222
222
  } else if (typeof global === 'object') {
223
- platform = global;
224
- } else {
225
- throw new Error('no global: `self` or `global` found');
226
- }
223
+ GlobalContext = global;
227
224
 
228
- exports.default = platform;
225
+ /* global window */
226
+ } else if (typeof window === 'object') {
227
+ GlobalContext = window;
228
+ } else {
229
+ throw new Error('no global: `self`, `global` nor `window` was found');
230
+ }
231
+
232
+ exports.default = GlobalContext;
229
233
  });
230
234
  enifed('backburner/queue', ['exports', 'backburner/utils'], function (exports, _backburnerUtils) {
231
235
  'use strict';
@@ -468,7 +472,6 @@ enifed('backburner/utils', ['exports'], function (exports) {
468
472
  exports.isFunction = isFunction;
469
473
  exports.isNumber = isNumber;
470
474
  exports.isCoercableNumber = isCoercableNumber;
471
- exports.wrapInTryCatch = wrapInTryCatch;
472
475
  var NUMBER = /\d+/;
473
476
 
474
477
  function each(collection, callback) {
@@ -477,14 +480,6 @@ enifed('backburner/utils', ['exports'], function (exports) {
477
480
  }
478
481
  }
479
482
 
480
- // Date.now is not available in browsers < IE9
481
- // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/now#Compatibility
482
- var now = Date.now || function () {
483
- return new Date().getTime();
484
- };
485
-
486
- exports.now = now;
487
-
488
483
  function isString(suspect) {
489
484
  return typeof suspect === 'string';
490
485
  }
@@ -500,16 +495,6 @@ enifed('backburner/utils', ['exports'], function (exports) {
500
495
  function isCoercableNumber(number) {
501
496
  return isNumber(number) || NUMBER.test(number);
502
497
  }
503
-
504
- function wrapInTryCatch(func) {
505
- return function () {
506
- try {
507
- return func.apply(this, arguments);
508
- } catch (e) {
509
- throw e;
510
- }
511
- };
512
- }
513
498
  });
514
499
  enifed('backburner', ['exports', 'backburner/utils', 'backburner/platform', 'backburner/binary-search', 'backburner/deferred-action-queues'], function (exports, _backburnerUtils, _backburnerPlatform, _backburnerBinarySearch, _backburnerDeferredActionQueues) {
515
500
  'use strict';
@@ -530,10 +515,16 @@ enifed('backburner', ['exports', 'backburner/utils', 'backburner/platform', 'bac
530
515
  begin: []
531
516
  };
532
517
 
518
+ var _this = this;
519
+ this._boundClearItems = function () {
520
+ clearItems();
521
+ };
522
+
533
523
  this._timerTimeoutId = undefined;
534
524
  this._timers = [];
535
525
 
536
- var _this = this;
526
+ this._platform = this.options._platform || _backburnerPlatform.default;
527
+
537
528
  this._boundRunExpiredTimers = function () {
538
529
  _this._runExpiredTimers();
539
530
  };
@@ -870,7 +861,7 @@ enifed('backburner', ['exports', 'backburner/utils', 'backburner/platform', 'bac
870
861
  }
871
862
  }
872
863
 
873
- var executeAt = _backburnerUtils.now() + parseInt(wait, 10);
864
+ var executeAt = Date.now() + parseInt(wait, 10);
874
865
 
875
866
  if (_backburnerUtils.isString(method)) {
876
867
  method = target[method];
@@ -936,7 +927,7 @@ enifed('backburner', ['exports', 'backburner/utils', 'backburner/platform', 'bac
936
927
  return this._throttlers[index];
937
928
  } // throttled
938
929
 
939
- timer = _backburnerPlatform.default.setTimeout(function () {
930
+ timer = this._platform.setTimeout(function () {
940
931
  if (!immediate) {
941
932
  backburner.run.apply(backburner, args);
942
933
  }
@@ -981,10 +972,10 @@ enifed('backburner', ['exports', 'backburner/utils', 'backburner/platform', 'bac
981
972
  if (index > -1) {
982
973
  debouncee = this._debouncees[index];
983
974
  this._debouncees.splice(index, 1);
984
- clearTimeout(debouncee[2]);
975
+ this._platform.clearTimeout(debouncee[2]);
985
976
  }
986
977
 
987
- timer = _backburnerPlatform.default.setTimeout(function () {
978
+ timer = this._platform.setTimeout(function () {
988
979
  if (!immediate) {
989
980
  backburner.run.apply(backburner, args);
990
981
  }
@@ -1006,17 +997,17 @@ enifed('backburner', ['exports', 'backburner/utils', 'backburner/platform', 'bac
1006
997
  },
1007
998
 
1008
999
  cancelTimers: function () {
1009
- _backburnerUtils.each(this._throttlers, clearItems);
1000
+ _backburnerUtils.each(this._throttlers, this._boundClearItems);
1010
1001
  this._throttlers = [];
1011
1002
 
1012
- _backburnerUtils.each(this._debouncees, clearItems);
1003
+ _backburnerUtils.each(this._debouncees, this._boundClearItems);
1013
1004
  this._debouncees = [];
1014
1005
 
1015
1006
  this._clearTimerTimeout();
1016
1007
  this._timers = [];
1017
1008
 
1018
1009
  if (this._autorun) {
1019
- clearTimeout(this._autorun);
1010
+ this._platform.clearTimeout(this._autorun);
1020
1011
  this._autorun = null;
1021
1012
  }
1022
1013
  },
@@ -1065,7 +1056,7 @@ enifed('backburner', ['exports', 'backburner/utils', 'backburner/platform', 'bac
1065
1056
 
1066
1057
  if (item[2] === timer[2]) {
1067
1058
  array.splice(index, 1);
1068
- clearTimeout(timer[2]);
1059
+ this._platform.clearTimeout(timer[2]);
1069
1060
  return true;
1070
1061
  }
1071
1062
  }
@@ -1079,7 +1070,7 @@ enifed('backburner', ['exports', 'backburner/utils', 'backburner/platform', 'bac
1079
1070
  },
1080
1071
 
1081
1072
  _scheduleExpiredTimers: function () {
1082
- var n = _backburnerUtils.now();
1073
+ var n = Date.now();
1083
1074
  var timers = this._timers;
1084
1075
  var i = 0;
1085
1076
  var l = timers.length;
@@ -1105,7 +1096,7 @@ enifed('backburner', ['exports', 'backburner/utils', 'backburner/platform', 'bac
1105
1096
  if (!this._timerTimeoutId) {
1106
1097
  return;
1107
1098
  }
1108
- clearTimeout(this._timerTimeoutId);
1099
+ this._platform.clearTimeout(this._timerTimeoutId);
1109
1100
  this._timerTimeoutId = undefined;
1110
1101
  },
1111
1102
 
@@ -1114,9 +1105,9 @@ enifed('backburner', ['exports', 'backburner/utils', 'backburner/platform', 'bac
1114
1105
  return;
1115
1106
  }
1116
1107
  var minExpiresAt = this._timers[0];
1117
- var n = _backburnerUtils.now();
1108
+ var n = Date.now();
1118
1109
  var wait = Math.max(0, minExpiresAt - n);
1119
- this._timerTimeoutId = setTimeout(this._boundRunExpiredTimers, wait);
1110
+ this._timerTimeoutId = this._platform.setTimeout(this._boundRunExpiredTimers, wait);
1120
1111
  }
1121
1112
  };
1122
1113
 
@@ -1130,7 +1121,7 @@ enifed('backburner', ['exports', 'backburner/utils', 'backburner/platform', 'bac
1130
1121
 
1131
1122
  function createAutorun(backburner) {
1132
1123
  backburner.begin();
1133
- backburner._autorun = _backburnerPlatform.default.setTimeout(function () {
1124
+ backburner._autorun = backburner._platform.setTimeout(function () {
1134
1125
  backburner._autorun = null;
1135
1126
  backburner.end();
1136
1127
  });
@@ -1160,7 +1151,7 @@ enifed('backburner', ['exports', 'backburner/utils', 'backburner/platform', 'bac
1160
1151
  }
1161
1152
 
1162
1153
  function clearItems(item) {
1163
- clearTimeout(item[2]);
1154
+ this._platform.clearTimeout(item[2]);
1164
1155
  }
1165
1156
  });
1166
1157
  enifed('container/container', ['exports', 'ember-metal/core', 'ember-metal/debug', 'ember-metal/dictionary', 'ember-metal/features', 'container/owner', 'ember-runtime/mixins/container_proxy', 'ember-metal/symbol'], function (exports, _emberMetalCore, _emberMetalDebug, _emberMetalDictionary, _emberMetalFeatures, _containerOwner, _emberRuntimeMixinsContainer_proxy, _emberMetalSymbol) {
@@ -6780,7 +6771,7 @@ enifed('ember-extension-support/container_debug_adapter', ['exports', 'ember-met
6780
6771
  }
6781
6772
  });
6782
6773
  });
6783
- enifed('ember-extension-support/data_adapter', ['exports', 'ember-metal/property_get', 'ember-metal/run_loop', 'ember-runtime/system/string', 'ember-runtime/system/namespace', 'ember-runtime/system/object', 'ember-runtime/system/native_array', 'ember-application/system/application', 'container/owner'], function (exports, _emberMetalProperty_get, _emberMetalRun_loop, _emberRuntimeSystemString, _emberRuntimeSystemNamespace, _emberRuntimeSystemObject, _emberRuntimeSystemNative_array, _emberApplicationSystemApplication, _containerOwner) {
6774
+ enifed('ember-extension-support/data_adapter', ['exports', 'ember-metal/property_get', 'ember-metal/run_loop', 'ember-runtime/system/string', 'ember-runtime/system/namespace', 'ember-runtime/system/object', 'ember-runtime/system/native_array', 'ember-application/system/application', 'container/owner', 'ember-runtime/mixins/array'], function (exports, _emberMetalProperty_get, _emberMetalRun_loop, _emberRuntimeSystemString, _emberRuntimeSystemNamespace, _emberRuntimeSystemObject, _emberRuntimeSystemNative_array, _emberApplicationSystemApplication, _containerOwner, _emberRuntimeMixinsArray) {
6784
6775
  'use strict';
6785
6776
 
6786
6777
  /**
@@ -6971,7 +6962,7 @@ enifed('ember-extension-support/data_adapter', ['exports', 'ember-metal/property
6971
6962
 
6972
6963
  var contentDidChange = function (array, idx, removedCount, addedCount) {
6973
6964
  for (var i = idx; i < idx + addedCount; i++) {
6974
- var record = array.objectAt(i);
6965
+ var record = _emberRuntimeMixinsArray.objectAt(array, i);
6975
6966
  var wrapped = _this2.wrapRecord(record);
6976
6967
  releaseMethods.push(_this2.observeRecord(record, recordUpdated));
6977
6968
  recordsAdded([wrapped]);
@@ -6985,13 +6976,13 @@ enifed('ember-extension-support/data_adapter', ['exports', 'ember-metal/property
6985
6976
  var observer = { didChange: contentDidChange, willChange: function () {
6986
6977
  return this;
6987
6978
  } };
6988
- records.addArrayObserver(this, observer);
6979
+ _emberRuntimeMixinsArray.addArrayObserver(records, this, observer);
6989
6980
 
6990
6981
  release = function () {
6991
6982
  releaseMethods.forEach(function (fn) {
6992
6983
  fn();
6993
6984
  });
6994
- records.removeArrayObserver(_this2, observer);
6985
+ _emberRuntimeMixinsArray.removeArrayObserver(records, _this2, observer);
6995
6986
  _this2.releaseMethods.removeObject(release);
6996
6987
  };
6997
6988
 
@@ -7066,10 +7057,10 @@ enifed('ember-extension-support/data_adapter', ['exports', 'ember-metal/property
7066
7057
  }
7067
7058
  };
7068
7059
 
7069
- records.addArrayObserver(this, observer);
7060
+ _emberRuntimeMixinsArray.addArrayObserver(records, this, observer);
7070
7061
 
7071
7062
  var release = function () {
7072
- records.removeArrayObserver(_this3, observer);
7063
+ _emberRuntimeMixinsArray.removeArrayObserver(records, _this3, observer);
7073
7064
  };
7074
7065
 
7075
7066
  return release;
@@ -9008,9 +8999,11 @@ enifed('ember-htmlbars/hooks/link-render-node', ['exports', 'ember-htmlbars/util
9008
8999
  return true;
9009
9000
  case 'unless':
9010
9001
  case 'if':
9011
- params[0] = shouldDisplay(params[0]);break;
9002
+ params[0] = shouldDisplay(params[0], toBool);break;
9012
9003
  case 'each':
9013
9004
  params[0] = eachParam(params[0]);break;
9005
+ case 'with':
9006
+ params[0] = shouldDisplay(params[0], identity);break;
9014
9007
  }
9015
9008
  }
9016
9009
 
@@ -9060,7 +9053,7 @@ enifed('ember-htmlbars/hooks/link-render-node', ['exports', 'ember-htmlbars/util
9060
9053
  return stream;
9061
9054
  }
9062
9055
 
9063
- function shouldDisplay(predicate) {
9056
+ function shouldDisplay(predicate, coercer) {
9064
9057
  var length = getKey(predicate, 'length');
9065
9058
  var isTruthy = getKey(predicate, 'isTruthy');
9066
9059
 
@@ -9077,7 +9070,7 @@ enifed('ember-htmlbars/hooks/link-render-node', ['exports', 'ember-htmlbars/util
9077
9070
  return isTruthyVal;
9078
9071
  }
9079
9072
 
9080
- return !!predicateVal;
9073
+ return coercer(predicateVal);
9081
9074
  }, 'ShouldDisplay');
9082
9075
 
9083
9076
  _emberMetalStreamsUtils.addDependency(stream, length);
@@ -9086,6 +9079,14 @@ enifed('ember-htmlbars/hooks/link-render-node', ['exports', 'ember-htmlbars/util
9086
9079
  return stream;
9087
9080
  }
9088
9081
 
9082
+ function toBool(value) {
9083
+ return !!value;
9084
+ }
9085
+
9086
+ function identity(value) {
9087
+ return value;
9088
+ }
9089
+
9089
9090
  function getKey(obj, key) {
9090
9091
  if (_emberMetalStreamsUtils.isStream(obj)) {
9091
9092
  return obj.getKey(key);
@@ -10495,7 +10496,7 @@ enifed('ember-htmlbars/keywords/outlet', ['exports', 'ember-metal/debug', 'ember
10495
10496
 
10496
10497
  'use strict';
10497
10498
 
10498
- _emberHtmlbarsTemplatesTopLevelView.default.meta.revision = 'Ember@2.4.0-beta.2';
10499
+ _emberHtmlbarsTemplatesTopLevelView.default.meta.revision = 'Ember@2.4.0-beta.3';
10499
10500
 
10500
10501
  /**
10501
10502
  The `{{outlet}}` helper lets you specify where a child routes will render in
@@ -16164,7 +16165,7 @@ enifed('ember-metal/core', ['exports', 'require'], function (exports, _require)
16164
16165
 
16165
16166
  @class Ember
16166
16167
  @static
16167
- @version 2.4.0-beta.2
16168
+ @version 2.4.0-beta.3
16168
16169
  @public
16169
16170
  */
16170
16171
 
@@ -16206,11 +16207,11 @@ enifed('ember-metal/core', ['exports', 'require'], function (exports, _require)
16206
16207
 
16207
16208
  @property VERSION
16208
16209
  @type String
16209
- @default '2.4.0-beta.2'
16210
+ @default '2.4.0-beta.3'
16210
16211
  @static
16211
16212
  @public
16212
16213
  */
16213
- Ember.VERSION = '2.4.0-beta.2';
16214
+ Ember.VERSION = '2.4.0-beta.3';
16214
16215
 
16215
16216
  /**
16216
16217
  The hash of environment variables used to control various configuration
@@ -18575,6 +18576,7 @@ enifed('ember-metal/meta', ['exports', 'ember-metal/meta_listeners', 'ember-meta
18575
18576
  */
18576
18577
  var members = {
18577
18578
  cache: ownMap,
18579
+ weak: ownMap,
18578
18580
  watching: inheritedMap,
18579
18581
  mixins: inheritedMap,
18580
18582
  bindings: inheritedMap,
@@ -18589,6 +18591,7 @@ enifed('ember-metal/meta', ['exports', 'ember-metal/meta_listeners', 'ember-meta
18589
18591
 
18590
18592
  function Meta(obj, parentMeta) {
18591
18593
  this._cache = undefined;
18594
+ this._weak = undefined;
18592
18595
  this._watching = undefined;
18593
18596
  this._mixins = undefined;
18594
18597
  this._bindings = undefined;
@@ -18673,7 +18676,7 @@ enifed('ember-metal/meta', ['exports', 'ember-metal/meta_listeners', 'ember-meta
18673
18676
  };
18674
18677
 
18675
18678
  Meta.prototype['clear' + capitalized] = function () {
18676
- this[key] = new _emberMetalEmpty_object.default();
18679
+ this[key] = undefined;
18677
18680
  };
18678
18681
 
18679
18682
  Meta.prototype['deleteFrom' + capitalized] = function (subkey) {
@@ -19733,11 +19736,10 @@ enifed('ember-metal/mixin', ['exports', 'ember-metal/core', 'ember-metal/error',
19733
19736
  seen[_emberMetalUtils.guidFor(mixin)] = true;
19734
19737
 
19735
19738
  if (mixin.properties) {
19736
- var props = mixin.properties;
19737
- for (var key in props) {
19738
- if (props.hasOwnProperty(key)) {
19739
- ret[key] = true;
19740
- }
19739
+ var props = Object.keys(mixin.properties);
19740
+ for (var i = 0; i < props.length; i++) {
19741
+ var key = props[i];
19742
+ ret[key] = true;
19741
19743
  }
19742
19744
  } else if (mixin.mixins) {
19743
19745
  mixin.mixins.forEach(function (x) {
@@ -19749,13 +19751,9 @@ enifed('ember-metal/mixin', ['exports', 'ember-metal/core', 'ember-metal/error',
19749
19751
  MixinPrototype.keys = function () {
19750
19752
  var keys = {};
19751
19753
  var seen = {};
19752
- var ret = [];
19754
+
19753
19755
  _keys(keys, this, seen);
19754
- for (var key in keys) {
19755
- if (keys.hasOwnProperty(key)) {
19756
- ret.push(key);
19757
- }
19758
- }
19756
+ var ret = Object.keys(keys);
19759
19757
  return ret;
19760
19758
  };
19761
19759
 
@@ -23708,6 +23706,101 @@ enifed('ember-metal/watching', ['exports', 'ember-metal/chains', 'ember-metal/wa
23708
23706
  }
23709
23707
  }
23710
23708
  });
23709
+ enifed('ember-metal/weak_map', ['exports', 'ember-metal/debug', 'ember-metal/utils', 'ember-metal/meta'], function (exports, _emberMetalDebug, _emberMetalUtils, _emberMetalMeta) {
23710
+ 'use strict';
23711
+
23712
+ exports.default = WeakMap;
23713
+
23714
+ var id = 0;
23715
+ function UNDEFINED() {}
23716
+
23717
+ /*
23718
+ * @private
23719
+ * @class Ember.WeakMap
23720
+ *
23721
+ * A partial polyfill for [WeakMap](http://www.ecma-international.org/ecma-262/6.0/#sec-weakmap-objects).
23722
+ *
23723
+ * There is a small but important caveat. This implementation assumes that the
23724
+ * weak map will live longer (in the sense of garbage collection) than all of its
23725
+ * keys, otherwise it is possible to leak the values stored in the weak map. In
23726
+ * practice, most use cases satisfy this limitation which is why it is included
23727
+ * in ember-metal.
23728
+ */
23729
+
23730
+ function WeakMap() {
23731
+ _emberMetalDebug.assert('Invoking the WeakMap constructor with arguments is not supported at this time', arguments.length === 0);
23732
+
23733
+ this._id = _emberMetalUtils.GUID_KEY + id++;
23734
+ }
23735
+
23736
+ /*
23737
+ * @method get
23738
+ * @param key {Object | Function}
23739
+ * @return {Any} stored value
23740
+ */
23741
+ WeakMap.prototype.get = function (obj) {
23742
+ var meta = _emberMetalMeta.peekMeta(obj);
23743
+ if (meta) {
23744
+ var map = meta.readableWeak();
23745
+ if (map) {
23746
+ if (map[this._id] === UNDEFINED) {
23747
+ return undefined;
23748
+ }
23749
+
23750
+ return map[this._id];
23751
+ }
23752
+ }
23753
+ };
23754
+
23755
+ /*
23756
+ * @method set
23757
+ * @param key {Object | Function}
23758
+ * @param value {Any}
23759
+ * @return {WeakMap} the weak map
23760
+ */
23761
+ WeakMap.prototype.set = function (obj, value) {
23762
+ _emberMetalDebug.assert('Uncaught TypeError: Invalid value used as weak map key', obj && (typeof obj === 'object' || typeof obj === 'function'));
23763
+
23764
+ if (value === undefined) {
23765
+ value = UNDEFINED;
23766
+ }
23767
+
23768
+ _emberMetalMeta.meta(obj).writableWeak()[this._id] = value;
23769
+
23770
+ return this;
23771
+ };
23772
+
23773
+ /*
23774
+ * @method has
23775
+ * @param key {Object | Function}
23776
+ * @return {boolean} if the key exists
23777
+ */
23778
+ WeakMap.prototype.has = function (obj) {
23779
+ var meta = _emberMetalMeta.peekMeta(obj);
23780
+ if (meta) {
23781
+ var map = meta.readableWeak();
23782
+ if (map) {
23783
+ return map[this._id] !== undefined;
23784
+ }
23785
+ }
23786
+
23787
+ return false;
23788
+ };
23789
+
23790
+ /*
23791
+ * @method delete
23792
+ * @param key {Object | Function}
23793
+ * @return {boolean} if the key was deleted
23794
+ */
23795
+ WeakMap.prototype.delete = function (obj) {
23796
+ if (this.has(obj)) {
23797
+ delete _emberMetalMeta.meta(obj).writableWeak()[this._id];
23798
+ return true;
23799
+ } else {
23800
+ return false;
23801
+ }
23802
+ };
23803
+ });
23711
23804
  enifed('ember-metal-views/index', ['exports', 'ember-metal-views/renderer'], function (exports, _emberMetalViewsRenderer) {
23712
23805
  'use strict';
23713
23806
 
@@ -24006,7 +24099,7 @@ enifed('ember-routing/ext/controller', ['exports', 'ember-metal/property_get', '
24006
24099
 
24007
24100
  /**
24008
24101
  Defines which query parameters the controller accepts.
24009
- If you give the names ['category','page'] it will bind
24102
+ If you give the names `['category','page']` it will bind
24010
24103
  the values of these query parameters to the variables
24011
24104
  `this.category` and `this.page`
24012
24105
  @property queryParams
@@ -27892,9 +27985,24 @@ enifed('ember-routing/system/router', ['exports', 'ember-metal/logger', 'ember-m
27892
27985
 
27893
27986
  _doURLTransition: function (routerJsMethod, url) {
27894
27987
  var transition = this.router[routerJsMethod](url || '/');
27895
- return didBeginTransition(transition, this);
27988
+ didBeginTransition(transition, this);
27989
+ return transition;
27896
27990
  },
27897
27991
 
27992
+ /**
27993
+ Transition the application into another route. The route may
27994
+ be either a single route or route path:
27995
+ See [Route.transitionTo](http://emberjs.com/api/classes/Ember.Route.html#method_transitionTo) for more info.
27996
+ @method transitionTo
27997
+ @param {String} name the name of the route or a URL
27998
+ @param {...Object} models the model(s) or identifier(s) to be used while
27999
+ transitioning to the route.
28000
+ @param {Object} [options] optional hash with a queryParams property
28001
+ containing a mapping of query parameters
28002
+ @return {Transition} the transition object associated with this
28003
+ attempted transition
28004
+ @private
28005
+ */
27898
28006
  transitionTo: function () {
27899
28007
  var queryParams;
27900
28008
 
@@ -28212,11 +28320,11 @@ enifed('ember-routing/system/router', ['exports', 'ember-metal/logger', 'ember-m
28212
28320
  this._prepareQueryParams(targetRouteName, models, queryParams);
28213
28321
 
28214
28322
  var transitionArgs = _emberRoutingUtils.routeArgs(targetRouteName, models, queryParams);
28215
- var transitionPromise = this.router.transitionTo.apply(this.router, transitionArgs);
28323
+ var transition = this.router.transitionTo.apply(this.router, transitionArgs);
28216
28324
 
28217
- didBeginTransition(transitionPromise, this);
28325
+ didBeginTransition(transition, this);
28218
28326
 
28219
- return transitionPromise;
28327
+ return transition;
28220
28328
  },
28221
28329
 
28222
28330
  _prepareQueryParams: function (targetRouteName, models, queryParams) {
@@ -28667,7 +28775,7 @@ enifed('ember-routing/system/router', ['exports', 'ember-metal/logger', 'ember-m
28667
28775
  }
28668
28776
  router.set('targetState', routerState);
28669
28777
 
28670
- return transition.catch(function (error) {
28778
+ transition.promise = transition.catch(function (error) {
28671
28779
  var errorId = _emberMetalUtils.guidFor(error);
28672
28780
 
28673
28781
  if (router._isErrorHandled(errorId)) {
@@ -30167,7 +30275,7 @@ enifed('ember-routing-views/components/link-to', ['exports', 'ember-metal/logger
30167
30275
 
30168
30276
  'use strict';
30169
30277
 
30170
- _emberHtmlbarsTemplatesLinkTo.default.meta.revision = 'Ember@2.4.0-beta.2';
30278
+ _emberHtmlbarsTemplatesLinkTo.default.meta.revision = 'Ember@2.4.0-beta.3';
30171
30279
 
30172
30280
  /**
30173
30281
  `Ember.LinkComponent` renders an element whose `click` event triggers a
@@ -30670,7 +30778,7 @@ enifed('ember-routing-views/views/outlet', ['exports', 'ember-views/views/view',
30670
30778
 
30671
30779
  'use strict';
30672
30780
 
30673
- _emberHtmlbarsTemplatesTopLevelView.default.meta.revision = 'Ember@2.4.0-beta.2';
30781
+ _emberHtmlbarsTemplatesTopLevelView.default.meta.revision = 'Ember@2.4.0-beta.3';
30674
30782
 
30675
30783
  var CoreOutletView = _emberViewsViewsView.default.extend({
30676
30784
  defaultTemplate: _emberHtmlbarsTemplatesTopLevelView.default,
@@ -30853,7 +30961,7 @@ enifed('ember-runtime/compare', ['exports', 'ember-runtime/utils', 'ember-runtim
30853
30961
  }
30854
30962
  }
30855
30963
  });
30856
- enifed('ember-runtime/computed/reduce_computed_macros', ['exports', 'ember-metal/debug', 'ember-metal/property_get', 'ember-metal/error', 'ember-metal/computed', 'ember-metal/observer', 'ember-runtime/compare', 'ember-runtime/utils', 'ember-runtime/system/native_array', 'ember-metal/is_none', 'ember-metal/get_properties'], function (exports, _emberMetalDebug, _emberMetalProperty_get, _emberMetalError, _emberMetalComputed, _emberMetalObserver, _emberRuntimeCompare, _emberRuntimeUtils, _emberRuntimeSystemNative_array, _emberMetalIs_none, _emberMetalGet_properties) {
30964
+ enifed('ember-runtime/computed/reduce_computed_macros', ['exports', 'ember-metal/debug', 'ember-metal/property_get', 'ember-metal/error', 'ember-metal/computed', 'ember-metal/observer', 'ember-runtime/compare', 'ember-runtime/utils', 'ember-runtime/system/native_array', 'ember-metal/is_none', 'ember-metal/get_properties', 'ember-metal/weak_map'], function (exports, _emberMetalDebug, _emberMetalProperty_get, _emberMetalError, _emberMetalComputed, _emberMetalObserver, _emberRuntimeCompare, _emberRuntimeUtils, _emberRuntimeSystemNative_array, _emberMetalIs_none, _emberMetalGet_properties, _emberMetalWeak_map) {
30857
30965
  /**
30858
30966
  @module ember
30859
30967
  @submodule ember-runtime
@@ -30923,7 +31031,7 @@ enifed('ember-runtime/computed/reduce_computed_macros', ['exports', 'ember-metal
30923
31031
  }
30924
31032
 
30925
31033
  /**
30926
- A computed property that returns the sum of the value
31034
+ A computed property that returns the sum of the values
30927
31035
  in the dependent array.
30928
31036
 
30929
31037
  @method sum
@@ -31516,67 +31624,83 @@ enifed('ember-runtime/computed/reduce_computed_macros', ['exports', 'ember-metal
31516
31624
  var cp = new _emberMetalComputed.ComputedProperty(function (key) {
31517
31625
  var _this5 = this;
31518
31626
 
31519
- function didChange() {
31520
- this.notifyPropertyChange(key);
31521
- }
31522
-
31523
- var items = itemsKey === '@this' ? this : _emberMetalProperty_get.get(this, itemsKey);
31627
+ var itemsKeyIsAtThis = itemsKey === '@this';
31524
31628
  var sortProperties = _emberMetalProperty_get.get(this, sortPropertiesKey);
31525
31629
 
31526
- if (items === null || typeof items !== 'object') {
31527
- return _emberRuntimeSystemNative_array.A();
31528
- }
31630
+ _emberMetalDebug.assert('The sort definition for \'' + key + '\' on ' + this + ' must be a function or an array of strings', _emberRuntimeUtils.isArray(sortProperties) && sortProperties.every(function (s) {
31631
+ return typeof s === 'string';
31632
+ }));
31633
+
31634
+ var normalizedSortProperties = normalizeSortProperties(sortProperties);
31635
+
31636
+ // Add/remove property observers as required.
31637
+ var activeObserversMap = cp._activeObserverMap || (cp._activeObserverMap = new _emberMetalWeak_map.default());
31638
+ var activeObservers = activeObserversMap.get(this);
31529
31639
 
31530
- // TODO: Ideally we'd only do this if things have changed
31531
- if (cp._sortPropObservers) {
31532
- cp._sortPropObservers.forEach(function (args) {
31533
- return _emberMetalObserver.removeObserver.apply(null, args);
31640
+ if (activeObservers) {
31641
+ activeObservers.forEach(function (args) {
31642
+ _emberMetalObserver.removeObserver.apply(null, args);
31534
31643
  });
31535
31644
  }
31536
31645
 
31537
- cp._sortPropObservers = [];
31538
-
31539
- if (!_emberRuntimeUtils.isArray(sortProperties)) {
31540
- return items;
31646
+ function sortPropertyDidChange() {
31647
+ this.notifyPropertyChange(key);
31541
31648
  }
31542
31649
 
31543
- // Normalize properties
31544
- var normalizedSort = sortProperties.map(function (p) {
31545
- var _p$split = p.split(':');
31650
+ activeObservers = normalizedSortProperties.map(function (_ref) {
31651
+ var prop = _ref[0];
31546
31652
 
31547
- var prop = _p$split[0];
31548
- var direction = _p$split[1];
31653
+ var path = itemsKeyIsAtThis ? '@each.' + prop : itemsKey + '.@each.' + prop;
31654
+ var args = [_this5, path, sortPropertyDidChange];
31655
+ _emberMetalObserver.addObserver.apply(null, args);
31656
+ return args;
31657
+ });
31549
31658
 
31550
- direction = direction || 'asc';
31659
+ activeObserversMap.set(this, activeObservers);
31551
31660
 
31552
- return [prop, direction];
31553
- });
31661
+ // Sort and return the array.
31662
+ var items = itemsKeyIsAtThis ? this : _emberMetalProperty_get.get(this, itemsKey);
31554
31663
 
31555
- // TODO: Ideally we'd only do this if things have changed
31556
- // Add observers
31557
- normalizedSort.forEach(function (prop) {
31558
- var args = [_this5, itemsKey + '.@each.' + prop[0], didChange];
31559
- cp._sortPropObservers.push(args);
31560
- _emberMetalObserver.addObserver.apply(null, args);
31561
- });
31664
+ if (_emberRuntimeUtils.isArray(items)) {
31665
+ return sortByNormalizedSortProperties(items, normalizedSortProperties);
31666
+ } else {
31667
+ return _emberRuntimeSystemNative_array.A();
31668
+ }
31669
+ });
31562
31670
 
31563
- return _emberRuntimeSystemNative_array.A(items.slice().sort(function (itemA, itemB) {
31564
- for (var i = 0; i < normalizedSort.length; ++i) {
31565
- var _normalizedSort$i = normalizedSort[i];
31566
- var prop = _normalizedSort$i[0];
31567
- var direction = _normalizedSort$i[1];
31671
+ cp._activeObserverMap = undefined;
31568
31672
 
31569
- var result = _emberRuntimeCompare.default(_emberMetalProperty_get.get(itemA, prop), _emberMetalProperty_get.get(itemB, prop));
31570
- if (result !== 0) {
31571
- return direction === 'desc' ? -1 * result : result;
31572
- }
31573
- }
31673
+ return cp.property(sortPropertiesKey + '.[]').readOnly();
31674
+ }
31574
31675
 
31575
- return 0;
31576
- }));
31676
+ function normalizeSortProperties(sortProperties) {
31677
+ return sortProperties.map(function (p) {
31678
+ var _p$split = p.split(':');
31679
+
31680
+ var prop = _p$split[0];
31681
+ var direction = _p$split[1];
31682
+
31683
+ direction = direction || 'asc';
31684
+
31685
+ return [prop, direction];
31577
31686
  });
31687
+ }
31688
+
31689
+ function sortByNormalizedSortProperties(items, normalizedSortProperties) {
31690
+ return _emberRuntimeSystemNative_array.A(items.slice().sort(function (itemA, itemB) {
31691
+ for (var i = 0; i < normalizedSortProperties.length; i++) {
31692
+ var _normalizedSortProperties$i = normalizedSortProperties[i];
31693
+ var prop = _normalizedSortProperties$i[0];
31694
+ var direction = _normalizedSortProperties$i[1];
31695
+
31696
+ var result = _emberRuntimeCompare.default(_emberMetalProperty_get.get(itemA, prop), _emberMetalProperty_get.get(itemB, prop));
31697
+ if (result !== 0) {
31698
+ return direction === 'desc' ? -1 * result : result;
31699
+ }
31700
+ }
31578
31701
 
31579
- return cp.property(itemsKey + '.[]', sortPropertiesKey + '.[]').readOnly();
31702
+ return 0;
31703
+ }));
31580
31704
  }
31581
31705
  });
31582
31706
  enifed('ember-runtime/controllers/controller', ['exports', 'ember-metal/debug', 'ember-runtime/system/object', 'ember-runtime/mixins/controller', 'ember-runtime/inject', 'ember-runtime/mixins/action_handler'], function (exports, _emberMetalDebug, _emberRuntimeSystemObject, _emberRuntimeMixinsController, _emberRuntimeInject, _emberRuntimeMixinsAction_handler) {
@@ -32641,6 +32765,10 @@ enifed('ember-runtime/mixins/array', ['exports', 'ember-metal/core', 'ember-meta
32641
32765
  //
32642
32766
  'use strict';
32643
32767
 
32768
+ exports.addArrayObserver = addArrayObserver;
32769
+ exports.removeArrayObserver = removeArrayObserver;
32770
+ exports.objectAt = objectAt;
32771
+
32644
32772
  function arrayObserversHelper(obj, target, opts, operation, notify) {
32645
32773
  var willChange = opts && opts.willChange || 'arrayWillChange';
32646
32774
  var didChange = opts && opts.didChange || 'arrayDidChange';
@@ -32660,6 +32788,22 @@ enifed('ember-runtime/mixins/array', ['exports', 'ember-metal/core', 'ember-meta
32660
32788
  return obj;
32661
32789
  }
32662
32790
 
32791
+ function addArrayObserver(array, target, opts) {
32792
+ return arrayObserversHelper(array, target, opts, _emberMetalEvents.addListener, false);
32793
+ }
32794
+
32795
+ function removeArrayObserver(array, target, opts) {
32796
+ return arrayObserversHelper(array, target, opts, _emberMetalEvents.removeListener, true);
32797
+ }
32798
+
32799
+ function objectAt(content, idx) {
32800
+ if (content.objectAt) {
32801
+ return content.objectAt(idx);
32802
+ }
32803
+
32804
+ return content[idx];
32805
+ }
32806
+
32663
32807
  // ..........................................................
32664
32808
  // ARRAY
32665
32809
  //
@@ -32752,16 +32896,16 @@ enifed('ember-runtime/mixins/array', ['exports', 'ember-metal/core', 'ember-meta
32752
32896
  @public
32753
32897
  */
32754
32898
  objectsAt: function (indexes) {
32755
- var self = this;
32899
+ var _this = this;
32756
32900
 
32757
32901
  return indexes.map(function (idx) {
32758
- return self.objectAt(idx);
32902
+ return objectAt(_this, idx);
32759
32903
  });
32760
32904
  },
32761
32905
 
32762
32906
  // overrides Ember.Enumerable version
32763
32907
  nextObject: function (idx) {
32764
- return this.objectAt(idx);
32908
+ return objectAt(this, idx);
32765
32909
  },
32766
32910
 
32767
32911
  /**
@@ -32784,11 +32928,11 @@ enifed('ember-runtime/mixins/array', ['exports', 'ember-metal/core', 'ember-meta
32784
32928
  }),
32785
32929
 
32786
32930
  firstObject: _emberMetalComputed.computed(function () {
32787
- return this.objectAt(0);
32931
+ return objectAt(this, 0);
32788
32932
  }),
32789
32933
 
32790
32934
  lastObject: _emberMetalComputed.computed(function () {
32791
- return this.objectAt(_emberMetalProperty_get.get(this, 'length') - 1);
32935
+ return objectAt(this, _emberMetalProperty_get.get(this, 'length') - 1);
32792
32936
  }),
32793
32937
 
32794
32938
  // optimized version from Enumerable
@@ -32834,7 +32978,7 @@ enifed('ember-runtime/mixins/array', ['exports', 'ember-metal/core', 'ember-meta
32834
32978
  }
32835
32979
 
32836
32980
  while (beginIndex < endIndex) {
32837
- ret[ret.length] = this.objectAt(beginIndex++);
32981
+ ret[ret.length] = objectAt(this, beginIndex++);
32838
32982
  }
32839
32983
 
32840
32984
  return ret;
@@ -32873,7 +33017,7 @@ enifed('ember-runtime/mixins/array', ['exports', 'ember-metal/core', 'ember-meta
32873
33017
  }
32874
33018
 
32875
33019
  for (idx = startAt; idx < len; idx++) {
32876
- if (this.objectAt(idx) === object) {
33020
+ if (objectAt(this, idx) === object) {
32877
33021
  return idx;
32878
33022
  }
32879
33023
  }
@@ -32914,7 +33058,7 @@ enifed('ember-runtime/mixins/array', ['exports', 'ember-metal/core', 'ember-meta
32914
33058
  }
32915
33059
 
32916
33060
  for (idx = startAt; idx >= 0; idx--) {
32917
- if (this.objectAt(idx) === object) {
33061
+ if (objectAt(this, idx) === object) {
32918
33062
  return idx;
32919
33063
  }
32920
33064
  }
@@ -32949,7 +33093,7 @@ enifed('ember-runtime/mixins/array', ['exports', 'ember-metal/core', 'ember-meta
32949
33093
  */
32950
33094
 
32951
33095
  addArrayObserver: function (target, opts) {
32952
- return arrayObserversHelper(this, target, opts, _emberMetalEvents.addListener, false);
33096
+ return addArrayObserver(this, target, opts);
32953
33097
  },
32954
33098
 
32955
33099
  /**
@@ -32964,7 +33108,7 @@ enifed('ember-runtime/mixins/array', ['exports', 'ember-metal/core', 'ember-meta
32964
33108
  @public
32965
33109
  */
32966
33110
  removeArrayObserver: function (target, opts) {
32967
- return arrayObserversHelper(this, target, opts, _emberMetalEvents.removeListener, true);
33111
+ return removeArrayObserver(this, target, opts);
32968
33112
  },
32969
33113
 
32970
33114
  /**
@@ -33019,7 +33163,7 @@ enifed('ember-runtime/mixins/array', ['exports', 'ember-metal/core', 'ember-meta
33019
33163
  lim = startIdx + removeAmt;
33020
33164
 
33021
33165
  for (var idx = startIdx; idx < lim; idx++) {
33022
- removing.push(this.objectAt(idx));
33166
+ removing.push(objectAt(this, idx));
33023
33167
  }
33024
33168
  } else {
33025
33169
  removing = removeAmt;
@@ -33066,7 +33210,7 @@ enifed('ember-runtime/mixins/array', ['exports', 'ember-metal/core', 'ember-meta
33066
33210
  lim = startIdx + addAmt;
33067
33211
 
33068
33212
  for (var idx = startIdx; idx < lim; idx++) {
33069
- adding.push(this.objectAt(idx));
33213
+ adding.push(objectAt(this, idx));
33070
33214
  }
33071
33215
  } else {
33072
33216
  adding = addAmt;
@@ -33084,12 +33228,12 @@ enifed('ember-runtime/mixins/array', ['exports', 'ember-metal/core', 'ember-meta
33084
33228
  var cachedFirst = _emberMetalComputed.cacheFor(this, 'firstObject');
33085
33229
  var cachedLast = _emberMetalComputed.cacheFor(this, 'lastObject');
33086
33230
 
33087
- if (this.objectAt(0) !== cachedFirst) {
33231
+ if (objectAt(this, 0) !== cachedFirst) {
33088
33232
  _emberMetalProperty_events.propertyWillChange(this, 'firstObject');
33089
33233
  _emberMetalProperty_events.propertyDidChange(this, 'firstObject');
33090
33234
  }
33091
33235
 
33092
- if (this.objectAt(length - 1) !== cachedLast) {
33236
+ if (objectAt(this, length - 1) !== cachedLast) {
33093
33237
  _emberMetalProperty_events.propertyWillChange(this, 'lastObject');
33094
33238
  _emberMetalProperty_events.propertyDidChange(this, 'lastObject');
33095
33239
  }
@@ -34852,7 +34996,7 @@ enifed('ember-runtime/mixins/mutable_array', ['exports', 'ember-metal/property_g
34852
34996
  return null;
34853
34997
  }
34854
34998
 
34855
- var ret = this.objectAt(len - 1);
34999
+ var ret = _emberRuntimeMixinsArray.objectAt(this, len - 1);
34856
35000
  this.removeAt(len - 1, 1);
34857
35001
  return ret;
34858
35002
  },
@@ -34874,7 +35018,7 @@ enifed('ember-runtime/mixins/mutable_array', ['exports', 'ember-metal/property_g
34874
35018
  return null;
34875
35019
  }
34876
35020
 
34877
- var ret = this.objectAt(0);
35021
+ var ret = _emberRuntimeMixinsArray.objectAt(this, 0);
34878
35022
  this.removeAt(0);
34879
35023
  return ret;
34880
35024
  },
@@ -34977,7 +35121,7 @@ enifed('ember-runtime/mixins/mutable_array', ['exports', 'ember-metal/property_g
34977
35121
  removeObject: function (obj) {
34978
35122
  var loc = _emberMetalProperty_get.get(this, 'length') || 0;
34979
35123
  while (--loc >= 0) {
34980
- var curObject = this.objectAt(loc);
35124
+ var curObject = _emberRuntimeMixinsArray.objectAt(this, loc);
34981
35125
 
34982
35126
  if (curObject === obj) {
34983
35127
  this.removeAt(loc);
@@ -35159,8 +35303,9 @@ enifed('ember-runtime/mixins/observable', ['exports', 'ember-metal/debug', 'embe
35159
35303
 
35160
35304
  ## Observing Property Changes
35161
35305
 
35162
- You typically observe property changes simply by adding the `observes`
35163
- call to the end of your method declarations in classes that you write.
35306
+ You typically observe property changes simply by using the `Ember.observer`
35307
+ function in classes that you write.
35308
+
35164
35309
  For example:
35165
35310
 
35166
35311
  ```javascript
@@ -36185,7 +36330,7 @@ enifed('ember-runtime/system/application', ['exports', 'ember-runtime/system/nam
36185
36330
 
36186
36331
  exports.default = _emberRuntimeSystemNamespace.default.extend();
36187
36332
  });
36188
- enifed('ember-runtime/system/array_proxy', ['exports', 'ember-metal/debug', 'ember-metal/property_get', 'ember-runtime/utils', 'ember-metal/computed', 'ember-metal/mixin', 'ember-metal/property_events', 'ember-metal/error', 'ember-runtime/system/object', 'ember-runtime/mixins/mutable_array', 'ember-runtime/mixins/enumerable', 'ember-metal/alias'], function (exports, _emberMetalDebug, _emberMetalProperty_get, _emberRuntimeUtils, _emberMetalComputed, _emberMetalMixin, _emberMetalProperty_events, _emberMetalError, _emberRuntimeSystemObject, _emberRuntimeMixinsMutable_array, _emberRuntimeMixinsEnumerable, _emberMetalAlias) {
36333
+ enifed('ember-runtime/system/array_proxy', ['exports', 'ember-metal/debug', 'ember-metal/property_get', 'ember-runtime/utils', 'ember-metal/computed', 'ember-metal/mixin', 'ember-metal/property_events', 'ember-metal/error', 'ember-runtime/system/object', 'ember-runtime/mixins/mutable_array', 'ember-runtime/mixins/enumerable', 'ember-metal/alias', 'ember-runtime/mixins/array'], function (exports, _emberMetalDebug, _emberMetalProperty_get, _emberRuntimeUtils, _emberMetalComputed, _emberMetalMixin, _emberMetalProperty_events, _emberMetalError, _emberRuntimeSystemObject, _emberRuntimeMixinsMutable_array, _emberRuntimeMixinsEnumerable, _emberMetalAlias, _emberRuntimeMixinsArray) {
36189
36334
  'use strict';
36190
36335
 
36191
36336
  /**
@@ -36270,7 +36415,7 @@ enifed('ember-runtime/system/array_proxy', ['exports', 'ember-metal/debug', 'emb
36270
36415
  @private
36271
36416
  */
36272
36417
  objectAtContent: function (idx) {
36273
- return _emberMetalProperty_get.get(this, 'arrangedContent').objectAt(idx);
36418
+ return _emberRuntimeMixinsArray.objectAt(_emberMetalProperty_get.get(this, 'arrangedContent'), idx);
36274
36419
  },
36275
36420
 
36276
36421
  /**
@@ -36304,7 +36449,7 @@ enifed('ember-runtime/system/array_proxy', ['exports', 'ember-metal/debug', 'emb
36304
36449
  var content = _emberMetalProperty_get.get(this, 'content');
36305
36450
 
36306
36451
  if (content) {
36307
- content.removeArrayObserver(this, {
36452
+ _emberRuntimeMixinsArray.removeArrayObserver(content, this, {
36308
36453
  willChange: 'contentArrayWillChange',
36309
36454
  didChange: 'contentArrayDidChange'
36310
36455
  });
@@ -36352,7 +36497,7 @@ enifed('ember-runtime/system/array_proxy', ['exports', 'ember-metal/debug', 'emb
36352
36497
  if (content) {
36353
36498
  _emberMetalDebug.assert('ArrayProxy expects an Array or Ember.ArrayProxy, but you passed ' + typeof content, _emberRuntimeUtils.isArray(content) || content.isDestroyed);
36354
36499
 
36355
- content.addArrayObserver(this, {
36500
+ _emberRuntimeMixinsArray.addArrayObserver(content, this, {
36356
36501
  willChange: 'contentArrayWillChange',
36357
36502
  didChange: 'contentArrayDidChange'
36358
36503
  });
@@ -36387,7 +36532,7 @@ enifed('ember-runtime/system/array_proxy', ['exports', 'ember-metal/debug', 'emb
36387
36532
  if (arrangedContent) {
36388
36533
  _emberMetalDebug.assert('ArrayProxy expects an Array or Ember.ArrayProxy, but you passed ' + typeof arrangedContent, _emberRuntimeUtils.isArray(arrangedContent) || arrangedContent.isDestroyed);
36389
36534
 
36390
- arrangedContent.addArrayObserver(this, {
36535
+ _emberRuntimeMixinsArray.addArrayObserver(arrangedContent, this, {
36391
36536
  willChange: 'arrangedContentArrayWillChange',
36392
36537
  didChange: 'arrangedContentArrayDidChange'
36393
36538
  });
@@ -36398,7 +36543,7 @@ enifed('ember-runtime/system/array_proxy', ['exports', 'ember-metal/debug', 'emb
36398
36543
  var arrangedContent = _emberMetalProperty_get.get(this, 'arrangedContent');
36399
36544
 
36400
36545
  if (arrangedContent) {
36401
- arrangedContent.removeArrayObserver(this, {
36546
+ _emberRuntimeMixinsArray.removeArrayObserver(arrangedContent, this, {
36402
36547
  willChange: 'arrangedContentArrayWillChange',
36403
36548
  didChange: 'arrangedContentArrayDidChange'
36404
36549
  });
@@ -36471,7 +36616,7 @@ enifed('ember-runtime/system/array_proxy', ['exports', 'ember-metal/debug', 'emb
36471
36616
  // Get a list of indices in original content to remove
36472
36617
  for (i = start; i < start + len; i++) {
36473
36618
  // Use arrangedContent here so we avoid confusion with objects transformed by objectAtContent
36474
- indices.push(content.indexOf(arrangedContent.objectAt(i)));
36619
+ indices.push(content.indexOf(_emberRuntimeMixinsArray.objectAt(arrangedContent, i)));
36475
36620
  }
36476
36621
 
36477
36622
  // Replace in reverse order since indices will change
@@ -37384,7 +37529,7 @@ enifed('ember-runtime/system/core_object', ['exports', 'ember-metal/debug', 'emb
37384
37529
  @return {String} string representation
37385
37530
  @public
37386
37531
  */
37387
- enifed('ember-runtime/system/each_proxy', ['exports', 'ember-metal/debug', 'ember-metal/property_get', 'ember-metal/observer', 'ember-metal/property_events', 'ember-metal/empty_object'], function (exports, _emberMetalDebug, _emberMetalProperty_get, _emberMetalObserver, _emberMetalProperty_events, _emberMetalEmpty_object) {
37532
+ enifed('ember-runtime/system/each_proxy', ['exports', 'ember-metal/debug', 'ember-metal/property_get', 'ember-metal/observer', 'ember-metal/property_events', 'ember-metal/empty_object', 'ember-runtime/mixins/array'], function (exports, _emberMetalDebug, _emberMetalProperty_get, _emberMetalObserver, _emberMetalProperty_events, _emberMetalEmpty_object, _emberRuntimeMixinsArray) {
37388
37533
  'use strict';
37389
37534
 
37390
37535
  /**
@@ -37485,7 +37630,7 @@ enifed('ember-runtime/system/each_proxy', ['exports', 'ember-metal/debug', 'embe
37485
37630
 
37486
37631
  function addObserverForContentKey(content, keyName, proxy, idx, loc) {
37487
37632
  while (--loc >= idx) {
37488
- var item = content.objectAt(loc);
37633
+ var item = _emberRuntimeMixinsArray.objectAt(content, loc);
37489
37634
  if (item) {
37490
37635
  _emberMetalDebug.assert('When using @each to observe the array ' + content + ', the array must return an object', typeof item === 'object');
37491
37636
  _emberMetalObserver._addBeforeObserver(item, keyName, proxy, 'contentKeyWillChange');
@@ -37496,7 +37641,7 @@ enifed('ember-runtime/system/each_proxy', ['exports', 'ember-metal/debug', 'embe
37496
37641
 
37497
37642
  function removeObserverForContentKey(content, keyName, proxy, idx, loc) {
37498
37643
  while (--loc >= idx) {
37499
- var item = content.objectAt(loc);
37644
+ var item = _emberRuntimeMixinsArray.objectAt(content, loc);
37500
37645
  if (item) {
37501
37646
  _emberMetalObserver._removeBeforeObserver(item, keyName, proxy, 'contentKeyWillChange');
37502
37647
  _emberMetalObserver.removeObserver(item, keyName, proxy, 'contentKeyDidChange');
@@ -39652,7 +39797,7 @@ enifed('ember-template-compiler/system/compile_options', ['exports', 'ember-meta
39652
39797
  options.buildMeta = function buildMeta(program) {
39653
39798
  return {
39654
39799
  fragmentReason: fragmentReason(program),
39655
- revision: 'Ember@2.4.0-beta.2',
39800
+ revision: 'Ember@2.4.0-beta.3',
39656
39801
  loc: program.loc,
39657
39802
  moduleName: options.moduleName
39658
39803
  };
@@ -44752,7 +44897,7 @@ enifed('ember-views/views/collection_view', ['exports', 'ember-metal/core', 'emb
44752
44897
  _contentDidChange: _emberMetalMixin.observer('content', function () {
44753
44898
  var prevContent = this._prevContent;
44754
44899
  if (prevContent) {
44755
- prevContent.removeArrayObserver(this);
44900
+ _emberRuntimeMixinsArray.removeArrayObserver(prevContent, this);
44756
44901
  }
44757
44902
  var len = prevContent ? _emberMetalProperty_get.get(prevContent, 'length') : 0;
44758
44903
  this.arrayWillChange(prevContent, 0, len);
@@ -44762,7 +44907,7 @@ enifed('ember-views/views/collection_view', ['exports', 'ember-metal/core', 'emb
44762
44907
  if (content) {
44763
44908
  this._prevContent = content;
44764
44909
  this._assertArrayLike(content);
44765
- content.addArrayObserver(this);
44910
+ _emberRuntimeMixinsArray.addArrayObserver(content, this);
44766
44911
  }
44767
44912
 
44768
44913
  len = content ? _emberMetalProperty_get.get(content, 'length') : 0;
@@ -44790,7 +44935,7 @@ enifed('ember-views/views/collection_view', ['exports', 'ember-metal/core', 'emb
44790
44935
 
44791
44936
  var content = _emberMetalProperty_get.get(this, 'content');
44792
44937
  if (content) {
44793
- content.removeArrayObserver(this);
44938
+ _emberRuntimeMixinsArray.removeArrayObserver(content, this);
44794
44939
  }
44795
44940
 
44796
44941
  if (this._createdEmptyView) {
@@ -44840,7 +44985,7 @@ enifed('ember-views/views/collection_view', ['exports', 'ember-metal/core', 'emb
44840
44985
  itemViewClass = _emberViewsStreamsUtils.readViewFactory(itemViewClass, _containerOwner.getOwner(this));
44841
44986
 
44842
44987
  for (idx = start; idx < start + added; idx++) {
44843
- item = content.objectAt(idx);
44988
+ item = _emberRuntimeMixinsArray.objectAt(content, idx);
44844
44989
  itemViewProps._context = this.keyword ? this.get('context') : item;
44845
44990
  itemViewProps.content = item;
44846
44991
  itemViewProps.contentIndex = idx;
@@ -44992,7 +45137,7 @@ enifed('ember-views/views/collection_view', ['exports', 'ember-metal/core', 'emb
44992
45137
  enifed('ember-views/views/container_view', ['exports', 'ember-metal/core', 'ember-metal/debug', 'ember-runtime/mixins/mutable_array', 'ember-runtime/system/native_array', 'ember-views/views/view', 'ember-metal/property_get', 'ember-metal/property_set', 'ember-metal/mixin', 'ember-metal/events', 'ember-htmlbars/templates/container-view'], function (exports, _emberMetalCore, _emberMetalDebug, _emberRuntimeMixinsMutable_array, _emberRuntimeSystemNative_array, _emberViewsViewsView, _emberMetalProperty_get, _emberMetalProperty_set, _emberMetalMixin, _emberMetalEvents, _emberHtmlbarsTemplatesContainerView) {
44993
45138
  'use strict';
44994
45139
 
44995
- _emberHtmlbarsTemplatesContainerView.default.meta.revision = 'Ember@2.4.0-beta.2';
45140
+ _emberHtmlbarsTemplatesContainerView.default.meta.revision = 'Ember@2.4.0-beta.3';
44996
45141
 
44997
45142
  /**
44998
45143
  @module ember
@@ -45487,7 +45632,7 @@ enifed('ember-views/views/legacy_each_view', ['exports', 'ember-htmlbars/templat
45487
45632
  })
45488
45633
  });
45489
45634
  });
45490
- enifed('ember-views/views/select', ['exports', 'ember-metal/replace', 'ember-metal/property_get', 'ember-metal/property_set', 'ember-views/views/view', 'ember-runtime/utils', 'ember-metal/is_none', 'ember-metal/computed', 'ember-runtime/system/native_array', 'ember-metal/mixin', 'ember-metal/properties', 'ember-htmlbars/templates/select', 'ember-htmlbars/templates/select-option', 'ember-htmlbars/templates/select-optgroup'], function (exports, _emberMetalReplace, _emberMetalProperty_get, _emberMetalProperty_set, _emberViewsViewsView, _emberRuntimeUtils, _emberMetalIs_none, _emberMetalComputed, _emberRuntimeSystemNative_array, _emberMetalMixin, _emberMetalProperties, _emberHtmlbarsTemplatesSelect, _emberHtmlbarsTemplatesSelectOption, _emberHtmlbarsTemplatesSelectOptgroup) {
45635
+ enifed('ember-views/views/select', ['exports', 'ember-metal/replace', 'ember-metal/property_get', 'ember-metal/property_set', 'ember-views/views/view', 'ember-runtime/utils', 'ember-metal/is_none', 'ember-metal/computed', 'ember-runtime/system/native_array', 'ember-metal/mixin', 'ember-metal/properties', 'ember-htmlbars/templates/select', 'ember-htmlbars/templates/select-option', 'ember-htmlbars/templates/select-optgroup', 'ember-runtime/mixins/array'], function (exports, _emberMetalReplace, _emberMetalProperty_get, _emberMetalProperty_set, _emberViewsViewsView, _emberRuntimeUtils, _emberMetalIs_none, _emberMetalComputed, _emberRuntimeSystemNative_array, _emberMetalMixin, _emberMetalProperties, _emberHtmlbarsTemplatesSelect, _emberHtmlbarsTemplatesSelectOption, _emberHtmlbarsTemplatesSelectOptgroup, _emberRuntimeMixinsArray) {
45491
45636
  /**
45492
45637
  @module ember
45493
45638
  @submodule ember-views
@@ -46023,7 +46168,7 @@ enifed('ember-views/views/select', ['exports', 'ember-metal/replace', 'ember-met
46023
46168
  if (prompt) {
46024
46169
  selectedIndex -= 1;
46025
46170
  }
46026
- _emberMetalProperty_set.set(this, 'selection', content.objectAt(selectedIndex));
46171
+ _emberMetalProperty_set.set(this, 'selection', _emberRuntimeMixinsArray.objectAt(content, selectedIndex));
46027
46172
  },
46028
46173
 
46029
46174
  _selectedIndex: function (value) {