ember-source 1.8.0.beta.1 → 1.8.0.beta.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -5,7 +5,7 @@
5
5
  * Portions Copyright 2008-2011 Apple Inc. All rights reserved.
6
6
  * @license Licensed under MIT license
7
7
  * See https://raw.github.com/emberjs/ember.js/master/LICENSE
8
- * @version 1.8.0-beta.1
8
+ * @version 1.8.0-beta.2
9
9
  */
10
10
 
11
11
  (function() {
@@ -704,7 +704,7 @@ define("backburner/deferred-action-queues",
704
704
  queue = queues[queueName];
705
705
  queueItems = queue._queueBeingFlushed = queue._queue.slice();
706
706
  queue._queue = [];
707
- queue.guidBucket = Object.create(null);
707
+ queue.targetQueues = Object.create(null);
708
708
 
709
709
  var queueOptions = queue.options; // TODO: write a test for this
710
710
  var before = queueOptions && queueOptions.before;
@@ -1069,12 +1069,13 @@ define("container",
1069
1069
  __exports__["default"] = Container;
1070
1070
  });
1071
1071
  define("container/container",
1072
- ["ember-metal/core","ember-metal/dictionary","exports"],
1073
- function(__dependency1__, __dependency2__, __exports__) {
1072
+ ["ember-metal/core","ember-metal/keys","ember-metal/dictionary","exports"],
1073
+ function(__dependency1__, __dependency2__, __dependency3__, __exports__) {
1074
1074
  "use strict";
1075
1075
  var Ember = __dependency1__["default"];
1076
1076
  // Ember.assert
1077
- var dictionary = __dependency2__["default"];
1077
+ var emberKeys = __dependency2__["default"];
1078
+ var dictionary = __dependency3__["default"];
1078
1079
 
1079
1080
  // A lightweight container that helps to assemble and decouple components.
1080
1081
  // Public api for the container is still in flux.
@@ -1871,7 +1872,7 @@ define("container/container",
1871
1872
 
1872
1873
  function eachDestroyable(container, callback) {
1873
1874
  var cache = container.cache;
1874
- var keys = Ember.keys(cache);
1875
+ var keys = emberKeys(cache);
1875
1876
  var key, value;
1876
1877
 
1877
1878
  for (var i = 0, l = keys.length; i < l; i++) {
@@ -3294,7 +3295,7 @@ define("ember-application/system/dag",
3294
3295
 
3295
3296
  /**
3296
3297
  * Connects the vertices with the given names, adding them to the graph if
3297
- * necesary, only if this does not produce is any circular dependency.
3298
+ * necessary, only if this does not produce is any circular dependency.
3298
3299
  *
3299
3300
  * @private
3300
3301
  * @method addEdge
@@ -5329,14 +5330,16 @@ define("ember-handlebars/controls",
5329
5330
  var inputType = _resolveOption(this, options, 'type');
5330
5331
  var onEvent = hash.on;
5331
5332
 
5332
- delete hash.type;
5333
- delete hash.on;
5334
-
5335
5333
  if (inputType === 'checkbox') {
5334
+ delete hash.type;
5335
+ delete types.type;
5336
+
5336
5337
  Ember.assert("{{input type='checkbox'}} does not support setting `value=someBooleanValue`; you must use `checked=someBooleanValue` instead.", options.hashTypes.value !== 'ID');
5338
+
5337
5339
  return helpers.view.call(this, Checkbox, options);
5338
5340
  } else {
5339
- if (inputType) { hash.type = inputType; }
5341
+ delete hash.on;
5342
+
5340
5343
  hash.onEvent = onEvent || 'enter';
5341
5344
  return helpers.view.call(this, TextField, options);
5342
5345
  }
@@ -12602,81 +12605,124 @@ define("ember-metal/computed",
12602
12605
  Generally speaking if you intend for your computed property to be set
12603
12606
  your backing function should accept either two or three arguments.
12604
12607
 
12608
+ ```javascript
12609
+ var Person = Ember.Object.extend({
12610
+ // these will be supplied by `create`
12611
+ firstName: null,
12612
+ lastName: null,
12613
+
12614
+ fullName: function(key, value, oldValue) {
12615
+ // getter
12616
+ if (arguments.length === 1) {
12617
+ var firstName = this.get('firstName');
12618
+ var lastName = this.get('lastName');
12619
+
12620
+ return firstName + ' ' + lastName;
12621
+
12622
+ // setter
12623
+ } else {
12624
+ var name = value.split(' ');
12625
+
12626
+ this.set('firstName', name[0]);
12627
+ this.set('lastName', name[1]);
12628
+
12629
+ return value;
12630
+ }
12631
+ }.property('firstName', 'lastName')
12632
+ });
12633
+
12634
+ var person = Person.create();
12635
+
12636
+ person.set('fullName', 'Peter Wagenet');
12637
+ person.get('firstName'); // 'Peter'
12638
+ person.get('lastName'); // 'Wagenet'
12639
+ ```
12640
+
12605
12641
  @method set
12606
12642
  @param {String} keyName The key being accessed.
12607
12643
  @param {Object} newValue The new value being assigned.
12608
12644
  @param {String} oldValue The old value being replaced.
12609
12645
  @return {Object} The return value of the function backing the CP.
12610
12646
  */
12611
- ComputedPropertyPrototype.set = function(obj, keyName, value) {
12612
- var cacheable = this._cacheable;
12613
- var func = this.func;
12614
- var meta = metaFor(obj, cacheable);
12647
+ ComputedPropertyPrototype.set = function computedPropertySetWithSuspend(obj, keyName, value) {
12615
12648
  var oldSuspended = this._suspended;
12649
+
12650
+ this._suspended = obj;
12651
+
12652
+ try {
12653
+ this._set(obj, keyName, value);
12654
+ } finally {
12655
+ this._suspended = oldSuspended;
12656
+ }
12657
+ };
12658
+
12659
+ ComputedPropertyPrototype._set = function computedPropertySet(obj, keyName, value) {
12660
+ var cacheable = this._cacheable;
12661
+ var func = this.func;
12662
+ var meta = metaFor(obj, cacheable);
12663
+ var cache = meta.cache;
12616
12664
  var hadCachedValue = false;
12617
- var cache = meta.cache;
12665
+
12618
12666
  var funcArgLength, cachedValue, ret;
12619
12667
 
12620
12668
  if (this._readOnly) {
12621
12669
  throw new EmberError('Cannot set read-only property "' + keyName + '" on object: ' + inspect(obj));
12622
12670
  }
12623
12671
 
12624
- this._suspended = obj;
12625
-
12626
- try {
12672
+ if (cacheable && cache[keyName] !== undefined) {
12673
+ if(cache[keyName] !== UNDEFINED) {
12674
+ cachedValue = cache[keyName];
12675
+ }
12627
12676
 
12628
- if (cacheable && cache[keyName] !== undefined) {
12629
- if(cache[keyName] !== UNDEFINED) {
12630
- cachedValue = cache[keyName];
12631
- }
12677
+ hadCachedValue = true;
12678
+ }
12632
12679
 
12633
- hadCachedValue = true;
12634
- }
12680
+ // Check if the CP has been wrapped. If it has, use the
12681
+ // length from the wrapped function.
12635
12682
 
12636
- // Check if the CP has been wrapped. If it has, use the
12637
- // length from the wrapped function.
12683
+ funcArgLength = func.wrappedFunction ? func.wrappedFunction.__ember_arity__ : func.__ember_arity__;
12638
12684
 
12639
- funcArgLength = func.wrappedFunction ? func.wrappedFunction.__ember_arity__ : func.__ember_arity__;
12685
+ // For backwards-compatibility with computed properties
12686
+ // that check for arguments.length === 2 to determine if
12687
+ // they are being get or set, only pass the old cached
12688
+ // value if the computed property opts into a third
12689
+ // argument.
12690
+ if (funcArgLength === 3) {
12691
+ ret = func.call(obj, keyName, value, cachedValue);
12692
+ } else if (funcArgLength === 2) {
12693
+ ret = func.call(obj, keyName, value);
12694
+ } else {
12695
+ defineProperty(obj, keyName, null, cachedValue);
12696
+ set(obj, keyName, value);
12697
+ return;
12698
+ }
12640
12699
 
12641
- // For backwards-compatibility with computed properties
12642
- // that check for arguments.length === 2 to determine if
12643
- // they are being get or set, only pass the old cached
12644
- // value if the computed property opts into a third
12645
- // argument.
12646
- if (funcArgLength === 3) {
12647
- ret = func.call(obj, keyName, value, cachedValue);
12648
- } else if (funcArgLength === 2) {
12649
- ret = func.call(obj, keyName, value);
12650
- } else {
12651
- defineProperty(obj, keyName, null, cachedValue);
12652
- set(obj, keyName, value);
12653
- return;
12654
- }
12700
+ if (hadCachedValue && cachedValue === ret) { return; }
12655
12701
 
12656
- if (hadCachedValue && cachedValue === ret) { return; }
12702
+ var watched = meta.watching[keyName];
12703
+ if (watched) {
12704
+ propertyWillChange(obj, keyName);
12705
+ }
12657
12706
 
12658
- var watched = meta.watching[keyName];
12659
- if (watched) { propertyWillChange(obj, keyName); }
12707
+ if (hadCachedValue) {
12708
+ cache[keyName] = undefined;
12709
+ }
12660
12710
 
12661
- if (hadCachedValue) {
12662
- cache[keyName] = undefined;
12711
+ if (cacheable) {
12712
+ if (!hadCachedValue) {
12713
+ addDependentKeys(this, obj, keyName, meta);
12663
12714
  }
12664
-
12665
- if (cacheable) {
12666
- if (!hadCachedValue) {
12667
- addDependentKeys(this, obj, keyName, meta);
12668
- }
12669
- if (ret === undefined) {
12670
- cache[keyName] = UNDEFINED;
12671
- } else {
12672
- cache[keyName] = ret;
12673
- }
12715
+ if (ret === undefined) {
12716
+ cache[keyName] = UNDEFINED;
12717
+ } else {
12718
+ cache[keyName] = ret;
12674
12719
  }
12720
+ }
12675
12721
 
12676
- if (watched) { propertyDidChange(obj, keyName); }
12677
- } finally {
12678
- this._suspended = oldSuspended;
12722
+ if (watched) {
12723
+ propertyDidChange(obj, keyName);
12679
12724
  }
12725
+
12680
12726
  return ret;
12681
12727
  };
12682
12728
 
@@ -12703,9 +12749,45 @@ define("ember-metal/computed",
12703
12749
  The function should accept two parameters, key and value. If value is not
12704
12750
  undefined you should set the value first. In either case return the
12705
12751
  current value of the property.
12752
+
12753
+ A computed property defined in this way might look like this:
12754
+
12755
+ ```js
12756
+ var Person = Ember.Object.extend({
12757
+ firstName: 'Betty',
12758
+ lastName: 'Jones',
12759
+
12760
+ fullName: Ember.computed('firstName', 'lastName', function(key, value) {
12761
+ return this.get('firstName') + ' ' + this.get('lastName');
12762
+ })
12763
+ });
12764
+
12765
+ var client = Person.create();
12766
+
12767
+ client.get('fullName'); // 'Betty Jones'
12768
+
12769
+ client.set('lastName', 'Fuller');
12770
+ client.get('fullName'); // 'Betty Fuller'
12771
+ ```
12772
+
12773
+ _Note: This is the prefered way to define computed properties when writing third-party
12774
+ libraries that depend on or use Ember, since there is no guarantee that the user
12775
+ will have prototype extensions enabled._
12776
+
12777
+ You might use this method if you disabled
12778
+ [Prototype Extensions](http://emberjs.com/guides/configuring-ember/disabling-prototype-extensions/).
12779
+ The alternative syntax might look like this
12780
+ (if prototype extensions are enabled, which is the default behavior):
12781
+
12782
+ ```js
12783
+ fullName: function () {
12784
+ return this.get('firstName') + ' ' + this.get('lastName');
12785
+ }.property('firstName', 'lastName')
12786
+ ```
12706
12787
 
12707
12788
  @method computed
12708
12789
  @for Ember
12790
+ @param {String} [dependentKeys*] Optional dependent keys that trigger this computed property.
12709
12791
  @param {Function} func The computed property function.
12710
12792
  @return {Ember.ComputedProperty} property descriptor instance
12711
12793
  */
@@ -13038,7 +13120,7 @@ define("ember-metal/computed_macros",
13038
13120
  });
13039
13121
 
13040
13122
  /**
13041
- A computed property that returns true if the provied dependent property
13123
+ A computed property that returns true if the provided dependent property
13042
13124
  is greater than the provided value.
13043
13125
 
13044
13126
  Example
@@ -13062,7 +13144,7 @@ define("ember-metal/computed_macros",
13062
13144
  @param {String} dependentKey
13063
13145
  @param {Number} value
13064
13146
  @return {Ember.ComputedProperty} computed property which returns true if
13065
- the original value for property is greater then given value.
13147
+ the original value for property is greater than given value.
13066
13148
  */
13067
13149
  registerComputed('gt', function(dependentKey, value) {
13068
13150
  return get(this, dependentKey) > value;
@@ -13155,7 +13237,7 @@ define("ember-metal/computed_macros",
13155
13237
  @param {String} dependentKey
13156
13238
  @param {Number} value
13157
13239
  @return {Ember.ComputedProperty} computed property which returns true if
13158
- the original value for property is less or equal then given value.
13240
+ the original value for property is less or equal than given value.
13159
13241
  */
13160
13242
  registerComputed('lte', function(dependentKey, value) {
13161
13243
  return get(this, dependentKey) <= value;
@@ -13507,7 +13589,7 @@ define("ember-metal/core",
13507
13589
 
13508
13590
  @class Ember
13509
13591
  @static
13510
- @version 1.8.0-beta.1
13592
+ @version 1.8.0-beta.2
13511
13593
  */
13512
13594
 
13513
13595
  if ('undefined' === typeof Ember) {
@@ -13534,10 +13616,10 @@ define("ember-metal/core",
13534
13616
  /**
13535
13617
  @property VERSION
13536
13618
  @type String
13537
- @default '1.8.0-beta.1'
13619
+ @default '1.8.0-beta.2'
13538
13620
  @static
13539
13621
  */
13540
- Ember.VERSION = '1.8.0-beta.1';
13622
+ Ember.VERSION = '1.8.0-beta.2';
13541
13623
 
13542
13624
  /**
13543
13625
  Standard environmental variables. You can define these in a global `EmberENV`
@@ -13781,6 +13863,50 @@ define("ember-metal/dependent_keys",
13781
13863
 
13782
13864
  __exports__.removeDependentKeys = removeDependentKeys;
13783
13865
  });
13866
+ define("ember-metal/deprecate_property",
13867
+ ["ember-metal/core","ember-metal/platform","ember-metal/properties","ember-metal/property_get","ember-metal/property_set","exports"],
13868
+ function(__dependency1__, __dependency2__, __dependency3__, __dependency4__, __dependency5__, __exports__) {
13869
+ "use strict";
13870
+ /**
13871
+ @module ember-metal
13872
+ */
13873
+
13874
+ var Ember = __dependency1__["default"];
13875
+ var hasPropertyAccessors = __dependency2__.hasPropertyAccessors;
13876
+ var defineProperty = __dependency3__.defineProperty;
13877
+ var get = __dependency4__.get;
13878
+ var set = __dependency5__.set;
13879
+
13880
+
13881
+ /**
13882
+ Used internally to allow changing properties in a backwards compatible way, and print a helpful
13883
+ deprecation warning.
13884
+
13885
+ @method deprecateProperty
13886
+ @param {Object} object The object to add the deprecated property to.
13887
+ @param {String} deprecatedKey The property to add (and print deprecation warnings upon accessing).
13888
+ @param {String} newKey The property that will be aliased.
13889
+ @private
13890
+ @since 1.7.0
13891
+ */
13892
+
13893
+ function deprecateProperty(object, deprecatedKey, newKey) {
13894
+ function deprecate() {
13895
+ Ember.deprecate('Usage of `' + deprecatedKey + '` is deprecated, use `' + newKey + '` instead.');
13896
+ }
13897
+
13898
+ if (hasPropertyAccessors) {
13899
+ defineProperty(object, deprecatedKey, {
13900
+ configurable: true,
13901
+ enumerable: false,
13902
+ set: function(value) { deprecate(); set(this, newKey, value); },
13903
+ get: function() { deprecate(); return get(this, newKey); }
13904
+ });
13905
+ }
13906
+ }
13907
+
13908
+ __exports__.deprecateProperty = deprecateProperty;
13909
+ });
13784
13910
  define("ember-metal/dictionary",
13785
13911
  ["exports"],
13786
13912
  function(__exports__) {
@@ -14734,7 +14860,7 @@ define("ember-metal/instrumentation",
14734
14860
  */
14735
14861
  function instrument(name, _payload, callback, binding) {
14736
14862
  if (subscribers.length === 0) {
14737
- return;
14863
+ return callback.call(binding);
14738
14864
  }
14739
14865
  var payload = _payload || {};
14740
14866
  var finalizer = _instrumentStart(name, function () {
@@ -14748,6 +14874,8 @@ define("ember-metal/instrumentation",
14748
14874
  payload.exception = e;
14749
14875
  };
14750
14876
  return tryCatchFinally(tryable, catchable, finalizer);
14877
+ } else {
14878
+ return callback.call(binding);
14751
14879
  }
14752
14880
  }
14753
14881
 
@@ -15017,11 +15145,11 @@ define("ember-metal/is_present",
15017
15145
  __exports__["default"] = isPresent;
15018
15146
  });
15019
15147
  define("ember-metal/keys",
15020
- ["ember-metal/enumerable_utils","ember-metal/platform","exports"],
15148
+ ["ember-metal/array","ember-metal/platform","exports"],
15021
15149
  function(__dependency1__, __dependency2__, __exports__) {
15022
15150
  "use strict";
15023
- var EnumerableUtils = __dependency1__["default"];
15024
- var create = __dependency2__.create;
15151
+ var indexOf = __dependency1__.indexOf;
15152
+ var canDefineNonEnumerableProperties = __dependency2__.canDefineNonEnumerableProperties;
15025
15153
 
15026
15154
  /**
15027
15155
  Returns all of the keys defined on an object or hash. This is useful
@@ -15035,7 +15163,7 @@ define("ember-metal/keys",
15035
15163
  */
15036
15164
  var keys = Object.keys;
15037
15165
 
15038
- if (!keys || create.isSimulated) {
15166
+ if (!keys || !canDefineNonEnumerableProperties) {
15039
15167
  var prototypeProperties = [
15040
15168
  'constructor',
15041
15169
  'hasOwnProperty',
@@ -15056,7 +15184,7 @@ define("ember-metal/keys",
15056
15184
  return;
15057
15185
  }
15058
15186
 
15059
- if (EnumerableUtils.indexOf(array, key) >= 0) {
15187
+ if (indexOf(array, key) >= 0) {
15060
15188
  return;
15061
15189
  }
15062
15190
 
@@ -16771,65 +16899,62 @@ define("ember-metal/path_cache",
16771
16899
  __exports__.isPath = isPath;
16772
16900
  });
16773
16901
  define("ember-metal/platform",
16774
- ["ember-metal/core","exports"],
16775
- function(__dependency1__, __exports__) {
16902
+ ["exports"],
16903
+ function(__exports__) {
16776
16904
  "use strict";
16777
16905
  /*globals Node */
16778
16906
 
16779
- var Ember = __dependency1__["default"];
16780
-
16781
16907
  /**
16782
16908
  @module ember-metal
16783
16909
  */
16784
-
16785
- /**
16786
- Platform specific methods and feature detectors needed by the framework.
16787
-
16788
- @class platform
16789
- @namespace Ember
16790
- @static
16791
- */
16792
- // TODO remove this
16793
- var platform = {};
16794
-
16795
- var defineProperty = Object.defineProperty;
16796
- var canRedefineProperties, canDefinePropertyOnDOM;
16797
-
16798
- // Catch IE8 where Object.defineProperty exists but only works on DOM elements
16799
- if (defineProperty) {
16910
+ var defineProperty = (function checkCompliance(defineProperty) {
16911
+ if (!defineProperty) return;
16800
16912
  try {
16801
- defineProperty({}, 'a',{get:function() {}});
16802
- } catch (e) {
16803
- defineProperty = null;
16804
- }
16805
- }
16806
-
16807
- if (defineProperty) {
16808
- // Detects a bug in Android <3.2 where you cannot redefine a property using
16809
- // Object.defineProperty once accessors have already been set.
16810
- canRedefineProperties = (function() {
16913
+ var a = 5;
16811
16914
  var obj = {};
16812
-
16813
16915
  defineProperty(obj, 'a', {
16814
16916
  configurable: true,
16815
16917
  enumerable: true,
16816
- get: function() { },
16817
- set: function() { }
16918
+ get: function () {
16919
+ return a;
16920
+ },
16921
+ set: function (v) {
16922
+ a = v;
16923
+ }
16818
16924
  });
16925
+ if (obj.a !== 5) return;
16926
+ obj.a = 10;
16927
+ if (a !== 10) return;
16819
16928
 
16929
+ // check non-enumerability
16820
16930
  defineProperty(obj, 'a', {
16821
16931
  configurable: true,
16822
- enumerable: true,
16932
+ enumerable: false,
16823
16933
  writable: true,
16824
16934
  value: true
16825
16935
  });
16936
+ for (var key in obj) {
16937
+ if (key === 'a') return;
16938
+ }
16826
16939
 
16827
- return obj.a === true;
16828
- })();
16940
+ // Detects a bug in Android <3.2 where you cannot redefine a property using
16941
+ // Object.defineProperty once accessors have already been set.
16942
+ if (obj.a !== true) return;
16829
16943
 
16944
+ // defineProperty is compliant
16945
+ return defineProperty;
16946
+ } catch (e) {
16947
+ // IE8 defines Object.defineProperty but calling it on an Object throws
16948
+ return;
16949
+ }
16950
+ })(Object.defineProperty);
16951
+
16952
+ var hasES5CompliantDefineProperty = !!defineProperty;
16953
+
16954
+ if (hasES5CompliantDefineProperty && typeof document !== 'undefined') {
16830
16955
  // This is for Safari 5.0, which supports Object.defineProperty, but not
16831
16956
  // on DOM nodes.
16832
- canDefinePropertyOnDOM = (function() {
16957
+ var canDefinePropertyOnDOM = (function() {
16833
16958
  try {
16834
16959
  defineProperty(document.createElement('div'), 'definePropertyOnDOM', {});
16835
16960
  return true;
@@ -16838,9 +16963,7 @@ define("ember-metal/platform",
16838
16963
  return false;
16839
16964
  })();
16840
16965
 
16841
- if (!canRedefineProperties) {
16842
- defineProperty = null;
16843
- } else if (!canDefinePropertyOnDOM) {
16966
+ if (!canDefinePropertyOnDOM) {
16844
16967
  defineProperty = function(obj, keyName, desc) {
16845
16968
  var isNode;
16846
16969
 
@@ -16860,6 +16983,12 @@ define("ember-metal/platform",
16860
16983
  }
16861
16984
  }
16862
16985
 
16986
+ if (!hasES5CompliantDefineProperty) {
16987
+ defineProperty = function defineProperty(obj, keyName, desc) {
16988
+ if (!desc.get) { obj[keyName] = desc.value; }
16989
+ };
16990
+ }
16991
+
16863
16992
  // ES5 15.2.3.7
16864
16993
  // http://es5.github.com/#x15.2.3.7
16865
16994
  if (!Object.defineProperties) {
@@ -16955,17 +17084,28 @@ define("ember-metal/platform",
16955
17084
 
16956
17085
  return object;
16957
17086
  };
16958
- create.isSimulated = true;
16959
17087
  } else {
16960
17088
  create = Object.create;
16961
17089
  }
16962
17090
 
17091
+ var hasPropertyAccessors = hasES5CompliantDefineProperty;
17092
+ var canDefineNonEnumerableProperties = hasES5CompliantDefineProperty;
16963
17093
 
16964
17094
  /**
16965
17095
  @class platform
16966
17096
  @namespace Ember
16967
17097
  */
16968
17098
 
17099
+ /**
17100
+ Platform specific methods and feature detectors needed by the framework.
17101
+
17102
+ @class platform
17103
+ @namespace Ember
17104
+ @static
17105
+ */
17106
+ // TODO remove this
17107
+ var platform = {};
17108
+
16969
17109
  /**
16970
17110
  Identical to `Object.defineProperty()`. Implements as much functionality
16971
17111
  as possible if not available natively.
@@ -16984,45 +17124,27 @@ define("ember-metal/platform",
16984
17124
  @property hasPropertyAccessors
16985
17125
  @final
16986
17126
  */
16987
- platform.hasPropertyAccessors = true;
16988
-
16989
- if (!platform.defineProperty) {
16990
- platform.hasPropertyAccessors = false;
16991
-
16992
- defineProperty = platform.defineProperty = function(obj, keyName, desc) {
16993
- if (!desc.get) { obj[keyName] = desc.value; }
16994
- };
16995
-
16996
- platform.defineProperty.isSimulated = true;
16997
- }
16998
-
16999
- if (Ember.ENV.MANDATORY_SETTER && !platform.hasPropertyAccessors) {
17000
- Ember.ENV.MANDATORY_SETTER = false;
17001
- }
17127
+ platform.hasPropertyAccessors = hasPropertyAccessors;
17002
17128
 
17003
17129
  __exports__.create = create;
17130
+ __exports__.defineProperty = defineProperty;
17131
+ __exports__.hasPropertyAccessors = hasPropertyAccessors;
17132
+ __exports__.canDefineNonEnumerableProperties = canDefineNonEnumerableProperties;
17004
17133
  __exports__.platform = platform;
17005
17134
  });
17006
17135
  define("ember-metal/properties",
17007
- ["ember-metal/core","ember-metal/utils","ember-metal/platform","ember-metal/property_events","ember-metal/property_get","ember-metal/property_set","exports"],
17008
- function(__dependency1__, __dependency2__, __dependency3__, __dependency4__, __dependency5__, __dependency6__, __exports__) {
17136
+ ["ember-metal/core","ember-metal/utils","ember-metal/platform","ember-metal/property_events","exports"],
17137
+ function(__dependency1__, __dependency2__, __dependency3__, __dependency4__, __exports__) {
17009
17138
  "use strict";
17010
17139
  /**
17011
17140
  @module ember-metal
17012
17141
  */
17013
17142
 
17014
17143
  var Ember = __dependency1__["default"];
17015
- var meta = __dependency2__.meta;
17016
- var platform = __dependency3__.platform;
17144
+ var metaFor = __dependency2__.meta;
17145
+ var objectDefineProperty = __dependency3__.defineProperty;
17146
+ var hasPropertyAccessors = __dependency3__.hasPropertyAccessors;
17017
17147
  var overrideChains = __dependency4__.overrideChains;
17018
- var get = __dependency5__.get;
17019
- var set = __dependency6__.set;
17020
-
17021
- var metaFor = meta;
17022
- var objectDefineProperty = platform.defineProperty;
17023
-
17024
- var MANDATORY_SETTER = Ember.ENV.MANDATORY_SETTER;
17025
-
17026
17148
  // ..........................................................
17027
17149
  // DESCRIPTOR
17028
17150
  //
@@ -17044,18 +17166,18 @@ define("ember-metal/properties",
17044
17166
  // DEFINING PROPERTIES API
17045
17167
  //
17046
17168
 
17047
- var MANDATORY_SETTER_FUNCTION = Ember.MANDATORY_SETTER_FUNCTION = function(value) {
17169
+ function MANDATORY_SETTER_FUNCTION(value) {
17048
17170
  Ember.assert("You must use Ember.set() to access this property (of " + this + ")", false);
17049
- };
17171
+ }
17050
17172
 
17051
- var DEFAULT_GETTER_FUNCTION = Ember.DEFAULT_GETTER_FUNCTION = function DEFAULT_GETTER_FUNCTION(name) {
17052
- return function() {
17173
+ __exports__.MANDATORY_SETTER_FUNCTION = MANDATORY_SETTER_FUNCTION;function DEFAULT_GETTER_FUNCTION(name) {
17174
+ return function GETTER_FUNCTION() {
17053
17175
  var meta = this['__ember_meta__'];
17054
17176
  return meta && meta.values[name];
17055
17177
  };
17056
- };
17178
+ }
17057
17179
 
17058
- /**
17180
+ __exports__.DEFAULT_GETTER_FUNCTION = DEFAULT_GETTER_FUNCTION;/**
17059
17181
  NOTE: This is a low-level method used by other parts of the API. You almost
17060
17182
  never want to call this method directly. Instead you should use
17061
17183
  `Ember.mixin()` to define new properties.
@@ -17118,34 +17240,36 @@ define("ember-metal/properties",
17118
17240
  value = desc;
17119
17241
 
17120
17242
  descs[keyName] = desc;
17121
- if (MANDATORY_SETTER && watching) {
17122
- objectDefineProperty(obj, keyName, {
17123
- configurable: true,
17124
- enumerable: true,
17125
- writable: true,
17126
- value: undefined // make enumerable
17127
- });
17128
- } else {
17129
- obj[keyName] = undefined; // make enumerable
17130
- }
17131
- if (desc.setup) { desc.setup(obj, keyName); }
17132
- } else {
17133
- descs[keyName] = undefined; // shadow descriptor in proto
17134
- if (desc == null) {
17135
- value = data;
17136
-
17137
- if (MANDATORY_SETTER && watching) {
17138
- meta.values[keyName] = data;
17243
+
17244
+ if (watching && hasPropertyAccessors) {
17139
17245
  objectDefineProperty(obj, keyName, {
17140
17246
  configurable: true,
17141
17247
  enumerable: true,
17142
- set: MANDATORY_SETTER_FUNCTION,
17143
- get: DEFAULT_GETTER_FUNCTION(keyName)
17248
+ writable: true,
17249
+ value: undefined // make enumerable
17144
17250
  });
17145
17251
  } else {
17146
- obj[keyName] = data;
17252
+ obj[keyName] = undefined; // make enumerable
17147
17253
  }
17148
- } else {
17254
+ if (desc.setup) { desc.setup(obj, keyName); }
17255
+ } else {
17256
+ descs[keyName] = undefined; // shadow descriptor in proto
17257
+ if (desc == null) {
17258
+ value = data;
17259
+
17260
+
17261
+ if (watching && hasPropertyAccessors) {
17262
+ meta.values[keyName] = data;
17263
+ objectDefineProperty(obj, keyName, {
17264
+ configurable: true,
17265
+ enumerable: true,
17266
+ set: MANDATORY_SETTER_FUNCTION,
17267
+ get: DEFAULT_GETTER_FUNCTION(keyName)
17268
+ });
17269
+ } else {
17270
+ obj[keyName] = data;
17271
+ }
17272
+ } else {
17149
17273
  value = desc;
17150
17274
 
17151
17275
  // compatibility with ES5
@@ -17163,35 +17287,7 @@ define("ember-metal/properties",
17163
17287
 
17164
17288
  return this;
17165
17289
  }
17166
-
17167
- __exports__.defineProperty = defineProperty;/**
17168
- Used internally to allow changing properties in a backwards compatible way, and print a helpful
17169
- deprecation warning.
17170
-
17171
- @method deprecateProperty
17172
- @param {Object} object The object to add the deprecated property to.
17173
- @param {String} deprecatedKey The property to add (and print deprecation warnings upon accessing).
17174
- @param {String} newKey The property that will be aliased.
17175
- @private
17176
- @since 1.7.0
17177
- */
17178
-
17179
- function deprecateProperty(object, deprecatedKey, newKey) {
17180
- function deprecate() {
17181
- Ember.deprecate('Usage of `' + deprecatedKey + '` is deprecated, use `' + newKey + '` instead.');
17182
- }
17183
-
17184
- if (platform.hasPropertyAccessors) {
17185
- defineProperty(object, deprecatedKey, {
17186
- configurable: true,
17187
- enumerable: false,
17188
- set: function(value) { deprecate(); set(object, newKey, value); },
17189
- get: function() { deprecate(); return get(object, newKey); }
17190
- });
17191
- }
17192
- }
17193
-
17194
- __exports__.deprecateProperty = deprecateProperty;
17290
+ __exports__.defineProperty = defineProperty;
17195
17291
  });
17196
17292
  define("ember-metal/property_events",
17197
17293
  ["ember-metal/utils","ember-metal/events","ember-metal/observer_set","exports"],
@@ -17453,8 +17549,8 @@ define("ember-metal/property_events",
17453
17549
  __exports__.changeProperties = changeProperties;
17454
17550
  });
17455
17551
  define("ember-metal/property_get",
17456
- ["ember-metal/core","ember-metal/error","ember-metal/path_cache","exports"],
17457
- function(__dependency1__, __dependency2__, __dependency3__, __exports__) {
17552
+ ["ember-metal/core","ember-metal/error","ember-metal/path_cache","ember-metal/platform","exports"],
17553
+ function(__dependency1__, __dependency2__, __dependency3__, __dependency4__, __exports__) {
17458
17554
  "use strict";
17459
17555
  /**
17460
17556
  @module ember-metal
@@ -17465,8 +17561,8 @@ define("ember-metal/property_get",
17465
17561
  var isGlobalPath = __dependency3__.isGlobalPath;
17466
17562
  var isPath = __dependency3__.isPath;
17467
17563
  var pathHasThis = __dependency3__.hasThis;
17564
+ var hasPropertyAccessors = __dependency4__.hasPropertyAccessors;
17468
17565
 
17469
- var MANDATORY_SETTER = Ember.ENV.MANDATORY_SETTER;
17470
17566
  var FIRST_KEY = /^([^\.]+)/;
17471
17567
 
17472
17568
  // ..........................................................
@@ -17534,12 +17630,13 @@ define("ember-metal/property_get",
17534
17630
  if (desc) {
17535
17631
  return desc.get(obj, keyName);
17536
17632
  } else {
17537
- if (MANDATORY_SETTER && meta && meta.watching[keyName] > 0) {
17538
- ret = meta.values[keyName];
17539
- } else {
17540
- ret = obj[keyName];
17541
- }
17542
-
17633
+
17634
+ if (hasPropertyAccessors && meta && meta.watching[keyName] > 0) {
17635
+ ret = meta.values[keyName];
17636
+ } else {
17637
+ ret = obj[keyName];
17638
+ }
17639
+
17543
17640
  if (ret === undefined &&
17544
17641
  'object' === typeof obj && !(keyName in obj) && 'function' === typeof obj.unknownProperty) {
17545
17642
  return obj.unknownProperty(keyName);
@@ -17636,8 +17733,8 @@ define("ember-metal/property_get",
17636
17733
  __exports__._getPath = _getPath;
17637
17734
  });
17638
17735
  define("ember-metal/property_set",
17639
- ["ember-metal/core","ember-metal/property_get","ember-metal/property_events","ember-metal/properties","ember-metal/error","ember-metal/path_cache","exports"],
17640
- function(__dependency1__, __dependency2__, __dependency3__, __dependency4__, __dependency5__, __dependency6__, __exports__) {
17736
+ ["ember-metal/core","ember-metal/property_get","ember-metal/property_events","ember-metal/properties","ember-metal/error","ember-metal/path_cache","ember-metal/platform","exports"],
17737
+ function(__dependency1__, __dependency2__, __dependency3__, __dependency4__, __dependency5__, __dependency6__, __dependency7__, __exports__) {
17641
17738
  "use strict";
17642
17739
  var Ember = __dependency1__["default"];
17643
17740
  var getPath = __dependency2__._getPath;
@@ -17646,9 +17743,8 @@ define("ember-metal/property_set",
17646
17743
  var defineProperty = __dependency4__.defineProperty;
17647
17744
  var EmberError = __dependency5__["default"];
17648
17745
  var isPath = __dependency6__.isPath;
17746
+ var hasPropertyAccessors = __dependency7__.hasPropertyAccessors;
17649
17747
 
17650
-
17651
- var MANDATORY_SETTER = Ember.ENV.MANDATORY_SETTER;
17652
17748
  var IS_GLOBAL = /^([A-Z$]|([0-9][A-Z$]))/;
17653
17749
 
17654
17750
  /**
@@ -17705,24 +17801,26 @@ define("ember-metal/property_set",
17705
17801
  if (isUnknown && 'function' === typeof obj.setUnknownProperty) {
17706
17802
  obj.setUnknownProperty(keyName, value);
17707
17803
  } else if (meta && meta.watching[keyName] > 0) {
17708
- if (MANDATORY_SETTER) {
17709
- currentValue = meta.values[keyName];
17710
- } else {
17711
- currentValue = obj[keyName];
17712
- }
17713
- // only trigger a change if the value has changed
17804
+
17805
+ if (hasPropertyAccessors) {
17806
+ currentValue = meta.values[keyName];
17807
+ } else {
17808
+ currentValue = obj[keyName];
17809
+ }
17810
+ // only trigger a change if the value has changed
17714
17811
  if (value !== currentValue) {
17715
17812
  propertyWillChange(obj, keyName);
17716
- if (MANDATORY_SETTER) {
17717
- if ((currentValue === undefined && !(keyName in obj)) || !obj.propertyIsEnumerable(keyName)) {
17718
- defineProperty(obj, keyName, null, value); // setup mandatory setter
17813
+
17814
+ if (hasPropertyAccessors) {
17815
+ if ((currentValue === undefined && !(keyName in obj)) || !obj.propertyIsEnumerable(keyName)) {
17816
+ defineProperty(obj, keyName, null, value); // setup mandatory setter
17817
+ } else {
17818
+ meta.values[keyName] = value;
17819
+ }
17719
17820
  } else {
17720
- meta.values[keyName] = value;
17821
+ obj[keyName] = value;
17721
17822
  }
17722
- } else {
17723
- obj[keyName] = value;
17724
- }
17725
- propertyDidChange(obj, keyName);
17823
+ propertyDidChange(obj, keyName);
17726
17824
  }
17727
17825
  } else {
17728
17826
  obj[keyName] = value;
@@ -18079,7 +18177,7 @@ define("ember-metal/run_loop",
18079
18177
 
18080
18178
  /**
18081
18179
  Invokes the passed target/method and optional arguments after a specified
18082
- period if time. The last parameter of this method must always be a number
18180
+ period of time. The last parameter of this method must always be a number
18083
18181
  of milliseconds.
18084
18182
 
18085
18183
  You should use this method whenever you need to run some action after a
@@ -18453,16 +18551,17 @@ define("ember-metal/set_properties",
18453
18551
  }
18454
18552
  });
18455
18553
  define("ember-metal/utils",
18456
- ["ember-metal/core","ember-metal/platform","ember-metal/array","ember-metal/keys","exports"],
18457
- function(__dependency1__, __dependency2__, __dependency3__, __dependency4__, __exports__) {
18554
+ ["ember-metal/core","ember-metal/platform","ember-metal/array","exports"],
18555
+ function(__dependency1__, __dependency2__, __dependency3__, __exports__) {
18458
18556
  "use strict";
18459
18557
  var Ember = __dependency1__["default"];
18460
- var platform = __dependency2__.platform;
18558
+ var o_defineProperty = __dependency2__.defineProperty;
18559
+ var canDefineNonEnumerableProperties = __dependency2__.canDefineNonEnumerableProperties;
18560
+ var hasPropertyAccessors = __dependency2__.hasPropertyAccessors;
18461
18561
  var create = __dependency2__.create;
18462
18562
 
18463
18563
  var forEach = __dependency3__.forEach;
18464
18564
 
18465
- var keys = __dependency4__["default"];
18466
18565
  /**
18467
18566
  @module ember-metal
18468
18567
  */
@@ -18499,12 +18598,10 @@ define("ember-metal/utils",
18499
18598
  */
18500
18599
  var GUID_PREFIX = 'ember';
18501
18600
 
18502
- var o_defineProperty = platform.defineProperty;
18503
18601
  var o_create = create;
18504
18602
  // Used for guid generation...
18505
18603
  var numberCache = [];
18506
18604
  var stringCache = {};
18507
- var MANDATORY_SETTER = Ember.ENV.MANDATORY_SETTER;
18508
18605
 
18509
18606
  /**
18510
18607
  Strongly hint runtimes to intern the provided string.
@@ -18545,10 +18642,13 @@ define("ember-metal/utils",
18545
18642
  @private
18546
18643
  @return {String} interned version of the provided string
18547
18644
  */
18548
- function intern(string) {
18549
- var obj = Object.create(null);
18550
- obj[string] = true;
18551
- return keys(obj)[0];
18645
+ function intern(str) {
18646
+ var obj = {};
18647
+ obj[str] = 1;
18648
+ for (var key in obj) {
18649
+ if (key === str) return key;
18650
+ }
18651
+ return str;
18552
18652
  }
18553
18653
 
18554
18654
  /**
@@ -18670,8 +18770,6 @@ define("ember-metal/utils",
18670
18770
  value: null
18671
18771
  };
18672
18772
 
18673
- var isDefinePropertySimulated = platform.defineProperty.isSimulated;
18674
-
18675
18773
  function Meta(obj) {
18676
18774
  this.descs = {};
18677
18775
  this.watching = {};
@@ -18696,7 +18794,7 @@ define("ember-metal/utils",
18696
18794
  proto: null
18697
18795
  };
18698
18796
 
18699
- if (isDefinePropertySimulated) {
18797
+ if (!canDefineNonEnumerableProperties) {
18700
18798
  // on platforms that don't support enumerable false
18701
18799
  // make meta fail jQuery.isPlainObject() to hide from
18702
18800
  // jQuery.extend() by having a property that fails
@@ -18711,7 +18809,11 @@ define("ember-metal/utils",
18711
18809
  // Placeholder for non-writable metas.
18712
18810
  var EMPTY_META = new Meta(null);
18713
18811
 
18714
- if (MANDATORY_SETTER) { EMPTY_META.values = {}; }
18812
+
18813
+ if (hasPropertyAccessors) {
18814
+ EMPTY_META.values = {};
18815
+ }
18816
+
18715
18817
 
18716
18818
  /**
18717
18819
  Retrieves the meta hash for an object. If `writable` is true ensures the
@@ -18737,11 +18839,15 @@ define("ember-metal/utils",
18737
18839
  if (writable===false) return ret || EMPTY_META;
18738
18840
 
18739
18841
  if (!ret) {
18740
- if (!isDefinePropertySimulated) o_defineProperty(obj, '__ember_meta__', META_DESC);
18842
+ if (canDefineNonEnumerableProperties) o_defineProperty(obj, '__ember_meta__', META_DESC);
18741
18843
 
18742
18844
  ret = new Meta(obj);
18743
18845
 
18744
- if (MANDATORY_SETTER) { ret.values = {}; }
18846
+
18847
+ if (hasPropertyAccessors) {
18848
+ ret.values = {};
18849
+ }
18850
+
18745
18851
 
18746
18852
  obj['__ember_meta__'] = ret;
18747
18853
 
@@ -18749,7 +18855,7 @@ define("ember-metal/utils",
18749
18855
  ret.descs.constructor = null;
18750
18856
 
18751
18857
  } else if (ret.source !== obj) {
18752
- if (!isDefinePropertySimulated) o_defineProperty(obj, '__ember_meta__', META_DESC);
18858
+ if (canDefineNonEnumerableProperties) o_defineProperty(obj, '__ember_meta__', META_DESC);
18753
18859
 
18754
18860
  ret = o_create(ret);
18755
18861
  ret.descs = o_create(ret.descs);
@@ -18758,7 +18864,11 @@ define("ember-metal/utils",
18758
18864
  ret.cacheMeta = {};
18759
18865
  ret.source = obj;
18760
18866
 
18761
- if (MANDATORY_SETTER) { ret.values = o_create(ret.values); }
18867
+
18868
+ if (hasPropertyAccessors) {
18869
+ ret.values = o_create(ret.values);
18870
+ }
18871
+
18762
18872
 
18763
18873
  obj['__ember_meta__'] = ret;
18764
18874
  }
@@ -19264,7 +19374,12 @@ define("ember-metal/utils",
19264
19374
  v = obj[key];
19265
19375
  if (v === 'toString') { continue; } // ignore useless items
19266
19376
  if (typeOf(v) === 'function') { v = "function() { ... }"; }
19267
- ret.push(key + ": " + v);
19377
+
19378
+ if (v && typeof v.toString !== 'function') {
19379
+ ret.push(key + ": " + toString.call(v));
19380
+ } else {
19381
+ ret.push(key + ": " + v);
19382
+ }
19268
19383
  }
19269
19384
  }
19270
19385
  return "{" + ret.join(", ") + "}";
@@ -19310,17 +19425,19 @@ define("ember-metal/utils",
19310
19425
  __exports__.tryFinally = tryFinally;
19311
19426
  });
19312
19427
  define("ember-metal/watch_key",
19313
- ["ember-metal/core","ember-metal/utils","ember-metal/platform","exports"],
19314
- function(__dependency1__, __dependency2__, __dependency3__, __exports__) {
19428
+ ["ember-metal/core","ember-metal/utils","ember-metal/platform","ember-metal/properties","exports"],
19429
+ function(__dependency1__, __dependency2__, __dependency3__, __dependency4__, __exports__) {
19315
19430
  "use strict";
19316
19431
  var Ember = __dependency1__["default"];
19317
19432
  var meta = __dependency2__.meta;
19318
19433
  var typeOf = __dependency2__.typeOf;
19319
- var platform = __dependency3__.platform;
19434
+ var o_defineProperty = __dependency3__.defineProperty;
19435
+ var hasPropertyAccessors = __dependency3__.hasPropertyAccessors;
19436
+ var MANDATORY_SETTER_FUNCTION = __dependency4__.MANDATORY_SETTER_FUNCTION;
19437
+ var DEFAULT_GETTER_FUNCTION = __dependency4__.DEFAULT_GETTER_FUNCTION;
19320
19438
 
19321
19439
  var metaFor = meta; // utils.js
19322
- var MANDATORY_SETTER = Ember.ENV.MANDATORY_SETTER;
19323
- var o_defineProperty = platform.defineProperty;
19440
+
19324
19441
 
19325
19442
  function watchKey(obj, keyName, meta) {
19326
19443
  // can't watch length on Array - it is special...
@@ -19339,21 +19456,33 @@ define("ember-metal/watch_key",
19339
19456
  obj.willWatchProperty(keyName);
19340
19457
  }
19341
19458
 
19342
- if (MANDATORY_SETTER && keyName in obj) {
19459
+
19460
+ if (hasPropertyAccessors) {
19461
+ handleMandatorySetter(m, obj, keyName);
19462
+ }
19463
+
19464
+ } else {
19465
+ watching[keyName] = (watching[keyName] || 0) + 1;
19466
+ }
19467
+ }
19468
+
19469
+ __exports__.watchKey = watchKey;
19470
+
19471
+ var handleMandatorySetter = function handleMandatorySetter(m, obj, keyName) {
19472
+ // this x in Y deopts, so keeping it in this function is better;
19473
+ if (keyName in obj) {
19343
19474
  m.values[keyName] = obj[keyName];
19344
19475
  o_defineProperty(obj, keyName, {
19345
19476
  configurable: true,
19346
19477
  enumerable: obj.propertyIsEnumerable(keyName),
19347
- set: Ember.MANDATORY_SETTER_FUNCTION,
19348
- get: Ember.DEFAULT_GETTER_FUNCTION(keyName)
19478
+ set: MANDATORY_SETTER_FUNCTION,
19479
+ get: DEFAULT_GETTER_FUNCTION(keyName)
19349
19480
  });
19350
19481
  }
19351
- } else {
19352
- watching[keyName] = (watching[keyName] || 0) + 1;
19353
- }
19354
- }
19482
+ };
19483
+
19355
19484
 
19356
- __exports__.watchKey = watchKey;function unwatchKey(obj, keyName, meta) {
19485
+ function unwatchKey(obj, keyName, meta) {
19357
19486
  var m = meta || metaFor(obj), watching = m.watching;
19358
19487
 
19359
19488
  if (watching[keyName] === 1) {
@@ -19366,23 +19495,25 @@ define("ember-metal/watch_key",
19366
19495
  obj.didUnwatchProperty(keyName);
19367
19496
  }
19368
19497
 
19369
- if (MANDATORY_SETTER && keyName in obj) {
19370
- o_defineProperty(obj, keyName, {
19371
- configurable: true,
19372
- enumerable: obj.propertyIsEnumerable(keyName),
19373
- set: function(val) {
19374
- // redefine to set as enumerable
19375
- o_defineProperty(obj, keyName, {
19376
- configurable: true,
19377
- writable: true,
19378
- enumerable: true,
19379
- value: val
19380
- });
19381
- delete m.values[keyName];
19382
- },
19383
- get: Ember.DEFAULT_GETTER_FUNCTION(keyName)
19384
- });
19385
- }
19498
+
19499
+ if (hasPropertyAccessors && keyName in obj) {
19500
+ o_defineProperty(obj, keyName, {
19501
+ configurable: true,
19502
+ enumerable: obj.propertyIsEnumerable(keyName),
19503
+ set: function(val) {
19504
+ // redefine to set as enumerable
19505
+ o_defineProperty(obj, keyName, {
19506
+ configurable: true,
19507
+ writable: true,
19508
+ enumerable: true,
19509
+ value: val
19510
+ });
19511
+ delete m.values[keyName];
19512
+ },
19513
+ get: DEFAULT_GETTER_FUNCTION(keyName)
19514
+ });
19515
+ }
19516
+
19386
19517
  } else if (watching[keyName] > 1) {
19387
19518
  watching[keyName]--;
19388
19519
  }
@@ -23334,8 +23465,7 @@ define("ember-routing/system/route",
23334
23465
  */
23335
23466
  _qp: computed(function() {
23336
23467
  var controllerName = this.controllerName || this.routeName;
23337
- var fullName = this.container.normalize('controller:' + controllerName);
23338
- var controllerClass = this.container.lookupFactory(fullName);
23468
+ var controllerClass = this.container.lookupFactory('controller:' + controllerName);
23339
23469
 
23340
23470
  if (!controllerClass) {
23341
23471
  return defaultQPMeta;
@@ -24484,7 +24614,7 @@ define("ember-routing/system/route",
24484
24614
 
24485
24615
  if (!name && sawParams) { return copy(params); }
24486
24616
  else if (!name) {
24487
- if (transition.resolveIndex !== transition.state.handlerInfos.length-1) { return; }
24617
+ if (transition.resolveIndex < 1) { return; }
24488
24618
 
24489
24619
  var parentModel = transition.state.handlerInfos[transition.resolveIndex-1].context;
24490
24620
 
@@ -25560,13 +25690,17 @@ define("ember-routing/system/router",
25560
25690
  }
25561
25691
  }
25562
25692
 
25563
- if (rootURL && typeof rootURL === 'string') {
25564
- location.rootURL = rootURL;
25565
- }
25693
+ if (location !== null && typeof location === 'object') {
25694
+ if (rootURL && typeof rootURL === 'string') {
25695
+ location.rootURL = rootURL;
25696
+ }
25566
25697
 
25567
- // ensure that initState is called AFTER the rootURL is set on
25568
- // the location instance
25569
- if (typeof location.initState === 'function') { location.initState(); }
25698
+ // ensure that initState is called AFTER the rootURL is set on
25699
+ // the location instance
25700
+ if (typeof location.initState === 'function') {
25701
+ location.initState();
25702
+ }
25703
+ }
25570
25704
  },
25571
25705
 
25572
25706
  _getHandlerFunction: function() {
@@ -30595,7 +30729,7 @@ define("ember-runtime/mixins/enumerable",
30595
30729
  - `index` is the current index in the iteration.
30596
30730
  - `enumerable` is the enumerable object itself.
30597
30731
 
30598
- It should return the `true` to include the item in the results, `false`
30732
+ It should return `true` to include the item in the results, `false`
30599
30733
  otherwise.
30600
30734
 
30601
30735
  Note that in addition to a callback, you can also pass an optional target
@@ -32156,7 +32290,7 @@ define("ember-runtime/mixins/observable",
32156
32290
  },
32157
32291
 
32158
32292
  /**
32159
- To get multiple properties at once, call `getProperties`
32293
+ To get the values of multiple properties at once, call `getProperties`
32160
32294
  with a list of strings or an array:
32161
32295
 
32162
32296
  ```javascript
@@ -33601,7 +33735,7 @@ define("ember-runtime/system/core_object",
33601
33735
  */
33602
33736
 
33603
33737
  var Ember = __dependency1__["default"];
33604
- // Ember.ENV.MANDATORY_SETTER, Ember.assert, Ember.K, Ember.config
33738
+ // Ember.assert, Ember.K, Ember.config
33605
33739
 
33606
33740
  // NOTE: this object should never be included directly. Instead use `Ember.Object`.
33607
33741
  // We only define this separately so that `Ember.Set` can depend on it.
@@ -33622,7 +33756,7 @@ define("ember-runtime/system/core_object",
33622
33756
  var required = __dependency9__.required;
33623
33757
  var indexOf = __dependency10__.indexOf;
33624
33758
  var EmberError = __dependency11__["default"];
33625
- var platform = __dependency5__.platform;
33759
+ var o_defineProperty = __dependency5__.defineProperty;
33626
33760
  var keys = __dependency12__["default"];
33627
33761
  var ActionHandler = __dependency13__["default"];
33628
33762
  var defineProperty = __dependency14__.defineProperty;
@@ -33630,14 +33764,13 @@ define("ember-runtime/system/core_object",
33630
33764
  var ComputedProperty = __dependency16__.ComputedProperty;
33631
33765
  var run = __dependency17__["default"];
33632
33766
  var destroy = __dependency6__.destroy;
33633
-
33634
33767
  var K = __dependency1__.K;
33635
- var o_defineProperty = platform.defineProperty;
33768
+ var hasPropertyAccessors = __dependency5__.hasPropertyAccessors;
33769
+
33636
33770
  var schedule = run.schedule;
33637
33771
  var applyMixin = Mixin._apply;
33638
33772
  var finishPartial = Mixin.finishPartial;
33639
33773
  var reopen = Mixin.prototype.reopen;
33640
- var MANDATORY_SETTER = Ember.ENV.MANDATORY_SETTER;
33641
33774
  var hasCachedComputedProperties = false;
33642
33775
 
33643
33776
  var undefinedDescriptor = {
@@ -33741,11 +33874,14 @@ define("ember-runtime/system/core_object",
33741
33874
  } else {
33742
33875
  if (typeof this.setUnknownProperty === 'function' && !(keyName in this)) {
33743
33876
  this.setUnknownProperty(keyName, value);
33744
- } else if (MANDATORY_SETTER) {
33745
- defineProperty(this, keyName, null, value); // setup mandatory setter
33746
33877
  } else {
33747
- this[keyName] = value;
33748
- }
33878
+
33879
+ if (hasPropertyAccessors) {
33880
+ defineProperty(this, keyName, null, value); // setup mandatory setter
33881
+ } else {
33882
+ this[keyName] = value;
33883
+ }
33884
+ }
33749
33885
  }
33750
33886
  }
33751
33887
  }
@@ -34440,12 +34576,9 @@ define("ember-runtime/system/core_object",
34440
34576
  cache._computedProperties = undefined;
34441
34577
  }
34442
34578
  }
34443
-
34444
- this._super();
34445
34579
  }
34446
34580
  });
34447
34581
 
34448
-
34449
34582
  __exports__["default"] = CoreObject;
34450
34583
  });
34451
34584
  define("ember-runtime/system/deferred",
@@ -39313,7 +39446,7 @@ define("ember-views/views/collection_view",
39313
39446
  ```javascript
39314
39447
  var App = Ember.Application.create();
39315
39448
  App.ListWithNothing = Ember.CollectionView.create({
39316
- classNames: ['nothing']
39449
+ classNames: ['nothing'],
39317
39450
  content: null,
39318
39451
  emptyView: Ember.View.extend({
39319
39452
  template: Ember.Handlebars.compile("The collection is empty")
@@ -40319,8 +40452,8 @@ define("ember-views/views/container_view",
40319
40452
  __exports__["default"] = ContainerView;
40320
40453
  });
40321
40454
  define("ember-views/views/core_view",
40322
- ["ember-views/system/renderer","ember-views/views/states","ember-runtime/system/object","ember-runtime/mixins/evented","ember-runtime/mixins/action_handler","ember-metal/properties","ember-metal/property_get","ember-metal/property_set","ember-metal/computed","ember-metal/utils","ember-metal/instrumentation","exports"],
40323
- function(__dependency1__, __dependency2__, __dependency3__, __dependency4__, __dependency5__, __dependency6__, __dependency7__, __dependency8__, __dependency9__, __dependency10__, __dependency11__, __exports__) {
40455
+ ["ember-views/system/renderer","ember-views/views/states","ember-runtime/system/object","ember-runtime/mixins/evented","ember-runtime/mixins/action_handler","ember-metal/property_get","ember-metal/property_set","ember-metal/computed","ember-metal/utils","ember-metal/instrumentation","exports"],
40456
+ function(__dependency1__, __dependency2__, __dependency3__, __dependency4__, __dependency5__, __dependency6__, __dependency7__, __dependency8__, __dependency9__, __dependency10__, __exports__) {
40324
40457
  "use strict";
40325
40458
  var Rerender = __dependency1__["default"];
40326
40459
 
@@ -40330,14 +40463,13 @@ define("ember-views/views/core_view",
40330
40463
  var Evented = __dependency4__["default"];
40331
40464
  var ActionHandler = __dependency5__["default"];
40332
40465
 
40333
- var deprecateProperty = __dependency6__.deprecateProperty;
40334
- var get = __dependency7__.get;
40335
- var set = __dependency8__.set;
40336
- var computed = __dependency9__.computed;
40466
+ var get = __dependency6__.get;
40467
+ var set = __dependency7__.set;
40468
+ var computed = __dependency8__.computed;
40337
40469
 
40338
- var typeOf = __dependency10__.typeOf;
40470
+ var typeOf = __dependency9__.typeOf;
40339
40471
 
40340
- var instrument = __dependency11__.instrument;
40472
+ var instrument = __dependency10__.instrument;
40341
40473
 
40342
40474
  /**
40343
40475
  `Ember.CoreView` is an abstract class that exists to give view-like behavior
@@ -40365,9 +40497,6 @@ define("ember-views/views/core_view",
40365
40497
  this._super();
40366
40498
  this._transitionTo('preRender');
40367
40499
  this._isVisible = get(this, 'isVisible');
40368
-
40369
- deprecateProperty(this, 'states', '_states');
40370
- deprecateProperty(this, 'state', '_state');
40371
40500
  },
40372
40501
 
40373
40502
  /**
@@ -40781,8 +40910,8 @@ define("ember-views/views/states/pre_render",
40781
40910
  __exports__["default"] = preRender;
40782
40911
  });
40783
40912
  define("ember-views/views/view",
40784
- ["ember-metal/core","ember-runtime/mixins/evented","ember-runtime/system/object","ember-metal/error","ember-metal/property_get","ember-metal/property_set","ember-metal/set_properties","ember-metal/run_loop","ember-metal/observer","ember-metal/properties","ember-metal/utils","ember-metal/computed","ember-metal/mixin","ember-metal/is_none","ember-runtime/system/native_array","ember-runtime/system/string","ember-metal/enumerable_utils","ember-runtime/copy","ember-metal/binding","ember-metal/property_events","ember-views/system/jquery","ember-views/system/ext","ember-views/views/core_view","exports"],
40785
- function(__dependency1__, __dependency2__, __dependency3__, __dependency4__, __dependency5__, __dependency6__, __dependency7__, __dependency8__, __dependency9__, __dependency10__, __dependency11__, __dependency12__, __dependency13__, __dependency14__, __dependency15__, __dependency16__, __dependency17__, __dependency18__, __dependency19__, __dependency20__, __dependency21__, __dependency22__, __dependency23__, __exports__) {
40913
+ ["ember-metal/core","ember-runtime/mixins/evented","ember-runtime/system/object","ember-metal/error","ember-metal/property_get","ember-metal/property_set","ember-metal/set_properties","ember-metal/run_loop","ember-metal/observer","ember-metal/properties","ember-metal/utils","ember-metal/computed","ember-metal/mixin","ember-metal/is_none","ember-metal/deprecate_property","ember-runtime/system/native_array","ember-runtime/system/string","ember-metal/enumerable_utils","ember-runtime/copy","ember-metal/binding","ember-metal/property_events","ember-views/system/jquery","ember-views/system/ext","ember-views/views/core_view","exports"],
40914
+ function(__dependency1__, __dependency2__, __dependency3__, __dependency4__, __dependency5__, __dependency6__, __dependency7__, __dependency8__, __dependency9__, __dependency10__, __dependency11__, __dependency12__, __dependency13__, __dependency14__, __dependency15__, __dependency16__, __dependency17__, __dependency18__, __dependency19__, __dependency20__, __dependency21__, __dependency22__, __dependency23__, __dependency24__, __exports__) {
40786
40915
  "use strict";
40787
40916
  // Ember.assert, Ember.deprecate, Ember.warn, Ember.TEMPLATES,
40788
40917
  // Ember.K, jQuery, Ember.lookup,
@@ -40811,26 +40940,27 @@ define("ember-views/views/view",
40811
40940
  var isArray = __dependency11__.isArray;
40812
40941
  var isNone = __dependency14__.isNone;
40813
40942
  var Mixin = __dependency13__.Mixin;
40814
- var emberA = __dependency15__.A;
40943
+ var deprecateProperty = __dependency15__.deprecateProperty;
40944
+ var emberA = __dependency16__.A;
40815
40945
 
40816
- var dasherize = __dependency16__.dasherize;
40946
+ var dasherize = __dependency17__.dasherize;
40817
40947
 
40818
40948
  // ES6TODO: functions on EnumerableUtils should get their own export
40819
- var forEach = __dependency17__.forEach;
40820
- var addObject = __dependency17__.addObject;
40821
- var removeObject = __dependency17__.removeObject;
40949
+ var forEach = __dependency18__.forEach;
40950
+ var addObject = __dependency18__.addObject;
40951
+ var removeObject = __dependency18__.removeObject;
40822
40952
 
40823
40953
  var beforeObserver = __dependency13__.beforeObserver;
40824
- var copy = __dependency18__["default"];
40825
- var isGlobalPath = __dependency19__.isGlobalPath;
40954
+ var copy = __dependency19__["default"];
40955
+ var isGlobalPath = __dependency20__.isGlobalPath;
40826
40956
 
40827
- var propertyWillChange = __dependency20__.propertyWillChange;
40828
- var propertyDidChange = __dependency20__.propertyDidChange;
40957
+ var propertyWillChange = __dependency21__.propertyWillChange;
40958
+ var propertyDidChange = __dependency21__.propertyDidChange;
40829
40959
 
40830
- var jQuery = __dependency21__["default"];
40960
+ var jQuery = __dependency22__["default"];
40831
40961
  // for the side effect of extending Ember.run.queues
40832
40962
 
40833
- var CoreView = __dependency23__["default"];
40963
+ var CoreView = __dependency24__["default"];
40834
40964
 
40835
40965
  /**
40836
40966
  @module ember
@@ -42757,6 +42887,8 @@ define("ember-views/views/view",
42757
42887
  }
42758
42888
 
42759
42889
  });
42890
+ deprecateProperty(View.prototype, 'state', '_state');
42891
+ deprecateProperty(View.prototype, 'states', '_states');
42760
42892
 
42761
42893
  /*
42762
42894
  Describe how the specified actions should behave in the various