ember-source 1.8.0.beta.1 → 1.8.0.beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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;
|