ember-source 1.0.0.rc3.4 → 1.0.0.rc3.5
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-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
|