ember-source 0.0.3 → 0.0.4
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.
Potentially problematic release.
This version of ember-source might be problematic. Click here for more details.
- data/dist/ember-data-deps.js +314 -44
- data/dist/ember-data-deps.min.js +5 -5
- data/dist/ember-data-deps.prod.js +308 -39
- data/dist/ember-debug.js +3 -2
- data/dist/ember-old-router.js +350 -89
- data/dist/ember-old-router.min.js +8 -8
- data/dist/ember-old-router.prod.js +341 -81
- data/dist/ember-runtime.js +314 -44
- data/dist/ember-runtime.min.js +5 -5
- data/dist/ember-runtime.prod.js +308 -39
- data/dist/ember-spade.js +1 -1
- data/dist/ember-template-compiler.js +3 -3
- data/dist/ember-template-compiler.min.js +2 -2
- data/dist/ember-tests.js +1 -1
- data/dist/ember.js +431 -136
- data/dist/ember.min.js +8 -8
- data/dist/ember.prod.js +419 -125
- metadata +2 -2
data/dist/ember-debug.js
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
(function() {
|
2
2
|
var Ember = { assert: function() {} };
|
3
|
-
// Version: v1.0.0-rc.1-
|
4
|
-
// Last commit:
|
3
|
+
// Version: v1.0.0-rc.1-240-gd3a6cc4
|
4
|
+
// Last commit: d3a6cc4 (2013-03-25 04:06:07 -0400)
|
5
5
|
|
6
6
|
|
7
7
|
(function() {
|
@@ -142,6 +142,7 @@ Ember.deprecate = function(message, test) {
|
|
142
142
|
@method deprecateFunc
|
143
143
|
@param {String} message A description of the deprecation.
|
144
144
|
@param {Function} func The function to be deprecated.
|
145
|
+
@return {Function} a new function that wrapped the original function with a deprecation warning
|
145
146
|
*/
|
146
147
|
Ember.deprecateFunc = function(message, func) {
|
147
148
|
return function() {
|
data/dist/ember-old-router.js
CHANGED
@@ -1,5 +1,5 @@
|
|
1
|
-
// Version: v1.0.0-rc.1-
|
2
|
-
// Last commit:
|
1
|
+
// Version: v1.0.0-rc.1-240-gd3a6cc4
|
2
|
+
// Last commit: d3a6cc4 (2013-03-25 04:06:07 -0400)
|
3
3
|
|
4
4
|
|
5
5
|
(function() {
|
@@ -140,6 +140,7 @@ Ember.deprecate = function(message, test) {
|
|
140
140
|
@method deprecateFunc
|
141
141
|
@param {String} message A description of the deprecation.
|
142
142
|
@param {Function} func The function to be deprecated.
|
143
|
+
@return {Function} a new function that wrapped the original function with a deprecation warning
|
143
144
|
*/
|
144
145
|
Ember.deprecateFunc = function(message, func) {
|
145
146
|
return function() {
|
@@ -150,8 +151,8 @@ Ember.deprecateFunc = function(message, func) {
|
|
150
151
|
|
151
152
|
})();
|
152
153
|
|
153
|
-
// Version: v1.0.0-rc.1-
|
154
|
-
// Last commit:
|
154
|
+
// Version: v1.0.0-rc.1-275-g9104bf1
|
155
|
+
// Last commit: 9104bf1 (2013-03-29 13:59:19 -0700)
|
155
156
|
|
156
157
|
|
157
158
|
(function() {
|
@@ -211,7 +212,7 @@ var define, requireModule;
|
|
211
212
|
|
212
213
|
@class Ember
|
213
214
|
@static
|
214
|
-
@version 1.0.0-rc.
|
215
|
+
@version 1.0.0-rc.2
|
215
216
|
*/
|
216
217
|
|
217
218
|
if ('undefined' === typeof Ember) {
|
@@ -238,10 +239,10 @@ Ember.toString = function() { return "Ember"; };
|
|
238
239
|
/**
|
239
240
|
@property VERSION
|
240
241
|
@type String
|
241
|
-
@default '1.0.0-rc.
|
242
|
+
@default '1.0.0-rc.2'
|
242
243
|
@final
|
243
244
|
*/
|
244
|
-
Ember.VERSION = '1.0.0-rc.
|
245
|
+
Ember.VERSION = '1.0.0-rc.2';
|
245
246
|
|
246
247
|
/**
|
247
248
|
Standard environmental variables. You can define these in a global `ENV`
|
@@ -824,7 +825,7 @@ if (isDefinePropertySimulated) {
|
|
824
825
|
@param {Object} obj The object to retrieve meta for
|
825
826
|
@param {Boolean} [writable=true] Pass `false` if you do not intend to modify
|
826
827
|
the meta hash, allowing the method to avoid making an unnecessary copy.
|
827
|
-
@return {
|
828
|
+
@return {Object} the meta hash for an object
|
828
829
|
*/
|
829
830
|
Ember.meta = function meta(obj, writable) {
|
830
831
|
|
@@ -976,7 +977,7 @@ Ember.wrap = function(func, superFunc) {
|
|
976
977
|
@method isArray
|
977
978
|
@for Ember
|
978
979
|
@param {Object} obj The object to test
|
979
|
-
@return {Boolean}
|
980
|
+
@return {Boolean} true if the passed object is an array or Array-like
|
980
981
|
*/
|
981
982
|
Ember.isArray = function(obj) {
|
982
983
|
if (!obj || obj.setInterval) { return false; }
|
@@ -3370,6 +3371,7 @@ var ComputedPropertyPrototype = ComputedProperty.prototype;
|
|
3370
3371
|
|
3371
3372
|
@method cacheable
|
3372
3373
|
@param {Boolean} aFlag optional set to `false` to disable caching
|
3374
|
+
@return {Ember.ComputedProperty} this
|
3373
3375
|
@chainable
|
3374
3376
|
*/
|
3375
3377
|
ComputedPropertyPrototype.cacheable = function(aFlag) {
|
@@ -3390,6 +3392,7 @@ ComputedPropertyPrototype.cacheable = function(aFlag) {
|
|
3390
3392
|
```
|
3391
3393
|
|
3392
3394
|
@method volatile
|
3395
|
+
@return {Ember.ComputedProperty} this
|
3393
3396
|
@chainable
|
3394
3397
|
*/
|
3395
3398
|
ComputedPropertyPrototype.volatile = function() {
|
@@ -3411,6 +3414,7 @@ ComputedPropertyPrototype.volatile = function() {
|
|
3411
3414
|
```
|
3412
3415
|
|
3413
3416
|
@method readOnly
|
3417
|
+
@return {Ember.ComputedProperty} this
|
3414
3418
|
@chainable
|
3415
3419
|
*/
|
3416
3420
|
ComputedPropertyPrototype.readOnly = function(readOnly) {
|
@@ -3435,6 +3439,7 @@ ComputedPropertyPrototype.readOnly = function(readOnly) {
|
|
3435
3439
|
|
3436
3440
|
@method property
|
3437
3441
|
@param {String} path* zero or more property paths
|
3442
|
+
@return {Ember.ComputedProperty} this
|
3438
3443
|
@chainable
|
3439
3444
|
*/
|
3440
3445
|
ComputedPropertyPrototype.property = function() {
|
@@ -3664,6 +3669,7 @@ Ember.computed = function(func) {
|
|
3664
3669
|
@param {Object} obj the object whose property you want to check
|
3665
3670
|
@param {String} key the name of the property whose cached value you want
|
3666
3671
|
to return
|
3672
|
+
@return {any} the cached value
|
3667
3673
|
*/
|
3668
3674
|
Ember.cacheFor = function cacheFor(obj, key) {
|
3669
3675
|
var cache = metaFor(obj, false).cache;
|
@@ -3673,57 +3679,238 @@ Ember.cacheFor = function cacheFor(obj, key) {
|
|
3673
3679
|
}
|
3674
3680
|
};
|
3675
3681
|
|
3682
|
+
function getProperties(self, propertyNames) {
|
3683
|
+
var ret = {};
|
3684
|
+
for(var i = 0; i < propertyNames.length; i++) {
|
3685
|
+
ret[propertyNames[i]] = get(self, propertyNames[i]);
|
3686
|
+
}
|
3687
|
+
return ret;
|
3688
|
+
}
|
3689
|
+
|
3690
|
+
function registerComputed(name, macro) {
|
3691
|
+
Ember.computed[name] = function(dependentKey) {
|
3692
|
+
var args = a_slice.call(arguments);
|
3693
|
+
return Ember.computed(dependentKey, function() {
|
3694
|
+
return macro.apply(this, args);
|
3695
|
+
});
|
3696
|
+
};
|
3697
|
+
}
|
3698
|
+
|
3699
|
+
function registerComputedWithProperties(name, macro) {
|
3700
|
+
Ember.computed[name] = function() {
|
3701
|
+
var properties = a_slice.call(arguments);
|
3702
|
+
|
3703
|
+
var computed = Ember.computed(function() {
|
3704
|
+
return macro.apply(this, [getProperties(this, properties)]);
|
3705
|
+
});
|
3706
|
+
|
3707
|
+
return computed.property.apply(computed, properties);
|
3708
|
+
};
|
3709
|
+
}
|
3710
|
+
|
3676
3711
|
/**
|
3677
|
-
@method computed.
|
3712
|
+
@method computed.empty
|
3678
3713
|
@for Ember
|
3679
3714
|
@param {String} dependentKey
|
3715
|
+
@return {Ember.ComputedProperty} computed property which negate
|
3716
|
+
the original value for property
|
3680
3717
|
*/
|
3681
|
-
|
3682
|
-
return Ember.
|
3683
|
-
|
3684
|
-
|
3685
|
-
|
3718
|
+
registerComputed('empty', function(dependentKey) {
|
3719
|
+
return Ember.isEmpty(get(this, dependentKey));
|
3720
|
+
});
|
3721
|
+
|
3722
|
+
/**
|
3723
|
+
@method computed.notEmpty
|
3724
|
+
@for Ember
|
3725
|
+
@param {String} dependentKey
|
3726
|
+
@return {Ember.ComputedProperty} computed property which returns true if
|
3727
|
+
original value for property is not empty.
|
3728
|
+
*/
|
3729
|
+
registerComputed('notEmpty', function(dependentKey) {
|
3730
|
+
return !Ember.isEmpty(get(this, dependentKey));
|
3731
|
+
});
|
3686
3732
|
|
3687
3733
|
/**
|
3688
3734
|
@method computed.none
|
3689
3735
|
@for Ember
|
3690
3736
|
@param {String} dependentKey
|
3737
|
+
@return {Ember.ComputedProperty} computed property which
|
3738
|
+
rturns true if original value for property is null or undefined.
|
3691
3739
|
*/
|
3692
|
-
|
3693
|
-
return Ember.
|
3694
|
-
|
3695
|
-
return Ember.isNone(val);
|
3696
|
-
});
|
3697
|
-
};
|
3740
|
+
registerComputed('none', function(dependentKey) {
|
3741
|
+
return Ember.isNone(get(this, dependentKey));
|
3742
|
+
});
|
3698
3743
|
|
3699
3744
|
/**
|
3700
|
-
@method computed.
|
3745
|
+
@method computed.not
|
3701
3746
|
@for Ember
|
3702
3747
|
@param {String} dependentKey
|
3748
|
+
@return {Ember.ComputedProperty} computed property which returns
|
3749
|
+
inverse of the original value for property
|
3703
3750
|
*/
|
3704
|
-
|
3705
|
-
return
|
3706
|
-
|
3707
|
-
return Ember.isEmpty(val);
|
3708
|
-
});
|
3709
|
-
};
|
3751
|
+
registerComputed('not', function(dependentKey) {
|
3752
|
+
return !get(this, dependentKey);
|
3753
|
+
});
|
3710
3754
|
|
3711
3755
|
/**
|
3712
3756
|
@method computed.bool
|
3713
3757
|
@for Ember
|
3714
3758
|
@param {String} dependentKey
|
3759
|
+
@return {Ember.ComputedProperty} computed property which convert
|
3760
|
+
to boolean the original value for property
|
3715
3761
|
*/
|
3716
|
-
|
3717
|
-
return
|
3718
|
-
|
3719
|
-
});
|
3720
|
-
};
|
3762
|
+
registerComputed('bool', function(dependentKey) {
|
3763
|
+
return !!get(this, dependentKey);
|
3764
|
+
});
|
3721
3765
|
|
3722
3766
|
/**
|
3723
|
-
@method computed.
|
3767
|
+
@method computed.match
|
3768
|
+
@for Ember
|
3769
|
+
@param {String} dependentKey
|
3770
|
+
@param {RegExp} regexp
|
3771
|
+
@return {Ember.ComputedProperty} computed property which match
|
3772
|
+
the original value for property against a given RegExp
|
3773
|
+
*/
|
3774
|
+
registerComputed('match', function(dependentKey, regexp) {
|
3775
|
+
var value = get(this, dependentKey);
|
3776
|
+
return typeof value === 'string' ? !!value.match(regexp) : false;
|
3777
|
+
});
|
3778
|
+
|
3779
|
+
/**
|
3780
|
+
@method computed.equal
|
3781
|
+
@for Ember
|
3782
|
+
@param {String} dependentKey
|
3783
|
+
@param {String|Number|Object} value
|
3784
|
+
@return {Ember.ComputedProperty} computed property which returns true if
|
3785
|
+
the original value for property is equal to the given value.
|
3786
|
+
*/
|
3787
|
+
registerComputed('equal', function(dependentKey, value) {
|
3788
|
+
return get(this, dependentKey) === value;
|
3789
|
+
});
|
3790
|
+
|
3791
|
+
/**
|
3792
|
+
@method computed.gt
|
3793
|
+
@for Ember
|
3794
|
+
@param {String} dependentKey
|
3795
|
+
@param {Number} value
|
3796
|
+
@return {Ember.ComputedProperty} computed property which returns true if
|
3797
|
+
the original value for property is greater then given value.
|
3798
|
+
*/
|
3799
|
+
registerComputed('gt', function(dependentKey, value) {
|
3800
|
+
return get(this, dependentKey) > value;
|
3801
|
+
});
|
3802
|
+
|
3803
|
+
/**
|
3804
|
+
@method computed.gte
|
3805
|
+
@for Ember
|
3806
|
+
@param {String} dependentKey
|
3807
|
+
@param {Number} value
|
3808
|
+
@return {Ember.ComputedProperty} computed property which returns true if
|
3809
|
+
the original value for property is greater or equal then given value.
|
3810
|
+
*/
|
3811
|
+
registerComputed('gte', function(dependentKey, value) {
|
3812
|
+
return get(this, dependentKey) >= value;
|
3813
|
+
});
|
3814
|
+
|
3815
|
+
/**
|
3816
|
+
@method computed.lt
|
3817
|
+
@for Ember
|
3818
|
+
@param {String} dependentKey
|
3819
|
+
@param {Number} value
|
3820
|
+
@return {Ember.ComputedProperty} computed property which returns true if
|
3821
|
+
the original value for property is less then given value.
|
3822
|
+
*/
|
3823
|
+
registerComputed('lt', function(dependentKey, value) {
|
3824
|
+
return get(this, dependentKey) < value;
|
3825
|
+
});
|
3826
|
+
|
3827
|
+
/**
|
3828
|
+
@method computed.lte
|
3829
|
+
@for Ember
|
3830
|
+
@param {String} dependentKey
|
3831
|
+
@param {Number} value
|
3832
|
+
@return {Ember.ComputedProperty} computed property which returns true if
|
3833
|
+
the original value for property is less or equal then given value.
|
3834
|
+
*/
|
3835
|
+
registerComputed('lte', function(dependentKey, value) {
|
3836
|
+
return get(this, dependentKey) <= value;
|
3837
|
+
});
|
3838
|
+
|
3839
|
+
/**
|
3840
|
+
@method computed.and
|
3841
|
+
@for Ember
|
3842
|
+
@param {String} dependentKey, [dependentKey...]
|
3843
|
+
@return {Ember.ComputedProperty} computed property which peforms
|
3844
|
+
a logical `and` on the values of all the original values for properties.
|
3845
|
+
*/
|
3846
|
+
registerComputedWithProperties('and', function(properties) {
|
3847
|
+
for (var key in properties) {
|
3848
|
+
if (properties.hasOwnProperty(key) && !properties[key]) {
|
3849
|
+
return false;
|
3850
|
+
}
|
3851
|
+
}
|
3852
|
+
return true;
|
3853
|
+
});
|
3854
|
+
|
3855
|
+
/**
|
3856
|
+
@method computed.or
|
3857
|
+
@for Ember
|
3858
|
+
@param {String} dependentKey, [dependentKey...]
|
3859
|
+
@return {Ember.ComputedProperty} computed property which peforms
|
3860
|
+
a logical `or` on the values of all the original values for properties.
|
3861
|
+
*/
|
3862
|
+
registerComputedWithProperties('or', function(properties) {
|
3863
|
+
for (var key in properties) {
|
3864
|
+
if (properties.hasOwnProperty(key) && properties[key]) {
|
3865
|
+
return true;
|
3866
|
+
}
|
3867
|
+
}
|
3868
|
+
return false;
|
3869
|
+
});
|
3870
|
+
|
3871
|
+
/**
|
3872
|
+
@method computed.any
|
3873
|
+
@for Ember
|
3874
|
+
@param {String} dependentKey, [dependentKey...]
|
3875
|
+
@return {Ember.ComputedProperty} computed property which returns
|
3876
|
+
the first trouthy value of given list of properties.
|
3877
|
+
*/
|
3878
|
+
registerComputedWithProperties('any', function(properties) {
|
3879
|
+
for (var key in properties) {
|
3880
|
+
if (properties.hasOwnProperty(key) && properties[key]) {
|
3881
|
+
return properties[key];
|
3882
|
+
}
|
3883
|
+
}
|
3884
|
+
return null;
|
3885
|
+
});
|
3886
|
+
|
3887
|
+
/**
|
3888
|
+
@method computed.map
|
3724
3889
|
@for Ember
|
3890
|
+
@param {String} dependentKey, [dependentKey...]
|
3891
|
+
@return {Ember.ComputedProperty} computed property which maps
|
3892
|
+
values of all passed properties in to an array.
|
3893
|
+
*/
|
3894
|
+
registerComputedWithProperties('map', function(properties) {
|
3895
|
+
var res = [];
|
3896
|
+
for (var key in properties) {
|
3897
|
+
if (properties.hasOwnProperty(key)) {
|
3898
|
+
if (Ember.isNone(properties[key])) {
|
3899
|
+
res.push(null);
|
3900
|
+
} else {
|
3901
|
+
res.push(properties[key]);
|
3902
|
+
}
|
3903
|
+
}
|
3904
|
+
}
|
3905
|
+
return res;
|
3906
|
+
});
|
3725
3907
|
|
3908
|
+
/**
|
3909
|
+
@method computed.alias
|
3910
|
+
@for Ember
|
3726
3911
|
@param {String} dependentKey
|
3912
|
+
@return {Ember.ComputedProperty} computed property which creates an
|
3913
|
+
alias to the original value for property.
|
3727
3914
|
*/
|
3728
3915
|
Ember.computed.alias = function(dependentKey) {
|
3729
3916
|
return Ember.computed(dependentKey, function(key, value){
|
@@ -3736,6 +3923,23 @@ Ember.computed.alias = function(dependentKey) {
|
|
3736
3923
|
});
|
3737
3924
|
};
|
3738
3925
|
|
3926
|
+
/**
|
3927
|
+
@method computed.defaultTo
|
3928
|
+
@for Ember
|
3929
|
+
@param {String} defaultPath
|
3930
|
+
@return {Ember.ComputedProperty} computed property which acts like
|
3931
|
+
a standard getter and setter, but defaults to the value from `defaultPath`.
|
3932
|
+
*/
|
3933
|
+
Ember.computed.defaultTo = function(defaultPath) {
|
3934
|
+
return Ember.computed(function(key, newValue, cachedValue) {
|
3935
|
+
var result;
|
3936
|
+
if (arguments.length === 1) {
|
3937
|
+
return cachedValue != null ? cachedValue : get(this, defaultPath);
|
3938
|
+
}
|
3939
|
+
return newValue != null ? newValue : get(this, defaultPath);
|
3940
|
+
});
|
3941
|
+
};
|
3942
|
+
|
3739
3943
|
})();
|
3740
3944
|
|
3741
3945
|
|
@@ -4568,8 +4772,7 @@ function invokeLaterTimers() {
|
|
4568
4772
|
If you pass a string it will be resolved on the
|
4569
4773
|
target at the time the method is invoked.
|
4570
4774
|
@param {Object} [args*] Optional arguments to pass to the timeout.
|
4571
|
-
@param {Number} wait
|
4572
|
-
Number of milliseconds to wait.
|
4775
|
+
@param {Number} wait Number of milliseconds to wait.
|
4573
4776
|
@return {String} a string you can use to cancel the timer in
|
4574
4777
|
{{#crossLink "Ember/run.cancel"}}{{/crossLink}} later.
|
4575
4778
|
*/
|
@@ -4691,15 +4894,54 @@ Ember.run.scheduleOnce = function(queue, target, method, args) {
|
|
4691
4894
|
};
|
4692
4895
|
|
4693
4896
|
/**
|
4694
|
-
Schedules an item to run
|
4695
|
-
|
4897
|
+
Schedules an item to run from within a separate run loop, after
|
4898
|
+
control has been returned to the system. This is equivalent to calling
|
4899
|
+
`Ember.run.later` with a wait time of 1ms.
|
4696
4900
|
|
4697
4901
|
```javascript
|
4698
4902
|
Ember.run.next(myContext, function(){
|
4699
|
-
// code to be executed in the next
|
4903
|
+
// code to be executed in the next run loop, which will be scheduled after the current one
|
4700
4904
|
});
|
4701
4905
|
```
|
4702
4906
|
|
4907
|
+
Multiple operations scheduled with `Ember.run.next` will coalesce
|
4908
|
+
into the same later run loop, along with any other operations
|
4909
|
+
scheduled by `Ember.run.later` that expire right around the same
|
4910
|
+
time that `Ember.run.next` operations will fire.
|
4911
|
+
|
4912
|
+
Note that there are often alternatives to using `Ember.run.next`.
|
4913
|
+
For instance, if you'd like to schedule an operation to happen
|
4914
|
+
after all DOM element operations have completed within the current
|
4915
|
+
run loop, you can make use of the `afterRender` run loop queue (added
|
4916
|
+
by the `ember-views` package, along with the preceding `render` queue
|
4917
|
+
where all the DOM element operations happen). Example:
|
4918
|
+
|
4919
|
+
```javascript
|
4920
|
+
App.MyCollectionView = Ember.CollectionView.extend({
|
4921
|
+
didInsertElement: function() {
|
4922
|
+
Ember.run.scheduleOnce('afterRender', this, 'processChildElements');
|
4923
|
+
},
|
4924
|
+
processChildElements: function() {
|
4925
|
+
// ... do something with collectionView's child view
|
4926
|
+
// elements after they've finished rendering, which
|
4927
|
+
// can't be done within the CollectionView's
|
4928
|
+
// `didInsertElement` hook because that gets run
|
4929
|
+
// before the child elements have been added to the DOM.
|
4930
|
+
}
|
4931
|
+
});
|
4932
|
+
```
|
4933
|
+
|
4934
|
+
One benefit of the above approach compared to using `Ember.run.next` is
|
4935
|
+
that you will be able to perform DOM/CSS operations before unprocessed
|
4936
|
+
elements are rendered to the screen, which may prevent flickering or
|
4937
|
+
other artifacts caused by delaying processing until after rendering.
|
4938
|
+
|
4939
|
+
The other major benefit to the above approach is that `Ember.run.next`
|
4940
|
+
introduces an element of non-determinism, which can make things much
|
4941
|
+
harder to test, due to its reliance on `setTimeout`; it's much harder
|
4942
|
+
to guarantee the order of scheduled operations when they are scheduled
|
4943
|
+
outside of the current run loop, i.e. with `Ember.run.next`.
|
4944
|
+
|
4703
4945
|
@method next
|
4704
4946
|
@param {Object} [target] target of method to invoke
|
4705
4947
|
@param {Function|String} method The method to invoke.
|
@@ -4866,6 +5108,10 @@ Binding.prototype = {
|
|
4866
5108
|
return this;
|
4867
5109
|
},
|
4868
5110
|
|
5111
|
+
/**
|
5112
|
+
@method toString
|
5113
|
+
@return {String} string representation of binding
|
5114
|
+
*/
|
4869
5115
|
toString: function() {
|
4870
5116
|
var oneWay = this._oneWay ? '[oneWay]' : '';
|
4871
5117
|
return "Ember.Binding<" + guidFor(this) + ">(" + this._from + " -> " + this._to + ")" + oneWay;
|
@@ -6254,7 +6500,7 @@ define("container",
|
|
6254
6500
|
factory = name;
|
6255
6501
|
fullName = type;
|
6256
6502
|
} else {
|
6257
|
-
Ember.deprecate('register("'+type +'", "'+ name+'") is now deprecated in-favour of register("'+type+':'+name+'");',
|
6503
|
+
Ember.deprecate('register("'+type +'", "'+ name+'") is now deprecated in-favour of register("'+type+':'+name+'");', false);
|
6258
6504
|
fullName = type + ":" + name;
|
6259
6505
|
}
|
6260
6506
|
|
@@ -8002,17 +8248,19 @@ Ember.Enumerable = Ember.Mixin.create({
|
|
8002
8248
|
},
|
8003
8249
|
|
8004
8250
|
/**
|
8005
|
-
Returns a copy of the array with all null elements removed.
|
8251
|
+
Returns a copy of the array with all null and undefined elements removed.
|
8006
8252
|
|
8007
8253
|
```javascript
|
8008
|
-
var arr = ["a", null, "c",
|
8254
|
+
var arr = ["a", null, "c", undefined];
|
8009
8255
|
arr.compact(); // ["a", "c"]
|
8010
8256
|
```
|
8011
8257
|
|
8012
8258
|
@method compact
|
8013
|
-
@return {Array} the array without null elements.
|
8259
|
+
@return {Array} the array without null and undefined elements.
|
8014
8260
|
*/
|
8015
|
-
compact: function() {
|
8261
|
+
compact: function() {
|
8262
|
+
return this.filter(function(value) { return value != null; });
|
8263
|
+
},
|
8016
8264
|
|
8017
8265
|
/**
|
8018
8266
|
Returns a new enumerable that excludes the passed value. The default
|
@@ -8067,6 +8315,7 @@ Ember.Enumerable = Ember.Mixin.create({
|
|
8067
8315
|
|
8068
8316
|
@property []
|
8069
8317
|
@type Ember.Array
|
8318
|
+
@return this
|
8070
8319
|
*/
|
8071
8320
|
'[]': Ember.computed(function(key, value) {
|
8072
8321
|
return this;
|
@@ -8083,6 +8332,7 @@ Ember.Enumerable = Ember.Mixin.create({
|
|
8083
8332
|
@method addEnumerableObserver
|
8084
8333
|
@param {Object} target
|
8085
8334
|
@param {Hash} [opts]
|
8335
|
+
@return this
|
8086
8336
|
*/
|
8087
8337
|
addEnumerableObserver: function(target, opts) {
|
8088
8338
|
var willChange = (opts && opts.willChange) || 'enumerableWillChange',
|
@@ -8102,6 +8352,7 @@ Ember.Enumerable = Ember.Mixin.create({
|
|
8102
8352
|
@method removeEnumerableObserver
|
8103
8353
|
@param {Object} target
|
8104
8354
|
@param {Hash} [opts]
|
8355
|
+
@return this
|
8105
8356
|
*/
|
8106
8357
|
removeEnumerableObserver: function(target, opts) {
|
8107
8358
|
var willChange = (opts && opts.willChange) || 'enumerableWillChange',
|
@@ -8291,6 +8542,7 @@ Ember.Array = Ember.Mixin.create(Ember.Enumerable, /** @scope Ember.Array.protot
|
|
8291
8542
|
|
8292
8543
|
@method objectAt
|
8293
8544
|
@param {Number} idx The index of the item to return.
|
8545
|
+
@return {any} item at index or undefined
|
8294
8546
|
*/
|
8295
8547
|
objectAt: function(idx) {
|
8296
8548
|
if ((idx < 0) || (idx>=get(this, 'length'))) return undefined ;
|
@@ -8308,6 +8560,7 @@ Ember.Array = Ember.Mixin.create(Ember.Enumerable, /** @scope Ember.Array.protot
|
|
8308
8560
|
|
8309
8561
|
@method objectsAt
|
8310
8562
|
@param {Array} indexes An array of indexes of items to return.
|
8563
|
+
@return {Array}
|
8311
8564
|
*/
|
8312
8565
|
objectsAt: function(indexes) {
|
8313
8566
|
var self = this;
|
@@ -8327,6 +8580,7 @@ Ember.Array = Ember.Mixin.create(Ember.Enumerable, /** @scope Ember.Array.protot
|
|
8327
8580
|
This property overrides the default property defined in `Ember.Enumerable`.
|
8328
8581
|
|
8329
8582
|
@property []
|
8583
|
+
@return this
|
8330
8584
|
*/
|
8331
8585
|
'[]': Ember.computed(function(key, value) {
|
8332
8586
|
if (value !== undefined) this.replace(0, get(this, 'length'), value) ;
|
@@ -9044,6 +9298,7 @@ Ember.MutableArray = Ember.Mixin.create(Ember.Array, Ember.MutableEnumerable,
|
|
9044
9298
|
@method insertAt
|
9045
9299
|
@param {Number} idx index of insert the object at.
|
9046
9300
|
@param {Object} object object to insert
|
9301
|
+
@return this
|
9047
9302
|
*/
|
9048
9303
|
insertAt: function(idx, object) {
|
9049
9304
|
if (idx > get(this, 'length')) throw new Error(OUT_OF_RANGE_EXCEPTION) ;
|
@@ -9097,6 +9352,7 @@ Ember.MutableArray = Ember.Mixin.create(Ember.Array, Ember.MutableEnumerable,
|
|
9097
9352
|
|
9098
9353
|
@method pushObject
|
9099
9354
|
@param {anything} obj object to push
|
9355
|
+
@return {any} the same obj passed as param
|
9100
9356
|
*/
|
9101
9357
|
pushObject: function(obj) {
|
9102
9358
|
this.insertAt(get(this, 'length'), obj) ;
|
@@ -9176,6 +9432,7 @@ Ember.MutableArray = Ember.Mixin.create(Ember.Array, Ember.MutableEnumerable,
|
|
9176
9432
|
|
9177
9433
|
@method unshiftObject
|
9178
9434
|
@param {anything} obj object to unshift
|
9435
|
+
@return {any} the same obj passed as param
|
9179
9436
|
*/
|
9180
9437
|
unshiftObject: function(obj) {
|
9181
9438
|
this.insertAt(0, obj) ;
|
@@ -9902,6 +10159,7 @@ Ember.Evented = Ember.Mixin.create({
|
|
9902
10159
|
@param {String} name The name of the event
|
9903
10160
|
@param {Object} [target] The "this" binding for the callback
|
9904
10161
|
@param {Function} method The callback to execute
|
10162
|
+
@return this
|
9905
10163
|
*/
|
9906
10164
|
on: function(name, target, method) {
|
9907
10165
|
Ember.addListener(this, name, target, method);
|
@@ -9921,6 +10179,7 @@ Ember.Evented = Ember.Mixin.create({
|
|
9921
10179
|
@param {String} name The name of the event
|
9922
10180
|
@param {Object} [target] The "this" binding for the callback
|
9923
10181
|
@param {Function} method The callback to execute
|
10182
|
+
@return this
|
9924
10183
|
*/
|
9925
10184
|
one: function(name, target, method) {
|
9926
10185
|
if (!method) {
|
@@ -9970,6 +10229,7 @@ Ember.Evented = Ember.Mixin.create({
|
|
9970
10229
|
@param {String} name The name of the event
|
9971
10230
|
@param {Object} target The target of the subscription
|
9972
10231
|
@param {Function} method The function of the subscription
|
10232
|
+
@return this
|
9973
10233
|
*/
|
9974
10234
|
off: function(name, target, method) {
|
9975
10235
|
Ember.removeListener(this, name, target, method);
|
@@ -10326,12 +10586,22 @@ CoreObject.PrototypeMixin = Mixin.create({
|
|
10326
10586
|
concatenatedProperties: null,
|
10327
10587
|
|
10328
10588
|
/**
|
10589
|
+
Destroyed object property flag.
|
10590
|
+
|
10591
|
+
if this property is `true` the observers and bindings were already
|
10592
|
+
removed by the effect of calling the `destroy()` method.
|
10593
|
+
|
10329
10594
|
@property isDestroyed
|
10330
10595
|
@default false
|
10331
10596
|
*/
|
10332
10597
|
isDestroyed: false,
|
10333
10598
|
|
10334
10599
|
/**
|
10600
|
+
Destruction scheduled flag. The `destroy()` method has been called.
|
10601
|
+
|
10602
|
+
The object stays intact until the end of the run loop at which point
|
10603
|
+
the `isDestroyed` flag is set.
|
10604
|
+
|
10335
10605
|
@property isDestroying
|
10336
10606
|
@default false
|
10337
10607
|
*/
|
@@ -12789,7 +13059,7 @@ Ember Runtime
|
|
12789
13059
|
*/
|
12790
13060
|
|
12791
13061
|
var jQuery = Ember.imports.jQuery;
|
12792
|
-
Ember.assert("Ember Views require jQuery 1.8 or
|
13062
|
+
Ember.assert("Ember Views require jQuery 1.8, 1.9 or 2.0", jQuery && (jQuery().jquery.match(/^((1\.(8|9))|2.0)(\.\d+)?(pre|rc\d?)?/) || Ember.ENV.FORCE_JQUERY));
|
12793
13063
|
|
12794
13064
|
/**
|
12795
13065
|
Alias for jQuery
|
@@ -12931,9 +13201,11 @@ var setInnerHTML = function(element, html) {
|
|
12931
13201
|
if (canSetInnerHTML(tagName)) {
|
12932
13202
|
setInnerHTMLWithoutFix(element, html);
|
12933
13203
|
} else {
|
12934
|
-
|
13204
|
+
// Firefox versions < 11 do not have support for element.outerHTML.
|
13205
|
+
var outerHTML = element.outerHTML || new XMLSerializer().serializeToString(element);
|
13206
|
+
Ember.assert("Can't set innerHTML on "+element.tagName+" in this browser", outerHTML);
|
12935
13207
|
|
12936
|
-
var startTag =
|
13208
|
+
var startTag = outerHTML.match(new RegExp("<"+tagName+"([^>]*)>", 'i'))[0],
|
12937
13209
|
endTag = '</'+tagName+'>';
|
12938
13210
|
|
12939
13211
|
var wrapper = document.createElement('div');
|
@@ -13416,7 +13688,9 @@ Ember._RenderBuffer.prototype =
|
|
13416
13688
|
*/
|
13417
13689
|
string: function() {
|
13418
13690
|
if (this._element) {
|
13419
|
-
|
13691
|
+
// Firefox versions < 11 do not have support for element.outerHTML.
|
13692
|
+
return this.element().outerHTML ||
|
13693
|
+
new XMLSerializer().serializeToString(this.element());
|
13420
13694
|
} else {
|
13421
13695
|
return this.innerString();
|
13422
13696
|
}
|
@@ -15288,9 +15562,9 @@ Ember.View = Ember.CoreView.extend(
|
|
15288
15562
|
willInsertElement: Ember.K,
|
15289
15563
|
|
15290
15564
|
/**
|
15291
|
-
Called when the element of the view has been inserted into the DOM
|
15292
|
-
Override this function to do any
|
15293
|
-
document body.
|
15565
|
+
Called when the element of the view has been inserted into the DOM
|
15566
|
+
or after the view was re-rendered. Override this function to do any
|
15567
|
+
set up that requires an element in the document body.
|
15294
15568
|
|
15295
15569
|
@event didInsertElement
|
15296
15570
|
*/
|
@@ -15891,14 +16165,19 @@ Ember.View = Ember.CoreView.extend(
|
|
15891
16165
|
observer = target;
|
15892
16166
|
target = null;
|
15893
16167
|
}
|
16168
|
+
|
15894
16169
|
var view = this,
|
15895
16170
|
stateCheckedObserver = function(){
|
15896
16171
|
view.currentState.invokeObserver(this, observer);
|
16172
|
+
},
|
16173
|
+
scheduledObserver = function() {
|
16174
|
+
Ember.run.scheduleOnce('render', this, stateCheckedObserver);
|
15897
16175
|
};
|
15898
|
-
|
16176
|
+
|
16177
|
+
Ember.addObserver(root, path, target, scheduledObserver);
|
15899
16178
|
|
15900
16179
|
this.one('willClearRender', function() {
|
15901
|
-
Ember.removeObserver(root, path, target,
|
16180
|
+
Ember.removeObserver(root, path, target, scheduledObserver);
|
15902
16181
|
});
|
15903
16182
|
}
|
15904
16183
|
|
@@ -18976,7 +19255,7 @@ if(!Handlebars && typeof require === 'function') {
|
|
18976
19255
|
Handlebars = require('handlebars');
|
18977
19256
|
}
|
18978
19257
|
|
18979
|
-
Ember.assert("Ember Handlebars requires Handlebars 1.0.0-rc.3 or greater", Handlebars && Handlebars.
|
19258
|
+
Ember.assert("Ember Handlebars requires Handlebars 1.0.0-rc.3 or greater. Include a SCRIPT tag in the HTML HEAD linking to the Handlebars file before you link to Ember.", Handlebars && Handlebars.COMPILER_REVISION === 2);
|
18980
19259
|
|
18981
19260
|
/**
|
18982
19261
|
Prepares the Handlebars templating library for use inside Ember's view
|
@@ -19447,10 +19726,10 @@ Ember.Handlebars.registerBoundHelper = function(name, fn) {
|
|
19447
19726
|
|
19448
19727
|
view.appendChild(bindView);
|
19449
19728
|
|
19450
|
-
view.registerObserver(pathRoot, path, bindView,
|
19729
|
+
view.registerObserver(pathRoot, path, bindView, bindView.rerender);
|
19451
19730
|
|
19452
19731
|
for (var i=0, l=dependentKeys.length; i<l; i++) {
|
19453
|
-
view.registerObserver(pathRoot, path + '.' + dependentKeys[i], bindView,
|
19732
|
+
view.registerObserver(pathRoot, path + '.' + dependentKeys[i], bindView, bindView.rerender);
|
19454
19733
|
}
|
19455
19734
|
}
|
19456
19735
|
|
@@ -19514,22 +19793,11 @@ function evaluateMultiPropertyBoundHelper(context, fn, normalizedProperties, opt
|
|
19514
19793
|
// Observe each property.
|
19515
19794
|
for (loc = 0, len = watchedProperties.length; loc < len; ++loc) {
|
19516
19795
|
property = watchedProperties[loc];
|
19517
|
-
view.registerObserver(property.root, property.path, bindView,
|
19796
|
+
view.registerObserver(property.root, property.path, bindView, bindView.rerender);
|
19518
19797
|
}
|
19519
19798
|
|
19520
19799
|
}
|
19521
19800
|
|
19522
|
-
/**
|
19523
|
-
@private
|
19524
|
-
|
19525
|
-
An observer function used with bound helpers which
|
19526
|
-
will schedule a re-render of the _SimpleHandlebarsView
|
19527
|
-
connected with the helper.
|
19528
|
-
*/
|
19529
|
-
function rerenderBoundHelperView() {
|
19530
|
-
Ember.run.scheduleOnce('render', this, 'rerender');
|
19531
|
-
}
|
19532
|
-
|
19533
19801
|
/**
|
19534
19802
|
@private
|
19535
19803
|
|
@@ -20572,17 +20840,13 @@ EmberHandlebars.registerHelper('bindAttr', function(options) {
|
|
20572
20840
|
Ember.View.applyAttributeBindings(elem, attr, result);
|
20573
20841
|
};
|
20574
20842
|
|
20575
|
-
invoker = function() {
|
20576
|
-
Ember.run.scheduleOnce('render', observer);
|
20577
|
-
};
|
20578
|
-
|
20579
20843
|
// Add an observer to the view for when the property changes.
|
20580
20844
|
// When the observer fires, find the element using the
|
20581
20845
|
// unique data id and update the attribute to the new value.
|
20582
20846
|
// Note: don't add observer when path is 'this' or path
|
20583
20847
|
// is whole keyword e.g. {{#each x in list}} ... {{bindAttr attr="x"}}
|
20584
20848
|
if (path !== 'this' && !(normalized.isKeyword && normalized.path === '' )) {
|
20585
|
-
view.registerObserver(normalized.root, normalized.path,
|
20849
|
+
view.registerObserver(normalized.root, normalized.path, observer);
|
20586
20850
|
}
|
20587
20851
|
|
20588
20852
|
// if this changes, also change the logic in ember-views/lib/views/view.js
|
@@ -20696,12 +20960,8 @@ EmberHandlebars.bindClasses = function(context, classBindings, view, bindAttrId,
|
|
20696
20960
|
}
|
20697
20961
|
};
|
20698
20962
|
|
20699
|
-
invoker = function() {
|
20700
|
-
Ember.run.scheduleOnce('render', observer);
|
20701
|
-
};
|
20702
|
-
|
20703
20963
|
if (path !== '' && path !== 'this') {
|
20704
|
-
view.registerObserver(pathRoot, path,
|
20964
|
+
view.registerObserver(pathRoot, path, observer);
|
20705
20965
|
}
|
20706
20966
|
|
20707
20967
|
// We've already setup the observer; now we just need to figure out the
|
@@ -21752,11 +22012,12 @@ Ember.Handlebars.registerHelper('each', function(path, options) {
|
|
21752
22012
|
*/
|
21753
22013
|
|
21754
22014
|
Ember.Handlebars.registerHelper('template', function(name, options) {
|
21755
|
-
var
|
22015
|
+
var view = options.data.view,
|
22016
|
+
template = view.templateForName(name);
|
21756
22017
|
|
21757
22018
|
Ember.assert("Unable to find template with name '"+name+"'.", !!template);
|
21758
22019
|
|
21759
|
-
|
22020
|
+
template(this, { data: options.data });
|
21760
22021
|
});
|
21761
22022
|
|
21762
22023
|
})();
|
@@ -21771,7 +22032,7 @@ Ember.Handlebars.registerHelper('template', function(name, options) {
|
|
21771
22032
|
|
21772
22033
|
/**
|
21773
22034
|
`partial` renders a template directly using the current context.
|
21774
|
-
If needed the context can be set using the `{{#with foo}}` helper.
|
22035
|
+
If needed the context can be set using the `{{#with foo}}` helper.
|
21775
22036
|
|
21776
22037
|
```html
|
21777
22038
|
<script type="text/x-handlebars" data-template-name="header_bar">
|
@@ -21800,10 +22061,10 @@ Ember.Handlebars.registerHelper('partial', function(name, options) {
|
|
21800
22061
|
|
21801
22062
|
nameParts[nameParts.length - 1] = "_" + lastPart;
|
21802
22063
|
|
21803
|
-
var
|
21804
|
-
|
21805
|
-
|
21806
|
-
deprecatedTemplate =
|
22064
|
+
var view = options.data.view,
|
22065
|
+
underscoredName = nameParts.join("/"),
|
22066
|
+
template = view.templateForName(underscoredName),
|
22067
|
+
deprecatedTemplate = view.templateForName(name);
|
21807
22068
|
|
21808
22069
|
Ember.deprecate("You tried to render the partial " + name + ", which should be at '" + underscoredName + "', but Ember found '" + name + "'. Please use a leading underscore in your partials", template);
|
21809
22070
|
Ember.assert("Unable to find partial with name '"+name+"'.", template || deprecatedTemplate);
|
@@ -21957,7 +22218,7 @@ Ember.Checkbox = Ember.View.extend({
|
|
21957
22218
|
|
21958
22219
|
tagName: 'input',
|
21959
22220
|
|
21960
|
-
attributeBindings: ['type', 'checked', 'disabled', 'tabindex'],
|
22221
|
+
attributeBindings: ['type', 'checked', 'disabled', 'tabindex', 'name'],
|
21961
22222
|
|
21962
22223
|
type: "checkbox",
|
21963
22224
|
checked: false,
|
@@ -22089,7 +22350,7 @@ Ember.TextField = Ember.View.extend(Ember.TextSupport,
|
|
22089
22350
|
|
22090
22351
|
classNames: ['ember-text-field'],
|
22091
22352
|
tagName: "input",
|
22092
|
-
attributeBindings: ['type', 'value', 'size', 'pattern'],
|
22353
|
+
attributeBindings: ['type', 'value', 'size', 'pattern', 'name'],
|
22093
22354
|
|
22094
22355
|
/**
|
22095
22356
|
The `value` attribute of the input element. As the user inputs text, this
|
@@ -22349,7 +22610,7 @@ Ember.TextArea = Ember.View.extend(Ember.TextSupport, {
|
|
22349
22610
|
classNames: ['ember-text-area'],
|
22350
22611
|
|
22351
22612
|
tagName: "textarea",
|
22352
|
-
attributeBindings: ['rows', 'cols'],
|
22613
|
+
attributeBindings: ['rows', 'cols', 'name'],
|
22353
22614
|
rows: null,
|
22354
22615
|
cols: null,
|
22355
22616
|
|
@@ -22674,7 +22935,7 @@ function program3(depth0,data) {
|
|
22674
22935
|
return buffer;
|
22675
22936
|
|
22676
22937
|
}),
|
22677
|
-
attributeBindings: ['multiple', 'disabled', 'tabindex'],
|
22938
|
+
attributeBindings: ['multiple', 'disabled', 'tabindex', 'name'],
|
22678
22939
|
|
22679
22940
|
/**
|
22680
22941
|
The `multiple` attribute of the select element. Indicates whether multiple
|