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.
- checksums.yaml +4 -4
- data/VERSION +1 -1
- data/dist/ember-runtime.js +413 -284
- data/dist/ember-tests.js +216 -79
- data/dist/ember-tests.prod.js +59094 -0
- data/dist/ember.js +454 -322
- data/dist/ember.min.js +12 -12
- data/dist/ember.prod.js +367 -321
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 613b60c2b0774caf727b16cacf6577128f45ab65
|
4
|
+
data.tar.gz: a8b4e3b1d83d93bec8ed02a3ae4d2d0529b8d9ac
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8459838e131e049f616a7789be7552c4fc5949896b648ae21c5d831dc3d8de8898043ad6335bf2c3020528b5a054b2b2c6fd677fa2e3b064f6422cba21e41ce3
|
7
|
+
data.tar.gz: dc0f4e244ed30e5fe524f42e25ac6f4f806d205804d02a31a0b70ae99ba57f30d0cc6f87e78d631322e1b353c147c9941ee11838ad23fa6ca34226053f0d4257
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.8.0-beta.
|
1
|
+
1.8.0-beta.2
|
data/dist/ember-runtime.js
CHANGED
@@ -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.
|
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.
|
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
|
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 =
|
1875
|
+
var keys = emberKeys(cache);
|
1875
1876
|
var key, value;
|
1876
1877
|
|
1877
1878
|
for (var i = 0, l = keys.length; i < l; i++) {
|
@@ -3726,81 +3727,124 @@ define("ember-metal/computed",
|
|
3726
3727
|
Generally speaking if you intend for your computed property to be set
|
3727
3728
|
your backing function should accept either two or three arguments.
|
3728
3729
|
|
3730
|
+
```javascript
|
3731
|
+
var Person = Ember.Object.extend({
|
3732
|
+
// these will be supplied by `create`
|
3733
|
+
firstName: null,
|
3734
|
+
lastName: null,
|
3735
|
+
|
3736
|
+
fullName: function(key, value, oldValue) {
|
3737
|
+
// getter
|
3738
|
+
if (arguments.length === 1) {
|
3739
|
+
var firstName = this.get('firstName');
|
3740
|
+
var lastName = this.get('lastName');
|
3741
|
+
|
3742
|
+
return firstName + ' ' + lastName;
|
3743
|
+
|
3744
|
+
// setter
|
3745
|
+
} else {
|
3746
|
+
var name = value.split(' ');
|
3747
|
+
|
3748
|
+
this.set('firstName', name[0]);
|
3749
|
+
this.set('lastName', name[1]);
|
3750
|
+
|
3751
|
+
return value;
|
3752
|
+
}
|
3753
|
+
}.property('firstName', 'lastName')
|
3754
|
+
});
|
3755
|
+
|
3756
|
+
var person = Person.create();
|
3757
|
+
|
3758
|
+
person.set('fullName', 'Peter Wagenet');
|
3759
|
+
person.get('firstName'); // 'Peter'
|
3760
|
+
person.get('lastName'); // 'Wagenet'
|
3761
|
+
```
|
3762
|
+
|
3729
3763
|
@method set
|
3730
3764
|
@param {String} keyName The key being accessed.
|
3731
3765
|
@param {Object} newValue The new value being assigned.
|
3732
3766
|
@param {String} oldValue The old value being replaced.
|
3733
3767
|
@return {Object} The return value of the function backing the CP.
|
3734
3768
|
*/
|
3735
|
-
ComputedPropertyPrototype.set = function(obj, keyName, value) {
|
3736
|
-
var cacheable = this._cacheable;
|
3737
|
-
var func = this.func;
|
3738
|
-
var meta = metaFor(obj, cacheable);
|
3769
|
+
ComputedPropertyPrototype.set = function computedPropertySetWithSuspend(obj, keyName, value) {
|
3739
3770
|
var oldSuspended = this._suspended;
|
3771
|
+
|
3772
|
+
this._suspended = obj;
|
3773
|
+
|
3774
|
+
try {
|
3775
|
+
this._set(obj, keyName, value);
|
3776
|
+
} finally {
|
3777
|
+
this._suspended = oldSuspended;
|
3778
|
+
}
|
3779
|
+
};
|
3780
|
+
|
3781
|
+
ComputedPropertyPrototype._set = function computedPropertySet(obj, keyName, value) {
|
3782
|
+
var cacheable = this._cacheable;
|
3783
|
+
var func = this.func;
|
3784
|
+
var meta = metaFor(obj, cacheable);
|
3785
|
+
var cache = meta.cache;
|
3740
3786
|
var hadCachedValue = false;
|
3741
|
-
|
3787
|
+
|
3742
3788
|
var funcArgLength, cachedValue, ret;
|
3743
3789
|
|
3744
3790
|
if (this._readOnly) {
|
3745
3791
|
throw new EmberError('Cannot set read-only property "' + keyName + '" on object: ' + inspect(obj));
|
3746
3792
|
}
|
3747
3793
|
|
3748
|
-
|
3749
|
-
|
3750
|
-
|
3794
|
+
if (cacheable && cache[keyName] !== undefined) {
|
3795
|
+
if(cache[keyName] !== UNDEFINED) {
|
3796
|
+
cachedValue = cache[keyName];
|
3797
|
+
}
|
3751
3798
|
|
3752
|
-
|
3753
|
-
|
3754
|
-
cachedValue = cache[keyName];
|
3755
|
-
}
|
3799
|
+
hadCachedValue = true;
|
3800
|
+
}
|
3756
3801
|
|
3757
|
-
|
3758
|
-
|
3802
|
+
// Check if the CP has been wrapped. If it has, use the
|
3803
|
+
// length from the wrapped function.
|
3759
3804
|
|
3760
|
-
|
3761
|
-
// length from the wrapped function.
|
3805
|
+
funcArgLength = func.wrappedFunction ? func.wrappedFunction.__ember_arity__ : func.__ember_arity__;
|
3762
3806
|
|
3763
|
-
|
3807
|
+
// For backwards-compatibility with computed properties
|
3808
|
+
// that check for arguments.length === 2 to determine if
|
3809
|
+
// they are being get or set, only pass the old cached
|
3810
|
+
// value if the computed property opts into a third
|
3811
|
+
// argument.
|
3812
|
+
if (funcArgLength === 3) {
|
3813
|
+
ret = func.call(obj, keyName, value, cachedValue);
|
3814
|
+
} else if (funcArgLength === 2) {
|
3815
|
+
ret = func.call(obj, keyName, value);
|
3816
|
+
} else {
|
3817
|
+
defineProperty(obj, keyName, null, cachedValue);
|
3818
|
+
set(obj, keyName, value);
|
3819
|
+
return;
|
3820
|
+
}
|
3764
3821
|
|
3765
|
-
|
3766
|
-
// that check for arguments.length === 2 to determine if
|
3767
|
-
// they are being get or set, only pass the old cached
|
3768
|
-
// value if the computed property opts into a third
|
3769
|
-
// argument.
|
3770
|
-
if (funcArgLength === 3) {
|
3771
|
-
ret = func.call(obj, keyName, value, cachedValue);
|
3772
|
-
} else if (funcArgLength === 2) {
|
3773
|
-
ret = func.call(obj, keyName, value);
|
3774
|
-
} else {
|
3775
|
-
defineProperty(obj, keyName, null, cachedValue);
|
3776
|
-
set(obj, keyName, value);
|
3777
|
-
return;
|
3778
|
-
}
|
3822
|
+
if (hadCachedValue && cachedValue === ret) { return; }
|
3779
3823
|
|
3780
|
-
|
3824
|
+
var watched = meta.watching[keyName];
|
3825
|
+
if (watched) {
|
3826
|
+
propertyWillChange(obj, keyName);
|
3827
|
+
}
|
3781
3828
|
|
3782
|
-
|
3783
|
-
|
3829
|
+
if (hadCachedValue) {
|
3830
|
+
cache[keyName] = undefined;
|
3831
|
+
}
|
3784
3832
|
|
3785
|
-
|
3786
|
-
|
3833
|
+
if (cacheable) {
|
3834
|
+
if (!hadCachedValue) {
|
3835
|
+
addDependentKeys(this, obj, keyName, meta);
|
3787
3836
|
}
|
3788
|
-
|
3789
|
-
|
3790
|
-
|
3791
|
-
|
3792
|
-
}
|
3793
|
-
if (ret === undefined) {
|
3794
|
-
cache[keyName] = UNDEFINED;
|
3795
|
-
} else {
|
3796
|
-
cache[keyName] = ret;
|
3797
|
-
}
|
3837
|
+
if (ret === undefined) {
|
3838
|
+
cache[keyName] = UNDEFINED;
|
3839
|
+
} else {
|
3840
|
+
cache[keyName] = ret;
|
3798
3841
|
}
|
3842
|
+
}
|
3799
3843
|
|
3800
|
-
|
3801
|
-
|
3802
|
-
this._suspended = oldSuspended;
|
3844
|
+
if (watched) {
|
3845
|
+
propertyDidChange(obj, keyName);
|
3803
3846
|
}
|
3847
|
+
|
3804
3848
|
return ret;
|
3805
3849
|
};
|
3806
3850
|
|
@@ -3827,9 +3871,45 @@ define("ember-metal/computed",
|
|
3827
3871
|
The function should accept two parameters, key and value. If value is not
|
3828
3872
|
undefined you should set the value first. In either case return the
|
3829
3873
|
current value of the property.
|
3874
|
+
|
3875
|
+
A computed property defined in this way might look like this:
|
3876
|
+
|
3877
|
+
```js
|
3878
|
+
var Person = Ember.Object.extend({
|
3879
|
+
firstName: 'Betty',
|
3880
|
+
lastName: 'Jones',
|
3881
|
+
|
3882
|
+
fullName: Ember.computed('firstName', 'lastName', function(key, value) {
|
3883
|
+
return this.get('firstName') + ' ' + this.get('lastName');
|
3884
|
+
})
|
3885
|
+
});
|
3886
|
+
|
3887
|
+
var client = Person.create();
|
3888
|
+
|
3889
|
+
client.get('fullName'); // 'Betty Jones'
|
3890
|
+
|
3891
|
+
client.set('lastName', 'Fuller');
|
3892
|
+
client.get('fullName'); // 'Betty Fuller'
|
3893
|
+
```
|
3894
|
+
|
3895
|
+
_Note: This is the prefered way to define computed properties when writing third-party
|
3896
|
+
libraries that depend on or use Ember, since there is no guarantee that the user
|
3897
|
+
will have prototype extensions enabled._
|
3898
|
+
|
3899
|
+
You might use this method if you disabled
|
3900
|
+
[Prototype Extensions](http://emberjs.com/guides/configuring-ember/disabling-prototype-extensions/).
|
3901
|
+
The alternative syntax might look like this
|
3902
|
+
(if prototype extensions are enabled, which is the default behavior):
|
3903
|
+
|
3904
|
+
```js
|
3905
|
+
fullName: function () {
|
3906
|
+
return this.get('firstName') + ' ' + this.get('lastName');
|
3907
|
+
}.property('firstName', 'lastName')
|
3908
|
+
```
|
3830
3909
|
|
3831
3910
|
@method computed
|
3832
3911
|
@for Ember
|
3912
|
+
@param {String} [dependentKeys*] Optional dependent keys that trigger this computed property.
|
3833
3913
|
@param {Function} func The computed property function.
|
3834
3914
|
@return {Ember.ComputedProperty} property descriptor instance
|
3835
3915
|
*/
|
@@ -4162,7 +4242,7 @@ define("ember-metal/computed_macros",
|
|
4162
4242
|
});
|
4163
4243
|
|
4164
4244
|
/**
|
4165
|
-
A computed property that returns true if the
|
4245
|
+
A computed property that returns true if the provided dependent property
|
4166
4246
|
is greater than the provided value.
|
4167
4247
|
|
4168
4248
|
Example
|
@@ -4186,7 +4266,7 @@ define("ember-metal/computed_macros",
|
|
4186
4266
|
@param {String} dependentKey
|
4187
4267
|
@param {Number} value
|
4188
4268
|
@return {Ember.ComputedProperty} computed property which returns true if
|
4189
|
-
the original value for property is greater
|
4269
|
+
the original value for property is greater than given value.
|
4190
4270
|
*/
|
4191
4271
|
registerComputed('gt', function(dependentKey, value) {
|
4192
4272
|
return get(this, dependentKey) > value;
|
@@ -4279,7 +4359,7 @@ define("ember-metal/computed_macros",
|
|
4279
4359
|
@param {String} dependentKey
|
4280
4360
|
@param {Number} value
|
4281
4361
|
@return {Ember.ComputedProperty} computed property which returns true if
|
4282
|
-
the original value for property is less or equal
|
4362
|
+
the original value for property is less or equal than given value.
|
4283
4363
|
*/
|
4284
4364
|
registerComputed('lte', function(dependentKey, value) {
|
4285
4365
|
return get(this, dependentKey) <= value;
|
@@ -4631,7 +4711,7 @@ define("ember-metal/core",
|
|
4631
4711
|
|
4632
4712
|
@class Ember
|
4633
4713
|
@static
|
4634
|
-
@version 1.8.0-beta.
|
4714
|
+
@version 1.8.0-beta.2
|
4635
4715
|
*/
|
4636
4716
|
|
4637
4717
|
if ('undefined' === typeof Ember) {
|
@@ -4658,10 +4738,10 @@ define("ember-metal/core",
|
|
4658
4738
|
/**
|
4659
4739
|
@property VERSION
|
4660
4740
|
@type String
|
4661
|
-
@default '1.8.0-beta.
|
4741
|
+
@default '1.8.0-beta.2'
|
4662
4742
|
@static
|
4663
4743
|
*/
|
4664
|
-
Ember.VERSION = '1.8.0-beta.
|
4744
|
+
Ember.VERSION = '1.8.0-beta.2';
|
4665
4745
|
|
4666
4746
|
/**
|
4667
4747
|
Standard environmental variables. You can define these in a global `EmberENV`
|
@@ -4905,6 +4985,50 @@ define("ember-metal/dependent_keys",
|
|
4905
4985
|
|
4906
4986
|
__exports__.removeDependentKeys = removeDependentKeys;
|
4907
4987
|
});
|
4988
|
+
define("ember-metal/deprecate_property",
|
4989
|
+
["ember-metal/core","ember-metal/platform","ember-metal/properties","ember-metal/property_get","ember-metal/property_set","exports"],
|
4990
|
+
function(__dependency1__, __dependency2__, __dependency3__, __dependency4__, __dependency5__, __exports__) {
|
4991
|
+
"use strict";
|
4992
|
+
/**
|
4993
|
+
@module ember-metal
|
4994
|
+
*/
|
4995
|
+
|
4996
|
+
var Ember = __dependency1__["default"];
|
4997
|
+
var hasPropertyAccessors = __dependency2__.hasPropertyAccessors;
|
4998
|
+
var defineProperty = __dependency3__.defineProperty;
|
4999
|
+
var get = __dependency4__.get;
|
5000
|
+
var set = __dependency5__.set;
|
5001
|
+
|
5002
|
+
|
5003
|
+
/**
|
5004
|
+
Used internally to allow changing properties in a backwards compatible way, and print a helpful
|
5005
|
+
deprecation warning.
|
5006
|
+
|
5007
|
+
@method deprecateProperty
|
5008
|
+
@param {Object} object The object to add the deprecated property to.
|
5009
|
+
@param {String} deprecatedKey The property to add (and print deprecation warnings upon accessing).
|
5010
|
+
@param {String} newKey The property that will be aliased.
|
5011
|
+
@private
|
5012
|
+
@since 1.7.0
|
5013
|
+
*/
|
5014
|
+
|
5015
|
+
function deprecateProperty(object, deprecatedKey, newKey) {
|
5016
|
+
function deprecate() {
|
5017
|
+
Ember.deprecate('Usage of `' + deprecatedKey + '` is deprecated, use `' + newKey + '` instead.');
|
5018
|
+
}
|
5019
|
+
|
5020
|
+
if (hasPropertyAccessors) {
|
5021
|
+
defineProperty(object, deprecatedKey, {
|
5022
|
+
configurable: true,
|
5023
|
+
enumerable: false,
|
5024
|
+
set: function(value) { deprecate(); set(this, newKey, value); },
|
5025
|
+
get: function() { deprecate(); return get(this, newKey); }
|
5026
|
+
});
|
5027
|
+
}
|
5028
|
+
}
|
5029
|
+
|
5030
|
+
__exports__.deprecateProperty = deprecateProperty;
|
5031
|
+
});
|
4908
5032
|
define("ember-metal/dictionary",
|
4909
5033
|
["exports"],
|
4910
5034
|
function(__exports__) {
|
@@ -5858,7 +5982,7 @@ define("ember-metal/instrumentation",
|
|
5858
5982
|
*/
|
5859
5983
|
function instrument(name, _payload, callback, binding) {
|
5860
5984
|
if (subscribers.length === 0) {
|
5861
|
-
return;
|
5985
|
+
return callback.call(binding);
|
5862
5986
|
}
|
5863
5987
|
var payload = _payload || {};
|
5864
5988
|
var finalizer = _instrumentStart(name, function () {
|
@@ -5872,6 +5996,8 @@ define("ember-metal/instrumentation",
|
|
5872
5996
|
payload.exception = e;
|
5873
5997
|
};
|
5874
5998
|
return tryCatchFinally(tryable, catchable, finalizer);
|
5999
|
+
} else {
|
6000
|
+
return callback.call(binding);
|
5875
6001
|
}
|
5876
6002
|
}
|
5877
6003
|
|
@@ -6141,11 +6267,11 @@ define("ember-metal/is_present",
|
|
6141
6267
|
__exports__["default"] = isPresent;
|
6142
6268
|
});
|
6143
6269
|
define("ember-metal/keys",
|
6144
|
-
["ember-metal/
|
6270
|
+
["ember-metal/array","ember-metal/platform","exports"],
|
6145
6271
|
function(__dependency1__, __dependency2__, __exports__) {
|
6146
6272
|
"use strict";
|
6147
|
-
var
|
6148
|
-
var
|
6273
|
+
var indexOf = __dependency1__.indexOf;
|
6274
|
+
var canDefineNonEnumerableProperties = __dependency2__.canDefineNonEnumerableProperties;
|
6149
6275
|
|
6150
6276
|
/**
|
6151
6277
|
Returns all of the keys defined on an object or hash. This is useful
|
@@ -6159,7 +6285,7 @@ define("ember-metal/keys",
|
|
6159
6285
|
*/
|
6160
6286
|
var keys = Object.keys;
|
6161
6287
|
|
6162
|
-
if (!keys ||
|
6288
|
+
if (!keys || !canDefineNonEnumerableProperties) {
|
6163
6289
|
var prototypeProperties = [
|
6164
6290
|
'constructor',
|
6165
6291
|
'hasOwnProperty',
|
@@ -6180,7 +6306,7 @@ define("ember-metal/keys",
|
|
6180
6306
|
return;
|
6181
6307
|
}
|
6182
6308
|
|
6183
|
-
if (
|
6309
|
+
if (indexOf(array, key) >= 0) {
|
6184
6310
|
return;
|
6185
6311
|
}
|
6186
6312
|
|
@@ -7895,65 +8021,62 @@ define("ember-metal/path_cache",
|
|
7895
8021
|
__exports__.isPath = isPath;
|
7896
8022
|
});
|
7897
8023
|
define("ember-metal/platform",
|
7898
|
-
["
|
7899
|
-
function(
|
8024
|
+
["exports"],
|
8025
|
+
function(__exports__) {
|
7900
8026
|
"use strict";
|
7901
8027
|
/*globals Node */
|
7902
8028
|
|
7903
|
-
var Ember = __dependency1__["default"];
|
7904
|
-
|
7905
8029
|
/**
|
7906
8030
|
@module ember-metal
|
7907
8031
|
*/
|
7908
|
-
|
7909
|
-
|
7910
|
-
Platform specific methods and feature detectors needed by the framework.
|
7911
|
-
|
7912
|
-
@class platform
|
7913
|
-
@namespace Ember
|
7914
|
-
@static
|
7915
|
-
*/
|
7916
|
-
// TODO remove this
|
7917
|
-
var platform = {};
|
7918
|
-
|
7919
|
-
var defineProperty = Object.defineProperty;
|
7920
|
-
var canRedefineProperties, canDefinePropertyOnDOM;
|
7921
|
-
|
7922
|
-
// Catch IE8 where Object.defineProperty exists but only works on DOM elements
|
7923
|
-
if (defineProperty) {
|
8032
|
+
var defineProperty = (function checkCompliance(defineProperty) {
|
8033
|
+
if (!defineProperty) return;
|
7924
8034
|
try {
|
7925
|
-
|
7926
|
-
} catch (e) {
|
7927
|
-
defineProperty = null;
|
7928
|
-
}
|
7929
|
-
}
|
7930
|
-
|
7931
|
-
if (defineProperty) {
|
7932
|
-
// Detects a bug in Android <3.2 where you cannot redefine a property using
|
7933
|
-
// Object.defineProperty once accessors have already been set.
|
7934
|
-
canRedefineProperties = (function() {
|
8035
|
+
var a = 5;
|
7935
8036
|
var obj = {};
|
7936
|
-
|
7937
8037
|
defineProperty(obj, 'a', {
|
7938
8038
|
configurable: true,
|
7939
8039
|
enumerable: true,
|
7940
|
-
get: function() {
|
7941
|
-
|
8040
|
+
get: function () {
|
8041
|
+
return a;
|
8042
|
+
},
|
8043
|
+
set: function (v) {
|
8044
|
+
a = v;
|
8045
|
+
}
|
7942
8046
|
});
|
8047
|
+
if (obj.a !== 5) return;
|
8048
|
+
obj.a = 10;
|
8049
|
+
if (a !== 10) return;
|
7943
8050
|
|
8051
|
+
// check non-enumerability
|
7944
8052
|
defineProperty(obj, 'a', {
|
7945
8053
|
configurable: true,
|
7946
|
-
enumerable:
|
8054
|
+
enumerable: false,
|
7947
8055
|
writable: true,
|
7948
8056
|
value: true
|
7949
8057
|
});
|
8058
|
+
for (var key in obj) {
|
8059
|
+
if (key === 'a') return;
|
8060
|
+
}
|
7950
8061
|
|
7951
|
-
|
7952
|
-
|
8062
|
+
// Detects a bug in Android <3.2 where you cannot redefine a property using
|
8063
|
+
// Object.defineProperty once accessors have already been set.
|
8064
|
+
if (obj.a !== true) return;
|
8065
|
+
|
8066
|
+
// defineProperty is compliant
|
8067
|
+
return defineProperty;
|
8068
|
+
} catch (e) {
|
8069
|
+
// IE8 defines Object.defineProperty but calling it on an Object throws
|
8070
|
+
return;
|
8071
|
+
}
|
8072
|
+
})(Object.defineProperty);
|
7953
8073
|
|
8074
|
+
var hasES5CompliantDefineProperty = !!defineProperty;
|
8075
|
+
|
8076
|
+
if (hasES5CompliantDefineProperty && typeof document !== 'undefined') {
|
7954
8077
|
// This is for Safari 5.0, which supports Object.defineProperty, but not
|
7955
8078
|
// on DOM nodes.
|
7956
|
-
canDefinePropertyOnDOM = (function() {
|
8079
|
+
var canDefinePropertyOnDOM = (function() {
|
7957
8080
|
try {
|
7958
8081
|
defineProperty(document.createElement('div'), 'definePropertyOnDOM', {});
|
7959
8082
|
return true;
|
@@ -7962,9 +8085,7 @@ define("ember-metal/platform",
|
|
7962
8085
|
return false;
|
7963
8086
|
})();
|
7964
8087
|
|
7965
|
-
if (!
|
7966
|
-
defineProperty = null;
|
7967
|
-
} else if (!canDefinePropertyOnDOM) {
|
8088
|
+
if (!canDefinePropertyOnDOM) {
|
7968
8089
|
defineProperty = function(obj, keyName, desc) {
|
7969
8090
|
var isNode;
|
7970
8091
|
|
@@ -7984,6 +8105,12 @@ define("ember-metal/platform",
|
|
7984
8105
|
}
|
7985
8106
|
}
|
7986
8107
|
|
8108
|
+
if (!hasES5CompliantDefineProperty) {
|
8109
|
+
defineProperty = function defineProperty(obj, keyName, desc) {
|
8110
|
+
if (!desc.get) { obj[keyName] = desc.value; }
|
8111
|
+
};
|
8112
|
+
}
|
8113
|
+
|
7987
8114
|
// ES5 15.2.3.7
|
7988
8115
|
// http://es5.github.com/#x15.2.3.7
|
7989
8116
|
if (!Object.defineProperties) {
|
@@ -8079,17 +8206,28 @@ define("ember-metal/platform",
|
|
8079
8206
|
|
8080
8207
|
return object;
|
8081
8208
|
};
|
8082
|
-
create.isSimulated = true;
|
8083
8209
|
} else {
|
8084
8210
|
create = Object.create;
|
8085
8211
|
}
|
8086
8212
|
|
8213
|
+
var hasPropertyAccessors = hasES5CompliantDefineProperty;
|
8214
|
+
var canDefineNonEnumerableProperties = hasES5CompliantDefineProperty;
|
8087
8215
|
|
8088
8216
|
/**
|
8089
8217
|
@class platform
|
8090
8218
|
@namespace Ember
|
8091
8219
|
*/
|
8092
8220
|
|
8221
|
+
/**
|
8222
|
+
Platform specific methods and feature detectors needed by the framework.
|
8223
|
+
|
8224
|
+
@class platform
|
8225
|
+
@namespace Ember
|
8226
|
+
@static
|
8227
|
+
*/
|
8228
|
+
// TODO remove this
|
8229
|
+
var platform = {};
|
8230
|
+
|
8093
8231
|
/**
|
8094
8232
|
Identical to `Object.defineProperty()`. Implements as much functionality
|
8095
8233
|
as possible if not available natively.
|
@@ -8108,45 +8246,27 @@ define("ember-metal/platform",
|
|
8108
8246
|
@property hasPropertyAccessors
|
8109
8247
|
@final
|
8110
8248
|
*/
|
8111
|
-
platform.hasPropertyAccessors =
|
8112
|
-
|
8113
|
-
if (!platform.defineProperty) {
|
8114
|
-
platform.hasPropertyAccessors = false;
|
8115
|
-
|
8116
|
-
defineProperty = platform.defineProperty = function(obj, keyName, desc) {
|
8117
|
-
if (!desc.get) { obj[keyName] = desc.value; }
|
8118
|
-
};
|
8119
|
-
|
8120
|
-
platform.defineProperty.isSimulated = true;
|
8121
|
-
}
|
8122
|
-
|
8123
|
-
if (Ember.ENV.MANDATORY_SETTER && !platform.hasPropertyAccessors) {
|
8124
|
-
Ember.ENV.MANDATORY_SETTER = false;
|
8125
|
-
}
|
8249
|
+
platform.hasPropertyAccessors = hasPropertyAccessors;
|
8126
8250
|
|
8127
8251
|
__exports__.create = create;
|
8252
|
+
__exports__.defineProperty = defineProperty;
|
8253
|
+
__exports__.hasPropertyAccessors = hasPropertyAccessors;
|
8254
|
+
__exports__.canDefineNonEnumerableProperties = canDefineNonEnumerableProperties;
|
8128
8255
|
__exports__.platform = platform;
|
8129
8256
|
});
|
8130
8257
|
define("ember-metal/properties",
|
8131
|
-
["ember-metal/core","ember-metal/utils","ember-metal/platform","ember-metal/property_events","
|
8132
|
-
function(__dependency1__, __dependency2__, __dependency3__, __dependency4__,
|
8258
|
+
["ember-metal/core","ember-metal/utils","ember-metal/platform","ember-metal/property_events","exports"],
|
8259
|
+
function(__dependency1__, __dependency2__, __dependency3__, __dependency4__, __exports__) {
|
8133
8260
|
"use strict";
|
8134
8261
|
/**
|
8135
8262
|
@module ember-metal
|
8136
8263
|
*/
|
8137
8264
|
|
8138
8265
|
var Ember = __dependency1__["default"];
|
8139
|
-
var
|
8140
|
-
var
|
8266
|
+
var metaFor = __dependency2__.meta;
|
8267
|
+
var objectDefineProperty = __dependency3__.defineProperty;
|
8268
|
+
var hasPropertyAccessors = __dependency3__.hasPropertyAccessors;
|
8141
8269
|
var overrideChains = __dependency4__.overrideChains;
|
8142
|
-
var get = __dependency5__.get;
|
8143
|
-
var set = __dependency6__.set;
|
8144
|
-
|
8145
|
-
var metaFor = meta;
|
8146
|
-
var objectDefineProperty = platform.defineProperty;
|
8147
|
-
|
8148
|
-
var MANDATORY_SETTER = Ember.ENV.MANDATORY_SETTER;
|
8149
|
-
|
8150
8270
|
// ..........................................................
|
8151
8271
|
// DESCRIPTOR
|
8152
8272
|
//
|
@@ -8168,18 +8288,18 @@ define("ember-metal/properties",
|
|
8168
8288
|
// DEFINING PROPERTIES API
|
8169
8289
|
//
|
8170
8290
|
|
8171
|
-
|
8291
|
+
function MANDATORY_SETTER_FUNCTION(value) {
|
8172
8292
|
Ember.assert("You must use Ember.set() to access this property (of " + this + ")", false);
|
8173
|
-
}
|
8293
|
+
}
|
8174
8294
|
|
8175
|
-
|
8176
|
-
return function() {
|
8295
|
+
__exports__.MANDATORY_SETTER_FUNCTION = MANDATORY_SETTER_FUNCTION;function DEFAULT_GETTER_FUNCTION(name) {
|
8296
|
+
return function GETTER_FUNCTION() {
|
8177
8297
|
var meta = this['__ember_meta__'];
|
8178
8298
|
return meta && meta.values[name];
|
8179
8299
|
};
|
8180
|
-
}
|
8300
|
+
}
|
8181
8301
|
|
8182
|
-
|
8302
|
+
__exports__.DEFAULT_GETTER_FUNCTION = DEFAULT_GETTER_FUNCTION;/**
|
8183
8303
|
NOTE: This is a low-level method used by other parts of the API. You almost
|
8184
8304
|
never want to call this method directly. Instead you should use
|
8185
8305
|
`Ember.mixin()` to define new properties.
|
@@ -8242,34 +8362,36 @@ define("ember-metal/properties",
|
|
8242
8362
|
value = desc;
|
8243
8363
|
|
8244
8364
|
descs[keyName] = desc;
|
8245
|
-
|
8246
|
-
|
8247
|
-
configurable: true,
|
8248
|
-
enumerable: true,
|
8249
|
-
writable: true,
|
8250
|
-
value: undefined // make enumerable
|
8251
|
-
});
|
8252
|
-
} else {
|
8253
|
-
obj[keyName] = undefined; // make enumerable
|
8254
|
-
}
|
8255
|
-
if (desc.setup) { desc.setup(obj, keyName); }
|
8256
|
-
} else {
|
8257
|
-
descs[keyName] = undefined; // shadow descriptor in proto
|
8258
|
-
if (desc == null) {
|
8259
|
-
value = data;
|
8260
|
-
|
8261
|
-
if (MANDATORY_SETTER && watching) {
|
8262
|
-
meta.values[keyName] = data;
|
8365
|
+
|
8366
|
+
if (watching && hasPropertyAccessors) {
|
8263
8367
|
objectDefineProperty(obj, keyName, {
|
8264
8368
|
configurable: true,
|
8265
8369
|
enumerable: true,
|
8266
|
-
|
8267
|
-
|
8370
|
+
writable: true,
|
8371
|
+
value: undefined // make enumerable
|
8268
8372
|
});
|
8269
8373
|
} else {
|
8270
|
-
obj[keyName] =
|
8374
|
+
obj[keyName] = undefined; // make enumerable
|
8271
8375
|
}
|
8272
|
-
|
8376
|
+
if (desc.setup) { desc.setup(obj, keyName); }
|
8377
|
+
} else {
|
8378
|
+
descs[keyName] = undefined; // shadow descriptor in proto
|
8379
|
+
if (desc == null) {
|
8380
|
+
value = data;
|
8381
|
+
|
8382
|
+
|
8383
|
+
if (watching && hasPropertyAccessors) {
|
8384
|
+
meta.values[keyName] = data;
|
8385
|
+
objectDefineProperty(obj, keyName, {
|
8386
|
+
configurable: true,
|
8387
|
+
enumerable: true,
|
8388
|
+
set: MANDATORY_SETTER_FUNCTION,
|
8389
|
+
get: DEFAULT_GETTER_FUNCTION(keyName)
|
8390
|
+
});
|
8391
|
+
} else {
|
8392
|
+
obj[keyName] = data;
|
8393
|
+
}
|
8394
|
+
} else {
|
8273
8395
|
value = desc;
|
8274
8396
|
|
8275
8397
|
// compatibility with ES5
|
@@ -8287,35 +8409,7 @@ define("ember-metal/properties",
|
|
8287
8409
|
|
8288
8410
|
return this;
|
8289
8411
|
}
|
8290
|
-
|
8291
|
-
__exports__.defineProperty = defineProperty;/**
|
8292
|
-
Used internally to allow changing properties in a backwards compatible way, and print a helpful
|
8293
|
-
deprecation warning.
|
8294
|
-
|
8295
|
-
@method deprecateProperty
|
8296
|
-
@param {Object} object The object to add the deprecated property to.
|
8297
|
-
@param {String} deprecatedKey The property to add (and print deprecation warnings upon accessing).
|
8298
|
-
@param {String} newKey The property that will be aliased.
|
8299
|
-
@private
|
8300
|
-
@since 1.7.0
|
8301
|
-
*/
|
8302
|
-
|
8303
|
-
function deprecateProperty(object, deprecatedKey, newKey) {
|
8304
|
-
function deprecate() {
|
8305
|
-
Ember.deprecate('Usage of `' + deprecatedKey + '` is deprecated, use `' + newKey + '` instead.');
|
8306
|
-
}
|
8307
|
-
|
8308
|
-
if (platform.hasPropertyAccessors) {
|
8309
|
-
defineProperty(object, deprecatedKey, {
|
8310
|
-
configurable: true,
|
8311
|
-
enumerable: false,
|
8312
|
-
set: function(value) { deprecate(); set(object, newKey, value); },
|
8313
|
-
get: function() { deprecate(); return get(object, newKey); }
|
8314
|
-
});
|
8315
|
-
}
|
8316
|
-
}
|
8317
|
-
|
8318
|
-
__exports__.deprecateProperty = deprecateProperty;
|
8412
|
+
__exports__.defineProperty = defineProperty;
|
8319
8413
|
});
|
8320
8414
|
define("ember-metal/property_events",
|
8321
8415
|
["ember-metal/utils","ember-metal/events","ember-metal/observer_set","exports"],
|
@@ -8577,8 +8671,8 @@ define("ember-metal/property_events",
|
|
8577
8671
|
__exports__.changeProperties = changeProperties;
|
8578
8672
|
});
|
8579
8673
|
define("ember-metal/property_get",
|
8580
|
-
["ember-metal/core","ember-metal/error","ember-metal/path_cache","exports"],
|
8581
|
-
function(__dependency1__, __dependency2__, __dependency3__, __exports__) {
|
8674
|
+
["ember-metal/core","ember-metal/error","ember-metal/path_cache","ember-metal/platform","exports"],
|
8675
|
+
function(__dependency1__, __dependency2__, __dependency3__, __dependency4__, __exports__) {
|
8582
8676
|
"use strict";
|
8583
8677
|
/**
|
8584
8678
|
@module ember-metal
|
@@ -8589,8 +8683,8 @@ define("ember-metal/property_get",
|
|
8589
8683
|
var isGlobalPath = __dependency3__.isGlobalPath;
|
8590
8684
|
var isPath = __dependency3__.isPath;
|
8591
8685
|
var pathHasThis = __dependency3__.hasThis;
|
8686
|
+
var hasPropertyAccessors = __dependency4__.hasPropertyAccessors;
|
8592
8687
|
|
8593
|
-
var MANDATORY_SETTER = Ember.ENV.MANDATORY_SETTER;
|
8594
8688
|
var FIRST_KEY = /^([^\.]+)/;
|
8595
8689
|
|
8596
8690
|
// ..........................................................
|
@@ -8658,12 +8752,13 @@ define("ember-metal/property_get",
|
|
8658
8752
|
if (desc) {
|
8659
8753
|
return desc.get(obj, keyName);
|
8660
8754
|
} else {
|
8661
|
-
|
8662
|
-
|
8663
|
-
|
8664
|
-
|
8665
|
-
|
8666
|
-
|
8755
|
+
|
8756
|
+
if (hasPropertyAccessors && meta && meta.watching[keyName] > 0) {
|
8757
|
+
ret = meta.values[keyName];
|
8758
|
+
} else {
|
8759
|
+
ret = obj[keyName];
|
8760
|
+
}
|
8761
|
+
|
8667
8762
|
if (ret === undefined &&
|
8668
8763
|
'object' === typeof obj && !(keyName in obj) && 'function' === typeof obj.unknownProperty) {
|
8669
8764
|
return obj.unknownProperty(keyName);
|
@@ -8760,8 +8855,8 @@ define("ember-metal/property_get",
|
|
8760
8855
|
__exports__._getPath = _getPath;
|
8761
8856
|
});
|
8762
8857
|
define("ember-metal/property_set",
|
8763
|
-
["ember-metal/core","ember-metal/property_get","ember-metal/property_events","ember-metal/properties","ember-metal/error","ember-metal/path_cache","exports"],
|
8764
|
-
function(__dependency1__, __dependency2__, __dependency3__, __dependency4__, __dependency5__, __dependency6__, __exports__) {
|
8858
|
+
["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"],
|
8859
|
+
function(__dependency1__, __dependency2__, __dependency3__, __dependency4__, __dependency5__, __dependency6__, __dependency7__, __exports__) {
|
8765
8860
|
"use strict";
|
8766
8861
|
var Ember = __dependency1__["default"];
|
8767
8862
|
var getPath = __dependency2__._getPath;
|
@@ -8770,9 +8865,8 @@ define("ember-metal/property_set",
|
|
8770
8865
|
var defineProperty = __dependency4__.defineProperty;
|
8771
8866
|
var EmberError = __dependency5__["default"];
|
8772
8867
|
var isPath = __dependency6__.isPath;
|
8868
|
+
var hasPropertyAccessors = __dependency7__.hasPropertyAccessors;
|
8773
8869
|
|
8774
|
-
|
8775
|
-
var MANDATORY_SETTER = Ember.ENV.MANDATORY_SETTER;
|
8776
8870
|
var IS_GLOBAL = /^([A-Z$]|([0-9][A-Z$]))/;
|
8777
8871
|
|
8778
8872
|
/**
|
@@ -8829,24 +8923,26 @@ define("ember-metal/property_set",
|
|
8829
8923
|
if (isUnknown && 'function' === typeof obj.setUnknownProperty) {
|
8830
8924
|
obj.setUnknownProperty(keyName, value);
|
8831
8925
|
} else if (meta && meta.watching[keyName] > 0) {
|
8832
|
-
|
8833
|
-
|
8834
|
-
|
8835
|
-
|
8836
|
-
|
8837
|
-
|
8926
|
+
|
8927
|
+
if (hasPropertyAccessors) {
|
8928
|
+
currentValue = meta.values[keyName];
|
8929
|
+
} else {
|
8930
|
+
currentValue = obj[keyName];
|
8931
|
+
}
|
8932
|
+
// only trigger a change if the value has changed
|
8838
8933
|
if (value !== currentValue) {
|
8839
8934
|
propertyWillChange(obj, keyName);
|
8840
|
-
|
8841
|
-
if (
|
8842
|
-
|
8935
|
+
|
8936
|
+
if (hasPropertyAccessors) {
|
8937
|
+
if ((currentValue === undefined && !(keyName in obj)) || !obj.propertyIsEnumerable(keyName)) {
|
8938
|
+
defineProperty(obj, keyName, null, value); // setup mandatory setter
|
8939
|
+
} else {
|
8940
|
+
meta.values[keyName] = value;
|
8941
|
+
}
|
8843
8942
|
} else {
|
8844
|
-
|
8943
|
+
obj[keyName] = value;
|
8845
8944
|
}
|
8846
|
-
|
8847
|
-
obj[keyName] = value;
|
8848
|
-
}
|
8849
|
-
propertyDidChange(obj, keyName);
|
8945
|
+
propertyDidChange(obj, keyName);
|
8850
8946
|
}
|
8851
8947
|
} else {
|
8852
8948
|
obj[keyName] = value;
|
@@ -9203,7 +9299,7 @@ define("ember-metal/run_loop",
|
|
9203
9299
|
|
9204
9300
|
/**
|
9205
9301
|
Invokes the passed target/method and optional arguments after a specified
|
9206
|
-
period
|
9302
|
+
period of time. The last parameter of this method must always be a number
|
9207
9303
|
of milliseconds.
|
9208
9304
|
|
9209
9305
|
You should use this method whenever you need to run some action after a
|
@@ -9577,16 +9673,17 @@ define("ember-metal/set_properties",
|
|
9577
9673
|
}
|
9578
9674
|
});
|
9579
9675
|
define("ember-metal/utils",
|
9580
|
-
["ember-metal/core","ember-metal/platform","ember-metal/array","
|
9581
|
-
function(__dependency1__, __dependency2__, __dependency3__,
|
9676
|
+
["ember-metal/core","ember-metal/platform","ember-metal/array","exports"],
|
9677
|
+
function(__dependency1__, __dependency2__, __dependency3__, __exports__) {
|
9582
9678
|
"use strict";
|
9583
9679
|
var Ember = __dependency1__["default"];
|
9584
|
-
var
|
9680
|
+
var o_defineProperty = __dependency2__.defineProperty;
|
9681
|
+
var canDefineNonEnumerableProperties = __dependency2__.canDefineNonEnumerableProperties;
|
9682
|
+
var hasPropertyAccessors = __dependency2__.hasPropertyAccessors;
|
9585
9683
|
var create = __dependency2__.create;
|
9586
9684
|
|
9587
9685
|
var forEach = __dependency3__.forEach;
|
9588
9686
|
|
9589
|
-
var keys = __dependency4__["default"];
|
9590
9687
|
/**
|
9591
9688
|
@module ember-metal
|
9592
9689
|
*/
|
@@ -9623,12 +9720,10 @@ define("ember-metal/utils",
|
|
9623
9720
|
*/
|
9624
9721
|
var GUID_PREFIX = 'ember';
|
9625
9722
|
|
9626
|
-
var o_defineProperty = platform.defineProperty;
|
9627
9723
|
var o_create = create;
|
9628
9724
|
// Used for guid generation...
|
9629
9725
|
var numberCache = [];
|
9630
9726
|
var stringCache = {};
|
9631
|
-
var MANDATORY_SETTER = Ember.ENV.MANDATORY_SETTER;
|
9632
9727
|
|
9633
9728
|
/**
|
9634
9729
|
Strongly hint runtimes to intern the provided string.
|
@@ -9669,10 +9764,13 @@ define("ember-metal/utils",
|
|
9669
9764
|
@private
|
9670
9765
|
@return {String} interned version of the provided string
|
9671
9766
|
*/
|
9672
|
-
function intern(
|
9673
|
-
var obj =
|
9674
|
-
obj[
|
9675
|
-
|
9767
|
+
function intern(str) {
|
9768
|
+
var obj = {};
|
9769
|
+
obj[str] = 1;
|
9770
|
+
for (var key in obj) {
|
9771
|
+
if (key === str) return key;
|
9772
|
+
}
|
9773
|
+
return str;
|
9676
9774
|
}
|
9677
9775
|
|
9678
9776
|
/**
|
@@ -9794,8 +9892,6 @@ define("ember-metal/utils",
|
|
9794
9892
|
value: null
|
9795
9893
|
};
|
9796
9894
|
|
9797
|
-
var isDefinePropertySimulated = platform.defineProperty.isSimulated;
|
9798
|
-
|
9799
9895
|
function Meta(obj) {
|
9800
9896
|
this.descs = {};
|
9801
9897
|
this.watching = {};
|
@@ -9820,7 +9916,7 @@ define("ember-metal/utils",
|
|
9820
9916
|
proto: null
|
9821
9917
|
};
|
9822
9918
|
|
9823
|
-
if (
|
9919
|
+
if (!canDefineNonEnumerableProperties) {
|
9824
9920
|
// on platforms that don't support enumerable false
|
9825
9921
|
// make meta fail jQuery.isPlainObject() to hide from
|
9826
9922
|
// jQuery.extend() by having a property that fails
|
@@ -9835,7 +9931,11 @@ define("ember-metal/utils",
|
|
9835
9931
|
// Placeholder for non-writable metas.
|
9836
9932
|
var EMPTY_META = new Meta(null);
|
9837
9933
|
|
9838
|
-
|
9934
|
+
|
9935
|
+
if (hasPropertyAccessors) {
|
9936
|
+
EMPTY_META.values = {};
|
9937
|
+
}
|
9938
|
+
|
9839
9939
|
|
9840
9940
|
/**
|
9841
9941
|
Retrieves the meta hash for an object. If `writable` is true ensures the
|
@@ -9861,11 +9961,15 @@ define("ember-metal/utils",
|
|
9861
9961
|
if (writable===false) return ret || EMPTY_META;
|
9862
9962
|
|
9863
9963
|
if (!ret) {
|
9864
|
-
if (
|
9964
|
+
if (canDefineNonEnumerableProperties) o_defineProperty(obj, '__ember_meta__', META_DESC);
|
9865
9965
|
|
9866
9966
|
ret = new Meta(obj);
|
9867
9967
|
|
9868
|
-
|
9968
|
+
|
9969
|
+
if (hasPropertyAccessors) {
|
9970
|
+
ret.values = {};
|
9971
|
+
}
|
9972
|
+
|
9869
9973
|
|
9870
9974
|
obj['__ember_meta__'] = ret;
|
9871
9975
|
|
@@ -9873,7 +9977,7 @@ define("ember-metal/utils",
|
|
9873
9977
|
ret.descs.constructor = null;
|
9874
9978
|
|
9875
9979
|
} else if (ret.source !== obj) {
|
9876
|
-
if (
|
9980
|
+
if (canDefineNonEnumerableProperties) o_defineProperty(obj, '__ember_meta__', META_DESC);
|
9877
9981
|
|
9878
9982
|
ret = o_create(ret);
|
9879
9983
|
ret.descs = o_create(ret.descs);
|
@@ -9882,7 +9986,11 @@ define("ember-metal/utils",
|
|
9882
9986
|
ret.cacheMeta = {};
|
9883
9987
|
ret.source = obj;
|
9884
9988
|
|
9885
|
-
|
9989
|
+
|
9990
|
+
if (hasPropertyAccessors) {
|
9991
|
+
ret.values = o_create(ret.values);
|
9992
|
+
}
|
9993
|
+
|
9886
9994
|
|
9887
9995
|
obj['__ember_meta__'] = ret;
|
9888
9996
|
}
|
@@ -10388,7 +10496,12 @@ define("ember-metal/utils",
|
|
10388
10496
|
v = obj[key];
|
10389
10497
|
if (v === 'toString') { continue; } // ignore useless items
|
10390
10498
|
if (typeOf(v) === 'function') { v = "function() { ... }"; }
|
10391
|
-
|
10499
|
+
|
10500
|
+
if (v && typeof v.toString !== 'function') {
|
10501
|
+
ret.push(key + ": " + toString.call(v));
|
10502
|
+
} else {
|
10503
|
+
ret.push(key + ": " + v);
|
10504
|
+
}
|
10392
10505
|
}
|
10393
10506
|
}
|
10394
10507
|
return "{" + ret.join(", ") + "}";
|
@@ -10434,17 +10547,19 @@ define("ember-metal/utils",
|
|
10434
10547
|
__exports__.tryFinally = tryFinally;
|
10435
10548
|
});
|
10436
10549
|
define("ember-metal/watch_key",
|
10437
|
-
["ember-metal/core","ember-metal/utils","ember-metal/platform","exports"],
|
10438
|
-
function(__dependency1__, __dependency2__, __dependency3__, __exports__) {
|
10550
|
+
["ember-metal/core","ember-metal/utils","ember-metal/platform","ember-metal/properties","exports"],
|
10551
|
+
function(__dependency1__, __dependency2__, __dependency3__, __dependency4__, __exports__) {
|
10439
10552
|
"use strict";
|
10440
10553
|
var Ember = __dependency1__["default"];
|
10441
10554
|
var meta = __dependency2__.meta;
|
10442
10555
|
var typeOf = __dependency2__.typeOf;
|
10443
|
-
var
|
10556
|
+
var o_defineProperty = __dependency3__.defineProperty;
|
10557
|
+
var hasPropertyAccessors = __dependency3__.hasPropertyAccessors;
|
10558
|
+
var MANDATORY_SETTER_FUNCTION = __dependency4__.MANDATORY_SETTER_FUNCTION;
|
10559
|
+
var DEFAULT_GETTER_FUNCTION = __dependency4__.DEFAULT_GETTER_FUNCTION;
|
10444
10560
|
|
10445
10561
|
var metaFor = meta; // utils.js
|
10446
|
-
|
10447
|
-
var o_defineProperty = platform.defineProperty;
|
10562
|
+
|
10448
10563
|
|
10449
10564
|
function watchKey(obj, keyName, meta) {
|
10450
10565
|
// can't watch length on Array - it is special...
|
@@ -10463,21 +10578,33 @@ define("ember-metal/watch_key",
|
|
10463
10578
|
obj.willWatchProperty(keyName);
|
10464
10579
|
}
|
10465
10580
|
|
10466
|
-
|
10581
|
+
|
10582
|
+
if (hasPropertyAccessors) {
|
10583
|
+
handleMandatorySetter(m, obj, keyName);
|
10584
|
+
}
|
10585
|
+
|
10586
|
+
} else {
|
10587
|
+
watching[keyName] = (watching[keyName] || 0) + 1;
|
10588
|
+
}
|
10589
|
+
}
|
10590
|
+
|
10591
|
+
__exports__.watchKey = watchKey;
|
10592
|
+
|
10593
|
+
var handleMandatorySetter = function handleMandatorySetter(m, obj, keyName) {
|
10594
|
+
// this x in Y deopts, so keeping it in this function is better;
|
10595
|
+
if (keyName in obj) {
|
10467
10596
|
m.values[keyName] = obj[keyName];
|
10468
10597
|
o_defineProperty(obj, keyName, {
|
10469
10598
|
configurable: true,
|
10470
10599
|
enumerable: obj.propertyIsEnumerable(keyName),
|
10471
|
-
set:
|
10472
|
-
get:
|
10600
|
+
set: MANDATORY_SETTER_FUNCTION,
|
10601
|
+
get: DEFAULT_GETTER_FUNCTION(keyName)
|
10473
10602
|
});
|
10474
10603
|
}
|
10475
|
-
}
|
10476
|
-
|
10477
|
-
}
|
10478
|
-
}
|
10604
|
+
};
|
10605
|
+
|
10479
10606
|
|
10480
|
-
|
10607
|
+
function unwatchKey(obj, keyName, meta) {
|
10481
10608
|
var m = meta || metaFor(obj), watching = m.watching;
|
10482
10609
|
|
10483
10610
|
if (watching[keyName] === 1) {
|
@@ -10490,23 +10617,25 @@ define("ember-metal/watch_key",
|
|
10490
10617
|
obj.didUnwatchProperty(keyName);
|
10491
10618
|
}
|
10492
10619
|
|
10493
|
-
|
10494
|
-
|
10495
|
-
|
10496
|
-
|
10497
|
-
|
10498
|
-
|
10499
|
-
|
10500
|
-
|
10501
|
-
|
10502
|
-
|
10503
|
-
|
10504
|
-
|
10505
|
-
|
10506
|
-
|
10507
|
-
|
10508
|
-
|
10509
|
-
|
10620
|
+
|
10621
|
+
if (hasPropertyAccessors && keyName in obj) {
|
10622
|
+
o_defineProperty(obj, keyName, {
|
10623
|
+
configurable: true,
|
10624
|
+
enumerable: obj.propertyIsEnumerable(keyName),
|
10625
|
+
set: function(val) {
|
10626
|
+
// redefine to set as enumerable
|
10627
|
+
o_defineProperty(obj, keyName, {
|
10628
|
+
configurable: true,
|
10629
|
+
writable: true,
|
10630
|
+
enumerable: true,
|
10631
|
+
value: val
|
10632
|
+
});
|
10633
|
+
delete m.values[keyName];
|
10634
|
+
},
|
10635
|
+
get: DEFAULT_GETTER_FUNCTION(keyName)
|
10636
|
+
});
|
10637
|
+
}
|
10638
|
+
|
10510
10639
|
} else if (watching[keyName] > 1) {
|
10511
10640
|
watching[keyName]--;
|
10512
10641
|
}
|
@@ -15177,7 +15306,7 @@ define("ember-runtime/mixins/enumerable",
|
|
15177
15306
|
- `index` is the current index in the iteration.
|
15178
15307
|
- `enumerable` is the enumerable object itself.
|
15179
15308
|
|
15180
|
-
It should return
|
15309
|
+
It should return `true` to include the item in the results, `false`
|
15181
15310
|
otherwise.
|
15182
15311
|
|
15183
15312
|
Note that in addition to a callback, you can also pass an optional target
|
@@ -16738,7 +16867,7 @@ define("ember-runtime/mixins/observable",
|
|
16738
16867
|
},
|
16739
16868
|
|
16740
16869
|
/**
|
16741
|
-
To get multiple properties at once, call `getProperties`
|
16870
|
+
To get the values of multiple properties at once, call `getProperties`
|
16742
16871
|
with a list of strings or an array:
|
16743
16872
|
|
16744
16873
|
```javascript
|
@@ -18183,7 +18312,7 @@ define("ember-runtime/system/core_object",
|
|
18183
18312
|
*/
|
18184
18313
|
|
18185
18314
|
var Ember = __dependency1__["default"];
|
18186
|
-
// Ember.
|
18315
|
+
// Ember.assert, Ember.K, Ember.config
|
18187
18316
|
|
18188
18317
|
// NOTE: this object should never be included directly. Instead use `Ember.Object`.
|
18189
18318
|
// We only define this separately so that `Ember.Set` can depend on it.
|
@@ -18204,7 +18333,7 @@ define("ember-runtime/system/core_object",
|
|
18204
18333
|
var required = __dependency9__.required;
|
18205
18334
|
var indexOf = __dependency10__.indexOf;
|
18206
18335
|
var EmberError = __dependency11__["default"];
|
18207
|
-
var
|
18336
|
+
var o_defineProperty = __dependency5__.defineProperty;
|
18208
18337
|
var keys = __dependency12__["default"];
|
18209
18338
|
var ActionHandler = __dependency13__["default"];
|
18210
18339
|
var defineProperty = __dependency14__.defineProperty;
|
@@ -18212,14 +18341,13 @@ define("ember-runtime/system/core_object",
|
|
18212
18341
|
var ComputedProperty = __dependency16__.ComputedProperty;
|
18213
18342
|
var run = __dependency17__["default"];
|
18214
18343
|
var destroy = __dependency6__.destroy;
|
18215
|
-
|
18216
18344
|
var K = __dependency1__.K;
|
18217
|
-
var
|
18345
|
+
var hasPropertyAccessors = __dependency5__.hasPropertyAccessors;
|
18346
|
+
|
18218
18347
|
var schedule = run.schedule;
|
18219
18348
|
var applyMixin = Mixin._apply;
|
18220
18349
|
var finishPartial = Mixin.finishPartial;
|
18221
18350
|
var reopen = Mixin.prototype.reopen;
|
18222
|
-
var MANDATORY_SETTER = Ember.ENV.MANDATORY_SETTER;
|
18223
18351
|
var hasCachedComputedProperties = false;
|
18224
18352
|
|
18225
18353
|
var undefinedDescriptor = {
|
@@ -18323,11 +18451,14 @@ define("ember-runtime/system/core_object",
|
|
18323
18451
|
} else {
|
18324
18452
|
if (typeof this.setUnknownProperty === 'function' && !(keyName in this)) {
|
18325
18453
|
this.setUnknownProperty(keyName, value);
|
18326
|
-
} else if (MANDATORY_SETTER) {
|
18327
|
-
defineProperty(this, keyName, null, value); // setup mandatory setter
|
18328
18454
|
} else {
|
18329
|
-
|
18330
|
-
|
18455
|
+
|
18456
|
+
if (hasPropertyAccessors) {
|
18457
|
+
defineProperty(this, keyName, null, value); // setup mandatory setter
|
18458
|
+
} else {
|
18459
|
+
this[keyName] = value;
|
18460
|
+
}
|
18461
|
+
}
|
18331
18462
|
}
|
18332
18463
|
}
|
18333
18464
|
}
|
@@ -19022,12 +19153,9 @@ define("ember-runtime/system/core_object",
|
|
19022
19153
|
cache._computedProperties = undefined;
|
19023
19154
|
}
|
19024
19155
|
}
|
19025
|
-
|
19026
|
-
this._super();
|
19027
19156
|
}
|
19028
19157
|
});
|
19029
19158
|
|
19030
|
-
|
19031
19159
|
__exports__["default"] = CoreObject;
|
19032
19160
|
});
|
19033
19161
|
define("ember-runtime/system/deferred",
|
@@ -23881,4 +24009,5 @@ define("rsvp/utils",
|
|
23881
24009
|
});
|
23882
24010
|
requireModule("ember-runtime");
|
23883
24011
|
|
23884
|
-
})();
|
24012
|
+
})();
|
24013
|
+
;module.exports = Ember;
|