ember-source 2.0.3.1 → 2.1.0.beta.1
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.
- checksums.yaml +4 -4
- data/VERSION +1 -1
- data/dist/ember-template-compiler.js +1455 -1072
- data/dist/ember-testing.js +233 -151
- data/dist/ember.debug.js +2609 -2019
- data/dist/ember.js +2609 -2019
- data/dist/ember.min.js +14 -14
- data/dist/ember.prod.js +2152 -1713
- data/dist/version-test.js +13 -0
- metadata +5 -8
- data/dist/ember-runtime.js +0 -21795
- data/dist/ember-tests.js +0 -67864
- data/dist/ember-tests.prod.js +0 -67737
- data/dist/ember.debug.cjs.js +0 -52806
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6f9cb78ab289bef4b21a2365d166d7183872d41d
|
4
|
+
data.tar.gz: 17f6a12bf1ece2899c2bbc3356b6e00a2214f404
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2bac0642a221c467d6ebe10378e638fa41d3cac939792ecfd8ff7dd6d6fb18fe2a20f5f393459be9a3112a6bd04b78f118c0d977e682c9caee3fb4bd82f11b59
|
7
|
+
data.tar.gz: edd837b7f89eabbc82ff5333bc47b28e29350780c4bbba77a93a4aa653103be018852703cbd64f34a287cc798d6b07ed673f50478d36a528020fb0e695e2d648
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2.0.
|
1
|
+
2.1.0-beta.1
|
@@ -5,7 +5,7 @@
|
|
5
5
|
* Portions Copyright 2008-2011 Apple Inc. All rights reserved.
|
6
6
|
* @license Licensed under MIT license
|
7
7
|
* See https://raw.github.com/emberjs/ember.js/master/LICENSE
|
8
|
-
* @version 2.0.
|
8
|
+
* @version 2.1.0-beta.1
|
9
9
|
*/
|
10
10
|
|
11
11
|
(function() {
|
@@ -67,7 +67,7 @@ var mainContext = this;
|
|
67
67
|
var reified = [];
|
68
68
|
var length = deps.length;
|
69
69
|
|
70
|
-
for (var i=0; i<length; i++) {
|
70
|
+
for (var i = 0; i < length; i++) {
|
71
71
|
if (deps[i] === 'exports') {
|
72
72
|
reified.push(exports);
|
73
73
|
} else {
|
@@ -87,7 +87,7 @@ var mainContext = this;
|
|
87
87
|
var parts = child.split('/');
|
88
88
|
var parentBase = name.split('/').slice(0, -1);
|
89
89
|
|
90
|
-
for (var i=0, l=parts.length; i<l; i++) {
|
90
|
+
for (var i = 0, l = parts.length; i < l; i++) {
|
91
91
|
var part = parts[i];
|
92
92
|
|
93
93
|
if (part === '..') {
|
@@ -1160,13 +1160,13 @@ enifed('backburner/utils', ['exports'], function (exports) {
|
|
1160
1160
|
};
|
1161
1161
|
}
|
1162
1162
|
});
|
1163
|
-
enifed('ember-debug', ['exports', 'ember-metal/core', 'ember-metal/features', 'ember-metal/error', 'ember-metal/logger', 'ember-debug/
|
1164
|
-
/*global __fail__*/
|
1165
|
-
|
1163
|
+
enifed('ember-debug', ['exports', 'ember-metal/core', 'ember-metal/assert', 'ember-metal/features', 'ember-metal/error', 'ember-metal/logger', 'ember-metal/environment', 'ember-debug/deprecate', 'ember-debug/warn', 'ember-debug/is-plain-function'], function (exports, _emberMetalCore, _emberMetalAssert, _emberMetalFeatures, _emberMetalError, _emberMetalLogger, _emberMetalEnvironment, _emberDebugDeprecate, _emberDebugWarn, _emberDebugIsPlainFunction) {
|
1166
1164
|
'use strict';
|
1167
1165
|
|
1168
1166
|
exports._warnIfUsingStrippedFeatureFlags = _warnIfUsingStrippedFeatureFlags;
|
1169
1167
|
|
1168
|
+
_emberMetalCore.default.deprecate = _emberDebugDeprecate.default;
|
1169
|
+
|
1170
1170
|
/**
|
1171
1171
|
@module ember
|
1172
1172
|
@submodule ember-debug
|
@@ -1177,10 +1177,6 @@ enifed('ember-debug', ['exports', 'ember-metal/core', 'ember-metal/features', 'e
|
|
1177
1177
|
@public
|
1178
1178
|
*/
|
1179
1179
|
|
1180
|
-
function isPlainFunction(test) {
|
1181
|
-
return typeof test === 'function' && test.PrototypeMixin === undefined;
|
1182
|
-
}
|
1183
|
-
|
1184
1180
|
/**
|
1185
1181
|
Define an assertion that will throw an exception if the condition is not
|
1186
1182
|
met. Ember build tools will remove any calls to `Ember.assert()` when
|
@@ -1202,10 +1198,10 @@ enifed('ember-debug', ['exports', 'ember-metal/core', 'ember-metal/features', 'e
|
|
1202
1198
|
its return value will be used as condition.
|
1203
1199
|
@public
|
1204
1200
|
*/
|
1205
|
-
|
1201
|
+
function assert(desc, test) {
|
1206
1202
|
var throwAssertion;
|
1207
1203
|
|
1208
|
-
if (
|
1204
|
+
if (_emberDebugIsPlainFunction.default(test)) {
|
1209
1205
|
throwAssertion = !test();
|
1210
1206
|
} else {
|
1211
1207
|
throwAssertion = !test;
|
@@ -1214,26 +1210,7 @@ enifed('ember-debug', ['exports', 'ember-metal/core', 'ember-metal/features', 'e
|
|
1214
1210
|
if (throwAssertion) {
|
1215
1211
|
throw new _emberMetalError.default('Assertion Failed: ' + desc);
|
1216
1212
|
}
|
1217
|
-
}
|
1218
|
-
|
1219
|
-
/**
|
1220
|
-
Display a warning with the provided message. Ember build tools will
|
1221
|
-
remove any calls to `Ember.warn()` when doing a production build.
|
1222
|
-
|
1223
|
-
@method warn
|
1224
|
-
@param {String} message A warning to display.
|
1225
|
-
@param {Boolean} test An optional boolean. If falsy, the warning
|
1226
|
-
will be displayed.
|
1227
|
-
@public
|
1228
|
-
*/
|
1229
|
-
_emberMetalCore.default.warn = function (message, test) {
|
1230
|
-
if (!test) {
|
1231
|
-
_emberMetalLogger.default.warn('WARNING: ' + message);
|
1232
|
-
if ('trace' in _emberMetalLogger.default) {
|
1233
|
-
_emberMetalLogger.default.trace();
|
1234
|
-
}
|
1235
|
-
}
|
1236
|
-
};
|
1213
|
+
}
|
1237
1214
|
|
1238
1215
|
/**
|
1239
1216
|
Display a debug notice. Ember build tools will remove any calls to
|
@@ -1247,90 +1224,9 @@ enifed('ember-debug', ['exports', 'ember-metal/core', 'ember-metal/features', 'e
|
|
1247
1224
|
@param {String} message A debug message to display.
|
1248
1225
|
@public
|
1249
1226
|
*/
|
1250
|
-
|
1227
|
+
function debug(message) {
|
1251
1228
|
_emberMetalLogger.default.debug('DEBUG: ' + message);
|
1252
|
-
}
|
1253
|
-
|
1254
|
-
/**
|
1255
|
-
Display a deprecation warning with the provided message and a stack trace
|
1256
|
-
(Chrome and Firefox only). Ember build tools will remove any calls to
|
1257
|
-
`Ember.deprecate()` when doing a production build.
|
1258
|
-
|
1259
|
-
@method deprecate
|
1260
|
-
@param {String} message A description of the deprecation.
|
1261
|
-
@param {Boolean|Function} test An optional boolean. If falsy, the deprecation
|
1262
|
-
will be displayed. If this is a function, it will be executed and its return
|
1263
|
-
value will be used as condition.
|
1264
|
-
@param {Object} options An optional object that can be used to pass
|
1265
|
-
in a `url` to the transition guide on the emberjs.com website, and a unique
|
1266
|
-
`id` for this deprecation. The `id` can be used by Ember debugging tools
|
1267
|
-
to change the behavior (raise, log or silence) for that specific deprecation.
|
1268
|
-
The `id` should be namespaced by dots, e.g. "view.helper.select".
|
1269
|
-
@public
|
1270
|
-
*/
|
1271
|
-
_emberMetalCore.default.deprecate = function (message, test, options) {
|
1272
|
-
if (_emberMetalCore.default.ENV.RAISE_ON_DEPRECATION) {
|
1273
|
-
_emberDebugDeprecationManager.default.setDefaultLevel(_emberDebugDeprecationManager.deprecationLevels.RAISE);
|
1274
|
-
}
|
1275
|
-
if (_emberDebugDeprecationManager.default.getLevel(options && options.id) === _emberDebugDeprecationManager.deprecationLevels.SILENCE) {
|
1276
|
-
return;
|
1277
|
-
}
|
1278
|
-
|
1279
|
-
var noDeprecation;
|
1280
|
-
|
1281
|
-
if (isPlainFunction(test)) {
|
1282
|
-
noDeprecation = test();
|
1283
|
-
} else {
|
1284
|
-
noDeprecation = test;
|
1285
|
-
}
|
1286
|
-
|
1287
|
-
if (noDeprecation) {
|
1288
|
-
return;
|
1289
|
-
}
|
1290
|
-
|
1291
|
-
if (options && options.id) {
|
1292
|
-
message = message + (' [deprecation id: ' + options.id + ']');
|
1293
|
-
}
|
1294
|
-
|
1295
|
-
if (_emberDebugDeprecationManager.default.getLevel(options && options.id) === _emberDebugDeprecationManager.deprecationLevels.RAISE) {
|
1296
|
-
throw new _emberMetalError.default(message);
|
1297
|
-
}
|
1298
|
-
|
1299
|
-
var error;
|
1300
|
-
|
1301
|
-
// When using new Error, we can't do the arguments check for Chrome. Alternatives are welcome
|
1302
|
-
try {
|
1303
|
-
__fail__.fail();
|
1304
|
-
} catch (e) {
|
1305
|
-
error = e;
|
1306
|
-
}
|
1307
|
-
|
1308
|
-
if (arguments.length === 3) {
|
1309
|
-
_emberMetalCore.default.assert('options argument to Ember.deprecate should be an object', options && typeof options === 'object');
|
1310
|
-
if (options.url) {
|
1311
|
-
message += ' See ' + options.url + ' for more details.';
|
1312
|
-
}
|
1313
|
-
}
|
1314
|
-
|
1315
|
-
if (_emberMetalCore.default.LOG_STACKTRACE_ON_DEPRECATION && error.stack) {
|
1316
|
-
var stack;
|
1317
|
-
var stackStr = '';
|
1318
|
-
|
1319
|
-
if (error['arguments']) {
|
1320
|
-
// Chrome
|
1321
|
-
stack = error.stack.replace(/^\s+at\s+/gm, '').replace(/^([^\(]+?)([\n$])/gm, '{anonymous}($1)$2').replace(/^Object.<anonymous>\s*\(([^\)]+)\)/gm, '{anonymous}($1)').split('\n');
|
1322
|
-
stack.shift();
|
1323
|
-
} else {
|
1324
|
-
// Firefox
|
1325
|
-
stack = error.stack.replace(/(?:\n@:0)?\s+$/m, '').replace(/^\(/gm, '{anonymous}(').split('\n');
|
1326
|
-
}
|
1327
|
-
|
1328
|
-
stackStr = '\n ' + stack.slice(2).join('\n ');
|
1329
|
-
message = message + stackStr;
|
1330
|
-
}
|
1331
|
-
|
1332
|
-
_emberMetalLogger.default.warn('DEPRECATION: ' + message);
|
1333
|
-
};
|
1229
|
+
}
|
1334
1230
|
|
1335
1231
|
/**
|
1336
1232
|
Alias an old, deprecated method with its new counterpart.
|
@@ -1352,7 +1248,7 @@ enifed('ember-debug', ['exports', 'ember-metal/core', 'ember-metal/features', 'e
|
|
1352
1248
|
@return {Function} a new function that wrapped the original function with a deprecation warning
|
1353
1249
|
@private
|
1354
1250
|
*/
|
1355
|
-
|
1251
|
+
function deprecateFunc() {
|
1356
1252
|
for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
|
1357
1253
|
args[_key] = arguments[_key];
|
1358
1254
|
}
|
@@ -1387,7 +1283,7 @@ enifed('ember-debug', ['exports', 'ember-metal/core', 'ember-metal/features', 'e
|
|
1387
1283
|
|
1388
1284
|
if (typeof _ret2 === 'object') return _ret2.v;
|
1389
1285
|
}
|
1390
|
-
}
|
1286
|
+
}
|
1391
1287
|
|
1392
1288
|
/**
|
1393
1289
|
Run a function meant for debugging. Ember build tools will remove any calls to
|
@@ -1408,9 +1304,16 @@ enifed('ember-debug', ['exports', 'ember-metal/core', 'ember-metal/features', 'e
|
|
1408
1304
|
@since 1.5.0
|
1409
1305
|
@public
|
1410
1306
|
*/
|
1411
|
-
|
1307
|
+
function runInDebug(func) {
|
1412
1308
|
func();
|
1413
|
-
}
|
1309
|
+
}
|
1310
|
+
|
1311
|
+
_emberMetalAssert.registerDebugFunction('assert', assert);
|
1312
|
+
_emberMetalAssert.registerDebugFunction('warn', _emberDebugWarn.default);
|
1313
|
+
_emberMetalAssert.registerDebugFunction('debug', debug);
|
1314
|
+
_emberMetalAssert.registerDebugFunction('deprecate', _emberDebugDeprecate.default);
|
1315
|
+
_emberMetalAssert.registerDebugFunction('deprecateFunc', deprecateFunc);
|
1316
|
+
_emberMetalAssert.registerDebugFunction('runInDebug', runInDebug);
|
1414
1317
|
|
1415
1318
|
/**
|
1416
1319
|
Will call `Ember.warn()` if ENABLE_ALL_FEATURES, ENABLE_OPTIONAL_FEATURES, or
|
@@ -1425,12 +1328,12 @@ enifed('ember-debug', ['exports', 'ember-metal/core', 'ember-metal/features', 'e
|
|
1425
1328
|
|
1426
1329
|
function _warnIfUsingStrippedFeatureFlags(FEATURES, featuresWereStripped) {
|
1427
1330
|
if (featuresWereStripped) {
|
1428
|
-
_emberMetalCore.default.warn('Ember.ENV.ENABLE_ALL_FEATURES is only available in canary builds.', !_emberMetalCore.default.ENV.ENABLE_ALL_FEATURES);
|
1429
|
-
_emberMetalCore.default.warn('Ember.ENV.ENABLE_OPTIONAL_FEATURES is only available in canary builds.', !_emberMetalCore.default.ENV.ENABLE_OPTIONAL_FEATURES);
|
1331
|
+
_emberMetalCore.default.warn('Ember.ENV.ENABLE_ALL_FEATURES is only available in canary builds.', !_emberMetalCore.default.ENV.ENABLE_ALL_FEATURES, { id: 'ember-debug.feature-flag-with-features-stripped' });
|
1332
|
+
_emberMetalCore.default.warn('Ember.ENV.ENABLE_OPTIONAL_FEATURES is only available in canary builds.', !_emberMetalCore.default.ENV.ENABLE_OPTIONAL_FEATURES, { id: 'ember-debug.feature-flag-with-features-stripped' });
|
1430
1333
|
|
1431
1334
|
for (var key in FEATURES) {
|
1432
1335
|
if (FEATURES.hasOwnProperty(key) && key !== 'isEnabled') {
|
1433
|
-
_emberMetalCore.default.warn('FEATURE["' + key + '"] is set as enabled, but FEATURE flags are only available in canary builds.', !FEATURES[key]);
|
1336
|
+
_emberMetalCore.default.warn('FEATURE["' + key + '"] is set as enabled, but FEATURE flags are only available in canary builds.', !FEATURES[key], { id: 'ember-debug.feature-flag-with-features-stripped' });
|
1434
1337
|
}
|
1435
1338
|
}
|
1436
1339
|
}
|
@@ -1465,12 +1368,10 @@ enifed('ember-debug', ['exports', 'ember-metal/core', 'ember-metal/features', 'e
|
|
1465
1368
|
}
|
1466
1369
|
}
|
1467
1370
|
|
1468
|
-
_emberMetalCore.default.Debug = {
|
1469
|
-
|
1470
|
-
|
1471
|
-
|
1472
|
-
_deprecationLevels: _emberDebugDeprecationManager.deprecationLevels
|
1473
|
-
};
|
1371
|
+
_emberMetalCore.default.Debug = {};
|
1372
|
+
|
1373
|
+
_emberMetalCore.default.Debug.registerDeprecationHandler = _emberDebugDeprecate.registerHandler;
|
1374
|
+
_emberMetalCore.default.Debug.registerWarnHandler = _emberDebugWarn.registerHandler;
|
1474
1375
|
|
1475
1376
|
/*
|
1476
1377
|
We are transitioning away from `ember.js` to `ember.debug.js` to make
|
@@ -1486,35 +1387,216 @@ enifed('ember-debug', ['exports', 'ember-metal/core', 'ember-metal/features', 'e
|
|
1486
1387
|
_emberMetalCore.default.warn('Please use `ember.debug.js` instead of `ember.js` for development and debugging.');
|
1487
1388
|
}
|
1488
1389
|
});
|
1489
|
-
enifed('ember-debug/
|
1390
|
+
enifed('ember-debug/deprecate', ['exports', 'ember-metal/core', 'ember-metal/error', 'ember-metal/logger', 'ember-debug/handlers'], function (exports, _emberMetalCore, _emberMetalError, _emberMetalLogger, _emberDebugHandlers) {
|
1391
|
+
/*global __fail__*/
|
1392
|
+
|
1490
1393
|
'use strict';
|
1491
1394
|
|
1492
|
-
var
|
1493
|
-
|
1494
|
-
|
1495
|
-
SILENCE: _emberMetalUtils.symbol('SILENCE')
|
1496
|
-
};
|
1395
|
+
var _slice = Array.prototype.slice;
|
1396
|
+
exports.registerHandler = registerHandler;
|
1397
|
+
exports.default = deprecate;
|
1497
1398
|
|
1498
|
-
|
1499
|
-
|
1500
|
-
|
1501
|
-
|
1502
|
-
|
1503
|
-
|
1504
|
-
|
1505
|
-
|
1506
|
-
|
1507
|
-
}
|
1508
|
-
|
1509
|
-
|
1510
|
-
|
1511
|
-
|
1399
|
+
function registerHandler(handler) {
|
1400
|
+
_emberDebugHandlers.registerHandler('deprecate', handler);
|
1401
|
+
}
|
1402
|
+
|
1403
|
+
function formatMessage(_message, options) {
|
1404
|
+
var message = _message;
|
1405
|
+
|
1406
|
+
if (options && options.id) {
|
1407
|
+
message = message + (' [deprecation id: ' + options.id + ']');
|
1408
|
+
}
|
1409
|
+
|
1410
|
+
if (options && options.url) {
|
1411
|
+
message += ' See ' + options.url + ' for more details.';
|
1412
|
+
}
|
1413
|
+
|
1414
|
+
return message;
|
1415
|
+
}
|
1416
|
+
|
1417
|
+
registerHandler(function logDeprecationToConsole(message, options) {
|
1418
|
+
var updatedMessage = formatMessage(message, options);
|
1419
|
+
|
1420
|
+
_emberMetalLogger.default.warn('DEPRECATION: ' + updatedMessage);
|
1421
|
+
});
|
1422
|
+
|
1423
|
+
registerHandler(function logDeprecationStackTrace(message, options, next) {
|
1424
|
+
if (_emberMetalCore.default.LOG_STACKTRACE_ON_DEPRECATION) {
|
1425
|
+
var stackStr = '';
|
1426
|
+
var error = undefined,
|
1427
|
+
stack = undefined;
|
1428
|
+
|
1429
|
+
// When using new Error, we can't do the arguments check for Chrome. Alternatives are welcome
|
1430
|
+
try {
|
1431
|
+
__fail__.fail();
|
1432
|
+
} catch (e) {
|
1433
|
+
error = e;
|
1434
|
+
}
|
1435
|
+
|
1436
|
+
if (error.stack) {
|
1437
|
+
if (error['arguments']) {
|
1438
|
+
// Chrome
|
1439
|
+
stack = error.stack.replace(/^\s+at\s+/gm, '').replace(/^([^\(]+?)([\n$])/gm, '{anonymous}($1)$2').replace(/^Object.<anonymous>\s*\(([^\)]+)\)/gm, '{anonymous}($1)').split('\n');
|
1440
|
+
stack.shift();
|
1441
|
+
} else {
|
1442
|
+
// Firefox
|
1443
|
+
stack = error.stack.replace(/(?:\n@:0)?\s+$/m, '').replace(/^\(/gm, '{anonymous}(').split('\n');
|
1444
|
+
}
|
1445
|
+
|
1446
|
+
stackStr = '\n ' + stack.slice(2).join('\n ');
|
1512
1447
|
}
|
1513
|
-
|
1448
|
+
|
1449
|
+
var updatedMessage = formatMessage(message, options);
|
1450
|
+
|
1451
|
+
_emberMetalLogger.default.warn('DEPRECATION: ' + updatedMessage + stackStr);
|
1452
|
+
} else {
|
1453
|
+
next.apply(undefined, arguments);
|
1514
1454
|
}
|
1515
|
-
};
|
1455
|
+
});
|
1456
|
+
|
1457
|
+
registerHandler(function raiseOnDeprecation(message, options, next) {
|
1458
|
+
if (_emberMetalCore.default.ENV.RAISE_ON_DEPRECATION) {
|
1459
|
+
var updatedMessage = formatMessage(message);
|
1460
|
+
|
1461
|
+
throw new _emberMetalError.default(updatedMessage);
|
1462
|
+
} else {
|
1463
|
+
next.apply(undefined, arguments);
|
1464
|
+
}
|
1465
|
+
});
|
1466
|
+
|
1467
|
+
var missingOptionsDeprecation = 'When calling `Ember.deprecate` you ' + 'must provide an `options` hash as the third parameter. ' + '`options` should include `id` and `until` properties.';
|
1468
|
+
exports.missingOptionsDeprecation = missingOptionsDeprecation;
|
1469
|
+
var missingOptionsIdDeprecation = 'When calling `Ember.deprecate` you must provide `id` in options.';
|
1470
|
+
exports.missingOptionsIdDeprecation = missingOptionsIdDeprecation;
|
1471
|
+
var missingOptionsUntilDeprecation = 'When calling `Ember.deprecate` you must provide `until` in options.';
|
1472
|
+
|
1473
|
+
exports.missingOptionsUntilDeprecation = missingOptionsUntilDeprecation;
|
1474
|
+
/**
|
1475
|
+
Display a deprecation warning with the provided message and a stack trace
|
1476
|
+
(Chrome and Firefox only). Ember build tools will remove any calls to
|
1477
|
+
`Ember.deprecate()` when doing a production build.
|
1478
|
+
|
1479
|
+
@method deprecate
|
1480
|
+
@param {String} message A description of the deprecation.
|
1481
|
+
@param {Boolean|Function} test A boolean. If falsy, the deprecation
|
1482
|
+
will be displayed. If this is a function, it will be executed and its return
|
1483
|
+
value will be used as condition.
|
1484
|
+
@param {Object} options An object that can be used to pass
|
1485
|
+
in a `url` to the transition guide on the emberjs.com website, and a unique
|
1486
|
+
`id` for this deprecation. The `id` can be used by Ember debugging tools
|
1487
|
+
to change the behavior (raise, log or silence) for that specific deprecation.
|
1488
|
+
The `id` should be namespaced by dots, e.g. "view.helper.select".
|
1489
|
+
@public
|
1490
|
+
*/
|
1491
|
+
|
1492
|
+
function deprecate(message, test, options) {
|
1493
|
+
if (!options || !options.id && !options.until) {
|
1494
|
+
deprecate(missingOptionsDeprecation, false, { id: 'ember-debug.deprecate-options-missing', until: '3.0.0' });
|
1495
|
+
}
|
1496
|
+
|
1497
|
+
if (options && !options.id) {
|
1498
|
+
deprecate(missingOptionsIdDeprecation, false, { id: 'ember-debug.deprecate-id-missing', until: '3.0.0' });
|
1499
|
+
}
|
1500
|
+
|
1501
|
+
if (options && !options.until) {
|
1502
|
+
deprecate(missingOptionsUntilDeprecation, options && options.until, { id: 'ember-debug.deprecate-until-missing', until: '3.0.0' });
|
1503
|
+
}
|
1504
|
+
|
1505
|
+
_emberDebugHandlers.invoke.apply(undefined, ['deprecate'].concat(_slice.call(arguments)));
|
1506
|
+
}
|
1507
|
+
});
|
1508
|
+
enifed('ember-debug/handlers', ['exports', 'ember-debug/is-plain-function'], function (exports, _emberDebugIsPlainFunction) {
|
1509
|
+
'use strict';
|
1510
|
+
|
1511
|
+
exports.registerHandler = registerHandler;
|
1512
|
+
exports.invoke = invoke;
|
1513
|
+
var HANDLERS = {};
|
1514
|
+
|
1515
|
+
exports.HANDLERS = HANDLERS;
|
1516
|
+
function normalizeTest(test) {
|
1517
|
+
return _emberDebugIsPlainFunction.default(test) ? test() : test;
|
1518
|
+
}
|
1519
|
+
|
1520
|
+
function registerHandler(type, callback) {
|
1521
|
+
var nextHandler = HANDLERS[type] || function () {};
|
1522
|
+
|
1523
|
+
HANDLERS[type] = function (message, options) {
|
1524
|
+
callback(message, options, nextHandler);
|
1525
|
+
};
|
1526
|
+
}
|
1527
|
+
|
1528
|
+
function invoke(type, message, test, options) {
|
1529
|
+
if (normalizeTest(test)) {
|
1530
|
+
return;
|
1531
|
+
}
|
1532
|
+
|
1533
|
+
var handlerForType = HANDLERS[type];
|
1534
|
+
|
1535
|
+
if (!handlerForType) {
|
1536
|
+
return;
|
1537
|
+
}
|
1538
|
+
|
1539
|
+
if (handlerForType) {
|
1540
|
+
handlerForType(message, options);
|
1541
|
+
}
|
1542
|
+
}
|
1543
|
+
});
|
1544
|
+
enifed('ember-debug/is-plain-function', ['exports'], function (exports) {
|
1545
|
+
'use strict';
|
1546
|
+
|
1547
|
+
exports.default = isPlainFunction;
|
1548
|
+
|
1549
|
+
function isPlainFunction(test) {
|
1550
|
+
return typeof test === 'function' && test.PrototypeMixin === undefined;
|
1551
|
+
}
|
1552
|
+
});
|
1553
|
+
enifed('ember-debug/warn', ['exports', 'ember-metal/core', 'ember-metal/logger', 'ember-debug/handlers'], function (exports, _emberMetalCore, _emberMetalLogger, _emberDebugHandlers) {
|
1554
|
+
'use strict';
|
1555
|
+
|
1556
|
+
var _slice = Array.prototype.slice;
|
1557
|
+
exports.registerHandler = registerHandler;
|
1558
|
+
exports.default = warn;
|
1559
|
+
|
1560
|
+
function registerHandler(handler) {
|
1561
|
+
_emberDebugHandlers.registerHandler('warn', handler);
|
1562
|
+
}
|
1563
|
+
|
1564
|
+
registerHandler(function logWarning(message, options) {
|
1565
|
+
_emberMetalLogger.default.warn('WARNING: ' + message);
|
1566
|
+
if ('trace' in _emberMetalLogger.default) {
|
1567
|
+
_emberMetalLogger.default.trace();
|
1568
|
+
}
|
1569
|
+
});
|
1570
|
+
|
1571
|
+
var missingOptionsDeprecation = 'When calling `Ember.warn` you ' + 'must provide an `options` hash as the third parameter. ' + '`options` should include an `id` property.';
|
1572
|
+
exports.missingOptionsDeprecation = missingOptionsDeprecation;
|
1573
|
+
var missingOptionsIdDeprecation = 'When calling `Ember.warn` you must provide `id` in options.';
|
1574
|
+
|
1575
|
+
exports.missingOptionsIdDeprecation = missingOptionsIdDeprecation;
|
1576
|
+
/**
|
1577
|
+
Display a warning with the provided message. Ember build tools will
|
1578
|
+
remove any calls to `Ember.warn()` when doing a production build.
|
1579
|
+
|
1580
|
+
@method warn
|
1581
|
+
@param {String} message A warning to display.
|
1582
|
+
@param {Boolean} test An optional boolean. If falsy, the warning
|
1583
|
+
will be displayed.
|
1584
|
+
@public
|
1585
|
+
*/
|
1586
|
+
|
1587
|
+
function warn(message, test, options) {
|
1588
|
+
if (!options) {
|
1589
|
+
_emberMetalCore.default.deprecate(missingOptionsDeprecation, false, { id: 'ember-debug.warn-options-missing', until: '3.0.0' });
|
1590
|
+
}
|
1591
|
+
|
1592
|
+
if (options && !options.id) {
|
1593
|
+
_emberMetalCore.default.deprecate(missingOptionsIdDeprecation, false, { id: 'ember-debug.warn-id-missing', until: '3.0.0' });
|
1594
|
+
}
|
1595
|
+
|
1596
|
+
_emberDebugHandlers.invoke.apply(undefined, ['warn'].concat(_slice.call(arguments)));
|
1597
|
+
}
|
1516
1598
|
});
|
1517
|
-
enifed('ember-metal', ['exports', 'ember-metal/core', 'ember-metal/features', 'ember-metal/merge', 'ember-metal/instrumentation', 'ember-metal/utils', 'ember-metal/error', 'ember-metal/cache', 'ember-metal/logger', 'ember-metal/property_get', 'ember-metal/events', 'ember-metal/observer_set', 'ember-metal/property_events', 'ember-metal/properties', 'ember-metal/property_set', 'ember-metal/map', 'ember-metal/get_properties', 'ember-metal/set_properties', 'ember-metal/watch_key', 'ember-metal/chains', 'ember-metal/watch_path', 'ember-metal/watching', 'ember-metal/expand_properties', 'ember-metal/computed', 'ember-metal/alias', 'ember-metal/computed_macros', 'ember-metal/observer', 'ember-metal/mixin', 'ember-metal/binding', 'ember-metal/run_loop', 'ember-metal/libraries', 'ember-metal/is_none', 'ember-metal/is_empty', 'ember-metal/is_blank', 'ember-metal/is_present', 'backburner'
|
1599
|
+
enifed('ember-metal', ['exports', 'ember-metal/core', 'ember-metal/features', 'ember-metal/merge', 'ember-metal/instrumentation', 'ember-metal/utils', 'ember-metal/meta', 'ember-metal/error', 'ember-metal/cache', 'ember-metal/logger', 'ember-metal/property_get', 'ember-metal/events', 'ember-metal/observer_set', 'ember-metal/property_events', 'ember-metal/properties', 'ember-metal/property_set', 'ember-metal/map', 'ember-metal/get_properties', 'ember-metal/set_properties', 'ember-metal/watch_key', 'ember-metal/chains', 'ember-metal/watch_path', 'ember-metal/watching', 'ember-metal/expand_properties', 'ember-metal/computed', 'ember-metal/alias', 'ember-metal/computed_macros', 'ember-metal/observer', 'ember-metal/mixin', 'ember-metal/binding', 'ember-metal/run_loop', 'ember-metal/libraries', 'ember-metal/is_none', 'ember-metal/is_empty', 'ember-metal/is_blank', 'ember-metal/is_present', 'backburner'], function (exports, _emberMetalCore, _emberMetalFeatures, _emberMetalMerge, _emberMetalInstrumentation, _emberMetalUtils, _emberMetalMeta, _emberMetalError, _emberMetalCache, _emberMetalLogger, _emberMetalProperty_get, _emberMetalEvents, _emberMetalObserver_set, _emberMetalProperty_events, _emberMetalProperties, _emberMetalProperty_set, _emberMetalMap, _emberMetalGet_properties, _emberMetalSet_properties, _emberMetalWatch_key, _emberMetalChains, _emberMetalWatch_path, _emberMetalWatching, _emberMetalExpand_properties, _emberMetalComputed, _emberMetalAlias, _emberMetalComputed_macros, _emberMetalObserver, _emberMetalMixin, _emberMetalBinding, _emberMetalRun_loop, _emberMetalLibraries, _emberMetalIs_none, _emberMetalIs_empty, _emberMetalIs_blank, _emberMetalIs_present, _backburner) {
|
1518
1600
|
/**
|
1519
1601
|
@module ember
|
1520
1602
|
@submodule ember-metal
|
@@ -1568,9 +1650,9 @@ enifed('ember-metal', ['exports', 'ember-metal/core', 'ember-metal/features', 'e
|
|
1568
1650
|
|
1569
1651
|
_emberMetalCore.default.Error = _emberMetalError.default;
|
1570
1652
|
_emberMetalCore.default.guidFor = _emberMetalUtils.guidFor;
|
1571
|
-
_emberMetalCore.default.META_DESC =
|
1572
|
-
_emberMetalCore.default.EMPTY_META =
|
1573
|
-
_emberMetalCore.default.meta =
|
1653
|
+
_emberMetalCore.default.META_DESC = _emberMetalMeta.META_DESC;
|
1654
|
+
_emberMetalCore.default.EMPTY_META = _emberMetalMeta.EMPTY_META;
|
1655
|
+
_emberMetalCore.default.meta = _emberMetalMeta.meta;
|
1574
1656
|
_emberMetalCore.default.inspect = _emberMetalUtils.inspect;
|
1575
1657
|
_emberMetalCore.default.tryCatchFinally = _emberMetalUtils.deprecatedTryCatchFinally;
|
1576
1658
|
_emberMetalCore.default.makeArray = _emberMetalUtils.makeArray;
|
@@ -1715,6 +1797,11 @@ enifed('ember-metal', ['exports', 'ember-metal/core', 'ember-metal/features', 'e
|
|
1715
1797
|
// This needs to be called before any deprecateFunc
|
1716
1798
|
if (_emberMetalCore.default.__loader.registry['ember-debug']) {
|
1717
1799
|
requireModule('ember-debug');
|
1800
|
+
} else {
|
1801
|
+
_emberMetalCore.default.Debug = {};
|
1802
|
+
|
1803
|
+
_emberMetalCore.default.Debug.registerDeprecationHandler = function () {};
|
1804
|
+
_emberMetalCore.default.Debug.registerWarnHandler = function () {};
|
1718
1805
|
}
|
1719
1806
|
|
1720
1807
|
_emberMetalCore.default.create = _emberMetalCore.default.deprecateFunc('Ember.create is deprecated in favor of Object.create', { id: 'ember-metal.ember-create', until: '3.0.0' }, Object.create);
|
@@ -1722,7 +1809,7 @@ enifed('ember-metal', ['exports', 'ember-metal/core', 'ember-metal/features', 'e
|
|
1722
1809
|
|
1723
1810
|
exports.default = _emberMetalCore.default;
|
1724
1811
|
});
|
1725
|
-
enifed('ember-metal/alias', ['exports', 'ember-metal/property_get', 'ember-metal/property_set', 'ember-metal/core', 'ember-metal/error', 'ember-metal/properties', 'ember-metal/computed', 'ember-metal/utils', 'ember-metal/dependent_keys'], function (exports, _emberMetalProperty_get, _emberMetalProperty_set, _emberMetalCore, _emberMetalError, _emberMetalProperties, _emberMetalComputed, _emberMetalUtils, _emberMetalDependent_keys) {
|
1812
|
+
enifed('ember-metal/alias', ['exports', 'ember-metal/property_get', 'ember-metal/property_set', 'ember-metal/core', 'ember-metal/error', 'ember-metal/properties', 'ember-metal/computed', 'ember-metal/utils', 'ember-metal/meta', 'ember-metal/dependent_keys'], function (exports, _emberMetalProperty_get, _emberMetalProperty_set, _emberMetalCore, _emberMetalError, _emberMetalProperties, _emberMetalComputed, _emberMetalUtils, _emberMetalMeta, _emberMetalDependent_keys) {
|
1726
1813
|
'use strict';
|
1727
1814
|
|
1728
1815
|
exports.default = alias;
|
@@ -1749,24 +1836,24 @@ enifed('ember-metal/alias', ['exports', 'ember-metal/property_get', 'ember-metal
|
|
1749
1836
|
};
|
1750
1837
|
|
1751
1838
|
AliasedProperty.prototype.willWatch = function (obj, keyName) {
|
1752
|
-
_emberMetalDependent_keys.addDependentKeys(this, obj, keyName,
|
1839
|
+
_emberMetalDependent_keys.addDependentKeys(this, obj, keyName, _emberMetalMeta.meta(obj));
|
1753
1840
|
};
|
1754
1841
|
|
1755
1842
|
AliasedProperty.prototype.didUnwatch = function (obj, keyName) {
|
1756
|
-
_emberMetalDependent_keys.removeDependentKeys(this, obj, keyName,
|
1843
|
+
_emberMetalDependent_keys.removeDependentKeys(this, obj, keyName, _emberMetalMeta.meta(obj));
|
1757
1844
|
};
|
1758
1845
|
|
1759
1846
|
AliasedProperty.prototype.setup = function (obj, keyName) {
|
1760
1847
|
_emberMetalCore.default.assert('Setting alias \'' + keyName + '\' on self', this.altKey !== keyName);
|
1761
|
-
var m =
|
1762
|
-
if (m.
|
1848
|
+
var m = _emberMetalMeta.meta(obj);
|
1849
|
+
if (m.peekWatching(keyName)) {
|
1763
1850
|
_emberMetalDependent_keys.addDependentKeys(this, obj, keyName, m);
|
1764
1851
|
}
|
1765
1852
|
};
|
1766
1853
|
|
1767
1854
|
AliasedProperty.prototype.teardown = function (obj, keyName) {
|
1768
|
-
var m =
|
1769
|
-
if (m.
|
1855
|
+
var m = _emberMetalMeta.meta(obj);
|
1856
|
+
if (m.peekWatching(keyName)) {
|
1770
1857
|
_emberMetalDependent_keys.removeDependentKeys(this, obj, keyName, m);
|
1771
1858
|
}
|
1772
1859
|
};
|
@@ -1795,6 +1882,88 @@ enifed('ember-metal/alias', ['exports', 'ember-metal/property_get', 'ember-metal
|
|
1795
1882
|
AliasedProperty.prototype.meta = _emberMetalComputed.ComputedProperty.prototype.meta;
|
1796
1883
|
});
|
1797
1884
|
// Ember.assert
|
1885
|
+
enifed("ember-metal/assert", ["exports"], function (exports) {
|
1886
|
+
"use strict";
|
1887
|
+
|
1888
|
+
exports.registerDebugFunction = registerDebugFunction;
|
1889
|
+
exports.assert = assert;
|
1890
|
+
exports.warn = warn;
|
1891
|
+
exports.debug = debug;
|
1892
|
+
exports.deprecate = deprecate;
|
1893
|
+
exports.deprecateFunc = deprecateFunc;
|
1894
|
+
exports.runInDebug = runInDebug;
|
1895
|
+
var debugFunctions = {
|
1896
|
+
assert: function () {},
|
1897
|
+
warn: function () {},
|
1898
|
+
debug: function () {},
|
1899
|
+
deprecate: function () {},
|
1900
|
+
deprecateFunc: function () {
|
1901
|
+
for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
|
1902
|
+
args[_key] = arguments[_key];
|
1903
|
+
}
|
1904
|
+
|
1905
|
+
return args[args.length - 1];
|
1906
|
+
},
|
1907
|
+
runInDebug: function () {}
|
1908
|
+
};
|
1909
|
+
|
1910
|
+
exports.debugFunctions = debugFunctions;
|
1911
|
+
|
1912
|
+
function registerDebugFunction(name, fn) {
|
1913
|
+
debugFunctions[name] = fn;
|
1914
|
+
}
|
1915
|
+
|
1916
|
+
function assert() {
|
1917
|
+
return debugFunctions.assert.apply(undefined, arguments);
|
1918
|
+
}
|
1919
|
+
|
1920
|
+
function warn() {
|
1921
|
+
return debugFunctions.warn.apply(undefined, arguments);
|
1922
|
+
}
|
1923
|
+
|
1924
|
+
function debug() {
|
1925
|
+
return debugFunctions.debug.apply(undefined, arguments);
|
1926
|
+
}
|
1927
|
+
|
1928
|
+
function deprecate() {
|
1929
|
+
return debugFunctions.deprecate.apply(undefined, arguments);
|
1930
|
+
}
|
1931
|
+
|
1932
|
+
function deprecateFunc() {
|
1933
|
+
return debugFunctions.deprecateFunc.apply(undefined, arguments);
|
1934
|
+
}
|
1935
|
+
|
1936
|
+
function runInDebug() {
|
1937
|
+
return debugFunctions.runInDebug.apply(undefined, arguments);
|
1938
|
+
}
|
1939
|
+
});
|
1940
|
+
enifed("ember-metal/assign", ["exports"], function (exports) {
|
1941
|
+
"use strict";
|
1942
|
+
|
1943
|
+
exports.default = assign;
|
1944
|
+
|
1945
|
+
function assign(original) {
|
1946
|
+
for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
|
1947
|
+
args[_key - 1] = arguments[_key];
|
1948
|
+
}
|
1949
|
+
|
1950
|
+
for (var i = 0, l = args.length; i < l; i++) {
|
1951
|
+
var arg = args[i];
|
1952
|
+
if (!arg) {
|
1953
|
+
continue;
|
1954
|
+
}
|
1955
|
+
|
1956
|
+
var updates = Object.keys(arg);
|
1957
|
+
|
1958
|
+
for (var _i = 0, _l = updates.length; _i < _l; _i++) {
|
1959
|
+
var prop = updates[_i];
|
1960
|
+
original[prop] = arg[prop];
|
1961
|
+
}
|
1962
|
+
}
|
1963
|
+
|
1964
|
+
return original;
|
1965
|
+
}
|
1966
|
+
});
|
1798
1967
|
enifed('ember-metal/binding', ['exports', 'ember-metal/core', 'ember-metal/property_get', 'ember-metal/property_set', 'ember-metal/utils', 'ember-metal/observer', 'ember-metal/run_loop', 'ember-metal/path_cache'], function (exports, _emberMetalCore, _emberMetalProperty_get, _emberMetalProperty_set, _emberMetalUtils, _emberMetalObserver, _emberMetalRun_loop, _emberMetalPath_cache) {
|
1799
1968
|
'use strict';
|
1800
1969
|
|
@@ -2306,7 +2475,7 @@ enifed('ember-metal/cache', ['exports', 'ember-metal/dictionary'], function (exp
|
|
2306
2475
|
}
|
2307
2476
|
};
|
2308
2477
|
});
|
2309
|
-
enifed('ember-metal/chains', ['exports', 'ember-metal/core', 'ember-metal/property_get', 'ember-metal/
|
2478
|
+
enifed('ember-metal/chains', ['exports', 'ember-metal/core', 'ember-metal/property_get', 'ember-metal/meta', 'ember-metal/watch_key', 'ember-metal/empty_object'], function (exports, _emberMetalCore, _emberMetalProperty_get, _emberMetalMeta, _emberMetalWatch_key, _emberMetalEmpty_object) {
|
2310
2479
|
'use strict';
|
2311
2480
|
|
2312
2481
|
exports.flushPendingChains = flushPendingChains;
|
@@ -2326,17 +2495,13 @@ enifed('ember-metal/chains', ['exports', 'ember-metal/core', 'ember-metal/proper
|
|
2326
2495
|
return !(isObject(obj) && obj.isDescriptor && obj._volatile === false);
|
2327
2496
|
}
|
2328
2497
|
|
2329
|
-
function Chains() {}
|
2330
|
-
|
2331
|
-
Chains.prototype = Object.create(null);
|
2332
|
-
|
2333
2498
|
function ChainWatchers(obj) {
|
2334
2499
|
// this obj would be the referencing chain node's parent node's value
|
2335
2500
|
this.obj = obj;
|
2336
2501
|
// chain nodes that reference a key in this obj by key
|
2337
2502
|
// we only create ChainWatchers when we are going to add them
|
2338
2503
|
// so create this upfront
|
2339
|
-
this.chains = new
|
2504
|
+
this.chains = new _emberMetalEmpty_object.default();
|
2340
2505
|
}
|
2341
2506
|
|
2342
2507
|
ChainWatchers.prototype = {
|
@@ -2438,19 +2603,17 @@ enifed('ember-metal/chains', ['exports', 'ember-metal/core', 'ember-metal/proper
|
|
2438
2603
|
_emberMetalCore.default.warn('Watching an undefined global, Ember expects watched globals to be ' + 'setup by the time the run loop is flushed, check for typos', pendingQueue.length === 0, { id: 'ember-metal.chains-flush-pending-chains' });
|
2439
2604
|
}
|
2440
2605
|
|
2606
|
+
function makeChainWatcher(obj) {
|
2607
|
+
return new ChainWatchers(obj);
|
2608
|
+
}
|
2609
|
+
|
2441
2610
|
function addChainWatcher(obj, keyName, node) {
|
2442
2611
|
if (!isObject(obj)) {
|
2443
2612
|
return;
|
2444
2613
|
}
|
2445
2614
|
|
2446
|
-
var m =
|
2447
|
-
|
2448
|
-
if (m.chainWatchers === undefined || m.chainWatchers.obj !== obj) {
|
2449
|
-
m.chainWatchers = new ChainWatchers(obj);
|
2450
|
-
}
|
2451
|
-
|
2452
|
-
m.chainWatchers.add(keyName, node);
|
2453
|
-
|
2615
|
+
var m = _emberMetalMeta.meta(obj);
|
2616
|
+
m.writableChainWatchers(makeChainWatcher).add(keyName, node);
|
2454
2617
|
_emberMetalWatch_key.watchKey(obj, keyName, m);
|
2455
2618
|
}
|
2456
2619
|
|
@@ -2461,14 +2624,14 @@ enifed('ember-metal/chains', ['exports', 'ember-metal/core', 'ember-metal/proper
|
|
2461
2624
|
|
2462
2625
|
var m = obj.__ember_meta__;
|
2463
2626
|
|
2464
|
-
if (!m || m.
|
2627
|
+
if (!m || !m.readableChainWatchers()) {
|
2465
2628
|
return;
|
2466
2629
|
}
|
2467
2630
|
|
2468
2631
|
// make meta writable
|
2469
|
-
m =
|
2632
|
+
m = _emberMetalMeta.meta(obj);
|
2470
2633
|
|
2471
|
-
m.
|
2634
|
+
m.readableChainWatchers().remove(keyName, node);
|
2472
2635
|
|
2473
2636
|
_emberMetalWatch_key.unwatchKey(obj, keyName, m);
|
2474
2637
|
}
|
@@ -2519,8 +2682,9 @@ enifed('ember-metal/chains', ['exports', 'ember-metal/core', 'ember-metal/proper
|
|
2519
2682
|
return _emberMetalProperty_get.get(obj, key);
|
2520
2683
|
// Otherwise attempt to get the cached value of the computed property
|
2521
2684
|
} else {
|
2522
|
-
|
2523
|
-
|
2685
|
+
var cache = meta.readableCache();
|
2686
|
+
if (cache && key in cache) {
|
2687
|
+
return cache[key];
|
2524
2688
|
}
|
2525
2689
|
}
|
2526
2690
|
}
|
@@ -2625,7 +2789,7 @@ enifed('ember-metal/chains', ['exports', 'ember-metal/core', 'ember-metal/proper
|
|
2625
2789
|
var chains = this._chains;
|
2626
2790
|
var node;
|
2627
2791
|
if (chains === undefined) {
|
2628
|
-
chains = this._chains = new
|
2792
|
+
chains = this._chains = new _emberMetalEmpty_object.default();
|
2629
2793
|
} else {
|
2630
2794
|
node = chains[key];
|
2631
2795
|
}
|
@@ -2714,16 +2878,17 @@ enifed('ember-metal/chains', ['exports', 'ember-metal/core', 'ember-metal/proper
|
|
2714
2878
|
// We only create meta if we really have to
|
2715
2879
|
var m = obj.__ember_meta__;
|
2716
2880
|
if (m) {
|
2881
|
+
m = _emberMetalMeta.meta(obj);
|
2882
|
+
|
2717
2883
|
// finish any current chains node watchers that reference obj
|
2718
|
-
var chainWatchers = m.
|
2884
|
+
var chainWatchers = m.readableChainWatchers();
|
2719
2885
|
if (chainWatchers) {
|
2720
2886
|
chainWatchers.revalidateAll();
|
2721
2887
|
}
|
2722
|
-
//
|
2723
|
-
|
2724
|
-
if (
|
2725
|
-
|
2726
|
-
_emberMetalUtils.meta(obj).chains = chains.copy(obj);
|
2888
|
+
// ensure that if we have inherited any chains they have been
|
2889
|
+
// copied onto our own meta.
|
2890
|
+
if (m.readableChains()) {
|
2891
|
+
m.writableChains();
|
2727
2892
|
}
|
2728
2893
|
}
|
2729
2894
|
}
|
@@ -2732,7 +2897,7 @@ enifed('ember-metal/chains', ['exports', 'ember-metal/core', 'ember-metal/proper
|
|
2732
2897
|
exports.ChainNode = ChainNode;
|
2733
2898
|
});
|
2734
2899
|
// warn, assert, etc;
|
2735
|
-
enifed('ember-metal/computed', ['exports', 'ember-metal/core', 'ember-metal/property_set', 'ember-metal/utils', 'ember-metal/expand_properties', 'ember-metal/error', 'ember-metal/properties', 'ember-metal/property_events', 'ember-metal/dependent_keys'], function (exports, _emberMetalCore, _emberMetalProperty_set, _emberMetalUtils, _emberMetalExpand_properties, _emberMetalError, _emberMetalProperties, _emberMetalProperty_events, _emberMetalDependent_keys) {
|
2900
|
+
enifed('ember-metal/computed', ['exports', 'ember-metal/core', 'ember-metal/property_set', 'ember-metal/utils', 'ember-metal/meta', 'ember-metal/expand_properties', 'ember-metal/error', 'ember-metal/properties', 'ember-metal/property_events', 'ember-metal/dependent_keys'], function (exports, _emberMetalCore, _emberMetalProperty_set, _emberMetalUtils, _emberMetalMeta, _emberMetalExpand_properties, _emberMetalError, _emberMetalProperties, _emberMetalProperty_events, _emberMetalDependent_keys) {
|
2736
2901
|
'use strict';
|
2737
2902
|
|
2738
2903
|
exports.default = computed;
|
@@ -2742,7 +2907,7 @@ enifed('ember-metal/computed', ['exports', 'ember-metal/core', 'ember-metal/prop
|
|
2742
2907
|
@submodule ember-metal
|
2743
2908
|
*/
|
2744
2909
|
|
2745
|
-
var metaFor =
|
2910
|
+
var metaFor = _emberMetalMeta.meta;
|
2746
2911
|
|
2747
2912
|
function UNDEFINED() {}
|
2748
2913
|
|
@@ -3000,7 +3165,7 @@ enifed('ember-metal/computed', ['exports', 'ember-metal/core', 'ember-metal/prop
|
|
3000
3165
|
return;
|
3001
3166
|
}
|
3002
3167
|
|
3003
|
-
var cache = meta.
|
3168
|
+
var cache = meta.readableCache();
|
3004
3169
|
if (cache && cache[keyName] !== undefined) {
|
3005
3170
|
cache[keyName] = undefined;
|
3006
3171
|
_emberMetalDependent_keys.removeDependentKeys(this, obj, keyName, meta);
|
@@ -3040,10 +3205,7 @@ enifed('ember-metal/computed', ['exports', 'ember-metal/core', 'ember-metal/prop
|
|
3040
3205
|
}
|
3041
3206
|
|
3042
3207
|
var meta = metaFor(obj);
|
3043
|
-
var cache = meta.
|
3044
|
-
if (!cache) {
|
3045
|
-
cache = meta.cache = {};
|
3046
|
-
}
|
3208
|
+
var cache = meta.writableCache();
|
3047
3209
|
|
3048
3210
|
var result = cache[keyName];
|
3049
3211
|
if (result === UNDEFINED) {
|
@@ -3059,7 +3221,7 @@ enifed('ember-metal/computed', ['exports', 'ember-metal/core', 'ember-metal/prop
|
|
3059
3221
|
cache[keyName] = ret;
|
3060
3222
|
}
|
3061
3223
|
|
3062
|
-
var chainWatchers = meta.
|
3224
|
+
var chainWatchers = meta.readableChainWatchers();
|
3063
3225
|
if (chainWatchers) {
|
3064
3226
|
chainWatchers.revalidate(keyName);
|
3065
3227
|
}
|
@@ -3162,10 +3324,7 @@ enifed('ember-metal/computed', ['exports', 'ember-metal/core', 'ember-metal/prop
|
|
3162
3324
|
// cache requires own meta
|
3163
3325
|
var meta = metaFor(obj);
|
3164
3326
|
// either there is a writable cache or we need one to update
|
3165
|
-
var cache = meta.
|
3166
|
-
if (!cache) {
|
3167
|
-
cache = meta.cache = {};
|
3168
|
-
}
|
3327
|
+
var cache = meta.writableCache();
|
3169
3328
|
var hadCachedValue = false;
|
3170
3329
|
var cachedValue = undefined;
|
3171
3330
|
if (cache[keyName] !== undefined) {
|
@@ -3182,7 +3341,7 @@ enifed('ember-metal/computed', ['exports', 'ember-metal/core', 'ember-metal/prop
|
|
3182
3341
|
return ret;
|
3183
3342
|
}
|
3184
3343
|
|
3185
|
-
var watched = meta.
|
3344
|
+
var watched = meta.peekWatching(keyName);
|
3186
3345
|
if (watched) {
|
3187
3346
|
_emberMetalProperty_events.propertyWillChange(obj, keyName);
|
3188
3347
|
}
|
@@ -3214,7 +3373,7 @@ enifed('ember-metal/computed', ['exports', 'ember-metal/core', 'ember-metal/prop
|
|
3214
3373
|
return;
|
3215
3374
|
}
|
3216
3375
|
var meta = metaFor(obj);
|
3217
|
-
var cache = meta.
|
3376
|
+
var cache = meta.readableCache();
|
3218
3377
|
if (cache && cache[keyName] !== undefined) {
|
3219
3378
|
_emberMetalDependent_keys.removeDependentKeys(this, obj, keyName, meta);
|
3220
3379
|
cache[keyName] = undefined;
|
@@ -3309,7 +3468,7 @@ enifed('ember-metal/computed', ['exports', 'ember-metal/core', 'ember-metal/prop
|
|
3309
3468
|
*/
|
3310
3469
|
function cacheFor(obj, key) {
|
3311
3470
|
var meta = obj.__ember_meta__;
|
3312
|
-
var cache = meta && meta.source === obj && meta.
|
3471
|
+
var cache = meta && meta.source === obj && meta.readableCache();
|
3313
3472
|
var ret = cache && cache[key];
|
3314
3473
|
|
3315
3474
|
if (ret === UNDEFINED) {
|
@@ -4036,7 +4195,7 @@ enifed('ember-metal/computed_macros', ['exports', 'ember-metal/core', 'ember-met
|
|
4036
4195
|
});
|
4037
4196
|
}
|
4038
4197
|
});
|
4039
|
-
enifed('ember-metal/core', ['exports'], function (exports) {
|
4198
|
+
enifed('ember-metal/core', ['exports', 'ember-metal/assert'], function (exports, _emberMetalAssert) {
|
4040
4199
|
/*globals Ember:true,ENV,EmberENV */
|
4041
4200
|
|
4042
4201
|
/**
|
@@ -4059,7 +4218,7 @@ enifed('ember-metal/core', ['exports'], function (exports) {
|
|
4059
4218
|
|
4060
4219
|
@class Ember
|
4061
4220
|
@static
|
4062
|
-
@version 2.0.
|
4221
|
+
@version 2.1.0-beta.1
|
4063
4222
|
@public
|
4064
4223
|
*/
|
4065
4224
|
|
@@ -4093,11 +4252,11 @@ enifed('ember-metal/core', ['exports'], function (exports) {
|
|
4093
4252
|
|
4094
4253
|
@property VERSION
|
4095
4254
|
@type String
|
4096
|
-
@default '2.0.
|
4255
|
+
@default '2.1.0-beta.1'
|
4097
4256
|
@static
|
4098
4257
|
@public
|
4099
4258
|
*/
|
4100
|
-
Ember.VERSION = '2.0.
|
4259
|
+
Ember.VERSION = '2.1.0-beta.1';
|
4101
4260
|
|
4102
4261
|
/**
|
4103
4262
|
The hash of environment variables used to control various configuration
|
@@ -4206,32 +4365,12 @@ enifed('ember-metal/core', ['exports'], function (exports) {
|
|
4206
4365
|
Ember.K = K;
|
4207
4366
|
//TODO: ES6 GLOBAL TODO
|
4208
4367
|
|
4209
|
-
|
4210
|
-
|
4211
|
-
|
4212
|
-
|
4213
|
-
|
4214
|
-
|
4215
|
-
Ember.warn = K;
|
4216
|
-
}
|
4217
|
-
if ('undefined' === typeof Ember.debug) {
|
4218
|
-
Ember.debug = K;
|
4219
|
-
}
|
4220
|
-
if ('undefined' === typeof Ember.runInDebug) {
|
4221
|
-
Ember.runInDebug = K;
|
4222
|
-
}
|
4223
|
-
if ('undefined' === typeof Ember.deprecate) {
|
4224
|
-
Ember.deprecate = K;
|
4225
|
-
}
|
4226
|
-
if ('undefined' === typeof Ember.deprecateFunc) {
|
4227
|
-
Ember.deprecateFunc = function () {
|
4228
|
-
for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
|
4229
|
-
args[_key] = arguments[_key];
|
4230
|
-
}
|
4231
|
-
|
4232
|
-
return args[args.length - 1];
|
4233
|
-
};
|
4234
|
-
}
|
4368
|
+
Ember.assert = _emberMetalAssert.assert;
|
4369
|
+
Ember.warn = _emberMetalAssert.warn;
|
4370
|
+
Ember.debug = _emberMetalAssert.debug;
|
4371
|
+
Ember.deprecate = _emberMetalAssert.deprecate;
|
4372
|
+
Ember.deprecateFunc = _emberMetalAssert.deprecateFunc;
|
4373
|
+
Ember.runInDebug = _emberMetalAssert.runInDebug;
|
4235
4374
|
|
4236
4375
|
exports.default = Ember;
|
4237
4376
|
});
|
@@ -4253,50 +4392,19 @@ enifed('ember-metal/dependent_keys', ['exports', 'ember-metal/watching'], functi
|
|
4253
4392
|
// DEPENDENT KEYS
|
4254
4393
|
//
|
4255
4394
|
|
4256
|
-
// data structure:
|
4257
|
-
// meta.deps = {
|
4258
|
-
// 'depKey': {
|
4259
|
-
// 'keyName': count,
|
4260
|
-
// }
|
4261
|
-
// }
|
4262
|
-
|
4263
|
-
/*
|
4264
|
-
This function returns a map of unique dependencies for a
|
4265
|
-
given object and key.
|
4266
|
-
*/
|
4267
|
-
function keysForDep(depsMeta, depKey) {
|
4268
|
-
var keys = depsMeta[depKey];
|
4269
|
-
if (!keys) {
|
4270
|
-
// if there are no dependencies yet for a the given key
|
4271
|
-
// create a new empty list of dependencies for the key
|
4272
|
-
keys = depsMeta[depKey] = {};
|
4273
|
-
} else if (!depsMeta.hasOwnProperty(depKey)) {
|
4274
|
-
// otherwise if the dependency list is inherited from
|
4275
|
-
// a superclass, clone the hash
|
4276
|
-
keys = depsMeta[depKey] = Object.create(keys);
|
4277
|
-
}
|
4278
|
-
return keys;
|
4279
|
-
}
|
4280
|
-
|
4281
|
-
function metaForDeps(meta) {
|
4282
|
-
return keysForDep(meta, 'deps');
|
4283
|
-
}
|
4284
|
-
|
4285
4395
|
function addDependentKeys(desc, obj, keyName, meta) {
|
4286
4396
|
// the descriptor has a list of dependent keys, so
|
4287
4397
|
// add all of its dependent keys.
|
4288
|
-
var
|
4398
|
+
var idx, len, depKey, keys;
|
4289
4399
|
var depKeys = desc._dependentKeys;
|
4290
4400
|
if (!depKeys) {
|
4291
4401
|
return;
|
4292
4402
|
}
|
4293
4403
|
|
4294
|
-
depsMeta = metaForDeps(meta);
|
4295
|
-
|
4296
4404
|
for (idx = 0, len = depKeys.length; idx < len; idx++) {
|
4297
4405
|
depKey = depKeys[idx];
|
4298
4406
|
// Lookup keys meta for depKey
|
4299
|
-
keys =
|
4407
|
+
keys = meta.writableDeps(depKey);
|
4300
4408
|
// Increment the number of times depKey depends on keyName.
|
4301
4409
|
keys[keyName] = (keys[keyName] || 0) + 1;
|
4302
4410
|
// Watch the depKey
|
@@ -4308,17 +4416,15 @@ enifed('ember-metal/dependent_keys', ['exports', 'ember-metal/watching'], functi
|
|
4308
4416
|
// the descriptor has a list of dependent keys, so
|
4309
4417
|
// remove all of its dependent keys.
|
4310
4418
|
var depKeys = desc._dependentKeys;
|
4311
|
-
var
|
4419
|
+
var idx, len, depKey, keys;
|
4312
4420
|
if (!depKeys) {
|
4313
4421
|
return;
|
4314
4422
|
}
|
4315
4423
|
|
4316
|
-
depsMeta = metaForDeps(meta);
|
4317
|
-
|
4318
4424
|
for (idx = 0, len = depKeys.length; idx < len; idx++) {
|
4319
4425
|
depKey = depKeys[idx];
|
4320
4426
|
// Lookup keys meta for depKey
|
4321
|
-
keys =
|
4427
|
+
keys = meta.writableDeps(depKey);
|
4322
4428
|
// Decrement the number of times depKey depends on keyName.
|
4323
4429
|
keys[keyName] = (keys[keyName] || 0) - 1;
|
4324
4430
|
// Unwatch the depKey
|
@@ -4490,13 +4596,14 @@ enifed('ember-metal/error', ['exports', 'ember-metal/core'], function (exports,
|
|
4490
4596
|
|
4491
4597
|
EmberError.prototype = Object.create(Error.prototype);
|
4492
4598
|
});
|
4493
|
-
enifed('ember-metal/events', ['exports', 'ember-metal/core', 'ember-metal/utils'], function (exports, _emberMetalCore, _emberMetalUtils) {
|
4599
|
+
enifed('ember-metal/events', ['exports', 'ember-metal/core', 'ember-metal/utils', 'ember-metal/meta', 'ember-metal/meta_listeners'], function (exports, _emberMetalCore, _emberMetalUtils, _emberMetalMeta, _emberMetalMeta_listeners) {
|
4494
4600
|
// Remove "use strict"; from transpiled module until
|
4495
4601
|
// https://bugs.webkit.org/show_bug.cgi?id=138038 is fixed
|
4496
4602
|
//
|
4497
4603
|
|
4498
4604
|
exports.accumulateListeners = accumulateListeners;
|
4499
4605
|
exports.addListener = addListener;
|
4606
|
+
exports.removeListener = removeListener;
|
4500
4607
|
exports.suspendListener = suspendListener;
|
4501
4608
|
exports.suspendListeners = suspendListeners;
|
4502
4609
|
exports.watchedEvents = watchedEvents;
|
@@ -4511,10 +4618,6 @@ enifed('ember-metal/events', ['exports', 'ember-metal/core', 'ember-metal/utils'
|
|
4511
4618
|
@submodule ember-metal
|
4512
4619
|
*/
|
4513
4620
|
|
4514
|
-
/* listener flags */
|
4515
|
-
var ONCE = 1;
|
4516
|
-
var SUSPENDED = 2;
|
4517
|
-
|
4518
4621
|
/*
|
4519
4622
|
The event system uses a series of nested hashes to store listeners on an
|
4520
4623
|
object. When a listener is registered, or when an event arrives, these
|
@@ -4547,42 +4650,12 @@ enifed('ember-metal/events', ['exports', 'ember-metal/core', 'ember-metal/utils'
|
|
4547
4650
|
return index;
|
4548
4651
|
}
|
4549
4652
|
|
4550
|
-
function actionsFor(obj, eventName) {
|
4551
|
-
var meta = _emberMetalUtils.meta(obj, true);
|
4552
|
-
var actions;
|
4553
|
-
var listeners = meta.listeners;
|
4554
|
-
|
4555
|
-
if (!listeners) {
|
4556
|
-
listeners = meta.listeners = Object.create(null);
|
4557
|
-
listeners.__source__ = obj;
|
4558
|
-
} else if (listeners.__source__ !== obj) {
|
4559
|
-
// setup inherited copy of the listeners object
|
4560
|
-
listeners = meta.listeners = Object.create(listeners);
|
4561
|
-
listeners.__source__ = obj;
|
4562
|
-
}
|
4563
|
-
|
4564
|
-
actions = listeners[eventName];
|
4565
|
-
|
4566
|
-
// if there are actions, but the eventName doesn't exist in our listeners, then copy them from the prototype
|
4567
|
-
if (actions && actions.__source__ !== obj) {
|
4568
|
-
actions = listeners[eventName] = listeners[eventName].slice();
|
4569
|
-
actions.__source__ = obj;
|
4570
|
-
} else if (!actions) {
|
4571
|
-
actions = listeners[eventName] = [];
|
4572
|
-
actions.__source__ = obj;
|
4573
|
-
}
|
4574
|
-
|
4575
|
-
return actions;
|
4576
|
-
}
|
4577
|
-
|
4578
4653
|
function accumulateListeners(obj, eventName, otherActions) {
|
4579
4654
|
var meta = obj['__ember_meta__'];
|
4580
|
-
|
4581
|
-
|
4582
|
-
if (!actions) {
|
4655
|
+
if (!meta) {
|
4583
4656
|
return;
|
4584
4657
|
}
|
4585
|
-
|
4658
|
+
var actions = meta.matchingListeners(eventName);
|
4586
4659
|
var newActions = [];
|
4587
4660
|
|
4588
4661
|
for (var i = actions.length - 3; i >= 0; i -= 3) {
|
@@ -4621,19 +4694,12 @@ enifed('ember-metal/events', ['exports', 'ember-metal/core', 'ember-metal/utils'
|
|
4621
4694
|
target = null;
|
4622
4695
|
}
|
4623
4696
|
|
4624
|
-
var actions = actionsFor(obj, eventName);
|
4625
|
-
var actionIndex = indexOf(actions, target, method);
|
4626
4697
|
var flags = 0;
|
4627
|
-
|
4628
4698
|
if (once) {
|
4629
|
-
flags |= ONCE;
|
4699
|
+
flags |= _emberMetalMeta_listeners.ONCE;
|
4630
4700
|
}
|
4631
4701
|
|
4632
|
-
|
4633
|
-
return;
|
4634
|
-
}
|
4635
|
-
|
4636
|
-
actions.push(target, method, flags);
|
4702
|
+
_emberMetalMeta.meta(obj).addToListeners(eventName, target, method, flags);
|
4637
4703
|
|
4638
4704
|
if ('function' === typeof obj.didAddListener) {
|
4639
4705
|
obj.didAddListener(eventName, target, method);
|
@@ -4653,6 +4719,7 @@ enifed('ember-metal/events', ['exports', 'ember-metal/core', 'ember-metal/utils'
|
|
4653
4719
|
@param {Function|String} method A function or the name of a function to be called on `target`
|
4654
4720
|
@public
|
4655
4721
|
*/
|
4722
|
+
|
4656
4723
|
function removeListener(obj, eventName, target, method) {
|
4657
4724
|
_emberMetalCore.default.assert('You must pass at least an object and event name to Ember.removeListener', !!obj && !!eventName);
|
4658
4725
|
|
@@ -4661,35 +4728,11 @@ enifed('ember-metal/events', ['exports', 'ember-metal/core', 'ember-metal/utils'
|
|
4661
4728
|
target = null;
|
4662
4729
|
}
|
4663
4730
|
|
4664
|
-
|
4665
|
-
var actions = actionsFor(obj, eventName);
|
4666
|
-
var actionIndex = indexOf(actions, target, method);
|
4667
|
-
|
4668
|
-
// action doesn't exist, give up silently
|
4669
|
-
if (actionIndex === -1) {
|
4670
|
-
return;
|
4671
|
-
}
|
4672
|
-
|
4673
|
-
actions.splice(actionIndex, 3);
|
4674
|
-
|
4731
|
+
_emberMetalMeta.meta(obj).removeFromListeners(eventName, target, method, function () {
|
4675
4732
|
if ('function' === typeof obj.didRemoveListener) {
|
4676
|
-
obj.didRemoveListener(
|
4677
|
-
}
|
4678
|
-
}
|
4679
|
-
|
4680
|
-
if (method) {
|
4681
|
-
_removeListener(target, method);
|
4682
|
-
} else {
|
4683
|
-
var meta = obj['__ember_meta__'];
|
4684
|
-
var actions = meta && meta.listeners && meta.listeners[eventName];
|
4685
|
-
|
4686
|
-
if (!actions) {
|
4687
|
-
return;
|
4688
|
-
}
|
4689
|
-
for (var i = actions.length - 3; i >= 0; i -= 3) {
|
4690
|
-
_removeListener(actions[i], actions[i + 1]);
|
4733
|
+
obj.didRemoveListener.apply(obj, arguments);
|
4691
4734
|
}
|
4692
|
-
}
|
4735
|
+
});
|
4693
4736
|
}
|
4694
4737
|
|
4695
4738
|
/**
|
@@ -4712,25 +4755,7 @@ enifed('ember-metal/events', ['exports', 'ember-metal/core', 'ember-metal/utils'
|
|
4712
4755
|
*/
|
4713
4756
|
|
4714
4757
|
function suspendListener(obj, eventName, target, method, callback) {
|
4715
|
-
|
4716
|
-
method = target;
|
4717
|
-
target = null;
|
4718
|
-
}
|
4719
|
-
|
4720
|
-
var actions = actionsFor(obj, eventName);
|
4721
|
-
var actionIndex = indexOf(actions, target, method);
|
4722
|
-
|
4723
|
-
if (actionIndex !== -1) {
|
4724
|
-
actions[actionIndex + 2] |= SUSPENDED; // mark the action as suspended
|
4725
|
-
}
|
4726
|
-
|
4727
|
-
try {
|
4728
|
-
return callback.call(target);
|
4729
|
-
} finally {
|
4730
|
-
if (actionIndex !== -1) {
|
4731
|
-
actions[actionIndex + 2] &= ~SUSPENDED;
|
4732
|
-
}
|
4733
|
-
}
|
4758
|
+
return suspendListeners(obj, [eventName], target, method, callback);
|
4734
4759
|
}
|
4735
4760
|
|
4736
4761
|
/**
|
@@ -4752,30 +4777,7 @@ enifed('ember-metal/events', ['exports', 'ember-metal/core', 'ember-metal/utils'
|
|
4752
4777
|
method = target;
|
4753
4778
|
target = null;
|
4754
4779
|
}
|
4755
|
-
|
4756
|
-
var suspendedActions = [];
|
4757
|
-
var actionsList = [];
|
4758
|
-
|
4759
|
-
for (var i = 0, l = eventNames.length; i < l; i++) {
|
4760
|
-
var eventName = eventNames[i];
|
4761
|
-
var actions = actionsFor(obj, eventName);
|
4762
|
-
var actionIndex = indexOf(actions, target, method);
|
4763
|
-
|
4764
|
-
if (actionIndex !== -1) {
|
4765
|
-
actions[actionIndex + 2] |= SUSPENDED;
|
4766
|
-
suspendedActions.push(actionIndex);
|
4767
|
-
actionsList.push(actions);
|
4768
|
-
}
|
4769
|
-
}
|
4770
|
-
|
4771
|
-
try {
|
4772
|
-
return callback.call(target);
|
4773
|
-
} finally {
|
4774
|
-
for (var i = 0, l = suspendedActions.length; i < l; i++) {
|
4775
|
-
var actionIndex = suspendedActions[i];
|
4776
|
-
actionsList[i][actionIndex + 2] &= ~SUSPENDED;
|
4777
|
-
}
|
4778
|
-
}
|
4780
|
+
return _emberMetalMeta.meta(obj).suspendListeners(eventNames, target, method, callback);
|
4779
4781
|
}
|
4780
4782
|
|
4781
4783
|
/**
|
@@ -4788,17 +4790,7 @@ enifed('ember-metal/events', ['exports', 'ember-metal/core', 'ember-metal/utils'
|
|
4788
4790
|
*/
|
4789
4791
|
|
4790
4792
|
function watchedEvents(obj) {
|
4791
|
-
|
4792
|
-
var ret = [];
|
4793
|
-
|
4794
|
-
if (listeners) {
|
4795
|
-
for (var eventName in listeners) {
|
4796
|
-
if (eventName !== '__source__' && listeners[eventName]) {
|
4797
|
-
ret.push(eventName);
|
4798
|
-
}
|
4799
|
-
}
|
4800
|
-
}
|
4801
|
-
return ret;
|
4793
|
+
return _emberMetalMeta.meta(obj).watchedEvents();
|
4802
4794
|
}
|
4803
4795
|
|
4804
4796
|
/**
|
@@ -4820,10 +4812,10 @@ enifed('ember-metal/events', ['exports', 'ember-metal/core', 'ember-metal/utils'
|
|
4820
4812
|
function sendEvent(obj, eventName, params, actions) {
|
4821
4813
|
if (!actions) {
|
4822
4814
|
var meta = obj['__ember_meta__'];
|
4823
|
-
actions = meta && meta.
|
4815
|
+
actions = meta && meta.matchingListeners(eventName);
|
4824
4816
|
}
|
4825
4817
|
|
4826
|
-
if (!actions) {
|
4818
|
+
if (!actions || actions.length === 0) {
|
4827
4819
|
return;
|
4828
4820
|
}
|
4829
4821
|
|
@@ -4836,10 +4828,10 @@ enifed('ember-metal/events', ['exports', 'ember-metal/core', 'ember-metal/utils'
|
|
4836
4828
|
if (!method) {
|
4837
4829
|
continue;
|
4838
4830
|
}
|
4839
|
-
if (flags & SUSPENDED) {
|
4831
|
+
if (flags & _emberMetalMeta_listeners.SUSPENDED) {
|
4840
4832
|
continue;
|
4841
4833
|
}
|
4842
|
-
if (flags & ONCE) {
|
4834
|
+
if (flags & _emberMetalMeta_listeners.ONCE) {
|
4843
4835
|
removeListener(obj, eventName, target, method);
|
4844
4836
|
}
|
4845
4837
|
if (!target) {
|
@@ -4872,9 +4864,10 @@ enifed('ember-metal/events', ['exports', 'ember-metal/core', 'ember-metal/utils'
|
|
4872
4864
|
|
4873
4865
|
function hasListeners(obj, eventName) {
|
4874
4866
|
var meta = obj['__ember_meta__'];
|
4875
|
-
|
4876
|
-
|
4877
|
-
|
4867
|
+
if (!meta) {
|
4868
|
+
return false;
|
4869
|
+
}
|
4870
|
+
return meta.matchingListeners(eventName).length > 0;
|
4878
4871
|
}
|
4879
4872
|
|
4880
4873
|
/**
|
@@ -4888,7 +4881,7 @@ enifed('ember-metal/events', ['exports', 'ember-metal/core', 'ember-metal/utils'
|
|
4888
4881
|
function listenersFor(obj, eventName) {
|
4889
4882
|
var ret = [];
|
4890
4883
|
var meta = obj['__ember_meta__'];
|
4891
|
-
var actions = meta && meta.
|
4884
|
+
var actions = meta && meta.matchingListeners(eventName);
|
4892
4885
|
|
4893
4886
|
if (!actions) {
|
4894
4887
|
return ret;
|
@@ -4938,8 +4931,6 @@ enifed('ember-metal/events', ['exports', 'ember-metal/core', 'ember-metal/utils'
|
|
4938
4931
|
func.__ember_listens__ = events;
|
4939
4932
|
return func;
|
4940
4933
|
}
|
4941
|
-
|
4942
|
-
exports.removeListener = removeListener;
|
4943
4934
|
});
|
4944
4935
|
enifed('ember-metal/expand_properties', ['exports', 'ember-metal/error'], function (exports, _emberMetalError) {
|
4945
4936
|
'use strict';
|
@@ -4968,7 +4959,7 @@ enifed('ember-metal/expand_properties', ['exports', 'ember-metal/error'], functi
|
|
4968
4959
|
Ember.expandProperties('{foo,bar}', echo); //=> 'foo', 'bar'
|
4969
4960
|
Ember.expandProperties('foo.{bar,baz}', echo); //=> 'foo.bar', 'foo.baz'
|
4970
4961
|
Ember.expandProperties('{foo,bar}.baz', echo); //=> 'foo.baz', 'bar.baz'
|
4971
|
-
Ember.expandProperties('foo.{bar,baz}.[]', echo)
|
4962
|
+
Ember.expandProperties('foo.{bar,baz}.[]', echo) //=> 'foo.bar.[]', 'foo.baz.[]'
|
4972
4963
|
Ember.expandProperties('{foo,bar}.{spam,eggs}', echo) //=> 'foo.spam', 'foo.eggs', 'bar.spam', 'bar.eggs'
|
4973
4964
|
Ember.expandProperties('{foo}.bar.{baz}') //=> 'foo.bar.baz'
|
4974
4965
|
```
|
@@ -5018,7 +5009,7 @@ enifed('ember-metal/expand_properties', ['exports', 'ember-metal/error'], functi
|
|
5018
5009
|
return all;
|
5019
5010
|
}
|
5020
5011
|
});
|
5021
|
-
enifed('ember-metal/features', ['exports', 'ember-metal/core'], function (exports, _emberMetalCore) {
|
5012
|
+
enifed('ember-metal/features', ['exports', 'ember-metal/core', 'ember-metal/assign'], function (exports, _emberMetalCore, _emberMetalAssign) {
|
5022
5013
|
'use strict';
|
5023
5014
|
|
5024
5015
|
exports.default = isEnabled;
|
@@ -5036,9 +5027,9 @@ enifed('ember-metal/features', ['exports', 'ember-metal/core'], function (export
|
|
5036
5027
|
@since 1.1.0
|
5037
5028
|
@public
|
5038
5029
|
*/
|
5039
|
-
var FEATURES = _emberMetalCore.default.ENV.FEATURES
|
5030
|
+
var FEATURES = _emberMetalAssign.default({}, _emberMetalCore.default.ENV.FEATURES);exports.FEATURES = FEATURES;
|
5031
|
+
// jshint ignore:line
|
5040
5032
|
|
5041
|
-
exports.FEATURES = FEATURES;
|
5042
5033
|
/**
|
5043
5034
|
Determine whether the specified `feature` is enabled. Used by Ember's
|
5044
5035
|
build tools to exclude experimental features from beta/stable builds.
|
@@ -5836,7 +5827,7 @@ enifed('ember-metal/logger', ['exports', 'ember-metal/core', 'ember-metal/error'
|
|
5836
5827
|
};
|
5837
5828
|
});
|
5838
5829
|
// Ember.imports
|
5839
|
-
enifed('ember-metal/map', ['exports', 'ember-metal/core', 'ember-metal/utils'], function (exports, _emberMetalCore, _emberMetalUtils) {
|
5830
|
+
enifed('ember-metal/map', ['exports', 'ember-metal/core', 'ember-metal/utils', 'ember-metal/empty_object'], function (exports, _emberMetalCore, _emberMetalUtils, _emberMetalEmpty_object) {
|
5840
5831
|
/**
|
5841
5832
|
@module ember
|
5842
5833
|
@submodule ember-metal
|
@@ -5871,10 +5862,10 @@ enifed('ember-metal/map', ['exports', 'ember-metal/core', 'ember-metal/utils'],
|
|
5871
5862
|
}
|
5872
5863
|
|
5873
5864
|
function copyNull(obj) {
|
5874
|
-
var output =
|
5865
|
+
var output = new _emberMetalEmpty_object.default();
|
5875
5866
|
|
5876
5867
|
for (var prop in obj) {
|
5877
|
-
// hasOwnPropery is not needed because obj is
|
5868
|
+
// hasOwnPropery is not needed because obj is new EmptyObject();
|
5878
5869
|
output[prop] = obj[prop];
|
5879
5870
|
}
|
5880
5871
|
|
@@ -5903,7 +5894,6 @@ enifed('ember-metal/map', ['exports', 'ember-metal/core', 'ember-metal/utils'],
|
|
5903
5894
|
@private
|
5904
5895
|
*/
|
5905
5896
|
function OrderedSet() {
|
5906
|
-
|
5907
5897
|
if (this instanceof OrderedSet) {
|
5908
5898
|
this.clear();
|
5909
5899
|
this._silenceRemoveDeprecation = false;
|
@@ -5931,7 +5921,7 @@ enifed('ember-metal/map', ['exports', 'ember-metal/core', 'ember-metal/utils'],
|
|
5931
5921
|
@private
|
5932
5922
|
*/
|
5933
5923
|
clear: function () {
|
5934
|
-
this.presenceSet =
|
5924
|
+
this.presenceSet = new _emberMetalEmpty_object.default();
|
5935
5925
|
this.list = [];
|
5936
5926
|
this.size = 0;
|
5937
5927
|
},
|
@@ -6089,7 +6079,7 @@ enifed('ember-metal/map', ['exports', 'ember-metal/core', 'ember-metal/utils'],
|
|
6089
6079
|
if (this instanceof this.constructor) {
|
6090
6080
|
this._keys = OrderedSet.create();
|
6091
6081
|
this._keys._silenceRemoveDeprecation = true;
|
6092
|
-
this._values =
|
6082
|
+
this._values = new _emberMetalEmpty_object.default();
|
6093
6083
|
this.size = 0;
|
6094
6084
|
} else {
|
6095
6085
|
missingNew('OrderedSet');
|
@@ -6247,7 +6237,7 @@ enifed('ember-metal/map', ['exports', 'ember-metal/core', 'ember-metal/utils'],
|
|
6247
6237
|
*/
|
6248
6238
|
clear: function () {
|
6249
6239
|
this._keys.clear();
|
6250
|
-
this._values =
|
6240
|
+
this._values = new _emberMetalEmpty_object.default();
|
6251
6241
|
this.size = 0;
|
6252
6242
|
},
|
6253
6243
|
|
@@ -6354,49 +6344,493 @@ enifed('ember-metal/merge', ['exports'], function (exports) {
|
|
6354
6344
|
*/
|
6355
6345
|
'use strict';
|
6356
6346
|
|
6357
|
-
exports.default = merge;
|
6358
|
-
|
6347
|
+
exports.default = merge;
|
6348
|
+
|
6349
|
+
function merge(original, updates) {
|
6350
|
+
if (!updates || typeof updates !== 'object') {
|
6351
|
+
return original;
|
6352
|
+
}
|
6353
|
+
|
6354
|
+
var props = Object.keys(updates);
|
6355
|
+
var prop;
|
6356
|
+
var length = props.length;
|
6357
|
+
|
6358
|
+
for (var i = 0; i < length; i++) {
|
6359
|
+
prop = props[i];
|
6360
|
+
original[prop] = updates[prop];
|
6361
|
+
}
|
6362
|
+
|
6363
|
+
return original;
|
6364
|
+
}
|
6365
|
+
});
|
6366
|
+
enifed('ember-metal/meta', ['exports', 'ember-metal/features', 'ember-metal/meta_listeners', 'ember-metal/empty_object'], function (exports, _emberMetalFeatures, _emberMetalMeta_listeners, _emberMetalEmpty_object) {
|
6367
|
+
// Remove "use strict"; from transpiled module until
|
6368
|
+
// https://bugs.webkit.org/show_bug.cgi?id=138038 is fixed
|
6369
|
+
//
|
6370
|
+
|
6371
|
+
exports.meta = meta;
|
6372
|
+
'REMOVE_USE_STRICT: true';
|
6373
|
+
|
6374
|
+
/**
|
6375
|
+
@module ember-metal
|
6376
|
+
*/
|
6377
|
+
|
6378
|
+
/*
|
6379
|
+
This declares several meta-programmed members on the Meta class. Such
|
6380
|
+
meta!
|
6381
|
+
|
6382
|
+
In general, the `readable` variants will give you an object (if it
|
6383
|
+
already exists) that you can read but should not modify. The
|
6384
|
+
`writable` variants will give you a mutable object, and they will
|
6385
|
+
create it if it didn't already exist.
|
6386
|
+
|
6387
|
+
The following methods will get generated metaprogrammatically, and
|
6388
|
+
I'm including them here for greppability:
|
6389
|
+
|
6390
|
+
writableCache, readableCache, writableWatching, readableWatching,
|
6391
|
+
peekWatching, clearWatching, writableMixins, readableMixins,
|
6392
|
+
peekMixins, clearMixins, writableBindings, readableBindings,
|
6393
|
+
peekBindings, clearBindings, writableValues, readableValues,
|
6394
|
+
peekValues, clearValues, writableDeps, readableDeps, getAllDeps
|
6395
|
+
writableChainWatchers, readableChainWatchers, writableChains,
|
6396
|
+
readableChains
|
6397
|
+
|
6398
|
+
*/
|
6399
|
+
var members = {
|
6400
|
+
cache: ownMap,
|
6401
|
+
watching: inheritedMap,
|
6402
|
+
mixins: inheritedMap,
|
6403
|
+
bindings: inheritedMap,
|
6404
|
+
values: inheritedMap,
|
6405
|
+
deps: inheritedMapOfMaps,
|
6406
|
+
chainWatchers: ownCustomObject,
|
6407
|
+
chains: inheritedCustomObject
|
6408
|
+
};
|
6409
|
+
|
6410
|
+
var memberNames = Object.keys(members);
|
6411
|
+
|
6412
|
+
function Meta(obj, parentMeta) {
|
6413
|
+
this._cache = undefined;
|
6414
|
+
this._watching = undefined;
|
6415
|
+
this._mixins = undefined;
|
6416
|
+
this._bindings = undefined;
|
6417
|
+
this._values = undefined;
|
6418
|
+
this._deps = undefined;
|
6419
|
+
this._chainWatchers = undefined;
|
6420
|
+
this._chains = undefined;
|
6421
|
+
// used only internally
|
6422
|
+
this.source = obj;
|
6423
|
+
|
6424
|
+
// when meta(obj).proto === obj, the object is intended to be only a
|
6425
|
+
// prototype and doesn't need to actually be observable itself
|
6426
|
+
this.proto = undefined;
|
6427
|
+
|
6428
|
+
// The next meta in our inheritance chain. We (will) track this
|
6429
|
+
// explicitly instead of using prototypical inheritance because we
|
6430
|
+
// have detailed knowledge of how each property should really be
|
6431
|
+
// inherited, and we can optimize it much better than JS runtimes.
|
6432
|
+
this.parent = parentMeta;
|
6433
|
+
|
6434
|
+
this._initializeListeners();
|
6435
|
+
}
|
6436
|
+
|
6437
|
+
for (var _name in _emberMetalMeta_listeners.protoMethods) {
|
6438
|
+
Meta.prototype[_name] = _emberMetalMeta_listeners.protoMethods[_name];
|
6439
|
+
}
|
6440
|
+
memberNames.forEach(function (name) {
|
6441
|
+
return members[name](name, Meta);
|
6442
|
+
});
|
6443
|
+
|
6444
|
+
// Implements a member that is a lazily created, non-inheritable
|
6445
|
+
// POJO.
|
6446
|
+
function ownMap(name, Meta) {
|
6447
|
+
var key = memberProperty(name);
|
6448
|
+
var capitalized = capitalize(name);
|
6449
|
+
Meta.prototype['writable' + capitalized] = function () {
|
6450
|
+
return this._getOrCreateOwnMap(key);
|
6451
|
+
};
|
6452
|
+
Meta.prototype['readable' + capitalized] = function () {
|
6453
|
+
return this[key];
|
6454
|
+
};
|
6455
|
+
}
|
6456
|
+
|
6457
|
+
Meta.prototype._getOrCreateOwnMap = function (key) {
|
6458
|
+
var ret = this[key];
|
6459
|
+
if (!ret) {
|
6460
|
+
ret = this[key] = new _emberMetalEmpty_object.default();
|
6461
|
+
}
|
6462
|
+
return ret;
|
6463
|
+
};
|
6464
|
+
|
6465
|
+
// Implements a member that is a lazily created POJO with inheritable
|
6466
|
+
// values.
|
6467
|
+
function inheritedMap(name, Meta) {
|
6468
|
+
var key = memberProperty(name);
|
6469
|
+
var capitalized = capitalize(name);
|
6470
|
+
|
6471
|
+
Meta.prototype['writable' + capitalized] = function () {
|
6472
|
+
return this._getOrCreateInheritedMap(key);
|
6473
|
+
};
|
6474
|
+
|
6475
|
+
Meta.prototype['readable' + capitalized] = function () {
|
6476
|
+
return this._getInherited(key);
|
6477
|
+
};
|
6478
|
+
|
6479
|
+
Meta.prototype['peek' + capitalized] = function (subkey) {
|
6480
|
+
var map = this._getInherited(key);
|
6481
|
+
if (map) {
|
6482
|
+
return map[subkey];
|
6483
|
+
}
|
6484
|
+
};
|
6485
|
+
|
6486
|
+
Meta.prototype['clear' + capitalized] = function () {
|
6487
|
+
this[key] = new _emberMetalEmpty_object.default();
|
6488
|
+
};
|
6489
|
+
}
|
6490
|
+
|
6491
|
+
Meta.prototype._getOrCreateInheritedMap = function (key) {
|
6492
|
+
var ret = this[key];
|
6493
|
+
if (!ret) {
|
6494
|
+
if (this.parent) {
|
6495
|
+
ret = this[key] = Object.create(this.parent._getOrCreateInheritedMap(key));
|
6496
|
+
} else {
|
6497
|
+
ret = this[key] = new _emberMetalEmpty_object.default();
|
6498
|
+
}
|
6499
|
+
}
|
6500
|
+
return ret;
|
6501
|
+
};
|
6502
|
+
|
6503
|
+
Meta.prototype._getInherited = function (key) {
|
6504
|
+
var pointer = this;
|
6505
|
+
while (pointer !== undefined) {
|
6506
|
+
if (pointer[key]) {
|
6507
|
+
return pointer[key];
|
6508
|
+
}
|
6509
|
+
pointer = pointer.parent;
|
6510
|
+
}
|
6511
|
+
};
|
6512
|
+
|
6513
|
+
// Implements a member that provides a lazily created map of maps,
|
6514
|
+
// with inheritance at both levels.
|
6515
|
+
function inheritedMapOfMaps(name, Meta) {
|
6516
|
+
var key = memberProperty(name);
|
6517
|
+
var capitalized = capitalize(name);
|
6518
|
+
|
6519
|
+
Meta.prototype['writable' + capitalized] = function (subkey) {
|
6520
|
+
var outerMap = this._getOrCreateInheritedMap(key);
|
6521
|
+
var innerMap = outerMap[subkey];
|
6522
|
+
if (!innerMap) {
|
6523
|
+
innerMap = outerMap[subkey] = new _emberMetalEmpty_object.default();
|
6524
|
+
} else if (!Object.hasOwnProperty.call(outerMap, subkey)) {
|
6525
|
+
innerMap = outerMap[subkey] = Object.create(innerMap);
|
6526
|
+
}
|
6527
|
+
return innerMap;
|
6528
|
+
};
|
6529
|
+
|
6530
|
+
Meta.prototype['readable' + capitalized] = function (subkey) {
|
6531
|
+
var map = this._getInherited(key);
|
6532
|
+
if (map) {
|
6533
|
+
return map[subkey];
|
6534
|
+
}
|
6535
|
+
};
|
6536
|
+
|
6537
|
+
Meta.prototype['getAll' + capitalized] = function () {
|
6538
|
+
return this._getInherited(key);
|
6539
|
+
};
|
6540
|
+
}
|
6541
|
+
|
6542
|
+
// Implements a member that provides a non-heritable, lazily-created
|
6543
|
+
// object using the method you provide.
|
6544
|
+
function ownCustomObject(name, Meta) {
|
6545
|
+
var key = memberProperty(name);
|
6546
|
+
var capitalized = capitalize(name);
|
6547
|
+
Meta.prototype['writable' + capitalized] = function (create) {
|
6548
|
+
var ret = this[key];
|
6549
|
+
if (!ret) {
|
6550
|
+
ret = this[key] = create(this.source);
|
6551
|
+
}
|
6552
|
+
return ret;
|
6553
|
+
};
|
6554
|
+
Meta.prototype['readable' + capitalized] = function () {
|
6555
|
+
return this[key];
|
6556
|
+
};
|
6557
|
+
}
|
6558
|
+
|
6559
|
+
// Implements a member that provides an inheritable, lazily-created
|
6560
|
+
// object using the method you provide. We will derived children from
|
6561
|
+
// their parents by calling your object's `copy()` method.
|
6562
|
+
function inheritedCustomObject(name, Meta) {
|
6563
|
+
var key = memberProperty(name);
|
6564
|
+
var capitalized = capitalize(name);
|
6565
|
+
Meta.prototype['writable' + capitalized] = function (create) {
|
6566
|
+
var ret = this[key];
|
6567
|
+
if (!ret) {
|
6568
|
+
if (this.parent) {
|
6569
|
+
ret = this[key] = this.parent['writable' + capitalized](create).copy(this.source);
|
6570
|
+
} else {
|
6571
|
+
ret = this[key] = create(this.source);
|
6572
|
+
}
|
6573
|
+
}
|
6574
|
+
return ret;
|
6575
|
+
};
|
6576
|
+
Meta.prototype['readable' + capitalized] = function () {
|
6577
|
+
return this._getInherited(key);
|
6578
|
+
};
|
6579
|
+
}
|
6580
|
+
|
6581
|
+
function memberProperty(name) {
|
6582
|
+
return '_' + name;
|
6583
|
+
}
|
6584
|
+
|
6585
|
+
// there's a more general-purpose capitalize in ember-runtime, but we
|
6586
|
+
// don't want to make ember-metal depend on ember-runtime.
|
6587
|
+
function capitalize(name) {
|
6588
|
+
return name.replace(/^\w/, function (m) {
|
6589
|
+
return m.toUpperCase();
|
6590
|
+
});
|
6591
|
+
}
|
6592
|
+
|
6593
|
+
var META_DESC = {
|
6594
|
+
writable: true,
|
6595
|
+
configurable: true,
|
6596
|
+
enumerable: false,
|
6597
|
+
value: null
|
6598
|
+
};
|
6599
|
+
|
6600
|
+
exports.META_DESC = META_DESC;
|
6601
|
+
var EMBER_META_PROPERTY = {
|
6602
|
+
name: '__ember_meta__',
|
6603
|
+
descriptor: META_DESC
|
6604
|
+
};
|
6605
|
+
|
6606
|
+
// Placeholder for non-writable metas.
|
6607
|
+
var EMPTY_META = new Meta(null);
|
6608
|
+
|
6609
|
+
exports.EMPTY_META = EMPTY_META;
|
6610
|
+
|
6611
|
+
EMPTY_META.writableValues();
|
6612
|
+
|
6613
|
+
/**
|
6614
|
+
Retrieves the meta hash for an object. If `writable` is true ensures the
|
6615
|
+
hash is writable for this object as well.
|
6616
|
+
|
6617
|
+
The meta object contains information about computed property descriptors as
|
6618
|
+
well as any watched properties and other information. You generally will
|
6619
|
+
not access this information directly but instead work with higher level
|
6620
|
+
methods that manipulate this hash indirectly.
|
6621
|
+
|
6622
|
+
@method meta
|
6623
|
+
@for Ember
|
6624
|
+
@private
|
6625
|
+
|
6626
|
+
@param {Object} obj The object to retrieve meta for
|
6627
|
+
@param {Boolean} [writable=true] Pass `false` if you do not intend to modify
|
6628
|
+
the meta hash, allowing the method to avoid making an unnecessary copy.
|
6629
|
+
@return {Object} the meta hash for an object
|
6630
|
+
*/
|
6631
|
+
|
6632
|
+
function meta(obj, writable) {
|
6633
|
+
var ret = obj.__ember_meta__;
|
6634
|
+
if (writable === false) {
|
6635
|
+
return ret || EMPTY_META;
|
6636
|
+
}
|
6637
|
+
|
6638
|
+
if (ret && ret.source === obj) {
|
6639
|
+
return ret;
|
6640
|
+
}
|
6641
|
+
|
6642
|
+
if (!ret) {
|
6643
|
+
ret = new Meta(obj);
|
6644
|
+
|
6645
|
+
ret.writableValues();
|
6646
|
+
} else {
|
6647
|
+
ret = new Meta(obj, ret);
|
6648
|
+
}
|
6649
|
+
|
6650
|
+
if (obj.__defineNonEnumerable) {
|
6651
|
+
obj.__defineNonEnumerable(EMBER_META_PROPERTY);
|
6652
|
+
} else {
|
6653
|
+
Object.defineProperty(obj, '__ember_meta__', META_DESC);
|
6654
|
+
}
|
6655
|
+
obj.__ember_meta__ = ret;
|
6656
|
+
|
6657
|
+
return ret;
|
6658
|
+
}
|
6659
|
+
});
|
6660
|
+
enifed('ember-metal/meta_listeners', ['exports'], function (exports) {
|
6661
|
+
/*
|
6662
|
+
When we render a rich template hierarchy, the set of events that
|
6663
|
+
*might* happen tends to be much larger than the set of events that
|
6664
|
+
actually happen. This implies that we should make listener creation &
|
6665
|
+
destruction cheap, even at the cost of making event dispatch more
|
6666
|
+
expensive.
|
6667
|
+
|
6668
|
+
Thus we store a new listener with a single push and no new
|
6669
|
+
allocations, without even bothering to do deduplication -- we can
|
6670
|
+
save that for dispatch time, if an event actually happens.
|
6671
|
+
*/
|
6672
|
+
|
6673
|
+
/* listener flags */
|
6674
|
+
'use strict';
|
6359
6675
|
|
6360
|
-
|
6361
|
-
|
6362
|
-
|
6363
|
-
}
|
6676
|
+
var ONCE = 1;
|
6677
|
+
exports.ONCE = ONCE;
|
6678
|
+
var SUSPENDED = 2;
|
6364
6679
|
|
6365
|
-
|
6366
|
-
|
6367
|
-
var length = props.length;
|
6680
|
+
exports.SUSPENDED = SUSPENDED;
|
6681
|
+
var protoMethods = {
|
6368
6682
|
|
6369
|
-
|
6370
|
-
|
6371
|
-
|
6372
|
-
|
6683
|
+
addToListeners: function (eventName, target, method, flags) {
|
6684
|
+
if (!this._listeners) {
|
6685
|
+
this._listeners = [];
|
6686
|
+
}
|
6687
|
+
this._listeners.push(eventName, target, method, flags);
|
6688
|
+
},
|
6373
6689
|
|
6374
|
-
|
6375
|
-
|
6690
|
+
_finalizeListeners: function () {
|
6691
|
+
if (this._listenersFinalized) {
|
6692
|
+
return;
|
6693
|
+
}
|
6694
|
+
if (!this._listeners) {
|
6695
|
+
this._listeners = [];
|
6696
|
+
}
|
6697
|
+
var pointer = this.parent;
|
6698
|
+
while (pointer) {
|
6699
|
+
var listeners = pointer._listeners;
|
6700
|
+
if (listeners) {
|
6701
|
+
this._listeners = this._listeners.concat(listeners);
|
6702
|
+
}
|
6703
|
+
if (pointer._listenersFinalized) {
|
6704
|
+
break;
|
6705
|
+
}
|
6706
|
+
pointer = pointer.parent;
|
6707
|
+
}
|
6708
|
+
this._listenersFinalized = true;
|
6709
|
+
},
|
6376
6710
|
|
6377
|
-
|
6378
|
-
|
6379
|
-
|
6380
|
-
|
6711
|
+
removeFromListeners: function (eventName, target, method, didRemove) {
|
6712
|
+
var pointer = this;
|
6713
|
+
while (pointer) {
|
6714
|
+
var listeners = pointer._listeners;
|
6715
|
+
if (listeners) {
|
6716
|
+
for (var index = listeners.length - 4; index >= 0; index -= 4) {
|
6717
|
+
if (listeners[index] === eventName && (!method || listeners[index + 1] === target && listeners[index + 2] === method)) {
|
6718
|
+
if (pointer === this) {
|
6719
|
+
// we are modifying our own list, so we edit directly
|
6720
|
+
if (typeof didRemove === 'function') {
|
6721
|
+
didRemove(eventName, target, listeners[index + 2]);
|
6722
|
+
}
|
6723
|
+
listeners.splice(index, 4);
|
6724
|
+
} else {
|
6725
|
+
// we are trying to remove an inherited listener, so we do
|
6726
|
+
// just-in-time copying to detach our own listeners from
|
6727
|
+
// our inheritance chain.
|
6728
|
+
this._finalizeListeners();
|
6729
|
+
return this.removeFromListeners(eventName, target, method);
|
6730
|
+
}
|
6731
|
+
}
|
6732
|
+
}
|
6733
|
+
}
|
6734
|
+
if (pointer._listenersFinalized) {
|
6735
|
+
break;
|
6736
|
+
}
|
6737
|
+
pointer = pointer.parent;
|
6738
|
+
}
|
6739
|
+
},
|
6381
6740
|
|
6382
|
-
|
6383
|
-
var
|
6384
|
-
|
6385
|
-
|
6741
|
+
matchingListeners: function (eventName) {
|
6742
|
+
var pointer = this;
|
6743
|
+
var result = [];
|
6744
|
+
while (pointer) {
|
6745
|
+
var listeners = pointer._listeners;
|
6746
|
+
if (listeners) {
|
6747
|
+
for (var index = 0; index < listeners.length - 3; index += 4) {
|
6748
|
+
if (listeners[index] === eventName) {
|
6749
|
+
pushUniqueListener(result, listeners, index);
|
6750
|
+
}
|
6751
|
+
}
|
6752
|
+
}
|
6753
|
+
if (pointer._listenersFinalized) {
|
6754
|
+
break;
|
6755
|
+
}
|
6756
|
+
pointer = pointer.parent;
|
6757
|
+
}
|
6758
|
+
var sus = this._suspendedListeners;
|
6759
|
+
if (sus) {
|
6760
|
+
for (var susIndex = 0; susIndex < sus.length - 2; susIndex += 3) {
|
6761
|
+
if (eventName === sus[susIndex]) {
|
6762
|
+
for (var resultIndex = 0; resultIndex < result.length - 2; resultIndex += 3) {
|
6763
|
+
if (result[resultIndex] === sus[susIndex + 1] && result[resultIndex + 1] === sus[susIndex + 2]) {
|
6764
|
+
result[resultIndex + 2] |= SUSPENDED;
|
6765
|
+
}
|
6766
|
+
}
|
6767
|
+
}
|
6768
|
+
}
|
6386
6769
|
}
|
6770
|
+
return result;
|
6771
|
+
},
|
6387
6772
|
|
6388
|
-
|
6773
|
+
suspendListeners: function (eventNames, target, method, callback) {
|
6774
|
+
var sus = this._suspendedListeners;
|
6775
|
+
if (!sus) {
|
6776
|
+
sus = this._suspendedListeners = [];
|
6777
|
+
}
|
6778
|
+
for (var i = 0; i < eventNames.length; i++) {
|
6779
|
+
sus.push(eventNames[i], target, method);
|
6780
|
+
}
|
6781
|
+
try {
|
6782
|
+
return callback.call(target);
|
6783
|
+
} finally {
|
6784
|
+
if (sus.length === eventNames.length) {
|
6785
|
+
this._suspendedListeners = undefined;
|
6786
|
+
} else {
|
6787
|
+
for (var i = sus.length - 3; i >= 0; i -= 3) {
|
6788
|
+
if (sus[i + 1] === target && sus[i + 2] === method && eventNames.indexOf(sus[i]) !== -1) {
|
6789
|
+
sus.splice(i, 3);
|
6790
|
+
}
|
6791
|
+
}
|
6792
|
+
}
|
6793
|
+
}
|
6794
|
+
},
|
6389
6795
|
|
6390
|
-
|
6391
|
-
|
6392
|
-
|
6796
|
+
watchedEvents: function () {
|
6797
|
+
var pointer = this;
|
6798
|
+
var names = {};
|
6799
|
+
while (pointer) {
|
6800
|
+
var listeners = pointer._listeners;
|
6801
|
+
if (listeners) {
|
6802
|
+
for (var index = 0; index < listeners.length - 3; index += 4) {
|
6803
|
+
names[listeners[index]] = true;
|
6804
|
+
}
|
6805
|
+
}
|
6806
|
+
if (pointer._listenersFinalized) {
|
6807
|
+
break;
|
6808
|
+
}
|
6809
|
+
pointer = pointer.parent;
|
6393
6810
|
}
|
6811
|
+
return Object.keys(names);
|
6812
|
+
},
|
6813
|
+
|
6814
|
+
_initializeListeners: function () {
|
6815
|
+
this._listeners = undefined;
|
6816
|
+
this._listenersFinalized = undefined;
|
6817
|
+
this._suspendedListeners = undefined;
|
6394
6818
|
}
|
6819
|
+
};
|
6395
6820
|
|
6396
|
-
|
6821
|
+
exports.protoMethods = protoMethods;
|
6822
|
+
function pushUniqueListener(destination, source, index) {
|
6823
|
+
var target = source[index + 1];
|
6824
|
+
var method = source[index + 2];
|
6825
|
+
for (var destinationIndex = 0; destinationIndex < destination.length - 2; destinationIndex += 3) {
|
6826
|
+
if (destination[destinationIndex] === target && destination[destinationIndex + 1] === method) {
|
6827
|
+
return;
|
6828
|
+
}
|
6829
|
+
}
|
6830
|
+
destination.push(target, method, source[index + 3]);
|
6397
6831
|
}
|
6398
6832
|
});
|
6399
|
-
enifed('ember-metal/mixin', ['exports', 'ember-metal/core', 'ember-metal/merge', 'ember-metal/property_get', 'ember-metal/property_set', 'ember-metal/utils', 'ember-metal/expand_properties', 'ember-metal/properties', 'ember-metal/computed', 'ember-metal/binding', 'ember-metal/observer', 'ember-metal/events', 'ember-metal/streams/utils'], function (exports, _emberMetalCore, _emberMetalMerge, _emberMetalProperty_get, _emberMetalProperty_set, _emberMetalUtils, _emberMetalExpand_properties, _emberMetalProperties, _emberMetalComputed, _emberMetalBinding, _emberMetalObserver, _emberMetalEvents, _emberMetalStreamsUtils) {
|
6833
|
+
enifed('ember-metal/mixin', ['exports', 'ember-metal/core', 'ember-metal/merge', 'ember-metal/empty_object', 'ember-metal/property_get', 'ember-metal/property_set', 'ember-metal/utils', 'ember-metal/meta', 'ember-metal/expand_properties', 'ember-metal/properties', 'ember-metal/computed', 'ember-metal/binding', 'ember-metal/observer', 'ember-metal/events', 'ember-metal/streams/utils'], function (exports, _emberMetalCore, _emberMetalMerge, _emberMetalEmpty_object, _emberMetalProperty_get, _emberMetalProperty_set, _emberMetalUtils, _emberMetalMeta, _emberMetalExpand_properties, _emberMetalProperties, _emberMetalComputed, _emberMetalBinding, _emberMetalObserver, _emberMetalEvents, _emberMetalStreamsUtils) {
|
6400
6834
|
// Remove "use strict"; from transpiled module until
|
6401
6835
|
// https://bugs.webkit.org/show_bug.cgi?id=138038 is fixed
|
6402
6836
|
//
|
@@ -6418,47 +6852,8 @@ enifed('ember-metal/mixin', ['exports', 'ember-metal/core', 'ember-metal/merge',
|
|
6418
6852
|
var REQUIRED;
|
6419
6853
|
var a_slice = [].slice;
|
6420
6854
|
|
6421
|
-
function superFunction() {
|
6422
|
-
var func = this.__nextSuper;
|
6423
|
-
var ret;
|
6424
|
-
|
6425
|
-
if (func) {
|
6426
|
-
var length = arguments.length;
|
6427
|
-
this.__nextSuper = null;
|
6428
|
-
if (length === 0) {
|
6429
|
-
ret = func.call(this);
|
6430
|
-
} else if (length === 1) {
|
6431
|
-
ret = func.call(this, arguments[0]);
|
6432
|
-
} else if (length === 2) {
|
6433
|
-
ret = func.call(this, arguments[0], arguments[1]);
|
6434
|
-
} else {
|
6435
|
-
ret = func.apply(this, arguments);
|
6436
|
-
}
|
6437
|
-
this.__nextSuper = func;
|
6438
|
-
return ret;
|
6439
|
-
}
|
6440
|
-
}
|
6441
|
-
|
6442
|
-
// ensure we prime superFunction to mitigate
|
6443
|
-
// v8 bug potentially incorrectly deopts this function: https://code.google.com/p/v8/issues/detail?id=3709
|
6444
|
-
var primer = {
|
6445
|
-
__nextSuper: function (a, b, c, d) {}
|
6446
|
-
};
|
6447
|
-
|
6448
|
-
superFunction.call(primer);
|
6449
|
-
superFunction.call(primer, 1);
|
6450
|
-
superFunction.call(primer, 1, 2);
|
6451
|
-
superFunction.call(primer, 1, 2, 3);
|
6452
|
-
|
6453
6855
|
function mixinsMeta(obj) {
|
6454
|
-
|
6455
|
-
var ret = m.mixins;
|
6456
|
-
if (!ret) {
|
6457
|
-
ret = m.mixins = {};
|
6458
|
-
} else if (!m.hasOwnProperty('mixins')) {
|
6459
|
-
ret = m.mixins = Object.create(ret);
|
6460
|
-
}
|
6461
|
-
return ret;
|
6856
|
+
return _emberMetalMeta.meta(obj, true).writableMixins();
|
6462
6857
|
}
|
6463
6858
|
|
6464
6859
|
function isMethod(obj) {
|
@@ -6532,10 +6927,6 @@ enifed('ember-metal/mixin', ['exports', 'ember-metal/core', 'ember-metal/merge',
|
|
6532
6927
|
return property;
|
6533
6928
|
}
|
6534
6929
|
|
6535
|
-
var sourceAvailable = (function () {
|
6536
|
-
return this;
|
6537
|
-
}).toString().indexOf('return this;') > -1;
|
6538
|
-
|
6539
6930
|
function giveMethodSuper(obj, key, method, values, descs) {
|
6540
6931
|
var superMethod;
|
6541
6932
|
|
@@ -6554,21 +6945,7 @@ enifed('ember-metal/mixin', ['exports', 'ember-metal/core', 'ember-metal/merge',
|
|
6554
6945
|
return method;
|
6555
6946
|
}
|
6556
6947
|
|
6557
|
-
|
6558
|
-
if (sourceAvailable) {
|
6559
|
-
hasSuper = method.__hasSuper;
|
6560
|
-
|
6561
|
-
if (hasSuper === undefined) {
|
6562
|
-
hasSuper = method.toString().indexOf('_super') > -1;
|
6563
|
-
method.__hasSuper = hasSuper;
|
6564
|
-
}
|
6565
|
-
}
|
6566
|
-
|
6567
|
-
if (sourceAvailable === false || hasSuper) {
|
6568
|
-
return _emberMetalUtils.wrap(method, superMethod);
|
6569
|
-
} else {
|
6570
|
-
return method;
|
6571
|
-
}
|
6948
|
+
return _emberMetalUtils.wrap(method, superMethod);
|
6572
6949
|
}
|
6573
6950
|
|
6574
6951
|
function applyConcatenatedProperties(obj, key, value, values) {
|
@@ -6617,7 +6994,7 @@ enifed('ember-metal/mixin', ['exports', 'ember-metal/core', 'ember-metal/merge',
|
|
6617
6994
|
}
|
6618
6995
|
|
6619
6996
|
if (hasFunction) {
|
6620
|
-
newBase._super =
|
6997
|
+
newBase._super = function () {};
|
6621
6998
|
}
|
6622
6999
|
|
6623
7000
|
return newBase;
|
@@ -6630,7 +7007,7 @@ enifed('ember-metal/mixin', ['exports', 'ember-metal/core', 'ember-metal/merge',
|
|
6630
7007
|
}
|
6631
7008
|
|
6632
7009
|
// Wrap descriptor function to implement
|
6633
|
-
//
|
7010
|
+
// _super() if needed
|
6634
7011
|
if (value._getter) {
|
6635
7012
|
value = giveDescriptorSuper(meta, key, value, values, descs, base);
|
6636
7013
|
}
|
@@ -6669,7 +7046,7 @@ enifed('ember-metal/mixin', ['exports', 'ember-metal/core', 'ember-metal/merge',
|
|
6669
7046
|
}
|
6670
7047
|
|
6671
7048
|
if (props) {
|
6672
|
-
meta =
|
7049
|
+
meta = _emberMetalMeta.meta(base);
|
6673
7050
|
if (base.willMergeMixin) {
|
6674
7051
|
base.willMergeMixin(props);
|
6675
7052
|
}
|
@@ -6701,13 +7078,7 @@ enifed('ember-metal/mixin', ['exports', 'ember-metal/core', 'ember-metal/merge',
|
|
6701
7078
|
|
6702
7079
|
function detectBinding(obj, key, value, m) {
|
6703
7080
|
if (IS_BINDING.test(key)) {
|
6704
|
-
|
6705
|
-
if (!bindings) {
|
6706
|
-
bindings = m.bindings = {};
|
6707
|
-
} else if (!m.hasOwnProperty('bindings')) {
|
6708
|
-
bindings = m.bindings = Object.create(m.bindings);
|
6709
|
-
}
|
6710
|
-
bindings[key] = value;
|
7081
|
+
m.writableBindings()[key] = value;
|
6711
7082
|
}
|
6712
7083
|
}
|
6713
7084
|
|
@@ -6730,7 +7101,7 @@ enifed('ember-metal/mixin', ['exports', 'ember-metal/core', 'ember-metal/merge',
|
|
6730
7101
|
stream.subscribe(onNotify);
|
6731
7102
|
|
6732
7103
|
if (obj._streamBindingSubscriptions === undefined) {
|
6733
|
-
obj._streamBindingSubscriptions =
|
7104
|
+
obj._streamBindingSubscriptions = new _emberMetalEmpty_object.default();
|
6734
7105
|
}
|
6735
7106
|
|
6736
7107
|
obj._streamBindingSubscriptions[key] = onNotify;
|
@@ -6738,7 +7109,7 @@ enifed('ember-metal/mixin', ['exports', 'ember-metal/core', 'ember-metal/merge',
|
|
6738
7109
|
|
6739
7110
|
function connectBindings(obj, m) {
|
6740
7111
|
// TODO Mixin.apply(instance) should disconnect binding if exists
|
6741
|
-
var bindings = m.
|
7112
|
+
var bindings = m.readableBindings();
|
6742
7113
|
var key, binding, to;
|
6743
7114
|
if (bindings) {
|
6744
7115
|
for (key in bindings) {
|
@@ -6760,12 +7131,12 @@ enifed('ember-metal/mixin', ['exports', 'ember-metal/core', 'ember-metal/merge',
|
|
6760
7131
|
}
|
6761
7132
|
}
|
6762
7133
|
// mark as applied
|
6763
|
-
m.
|
7134
|
+
m.clearBindings();
|
6764
7135
|
}
|
6765
7136
|
}
|
6766
7137
|
|
6767
7138
|
function finishPartial(obj, m) {
|
6768
|
-
connectBindings(obj, m ||
|
7139
|
+
connectBindings(obj, m || _emberMetalMeta.meta(obj));
|
6769
7140
|
return obj;
|
6770
7141
|
}
|
6771
7142
|
|
@@ -6816,11 +7187,11 @@ enifed('ember-metal/mixin', ['exports', 'ember-metal/core', 'ember-metal/merge',
|
|
6816
7187
|
function applyMixin(obj, mixins, partial) {
|
6817
7188
|
var descs = {};
|
6818
7189
|
var values = {};
|
6819
|
-
var m =
|
7190
|
+
var m = _emberMetalMeta.meta(obj);
|
6820
7191
|
var keys = [];
|
6821
7192
|
var key, value, desc;
|
6822
7193
|
|
6823
|
-
obj._super =
|
7194
|
+
obj._super = function () {};
|
6824
7195
|
|
6825
7196
|
// Go through all mixins and hashes passed in, and:
|
6826
7197
|
//
|
@@ -7079,12 +7450,11 @@ enifed('ember-metal/mixin', ['exports', 'ember-metal/core', 'ember-metal/merge',
|
|
7079
7450
|
if (obj instanceof Mixin) {
|
7080
7451
|
return _detect(obj, this, {});
|
7081
7452
|
}
|
7082
|
-
var m = obj
|
7083
|
-
|
7084
|
-
|
7085
|
-
return !!mixins[_emberMetalUtils.guidFor(this)];
|
7453
|
+
var m = obj.__ember_meta__;
|
7454
|
+
if (!m) {
|
7455
|
+
return false;
|
7086
7456
|
}
|
7087
|
-
return
|
7457
|
+
return !!m.peekMixins(_emberMetalUtils.guidFor(this));
|
7088
7458
|
};
|
7089
7459
|
|
7090
7460
|
MixinPrototype.without = function () {
|
@@ -7135,7 +7505,7 @@ enifed('ember-metal/mixin', ['exports', 'ember-metal/core', 'ember-metal/merge',
|
|
7135
7505
|
// TODO: Make Ember.mixin
|
7136
7506
|
Mixin.mixins = function (obj) {
|
7137
7507
|
var m = obj['__ember_meta__'];
|
7138
|
-
var mixins = m && m.
|
7508
|
+
var mixins = m && m.readableMixins();
|
7139
7509
|
var ret = [];
|
7140
7510
|
|
7141
7511
|
if (!mixins) {
|
@@ -7199,7 +7569,7 @@ enifed('ember-metal/mixin', ['exports', 'ember-metal/core', 'ember-metal/merge',
|
|
7199
7569
|
@method aliasMethod
|
7200
7570
|
@for Ember
|
7201
7571
|
@param {String} methodName name of the method to alias
|
7202
|
-
@
|
7572
|
+
@private
|
7203
7573
|
*/
|
7204
7574
|
|
7205
7575
|
function aliasMethod(methodName) {
|
@@ -7652,7 +8022,7 @@ enifed('ember-metal/path_cache', ['exports', 'ember-metal/cache'], function (exp
|
|
7652
8022
|
return tailPathCache.get(path);
|
7653
8023
|
}
|
7654
8024
|
});
|
7655
|
-
enifed('ember-metal/properties', ['exports', 'ember-metal/core', 'ember-metal/features', 'ember-metal/
|
8025
|
+
enifed('ember-metal/properties', ['exports', 'ember-metal/core', 'ember-metal/features', 'ember-metal/meta', 'ember-metal/property_events'], function (exports, _emberMetalCore, _emberMetalFeatures, _emberMetalMeta, _emberMetalProperty_events) {
|
7656
8026
|
/**
|
7657
8027
|
@module ember-metal
|
7658
8028
|
*/
|
@@ -7693,7 +8063,7 @@ enifed('ember-metal/properties', ['exports', 'ember-metal/core', 'ember-metal/fe
|
|
7693
8063
|
function DEFAULT_GETTER_FUNCTION(name) {
|
7694
8064
|
return function GETTER_FUNCTION() {
|
7695
8065
|
var meta = this['__ember_meta__'];
|
7696
|
-
return meta && meta.
|
8066
|
+
return meta && meta.peekValues(name);
|
7697
8067
|
};
|
7698
8068
|
}
|
7699
8069
|
|
@@ -7747,9 +8117,9 @@ enifed('ember-metal/properties', ['exports', 'ember-metal/core', 'ember-metal/fe
|
|
7747
8117
|
var possibleDesc, existingDesc, watching, value;
|
7748
8118
|
|
7749
8119
|
if (!meta) {
|
7750
|
-
meta =
|
8120
|
+
meta = _emberMetalMeta.meta(obj);
|
7751
8121
|
}
|
7752
|
-
var watchEntry = meta.
|
8122
|
+
var watchEntry = meta.peekWatching(keyName);
|
7753
8123
|
possibleDesc = obj[keyName];
|
7754
8124
|
existingDesc = possibleDesc !== null && typeof possibleDesc === 'object' && possibleDesc.isDescriptor ? possibleDesc : undefined;
|
7755
8125
|
|
@@ -7781,7 +8151,7 @@ enifed('ember-metal/properties', ['exports', 'ember-metal/core', 'ember-metal/fe
|
|
7781
8151
|
value = data;
|
7782
8152
|
|
7783
8153
|
if (watching) {
|
7784
|
-
meta.
|
8154
|
+
meta.writableValues()[keyName] = data;
|
7785
8155
|
Object.defineProperty(obj, keyName, {
|
7786
8156
|
configurable: true,
|
7787
8157
|
enumerable: true,
|
@@ -7846,7 +8216,7 @@ enifed('ember-metal/property_events', ['exports', 'ember-metal/utils', 'ember-me
|
|
7846
8216
|
*/
|
7847
8217
|
function propertyWillChange(obj, keyName) {
|
7848
8218
|
var m = obj['__ember_meta__'];
|
7849
|
-
var watching = m && m.
|
8219
|
+
var watching = m && m.peekWatching(keyName) > 0 || keyName === 'length';
|
7850
8220
|
var proto = m && m.proto;
|
7851
8221
|
var possibleDesc = obj[keyName];
|
7852
8222
|
var desc = possibleDesc !== null && typeof possibleDesc === 'object' && possibleDesc.isDescriptor ? possibleDesc : undefined;
|
@@ -7886,7 +8256,7 @@ enifed('ember-metal/property_events', ['exports', 'ember-metal/utils', 'ember-me
|
|
7886
8256
|
*/
|
7887
8257
|
function propertyDidChange(obj, keyName) {
|
7888
8258
|
var m = obj['__ember_meta__'];
|
7889
|
-
var watching = m && m.
|
8259
|
+
var watching = m && m.peekWatching(keyName) > 0 || keyName === 'length';
|
7890
8260
|
var proto = m && m.proto;
|
7891
8261
|
var possibleDesc = obj[keyName];
|
7892
8262
|
var desc = possibleDesc !== null && typeof possibleDesc === 'object' && possibleDesc.isDescriptor ? possibleDesc : undefined;
|
@@ -7908,7 +8278,7 @@ enifed('ember-metal/property_events', ['exports', 'ember-metal/utils', 'ember-me
|
|
7908
8278
|
return;
|
7909
8279
|
}
|
7910
8280
|
|
7911
|
-
if (m && m.
|
8281
|
+
if (m && m.readableDeps(keyName)) {
|
7912
8282
|
dependentKeysDidChange(obj, keyName, m);
|
7913
8283
|
}
|
7914
8284
|
|
@@ -7924,7 +8294,7 @@ enifed('ember-metal/property_events', ['exports', 'ember-metal/utils', 'ember-me
|
|
7924
8294
|
}
|
7925
8295
|
|
7926
8296
|
var deps;
|
7927
|
-
if (meta &&
|
8297
|
+
if (meta && (deps = meta.readableDeps(depKey))) {
|
7928
8298
|
var seen = WILL_SEEN;
|
7929
8299
|
var top = !seen;
|
7930
8300
|
|
@@ -7947,7 +8317,7 @@ enifed('ember-metal/property_events', ['exports', 'ember-metal/utils', 'ember-me
|
|
7947
8317
|
}
|
7948
8318
|
|
7949
8319
|
var deps;
|
7950
|
-
if (meta &&
|
8320
|
+
if (meta && (deps = meta.readableDeps(depKey))) {
|
7951
8321
|
var seen = DID_SEEN;
|
7952
8322
|
var top = !seen;
|
7953
8323
|
|
@@ -8010,26 +8380,24 @@ enifed('ember-metal/property_events', ['exports', 'ember-metal/utils', 'ember-me
|
|
8010
8380
|
}
|
8011
8381
|
|
8012
8382
|
function chainsWillChange(obj, keyName, m) {
|
8013
|
-
|
8014
|
-
|
8383
|
+
var c = m.readableChainWatchers();
|
8384
|
+
if (c) {
|
8385
|
+
c.notify(keyName, false, propertyWillChange);
|
8015
8386
|
}
|
8016
|
-
|
8017
|
-
m.chainWatchers.notify(keyName, false, propertyWillChange);
|
8018
8387
|
}
|
8019
8388
|
|
8020
8389
|
function chainsDidChange(obj, keyName, m) {
|
8021
|
-
|
8022
|
-
|
8390
|
+
var c = m.readableChainWatchers();
|
8391
|
+
if (c) {
|
8392
|
+
c.notify(keyName, true, propertyDidChange);
|
8023
8393
|
}
|
8024
|
-
|
8025
|
-
m.chainWatchers.notify(keyName, true, propertyDidChange);
|
8026
8394
|
}
|
8027
8395
|
|
8028
8396
|
function overrideChains(obj, keyName, m) {
|
8029
|
-
|
8030
|
-
|
8397
|
+
var c = m.readableChainWatchers();
|
8398
|
+
if (c) {
|
8399
|
+
c.revalidate(keyName);
|
8031
8400
|
}
|
8032
|
-
m.chainWatchers.revalidate(keyName);
|
8033
8401
|
}
|
8034
8402
|
|
8035
8403
|
/**
|
@@ -8186,8 +8554,8 @@ enifed('ember-metal/property_get', ['exports', 'ember-metal/core', 'ember-metal/
|
|
8186
8554
|
if (desc) {
|
8187
8555
|
return desc.get(obj, keyName);
|
8188
8556
|
} else {
|
8189
|
-
if (meta && meta.
|
8190
|
-
ret = meta.
|
8557
|
+
if (meta && meta.peekWatching(keyName) > 0) {
|
8558
|
+
ret = meta.peekValues(keyName);
|
8191
8559
|
} else {
|
8192
8560
|
ret = obj[keyName];
|
8193
8561
|
}
|
@@ -8339,9 +8707,9 @@ enifed('ember-metal/property_set', ['exports', 'ember-metal/core', 'ember-metal/
|
|
8339
8707
|
// `setUnknownProperty` method exists on the object
|
8340
8708
|
if (isUnknown && 'function' === typeof obj.setUnknownProperty) {
|
8341
8709
|
obj.setUnknownProperty(keyName, value);
|
8342
|
-
} else if (meta && meta.
|
8710
|
+
} else if (meta && meta.peekWatching(keyName) > 0) {
|
8343
8711
|
if (meta.proto !== obj) {
|
8344
|
-
currentValue = meta.
|
8712
|
+
currentValue = meta.peekValues(keyName);
|
8345
8713
|
}
|
8346
8714
|
// only trigger a change if the value has changed
|
8347
8715
|
if (value !== currentValue) {
|
@@ -8350,7 +8718,7 @@ enifed('ember-metal/property_set', ['exports', 'ember-metal/core', 'ember-metal/
|
|
8350
8718
|
if (currentValue === undefined && !(keyName in obj) || !Object.prototype.propertyIsEnumerable.call(obj, keyName)) {
|
8351
8719
|
_emberMetalProperties.defineProperty(obj, keyName, null, value); // setup mandatory setter
|
8352
8720
|
} else {
|
8353
|
-
meta.
|
8721
|
+
meta.writableValues()[keyName] = value;
|
8354
8722
|
}
|
8355
8723
|
|
8356
8724
|
_emberMetalProperty_events.propertyDidChange(obj, keyName);
|
@@ -9435,7 +9803,7 @@ enifed('ember-metal/streams/proxy-stream', ['exports', 'ember-metal/merge', 'emb
|
|
9435
9803
|
|
9436
9804
|
exports.default = ProxyStream;
|
9437
9805
|
});
|
9438
|
-
enifed('ember-metal/streams/stream', ['exports', 'ember-metal/core', 'ember-metal/path_cache', 'ember-metal/observer', 'ember-metal/streams/utils', 'ember-metal/streams/subscriber', 'ember-metal/streams/dependency'], function (exports, _emberMetalCore, _emberMetalPath_cache, _emberMetalObserver, _emberMetalStreamsUtils, _emberMetalStreamsSubscriber, _emberMetalStreamsDependency) {
|
9806
|
+
enifed('ember-metal/streams/stream', ['exports', 'ember-metal/core', 'ember-metal/path_cache', 'ember-metal/observer', 'ember-metal/streams/utils', 'ember-metal/empty_object', 'ember-metal/streams/subscriber', 'ember-metal/streams/dependency'], function (exports, _emberMetalCore, _emberMetalPath_cache, _emberMetalObserver, _emberMetalStreamsUtils, _emberMetalEmpty_object, _emberMetalStreamsSubscriber, _emberMetalStreamsDependency) {
|
9439
9807
|
'use strict';
|
9440
9808
|
|
9441
9809
|
/**
|
@@ -9484,7 +9852,7 @@ enifed('ember-metal/streams/stream', ['exports', 'ember-metal/core', 'ember-meta
|
|
9484
9852
|
|
9485
9853
|
getKey: function (key) {
|
9486
9854
|
if (this.children === undefined) {
|
9487
|
-
this.children =
|
9855
|
+
this.children = new _emberMetalEmpty_object.default();
|
9488
9856
|
}
|
9489
9857
|
|
9490
9858
|
var keyStream = this.children[key];
|
@@ -9502,7 +9870,7 @@ enifed('ember-metal/streams/stream', ['exports', 'ember-metal/core', 'ember-meta
|
|
9502
9870
|
var tailPath = _emberMetalPath_cache.getTailPath(path);
|
9503
9871
|
|
9504
9872
|
if (this.children === undefined) {
|
9505
|
-
this.children =
|
9873
|
+
this.children = new _emberMetalEmpty_object.default();
|
9506
9874
|
}
|
9507
9875
|
|
9508
9876
|
var keyStream = this.children[firstKey];
|
@@ -9823,7 +10191,7 @@ enifed('ember-metal/streams/utils', ['exports', 'ember-metal/core', './stream'],
|
|
9823
10191
|
/*
|
9824
10192
|
Check whether an object is a stream or not
|
9825
10193
|
|
9826
|
-
@
|
10194
|
+
@private
|
9827
10195
|
@for Ember.stream
|
9828
10196
|
@function isStream
|
9829
10197
|
@param {Object|Stream} object object to check whether it is a stream
|
@@ -9857,7 +10225,7 @@ enifed('ember-metal/streams/utils', ['exports', 'ember-metal/core', './stream'],
|
|
9857
10225
|
A method of unsubscribing from a stream which is safe for use with a non-stream
|
9858
10226
|
object. If a non-stream object is passed, the function does nothing.
|
9859
10227
|
|
9860
|
-
@
|
10228
|
+
@private
|
9861
10229
|
@for Ember.stream
|
9862
10230
|
@function unsubscribe
|
9863
10231
|
@param {Object|Stream} object object or stream to potentially unsubscribe from
|
@@ -9875,7 +10243,7 @@ enifed('ember-metal/streams/utils', ['exports', 'ember-metal/core', './stream'],
|
|
9875
10243
|
Retrieve the value of a stream, or in the case a non-stream object is passed,
|
9876
10244
|
return the object itself.
|
9877
10245
|
|
9878
|
-
@
|
10246
|
+
@private
|
9879
10247
|
@for Ember.stream
|
9880
10248
|
@function read
|
9881
10249
|
@param {Object|Stream} object object to return the value of
|
@@ -9893,7 +10261,7 @@ enifed('ember-metal/streams/utils', ['exports', 'ember-metal/core', './stream'],
|
|
9893
10261
|
/*
|
9894
10262
|
Map an array, replacing any streams with their values.
|
9895
10263
|
|
9896
|
-
@
|
10264
|
+
@private
|
9897
10265
|
@for Ember.stream
|
9898
10266
|
@function readArray
|
9899
10267
|
@param {Array} array The array to read values from
|
@@ -9916,7 +10284,7 @@ enifed('ember-metal/streams/utils', ['exports', 'ember-metal/core', './stream'],
|
|
9916
10284
|
Map a hash, replacing any stream property values with the current value of that
|
9917
10285
|
stream.
|
9918
10286
|
|
9919
|
-
@
|
10287
|
+
@private
|
9920
10288
|
@for Ember.stream
|
9921
10289
|
@function readHash
|
9922
10290
|
@param {Object} object The hash to read keys and values from
|
@@ -9937,7 +10305,7 @@ enifed('ember-metal/streams/utils', ['exports', 'ember-metal/core', './stream'],
|
|
9937
10305
|
/*
|
9938
10306
|
Check whether an array contains any stream values
|
9939
10307
|
|
9940
|
-
@
|
10308
|
+
@private
|
9941
10309
|
@for Ember.stream
|
9942
10310
|
@function scanArray
|
9943
10311
|
@param {Array} array array given to a handlebars helper
|
@@ -9962,7 +10330,7 @@ enifed('ember-metal/streams/utils', ['exports', 'ember-metal/core', './stream'],
|
|
9962
10330
|
/*
|
9963
10331
|
Check whether a hash has any stream property values
|
9964
10332
|
|
9965
|
-
@
|
10333
|
+
@private
|
9966
10334
|
@for Ember.stream
|
9967
10335
|
@function scanHash
|
9968
10336
|
@param {Object} hash "hash" argument given to a handlebars helper
|
@@ -9986,7 +10354,7 @@ enifed('ember-metal/streams/utils', ['exports', 'ember-metal/core', './stream'],
|
|
9986
10354
|
/*
|
9987
10355
|
Join an array, with any streams replaced by their current values
|
9988
10356
|
|
9989
|
-
@
|
10357
|
+
@private
|
9990
10358
|
@for Ember.stream
|
9991
10359
|
@function concat
|
9992
10360
|
@param {Array} array An array containing zero or more stream objects and
|
@@ -10011,7 +10379,7 @@ enifed('ember-metal/streams/utils', ['exports', 'ember-metal/core', './stream'],
|
|
10011
10379
|
});
|
10012
10380
|
|
10013
10381
|
for (i = 0, l = array.length; i < l; i++) {
|
10014
|
-
|
10382
|
+
subscribe(array[i], stream.notify, stream);
|
10015
10383
|
}
|
10016
10384
|
|
10017
10385
|
// used by angle bracket components to detect an attribute was provided
|
@@ -10140,7 +10508,7 @@ enifed('ember-metal/streams/utils', ['exports', 'ember-metal/core', './stream'],
|
|
10140
10508
|
In the example, result is a stream if source is a stream, or a number of
|
10141
10509
|
source was numeric.
|
10142
10510
|
|
10143
|
-
@
|
10511
|
+
@private
|
10144
10512
|
@for Ember.stream
|
10145
10513
|
@function chain
|
10146
10514
|
@param {Object|Stream} value A stream or non-stream object
|
@@ -10175,21 +10543,11 @@ enifed('ember-metal/streams/utils', ['exports', 'ember-metal/core', './stream'],
|
|
10175
10543
|
enifed("ember-metal/symbol", ["exports"], function (exports) {
|
10176
10544
|
"use strict";
|
10177
10545
|
});
|
10178
|
-
enifed('ember-metal/utils', ['exports'
|
10546
|
+
enifed('ember-metal/utils', ['exports'], function (exports) {
|
10179
10547
|
// Remove "use strict"; from transpiled module until
|
10180
10548
|
// https://bugs.webkit.org/show_bug.cgi?id=138038 is fixed
|
10181
10549
|
//
|
10182
10550
|
|
10183
|
-
exports.uuid = uuid;
|
10184
|
-
exports.symbol = symbol;
|
10185
|
-
exports.generateGuid = generateGuid;
|
10186
|
-
exports.guidFor = guidFor;
|
10187
|
-
exports.wrap = wrap;
|
10188
|
-
exports.tryInvoke = tryInvoke;
|
10189
|
-
exports.makeArray = makeArray;
|
10190
|
-
exports.inspect = inspect;
|
10191
|
-
exports.apply = apply;
|
10192
|
-
exports.applyStr = applyStr;
|
10193
10551
|
'REMOVE_USE_STRICT: true';
|
10194
10552
|
|
10195
10553
|
/**
|
@@ -10203,6 +10561,16 @@ enifed('ember-metal/utils', ['exports', 'ember-metal/features'], function (expor
|
|
10203
10561
|
@private
|
10204
10562
|
@return {Number} the uuid
|
10205
10563
|
*/
|
10564
|
+
exports.uuid = uuid;
|
10565
|
+
exports.symbol = symbol;
|
10566
|
+
exports.generateGuid = generateGuid;
|
10567
|
+
exports.guidFor = guidFor;
|
10568
|
+
exports.wrap = wrap;
|
10569
|
+
exports.tryInvoke = tryInvoke;
|
10570
|
+
exports.makeArray = makeArray;
|
10571
|
+
exports.inspect = inspect;
|
10572
|
+
exports.apply = apply;
|
10573
|
+
exports.applyStr = applyStr;
|
10206
10574
|
var _uuid = 0;
|
10207
10575
|
|
10208
10576
|
/**
|
@@ -10314,13 +10682,6 @@ enifed('ember-metal/utils', ['exports', 'ember-metal/features'], function (expor
|
|
10314
10682
|
};
|
10315
10683
|
|
10316
10684
|
exports.GUID_DESC = GUID_DESC;
|
10317
|
-
var undefinedDescriptor = {
|
10318
|
-
configurable: true,
|
10319
|
-
writable: true,
|
10320
|
-
enumerable: false,
|
10321
|
-
value: undefined
|
10322
|
-
};
|
10323
|
-
|
10324
10685
|
var nullDescriptor = {
|
10325
10686
|
configurable: true,
|
10326
10687
|
writable: true,
|
@@ -10328,31 +10689,12 @@ enifed('ember-metal/utils', ['exports', 'ember-metal/features'], function (expor
|
|
10328
10689
|
value: null
|
10329
10690
|
};
|
10330
10691
|
|
10331
|
-
var META_DESC = {
|
10332
|
-
writable: true,
|
10333
|
-
configurable: true,
|
10334
|
-
enumerable: false,
|
10335
|
-
value: null
|
10336
|
-
};
|
10337
|
-
|
10338
|
-
var EMBER_META_PROPERTY = {
|
10339
|
-
name: '__ember_meta__',
|
10340
|
-
descriptor: META_DESC
|
10341
|
-
};
|
10342
|
-
|
10343
|
-
exports.EMBER_META_PROPERTY = EMBER_META_PROPERTY;
|
10344
10692
|
var GUID_KEY_PROPERTY = {
|
10345
10693
|
name: GUID_KEY,
|
10346
10694
|
descriptor: nullDescriptor
|
10347
10695
|
};
|
10348
10696
|
|
10349
10697
|
exports.GUID_KEY_PROPERTY = GUID_KEY_PROPERTY;
|
10350
|
-
var NEXT_SUPER_PROPERTY = {
|
10351
|
-
name: '__nextSuper',
|
10352
|
-
descriptor: undefinedDescriptor
|
10353
|
-
};
|
10354
|
-
|
10355
|
-
exports.NEXT_SUPER_PROPERTY = NEXT_SUPER_PROPERTY;
|
10356
10698
|
/**
|
10357
10699
|
Generates a new guid, optionally saving the guid to the object that you
|
10358
10700
|
pass in. You will rarely need to use this method. Instead you should
|
@@ -10435,121 +10777,48 @@ enifed('ember-metal/utils', ['exports', 'ember-metal/features'], function (expor
|
|
10435
10777
|
|
10436
10778
|
return ret;
|
10437
10779
|
|
10438
|
-
case 'string':
|
10439
|
-
ret = stringCache[obj];
|
10440
|
-
|
10441
|
-
if (!ret) {
|
10442
|
-
ret = stringCache[obj] = 'st' + uuid();
|
10443
|
-
}
|
10444
|
-
|
10445
|
-
return ret;
|
10446
|
-
|
10447
|
-
case 'boolean':
|
10448
|
-
return obj ? '(true)' : '(false)';
|
10449
|
-
|
10450
|
-
default:
|
10451
|
-
if (obj === Object) {
|
10452
|
-
return '(Object)';
|
10453
|
-
}
|
10454
|
-
|
10455
|
-
if (obj === Array) {
|
10456
|
-
return '(Array)';
|
10457
|
-
}
|
10458
|
-
|
10459
|
-
ret = GUID_PREFIX + uuid();
|
10460
|
-
|
10461
|
-
if (obj[GUID_KEY] === null) {
|
10462
|
-
obj[GUID_KEY] = ret;
|
10463
|
-
} else {
|
10464
|
-
GUID_DESC.value = ret;
|
10465
|
-
|
10466
|
-
if (obj.__defineNonEnumerable) {
|
10467
|
-
obj.__defineNonEnumerable(GUID_KEY_PROPERTY);
|
10468
|
-
} else {
|
10469
|
-
Object.defineProperty(obj, GUID_KEY, GUID_DESC);
|
10470
|
-
}
|
10471
|
-
}
|
10472
|
-
return ret;
|
10473
|
-
}
|
10474
|
-
}
|
10475
|
-
|
10476
|
-
// ..........................................................
|
10477
|
-
// META
|
10478
|
-
//
|
10479
|
-
function Meta(obj) {
|
10480
|
-
this.watching = {};
|
10481
|
-
this.cache = undefined;
|
10482
|
-
this.source = obj;
|
10483
|
-
this.deps = undefined;
|
10484
|
-
this.listeners = undefined;
|
10485
|
-
this.mixins = undefined;
|
10486
|
-
this.bindings = undefined;
|
10487
|
-
this.chains = undefined;
|
10488
|
-
this.chainWatchers = undefined;
|
10489
|
-
this.values = undefined;
|
10490
|
-
this.proto = undefined;
|
10491
|
-
}
|
10492
|
-
|
10493
|
-
// Placeholder for non-writable metas.
|
10494
|
-
var EMPTY_META = new Meta(null);
|
10495
|
-
|
10496
|
-
EMPTY_META.values = {};
|
10497
|
-
|
10498
|
-
/**
|
10499
|
-
Retrieves the meta hash for an object. If `writable` is true ensures the
|
10500
|
-
hash is writable for this object as well.
|
10501
|
-
|
10502
|
-
The meta object contains information about computed property descriptors as
|
10503
|
-
well as any watched properties and other information. You generally will
|
10504
|
-
not access this information directly but instead work with higher level
|
10505
|
-
methods that manipulate this hash indirectly.
|
10506
|
-
|
10507
|
-
@method meta
|
10508
|
-
@for Ember
|
10509
|
-
@private
|
10510
|
-
|
10511
|
-
@param {Object} obj The object to retrieve meta for
|
10512
|
-
@param {Boolean} [writable=true] Pass `false` if you do not intend to modify
|
10513
|
-
the meta hash, allowing the method to avoid making an unnecessary copy.
|
10514
|
-
@return {Object} the meta hash for an object
|
10515
|
-
*/
|
10516
|
-
function meta(obj, writable) {
|
10517
|
-
var ret = obj.__ember_meta__;
|
10518
|
-
if (writable === false) {
|
10519
|
-
return ret || EMPTY_META;
|
10520
|
-
}
|
10780
|
+
case 'string':
|
10781
|
+
ret = stringCache[obj];
|
10521
10782
|
|
10522
|
-
|
10523
|
-
|
10524
|
-
|
10525
|
-
} else {
|
10526
|
-
Object.defineProperty(obj, '__ember_meta__', META_DESC);
|
10527
|
-
}
|
10783
|
+
if (!ret) {
|
10784
|
+
ret = stringCache[obj] = 'st' + uuid();
|
10785
|
+
}
|
10528
10786
|
|
10529
|
-
|
10787
|
+
return ret;
|
10530
10788
|
|
10531
|
-
|
10789
|
+
case 'boolean':
|
10790
|
+
return obj ? '(true)' : '(false)';
|
10532
10791
|
|
10533
|
-
|
10534
|
-
|
10535
|
-
|
10536
|
-
|
10537
|
-
|
10538
|
-
|
10539
|
-
|
10792
|
+
default:
|
10793
|
+
if (obj === Object) {
|
10794
|
+
return '(Object)';
|
10795
|
+
}
|
10796
|
+
|
10797
|
+
if (obj === Array) {
|
10798
|
+
return '(Array)';
|
10799
|
+
}
|
10540
10800
|
|
10541
|
-
|
10542
|
-
ret.watching = Object.create(ret.watching);
|
10543
|
-
ret.cache = undefined;
|
10544
|
-
ret.source = obj;
|
10801
|
+
ret = GUID_PREFIX + uuid();
|
10545
10802
|
|
10546
|
-
|
10803
|
+
if (obj[GUID_KEY] === null) {
|
10804
|
+
obj[GUID_KEY] = ret;
|
10805
|
+
} else {
|
10806
|
+
GUID_DESC.value = ret;
|
10547
10807
|
|
10548
|
-
|
10808
|
+
if (obj.__defineNonEnumerable) {
|
10809
|
+
obj.__defineNonEnumerable(GUID_KEY_PROPERTY);
|
10810
|
+
} else {
|
10811
|
+
Object.defineProperty(obj, GUID_KEY, GUID_DESC);
|
10812
|
+
}
|
10813
|
+
}
|
10814
|
+
return ret;
|
10549
10815
|
}
|
10550
|
-
return ret;
|
10551
10816
|
}
|
10552
10817
|
|
10818
|
+
var sourceAvailable = (function () {
|
10819
|
+
return this;
|
10820
|
+
}).toString().indexOf('return this;') > -1;
|
10821
|
+
|
10553
10822
|
/**
|
10554
10823
|
Wraps the passed function so that `this._super` will point to the superFunc
|
10555
10824
|
when the function is invoked. This is the primitive we use to implement
|
@@ -10563,34 +10832,52 @@ enifed('ember-metal/utils', ['exports', 'ember-metal/features'], function (expor
|
|
10563
10832
|
@return {Function} wrapped function.
|
10564
10833
|
*/
|
10565
10834
|
|
10566
|
-
function wrap(func,
|
10567
|
-
|
10568
|
-
|
10569
|
-
|
10570
|
-
|
10835
|
+
function wrap(func, _superFunc) {
|
10836
|
+
var superFunc = _superFunc;
|
10837
|
+
var hasSuper;
|
10838
|
+
if (sourceAvailable) {
|
10839
|
+
hasSuper = func.__hasSuper;
|
10571
10840
|
|
10572
|
-
if (
|
10573
|
-
|
10841
|
+
if (hasSuper === undefined) {
|
10842
|
+
hasSuper = func.toString().indexOf('_super') > -1;
|
10843
|
+
func.__hasSuper = hasSuper;
|
10574
10844
|
}
|
10575
10845
|
|
10576
|
-
if (
|
10577
|
-
|
10578
|
-
} else if (length === 1) {
|
10579
|
-
ret = func.call(this, arguments[0]);
|
10580
|
-
} else if (length === 2) {
|
10581
|
-
ret = func.call(this, arguments[0], arguments[1]);
|
10582
|
-
} else {
|
10583
|
-
var args = new Array(length);
|
10584
|
-
for (var i = 0; i < length; i++) {
|
10585
|
-
args[i] = arguments[i];
|
10586
|
-
}
|
10587
|
-
ret = apply(this, func, args);
|
10846
|
+
if (!hasSuper) {
|
10847
|
+
return func;
|
10588
10848
|
}
|
10849
|
+
}
|
10589
10850
|
|
10590
|
-
|
10591
|
-
|
10592
|
-
}
|
10851
|
+
if (superFunc.wrappedFunction === undefined) {
|
10852
|
+
// terminate _super to prevent infinite recursion
|
10853
|
+
superFunc = wrap(superFunc, function () {});
|
10854
|
+
}
|
10855
|
+
|
10856
|
+
return _wrap(func, superFunc);
|
10857
|
+
}
|
10593
10858
|
|
10859
|
+
function _wrap(func, superFunc) {
|
10860
|
+
function superWrapper() {
|
10861
|
+
var ret;
|
10862
|
+
var orig = this._super;
|
10863
|
+
this._super = superFunc;
|
10864
|
+
switch (arguments.length) {
|
10865
|
+
case 0:
|
10866
|
+
ret = func.call(this);break;
|
10867
|
+
case 1:
|
10868
|
+
ret = func.call(this, arguments[0]);break;
|
10869
|
+
case 2:
|
10870
|
+
ret = func.call(this, arguments[0], arguments[1]);break;
|
10871
|
+
case 3:
|
10872
|
+
ret = func.call(this, arguments[0], arguments[1], arguments[2]);break;
|
10873
|
+
case 4:
|
10874
|
+
ret = func.call(this, arguments[0], arguments[1], arguments[2], arguments[3]);break;
|
10875
|
+
case 5:
|
10876
|
+
ret = func.call(this, arguments[0], arguments[1], arguments[2], arguments[3], arguments[4]);break;
|
10877
|
+
default:
|
10878
|
+
ret = func.apply(this, arguments);break;
|
10879
|
+
}
|
10880
|
+
this._super = orig;
|
10594
10881
|
return ret;
|
10595
10882
|
}
|
10596
10883
|
|
@@ -10805,13 +11092,10 @@ enifed('ember-metal/utils', ['exports', 'ember-metal/features'], function (expor
|
|
10805
11092
|
}
|
10806
11093
|
|
10807
11094
|
exports.GUID_KEY = GUID_KEY;
|
10808
|
-
exports.META_DESC = META_DESC;
|
10809
|
-
exports.EMPTY_META = EMPTY_META;
|
10810
|
-
exports.meta = meta;
|
10811
11095
|
exports.makeArray = makeArray;
|
10812
11096
|
exports.canInvoke = canInvoke;
|
10813
11097
|
});
|
10814
|
-
enifed('ember-metal/watch_key', ['exports', 'ember-metal/features', 'ember-metal/
|
11098
|
+
enifed('ember-metal/watch_key', ['exports', 'ember-metal/features', 'ember-metal/meta', 'ember-metal/properties'], function (exports, _emberMetalFeatures, _emberMetalMeta, _emberMetalProperties) {
|
10815
11099
|
'use strict';
|
10816
11100
|
|
10817
11101
|
exports.watchKey = watchKey;
|
@@ -10823,8 +11107,8 @@ enifed('ember-metal/watch_key', ['exports', 'ember-metal/features', 'ember-metal
|
|
10823
11107
|
return;
|
10824
11108
|
}
|
10825
11109
|
|
10826
|
-
var m = meta ||
|
10827
|
-
var watching = m.
|
11110
|
+
var m = meta || _emberMetalMeta.meta(obj);
|
11111
|
+
var watching = m.writableWatching();
|
10828
11112
|
|
10829
11113
|
// activate watching first time
|
10830
11114
|
if (!watching[keyName]) {
|
@@ -10860,7 +11144,7 @@ enifed('ember-metal/watch_key', ['exports', 'ember-metal/features', 'ember-metal
|
|
10860
11144
|
|
10861
11145
|
// this x in Y deopts, so keeping it in this function is better;
|
10862
11146
|
if (configurable && isWritable && hasValue && keyName in obj) {
|
10863
|
-
m.
|
11147
|
+
m.writableValues()[keyName] = obj[keyName];
|
10864
11148
|
Object.defineProperty(obj, keyName, {
|
10865
11149
|
configurable: true,
|
10866
11150
|
enumerable: Object.prototype.propertyIsEnumerable.call(obj, keyName),
|
@@ -10875,8 +11159,8 @@ enifed('ember-metal/watch_key', ['exports', 'ember-metal/features', 'ember-metal
|
|
10875
11159
|
; // jshint ignore:line
|
10876
11160
|
|
10877
11161
|
function unwatchKey(obj, keyName, meta) {
|
10878
|
-
var m = meta ||
|
10879
|
-
var watching = m.
|
11162
|
+
var m = meta || _emberMetalMeta.meta(obj);
|
11163
|
+
var watching = m.writableWatching();
|
10880
11164
|
|
10881
11165
|
if (watching[keyName] === 1) {
|
10882
11166
|
watching[keyName] = 0;
|
@@ -10903,7 +11187,7 @@ enifed('ember-metal/watch_key', ['exports', 'ember-metal/features', 'ember-metal
|
|
10903
11187
|
enumerable: true,
|
10904
11188
|
value: val
|
10905
11189
|
});
|
10906
|
-
delete m.
|
11190
|
+
delete m.writableValues()[keyName];
|
10907
11191
|
},
|
10908
11192
|
get: _emberMetalProperties.DEFAULT_GETTER_FUNCTION(keyName)
|
10909
11193
|
});
|
@@ -10913,7 +11197,7 @@ enifed('ember-metal/watch_key', ['exports', 'ember-metal/features', 'ember-metal
|
|
10913
11197
|
}
|
10914
11198
|
}
|
10915
11199
|
});
|
10916
|
-
enifed('ember-metal/watch_path', ['exports', 'ember-metal/
|
11200
|
+
enifed('ember-metal/watch_path', ['exports', 'ember-metal/meta', 'ember-metal/chains'], function (exports, _emberMetalMeta, _emberMetalChains) {
|
10917
11201
|
'use strict';
|
10918
11202
|
|
10919
11203
|
exports.watchPath = watchPath;
|
@@ -10923,14 +11207,11 @@ enifed('ember-metal/watch_path', ['exports', 'ember-metal/utils', 'ember-metal/c
|
|
10923
11207
|
// chains inherited from the proto they will be cloned and reconfigured for
|
10924
11208
|
// the current object.
|
10925
11209
|
function chainsFor(obj, meta) {
|
10926
|
-
|
10927
|
-
|
10928
|
-
|
10929
|
-
|
10930
|
-
|
10931
|
-
ret = m.chains = ret.copy(obj);
|
10932
|
-
}
|
10933
|
-
return ret;
|
11210
|
+
return (meta || _emberMetalMeta.meta(obj)).writableChains(makeChainNode);
|
11211
|
+
}
|
11212
|
+
|
11213
|
+
function makeChainNode(obj) {
|
11214
|
+
return new _emberMetalChains.ChainNode(null, null, obj);
|
10934
11215
|
}
|
10935
11216
|
|
10936
11217
|
function watchPath(obj, keyPath, meta) {
|
@@ -10939,8 +11220,8 @@ enifed('ember-metal/watch_path', ['exports', 'ember-metal/utils', 'ember-metal/c
|
|
10939
11220
|
return;
|
10940
11221
|
}
|
10941
11222
|
|
10942
|
-
var m = meta ||
|
10943
|
-
var watching = m.
|
11223
|
+
var m = meta || _emberMetalMeta.meta(obj);
|
11224
|
+
var watching = m.writableWatching();
|
10944
11225
|
|
10945
11226
|
if (!watching[keyPath]) {
|
10946
11227
|
// activate watching first time
|
@@ -10952,8 +11233,8 @@ enifed('ember-metal/watch_path', ['exports', 'ember-metal/utils', 'ember-metal/c
|
|
10952
11233
|
}
|
10953
11234
|
|
10954
11235
|
function unwatchPath(obj, keyPath, meta) {
|
10955
|
-
var m = meta ||
|
10956
|
-
var watching = m.
|
11236
|
+
var m = meta || _emberMetalMeta.meta(obj);
|
11237
|
+
var watching = m.writableWatching();
|
10957
11238
|
|
10958
11239
|
if (watching[keyPath] === 1) {
|
10959
11240
|
watching[keyPath] = 0;
|
@@ -11004,7 +11285,7 @@ enifed('ember-metal/watching', ['exports', 'ember-metal/chains', 'ember-metal/wa
|
|
11004
11285
|
|
11005
11286
|
function isWatching(obj, key) {
|
11006
11287
|
var meta = obj['__ember_meta__'];
|
11007
|
-
return (meta && meta.
|
11288
|
+
return (meta && meta.peekWatching(key)) > 0;
|
11008
11289
|
}
|
11009
11290
|
|
11010
11291
|
watch.flushPending = _emberMetalChains.flushPendingChains;
|
@@ -11042,7 +11323,7 @@ enifed('ember-metal/watching', ['exports', 'ember-metal/chains', 'ember-metal/wa
|
|
11042
11323
|
if (meta) {
|
11043
11324
|
obj['__ember_meta__'] = null;
|
11044
11325
|
// remove chainWatchers to remove circular references that would prevent GC
|
11045
|
-
node = meta.
|
11326
|
+
node = meta.readableChains();
|
11046
11327
|
if (node) {
|
11047
11328
|
NODE_STACK.push(node);
|
11048
11329
|
// process tree
|
@@ -11069,7 +11350,7 @@ enifed('ember-metal/watching', ['exports', 'ember-metal/chains', 'ember-metal/wa
|
|
11069
11350
|
}
|
11070
11351
|
}
|
11071
11352
|
});
|
11072
|
-
enifed('ember-template-compiler', ['exports', 'ember-metal', 'ember-template-compiler/system/precompile', 'ember-template-compiler/system/compile', 'ember-template-compiler/system/template', 'ember-template-compiler/plugins', 'ember-template-compiler/plugins/transform-old-binding-syntax', 'ember-template-compiler/plugins/transform-old-class-binding-syntax', 'ember-template-compiler/plugins/transform-item-class', 'ember-template-compiler/plugins/transform-component-attrs-into-mut', 'ember-template-compiler/plugins/transform-component-curly-to-readonly', 'ember-template-compiler/plugins/transform-angle-bracket-components', 'ember-template-compiler/plugins/transform-input-on-to-onEvent', 'ember-template-compiler/plugins/transform-each-into-collection', 'ember-template-compiler/plugins/assert-no-view-and-controller-paths', 'ember-template-compiler/plugins/assert-no-view-helper', 'ember-template-compiler/compat'], function (exports, _emberMetal, _emberTemplateCompilerSystemPrecompile, _emberTemplateCompilerSystemCompile, _emberTemplateCompilerSystemTemplate, _emberTemplateCompilerPlugins, _emberTemplateCompilerPluginsTransformOldBindingSyntax, _emberTemplateCompilerPluginsTransformOldClassBindingSyntax, _emberTemplateCompilerPluginsTransformItemClass, _emberTemplateCompilerPluginsTransformComponentAttrsIntoMut, _emberTemplateCompilerPluginsTransformComponentCurlyToReadonly, _emberTemplateCompilerPluginsTransformAngleBracketComponents, _emberTemplateCompilerPluginsTransformInputOnToOnEvent, _emberTemplateCompilerPluginsTransformEachIntoCollection, _emberTemplateCompilerPluginsAssertNoViewAndControllerPaths, _emberTemplateCompilerPluginsAssertNoViewHelper, _emberTemplateCompilerCompat) {
|
11353
|
+
enifed('ember-template-compiler', ['exports', 'ember-metal', 'ember-template-compiler/system/precompile', 'ember-template-compiler/system/compile', 'ember-template-compiler/system/template', 'ember-template-compiler/plugins', 'ember-template-compiler/plugins/transform-old-binding-syntax', 'ember-template-compiler/plugins/transform-old-class-binding-syntax', 'ember-template-compiler/plugins/transform-item-class', 'ember-template-compiler/plugins/transform-component-attrs-into-mut', 'ember-template-compiler/plugins/transform-component-curly-to-readonly', 'ember-template-compiler/plugins/transform-angle-bracket-components', 'ember-template-compiler/plugins/transform-input-on-to-onEvent', 'ember-template-compiler/plugins/transform-top-level-components', 'ember-template-compiler/plugins/transform-each-into-collection', 'ember-template-compiler/plugins/assert-no-view-and-controller-paths', 'ember-template-compiler/plugins/assert-no-view-helper', 'ember-template-compiler/compat'], function (exports, _emberMetal, _emberTemplateCompilerSystemPrecompile, _emberTemplateCompilerSystemCompile, _emberTemplateCompilerSystemTemplate, _emberTemplateCompilerPlugins, _emberTemplateCompilerPluginsTransformOldBindingSyntax, _emberTemplateCompilerPluginsTransformOldClassBindingSyntax, _emberTemplateCompilerPluginsTransformItemClass, _emberTemplateCompilerPluginsTransformComponentAttrsIntoMut, _emberTemplateCompilerPluginsTransformComponentCurlyToReadonly, _emberTemplateCompilerPluginsTransformAngleBracketComponents, _emberTemplateCompilerPluginsTransformInputOnToOnEvent, _emberTemplateCompilerPluginsTransformTopLevelComponents, _emberTemplateCompilerPluginsTransformEachIntoCollection, _emberTemplateCompilerPluginsAssertNoViewAndControllerPaths, _emberTemplateCompilerPluginsAssertNoViewHelper, _emberTemplateCompilerCompat) {
|
11073
11354
|
'use strict';
|
11074
11355
|
|
11075
11356
|
_emberTemplateCompilerPlugins.registerPlugin('ast', _emberTemplateCompilerPluginsTransformOldBindingSyntax.default);
|
@@ -11079,6 +11360,7 @@ enifed('ember-template-compiler', ['exports', 'ember-metal', 'ember-template-com
|
|
11079
11360
|
_emberTemplateCompilerPlugins.registerPlugin('ast', _emberTemplateCompilerPluginsTransformComponentCurlyToReadonly.default);
|
11080
11361
|
_emberTemplateCompilerPlugins.registerPlugin('ast', _emberTemplateCompilerPluginsTransformAngleBracketComponents.default);
|
11081
11362
|
_emberTemplateCompilerPlugins.registerPlugin('ast', _emberTemplateCompilerPluginsTransformInputOnToOnEvent.default);
|
11363
|
+
_emberTemplateCompilerPlugins.registerPlugin('ast', _emberTemplateCompilerPluginsTransformTopLevelComponents.default);
|
11082
11364
|
|
11083
11365
|
if (_emberMetal.default.ENV._ENABLE_LEGACY_VIEW_SUPPORT) {
|
11084
11366
|
_emberTemplateCompilerPlugins.registerPlugin('ast', _emberTemplateCompilerPluginsTransformEachIntoCollection.default);
|
@@ -11463,7 +11745,6 @@ enifed('ember-template-compiler/plugins/transform-each-in-to-hash', ['exports'],
|
|
11463
11745
|
|
11464
11746
|
walker.visit(ast, function (node) {
|
11465
11747
|
if (pluginContext.validate(node)) {
|
11466
|
-
|
11467
11748
|
if (node.program && node.program.blockParams.length) {
|
11468
11749
|
throw new Error('You cannot use keyword (`{{each foo in bar}}`) and block params (`{{each bar as |foo|}}`) at the same time.');
|
11469
11750
|
}
|
@@ -11512,7 +11793,7 @@ enifed('ember-template-compiler/plugins/transform-each-into-collection', ['expor
|
|
11512
11793
|
|
11513
11794
|
var moduleInfo = _emberTemplateCompilerSystemCalculateLocationDisplay.default(moduleName, legacyHashKey.loc);
|
11514
11795
|
|
11515
|
-
_emberMetalCore.default.deprecate('Using \'' + legacyHashKey.key + '\' with \'{{each}}\' ' + moduleInfo + 'is deprecated. Please refactor to a component.');
|
11796
|
+
_emberMetalCore.default.deprecate('Using \'' + legacyHashKey.key + '\' with \'{{each}}\' ' + moduleInfo + 'is deprecated. Please refactor to a component.', false, { id: 'ember-template-compiler.transform-each-into-collection', until: '2.0.0' });
|
11516
11797
|
|
11517
11798
|
var list = node.params.shift();
|
11518
11799
|
node.path = b.path('collection');
|
@@ -11533,7 +11814,6 @@ enifed('ember-template-compiler/plugins/transform-each-into-collection', ['expor
|
|
11533
11814
|
|
11534
11815
|
function validate(node) {
|
11535
11816
|
if ((node.type === 'BlockStatement' || node.type === 'MustacheStatement') && node.path.original === 'each') {
|
11536
|
-
|
11537
11817
|
return any(node.hash.pairs, function (pair) {
|
11538
11818
|
var key = pair.key;
|
11539
11819
|
return key === 'itemController' || key === 'itemView' || key === 'itemViewClass' || key === 'tagName' || key === 'emptyView' || key === 'emptyViewClass';
|
@@ -11605,7 +11885,7 @@ enifed('ember-template-compiler/plugins/transform-input-on-to-onEvent', ['export
|
|
11605
11885
|
var moduleInfo = _emberTemplateCompilerSystemCalculateLocationDisplay.default(moduleName, node.loc);
|
11606
11886
|
|
11607
11887
|
if (normalizedOn && normalizedOn.value.type !== 'StringLiteral') {
|
11608
|
-
_emberMetalCore.default.deprecate('Using a dynamic value for \'#{normalizedOn.key}=\' with the \'{{input}}\' helper ' + moduleInfo + 'is deprecated.');
|
11888
|
+
_emberMetalCore.default.deprecate('Using a dynamic value for \'#{normalizedOn.key}=\' with the \'{{input}}\' helper ' + moduleInfo + 'is deprecated.', false, { id: 'ember-template-compiler.transform-input-on-to-onEvent.dynamic-value', until: '3.0.0' });
|
11609
11889
|
|
11610
11890
|
normalizedOn.key = 'onEvent';
|
11611
11891
|
return; // exit early, as we cannot transform further
|
@@ -11615,7 +11895,7 @@ enifed('ember-template-compiler/plugins/transform-input-on-to-onEvent', ['export
|
|
11615
11895
|
removeFromHash(node.hash, action);
|
11616
11896
|
|
11617
11897
|
if (!action) {
|
11618
|
-
_emberMetalCore.default.deprecate('Using \'{{input ' + normalizedOn.key + '="' + normalizedOn.value.value + '" ...}}\' without specifying an action ' + moduleInfo + 'will do nothing.');
|
11898
|
+
_emberMetalCore.default.deprecate('Using \'{{input ' + normalizedOn.key + '="' + normalizedOn.value.value + '" ...}}\' without specifying an action ' + moduleInfo + 'will do nothing.', false, { id: 'ember-template-compiler.transform-input-on-to-onEvent.no-action', until: '3.0.0' });
|
11619
11899
|
|
11620
11900
|
return; // exit early, if no action was available there is nothing to do
|
11621
11901
|
}
|
@@ -11629,7 +11909,7 @@ enifed('ember-template-compiler/plugins/transform-input-on-to-onEvent', ['export
|
|
11629
11909
|
|
11630
11910
|
var expected = (normalizedOn ? normalizedOn.value.value : 'enter') + '="' + action.value.original + '"';
|
11631
11911
|
|
11632
|
-
_emberMetalCore.default.deprecate('Using \'{{input ' + specifiedOn + 'action="' + action.value.original + '"}}\' ' + moduleInfo + 'is deprecated. Please use \'{{input ' + expected + '}}\' instead.');
|
11912
|
+
_emberMetalCore.default.deprecate('Using \'{{input ' + specifiedOn + 'action="' + action.value.original + '"}}\' ' + moduleInfo + 'is deprecated. Please use \'{{input ' + expected + '}}\' instead.', false, { id: 'ember-template-compiler.transform-input-on-to-onEvent.normalized-on', until: '3.0.0' });
|
11633
11913
|
if (!normalizedOn) {
|
11634
11914
|
normalizedOn = b.pair('onEvent', b.string('enter'));
|
11635
11915
|
}
|
@@ -11759,7 +12039,7 @@ enifed('ember-template-compiler/plugins/transform-old-binding-syntax', ['exports
|
|
11759
12039
|
if (key.substr(-7) === 'Binding') {
|
11760
12040
|
var newKey = key.slice(0, -7);
|
11761
12041
|
|
11762
|
-
_emberMetalCore.default.deprecate('You\'re using legacy binding syntax: ' + key + '=' + exprToString(value) + ' ' + sourceInformation + '. Please replace with ' + newKey + '=' + value.original);
|
12042
|
+
_emberMetalCore.default.deprecate('You\'re using legacy binding syntax: ' + key + '=' + exprToString(value) + ' ' + sourceInformation + '. Please replace with ' + newKey + '=' + value.original, false, { id: 'ember-template-compiler.transform-old-binding-syntax', until: '3.0.0' });
|
11763
12043
|
|
11764
12044
|
pair.key = newKey;
|
11765
12045
|
if (value.type === 'StringLiteral') {
|
@@ -11931,6 +12211,62 @@ enifed('ember-template-compiler/plugins/transform-old-class-binding-syntax', ['e
|
|
11931
12211
|
return segments;
|
11932
12212
|
}
|
11933
12213
|
});
|
12214
|
+
enifed('ember-template-compiler/plugins/transform-top-level-components', ['exports'], function (exports) {
|
12215
|
+
'use strict';
|
12216
|
+
|
12217
|
+
function TransformTopLevelComponents() {
|
12218
|
+
// set later within HTMLBars to the syntax package
|
12219
|
+
this.syntax = null;
|
12220
|
+
}
|
12221
|
+
|
12222
|
+
/**
|
12223
|
+
@private
|
12224
|
+
@method transform
|
12225
|
+
@param {AST} The AST to be transformed.
|
12226
|
+
*/
|
12227
|
+
TransformTopLevelComponents.prototype.transform = function TransformTopLevelComponents_transform(ast) {
|
12228
|
+
hasSingleComponentNode(ast.body, function (component) {
|
12229
|
+
component.tag = '@' + component.tag;
|
12230
|
+
});
|
12231
|
+
|
12232
|
+
return ast;
|
12233
|
+
};
|
12234
|
+
|
12235
|
+
function hasSingleComponentNode(body, callback) {
|
12236
|
+
var lastComponentNode = undefined;
|
12237
|
+
var lastIndex = undefined;
|
12238
|
+
var nodeCount = 0;
|
12239
|
+
|
12240
|
+
for (var i = 0, l = body.length; i < l; i++) {
|
12241
|
+
var curr = body[i];
|
12242
|
+
|
12243
|
+
// text node with whitespace only
|
12244
|
+
if (curr.type === 'TextNode' && /^[\s]*$/.test(curr.chars)) {
|
12245
|
+
continue;
|
12246
|
+
}
|
12247
|
+
|
12248
|
+
// has multiple root elements if we've been here before
|
12249
|
+
if (nodeCount++ > 0) {
|
12250
|
+
return false;
|
12251
|
+
}
|
12252
|
+
|
12253
|
+
if (curr.type === 'ComponentNode' || curr.type === 'ElementNode') {
|
12254
|
+
lastComponentNode = curr;
|
12255
|
+
lastIndex = i;
|
12256
|
+
}
|
12257
|
+
}
|
12258
|
+
|
12259
|
+
if (!lastComponentNode) {
|
12260
|
+
return;
|
12261
|
+
}
|
12262
|
+
|
12263
|
+
if (lastComponentNode.type === 'ComponentNode') {
|
12264
|
+
callback(lastComponentNode);
|
12265
|
+
}
|
12266
|
+
}
|
12267
|
+
|
12268
|
+
exports.default = TransformTopLevelComponents;
|
12269
|
+
});
|
11934
12270
|
enifed('ember-template-compiler/system/calculate-location-display', ['exports'], function (exports) {
|
11935
12271
|
'use strict';
|
11936
12272
|
|
@@ -11999,7 +12335,7 @@ enifed('ember-template-compiler/system/compile', ['exports', 'ember-metal/core',
|
|
11999
12335
|
return _emberTemplateCompilerSystemTemplate.default(templateSpec);
|
12000
12336
|
};
|
12001
12337
|
});
|
12002
|
-
enifed('ember-template-compiler/system/compile_options', ['exports', 'ember-metal/features', 'ember-metal/
|
12338
|
+
enifed('ember-template-compiler/system/compile_options', ['exports', 'ember-metal/features', 'ember-metal/assign', 'ember-template-compiler/plugins'], function (exports, _emberMetalFeatures, _emberMetalAssign, _emberTemplateCompilerPlugins) {
|
12003
12339
|
/**
|
12004
12340
|
@module ember
|
12005
12341
|
@submodule ember-template-compiler
|
@@ -12022,7 +12358,7 @@ enifed('ember-template-compiler/system/compile_options', ['exports', 'ember-meta
|
|
12022
12358
|
if (_options === true) {
|
12023
12359
|
options = {};
|
12024
12360
|
} else {
|
12025
|
-
options =
|
12361
|
+
options = _emberMetalAssign.default({}, _options);
|
12026
12362
|
}
|
12027
12363
|
|
12028
12364
|
options.disableComponentGeneration = disableComponentGeneration;
|
@@ -12038,7 +12374,8 @@ enifed('ember-template-compiler/system/compile_options', ['exports', 'ember-meta
|
|
12038
12374
|
|
12039
12375
|
options.buildMeta = function buildMeta(program) {
|
12040
12376
|
return {
|
12041
|
-
|
12377
|
+
topLevel: detectTopLevel(program),
|
12378
|
+
revision: 'Ember@2.1.0-beta.1',
|
12042
12379
|
loc: program.loc,
|
12043
12380
|
moduleName: options.moduleName
|
12044
12381
|
};
|
@@ -12046,6 +12383,52 @@ enifed('ember-template-compiler/system/compile_options', ['exports', 'ember-meta
|
|
12046
12383
|
|
12047
12384
|
return options;
|
12048
12385
|
};
|
12386
|
+
|
12387
|
+
function detectTopLevel(program) {
|
12388
|
+
var loc = program.loc;
|
12389
|
+
var body = program.body;
|
12390
|
+
|
12391
|
+
if (!loc || loc.start.line !== 1 || loc.start.column !== 0) {
|
12392
|
+
return null;
|
12393
|
+
}
|
12394
|
+
|
12395
|
+
var lastComponentNode = undefined;
|
12396
|
+
var lastIndex = undefined;
|
12397
|
+
var nodeCount = 0;
|
12398
|
+
|
12399
|
+
for (var i = 0, l = body.length; i < l; i++) {
|
12400
|
+
var curr = body[i];
|
12401
|
+
|
12402
|
+
// text node with whitespace only
|
12403
|
+
if (curr.type === 'TextNode' && /^[\s]*$/.test(curr.chars)) {
|
12404
|
+
continue;
|
12405
|
+
}
|
12406
|
+
|
12407
|
+
// has multiple root elements if we've been here before
|
12408
|
+
if (nodeCount++ > 0) {
|
12409
|
+
return false;
|
12410
|
+
}
|
12411
|
+
|
12412
|
+
if (curr.type === 'ComponentNode' || curr.type === 'ElementNode') {
|
12413
|
+
lastComponentNode = curr;
|
12414
|
+
lastIndex = i;
|
12415
|
+
}
|
12416
|
+
}
|
12417
|
+
|
12418
|
+
if (!lastComponentNode) {
|
12419
|
+
return null;
|
12420
|
+
}
|
12421
|
+
|
12422
|
+
if (lastComponentNode.type === 'ComponentNode') {
|
12423
|
+
var tag = lastComponentNode.tag;
|
12424
|
+
if (tag.charAt(0) !== '<') {
|
12425
|
+
return null;
|
12426
|
+
}
|
12427
|
+
return tag.slice(1, -1);
|
12428
|
+
}
|
12429
|
+
|
12430
|
+
return null;
|
12431
|
+
}
|
12049
12432
|
});
|
12050
12433
|
enifed('ember-template-compiler/system/precompile', ['exports', 'ember-metal/core', 'ember-template-compiler/system/compile_options'], function (exports, _emberMetalCore, _emberTemplateCompilerSystemCompile_options) {
|
12051
12434
|
/**
|
@@ -12782,7 +13165,7 @@ enifed("htmlbars-compiler/hydration-opcode-compiler", ["exports", "./template-vi
|
|
12782
13165
|
};
|
12783
13166
|
|
12784
13167
|
HydrationOpcodeCompiler.prototype.component = function (component, childIndex, childCount) {
|
12785
|
-
this.pushMorphPlaceholderNode(childIndex, childCount);
|
13168
|
+
this.pushMorphPlaceholderNode(childIndex, childCount, component.isStatic);
|
12786
13169
|
|
12787
13170
|
var program = component.program || {};
|
12788
13171
|
var blockParams = program.blockParams || [];
|
@@ -12857,15 +13240,18 @@ enifed("htmlbars-compiler/hydration-opcode-compiler", ["exports", "./template-vi
|
|
12857
13240
|
this.opcode('printElementHook', meta(modifier));
|
12858
13241
|
};
|
12859
13242
|
|
12860
|
-
HydrationOpcodeCompiler.prototype.pushMorphPlaceholderNode = function (childIndex, childCount) {
|
12861
|
-
if (
|
12862
|
-
if (
|
12863
|
-
|
12864
|
-
|
12865
|
-
|
12866
|
-
|
13243
|
+
HydrationOpcodeCompiler.prototype.pushMorphPlaceholderNode = function (childIndex, childCount, skipBoundaryNodes) {
|
13244
|
+
if (!skipBoundaryNodes) {
|
13245
|
+
if (this.paths.length === 0) {
|
13246
|
+
if (childIndex === 0) {
|
13247
|
+
this.opcode('openBoundary');
|
13248
|
+
}
|
13249
|
+
if (childIndex === childCount - 1) {
|
13250
|
+
this.opcode('closeBoundary');
|
13251
|
+
}
|
12867
13252
|
}
|
12868
13253
|
}
|
13254
|
+
|
12869
13255
|
this.comment();
|
12870
13256
|
};
|
12871
13257
|
|
@@ -12982,37 +13368,11 @@ enifed('htmlbars-compiler/template-compiler', ['exports', './fragment-opcode-com
|
|
12982
13368
|
|
12983
13369
|
exports.default = TemplateCompiler;
|
12984
13370
|
|
12985
|
-
var dynamicNodes = {
|
12986
|
-
mustache: true,
|
12987
|
-
block: true,
|
12988
|
-
component: true
|
12989
|
-
};
|
12990
|
-
|
12991
13371
|
TemplateCompiler.prototype.compile = function (ast) {
|
12992
13372
|
var templateVisitor = new _templateVisitor.default();
|
12993
13373
|
templateVisitor.visit(ast);
|
12994
13374
|
|
12995
|
-
|
12996
|
-
var actions = templateVisitor.actions;
|
12997
|
-
|
12998
|
-
for (var i = 0, l = actions.length - 1; i < l; i++) {
|
12999
|
-
var action = actions[i];
|
13000
|
-
var nextAction = actions[i + 1];
|
13001
|
-
|
13002
|
-
normalizedActions.push(action);
|
13003
|
-
|
13004
|
-
if (action[0] === "startProgram" && nextAction[0] in dynamicNodes) {
|
13005
|
-
normalizedActions.push(['insertBoundary', [true]]);
|
13006
|
-
}
|
13007
|
-
|
13008
|
-
if (nextAction[0] === "endProgram" && action[0] in dynamicNodes) {
|
13009
|
-
normalizedActions.push(['insertBoundary', [false]]);
|
13010
|
-
}
|
13011
|
-
}
|
13012
|
-
|
13013
|
-
normalizedActions.push(actions[actions.length - 1]);
|
13014
|
-
|
13015
|
-
_utils.processOpcodes(this, normalizedActions);
|
13375
|
+
_utils.processOpcodes(this, templateVisitor.actions);
|
13016
13376
|
|
13017
13377
|
return this.templates.pop();
|
13018
13378
|
};
|
@@ -13086,7 +13446,7 @@ enifed('htmlbars-compiler/template-compiler', ['exports', './fragment-opcode-com
|
|
13086
13446
|
return 'child' + index;
|
13087
13447
|
}).join(', ');
|
13088
13448
|
|
13089
|
-
var template = '(function() {\n' + this.getChildTemplateVars(indent + ' ') + indent + ' return {\n' + this.buildMeta(indent + ' ', program) + indent + ' arity: ' + blockParams.length + ',\n' + indent + ' cachedFragment: null,\n' + indent + ' hasRendered: false,\n' + indent + ' buildFragment: ' + fragmentProgram + ',\n' + indent + ' buildRenderNodes: ' + hydrationPrograms.createMorphsProgram + ',\n' + indent + ' statements: [\n' + statements + '\n' + indent + ' ],\n' + indent + ' locals: ' + locals + ',\n' + indent + ' templates: [' + templates + ']\n' + indent + ' };\n' + indent + '}())';
|
13449
|
+
var template = '(function() {\n' + this.getChildTemplateVars(indent + ' ') + indent + ' return {\n' + this.buildMeta(indent + ' ', program) + indent + ' isEmpty: ' + (program.body.length ? 'false' : 'true') + ',\n' + indent + ' arity: ' + blockParams.length + ',\n' + indent + ' cachedFragment: null,\n' + indent + ' hasRendered: false,\n' + indent + ' buildFragment: ' + fragmentProgram + ',\n' + indent + ' buildRenderNodes: ' + hydrationPrograms.createMorphsProgram + ',\n' + indent + ' statements: [\n' + statements + '\n' + indent + ' ],\n' + indent + ' locals: ' + locals + ',\n' + indent + ' templates: [' + templates + ']\n' + indent + ' };\n' + indent + '}())';
|
13090
13450
|
|
13091
13451
|
this.templates.push(template);
|
13092
13452
|
};
|
@@ -13393,7 +13753,7 @@ enifed("htmlbars-compiler/utils", ["exports"], function (exports) {
|
|
13393
13753
|
}
|
13394
13754
|
}
|
13395
13755
|
});
|
13396
|
-
enifed('htmlbars-runtime', ['exports', './htmlbars-runtime/hooks', './htmlbars-runtime/render', '../htmlbars-util/morph-utils', '../htmlbars-util/template-utils', '
|
13756
|
+
enifed('htmlbars-runtime', ['exports', './htmlbars-runtime/hooks', './htmlbars-runtime/render', '../htmlbars-util/morph-utils', '../htmlbars-util/template-utils', 'htmlbars-runtime/hooks'], function (exports, _htmlbarsRuntimeHooks, _htmlbarsRuntimeRender, _htmlbarsUtilMorphUtils, _htmlbarsUtilTemplateUtils, _htmlbarsRuntimeHooks2) {
|
13397
13757
|
'use strict';
|
13398
13758
|
|
13399
13759
|
var internal = {
|
@@ -13403,7 +13763,7 @@ enifed('htmlbars-runtime', ['exports', './htmlbars-runtime/hooks', './htmlbars-r
|
|
13403
13763
|
continueBlock: _htmlbarsRuntimeHooks2.continueBlock,
|
13404
13764
|
hostYieldWithShadowTemplate: _htmlbarsRuntimeHooks2.hostYieldWithShadowTemplate,
|
13405
13765
|
visitChildren: _htmlbarsUtilMorphUtils.visitChildren,
|
13406
|
-
validateChildMorphs:
|
13766
|
+
validateChildMorphs: _htmlbarsUtilMorphUtils.validateChildMorphs,
|
13407
13767
|
clearMorph: _htmlbarsUtilTemplateUtils.clearMorph
|
13408
13768
|
};
|
13409
13769
|
|
@@ -13411,28 +13771,8 @@ enifed('htmlbars-runtime', ['exports', './htmlbars-runtime/hooks', './htmlbars-r
|
|
13411
13771
|
exports.render = _htmlbarsRuntimeRender.default;
|
13412
13772
|
exports.internal = internal;
|
13413
13773
|
});
|
13414
|
-
enifed(
|
13415
|
-
"use strict";
|
13416
|
-
|
13774
|
+
enifed('htmlbars-runtime/expression-visitor', ['exports'], function (exports) {
|
13417
13775
|
/**
|
13418
|
-
Node classification:
|
13419
|
-
|
13420
|
-
# Primary Statement Nodes:
|
13421
|
-
|
13422
|
-
These nodes are responsible for a render node that represents a morph-range.
|
13423
|
-
|
13424
|
-
* block
|
13425
|
-
* inline
|
13426
|
-
* content
|
13427
|
-
* element
|
13428
|
-
* component
|
13429
|
-
|
13430
|
-
# Leaf Statement Nodes:
|
13431
|
-
|
13432
|
-
This node is responsible for a render node that represents a morph-attr.
|
13433
|
-
|
13434
|
-
* attribute
|
13435
|
-
|
13436
13776
|
# Expression Nodes:
|
13437
13777
|
|
13438
13778
|
These nodes are not directly responsible for any part of the DOM, but are
|
@@ -13441,251 +13781,86 @@ enifed("htmlbars-runtime/expression-visitor", ["exports", "../htmlbars-util/obje
|
|
13441
13781
|
* get
|
13442
13782
|
* subexpr
|
13443
13783
|
* concat
|
13444
|
-
*/
|
13445
|
-
|
13446
|
-
var base = {
|
13447
|
-
acceptExpression: function (node, env, scope) {
|
13448
|
-
var ret = { value: null };
|
13449
|
-
|
13450
|
-
// Primitive literals are unambiguously non-array representations of
|
13451
|
-
// themselves.
|
13452
|
-
if (typeof node !== 'object' || node === null) {
|
13453
|
-
ret.value = node;
|
13454
|
-
return ret;
|
13455
|
-
}
|
13456
|
-
|
13457
|
-
switch (node[0]) {
|
13458
|
-
// can be used by manualElement
|
13459
|
-
case 'value':
|
13460
|
-
ret.value = node[1];break;
|
13461
|
-
case 'get':
|
13462
|
-
ret.value = this.get(node, env, scope);break;
|
13463
|
-
case 'subexpr':
|
13464
|
-
ret.value = this.subexpr(node, env, scope);break;
|
13465
|
-
case 'concat':
|
13466
|
-
ret.value = this.concat(node, env, scope);break;
|
13467
|
-
}
|
13468
|
-
|
13469
|
-
return ret;
|
13470
|
-
},
|
13471
|
-
|
13472
|
-
acceptParams: function (nodes, env, scope) {
|
13473
|
-
var arr = new Array(nodes.length);
|
13474
|
-
|
13475
|
-
for (var i = 0, l = nodes.length; i < l; i++) {
|
13476
|
-
arr[i] = this.acceptExpression(nodes[i], env, scope).value;
|
13477
|
-
}
|
13478
|
-
|
13479
|
-
return arr;
|
13480
|
-
},
|
13481
|
-
|
13482
|
-
acceptHash: function (pairs, env, scope) {
|
13483
|
-
var object = {};
|
13484
|
-
|
13485
|
-
for (var i = 0, l = pairs.length; i < l; i += 2) {
|
13486
|
-
object[pairs[i]] = this.acceptExpression(pairs[i + 1], env, scope).value;
|
13487
|
-
}
|
13488
|
-
|
13489
|
-
return object;
|
13490
|
-
},
|
13491
|
-
|
13492
|
-
// [ 'get', path ]
|
13493
|
-
get: function (node, env, scope) {
|
13494
|
-
return env.hooks.get(env, scope, node[1]);
|
13495
|
-
},
|
13496
|
-
|
13497
|
-
// [ 'subexpr', path, params, hash ]
|
13498
|
-
subexpr: function (node, env, scope) {
|
13499
|
-
var path = node[1],
|
13500
|
-
params = node[2],
|
13501
|
-
hash = node[3];
|
13502
|
-
return env.hooks.subexpr(env, scope, path, this.acceptParams(params, env, scope), this.acceptHash(hash, env, scope));
|
13503
|
-
},
|
13504
|
-
|
13505
|
-
// [ 'concat', parts ]
|
13506
|
-
concat: function (node, env, scope) {
|
13507
|
-
return env.hooks.concat(env, this.acceptParams(node[1], env, scope));
|
13508
|
-
},
|
13509
|
-
|
13510
|
-
linkParamsAndHash: function (env, scope, morph, path, params, hash) {
|
13511
|
-
if (morph.linkedParams) {
|
13512
|
-
params = morph.linkedParams.params;
|
13513
|
-
hash = morph.linkedParams.hash;
|
13514
|
-
} else {
|
13515
|
-
params = params && this.acceptParams(params, env, scope);
|
13516
|
-
hash = hash && this.acceptHash(hash, env, scope);
|
13517
|
-
}
|
13518
|
-
|
13519
|
-
_htmlbarsUtilMorphUtils.linkParams(env, scope, morph, path, params, hash);
|
13520
|
-
return [params, hash];
|
13521
|
-
}
|
13522
|
-
};
|
13523
|
-
|
13524
|
-
var AlwaysDirtyVisitor = _htmlbarsUtilObjectUtils.merge(Object.create(base), {
|
13525
|
-
// [ 'block', path, params, hash, templateId, inverseId ]
|
13526
|
-
block: function (node, morph, env, scope, template, visitor) {
|
13527
|
-
var path = node[1],
|
13528
|
-
params = node[2],
|
13529
|
-
hash = node[3],
|
13530
|
-
templateId = node[4],
|
13531
|
-
inverseId = node[5];
|
13532
|
-
var paramsAndHash = this.linkParamsAndHash(env, scope, morph, path, params, hash);
|
13533
|
-
|
13534
|
-
morph.isDirty = morph.isSubtreeDirty = false;
|
13535
|
-
env.hooks.block(morph, env, scope, path, paramsAndHash[0], paramsAndHash[1], templateId === null ? null : template.templates[templateId], inverseId === null ? null : template.templates[inverseId], visitor);
|
13536
|
-
},
|
13537
|
-
|
13538
|
-
// [ 'inline', path, params, hash ]
|
13539
|
-
inline: function (node, morph, env, scope, visitor) {
|
13540
|
-
var path = node[1],
|
13541
|
-
params = node[2],
|
13542
|
-
hash = node[3];
|
13543
|
-
var paramsAndHash = this.linkParamsAndHash(env, scope, morph, path, params, hash);
|
13544
|
-
|
13545
|
-
morph.isDirty = morph.isSubtreeDirty = false;
|
13546
|
-
env.hooks.inline(morph, env, scope, path, paramsAndHash[0], paramsAndHash[1], visitor);
|
13547
|
-
},
|
13548
|
-
|
13549
|
-
// [ 'content', path ]
|
13550
|
-
content: function (node, morph, env, scope, visitor) {
|
13551
|
-
var path = node[1];
|
13552
|
-
|
13553
|
-
morph.isDirty = morph.isSubtreeDirty = false;
|
13554
|
-
|
13555
|
-
if (isHelper(env, scope, path)) {
|
13556
|
-
env.hooks.inline(morph, env, scope, path, [], {}, visitor);
|
13557
|
-
if (morph.linkedResult) {
|
13558
|
-
_htmlbarsUtilMorphUtils.linkParams(env, scope, morph, '@content-helper', [morph.linkedResult], null);
|
13559
|
-
}
|
13560
|
-
return;
|
13561
|
-
}
|
13562
|
-
|
13563
|
-
var params;
|
13564
|
-
if (morph.linkedParams) {
|
13565
|
-
params = morph.linkedParams.params;
|
13566
|
-
} else {
|
13567
|
-
params = [env.hooks.get(env, scope, path)];
|
13568
|
-
}
|
13569
|
-
|
13570
|
-
_htmlbarsUtilMorphUtils.linkParams(env, scope, morph, '@range', params, null);
|
13571
|
-
env.hooks.range(morph, env, scope, path, params[0], visitor);
|
13572
|
-
},
|
13573
|
-
|
13574
|
-
// [ 'element', path, params, hash ]
|
13575
|
-
element: function (node, morph, env, scope, visitor) {
|
13576
|
-
var path = node[1],
|
13577
|
-
params = node[2],
|
13578
|
-
hash = node[3];
|
13579
|
-
var paramsAndHash = this.linkParamsAndHash(env, scope, morph, path, params, hash);
|
13580
|
-
|
13581
|
-
morph.isDirty = morph.isSubtreeDirty = false;
|
13582
|
-
env.hooks.element(morph, env, scope, path, paramsAndHash[0], paramsAndHash[1], visitor);
|
13583
|
-
},
|
13584
|
-
|
13585
|
-
// [ 'attribute', name, value ]
|
13586
|
-
attribute: function (node, morph, env, scope) {
|
13587
|
-
var name = node[1],
|
13588
|
-
value = node[2];
|
13589
|
-
var paramsAndHash = this.linkParamsAndHash(env, scope, morph, '@attribute', [value], null);
|
13590
|
-
|
13591
|
-
morph.isDirty = morph.isSubtreeDirty = false;
|
13592
|
-
env.hooks.attribute(morph, env, scope, name, paramsAndHash[0][0]);
|
13593
|
-
},
|
13594
|
-
|
13595
|
-
// [ 'component', path, attrs, templateId, inverseId ]
|
13596
|
-
component: function (node, morph, env, scope, template, visitor) {
|
13597
|
-
var path = node[1],
|
13598
|
-
attrs = node[2],
|
13599
|
-
templateId = node[3],
|
13600
|
-
inverseId = node[4];
|
13601
|
-
var paramsAndHash = this.linkParamsAndHash(env, scope, morph, path, [], attrs);
|
13602
|
-
var templates = {
|
13603
|
-
default: template.templates[templateId],
|
13604
|
-
inverse: template.templates[inverseId]
|
13605
|
-
};
|
13784
|
+
*/
|
13606
13785
|
|
13607
|
-
|
13608
|
-
env.hooks.component(morph, env, scope, path, paramsAndHash[0], paramsAndHash[1], templates, visitor);
|
13609
|
-
},
|
13786
|
+
'use strict';
|
13610
13787
|
|
13611
|
-
|
13612
|
-
|
13613
|
-
var template = node[1];
|
13614
|
-
env.hooks.attributes(morph, env, scope, template, parentMorph, visitor);
|
13615
|
-
}
|
13616
|
-
});
|
13788
|
+
exports.acceptParams = acceptParams;
|
13789
|
+
exports.acceptHash = acceptHash;
|
13617
13790
|
|
13618
|
-
|
13619
|
-
|
13620
|
-
// [ 'block', path, params, hash, templateId, inverseId ]
|
13621
|
-
block: function (node, morph, env, scope, template, visitor) {
|
13622
|
-
dirtyCheck(env, morph, visitor, function (visitor) {
|
13623
|
-
AlwaysDirtyVisitor.block(node, morph, env, scope, template, visitor);
|
13624
|
-
});
|
13625
|
-
},
|
13791
|
+
function acceptParams(nodes, env, scope) {
|
13792
|
+
var array = [];
|
13626
13793
|
|
13627
|
-
|
13628
|
-
|
13629
|
-
|
13630
|
-
AlwaysDirtyVisitor.inline(node, morph, env, scope, visitor);
|
13631
|
-
});
|
13632
|
-
},
|
13794
|
+
for (var i = 0, l = nodes.length; i < l; i++) {
|
13795
|
+
array.push(acceptExpression(nodes[i], env, scope).value);
|
13796
|
+
}
|
13633
13797
|
|
13634
|
-
|
13635
|
-
|
13636
|
-
dirtyCheck(env, morph, visitor, function (visitor) {
|
13637
|
-
AlwaysDirtyVisitor.content(node, morph, env, scope, visitor);
|
13638
|
-
});
|
13639
|
-
},
|
13798
|
+
return array;
|
13799
|
+
}
|
13640
13800
|
|
13641
|
-
|
13642
|
-
|
13643
|
-
dirtyCheck(env, morph, visitor, function (visitor) {
|
13644
|
-
AlwaysDirtyVisitor.element(node, morph, env, scope, template, visitor);
|
13645
|
-
});
|
13646
|
-
},
|
13801
|
+
function acceptHash(pairs, env, scope) {
|
13802
|
+
var object = {};
|
13647
13803
|
|
13648
|
-
|
13649
|
-
|
13650
|
-
|
13651
|
-
|
13652
|
-
|
13653
|
-
},
|
13804
|
+
for (var i = 0, l = pairs.length; i < l; i += 2) {
|
13805
|
+
var key = pairs[i];
|
13806
|
+
var value = pairs[i + 1];
|
13807
|
+
object[key] = acceptExpression(value, env, scope).value;
|
13808
|
+
}
|
13654
13809
|
|
13655
|
-
|
13656
|
-
|
13657
|
-
dirtyCheck(env, morph, visitor, function (visitor) {
|
13658
|
-
AlwaysDirtyVisitor.component(node, morph, env, scope, template, visitor);
|
13659
|
-
});
|
13660
|
-
},
|
13810
|
+
return object;
|
13811
|
+
}
|
13661
13812
|
|
13662
|
-
|
13663
|
-
|
13664
|
-
|
13813
|
+
function acceptExpression(node, env, scope) {
|
13814
|
+
var ret = { value: null };
|
13815
|
+
|
13816
|
+
// Primitive literals are unambiguously non-array representations of
|
13817
|
+
// themselves.
|
13818
|
+
if (typeof node !== 'object' || node === null) {
|
13819
|
+
ret.value = node;
|
13820
|
+
} else {
|
13821
|
+
ret.value = evaluateNode(node, env, scope);
|
13665
13822
|
}
|
13666
|
-
});
|
13667
13823
|
|
13668
|
-
|
13669
|
-
|
13670
|
-
var isSubtreeDirty = morph.isSubtreeDirty;
|
13671
|
-
var env = _env;
|
13824
|
+
return ret;
|
13825
|
+
}
|
13672
13826
|
|
13673
|
-
|
13674
|
-
|
13827
|
+
function evaluateNode(node, env, scope) {
|
13828
|
+
switch (node[0]) {
|
13829
|
+
// can be used by manualElement
|
13830
|
+
case 'value':
|
13831
|
+
return node[1];
|
13832
|
+
case 'get':
|
13833
|
+
return evaluateGet(node, env, scope);
|
13834
|
+
case 'subexpr':
|
13835
|
+
return evaluateSubexpr(node, env, scope);
|
13836
|
+
case 'concat':
|
13837
|
+
return evaluateConcat(node, env, scope);
|
13675
13838
|
}
|
13839
|
+
}
|
13676
13840
|
|
13677
|
-
|
13678
|
-
|
13679
|
-
|
13680
|
-
|
13681
|
-
env = morph.buildChildEnv(morph.state, env);
|
13682
|
-
}
|
13683
|
-
_htmlbarsUtilMorphUtils.validateChildMorphs(env, morph, visitor);
|
13684
|
-
}
|
13841
|
+
function evaluateGet(node, env, scope) {
|
13842
|
+
var path = node[1];
|
13843
|
+
|
13844
|
+
return env.hooks.get(env, scope, path);
|
13685
13845
|
}
|
13686
13846
|
|
13687
|
-
function
|
13688
|
-
|
13847
|
+
function evaluateSubexpr(node, env, scope) {
|
13848
|
+
var path = node[1];
|
13849
|
+
var rawParams = node[2];
|
13850
|
+
var rawHash = node[3];
|
13851
|
+
|
13852
|
+
var params = acceptParams(rawParams, env, scope);
|
13853
|
+
var hash = acceptHash(rawHash, env, scope);
|
13854
|
+
|
13855
|
+
return env.hooks.subexpr(env, scope, path, params, hash);
|
13856
|
+
}
|
13857
|
+
|
13858
|
+
function evaluateConcat(node, env, scope) {
|
13859
|
+
var rawParts = node[1];
|
13860
|
+
|
13861
|
+
var parts = acceptParams(rawParts, env, scope);
|
13862
|
+
|
13863
|
+
return env.hooks.concat(env, parts);
|
13689
13864
|
}
|
13690
13865
|
});
|
13691
13866
|
enifed("htmlbars-runtime/hooks", ["exports", "./render", "../morph-range/morph-list", "../htmlbars-util/object-utils", "../htmlbars-util/morph-utils", "../htmlbars-util/template-utils"], function (exports, _render, _morphRangeMorphList, _htmlbarsUtilObjectUtils, _htmlbarsUtilMorphUtils, _htmlbarsUtilTemplateUtils) {
|
@@ -14179,6 +14354,8 @@ enifed("htmlbars-runtime/hooks", ["exports", "./render", "../morph-range/morph-l
|
|
14179
14354
|
function createChildScope(parent) {
|
14180
14355
|
var scope = Object.create(parent);
|
14181
14356
|
scope.locals = Object.create(parent.locals);
|
14357
|
+
scope.localPresent = Object.create(parent.localPresent);
|
14358
|
+
scope.blocks = Object.create(parent.blocks);
|
14182
14359
|
return scope;
|
14183
14360
|
}
|
14184
14361
|
|
@@ -14927,7 +15104,204 @@ enifed("htmlbars-runtime/morph", ["exports", "../morph-range"], function (export
|
|
14927
15104
|
|
14928
15105
|
exports.default = HTMLBarsMorph;
|
14929
15106
|
});
|
14930
|
-
enifed("htmlbars-runtime/
|
15107
|
+
enifed("htmlbars-runtime/node-visitor", ["exports", "../htmlbars-util/morph-utils", "./expression-visitor"], function (exports, _htmlbarsUtilMorphUtils, _expressionVisitor) {
|
15108
|
+
"use strict";
|
15109
|
+
|
15110
|
+
/**
|
15111
|
+
Node classification:
|
15112
|
+
|
15113
|
+
# Primary Statement Nodes:
|
15114
|
+
|
15115
|
+
These nodes are responsible for a render node that represents a morph-range.
|
15116
|
+
|
15117
|
+
* block
|
15118
|
+
* inline
|
15119
|
+
* content
|
15120
|
+
* element
|
15121
|
+
* component
|
15122
|
+
|
15123
|
+
# Leaf Statement Nodes:
|
15124
|
+
|
15125
|
+
This node is responsible for a render node that represents a morph-attr.
|
15126
|
+
|
15127
|
+
* attribute
|
15128
|
+
*/
|
15129
|
+
|
15130
|
+
function linkParamsAndHash(env, scope, morph, path, params, hash) {
|
15131
|
+
if (morph.linkedParams) {
|
15132
|
+
params = morph.linkedParams.params;
|
15133
|
+
hash = morph.linkedParams.hash;
|
15134
|
+
} else {
|
15135
|
+
params = params && _expressionVisitor.acceptParams(params, env, scope);
|
15136
|
+
hash = hash && _expressionVisitor.acceptHash(hash, env, scope);
|
15137
|
+
}
|
15138
|
+
|
15139
|
+
_htmlbarsUtilMorphUtils.linkParams(env, scope, morph, path, params, hash);
|
15140
|
+
return [params, hash];
|
15141
|
+
}
|
15142
|
+
|
15143
|
+
var AlwaysDirtyVisitor = {
|
15144
|
+
|
15145
|
+
block: function (node, morph, env, scope, template, visitor) {
|
15146
|
+
var path = node[1];
|
15147
|
+
var params = node[2];
|
15148
|
+
var hash = node[3];
|
15149
|
+
var templateId = node[4];
|
15150
|
+
var inverseId = node[5];
|
15151
|
+
|
15152
|
+
var paramsAndHash = linkParamsAndHash(env, scope, morph, path, params, hash);
|
15153
|
+
|
15154
|
+
morph.isDirty = morph.isSubtreeDirty = false;
|
15155
|
+
env.hooks.block(morph, env, scope, path, paramsAndHash[0], paramsAndHash[1], templateId === null ? null : template.templates[templateId], inverseId === null ? null : template.templates[inverseId], visitor);
|
15156
|
+
},
|
15157
|
+
|
15158
|
+
inline: function (node, morph, env, scope, visitor) {
|
15159
|
+
var path = node[1];
|
15160
|
+
var params = node[2];
|
15161
|
+
var hash = node[3];
|
15162
|
+
|
15163
|
+
var paramsAndHash = linkParamsAndHash(env, scope, morph, path, params, hash);
|
15164
|
+
|
15165
|
+
morph.isDirty = morph.isSubtreeDirty = false;
|
15166
|
+
env.hooks.inline(morph, env, scope, path, paramsAndHash[0], paramsAndHash[1], visitor);
|
15167
|
+
},
|
15168
|
+
|
15169
|
+
content: function (node, morph, env, scope, visitor) {
|
15170
|
+
var path = node[1];
|
15171
|
+
|
15172
|
+
morph.isDirty = morph.isSubtreeDirty = false;
|
15173
|
+
|
15174
|
+
if (isHelper(env, scope, path)) {
|
15175
|
+
env.hooks.inline(morph, env, scope, path, [], {}, visitor);
|
15176
|
+
if (morph.linkedResult) {
|
15177
|
+
_htmlbarsUtilMorphUtils.linkParams(env, scope, morph, '@content-helper', [morph.linkedResult], null);
|
15178
|
+
}
|
15179
|
+
return;
|
15180
|
+
}
|
15181
|
+
|
15182
|
+
var params = undefined;
|
15183
|
+
if (morph.linkedParams) {
|
15184
|
+
params = morph.linkedParams.params;
|
15185
|
+
} else {
|
15186
|
+
params = [env.hooks.get(env, scope, path)];
|
15187
|
+
}
|
15188
|
+
|
15189
|
+
_htmlbarsUtilMorphUtils.linkParams(env, scope, morph, '@range', params, null);
|
15190
|
+
env.hooks.range(morph, env, scope, path, params[0], visitor);
|
15191
|
+
},
|
15192
|
+
|
15193
|
+
element: function (node, morph, env, scope, visitor) {
|
15194
|
+
var path = node[1];
|
15195
|
+
var params = node[2];
|
15196
|
+
var hash = node[3];
|
15197
|
+
|
15198
|
+
var paramsAndHash = linkParamsAndHash(env, scope, morph, path, params, hash);
|
15199
|
+
|
15200
|
+
morph.isDirty = morph.isSubtreeDirty = false;
|
15201
|
+
env.hooks.element(morph, env, scope, path, paramsAndHash[0], paramsAndHash[1], visitor);
|
15202
|
+
},
|
15203
|
+
|
15204
|
+
attribute: function (node, morph, env, scope) {
|
15205
|
+
var name = node[1];
|
15206
|
+
var value = node[2];
|
15207
|
+
|
15208
|
+
var paramsAndHash = linkParamsAndHash(env, scope, morph, '@attribute', [value], null);
|
15209
|
+
|
15210
|
+
morph.isDirty = morph.isSubtreeDirty = false;
|
15211
|
+
env.hooks.attribute(morph, env, scope, name, paramsAndHash[0][0]);
|
15212
|
+
},
|
15213
|
+
|
15214
|
+
component: function (node, morph, env, scope, template, visitor) {
|
15215
|
+
var path = node[1];
|
15216
|
+
var attrs = node[2];
|
15217
|
+
var templateId = node[3];
|
15218
|
+
var inverseId = node[4];
|
15219
|
+
|
15220
|
+
var paramsAndHash = linkParamsAndHash(env, scope, morph, path, [], attrs);
|
15221
|
+
var templates = {
|
15222
|
+
default: template.templates[templateId],
|
15223
|
+
inverse: template.templates[inverseId]
|
15224
|
+
};
|
15225
|
+
|
15226
|
+
morph.isDirty = morph.isSubtreeDirty = false;
|
15227
|
+
env.hooks.component(morph, env, scope, path, paramsAndHash[0], paramsAndHash[1], templates, visitor);
|
15228
|
+
},
|
15229
|
+
|
15230
|
+
attributes: function (node, morph, env, scope, parentMorph, visitor) {
|
15231
|
+
var template = node[1];
|
15232
|
+
|
15233
|
+
env.hooks.attributes(morph, env, scope, template, parentMorph, visitor);
|
15234
|
+
}
|
15235
|
+
|
15236
|
+
};
|
15237
|
+
|
15238
|
+
exports.AlwaysDirtyVisitor = AlwaysDirtyVisitor;
|
15239
|
+
exports.default = {
|
15240
|
+
block: function (node, morph, env, scope, template, visitor) {
|
15241
|
+
dirtyCheck(env, morph, visitor, function (visitor) {
|
15242
|
+
AlwaysDirtyVisitor.block(node, morph, env, scope, template, visitor);
|
15243
|
+
});
|
15244
|
+
},
|
15245
|
+
|
15246
|
+
inline: function (node, morph, env, scope, visitor) {
|
15247
|
+
dirtyCheck(env, morph, visitor, function (visitor) {
|
15248
|
+
AlwaysDirtyVisitor.inline(node, morph, env, scope, visitor);
|
15249
|
+
});
|
15250
|
+
},
|
15251
|
+
|
15252
|
+
content: function (node, morph, env, scope, visitor) {
|
15253
|
+
dirtyCheck(env, morph, visitor, function (visitor) {
|
15254
|
+
AlwaysDirtyVisitor.content(node, morph, env, scope, visitor);
|
15255
|
+
});
|
15256
|
+
},
|
15257
|
+
|
15258
|
+
element: function (node, morph, env, scope, template, visitor) {
|
15259
|
+
dirtyCheck(env, morph, visitor, function (visitor) {
|
15260
|
+
AlwaysDirtyVisitor.element(node, morph, env, scope, template, visitor);
|
15261
|
+
});
|
15262
|
+
},
|
15263
|
+
|
15264
|
+
attribute: function (node, morph, env, scope, template) {
|
15265
|
+
dirtyCheck(env, morph, null, function () {
|
15266
|
+
AlwaysDirtyVisitor.attribute(node, morph, env, scope, template);
|
15267
|
+
});
|
15268
|
+
},
|
15269
|
+
|
15270
|
+
component: function (node, morph, env, scope, template, visitor) {
|
15271
|
+
dirtyCheck(env, morph, visitor, function (visitor) {
|
15272
|
+
AlwaysDirtyVisitor.component(node, morph, env, scope, template, visitor);
|
15273
|
+
});
|
15274
|
+
},
|
15275
|
+
|
15276
|
+
attributes: function (node, morph, env, scope, parentMorph, visitor) {
|
15277
|
+
AlwaysDirtyVisitor.attributes(node, morph, env, scope, parentMorph, visitor);
|
15278
|
+
}
|
15279
|
+
};
|
15280
|
+
|
15281
|
+
function dirtyCheck(_env, morph, visitor, callback) {
|
15282
|
+
var isDirty = morph.isDirty;
|
15283
|
+
var isSubtreeDirty = morph.isSubtreeDirty;
|
15284
|
+
var env = _env;
|
15285
|
+
|
15286
|
+
if (isSubtreeDirty) {
|
15287
|
+
visitor = AlwaysDirtyVisitor;
|
15288
|
+
}
|
15289
|
+
|
15290
|
+
if (isDirty || isSubtreeDirty) {
|
15291
|
+
callback(visitor);
|
15292
|
+
} else {
|
15293
|
+
if (morph.buildChildEnv) {
|
15294
|
+
env = morph.buildChildEnv(morph.state, env);
|
15295
|
+
}
|
15296
|
+
_htmlbarsUtilMorphUtils.validateChildMorphs(env, morph, visitor);
|
15297
|
+
}
|
15298
|
+
}
|
15299
|
+
|
15300
|
+
function isHelper(env, scope, path) {
|
15301
|
+
return env.hooks.keywords[path] !== undefined || env.hooks.hasHelper(env, scope, path);
|
15302
|
+
}
|
15303
|
+
});
|
15304
|
+
enifed("htmlbars-runtime/render", ["exports", "../htmlbars-util/array-utils", "../htmlbars-util/morph-utils", "./node-visitor", "./morph", "../htmlbars-util/template-utils", "../htmlbars-util/void-tag-names"], function (exports, _htmlbarsUtilArrayUtils, _htmlbarsUtilMorphUtils, _nodeVisitor, _morph, _htmlbarsUtilTemplateUtils, _htmlbarsUtilVoidTagNames) {
|
14931
15305
|
"use strict";
|
14932
15306
|
|
14933
15307
|
exports.default = render;
|
@@ -15014,7 +15388,7 @@ enifed("htmlbars-runtime/render", ["exports", "../htmlbars-util/array-utils", ".
|
|
15014
15388
|
return new RenderResult(env, scope, options, rootNode, ownerNode, nodes, fragment, template, shouldSetContent);
|
15015
15389
|
};
|
15016
15390
|
|
15017
|
-
function manualElement(tagName, attributes) {
|
15391
|
+
function manualElement(tagName, attributes, _isEmpty) {
|
15018
15392
|
var statements = [];
|
15019
15393
|
|
15020
15394
|
for (var key in attributes) {
|
@@ -15024,7 +15398,11 @@ enifed("htmlbars-runtime/render", ["exports", "../htmlbars-util/array-utils", ".
|
|
15024
15398
|
statements.push(["attribute", key, attributes[key]]);
|
15025
15399
|
}
|
15026
15400
|
|
15027
|
-
|
15401
|
+
var isEmpty = _isEmpty || _htmlbarsUtilVoidTagNames.default[tagName];
|
15402
|
+
|
15403
|
+
if (!isEmpty) {
|
15404
|
+
statements.push(['content', 'yield']);
|
15405
|
+
}
|
15028
15406
|
|
15029
15407
|
var template = {
|
15030
15408
|
arity: 0,
|
@@ -15044,7 +15422,7 @@ enifed("htmlbars-runtime/render", ["exports", "../htmlbars-util/array-utils", ".
|
|
15044
15422
|
dom.setAttribute(el1, key, attributes[key]);
|
15045
15423
|
}
|
15046
15424
|
|
15047
|
-
if (!
|
15425
|
+
if (!isEmpty) {
|
15048
15426
|
var el2 = dom.createComment("");
|
15049
15427
|
dom.appendChild(el1, el2);
|
15050
15428
|
}
|
@@ -15064,7 +15442,10 @@ enifed("htmlbars-runtime/render", ["exports", "../htmlbars-util/array-utils", ".
|
|
15064
15442
|
morphs.push(dom.createAttrMorph(element, key));
|
15065
15443
|
}
|
15066
15444
|
|
15067
|
-
|
15445
|
+
if (!isEmpty) {
|
15446
|
+
morphs.push(dom.createMorphAt(element, 0, 0));
|
15447
|
+
}
|
15448
|
+
|
15068
15449
|
return morphs;
|
15069
15450
|
},
|
15070
15451
|
statements: statements,
|
@@ -15134,7 +15515,7 @@ enifed("htmlbars-runtime/render", ["exports", "../htmlbars-util/array-utils", ".
|
|
15134
15515
|
RenderResult.prototype.render = function () {
|
15135
15516
|
this.root.lastResult = this;
|
15136
15517
|
this.root.rendered = true;
|
15137
|
-
this.populateNodes(
|
15518
|
+
this.populateNodes(_nodeVisitor.AlwaysDirtyVisitor);
|
15138
15519
|
|
15139
15520
|
if (this.shouldSetContent && this.root.setContent) {
|
15140
15521
|
this.root.setContent(this.fragment);
|
@@ -15148,11 +15529,11 @@ enifed("htmlbars-runtime/render", ["exports", "../htmlbars-util/array-utils", ".
|
|
15148
15529
|
};
|
15149
15530
|
|
15150
15531
|
RenderResult.prototype.revalidate = function (env, self, blockArguments, scope) {
|
15151
|
-
this.revalidateWith(env, scope, self, blockArguments,
|
15532
|
+
this.revalidateWith(env, scope, self, blockArguments, _nodeVisitor.default);
|
15152
15533
|
};
|
15153
15534
|
|
15154
15535
|
RenderResult.prototype.rerender = function (env, self, blockArguments, scope) {
|
15155
|
-
this.revalidateWith(env, scope, self, blockArguments,
|
15536
|
+
this.revalidateWith(env, scope, self, blockArguments, _nodeVisitor.AlwaysDirtyVisitor);
|
15156
15537
|
};
|
15157
15538
|
|
15158
15539
|
RenderResult.prototype.revalidateWith = function (env, scope, self, blockArguments, visitor) {
|
@@ -15393,7 +15774,14 @@ enifed("htmlbars-syntax/builders", ["exports"], function (exports) {
|
|
15393
15774
|
tag: tag,
|
15394
15775
|
attributes: attributes,
|
15395
15776
|
program: program,
|
15396
|
-
loc: buildLoc(loc)
|
15777
|
+
loc: buildLoc(loc),
|
15778
|
+
|
15779
|
+
// this should be true only if this component node is guaranteed
|
15780
|
+
// to produce start and end points that can never change after the
|
15781
|
+
// initial render, regardless of changes to dynamic inputs. If
|
15782
|
+
// a component represents a "fragment" (any number of top-level nodes),
|
15783
|
+
// this will usually not be true.
|
15784
|
+
isStatic: false
|
15397
15785
|
};
|
15398
15786
|
}
|
15399
15787
|
|
@@ -18455,12 +18843,7 @@ enifed("htmlbars-util/morph-utils", ["exports"], function (exports) {
|
|
18455
18843
|
current = current.nextMorph;
|
18456
18844
|
}
|
18457
18845
|
} else if (node.morphList) {
|
18458
|
-
|
18459
|
-
|
18460
|
-
while (current) {
|
18461
|
-
nodes.push(current);
|
18462
|
-
current = current.nextMorph;
|
18463
|
-
}
|
18846
|
+
nodes.push(node.morphList);
|
18464
18847
|
}
|
18465
18848
|
}
|
18466
18849
|
}
|
@@ -18899,8 +19282,8 @@ enifed('morph-range', ['exports', './morph-range/utils'], function (exports, _mo
|
|
18899
19282
|
return this.setNode(content);
|
18900
19283
|
}
|
18901
19284
|
/* Handlebars.SafeString */
|
18902
|
-
if (typeof content.
|
18903
|
-
return this.setHTML(content.
|
19285
|
+
if (typeof content.string === 'string') {
|
19286
|
+
return this.setHTML(content.string);
|
18904
19287
|
}
|
18905
19288
|
if (this.parseTextAsHTML) {
|
18906
19289
|
return this.setHTML(content.toString());
|