ember-source 2.0.3.1 → 2.1.0.beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of ember-source might be problematic. Click here for more details.
- 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());
|