ember-source 1.0.0.rc3.4 → 1.0.0.rc3.5
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of ember-source might be problematic. Click here for more details.
- data/dist/ember-1.0.0-rc.3.1.js +28566 -0
- data/dist/ember-1.0.0-rc.3.1.min.js +21 -0
- data/dist/ember-1.0.0-rc.3.1.prod.js +28360 -0
- data/dist/ember-data-deps.js +186 -589
- data/dist/ember-data-deps.min.js +5 -5
- data/dist/ember-data-deps.prod.js +181 -584
- data/dist/ember-debug.js +2 -2
- data/dist/ember-old-router.js +277 -718
- data/dist/ember-old-router.min.js +8 -8
- data/dist/ember-old-router.prod.js +271 -711
- data/dist/ember-runtime.js +186 -589
- data/dist/ember-runtime.min.js +5 -5
- data/dist/ember-runtime.prod.js +181 -584
- data/dist/ember-spade.js +1 -1
- data/dist/ember-template-compiler.js +4 -20
- data/dist/ember-template-compiler.min.js +3 -3
- data/dist/ember-template-compiler.prod.js +2 -18
- data/dist/ember-tests.js +1 -1
- data/dist/ember.js +469 -1373
- data/dist/ember.min.js +9 -9
- data/dist/ember.prod.js +460 -1362
- data/lib/ember/source.rb +0 -2
- metadata +14 -8
- data/VERSION +0 -1
- data/lib/ember/version.rb +0 -3
data/dist/ember-debug.js
CHANGED
data/dist/ember-old-router.js
CHANGED
@@ -1,5 +1,5 @@
|
|
1
|
-
// Version: v1.0.0-rc.3-
|
2
|
-
// Last commit:
|
1
|
+
// Version: v1.0.0-rc.3-2-g85bfdbf
|
2
|
+
// Last commit: 85bfdbf (2013-07-25 20:16:20 -0400)
|
3
3
|
|
4
4
|
|
5
5
|
(function() {
|
@@ -151,8 +151,8 @@ Ember.deprecateFunc = function(message, func) {
|
|
151
151
|
|
152
152
|
})();
|
153
153
|
|
154
|
-
// Version: v1.0.0-rc.3-
|
155
|
-
// Last commit:
|
154
|
+
// Version: v1.0.0-rc.3-2-g85bfdbf
|
155
|
+
// Last commit: 85bfdbf (2013-07-25 20:16:20 -0400)
|
156
156
|
|
157
157
|
|
158
158
|
(function() {
|
@@ -467,7 +467,7 @@ Ember.none = Ember.deprecateFunc("Ember.none is deprecated. Please use Ember.isN
|
|
467
467
|
@return {Boolean}
|
468
468
|
*/
|
469
469
|
Ember.isEmpty = function(obj) {
|
470
|
-
return
|
470
|
+
return obj === null || obj === undefined || (obj.length === 0 && typeof obj !== 'function') || (typeof obj === 'object' && Ember.get(obj, 'length') === 0);
|
471
471
|
};
|
472
472
|
Ember.empty = Ember.deprecateFunc("Ember.empty is deprecated. Please use Ember.isEmpty instead.", Ember.isEmpty) ;
|
473
473
|
|
@@ -500,13 +500,6 @@ var platform = Ember.platform = {};
|
|
500
500
|
*/
|
501
501
|
Ember.create = Object.create;
|
502
502
|
|
503
|
-
// IE8 has Object.create but it couldn't treat property descripters.
|
504
|
-
if (Ember.create) {
|
505
|
-
if (Ember.create({a: 1}, {a: {value: 2}}).a !== 2) {
|
506
|
-
Ember.create = null;
|
507
|
-
}
|
508
|
-
}
|
509
|
-
|
510
503
|
// STUB_OBJECT_CREATE allows us to override other libraries that stub
|
511
504
|
// Object.create different than we would prefer
|
512
505
|
if (!Ember.create || Ember.ENV.STUB_OBJECT_CREATE) {
|
@@ -827,7 +820,7 @@ Ember.guidFor = function guidFor(obj) {
|
|
827
820
|
if (obj === undefined) return "(undefined)";
|
828
821
|
if (obj === null) return "(null)";
|
829
822
|
|
830
|
-
var ret;
|
823
|
+
var cache, ret;
|
831
824
|
var type = typeof obj;
|
832
825
|
|
833
826
|
// Don't allow prototype changes to String etc. to change the guidFor
|
@@ -1228,7 +1221,7 @@ if (needsFinallyFix) {
|
|
1228
1221
|
*/
|
1229
1222
|
if (needsFinallyFix) {
|
1230
1223
|
Ember.tryCatchFinally = function(tryable, catchable, finalizer, binding) {
|
1231
|
-
var result, finalResult, finalError;
|
1224
|
+
var result, finalResult, finalError, finalReturn;
|
1232
1225
|
|
1233
1226
|
binding = binding || this;
|
1234
1227
|
|
@@ -1999,12 +1992,13 @@ get = function get(obj, keyName) {
|
|
1999
1992
|
obj = null;
|
2000
1993
|
}
|
2001
1994
|
|
2002
|
-
|
2003
|
-
|
2004
|
-
if (obj === null || keyName.indexOf('.') !== -1) {
|
1995
|
+
if (!obj || keyName.indexOf('.') !== -1) {
|
1996
|
+
Ember.assert("Cannot call get with '"+ keyName +"' on an undefined object.", obj !== undefined);
|
2005
1997
|
return getPath(obj, keyName);
|
2006
1998
|
}
|
2007
1999
|
|
2000
|
+
Ember.assert("You need to provide an object and key to `get`.", !!obj && keyName);
|
2001
|
+
|
2008
2002
|
var meta = obj[META_KEY], desc = meta && meta.descs[keyName], ret;
|
2009
2003
|
if (desc) {
|
2010
2004
|
return desc.get(obj, keyName);
|
@@ -2076,7 +2070,7 @@ var getPath = Ember._getPath = function(root, path) {
|
|
2076
2070
|
|
2077
2071
|
parts = path.split(".");
|
2078
2072
|
len = parts.length;
|
2079
|
-
for (idx=0; root
|
2073
|
+
for (idx=0; root && idx<len; idx++) {
|
2080
2074
|
root = get(root, parts[idx], true);
|
2081
2075
|
if (root && root.isDestroyed) { return undefined; }
|
2082
2076
|
}
|
@@ -2122,9 +2116,7 @@ Ember.getPath = Ember.deprecateFunc('getPath is deprecated since get now support
|
|
2122
2116
|
|
2123
2117
|
var o_create = Ember.create,
|
2124
2118
|
metaFor = Ember.meta,
|
2125
|
-
META_KEY = Ember.META_KEY
|
2126
|
-
/* listener flags */
|
2127
|
-
ONCE = 1, SUSPENDED = 2;
|
2119
|
+
META_KEY = Ember.META_KEY;
|
2128
2120
|
|
2129
2121
|
/*
|
2130
2122
|
The event system uses a series of nested hashes to store listeners on an
|
@@ -2137,7 +2129,7 @@ var o_create = Ember.create,
|
|
2137
2129
|
{
|
2138
2130
|
listeners: { // variable name: `listenerSet`
|
2139
2131
|
"foo:changed": [ // variable name: `actions`
|
2140
|
-
[target, method,
|
2132
|
+
[target, method, onceFlag, suspendedFlag]
|
2141
2133
|
]
|
2142
2134
|
}
|
2143
2135
|
}
|
@@ -2183,11 +2175,12 @@ function actionsUnion(obj, eventName, otherActions) {
|
|
2183
2175
|
for (var i = actions.length - 1; i >= 0; i--) {
|
2184
2176
|
var target = actions[i][0],
|
2185
2177
|
method = actions[i][1],
|
2186
|
-
|
2178
|
+
once = actions[i][2],
|
2179
|
+
suspended = actions[i][3],
|
2187
2180
|
actionIndex = indexOf(otherActions, target, method);
|
2188
2181
|
|
2189
2182
|
if (actionIndex === -1) {
|
2190
|
-
otherActions.push([target, method,
|
2183
|
+
otherActions.push([target, method, once, suspended]);
|
2191
2184
|
}
|
2192
2185
|
}
|
2193
2186
|
}
|
@@ -2201,13 +2194,14 @@ function actionsDiff(obj, eventName, otherActions) {
|
|
2201
2194
|
for (var i = actions.length - 1; i >= 0; i--) {
|
2202
2195
|
var target = actions[i][0],
|
2203
2196
|
method = actions[i][1],
|
2204
|
-
|
2197
|
+
once = actions[i][2],
|
2198
|
+
suspended = actions[i][3],
|
2205
2199
|
actionIndex = indexOf(otherActions, target, method);
|
2206
2200
|
|
2207
2201
|
if (actionIndex !== -1) { continue; }
|
2208
2202
|
|
2209
|
-
otherActions.push([target, method,
|
2210
|
-
diffActions.push([target, method,
|
2203
|
+
otherActions.push([target, method, once, suspended]);
|
2204
|
+
diffActions.push([target, method, once, suspended]);
|
2211
2205
|
}
|
2212
2206
|
|
2213
2207
|
return diffActions;
|
@@ -2233,14 +2227,11 @@ function addListener(obj, eventName, target, method, once) {
|
|
2233
2227
|
}
|
2234
2228
|
|
2235
2229
|
var actions = actionsFor(obj, eventName),
|
2236
|
-
actionIndex = indexOf(actions, target, method)
|
2237
|
-
flags = 0;
|
2238
|
-
|
2239
|
-
if (once) flags |= ONCE;
|
2230
|
+
actionIndex = indexOf(actions, target, method);
|
2240
2231
|
|
2241
2232
|
if (actionIndex !== -1) { return; }
|
2242
2233
|
|
2243
|
-
actions.push([target, method,
|
2234
|
+
actions.push([target, method, once, undefined]);
|
2244
2235
|
|
2245
2236
|
if ('function' === typeof obj.didAddListener) {
|
2246
2237
|
obj.didAddListener(eventName, target, method);
|
@@ -2267,7 +2258,7 @@ function removeListener(obj, eventName, target, method) {
|
|
2267
2258
|
target = null;
|
2268
2259
|
}
|
2269
2260
|
|
2270
|
-
function _removeListener(target, method) {
|
2261
|
+
function _removeListener(target, method, once) {
|
2271
2262
|
var actions = actionsFor(obj, eventName),
|
2272
2263
|
actionIndex = indexOf(actions, target, method);
|
2273
2264
|
|
@@ -2324,12 +2315,12 @@ function suspendListener(obj, eventName, target, method, callback) {
|
|
2324
2315
|
|
2325
2316
|
if (actionIndex !== -1) {
|
2326
2317
|
action = actions[actionIndex].slice(); // copy it, otherwise we're modifying a shared object
|
2327
|
-
action[
|
2318
|
+
action[3] = true; // mark the action as suspended
|
2328
2319
|
actions[actionIndex] = action; // replace the shared object with our copy
|
2329
2320
|
}
|
2330
2321
|
|
2331
2322
|
function tryable() { return callback.call(target); }
|
2332
|
-
function finalizer() { if (action) { action[
|
2323
|
+
function finalizer() { if (action) { action[3] = undefined; } }
|
2333
2324
|
|
2334
2325
|
return Ember.tryFinally(tryable, finalizer);
|
2335
2326
|
}
|
@@ -2368,7 +2359,7 @@ function suspendListeners(obj, eventNames, target, method, callback) {
|
|
2368
2359
|
|
2369
2360
|
if (actionIndex !== -1) {
|
2370
2361
|
action = actions[actionIndex].slice();
|
2371
|
-
action[
|
2362
|
+
action[3] = true;
|
2372
2363
|
actions[actionIndex] = action;
|
2373
2364
|
suspendedActions.push(action);
|
2374
2365
|
}
|
@@ -2378,7 +2369,7 @@ function suspendListeners(obj, eventNames, target, method, callback) {
|
|
2378
2369
|
|
2379
2370
|
function finalizer() {
|
2380
2371
|
for (i = 0, l = suspendedActions.length; i < l; i++) {
|
2381
|
-
suspendedActions[i][
|
2372
|
+
suspendedActions[i][3] = undefined;
|
2382
2373
|
}
|
2383
2374
|
}
|
2384
2375
|
|
@@ -2428,11 +2419,13 @@ function sendEvent(obj, eventName, params, actions) {
|
|
2428
2419
|
if (!actions) { return; }
|
2429
2420
|
|
2430
2421
|
for (var i = actions.length - 1; i >= 0; i--) { // looping in reverse for once listeners
|
2431
|
-
|
2432
|
-
|
2433
|
-
var target =
|
2434
|
-
|
2435
|
-
|
2422
|
+
if (!actions[i] || actions[i][3] === true) { continue; }
|
2423
|
+
|
2424
|
+
var target = actions[i][0],
|
2425
|
+
method = actions[i][1],
|
2426
|
+
once = actions[i][2];
|
2427
|
+
|
2428
|
+
if (once) { removeListener(obj, eventName, target, method); }
|
2436
2429
|
if (!target) { target = obj; }
|
2437
2430
|
if ('string' === typeof method) { method = target[method]; }
|
2438
2431
|
if (params) {
|
@@ -2512,7 +2505,7 @@ var guidFor = Ember.guidFor,
|
|
2512
2505
|
keyName: keyName,
|
2513
2506
|
eventName: eventName,
|
2514
2507
|
listeners: [
|
2515
|
-
[target, method,
|
2508
|
+
[target, method, onceFlag, suspendedFlag]
|
2516
2509
|
]
|
2517
2510
|
},
|
2518
2511
|
...
|
@@ -2741,11 +2734,11 @@ var endPropertyChanges = Ember.endPropertyChanges = function() {
|
|
2741
2734
|
});
|
2742
2735
|
```
|
2743
2736
|
|
2744
|
-
@method
|
2737
|
+
@method changePropertiess
|
2745
2738
|
@param {Function} callback
|
2746
2739
|
@param [binding]
|
2747
2740
|
*/
|
2748
|
-
Ember.changeProperties = function(cb, binding){
|
2741
|
+
var changeProperties = Ember.changeProperties = function(cb, binding){
|
2749
2742
|
beginPropertyChanges();
|
2750
2743
|
tryFinally(cb, endPropertyChanges, binding);
|
2751
2744
|
};
|
@@ -2950,7 +2943,7 @@ var MANDATORY_SETTER = Ember.ENV.MANDATORY_SETTER;
|
|
2950
2943
|
@private
|
2951
2944
|
@constructor
|
2952
2945
|
*/
|
2953
|
-
Ember.Descriptor = function() {};
|
2946
|
+
var Descriptor = Ember.Descriptor = function() {};
|
2954
2947
|
|
2955
2948
|
// ..........................................................
|
2956
2949
|
// DEFINING PROPERTIES API
|
@@ -3511,7 +3504,7 @@ Ember.watchPath = function(obj, keyPath) {
|
|
3511
3504
|
};
|
3512
3505
|
|
3513
3506
|
Ember.unwatchPath = function(obj, keyPath) {
|
3514
|
-
var m = metaFor(obj), watching = m.watching;
|
3507
|
+
var m = metaFor(obj), watching = m.watching, desc;
|
3515
3508
|
|
3516
3509
|
if (watching[keyPath] === 1) {
|
3517
3510
|
watching[keyPath] = 0;
|
@@ -4057,6 +4050,7 @@ ComputedPropertyPrototype.teardown = function(obj, keyName) {
|
|
4057
4050
|
The function should accept two parameters, key and value. If value is not
|
4058
4051
|
undefined you should set the value first. In either case return the
|
4059
4052
|
current value of the property.
|
4053
|
+
|
4060
4054
|
@method computed
|
4061
4055
|
@for Ember
|
4062
4056
|
@param {Function} func The computed property function.
|
@@ -4298,7 +4292,7 @@ registerComputedWithProperties('or', function(properties) {
|
|
4298
4292
|
@for Ember
|
4299
4293
|
@param {String} dependentKey, [dependentKey...]
|
4300
4294
|
@return {Ember.ComputedProperty} computed property which returns
|
4301
|
-
the first
|
4295
|
+
the first trouthy value of given list of properties.
|
4302
4296
|
*/
|
4303
4297
|
registerComputedWithProperties('any', function(properties) {
|
4304
4298
|
for (var key in properties) {
|
@@ -4348,48 +4342,6 @@ Ember.computed.alias = function(dependentKey) {
|
|
4348
4342
|
});
|
4349
4343
|
};
|
4350
4344
|
|
4351
|
-
/**
|
4352
|
-
@method computed.oneWay
|
4353
|
-
@for Ember
|
4354
|
-
@param {String} dependentKey
|
4355
|
-
@return {Ember.ComputedProperty} computed property which creates an
|
4356
|
-
one way computed property to the original value for property.
|
4357
|
-
|
4358
|
-
Where `computed.alias` aliases `get` and `set`, and allows for bidirectional
|
4359
|
-
data flow, `computed.oneWay` only provides an aliased `get`. The `set` will
|
4360
|
-
not mutate the upstream property, rather causes the current property to
|
4361
|
-
become the value set. This causes the downstream property to permentantly
|
4362
|
-
diverge from the upstream property.
|
4363
|
-
|
4364
|
-
```javascript
|
4365
|
-
User = Ember.Object.extend({
|
4366
|
-
firstName: null,
|
4367
|
-
lastName: null,
|
4368
|
-
nickName: Ember.computed.oneWay('firstName')
|
4369
|
-
});
|
4370
|
-
|
4371
|
-
user = User.create({
|
4372
|
-
firstName: 'Teddy',
|
4373
|
-
lastName: 'Zeenny'
|
4374
|
-
});
|
4375
|
-
|
4376
|
-
user.get('nickName');
|
4377
|
-
# 'Teddy'
|
4378
|
-
|
4379
|
-
user.set('nickName', 'TeddyBear');
|
4380
|
-
# 'TeddyBear'
|
4381
|
-
|
4382
|
-
user.get('firstName');
|
4383
|
-
# 'Teddy'
|
4384
|
-
```
|
4385
|
-
*/
|
4386
|
-
Ember.computed.oneWay = function(dependentKey) {
|
4387
|
-
return Ember.computed(dependentKey, function() {
|
4388
|
-
return get(this, dependentKey);
|
4389
|
-
});
|
4390
|
-
};
|
4391
|
-
|
4392
|
-
|
4393
4345
|
/**
|
4394
4346
|
@method computed.defaultTo
|
4395
4347
|
@for Ember
|
@@ -4419,6 +4371,8 @@ Ember.computed.defaultTo = function(defaultPath) {
|
|
4419
4371
|
var AFTER_OBSERVERS = ':change';
|
4420
4372
|
var BEFORE_OBSERVERS = ':before';
|
4421
4373
|
|
4374
|
+
var guidFor = Ember.guidFor;
|
4375
|
+
|
4422
4376
|
function changeEvent(keyName) {
|
4423
4377
|
return keyName+AFTER_OBSERVERS;
|
4424
4378
|
}
|
@@ -4910,44 +4864,27 @@ Ember.run.sync = function() {
|
|
4910
4864
|
|
4911
4865
|
var timers = {}; // active timers...
|
4912
4866
|
|
4913
|
-
function sortByExpires(timerA, timerB) {
|
4914
|
-
var a = timerA.expires,
|
4915
|
-
b = timerB.expires;
|
4916
|
-
|
4917
|
-
if (a > b) { return 1; }
|
4918
|
-
if (a < b) { return -1; }
|
4919
|
-
return 0;
|
4920
|
-
}
|
4921
|
-
|
4922
4867
|
var scheduledLater, scheduledLaterExpires;
|
4923
4868
|
function invokeLaterTimers() {
|
4924
4869
|
scheduledLater = null;
|
4925
4870
|
run(function() {
|
4926
4871
|
var now = (+ new Date()), earliest = -1;
|
4927
|
-
var timersToBeInvoked = [];
|
4928
4872
|
for (var key in timers) {
|
4929
4873
|
if (!timers.hasOwnProperty(key)) { continue; }
|
4930
4874
|
var timer = timers[key];
|
4931
4875
|
if (timer && timer.expires) {
|
4932
4876
|
if (now >= timer.expires) {
|
4933
4877
|
delete timers[key];
|
4934
|
-
|
4878
|
+
invoke(timer.target, timer.method, timer.args, 2);
|
4935
4879
|
} else {
|
4936
4880
|
if (earliest < 0 || (timer.expires < earliest)) { earliest = timer.expires; }
|
4937
4881
|
}
|
4938
4882
|
}
|
4939
4883
|
}
|
4940
4884
|
|
4941
|
-
forEach.call(timersToBeInvoked.sort(sortByExpires), function(timer) {
|
4942
|
-
invoke(timer.target, timer.method, timer.args, 2);
|
4943
|
-
});
|
4944
|
-
|
4945
4885
|
// schedule next timeout to fire when the earliest timer expires
|
4946
4886
|
if (earliest > 0) {
|
4947
|
-
|
4948
|
-
// The assignment to `window.setTimeout` doesn't equal to `setTimeout` in older IE.
|
4949
|
-
// So `window` is required.
|
4950
|
-
scheduledLater = window.setTimeout(invokeLaterTimers, earliest - now);
|
4887
|
+
scheduledLater = setTimeout(invokeLaterTimers, earliest - now);
|
4951
4888
|
scheduledLaterExpires = earliest;
|
4952
4889
|
}
|
4953
4890
|
});
|
@@ -5577,7 +5514,7 @@ mixinProperties(Binding, {
|
|
5577
5514
|
|
5578
5515
|
You should consider using one way bindings anytime you have an object that
|
5579
5516
|
may be created frequently and you do not intend to change a property; only
|
5580
|
-
to monitor it for changes (such as in the example above).
|
5517
|
+
to monitor it for changes. (such as in the example above).
|
5581
5518
|
|
5582
5519
|
## Adding Bindings Manually
|
5583
5520
|
|
@@ -5878,6 +5815,14 @@ function mergeMixins(mixins, m, descs, values, base, keys) {
|
|
5878
5815
|
}
|
5879
5816
|
}
|
5880
5817
|
|
5818
|
+
function writableReq(obj) {
|
5819
|
+
var m = Ember.meta(obj), req = m.required;
|
5820
|
+
if (!req || !m.hasOwnProperty('required')) {
|
5821
|
+
req = m.required = req ? o_create(req) : {};
|
5822
|
+
}
|
5823
|
+
return req;
|
5824
|
+
}
|
5825
|
+
|
5881
5826
|
var IS_BINDING = Ember.IS_BINDING = /^.+Binding$/;
|
5882
5827
|
|
5883
5828
|
function detectBinding(obj, key, value, m) {
|
@@ -6363,57 +6308,14 @@ Ember Metal
|
|
6363
6308
|
})();
|
6364
6309
|
|
6365
6310
|
(function() {
|
6366
|
-
define("rsvp
|
6367
|
-
[
|
6368
|
-
function(
|
6369
|
-
"use strict";
|
6370
|
-
var defer = __dependency1__.defer;
|
6371
|
-
|
6372
|
-
function all(promises) {
|
6373
|
-
var results = [], deferred = defer(), remaining = promises.length;
|
6374
|
-
|
6375
|
-
if (remaining === 0) {
|
6376
|
-
deferred.resolve([]);
|
6377
|
-
}
|
6378
|
-
|
6379
|
-
var resolver = function(index) {
|
6380
|
-
return function(value) {
|
6381
|
-
resolveAll(index, value);
|
6382
|
-
};
|
6383
|
-
};
|
6384
|
-
|
6385
|
-
var resolveAll = function(index, value) {
|
6386
|
-
results[index] = value;
|
6387
|
-
if (--remaining === 0) {
|
6388
|
-
deferred.resolve(results);
|
6389
|
-
}
|
6390
|
-
};
|
6391
|
-
|
6392
|
-
var rejectAll = function(error) {
|
6393
|
-
deferred.reject(error);
|
6394
|
-
};
|
6395
|
-
|
6396
|
-
for (var i = 0; i < promises.length; i++) {
|
6397
|
-
if (promises[i] && typeof promises[i].then === 'function') {
|
6398
|
-
promises[i].then(resolver(i), rejectAll);
|
6399
|
-
} else {
|
6400
|
-
resolveAll(i, promises[i]);
|
6401
|
-
}
|
6402
|
-
}
|
6403
|
-
return deferred.promise;
|
6404
|
-
}
|
6405
|
-
|
6406
|
-
__exports__.all = all;
|
6407
|
-
});
|
6408
|
-
|
6409
|
-
define("rsvp/async",
|
6410
|
-
["exports"],
|
6411
|
-
function(__exports__) {
|
6311
|
+
define("rsvp",
|
6312
|
+
[],
|
6313
|
+
function() {
|
6412
6314
|
"use strict";
|
6413
6315
|
var browserGlobal = (typeof window !== 'undefined') ? window : {};
|
6414
6316
|
|
6415
|
-
var
|
6416
|
-
var async;
|
6317
|
+
var MutationObserver = browserGlobal.MutationObserver || browserGlobal.WebKitMutationObserver;
|
6318
|
+
var RSVP, async;
|
6417
6319
|
|
6418
6320
|
if (typeof process !== 'undefined' &&
|
6419
6321
|
{}.toString.call(process) === '[object process]') {
|
@@ -6422,10 +6324,10 @@ define("rsvp/async",
|
|
6422
6324
|
callback.call(binding);
|
6423
6325
|
});
|
6424
6326
|
};
|
6425
|
-
} else if (
|
6327
|
+
} else if (MutationObserver) {
|
6426
6328
|
var queue = [];
|
6427
6329
|
|
6428
|
-
var observer = new
|
6330
|
+
var observer = new MutationObserver(function() {
|
6429
6331
|
var toProcess = queue.slice();
|
6430
6332
|
queue = [];
|
6431
6333
|
|
@@ -6456,47 +6358,6 @@ define("rsvp/async",
|
|
6456
6358
|
};
|
6457
6359
|
}
|
6458
6360
|
|
6459
|
-
|
6460
|
-
__exports__.async = async;
|
6461
|
-
});
|
6462
|
-
|
6463
|
-
define("rsvp/config",
|
6464
|
-
["rsvp/async","exports"],
|
6465
|
-
function(__dependency1__, __exports__) {
|
6466
|
-
"use strict";
|
6467
|
-
var async = __dependency1__.async;
|
6468
|
-
|
6469
|
-
var config = {};
|
6470
|
-
config.async = async;
|
6471
|
-
|
6472
|
-
__exports__.config = config;
|
6473
|
-
});
|
6474
|
-
|
6475
|
-
define("rsvp/defer",
|
6476
|
-
["rsvp/promise","exports"],
|
6477
|
-
function(__dependency1__, __exports__) {
|
6478
|
-
"use strict";
|
6479
|
-
var Promise = __dependency1__.Promise;
|
6480
|
-
|
6481
|
-
function defer() {
|
6482
|
-
var deferred = {};
|
6483
|
-
|
6484
|
-
var promise = new Promise(function(resolve, reject) {
|
6485
|
-
deferred.resolve = resolve;
|
6486
|
-
deferred.reject = reject;
|
6487
|
-
});
|
6488
|
-
|
6489
|
-
deferred.promise = promise;
|
6490
|
-
return deferred;
|
6491
|
-
}
|
6492
|
-
|
6493
|
-
__exports__.defer = defer;
|
6494
|
-
});
|
6495
|
-
|
6496
|
-
define("rsvp/events",
|
6497
|
-
["exports"],
|
6498
|
-
function(__exports__) {
|
6499
|
-
"use strict";
|
6500
6361
|
var Event = function(type, options) {
|
6501
6362
|
this.type = type;
|
6502
6363
|
|
@@ -6591,148 +6452,7 @@ define("rsvp/events",
|
|
6591
6452
|
}
|
6592
6453
|
};
|
6593
6454
|
|
6594
|
-
|
6595
|
-
__exports__.EventTarget = EventTarget;
|
6596
|
-
});
|
6597
|
-
|
6598
|
-
define("rsvp/hash",
|
6599
|
-
["rsvp/defer","exports"],
|
6600
|
-
function(__dependency1__, __exports__) {
|
6601
|
-
"use strict";
|
6602
|
-
var defer = __dependency1__.defer;
|
6603
|
-
|
6604
|
-
function size(object) {
|
6605
|
-
var size = 0;
|
6606
|
-
|
6607
|
-
for (var prop in object) {
|
6608
|
-
size++;
|
6609
|
-
}
|
6610
|
-
|
6611
|
-
return size;
|
6612
|
-
}
|
6613
|
-
|
6614
|
-
function hash(promises) {
|
6615
|
-
var results = {}, deferred = defer(), remaining = size(promises);
|
6616
|
-
|
6617
|
-
if (remaining === 0) {
|
6618
|
-
deferred.resolve({});
|
6619
|
-
}
|
6620
|
-
|
6621
|
-
var resolver = function(prop) {
|
6622
|
-
return function(value) {
|
6623
|
-
resolveAll(prop, value);
|
6624
|
-
};
|
6625
|
-
};
|
6626
|
-
|
6627
|
-
var resolveAll = function(prop, value) {
|
6628
|
-
results[prop] = value;
|
6629
|
-
if (--remaining === 0) {
|
6630
|
-
deferred.resolve(results);
|
6631
|
-
}
|
6632
|
-
};
|
6633
|
-
|
6634
|
-
var rejectAll = function(error) {
|
6635
|
-
deferred.reject(error);
|
6636
|
-
};
|
6637
|
-
|
6638
|
-
for (var prop in promises) {
|
6639
|
-
if (promises[prop] && typeof promises[prop].then === 'function') {
|
6640
|
-
promises[prop].then(resolver(prop), rejectAll);
|
6641
|
-
} else {
|
6642
|
-
resolveAll(prop, promises[prop]);
|
6643
|
-
}
|
6644
|
-
}
|
6645
|
-
|
6646
|
-
return deferred.promise;
|
6647
|
-
}
|
6648
|
-
|
6649
|
-
__exports__.hash = hash;
|
6650
|
-
});
|
6651
|
-
|
6652
|
-
define("rsvp/node",
|
6653
|
-
["rsvp/promise","rsvp/all","exports"],
|
6654
|
-
function(__dependency1__, __dependency2__, __exports__) {
|
6655
|
-
"use strict";
|
6656
|
-
var Promise = __dependency1__.Promise;
|
6657
|
-
var all = __dependency2__.all;
|
6658
|
-
|
6659
|
-
function makeNodeCallbackFor(resolve, reject) {
|
6660
|
-
return function (error, value) {
|
6661
|
-
if (error) {
|
6662
|
-
reject(error);
|
6663
|
-
} else if (arguments.length > 2) {
|
6664
|
-
resolve(Array.prototype.slice.call(arguments, 1));
|
6665
|
-
} else {
|
6666
|
-
resolve(value);
|
6667
|
-
}
|
6668
|
-
};
|
6669
|
-
}
|
6670
|
-
|
6671
|
-
function denodeify(nodeFunc) {
|
6672
|
-
return function() {
|
6673
|
-
var nodeArgs = Array.prototype.slice.call(arguments), resolve, reject;
|
6674
|
-
|
6675
|
-
var promise = new Promise(function(nodeResolve, nodeReject) {
|
6676
|
-
resolve = nodeResolve;
|
6677
|
-
reject = nodeReject;
|
6678
|
-
});
|
6679
|
-
|
6680
|
-
all(nodeArgs).then(function(nodeArgs) {
|
6681
|
-
nodeArgs.push(makeNodeCallbackFor(resolve, reject));
|
6682
|
-
|
6683
|
-
try {
|
6684
|
-
nodeFunc.apply(this, nodeArgs);
|
6685
|
-
} catch(e) {
|
6686
|
-
reject(e);
|
6687
|
-
}
|
6688
|
-
});
|
6689
|
-
|
6690
|
-
return promise;
|
6691
|
-
};
|
6692
|
-
}
|
6693
|
-
|
6694
|
-
__exports__.denodeify = denodeify;
|
6695
|
-
});
|
6696
|
-
|
6697
|
-
define("rsvp/promise",
|
6698
|
-
["rsvp/config","rsvp/events","exports"],
|
6699
|
-
function(__dependency1__, __dependency2__, __exports__) {
|
6700
|
-
"use strict";
|
6701
|
-
var config = __dependency1__.config;
|
6702
|
-
var EventTarget = __dependency2__.EventTarget;
|
6703
|
-
|
6704
|
-
function objectOrFunction(x) {
|
6705
|
-
return isFunction(x) || (typeof x === "object" && x !== null);
|
6706
|
-
}
|
6707
|
-
|
6708
|
-
function isFunction(x){
|
6709
|
-
return typeof x === "function";
|
6710
|
-
}
|
6711
|
-
|
6712
|
-
var Promise = function(resolver) {
|
6713
|
-
var promise = this,
|
6714
|
-
resolved = false;
|
6715
|
-
|
6716
|
-
if (typeof resolver !== 'function') {
|
6717
|
-
throw new TypeError('You must pass a resolver function as the sole argument to the promise constructor');
|
6718
|
-
}
|
6719
|
-
|
6720
|
-
if (!(promise instanceof Promise)) {
|
6721
|
-
return new Promise(resolver);
|
6722
|
-
}
|
6723
|
-
|
6724
|
-
var resolvePromise = function(value) {
|
6725
|
-
if (resolved) { return; }
|
6726
|
-
resolved = true;
|
6727
|
-
resolve(promise, value);
|
6728
|
-
};
|
6729
|
-
|
6730
|
-
var rejectPromise = function(value) {
|
6731
|
-
if (resolved) { return; }
|
6732
|
-
resolved = true;
|
6733
|
-
reject(promise, value);
|
6734
|
-
};
|
6735
|
-
|
6455
|
+
var Promise = function() {
|
6736
6456
|
this.on('promise:resolved', function(event) {
|
6737
6457
|
this.trigger('success', { detail: event.detail });
|
6738
6458
|
}, this);
|
@@ -6740,16 +6460,12 @@ define("rsvp/promise",
|
|
6740
6460
|
this.on('promise:failed', function(event) {
|
6741
6461
|
this.trigger('error', { detail: event.detail });
|
6742
6462
|
}, this);
|
6743
|
-
|
6744
|
-
try {
|
6745
|
-
resolver(resolvePromise, rejectPromise);
|
6746
|
-
} catch(e) {
|
6747
|
-
rejectPromise(e);
|
6748
|
-
}
|
6749
6463
|
};
|
6750
6464
|
|
6465
|
+
var noop = function() {};
|
6466
|
+
|
6751
6467
|
var invokeCallback = function(type, promise, callback, event) {
|
6752
|
-
var hasCallback =
|
6468
|
+
var hasCallback = typeof callback === 'function',
|
6753
6469
|
value, error, succeeded, failed;
|
6754
6470
|
|
6755
6471
|
if (hasCallback) {
|
@@ -6765,34 +6481,34 @@ define("rsvp/promise",
|
|
6765
6481
|
succeeded = true;
|
6766
6482
|
}
|
6767
6483
|
|
6768
|
-
if (
|
6769
|
-
|
6484
|
+
if (value && typeof value.then === 'function') {
|
6485
|
+
value.then(function(value) {
|
6486
|
+
promise.resolve(value);
|
6487
|
+
}, function(error) {
|
6488
|
+
promise.reject(error);
|
6489
|
+
});
|
6770
6490
|
} else if (hasCallback && succeeded) {
|
6771
|
-
resolve(
|
6491
|
+
promise.resolve(value);
|
6772
6492
|
} else if (failed) {
|
6773
|
-
reject(
|
6774
|
-
} else
|
6775
|
-
|
6776
|
-
} else if (type === 'reject') {
|
6777
|
-
reject(promise, value);
|
6493
|
+
promise.reject(error);
|
6494
|
+
} else {
|
6495
|
+
promise[type](value);
|
6778
6496
|
}
|
6779
6497
|
};
|
6780
6498
|
|
6781
6499
|
Promise.prototype = {
|
6782
|
-
constructor: Promise,
|
6783
|
-
|
6784
6500
|
then: function(done, fail) {
|
6785
|
-
var thenPromise = new Promise(
|
6501
|
+
var thenPromise = new Promise();
|
6786
6502
|
|
6787
|
-
if (this.
|
6788
|
-
|
6789
|
-
invokeCallback('resolve', thenPromise, done, { detail: this.
|
6503
|
+
if (this.isResolved) {
|
6504
|
+
RSVP.async(function() {
|
6505
|
+
invokeCallback('resolve', thenPromise, done, { detail: this.resolvedValue });
|
6790
6506
|
}, this);
|
6791
6507
|
}
|
6792
6508
|
|
6793
6509
|
if (this.isRejected) {
|
6794
|
-
|
6795
|
-
invokeCallback('reject', thenPromise, fail, { detail: this.
|
6510
|
+
RSVP.async(function() {
|
6511
|
+
invokeCallback('reject', thenPromise, fail, { detail: this.rejectedValue });
|
6796
6512
|
}, this);
|
6797
6513
|
}
|
6798
6514
|
|
@@ -6805,162 +6521,75 @@ define("rsvp/promise",
|
|
6805
6521
|
});
|
6806
6522
|
|
6807
6523
|
return thenPromise;
|
6808
|
-
}
|
6809
|
-
};
|
6524
|
+
},
|
6810
6525
|
|
6811
|
-
|
6526
|
+
resolve: function(value) {
|
6527
|
+
resolve(this, value);
|
6812
6528
|
|
6813
|
-
|
6814
|
-
|
6815
|
-
|
6816
|
-
} else if (!handleThenable(promise, value)) {
|
6817
|
-
fulfill(promise, value);
|
6818
|
-
}
|
6819
|
-
}
|
6820
|
-
|
6821
|
-
function handleThenable(promise, value) {
|
6822
|
-
var then = null;
|
6529
|
+
this.resolve = noop;
|
6530
|
+
this.reject = noop;
|
6531
|
+
},
|
6823
6532
|
|
6824
|
-
|
6825
|
-
|
6826
|
-
then = value.then;
|
6827
|
-
} catch(e) {
|
6828
|
-
reject(promise, e);
|
6829
|
-
return true;
|
6830
|
-
}
|
6533
|
+
reject: function(value) {
|
6534
|
+
reject(this, value);
|
6831
6535
|
|
6832
|
-
|
6833
|
-
|
6834
|
-
then.call(value, function(val) {
|
6835
|
-
if (value !== val) {
|
6836
|
-
resolve(promise, val);
|
6837
|
-
} else {
|
6838
|
-
fulfill(promise, val);
|
6839
|
-
}
|
6840
|
-
}, function(val) {
|
6841
|
-
reject(promise, val);
|
6842
|
-
});
|
6843
|
-
} catch (e) {
|
6844
|
-
reject(promise, e);
|
6845
|
-
}
|
6846
|
-
return true;
|
6847
|
-
}
|
6536
|
+
this.resolve = noop;
|
6537
|
+
this.reject = noop;
|
6848
6538
|
}
|
6539
|
+
};
|
6849
6540
|
|
6850
|
-
|
6851
|
-
|
6852
|
-
|
6853
|
-
function fulfill(promise, value) {
|
6854
|
-
config.async(function() {
|
6541
|
+
function resolve(promise, value) {
|
6542
|
+
RSVP.async(function() {
|
6855
6543
|
promise.trigger('promise:resolved', { detail: value });
|
6856
|
-
promise.
|
6857
|
-
promise.
|
6544
|
+
promise.isResolved = true;
|
6545
|
+
promise.resolvedValue = value;
|
6858
6546
|
});
|
6859
6547
|
}
|
6860
6548
|
|
6861
6549
|
function reject(promise, value) {
|
6862
|
-
|
6550
|
+
RSVP.async(function() {
|
6863
6551
|
promise.trigger('promise:failed', { detail: value });
|
6864
6552
|
promise.isRejected = true;
|
6865
|
-
promise.
|
6866
|
-
});
|
6867
|
-
}
|
6868
|
-
|
6869
|
-
|
6870
|
-
__exports__.Promise = Promise;
|
6871
|
-
});
|
6872
|
-
|
6873
|
-
define("rsvp/reject",
|
6874
|
-
["rsvp/promise","exports"],
|
6875
|
-
function(__dependency1__, __exports__) {
|
6876
|
-
"use strict";
|
6877
|
-
var Promise = __dependency1__.Promise;
|
6878
|
-
|
6879
|
-
|
6880
|
-
function objectOrFunction(x) {
|
6881
|
-
return typeof x === "function" || (typeof x === "object" && x !== null);
|
6882
|
-
}
|
6883
|
-
|
6884
|
-
|
6885
|
-
function reject(reason) {
|
6886
|
-
return new Promise(function (resolve, reject) {
|
6887
|
-
reject(reason);
|
6553
|
+
promise.rejectedValue = value;
|
6888
6554
|
});
|
6889
6555
|
}
|
6890
6556
|
|
6557
|
+
function all(promises) {
|
6558
|
+
var i, results = [];
|
6559
|
+
var allPromise = new Promise();
|
6560
|
+
var remaining = promises.length;
|
6891
6561
|
|
6892
|
-
|
6893
|
-
|
6894
|
-
|
6895
|
-
define("rsvp/resolve",
|
6896
|
-
["rsvp/promise","exports"],
|
6897
|
-
function(__dependency1__, __exports__) {
|
6898
|
-
"use strict";
|
6899
|
-
var Promise = __dependency1__.Promise;
|
6900
|
-
|
6901
|
-
|
6902
|
-
function objectOrFunction(x) {
|
6903
|
-
return typeof x === "function" || (typeof x === "object" && x !== null);
|
6904
|
-
}
|
6905
|
-
|
6906
|
-
function resolve(thenable){
|
6907
|
-
var promise = new Promise(function(resolve, reject){
|
6908
|
-
var then;
|
6909
|
-
|
6910
|
-
try {
|
6911
|
-
if ( objectOrFunction(thenable) ) {
|
6912
|
-
then = thenable.then;
|
6913
|
-
|
6914
|
-
if (typeof then === "function") {
|
6915
|
-
then.call(thenable, resolve, reject);
|
6916
|
-
} else {
|
6917
|
-
resolve(thenable);
|
6918
|
-
}
|
6562
|
+
if (remaining === 0) {
|
6563
|
+
allPromise.resolve([]);
|
6564
|
+
}
|
6919
6565
|
|
6920
|
-
|
6921
|
-
|
6922
|
-
|
6566
|
+
var resolver = function(index) {
|
6567
|
+
return function(value) {
|
6568
|
+
resolve(index, value);
|
6569
|
+
};
|
6570
|
+
};
|
6923
6571
|
|
6924
|
-
|
6925
|
-
|
6572
|
+
var resolve = function(index, value) {
|
6573
|
+
results[index] = value;
|
6574
|
+
if (--remaining === 0) {
|
6575
|
+
allPromise.resolve(results);
|
6926
6576
|
}
|
6927
|
-
}
|
6577
|
+
};
|
6928
6578
|
|
6929
|
-
|
6930
|
-
|
6579
|
+
var reject = function(error) {
|
6580
|
+
allPromise.reject(error);
|
6581
|
+
};
|
6931
6582
|
|
6583
|
+
for (i = 0; i < remaining; i++) {
|
6584
|
+
promises[i].then(resolver(i), reject);
|
6585
|
+
}
|
6586
|
+
return allPromise;
|
6587
|
+
}
|
6932
6588
|
|
6933
|
-
|
6934
|
-
});
|
6589
|
+
EventTarget.mixin(Promise.prototype);
|
6935
6590
|
|
6936
|
-
|
6937
|
-
|
6938
|
-
function(__dependency1__, __dependency2__, __dependency3__, __dependency4__, __dependency5__, __dependency6__, __dependency7__, __dependency8__, __dependency9__, __exports__) {
|
6939
|
-
"use strict";
|
6940
|
-
var EventTarget = __dependency1__.EventTarget;
|
6941
|
-
var Promise = __dependency2__.Promise;
|
6942
|
-
var denodeify = __dependency3__.denodeify;
|
6943
|
-
var all = __dependency4__.all;
|
6944
|
-
var hash = __dependency5__.hash;
|
6945
|
-
var defer = __dependency6__.defer;
|
6946
|
-
var config = __dependency7__.config;
|
6947
|
-
var resolve = __dependency8__.resolve;
|
6948
|
-
var reject = __dependency9__.reject;
|
6949
|
-
|
6950
|
-
function configure(name, value) {
|
6951
|
-
config[name] = value;
|
6952
|
-
}
|
6953
|
-
|
6954
|
-
|
6955
|
-
__exports__.Promise = Promise;
|
6956
|
-
__exports__.EventTarget = EventTarget;
|
6957
|
-
__exports__.all = all;
|
6958
|
-
__exports__.hash = hash;
|
6959
|
-
__exports__.defer = defer;
|
6960
|
-
__exports__.denodeify = denodeify;
|
6961
|
-
__exports__.configure = configure;
|
6962
|
-
__exports__.resolve = resolve;
|
6963
|
-
__exports__.reject = reject;
|
6591
|
+
RSVP = { async: async, Promise: Promise, Event: Event, EventTarget: EventTarget, all: all, raiseOnUncaughtExceptions: true };
|
6592
|
+
return RSVP;
|
6964
6593
|
});
|
6965
6594
|
|
6966
6595
|
})();
|
@@ -7536,7 +7165,7 @@ var errorProps = ['description', 'fileName', 'lineNumber', 'message', 'name', 'n
|
|
7536
7165
|
@constructor
|
7537
7166
|
*/
|
7538
7167
|
Ember.Error = function() {
|
7539
|
-
var tmp = Error.apply(this, arguments);
|
7168
|
+
var tmp = Error.prototype.constructor.apply(this, arguments);
|
7540
7169
|
|
7541
7170
|
// Unfortunately errors are not enumerable in Chrome (at least), so `for prop in tmp` doesn't work.
|
7542
7171
|
for (var idx = 0; idx < errorProps.length; idx++) {
|
@@ -7798,12 +7427,10 @@ Ember.String = {
|
|
7798
7427
|
/**
|
7799
7428
|
Returns the Capitalized form of a string
|
7800
7429
|
|
7801
|
-
|
7802
|
-
|
7803
|
-
|
7804
|
-
|
7805
|
-
'my favorite items'.capitalize() // 'My favorite items'
|
7806
|
-
```
|
7430
|
+
'innerHTML'.capitalize() // 'InnerHTML'
|
7431
|
+
'action_name'.capitalize() // 'Action_name'
|
7432
|
+
'css-class-name'.capitalize() // 'Css-class-name'
|
7433
|
+
'my favorite items'.capitalize() // 'My favorite items'
|
7807
7434
|
|
7808
7435
|
@method capitalize
|
7809
7436
|
@param {String} str
|
@@ -8948,7 +8575,9 @@ Ember.Enumerable = Ember.Mixin.create({
|
|
8948
8575
|
// HELPERS
|
8949
8576
|
//
|
8950
8577
|
|
8951
|
-
var get = Ember.get, set = Ember.set,
|
8578
|
+
var get = Ember.get, set = Ember.set, map = Ember.EnumerableUtils.map, cacheFor = Ember.cacheFor;
|
8579
|
+
|
8580
|
+
function none(obj) { return obj===null || obj===undefined; }
|
8952
8581
|
|
8953
8582
|
// ..........................................................
|
8954
8583
|
// ARRAY
|
@@ -8971,7 +8600,7 @@ var get = Ember.get, set = Ember.set, isNone = Ember.isNone, map = Ember.Enumera
|
|
8971
8600
|
|
8972
8601
|
You can use the methods defined in this module to access and modify array
|
8973
8602
|
contents in a KVO-friendly way. You can also be notified whenever the
|
8974
|
-
membership
|
8603
|
+
membership if an array changes by changing the syntax of the property to
|
8975
8604
|
`.observes('*myProperty.[]')`.
|
8976
8605
|
|
8977
8606
|
To support `Ember.Array` in your own class, you must override two
|
@@ -8988,6 +8617,9 @@ var get = Ember.get, set = Ember.set, isNone = Ember.isNone, map = Ember.Enumera
|
|
8988
8617
|
*/
|
8989
8618
|
Ember.Array = Ember.Mixin.create(Ember.Enumerable, /** @scope Ember.Array.prototype */ {
|
8990
8619
|
|
8620
|
+
// compatibility
|
8621
|
+
isSCArray: true,
|
8622
|
+
|
8991
8623
|
/**
|
8992
8624
|
Your array must support the `length` property. Your replace methods should
|
8993
8625
|
set this property whenever it changes.
|
@@ -9095,8 +8727,8 @@ Ember.Array = Ember.Mixin.create(Ember.Enumerable, /** @scope Ember.Array.protot
|
|
9095
8727
|
slice: function(beginIndex, endIndex) {
|
9096
8728
|
var ret = Ember.A([]);
|
9097
8729
|
var length = get(this, 'length') ;
|
9098
|
-
if (
|
9099
|
-
if (
|
8730
|
+
if (none(beginIndex)) beginIndex = 0 ;
|
8731
|
+
if (none(endIndex) || (endIndex > length)) endIndex = length ;
|
9100
8732
|
|
9101
8733
|
if (beginIndex < 0) beginIndex = length + beginIndex;
|
9102
8734
|
if (endIndex < 0) endIndex = length + endIndex;
|
@@ -9256,7 +8888,7 @@ Ember.Array = Ember.Mixin.create(Ember.Enumerable, /** @scope Ember.Array.protot
|
|
9256
8888
|
@param {Number} startIdx The starting index in the array that will change.
|
9257
8889
|
@param {Number} removeAmt The number of items that will be removed. If you
|
9258
8890
|
pass `null` assumes 0
|
9259
|
-
@param {Number} addAmt The number of items that will be added
|
8891
|
+
@param {Number} addAmt The number of items that will be added If you
|
9260
8892
|
pass `null` assumes 0.
|
9261
8893
|
@return {Ember.Array} receiver
|
9262
8894
|
*/
|
@@ -9290,20 +8922,6 @@ Ember.Array = Ember.Mixin.create(Ember.Enumerable, /** @scope Ember.Array.protot
|
|
9290
8922
|
return this;
|
9291
8923
|
},
|
9292
8924
|
|
9293
|
-
/**
|
9294
|
-
If you are implementing an object that supports `Ember.Array`, call this
|
9295
|
-
method just after the array content changes to notify any observers and
|
9296
|
-
invalidate any related properties. Pass the starting index of the change
|
9297
|
-
as well as a delta of the amounts to change.
|
9298
|
-
|
9299
|
-
@method arrayContentDidChange
|
9300
|
-
@param {Number} startIdx The starting index in the array that did change.
|
9301
|
-
@param {Number} removeAmt The number of items that were removed. If you
|
9302
|
-
pass `null` assumes 0
|
9303
|
-
@param {Number} addAmt The number of items that were added. If you
|
9304
|
-
pass `null` assumes 0.
|
9305
|
-
@return {Ember.Array} receiver
|
9306
|
-
*/
|
9307
8925
|
arrayContentDidChange: function(startIdx, removeAmt, addAmt) {
|
9308
8926
|
|
9309
8927
|
// if no args are passed assume everything changes
|
@@ -9444,7 +9062,8 @@ var get = Ember.get, set = Ember.set;
|
|
9444
9062
|
@extends Ember.Mixin
|
9445
9063
|
@since Ember 0.9
|
9446
9064
|
*/
|
9447
|
-
Ember.Copyable = Ember.Mixin.create(
|
9065
|
+
Ember.Copyable = Ember.Mixin.create(
|
9066
|
+
/** @scope Ember.Copyable.prototype */ {
|
9448
9067
|
|
9449
9068
|
/**
|
9450
9069
|
Override to return a copy of the receiver. Default implementation raises
|
@@ -9549,7 +9168,8 @@ var get = Ember.get, set = Ember.set;
|
|
9549
9168
|
@extends Ember.Mixin
|
9550
9169
|
@since Ember 0.9
|
9551
9170
|
*/
|
9552
|
-
Ember.Freezable = Ember.Mixin.create(
|
9171
|
+
Ember.Freezable = Ember.Mixin.create(
|
9172
|
+
/** @scope Ember.Freezable.prototype */ {
|
9553
9173
|
|
9554
9174
|
/**
|
9555
9175
|
Set to `true` when the object is frozen. Use this property to detect
|
@@ -9730,7 +9350,8 @@ var get = Ember.get, set = Ember.set;
|
|
9730
9350
|
@uses Ember.Array
|
9731
9351
|
@uses Ember.MutableEnumerable
|
9732
9352
|
*/
|
9733
|
-
Ember.MutableArray = Ember.Mixin.create(Ember.Array, Ember.MutableEnumerable
|
9353
|
+
Ember.MutableArray = Ember.Mixin.create(Ember.Array, Ember.MutableEnumerable,
|
9354
|
+
/** @scope Ember.MutableArray.prototype */ {
|
9734
9355
|
|
9735
9356
|
/**
|
9736
9357
|
__Required.__ You must implement this method to apply this mixin.
|
@@ -10001,6 +9622,7 @@ Ember.MutableArray = Ember.Mixin.create(Ember.Array, Ember.MutableEnumerable,/**
|
|
10001
9622
|
|
10002
9623
|
});
|
10003
9624
|
|
9625
|
+
|
10004
9626
|
})();
|
10005
9627
|
|
10006
9628
|
|
@@ -10048,7 +9670,7 @@ var get = Ember.get, set = Ember.set;
|
|
10048
9670
|
For example:
|
10049
9671
|
|
10050
9672
|
```javascript
|
10051
|
-
Ember.Object.
|
9673
|
+
Ember.Object.create({
|
10052
9674
|
valueObserver: function() {
|
10053
9675
|
// Executes whenever the "value" property changes
|
10054
9676
|
}.observes('value')
|
@@ -10067,8 +9689,8 @@ var get = Ember.get, set = Ember.set;
|
|
10067
9689
|
object.addObserver('propertyKey', targetObject, targetAction)
|
10068
9690
|
```
|
10069
9691
|
|
10070
|
-
This will call the `targetAction` method on the `targetObject`
|
10071
|
-
the value of the `propertyKey` changes.
|
9692
|
+
This will call the `targetAction` method on the `targetObject` to be called
|
9693
|
+
whenever the value of the `propertyKey` changes.
|
10072
9694
|
|
10073
9695
|
Note that if `propertyKey` is a computed property, the observer will be
|
10074
9696
|
called when any of the property dependencies are changed, even if the
|
@@ -10328,8 +9950,8 @@ Ember.Observable = Ember.Mixin.create(/** @scope Ember.Observable.prototype */ {
|
|
10328
9950
|
|
10329
9951
|
This is the core method used to register an observer for a property.
|
10330
9952
|
|
10331
|
-
Once you call this method,
|
10332
|
-
will be notified. Note that the observers are triggered
|
9953
|
+
Once you call this method, anytime the key's value is set, your observer
|
9954
|
+
will be notified. Note that the observers are triggered anytime the
|
10333
9955
|
value is set, regardless of whether it has actually changed. Your
|
10334
9956
|
observer should be prepared to handle that.
|
10335
9957
|
|
@@ -10454,11 +10076,11 @@ Ember.Observable = Ember.Mixin.create(/** @scope Ember.Observable.prototype */ {
|
|
10454
10076
|
|
10455
10077
|
@method incrementProperty
|
10456
10078
|
@param {String} keyName The name of the property to increment
|
10457
|
-
@param {
|
10458
|
-
@return {
|
10079
|
+
@param {Object} increment The amount to increment by. Defaults to 1
|
10080
|
+
@return {Object} The new property value
|
10459
10081
|
*/
|
10460
10082
|
incrementProperty: function(keyName, increment) {
|
10461
|
-
if (
|
10083
|
+
if (!increment) { increment = 1; }
|
10462
10084
|
set(this, keyName, (get(this, keyName) || 0)+increment);
|
10463
10085
|
return get(this, keyName);
|
10464
10086
|
},
|
@@ -10473,12 +10095,12 @@ Ember.Observable = Ember.Mixin.create(/** @scope Ember.Observable.prototype */ {
|
|
10473
10095
|
|
10474
10096
|
@method decrementProperty
|
10475
10097
|
@param {String} keyName The name of the property to decrement
|
10476
|
-
@param {
|
10477
|
-
@return {
|
10098
|
+
@param {Object} increment The amount to decrement by. Defaults to 1
|
10099
|
+
@return {Object} The new property value
|
10478
10100
|
*/
|
10479
|
-
decrementProperty: function(keyName,
|
10480
|
-
if (
|
10481
|
-
set(this, keyName, (get(this, keyName) || 0)-
|
10101
|
+
decrementProperty: function(keyName, increment) {
|
10102
|
+
if (!increment) { increment = 1; }
|
10103
|
+
set(this, keyName, (get(this, keyName) || 0)-increment);
|
10482
10104
|
return get(this, keyName);
|
10483
10105
|
},
|
10484
10106
|
|
@@ -10487,7 +10109,7 @@ Ember.Observable = Ember.Mixin.create(/** @scope Ember.Observable.prototype */ {
|
|
10487
10109
|
current value.
|
10488
10110
|
|
10489
10111
|
```javascript
|
10490
|
-
starship.toggleProperty('
|
10112
|
+
starship.toggleProperty('warpDriveEnaged');
|
10491
10113
|
```
|
10492
10114
|
|
10493
10115
|
@method toggleProperty
|
@@ -10519,6 +10141,7 @@ Ember.Observable = Ember.Mixin.create(/** @scope Ember.Observable.prototype */ {
|
|
10519
10141
|
}
|
10520
10142
|
});
|
10521
10143
|
|
10144
|
+
|
10522
10145
|
})();
|
10523
10146
|
|
10524
10147
|
|
@@ -10813,9 +10436,9 @@ Ember.Evented = Ember.Mixin.create({
|
|
10813
10436
|
(function() {
|
10814
10437
|
var RSVP = requireModule("rsvp");
|
10815
10438
|
|
10816
|
-
RSVP.
|
10439
|
+
RSVP.async = function(callback, binding) {
|
10817
10440
|
Ember.run.schedule('actions', binding, callback);
|
10818
|
-
}
|
10441
|
+
};
|
10819
10442
|
|
10820
10443
|
/**
|
10821
10444
|
@module ember
|
@@ -10837,22 +10460,9 @@ Ember.DeferredMixin = Ember.Mixin.create({
|
|
10837
10460
|
@param {Function} doneCallback a callback function to be called when done
|
10838
10461
|
@param {Function} failCallback a callback function to be called when failed
|
10839
10462
|
*/
|
10840
|
-
then: function(
|
10841
|
-
var
|
10842
|
-
|
10843
|
-
entity = this;
|
10844
|
-
deferred = get(this, '_deferred');
|
10845
|
-
promise = deferred.promise;
|
10846
|
-
|
10847
|
-
function fulfillmentHandler(fulfillment) {
|
10848
|
-
if (fulfillment === promise) {
|
10849
|
-
return resolve(entity);
|
10850
|
-
} else {
|
10851
|
-
return resolve(fulfillment);
|
10852
|
-
}
|
10853
|
-
}
|
10854
|
-
|
10855
|
-
return promise.then(resolve && fulfillmentHandler, reject);
|
10463
|
+
then: function(doneCallback, failCallback) {
|
10464
|
+
var promise = get(this, 'promise');
|
10465
|
+
return promise.then.apply(promise, arguments);
|
10856
10466
|
},
|
10857
10467
|
|
10858
10468
|
/**
|
@@ -10861,16 +10471,7 @@ Ember.DeferredMixin = Ember.Mixin.create({
|
|
10861
10471
|
@method resolve
|
10862
10472
|
*/
|
10863
10473
|
resolve: function(value) {
|
10864
|
-
|
10865
|
-
|
10866
|
-
deferred = get(this, '_deferred');
|
10867
|
-
promise = deferred.promise;
|
10868
|
-
|
10869
|
-
if (value === this){
|
10870
|
-
deferred.resolve(promise);
|
10871
|
-
} else {
|
10872
|
-
deferred.resolve(value);
|
10873
|
-
}
|
10474
|
+
get(this, 'promise').resolve(value);
|
10874
10475
|
},
|
10875
10476
|
|
10876
10477
|
/**
|
@@ -10879,11 +10480,11 @@ Ember.DeferredMixin = Ember.Mixin.create({
|
|
10879
10480
|
@method reject
|
10880
10481
|
*/
|
10881
10482
|
reject: function(value) {
|
10882
|
-
get(this, '
|
10483
|
+
get(this, 'promise').reject(value);
|
10883
10484
|
},
|
10884
10485
|
|
10885
|
-
|
10886
|
-
return RSVP.
|
10486
|
+
promise: Ember.computed(function() {
|
10487
|
+
return new RSVP.Promise();
|
10887
10488
|
})
|
10888
10489
|
});
|
10889
10490
|
|
@@ -11716,7 +11317,8 @@ var get = Ember.get, set = Ember.set;
|
|
11716
11317
|
@extends Ember.Object
|
11717
11318
|
@uses Ember.MutableArray
|
11718
11319
|
*/
|
11719
|
-
Ember.ArrayProxy = Ember.Object.extend(Ember.MutableArray
|
11320
|
+
Ember.ArrayProxy = Ember.Object.extend(Ember.MutableArray,
|
11321
|
+
/** @scope Ember.ArrayProxy.prototype */ {
|
11720
11322
|
|
11721
11323
|
/**
|
11722
11324
|
The content array. Must be an object that implements `Ember.Array` and/or
|
@@ -11992,6 +11594,7 @@ Ember.ArrayProxy = Ember.Object.extend(Ember.MutableArray,/** @scope Ember.Array
|
|
11992
11594
|
}
|
11993
11595
|
});
|
11994
11596
|
|
11597
|
+
|
11995
11598
|
})();
|
11996
11599
|
|
11997
11600
|
|
@@ -12091,7 +11694,8 @@ function contentPropertyDidChange(content, contentKey) {
|
|
12091
11694
|
@namespace Ember
|
12092
11695
|
@extends Ember.Object
|
12093
11696
|
*/
|
12094
|
-
Ember.ObjectProxy = Ember.Object.extend(
|
11697
|
+
Ember.ObjectProxy = Ember.Object.extend(
|
11698
|
+
/** @scope Ember.ObjectProxy.prototype */ {
|
12095
11699
|
/**
|
12096
11700
|
The object whose properties will be forwarded.
|
12097
11701
|
|
@@ -12529,7 +12133,7 @@ if (Ember.EXTEND_PROTOTYPES === true || Ember.EXTEND_PROTOTYPES.Array) {
|
|
12529
12133
|
@submodule ember-runtime
|
12530
12134
|
*/
|
12531
12135
|
|
12532
|
-
var get = Ember.get, set = Ember.set, guidFor = Ember.guidFor,
|
12136
|
+
var get = Ember.get, set = Ember.set, guidFor = Ember.guidFor, none = Ember.isNone, fmt = Ember.String.fmt;
|
12533
12137
|
|
12534
12138
|
/**
|
12535
12139
|
An unordered collection of objects.
|
@@ -12887,7 +12491,7 @@ Ember.Set = Ember.CoreObject.extend(Ember.MutableEnumerable, Ember.Copyable, Emb
|
|
12887
12491
|
// implements Ember.MutableEnumerable
|
12888
12492
|
addObject: function(obj) {
|
12889
12493
|
if (get(this, 'isFrozen')) throw new Error(Ember.FROZEN_ERROR);
|
12890
|
-
if (
|
12494
|
+
if (none(obj)) return this; // nothing to do
|
12891
12495
|
|
12892
12496
|
var guid = guidFor(obj),
|
12893
12497
|
idx = this[guid],
|
@@ -12915,7 +12519,7 @@ Ember.Set = Ember.CoreObject.extend(Ember.MutableEnumerable, Ember.Copyable, Emb
|
|
12915
12519
|
// implements Ember.MutableEnumerable
|
12916
12520
|
removeObject: function(obj) {
|
12917
12521
|
if (get(this, 'isFrozen')) throw new Error(Ember.FROZEN_ERROR);
|
12918
|
-
if (
|
12522
|
+
if (none(obj)) return this; // nothing to do
|
12919
12523
|
|
12920
12524
|
var guid = guidFor(obj),
|
12921
12525
|
idx = this[guid],
|
@@ -12990,7 +12594,7 @@ Deferred.reopenClass({
|
|
12990
12594
|
promise: function(callback, binding) {
|
12991
12595
|
var deferred = Deferred.create();
|
12992
12596
|
callback.call(binding, deferred);
|
12993
|
-
return deferred;
|
12597
|
+
return get(deferred, 'promise');
|
12994
12598
|
}
|
12995
12599
|
});
|
12996
12600
|
|
@@ -13001,8 +12605,6 @@ Ember.Deferred = Deferred;
|
|
13001
12605
|
|
13002
12606
|
|
13003
12607
|
(function() {
|
13004
|
-
var forEach = Ember.ArrayPolyfills.forEach;
|
13005
|
-
|
13006
12608
|
/**
|
13007
12609
|
@module ember
|
13008
12610
|
@submodule ember-runtime
|
@@ -13035,10 +12637,12 @@ Ember.onLoad = function(name, callback) {
|
|
13035
12637
|
@param object {Object} object to pass to callbacks
|
13036
12638
|
*/
|
13037
12639
|
Ember.runLoadHooks = function(name, object) {
|
12640
|
+
var hooks;
|
12641
|
+
|
13038
12642
|
loaded[name] = object;
|
13039
12643
|
|
13040
|
-
if (loadHooks[name]) {
|
13041
|
-
|
12644
|
+
if (hooks = loadHooks[name]) {
|
12645
|
+
loadHooks[name].forEach(function(callback) {
|
13042
12646
|
callback(object);
|
13043
12647
|
});
|
13044
12648
|
}
|
@@ -13112,8 +12716,6 @@ Ember.ControllerMixin = Ember.Mixin.create({
|
|
13112
12716
|
|
13113
12717
|
container: null,
|
13114
12718
|
|
13115
|
-
parentController: null,
|
13116
|
-
|
13117
12719
|
store: null,
|
13118
12720
|
|
13119
12721
|
model: Ember.computed.alias('content'),
|
@@ -13456,10 +13058,6 @@ var get = Ember.get, set = Ember.set, forEach = Ember.EnumerableUtils.forEach,
|
|
13456
13058
|
});
|
13457
13059
|
```
|
13458
13060
|
|
13459
|
-
The itemController instances will have a `parentController` property set to
|
13460
|
-
either the the `parentController` property of the `ArrayController`
|
13461
|
-
or to the `ArrayController` instance itself.
|
13462
|
-
|
13463
13061
|
@class ArrayController
|
13464
13062
|
@namespace Ember
|
13465
13063
|
@extends Ember.ArrayProxy
|
@@ -13570,7 +13168,6 @@ Ember.ArrayController = Ember.ArrayProxy.extend(Ember.ControllerMixin,
|
|
13570
13168
|
}
|
13571
13169
|
|
13572
13170
|
subController.set('target', this);
|
13573
|
-
subController.set('parentController', get(this, 'parentController') || this);
|
13574
13171
|
subController.set('content', object);
|
13575
13172
|
|
13576
13173
|
return subController;
|
@@ -13684,7 +13281,7 @@ if (Ember.$) {
|
|
13684
13281
|
@submodule ember-views
|
13685
13282
|
*/
|
13686
13283
|
|
13687
|
-
|
13284
|
+
/*** BEGIN METAMORPH HELPERS ***/
|
13688
13285
|
|
13689
13286
|
// Internet Explorer prior to 9 does not allow setting innerHTML if the first element
|
13690
13287
|
// is a "zero-scope" element. This problem can be worked around by making
|
@@ -13757,7 +13354,7 @@ var setInnerHTMLWithoutFix = function(element, html) {
|
|
13757
13354
|
}
|
13758
13355
|
};
|
13759
13356
|
|
13760
|
-
|
13357
|
+
/*** END METAMORPH HELPERS */
|
13761
13358
|
|
13762
13359
|
|
13763
13360
|
var innerHTMLTags = {};
|
@@ -13846,6 +13443,45 @@ ClassSet.prototype = {
|
|
13846
13443
|
}
|
13847
13444
|
};
|
13848
13445
|
|
13446
|
+
var BAD_TAG_NAME_TEST_REGEXP = /[^a-zA-Z\-]/;
|
13447
|
+
var BAD_TAG_NAME_REPLACE_REGEXP = /[^a-zA-Z\-]/g;
|
13448
|
+
|
13449
|
+
function stripTagName(tagName) {
|
13450
|
+
if (!tagName) {
|
13451
|
+
return tagName;
|
13452
|
+
}
|
13453
|
+
|
13454
|
+
if (!BAD_TAG_NAME_TEST_REGEXP.test(tagName)) {
|
13455
|
+
return tagName;
|
13456
|
+
}
|
13457
|
+
|
13458
|
+
return tagName.replace(BAD_TAG_NAME_REPLACE_REGEXP, '');
|
13459
|
+
}
|
13460
|
+
|
13461
|
+
var BAD_CHARS_REGEXP = /&(?!\w+;)|[<>"'`]/g;
|
13462
|
+
var POSSIBLE_CHARS_REGEXP = /[&<>"'`]/;
|
13463
|
+
|
13464
|
+
function escapeAttribute(value) {
|
13465
|
+
// Stolen shamelessly from Handlebars
|
13466
|
+
|
13467
|
+
var escape = {
|
13468
|
+
"<": "<",
|
13469
|
+
">": ">",
|
13470
|
+
'"': """,
|
13471
|
+
"'": "'",
|
13472
|
+
"`": "`"
|
13473
|
+
};
|
13474
|
+
|
13475
|
+
var escapeChar = function(chr) {
|
13476
|
+
return escape[chr] || "&";
|
13477
|
+
};
|
13478
|
+
|
13479
|
+
var string = value.toString();
|
13480
|
+
|
13481
|
+
if(!POSSIBLE_CHARS_REGEXP.test(string)) { return string; }
|
13482
|
+
return string.replace(BAD_CHARS_REGEXP, escapeChar);
|
13483
|
+
}
|
13484
|
+
|
13849
13485
|
/**
|
13850
13486
|
`Ember.RenderBuffer` gathers information regarding the a view and generates the
|
13851
13487
|
final representation. `Ember.RenderBuffer` will generate HTML which can be pushed
|
@@ -14133,14 +13769,14 @@ Ember._RenderBuffer.prototype =
|
|
14133
13769
|
style = this.elementStyle,
|
14134
13770
|
attr, prop;
|
14135
13771
|
|
14136
|
-
buffer += '<' + tagName;
|
13772
|
+
buffer += '<' + stripTagName(tagName);
|
14137
13773
|
|
14138
13774
|
if (id) {
|
14139
|
-
buffer += ' id="' +
|
13775
|
+
buffer += ' id="' + escapeAttribute(id) + '"';
|
14140
13776
|
this.elementId = null;
|
14141
13777
|
}
|
14142
13778
|
if (classes) {
|
14143
|
-
buffer += ' class="' +
|
13779
|
+
buffer += ' class="' + escapeAttribute(classes.join(' ')) + '"';
|
14144
13780
|
this.classes = null;
|
14145
13781
|
}
|
14146
13782
|
|
@@ -14149,7 +13785,7 @@ Ember._RenderBuffer.prototype =
|
|
14149
13785
|
|
14150
13786
|
for (prop in style) {
|
14151
13787
|
if (style.hasOwnProperty(prop)) {
|
14152
|
-
buffer += prop + ':' +
|
13788
|
+
buffer += prop + ':' + escapeAttribute(style[prop]) + ';';
|
14153
13789
|
}
|
14154
13790
|
}
|
14155
13791
|
|
@@ -14161,7 +13797,7 @@ Ember._RenderBuffer.prototype =
|
|
14161
13797
|
if (attrs) {
|
14162
13798
|
for (attr in attrs) {
|
14163
13799
|
if (attrs.hasOwnProperty(attr)) {
|
14164
|
-
buffer += ' ' + attr + '="' +
|
13800
|
+
buffer += ' ' + attr + '="' + escapeAttribute(attrs[attr]) + '"';
|
14165
13801
|
}
|
14166
13802
|
}
|
14167
13803
|
|
@@ -14176,7 +13812,7 @@ Ember._RenderBuffer.prototype =
|
|
14176
13812
|
if (value === true) {
|
14177
13813
|
buffer += ' ' + prop + '="' + prop + '"';
|
14178
13814
|
} else {
|
14179
|
-
buffer += ' ' + prop + '="' +
|
13815
|
+
buffer += ' ' + prop + '="' + escapeAttribute(props[prop]) + '"';
|
14180
13816
|
}
|
14181
13817
|
}
|
14182
13818
|
}
|
@@ -14191,7 +13827,7 @@ Ember._RenderBuffer.prototype =
|
|
14191
13827
|
|
14192
13828
|
pushClosingTag: function() {
|
14193
13829
|
var tagName = this.tagNames.pop();
|
14194
|
-
if (tagName) { this.buffer += '</' + tagName + '>'; }
|
13830
|
+
if (tagName) { this.buffer += '</' + stripTagName(tagName) + '>'; }
|
14195
13831
|
},
|
14196
13832
|
|
14197
13833
|
currentTagName: function() {
|
@@ -14289,32 +13925,7 @@ Ember._RenderBuffer.prototype =
|
|
14289
13925
|
|
14290
13926
|
innerString: function() {
|
14291
13927
|
return this.buffer;
|
14292
|
-
},
|
14293
|
-
|
14294
|
-
_escapeAttribute: function(value) {
|
14295
|
-
// Stolen shamelessly from Handlebars
|
14296
|
-
|
14297
|
-
var escape = {
|
14298
|
-
"<": "<",
|
14299
|
-
">": ">",
|
14300
|
-
'"': """,
|
14301
|
-
"'": "'",
|
14302
|
-
"`": "`"
|
14303
|
-
};
|
14304
|
-
|
14305
|
-
var badChars = /&(?!\w+;)|[<>"'`]/g;
|
14306
|
-
var possible = /[&<>"'`]/;
|
14307
|
-
|
14308
|
-
var escapeChar = function(chr) {
|
14309
|
-
return escape[chr] || "&";
|
14310
|
-
};
|
14311
|
-
|
14312
|
-
var string = value.toString();
|
14313
|
-
|
14314
|
-
if(!possible.test(string)) { return string; }
|
14315
|
-
return string.replace(badChars, escapeChar);
|
14316
13928
|
}
|
14317
|
-
|
14318
13929
|
};
|
14319
13930
|
|
14320
13931
|
})();
|
@@ -14340,7 +13951,8 @@ var get = Ember.get, set = Ember.set, fmt = Ember.String.fmt;
|
|
14340
13951
|
@private
|
14341
13952
|
@extends Ember.Object
|
14342
13953
|
*/
|
14343
|
-
Ember.EventDispatcher = Ember.Object.extend(
|
13954
|
+
Ember.EventDispatcher = Ember.Object.extend(
|
13955
|
+
/** @scope Ember.EventDispatcher.prototype */{
|
14344
13956
|
|
14345
13957
|
/**
|
14346
13958
|
@private
|
@@ -14372,7 +13984,7 @@ Ember.EventDispatcher = Ember.Object.extend(/** @scope Ember.EventDispatcher.pro
|
|
14372
13984
|
@method setup
|
14373
13985
|
@param addedEvents {Hash}
|
14374
13986
|
*/
|
14375
|
-
setup: function(addedEvents
|
13987
|
+
setup: function(addedEvents) {
|
14376
13988
|
var event, events = {
|
14377
13989
|
touchstart : 'touchStart',
|
14378
13990
|
touchmove : 'touchMove',
|
@@ -14405,12 +14017,7 @@ Ember.EventDispatcher = Ember.Object.extend(/** @scope Ember.EventDispatcher.pro
|
|
14405
14017
|
|
14406
14018
|
Ember.$.extend(events, addedEvents || {});
|
14407
14019
|
|
14408
|
-
|
14409
|
-
if (!Ember.isNone(rootElement)) {
|
14410
|
-
set(this, 'rootElement', rootElement);
|
14411
|
-
}
|
14412
|
-
|
14413
|
-
rootElement = Ember.$(get(this, 'rootElement'));
|
14020
|
+
var rootElement = Ember.$(get(this, 'rootElement'));
|
14414
14021
|
|
14415
14022
|
Ember.assert(fmt('You cannot use the same root element (%@) multiple times in an Ember.Application', [rootElement.selector || rootElement[0].tagName]), !rootElement.is('.ember-application'));
|
14416
14023
|
Ember.assert('You cannot make a new Ember.Application using a root element that is a descendent of an existing Ember.Application', !rootElement.closest('.ember-application').length);
|
@@ -14452,7 +14059,7 @@ Ember.EventDispatcher = Ember.Object.extend(/** @scope Ember.EventDispatcher.pro
|
|
14452
14059
|
setupHandler: function(rootElement, event, eventName) {
|
14453
14060
|
var self = this;
|
14454
14061
|
|
14455
|
-
rootElement.
|
14062
|
+
rootElement.delegate('.ember-view', event + '.ember', function(evt, triggeringManager) {
|
14456
14063
|
return Ember.handleErrors(function() {
|
14457
14064
|
var view = Ember.View.views[this.id],
|
14458
14065
|
result = true, manager = null;
|
@@ -14471,7 +14078,7 @@ Ember.EventDispatcher = Ember.Object.extend(/** @scope Ember.EventDispatcher.pro
|
|
14471
14078
|
}, this);
|
14472
14079
|
});
|
14473
14080
|
|
14474
|
-
rootElement.
|
14081
|
+
rootElement.delegate('[data-ember-action]', event + '.ember', function(evt) {
|
14475
14082
|
return Ember.handleErrors(function() {
|
14476
14083
|
var actionId = Ember.$(evt.currentTarget).attr('data-ember-action'),
|
14477
14084
|
action = Ember.Handlebars.ActionHelper.registeredActions[actionId];
|
@@ -14523,7 +14130,7 @@ Ember.EventDispatcher = Ember.Object.extend(/** @scope Ember.EventDispatcher.pro
|
|
14523
14130
|
|
14524
14131
|
destroy: function() {
|
14525
14132
|
var rootElement = get(this, 'rootElement');
|
14526
|
-
Ember.$(rootElement).
|
14133
|
+
Ember.$(rootElement).undelegate('.ember').removeClass('ember-application');
|
14527
14134
|
return this._super();
|
14528
14135
|
}
|
14529
14136
|
});
|
@@ -15520,8 +15127,6 @@ Ember.View = Ember.CoreView.extend(
|
|
15520
15127
|
templateForName: function(name, type) {
|
15521
15128
|
if (!name) { return; }
|
15522
15129
|
Ember.assert("templateNames are not allowed to contain periods: "+name, name.indexOf('.') === -1);
|
15523
|
-
|
15524
|
-
// the defaultContainer is deprecated
|
15525
15130
|
var container = this.container || (Ember.Container && Ember.Container.defaultContainer);
|
15526
15131
|
return container && container.lookup('template:' + name);
|
15527
15132
|
},
|
@@ -17640,8 +17245,6 @@ Ember.ContainerView = Ember.View.extend(Ember.MutableArray, {
|
|
17640
17245
|
|
17641
17246
|
replace: function(idx, removedCount, addedViews) {
|
17642
17247
|
var addedCount = addedViews ? get(addedViews, 'length') : 0;
|
17643
|
-
var self = this;
|
17644
|
-
Ember.assert("You can't add a child to a container that is already a child of another view", Ember.A(addedViews).every(function(item) { return !get(item, '_parentView') || get(item, '_parentView') === self; }));
|
17645
17248
|
|
17646
17249
|
this.arrayContentWillChange(idx, removedCount, addedCount);
|
17647
17250
|
this.childViewsWillChange(this._childViews, idx, removedCount);
|
@@ -17682,7 +17285,7 @@ Ember.ContainerView = Ember.View.extend(Ember.MutableArray, {
|
|
17682
17285
|
});
|
17683
17286
|
},
|
17684
17287
|
|
17685
|
-
instrumentName: 'container',
|
17288
|
+
instrumentName: 'render.container',
|
17686
17289
|
|
17687
17290
|
/**
|
17688
17291
|
@private
|
@@ -17762,7 +17365,6 @@ Ember.ContainerView = Ember.View.extend(Ember.MutableArray, {
|
|
17762
17365
|
_currentViewDidChange: Ember.observer(function() {
|
17763
17366
|
var currentView = get(this, 'currentView');
|
17764
17367
|
if (currentView) {
|
17765
|
-
Ember.assert("You tried to set a current view that already has a parent. Make sure you don't have multiple outlets in the same view.", !get(currentView, '_parentView'));
|
17766
17368
|
this.pushObject(currentView);
|
17767
17369
|
}
|
17768
17370
|
}, 'currentView'),
|
@@ -18003,7 +17605,8 @@ var get = Ember.get, set = Ember.set, fmt = Ember.String.fmt;
|
|
18003
17605
|
@extends Ember.ContainerView
|
18004
17606
|
@since Ember 0.9
|
18005
17607
|
*/
|
18006
|
-
Ember.CollectionView = Ember.ContainerView.extend(
|
17608
|
+
Ember.CollectionView = Ember.ContainerView.extend(
|
17609
|
+
/** @scope Ember.CollectionView.prototype */ {
|
18007
17610
|
|
18008
17611
|
/**
|
18009
17612
|
A list of items to be displayed by the `Ember.CollectionView`.
|
@@ -18129,10 +17732,9 @@ Ember.CollectionView = Ember.ContainerView.extend(/** @scope Ember.CollectionVie
|
|
18129
17732
|
This array observer is added in `contentDidChange`.
|
18130
17733
|
|
18131
17734
|
@method arrayDidChange
|
18132
|
-
@param {Array}
|
18133
|
-
@param {
|
18134
|
-
@param {Number}
|
18135
|
-
@param {Number} added number of object added to content
|
17735
|
+
@param {Array} addedObjects the objects that were added to the content
|
17736
|
+
@param {Array} removedObjects the objects that were removed from the content
|
17737
|
+
@param {Number} changeIndex the index at which the changes occurred
|
18136
17738
|
*/
|
18137
17739
|
arrayDidChange: function(content, start, removed, added) {
|
18138
17740
|
var itemViewClass = get(this, 'itemViewClass'),
|
@@ -20033,8 +19635,7 @@ if(!Handlebars && typeof require === 'function') {
|
|
20033
19635
|
Handlebars = require('handlebars');
|
20034
19636
|
}
|
20035
19637
|
|
20036
|
-
Ember.assert("Ember Handlebars requires Handlebars
|
20037
|
-
Ember.assert("Ember Handlebars requires Handlebars version 1.0.0-rc.4, COMPILER_REVISION expected: 3, got: " + Handlebars.COMPILER_REVISION + " – Please note: Builds of master may have other COMPILER_REVISION values.", Handlebars.COMPILER_REVISION === 3);
|
19638
|
+
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);
|
20038
19639
|
|
20039
19640
|
/**
|
20040
19641
|
Prepares the Handlebars templating library for use inside Ember's view
|
@@ -20052,25 +19653,10 @@ Ember.assert("Ember Handlebars requires Handlebars version 1.0.0-rc.4, COMPILER_
|
|
20052
19653
|
*/
|
20053
19654
|
Ember.Handlebars = objectCreate(Handlebars);
|
20054
19655
|
|
20055
|
-
function makeBindings(options) {
|
20056
|
-
var hash = options.hash,
|
20057
|
-
hashType = options.hashTypes;
|
20058
|
-
|
20059
|
-
for (var prop in hash) {
|
20060
|
-
if (hashType[prop] === 'ID') {
|
20061
|
-
hash[prop + 'Binding'] = hash[prop];
|
20062
|
-
hashType[prop + 'Binding'] = 'STRING';
|
20063
|
-
delete hash[prop];
|
20064
|
-
delete hashType[prop];
|
20065
|
-
}
|
20066
|
-
}
|
20067
|
-
}
|
20068
|
-
|
20069
19656
|
Ember.Handlebars.helper = function(name, value) {
|
20070
19657
|
if (Ember.View.detect(value)) {
|
20071
|
-
Ember.Handlebars.registerHelper(name, function(options) {
|
19658
|
+
Ember.Handlebars.registerHelper(name, function(name, options) {
|
20072
19659
|
Ember.assert("You can only pass attributes as parameters to a application-defined helper", arguments.length < 3);
|
20073
|
-
makeBindings(options);
|
20074
19660
|
return Ember.Handlebars.helpers.view.call(this, value, options);
|
20075
19661
|
});
|
20076
19662
|
} else {
|
@@ -20446,15 +20032,15 @@ Ember.Handlebars.registerHelper('helperMissing', function(path, options) {
|
|
20446
20032
|
});
|
20447
20033
|
```
|
20448
20034
|
|
20449
|
-
Which allows for template syntax such as
|
20450
|
-
|
20035
|
+
Which allows for template syntax such as {{concatenate prop1 prop2}} or
|
20036
|
+
{{concatenate prop1 prop2 prop3}}. If any of the properties change,
|
20451
20037
|
the helpr will re-render. Note that dependency keys cannot be
|
20452
20038
|
using in conjunction with multi-property helpers, since it is ambiguous
|
20453
20039
|
which property the dependent keys would belong to.
|
20454
20040
|
|
20455
20041
|
## Use with unbound helper
|
20456
20042
|
|
20457
|
-
The
|
20043
|
+
The {{unbound}} helper can be used with bound helper invocations
|
20458
20044
|
to render them in their unbound form, e.g.
|
20459
20045
|
|
20460
20046
|
```handlebars
|
@@ -20464,10 +20050,6 @@ Ember.Handlebars.registerHelper('helperMissing', function(path, options) {
|
|
20464
20050
|
In this example, if the name property changes, the helper
|
20465
20051
|
will not re-render.
|
20466
20052
|
|
20467
|
-
## Use with blocks not supported
|
20468
|
-
|
20469
|
-
Bound helpers do not support use with Handlebars blocks or
|
20470
|
-
the addition of child views of any kind.
|
20471
20053
|
|
20472
20054
|
@method registerBoundHelper
|
20473
20055
|
@for Ember.Handlebars
|
@@ -20491,8 +20073,6 @@ Ember.Handlebars.registerBoundHelper = function(name, fn) {
|
|
20491
20073
|
pathRoot, path,
|
20492
20074
|
loc, hashOption;
|
20493
20075
|
|
20494
|
-
Ember.assert("registerBoundHelper-generated helpers do not support use with Handlebars blocks.", !options.fn);
|
20495
|
-
|
20496
20076
|
// Detect bound options (e.g. countBinding="otherCount")
|
20497
20077
|
hash.boundOptions = {};
|
20498
20078
|
for (hashOption in hash) {
|
@@ -20653,6 +20233,7 @@ Ember.Handlebars.template = function(spec){
|
|
20653
20233
|
return t;
|
20654
20234
|
};
|
20655
20235
|
|
20236
|
+
|
20656
20237
|
})();
|
20657
20238
|
|
20658
20239
|
|
@@ -20788,7 +20369,7 @@ Ember._Metamorph = Ember.Mixin.create({
|
|
20788
20369
|
isVirtual: true,
|
20789
20370
|
tagName: '',
|
20790
20371
|
|
20791
|
-
instrumentName: 'metamorph',
|
20372
|
+
instrumentName: 'render.metamorph',
|
20792
20373
|
|
20793
20374
|
init: function() {
|
20794
20375
|
this._super();
|
@@ -20977,7 +20558,7 @@ merge(states.inDOM, {
|
|
20977
20558
|
@private
|
20978
20559
|
*/
|
20979
20560
|
Ember._HandlebarsBoundView = Ember._MetamorphView.extend({
|
20980
|
-
instrumentName: 'boundHandlebars',
|
20561
|
+
instrumentName: 'render.boundHandlebars',
|
20981
20562
|
states: states,
|
20982
20563
|
|
20983
20564
|
/**
|
@@ -22466,7 +22047,6 @@ Ember.Handlebars.EachView = Ember.CollectionView.extend(Ember._Metamorph, {
|
|
22466
22047
|
set(controller, 'container', get(this, 'controller.container'));
|
22467
22048
|
set(controller, '_eachView', this);
|
22468
22049
|
set(controller, 'target', get(this, 'controller'));
|
22469
|
-
set(controller, 'parentController', get(this, 'controller'));
|
22470
22050
|
|
22471
22051
|
this.disableContentObservers(function() {
|
22472
22052
|
set(this, 'content', controller);
|
@@ -22740,9 +22320,6 @@ GroupedEach.prototype = {
|
|
22740
22320
|
{{/each}}
|
22741
22321
|
```
|
22742
22322
|
|
22743
|
-
Each itemController will receive a reference to the current controller as
|
22744
|
-
a `parentController` property.
|
22745
|
-
|
22746
22323
|
@method each
|
22747
22324
|
@for Ember.Handlebars.helpers
|
22748
22325
|
@param [name] {String} name for item (used with `in`)
|
@@ -22882,7 +22459,7 @@ Ember.Handlebars.registerHelper('partial', function(name, options) {
|
|
22882
22459
|
var view = options.data.view,
|
22883
22460
|
underscoredName = nameParts.join("/"),
|
22884
22461
|
template = view.templateForName(underscoredName),
|
22885
|
-
deprecatedTemplate =
|
22462
|
+
deprecatedTemplate = view.templateForName(name);
|
22886
22463
|
|
22887
22464
|
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);
|
22888
22465
|
Ember.assert("Unable to find partial with name '"+name+"'.", template || deprecatedTemplate);
|
@@ -23008,7 +22585,7 @@ var set = Ember.set, get = Ember.get;
|
|
23008
22585
|
You can add a `label` tag yourself in the template where the `Ember.Checkbox`
|
23009
22586
|
is being used.
|
23010
22587
|
|
23011
|
-
```
|
22588
|
+
```html
|
23012
22589
|
<label>
|
23013
22590
|
{{view Ember.Checkbox classNames="applicaton-specific-checkbox"}}
|
23014
22591
|
Some Title
|
@@ -23228,7 +22805,7 @@ Ember.TextField = Ember.View.extend(Ember.TextSupport,
|
|
23228
22805
|
* `enter`: the user pressed enter
|
23229
22806
|
* `keypress`: the user pressed a key
|
23230
22807
|
|
23231
|
-
@property
|
22808
|
+
@property on
|
23232
22809
|
@type String
|
23233
22810
|
@default enter
|
23234
22811
|
*/
|
@@ -23795,38 +23372,34 @@ Ember.Select = Ember.View.extend(
|
|
23795
23372
|
tagName: 'select',
|
23796
23373
|
classNames: ['ember-select'],
|
23797
23374
|
defaultTemplate: Ember.Handlebars.template(function anonymous(Handlebars,depth0,helpers,partials,data) {
|
23798
|
-
this.compilerInfo = [
|
23375
|
+
this.compilerInfo = [2,'>= 1.0.0-rc.3'];
|
23799
23376
|
helpers = helpers || Ember.Handlebars.helpers; data = data || {};
|
23800
|
-
var buffer = '', stack1, hashTypes,
|
23377
|
+
var buffer = '', stack1, hashTypes, escapeExpression=this.escapeExpression, self=this;
|
23801
23378
|
|
23802
23379
|
function program1(depth0,data) {
|
23803
23380
|
|
23804
|
-
var buffer = '', hashTypes
|
23381
|
+
var buffer = '', hashTypes;
|
23805
23382
|
data.buffer.push("<option value=\"\">");
|
23806
23383
|
hashTypes = {};
|
23807
|
-
|
23808
|
-
data.buffer.push(escapeExpression(helpers._triageMustache.call(depth0, "view.prompt", {hash:{},contexts:[depth0],types:["ID"],hashContexts:hashContexts,hashTypes:hashTypes,data:data})));
|
23384
|
+
data.buffer.push(escapeExpression(helpers._triageMustache.call(depth0, "view.prompt", {hash:{},contexts:[depth0],types:["ID"],hashTypes:hashTypes,data:data})));
|
23809
23385
|
data.buffer.push("</option>");
|
23810
23386
|
return buffer;
|
23811
23387
|
}
|
23812
23388
|
|
23813
23389
|
function program3(depth0,data) {
|
23814
23390
|
|
23815
|
-
var
|
23816
|
-
hashContexts = {'contentBinding': depth0};
|
23391
|
+
var hashTypes;
|
23817
23392
|
hashTypes = {'contentBinding': "STRING"};
|
23818
23393
|
data.buffer.push(escapeExpression(helpers.view.call(depth0, "view.optionView", {hash:{
|
23819
23394
|
'contentBinding': ("this")
|
23820
|
-
},contexts:[depth0],types:["ID"],
|
23395
|
+
},contexts:[depth0],types:["ID"],hashTypes:hashTypes,data:data})));
|
23821
23396
|
}
|
23822
23397
|
|
23823
23398
|
hashTypes = {};
|
23824
|
-
|
23825
|
-
stack1 = helpers['if'].call(depth0, "view.prompt", {hash:{},inverse:self.noop,fn:self.program(1, program1, data),contexts:[depth0],types:["ID"],hashContexts:hashContexts,hashTypes:hashTypes,data:data});
|
23399
|
+
stack1 = helpers['if'].call(depth0, "view.prompt", {hash:{},inverse:self.noop,fn:self.program(1, program1, data),contexts:[depth0],types:["ID"],hashTypes:hashTypes,data:data});
|
23826
23400
|
if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
|
23827
23401
|
hashTypes = {};
|
23828
|
-
|
23829
|
-
stack1 = helpers.each.call(depth0, "view.content", {hash:{},inverse:self.noop,fn:self.program(3, program3, data),contexts:[depth0],types:["ID"],hashContexts:hashContexts,hashTypes:hashTypes,data:data});
|
23402
|
+
stack1 = helpers.each.call(depth0, "view.content", {hash:{},inverse:self.noop,fn:self.program(3, program3, data),contexts:[depth0],types:["ID"],hashTypes:hashTypes,data:data});
|
23830
23403
|
if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
|
23831
23404
|
return buffer;
|
23832
23405
|
|
@@ -23964,9 +23537,9 @@ function program3(depth0,data) {
|
|
23964
23537
|
selection;
|
23965
23538
|
|
23966
23539
|
if (value !== selectedValue) {
|
23967
|
-
selection = content
|
23540
|
+
selection = content.find(function(obj) {
|
23968
23541
|
return value === (valuePath ? get(obj, valuePath) : obj);
|
23969
|
-
})
|
23542
|
+
});
|
23970
23543
|
|
23971
23544
|
this.set('selection', selection);
|
23972
23545
|
}
|
@@ -23988,7 +23561,7 @@ function program3(depth0,data) {
|
|
23988
23561
|
content = get(this, 'content'),
|
23989
23562
|
prompt = get(this, 'prompt');
|
23990
23563
|
|
23991
|
-
if (!
|
23564
|
+
if (!get(content, 'length')) { return; }
|
23992
23565
|
if (prompt && selectedIndex === 0) { set(this, 'selection', null); return; }
|
23993
23566
|
|
23994
23567
|
if (prompt) { selectedIndex -= 1; }
|
@@ -24069,15 +23642,6 @@ function normalizeHash(hash, hashTypes) {
|
|
24069
23642
|
}
|
24070
23643
|
}
|
24071
23644
|
|
24072
|
-
/**
|
24073
|
-
* `{{input}}` inserts a new instance of either Ember.TextField or
|
24074
|
-
* Ember.Checkbox, depending on the `type` option passed in. If no `type`
|
24075
|
-
* is supplied it defaults to Ember.TextField.
|
24076
|
-
*
|
24077
|
-
* @method input
|
24078
|
-
* @for Ember.Handlebars.helpers
|
24079
|
-
* @param {Hash} options
|
24080
|
-
*/
|
24081
23645
|
Ember.Handlebars.registerHelper('input', function(options) {
|
24082
23646
|
Ember.assert('You can only pass attributes to the `input` helper, not arguments', arguments.length < 2);
|
24083
23647
|
|
@@ -24094,20 +23658,12 @@ Ember.Handlebars.registerHelper('input', function(options) {
|
|
24094
23658
|
if (inputType === 'checkbox') {
|
24095
23659
|
return Ember.Handlebars.helpers.view.call(this, Ember.Checkbox, options);
|
24096
23660
|
} else {
|
24097
|
-
hash.type = inputType
|
23661
|
+
hash.type = inputType;
|
24098
23662
|
hash.onEvent = onEvent || 'enter';
|
24099
23663
|
return Ember.Handlebars.helpers.view.call(this, Ember.TextField, options);
|
24100
23664
|
}
|
24101
23665
|
});
|
24102
23666
|
|
24103
|
-
/**
|
24104
|
-
* `{{textarea}}` inserts a new instance of Ember.TextArea into the template
|
24105
|
-
* passing its options to `Ember.TextArea`'s `create` method.
|
24106
|
-
*
|
24107
|
-
* @method textarea
|
24108
|
-
* @for Ember.Handlebars.helpers
|
24109
|
-
* @param {Hash} options
|
24110
|
-
*/
|
24111
23667
|
Ember.Handlebars.registerHelper('textarea', function(options) {
|
24112
23668
|
Ember.assert('You can only pass attributes to the `textarea` helper, not arguments', arguments.length < 2);
|
24113
23669
|
|
@@ -24565,7 +24121,8 @@ var get = Ember.get, set = Ember.set;
|
|
24565
24121
|
@namespace Ember
|
24566
24122
|
@extends Ember.Namespace
|
24567
24123
|
*/
|
24568
|
-
Ember.Application = Ember.Namespace.extend(
|
24124
|
+
Ember.Application = Ember.Namespace.extend(
|
24125
|
+
/** @scope Ember.Application.prototype */{
|
24569
24126
|
|
24570
24127
|
/**
|
24571
24128
|
The root DOM element of the Application. This can be specified as an
|
@@ -24914,6 +24471,7 @@ Ember.Application.registerInjection({
|
|
24914
24471
|
|
24915
24472
|
Ember.runLoadHooks('Ember.Application', Ember.Application);
|
24916
24473
|
|
24474
|
+
|
24917
24475
|
})();
|
24918
24476
|
|
24919
24477
|
|
@@ -25793,7 +25351,7 @@ Ember.HashLocation = Ember.Object.extend({
|
|
25793
25351
|
var self = this;
|
25794
25352
|
var guid = Ember.guidFor(this);
|
25795
25353
|
|
25796
|
-
Ember.$(window).
|
25354
|
+
Ember.$(window).bind('hashchange.ember-location-'+guid, function() {
|
25797
25355
|
var path = location.hash.substr(1);
|
25798
25356
|
if (get(self, 'lastSetURL') === path) { return; }
|
25799
25357
|
|
@@ -25951,7 +25509,7 @@ Ember.HistoryLocation = Ember.Object.extend({
|
|
25951
25509
|
onUpdateURL: function(callback) {
|
25952
25510
|
var guid = Ember.guidFor(this);
|
25953
25511
|
|
25954
|
-
Ember.$(window).
|
25512
|
+
Ember.$(window).bind('popstate.ember-location-'+guid, function(e) {
|
25955
25513
|
if(!popstateReady) {
|
25956
25514
|
return;
|
25957
25515
|
}
|
@@ -26479,7 +26037,8 @@ var get = Ember.get, set = Ember.set;
|
|
26479
26037
|
@namespace Ember
|
26480
26038
|
@extends Ember.StateManager
|
26481
26039
|
*/
|
26482
|
-
Ember.Router = Ember.StateManager.extend(
|
26040
|
+
Ember.Router = Ember.StateManager.extend(
|
26041
|
+
/** @scope Ember.Router.prototype */ {
|
26483
26042
|
|
26484
26043
|
/**
|
26485
26044
|
@property initialState
|