ember-source 2.11.3 → 2.12.0.beta.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/VERSION +1 -1
- data/dist/ember-runtime.js +1280 -957
- data/dist/ember-template-compiler.js +688 -578
- data/dist/ember-testing.js +7 -11
- data/dist/ember-tests.js +6584 -604
- data/dist/ember-tests.prod.js +6579 -599
- data/dist/ember.debug.js +2358 -1864
- data/dist/ember.js +2358 -1864
- data/dist/ember.min.js +1310 -1243
- data/dist/ember.prod.js +2078 -1725
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a3a1dbced11e6d72e80b21b73ee727c4d324917c
|
4
|
+
data.tar.gz: 4d81efcdb70fbafa489b8df51c68c0862a3a19be
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c03a38d1130701c83dcc9997a0b5beaf44abd965cde65035ac99195bd5e0beb5a08afde73ae60a09ec201c3c90d2456ed2b73060172ccd9e08a184d7b3a68aa9
|
7
|
+
data.tar.gz: a53efb30dbc11de167f6854456d820c27c4b056eb5032662491ceab19d4781ec66bde4a50bbff1609a4a9ef546472a27ae34328cefaf2c978578aab45d8e987a
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2.
|
1
|
+
2.12.0.beta.1
|
data/dist/ember-runtime.js
CHANGED
@@ -6,11 +6,10 @@
|
|
6
6
|
* Portions Copyright 2008-2011 Apple Inc. All rights reserved.
|
7
7
|
* @license Licensed under MIT license
|
8
8
|
* See https://raw.github.com/emberjs/ember.js/master/LICENSE
|
9
|
-
* @version 2.
|
9
|
+
* @version 2.12.0-beta.1
|
10
10
|
*/
|
11
11
|
|
12
12
|
var enifed, requireModule, Ember;
|
13
|
-
var mainContext = this; // Used in ember-environment/lib/global.js
|
14
13
|
|
15
14
|
(function() {
|
16
15
|
var isNode = typeof window === 'undefined' &&
|
@@ -164,7 +163,7 @@ function defaults(obj, defaults) {
|
|
164
163
|
return obj;
|
165
164
|
}
|
166
165
|
|
167
|
-
|
166
|
+
babelHelpers = {
|
168
167
|
inherits: inherits,
|
169
168
|
taggedTemplateLiteralLoose: taggedTemplateLiteralLoose,
|
170
169
|
slice: Array.prototype.slice,
|
@@ -1188,13 +1187,20 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
1188
1187
|
|
1189
1188
|
});
|
1190
1189
|
enifed('container/container', ['exports', 'ember-utils', 'ember-environment', 'ember-metal'], function (exports, _emberUtils, _emberEnvironment, _emberMetal) {
|
1190
|
+
/* globals Proxy */
|
1191
1191
|
'use strict';
|
1192
1192
|
|
1193
|
+
var _Container$prototype;
|
1194
|
+
|
1193
1195
|
exports.default = Container;
|
1194
1196
|
exports.buildFakeContainerWithDeprecations = buildFakeContainerWithDeprecations;
|
1195
1197
|
|
1196
1198
|
var CONTAINER_OVERRIDE = _emberUtils.symbol('CONTAINER_OVERRIDE');
|
1199
|
+
var FACTORY_FOR = _emberUtils.symbol('FACTORY_FOR');
|
1200
|
+
exports.FACTORY_FOR = FACTORY_FOR;
|
1201
|
+
var LOOKUP_FACTORY = _emberUtils.symbol('LOOKUP_FACTORY');
|
1197
1202
|
|
1203
|
+
exports.LOOKUP_FACTORY = LOOKUP_FACTORY;
|
1198
1204
|
/**
|
1199
1205
|
A container used to instantiate and cache objects.
|
1200
1206
|
|
@@ -1220,7 +1226,7 @@ enifed('container/container', ['exports', 'ember-utils', 'ember-environment', 'e
|
|
1220
1226
|
this.isDestroyed = false;
|
1221
1227
|
}
|
1222
1228
|
|
1223
|
-
Container.prototype = {
|
1229
|
+
Container.prototype = (_Container$prototype = {
|
1224
1230
|
/**
|
1225
1231
|
@private
|
1226
1232
|
@property owner
|
@@ -1305,57 +1311,150 @@ enifed('container/container', ['exports', 'ember-utils', 'ember-environment', 'e
|
|
1305
1311
|
*/
|
1306
1312
|
lookupFactory: function (fullName, options) {
|
1307
1313
|
_emberMetal.assert('fullName must be a proper full name', this.registry.validateFullName(fullName));
|
1308
|
-
return factoryFor(this, this.registry.normalize(fullName), options);
|
1309
|
-
},
|
1310
1314
|
|
1315
|
+
_emberMetal.deprecate('Using "_lookupFactory" is deprecated. Please use container.factoryFor instead.', !_emberMetal.isFeatureEnabled('ember-factory-for'), { id: 'container-lookupFactory', until: '2.13.0', url: 'TODO' });
|
1316
|
+
|
1317
|
+
return deprecatedFactoryFor(this, this.registry.normalize(fullName), options);
|
1318
|
+
}
|
1319
|
+
|
1320
|
+
}, _Container$prototype[LOOKUP_FACTORY] = function (fullName, options) {
|
1321
|
+
_emberMetal.assert('fullName must be a proper full name', this.registry.validateFullName(fullName));
|
1322
|
+
return deprecatedFactoryFor(this, this.registry.normalize(fullName), options);
|
1323
|
+
}, _Container$prototype[FACTORY_FOR] = function (fullName) {
|
1324
|
+
var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];
|
1325
|
+
|
1326
|
+
if (_emberMetal.isFeatureEnabled('ember-no-double-extend')) {
|
1327
|
+
if (_emberMetal.isFeatureEnabled('ember-factory-for')) {
|
1328
|
+
return this.factoryFor(fullName, options);
|
1329
|
+
} else {
|
1330
|
+
/* This throws in case of a poorly designed build */
|
1331
|
+
throw new Error('If ember-no-double-extend is enabled, ember-factory-for must also be enabled');
|
1332
|
+
}
|
1333
|
+
}
|
1334
|
+
var factory = this[LOOKUP_FACTORY](fullName, options);
|
1335
|
+
if (factory === undefined) {
|
1336
|
+
return;
|
1337
|
+
}
|
1338
|
+
var manager = new DeprecatedFactoryManager(this, factory, fullName);
|
1339
|
+
|
1340
|
+
_emberMetal.runInDebug(function () {
|
1341
|
+
manager = wrapManagerInDeprecationProxy(manager);
|
1342
|
+
});
|
1343
|
+
|
1344
|
+
return manager;
|
1345
|
+
}, _Container$prototype.destroy = function () {
|
1346
|
+
eachDestroyable(this, function (item) {
|
1347
|
+
if (item.destroy) {
|
1348
|
+
item.destroy();
|
1349
|
+
}
|
1350
|
+
});
|
1351
|
+
|
1352
|
+
this.isDestroyed = true;
|
1353
|
+
}, _Container$prototype.reset = function (fullName) {
|
1354
|
+
if (arguments.length > 0) {
|
1355
|
+
resetMember(this, this.registry.normalize(fullName));
|
1356
|
+
} else {
|
1357
|
+
resetCache(this);
|
1358
|
+
}
|
1359
|
+
}, _Container$prototype.ownerInjection = function () {
|
1360
|
+
var _ref;
|
1361
|
+
|
1362
|
+
return _ref = {}, _ref[_emberUtils.OWNER] = this.owner, _ref;
|
1363
|
+
}, _Container$prototype);
|
1364
|
+
|
1365
|
+
/*
|
1366
|
+
* Wrap a factory manager in a proxy which will not permit properties to be
|
1367
|
+
* set on the manager.
|
1368
|
+
*/
|
1369
|
+
function wrapManagerInDeprecationProxy(manager) {
|
1370
|
+
if (_emberUtils.HAS_NATIVE_PROXY) {
|
1371
|
+
var _ret = (function () {
|
1372
|
+
var validator = {
|
1373
|
+
get: function (obj, prop) {
|
1374
|
+
if (prop !== 'class' && prop !== 'create') {
|
1375
|
+
throw new Error('You attempted to access "' + prop + '" on a factory manager created by container#factoryFor. "' + prop + '" is not a member of a factory manager."');
|
1376
|
+
}
|
1377
|
+
|
1378
|
+
return obj[prop];
|
1379
|
+
},
|
1380
|
+
set: function (obj, prop, value) {
|
1381
|
+
throw new Error('You attempted to set "' + prop + '" on a factory manager created by container#factoryFor. A factory manager is a read-only construct.');
|
1382
|
+
}
|
1383
|
+
};
|
1384
|
+
|
1385
|
+
// Note:
|
1386
|
+
// We have to proxy access to the manager here so that private property
|
1387
|
+
// access doesn't cause the above errors to occur.
|
1388
|
+
var m = manager;
|
1389
|
+
var proxiedManager = {
|
1390
|
+
class: m.class,
|
1391
|
+
create: function (props) {
|
1392
|
+
return m.create(props);
|
1393
|
+
}
|
1394
|
+
};
|
1395
|
+
|
1396
|
+
return {
|
1397
|
+
v: new Proxy(proxiedManager, validator)
|
1398
|
+
};
|
1399
|
+
})();
|
1400
|
+
|
1401
|
+
if (typeof _ret === 'object') return _ret.v;
|
1402
|
+
}
|
1403
|
+
|
1404
|
+
return manager;
|
1405
|
+
}
|
1406
|
+
|
1407
|
+
if (_emberMetal.isFeatureEnabled('ember-factory-for')) {
|
1311
1408
|
/**
|
1312
|
-
|
1313
|
-
|
1314
|
-
|
1315
|
-
|
1409
|
+
Given a fullName, return the corresponding factory. The consumer of the factory
|
1410
|
+
is responsible for the destruction of any factory instances, as there is no
|
1411
|
+
way for the container to ensure instances are destroyed when it itself is
|
1412
|
+
destroyed.
|
1413
|
+
@public
|
1414
|
+
@method factoryFor
|
1415
|
+
@param {String} fullName
|
1416
|
+
@param {Object} [options]
|
1417
|
+
@param {String} [options.source] The fullname of the request source (used for local lookup)
|
1418
|
+
@return {any}
|
1316
1419
|
*/
|
1317
|
-
|
1318
|
-
|
1319
|
-
|
1320
|
-
|
1420
|
+
Container.prototype.factoryFor = function _factoryFor(fullName) {
|
1421
|
+
var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];
|
1422
|
+
|
1423
|
+
var normalizedName = this.registry.normalize(fullName);
|
1424
|
+
_emberMetal.assert('fullName must be a proper full name', this.registry.validateFullName(normalizedName));
|
1425
|
+
|
1426
|
+
if (options.source) {
|
1427
|
+
normalizedName = this.registry.expandLocalLookup(fullName, options);
|
1428
|
+
// if expandLocalLookup returns falsey, we do not support local lookup
|
1429
|
+
if (!normalizedName) {
|
1430
|
+
return;
|
1321
1431
|
}
|
1322
|
-
}
|
1432
|
+
}
|
1323
1433
|
|
1324
|
-
|
1325
|
-
},
|
1434
|
+
var factory = this.registry.resolve(normalizedName);
|
1326
1435
|
|
1327
|
-
|
1328
|
-
|
1329
|
-
@private
|
1330
|
-
@method reset
|
1331
|
-
@param {String} fullName optional key to reset; if missing, resets everything
|
1332
|
-
*/
|
1333
|
-
reset: function (fullName) {
|
1334
|
-
if (arguments.length > 0) {
|
1335
|
-
resetMember(this, this.registry.normalize(fullName));
|
1336
|
-
} else {
|
1337
|
-
resetCache(this);
|
1436
|
+
if (factory === undefined) {
|
1437
|
+
return;
|
1338
1438
|
}
|
1339
|
-
},
|
1340
1439
|
|
1341
|
-
|
1342
|
-
Returns an object that can be used to provide an owner to a
|
1343
|
-
manually created instance.
|
1344
|
-
@private
|
1345
|
-
@method ownerInjection
|
1346
|
-
@returns { Object }
|
1347
|
-
*/
|
1348
|
-
ownerInjection: function () {
|
1349
|
-
var _ref;
|
1440
|
+
var manager = new FactoryManager(this, factory, fullName, normalizedName);
|
1350
1441
|
|
1351
|
-
|
1352
|
-
|
1353
|
-
|
1442
|
+
_emberMetal.runInDebug(function () {
|
1443
|
+
manager = wrapManagerInDeprecationProxy(manager);
|
1444
|
+
});
|
1445
|
+
|
1446
|
+
return manager;
|
1447
|
+
};
|
1448
|
+
}
|
1354
1449
|
|
1355
1450
|
function isSingleton(container, fullName) {
|
1356
1451
|
return container.registry.getOption(fullName, 'singleton') !== false;
|
1357
1452
|
}
|
1358
1453
|
|
1454
|
+
function shouldInstantiate(container, fullName) {
|
1455
|
+
return container.registry.getOption(fullName, 'instantiate') !== false;
|
1456
|
+
}
|
1457
|
+
|
1359
1458
|
function lookup(container, fullName) {
|
1360
1459
|
var options = arguments.length <= 2 || arguments[2] === undefined ? {} : arguments[2];
|
1361
1460
|
|
@@ -1372,17 +1471,76 @@ enifed('container/container', ['exports', 'ember-utils', 'ember-environment', 'e
|
|
1372
1471
|
return container.cache[fullName];
|
1373
1472
|
}
|
1374
1473
|
|
1375
|
-
|
1474
|
+
if (_emberMetal.isFeatureEnabled('ember-factory-for')) {
|
1475
|
+
return instantiateFactory(container, fullName, options);
|
1476
|
+
} else {
|
1477
|
+
var factory = deprecatedFactoryFor(container, fullName);
|
1478
|
+
var value = instantiate(factory, {}, container, fullName);
|
1479
|
+
|
1480
|
+
if (value === undefined) {
|
1481
|
+
return;
|
1482
|
+
}
|
1376
1483
|
|
1377
|
-
|
1484
|
+
if (isSingleton(container, fullName) && options.singleton !== false) {
|
1485
|
+
container.cache[fullName] = value;
|
1486
|
+
}
|
1487
|
+
|
1488
|
+
return value;
|
1489
|
+
}
|
1490
|
+
}
|
1491
|
+
|
1492
|
+
function isSingletonClass(container, fullName, _ref2) {
|
1493
|
+
var instantiate = _ref2.instantiate;
|
1494
|
+
var singleton = _ref2.singleton;
|
1495
|
+
|
1496
|
+
return singleton !== false && isSingleton(container, fullName) && !instantiate && !shouldInstantiate(container, fullName);
|
1497
|
+
}
|
1498
|
+
|
1499
|
+
function isSingletonInstance(container, fullName, _ref3) {
|
1500
|
+
var instantiate = _ref3.instantiate;
|
1501
|
+
var singleton = _ref3.singleton;
|
1502
|
+
|
1503
|
+
return singleton !== false && isSingleton(container, fullName) && instantiate !== false && shouldInstantiate(container, fullName);
|
1504
|
+
}
|
1505
|
+
|
1506
|
+
function isFactoryClass(container, fullname, _ref4) {
|
1507
|
+
var instantiate = _ref4.instantiate;
|
1508
|
+
var singleton = _ref4.singleton;
|
1509
|
+
|
1510
|
+
return (singleton === false || !isSingleton(container, fullname)) && instantiate === false && !shouldInstantiate(container, fullname);
|
1511
|
+
}
|
1512
|
+
|
1513
|
+
function isFactoryInstance(container, fullName, _ref5) {
|
1514
|
+
var instantiate = _ref5.instantiate;
|
1515
|
+
var singleton = _ref5.singleton;
|
1516
|
+
|
1517
|
+
return (singleton !== false || isSingleton(container, fullName)) && instantiate !== false && shouldInstantiate(container, fullName);
|
1518
|
+
}
|
1519
|
+
|
1520
|
+
function instantiateFactory(container, fullName, options) {
|
1521
|
+
var factoryManager = container[FACTORY_FOR](fullName);
|
1522
|
+
|
1523
|
+
if (factoryManager === undefined) {
|
1378
1524
|
return;
|
1379
1525
|
}
|
1380
1526
|
|
1381
|
-
|
1382
|
-
|
1527
|
+
// SomeClass { singleton: true, instantiate: true } | { singleton: true } | { instantiate: true } | {}
|
1528
|
+
// By default majority of objects fall into this case
|
1529
|
+
if (isSingletonInstance(container, fullName, options)) {
|
1530
|
+
return container.cache[fullName] = factoryManager.create();
|
1383
1531
|
}
|
1384
1532
|
|
1385
|
-
|
1533
|
+
// SomeClass { singleton: false, instantiate: true }
|
1534
|
+
if (isFactoryInstance(container, fullName, options)) {
|
1535
|
+
return factoryManager.create();
|
1536
|
+
}
|
1537
|
+
|
1538
|
+
// SomeClass { singleton: true, instantiate: false } | { instantiate: false } | { singleton: false, instantiation: false }
|
1539
|
+
if (isSingletonClass(container, fullName, options) || isFactoryClass(container, fullName, options)) {
|
1540
|
+
return factoryManager.class;
|
1541
|
+
}
|
1542
|
+
|
1543
|
+
throw new Error('Could not create factory');
|
1386
1544
|
}
|
1387
1545
|
|
1388
1546
|
function markInjectionsAsDynamic(injections) {
|
@@ -1421,14 +1579,13 @@ enifed('container/container', ['exports', 'ember-utils', 'ember-environment', 'e
|
|
1421
1579
|
return hash;
|
1422
1580
|
}
|
1423
1581
|
|
1424
|
-
function
|
1582
|
+
function deprecatedFactoryFor(container, fullName) {
|
1425
1583
|
var options = arguments.length <= 2 || arguments[2] === undefined ? {} : arguments[2];
|
1426
1584
|
|
1427
1585
|
var registry = container.registry;
|
1428
1586
|
|
1429
1587
|
if (options.source) {
|
1430
1588
|
fullName = registry.expandLocalLookup(fullName, options);
|
1431
|
-
|
1432
1589
|
// if expandLocalLookup returns falsey, we do not support local lookup
|
1433
1590
|
if (!fullName) {
|
1434
1591
|
return;
|
@@ -1492,22 +1649,12 @@ enifed('container/container', ['exports', 'ember-utils', 'ember-environment', 'e
|
|
1492
1649
|
return injections;
|
1493
1650
|
}
|
1494
1651
|
|
1495
|
-
function
|
1496
|
-
var registry = container.registry;
|
1497
|
-
var splitName = fullName.split(':');
|
1498
|
-
var type = splitName[0];
|
1499
|
-
|
1500
|
-
var factoryInjections = buildInjections(container, registry.getFactoryTypeInjections(type), registry.getFactoryInjections(fullName));
|
1501
|
-
factoryInjections._debugContainerKey = fullName;
|
1502
|
-
|
1503
|
-
return factoryInjections;
|
1504
|
-
}
|
1505
|
-
|
1506
|
-
function instantiate(container, fullName) {
|
1507
|
-
var factory = factoryFor(container, fullName);
|
1652
|
+
function instantiate(factory, props, container, fullName) {
|
1508
1653
|
var lazyInjections = undefined,
|
1509
1654
|
validationCache = undefined;
|
1510
1655
|
|
1656
|
+
props = props || {};
|
1657
|
+
|
1511
1658
|
if (container.registry.getOption(fullName, 'instantiate') === false) {
|
1512
1659
|
return factory;
|
1513
1660
|
}
|
@@ -1535,7 +1682,7 @@ enifed('container/container', ['exports', 'ember-utils', 'ember-environment', 'e
|
|
1535
1682
|
|
1536
1683
|
if (typeof factory.extend === 'function') {
|
1537
1684
|
// assume the factory was extendable and is already injected
|
1538
|
-
obj = factory.create();
|
1685
|
+
obj = factory.create(props);
|
1539
1686
|
} else {
|
1540
1687
|
// assume the factory was extendable
|
1541
1688
|
// to create time injections
|
@@ -1547,7 +1694,7 @@ enifed('container/container', ['exports', 'ember-utils', 'ember-environment', 'e
|
|
1547
1694
|
// This "fake" container will be replaced after instantiation with a
|
1548
1695
|
// property that raises deprecations every time it is accessed.
|
1549
1696
|
injections.container = container._fakeContainerToInject;
|
1550
|
-
obj = factory.create(injections);
|
1697
|
+
obj = factory.create(_emberUtils.assign({}, injections, props));
|
1551
1698
|
|
1552
1699
|
// TODO - remove when Ember reaches v3.0.0
|
1553
1700
|
if (!Object.isFrozen(obj) && 'container' in obj) {
|
@@ -1559,6 +1706,17 @@ enifed('container/container', ['exports', 'ember-utils', 'ember-environment', 'e
|
|
1559
1706
|
}
|
1560
1707
|
}
|
1561
1708
|
|
1709
|
+
function factoryInjectionsFor(container, fullName) {
|
1710
|
+
var registry = container.registry;
|
1711
|
+
var splitName = fullName.split(':');
|
1712
|
+
var type = splitName[0];
|
1713
|
+
|
1714
|
+
var factoryInjections = buildInjections(container, registry.getFactoryTypeInjections(type), registry.getFactoryInjections(fullName));
|
1715
|
+
factoryInjections._debugContainerKey = fullName;
|
1716
|
+
|
1717
|
+
return factoryInjections;
|
1718
|
+
}
|
1719
|
+
|
1562
1720
|
// TODO - remove when Ember reaches v3.0.0
|
1563
1721
|
function injectDeprecatedContainer(object, container) {
|
1564
1722
|
Object.defineProperty(object, 'container', {
|
@@ -1641,7 +1799,98 @@ enifed('container/container', ['exports', 'ember-utils', 'ember-environment', 'e
|
|
1641
1799
|
return container[containerProperty].apply(container, arguments);
|
1642
1800
|
};
|
1643
1801
|
}
|
1802
|
+
|
1803
|
+
var DeprecatedFactoryManager = (function () {
|
1804
|
+
function DeprecatedFactoryManager(container, factory, fullName) {
|
1805
|
+
this.container = container;
|
1806
|
+
this.class = factory;
|
1807
|
+
this.fullName = fullName;
|
1808
|
+
}
|
1809
|
+
|
1810
|
+
DeprecatedFactoryManager.prototype.create = function create() {
|
1811
|
+
var props = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];
|
1812
|
+
|
1813
|
+
return instantiate(this.class, props, this.container, this.fullName);
|
1814
|
+
};
|
1815
|
+
|
1816
|
+
return DeprecatedFactoryManager;
|
1817
|
+
})();
|
1818
|
+
|
1819
|
+
var FactoryManager = (function () {
|
1820
|
+
function FactoryManager(container, factory, fullName, normalizedName) {
|
1821
|
+
this.container = container;
|
1822
|
+
this.class = factory;
|
1823
|
+
this.fullName = fullName;
|
1824
|
+
this.normalizedName = normalizedName;
|
1825
|
+
}
|
1826
|
+
|
1827
|
+
FactoryManager.prototype.create = function create() {
|
1828
|
+
var _this = this;
|
1829
|
+
|
1830
|
+
var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];
|
1831
|
+
|
1832
|
+
var injections = injectionsFor(this.container, this.normalizedName);
|
1833
|
+
var props = _emberUtils.assign({}, injections, options);
|
1834
|
+
|
1835
|
+
props[_emberUtils.NAME_KEY] = this.container.registry.makeToString(this.class, this.fullName);
|
1836
|
+
|
1837
|
+
_emberMetal.runInDebug(function () {
|
1838
|
+
var lazyInjections = undefined;
|
1839
|
+
var validationCache = _this.container.validationCache;
|
1840
|
+
// Ensure that all lazy injections are valid at instantiation time
|
1841
|
+
if (!validationCache[_this.fullName] && _this.class && typeof _this.class._lazyInjections === 'function') {
|
1842
|
+
lazyInjections = _this.class._lazyInjections();
|
1843
|
+
lazyInjections = _this.container.registry.normalizeInjectionsHash(lazyInjections);
|
1844
|
+
|
1845
|
+
_this.container.registry.validateInjections(lazyInjections);
|
1846
|
+
}
|
1847
|
+
|
1848
|
+
validationCache[_this.fullName] = true;
|
1849
|
+
});
|
1850
|
+
|
1851
|
+
if (!this.class.create) {
|
1852
|
+
throw new Error('Failed to create an instance of \'' + this.normalizedName + '\'. Most likely an improperly defined class or' + ' an invalid module export.');
|
1853
|
+
}
|
1854
|
+
|
1855
|
+
if (this.class.prototype) {
|
1856
|
+
injectDeprecatedContainer(this.class.prototype, this.container);
|
1857
|
+
}
|
1858
|
+
|
1859
|
+
return this.class.create(props);
|
1860
|
+
};
|
1861
|
+
|
1862
|
+
return FactoryManager;
|
1863
|
+
})();
|
1644
1864
|
});
|
1865
|
+
|
1866
|
+
/*
|
1867
|
+
* This internal version of factoryFor swaps between the public API for
|
1868
|
+
* factoryFor (class is the registered class) and a transition implementation
|
1869
|
+
* (class is the double-extended class). It is *not* the public API version
|
1870
|
+
* of factoryFor, which always returns the registered class.
|
1871
|
+
*/
|
1872
|
+
|
1873
|
+
/**
|
1874
|
+
A depth first traversal, destroying the container, its descendant containers and all
|
1875
|
+
their managed objects.
|
1876
|
+
@private
|
1877
|
+
@method destroy
|
1878
|
+
*/
|
1879
|
+
|
1880
|
+
/**
|
1881
|
+
Clear either the entire cache or just the cache for a particular key.
|
1882
|
+
@private
|
1883
|
+
@method reset
|
1884
|
+
@param {String} fullName optional key to reset; if missing, resets everything
|
1885
|
+
*/
|
1886
|
+
|
1887
|
+
/**
|
1888
|
+
Returns an object that can be used to provide an owner to a
|
1889
|
+
manually created instance.
|
1890
|
+
@private
|
1891
|
+
@method ownerInjection
|
1892
|
+
@returns { Object }
|
1893
|
+
*/
|
1645
1894
|
enifed('container/index', ['exports', 'container/registry', 'container/container'], function (exports, _containerRegistry, _containerContainer) {
|
1646
1895
|
/*
|
1647
1896
|
Public API for the container is still in flux.
|
@@ -1656,6 +1905,8 @@ enifed('container/index', ['exports', 'container/registry', 'container/container
|
|
1656
1905
|
exports.privatize = _containerRegistry.privatize;
|
1657
1906
|
exports.Container = _containerContainer.default;
|
1658
1907
|
exports.buildFakeContainerWithDeprecations = _containerContainer.buildFakeContainerWithDeprecations;
|
1908
|
+
exports.FACTORY_FOR = _containerContainer.FACTORY_FOR;
|
1909
|
+
exports.LOOKUP_FACTORY = _containerContainer.LOOKUP_FACTORY;
|
1659
1910
|
});
|
1660
1911
|
enifed('container/registry', ['exports', 'ember-utils', 'ember-metal', 'container/container'], function (exports, _emberUtils, _emberMetal, _containerContainer) {
|
1661
1912
|
'use strict';
|
@@ -2784,7 +3035,6 @@ enifed('ember-metal/alias', ['exports', 'ember-utils', 'ember-metal/debug', 'emb
|
|
2784
3035
|
'use strict';
|
2785
3036
|
|
2786
3037
|
exports.default = alias;
|
2787
|
-
exports.AliasedProperty = AliasedProperty;
|
2788
3038
|
|
2789
3039
|
var CONSUMED = {};
|
2790
3040
|
|
@@ -2792,66 +3042,73 @@ enifed('ember-metal/alias', ['exports', 'ember-utils', 'ember-metal/debug', 'emb
|
|
2792
3042
|
return new AliasedProperty(altKey);
|
2793
3043
|
}
|
2794
3044
|
|
2795
|
-
|
2796
|
-
|
2797
|
-
this.altKey = altKey;
|
2798
|
-
this._dependentKeys = [altKey];
|
2799
|
-
}
|
2800
|
-
|
2801
|
-
AliasedProperty.prototype = Object.create(_emberMetalProperties.Descriptor.prototype);
|
3045
|
+
var AliasedProperty = (function (_Descriptor) {
|
3046
|
+
babelHelpers.inherits(AliasedProperty, _Descriptor);
|
2802
3047
|
|
2803
|
-
|
2804
|
-
|
2805
|
-
|
2806
|
-
|
2807
|
-
|
3048
|
+
function AliasedProperty(altKey) {
|
3049
|
+
_Descriptor.call(this);
|
3050
|
+
this.isDescriptor = true;
|
3051
|
+
this.altKey = altKey;
|
3052
|
+
this._dependentKeys = [altKey];
|
2808
3053
|
}
|
2809
|
-
};
|
2810
3054
|
|
2811
|
-
|
2812
|
-
|
2813
|
-
|
2814
|
-
|
2815
|
-
|
2816
|
-
|
3055
|
+
AliasedProperty.prototype.setup = function setup(obj, keyName) {
|
3056
|
+
_emberMetalDebug.assert('Setting alias \'' + keyName + '\' on self', this.altKey !== keyName);
|
3057
|
+
var meta = _emberMetalMeta.meta(obj);
|
3058
|
+
if (meta.peekWatching(keyName)) {
|
3059
|
+
_emberMetalDependent_keys.addDependentKeys(this, obj, keyName, meta);
|
3060
|
+
}
|
3061
|
+
};
|
2817
3062
|
|
2818
|
-
|
2819
|
-
|
2820
|
-
|
3063
|
+
AliasedProperty.prototype.teardown = function teardown(obj, keyName) {
|
3064
|
+
var meta = _emberMetalMeta.meta(obj);
|
3065
|
+
if (meta.peekWatching(keyName)) {
|
3066
|
+
_emberMetalDependent_keys.removeDependentKeys(this, obj, keyName, meta);
|
3067
|
+
}
|
3068
|
+
};
|
2821
3069
|
|
2822
|
-
|
2823
|
-
|
2824
|
-
|
3070
|
+
AliasedProperty.prototype.willWatch = function willWatch(obj, keyName) {
|
3071
|
+
_emberMetalDependent_keys.addDependentKeys(this, obj, keyName, _emberMetalMeta.meta(obj));
|
3072
|
+
};
|
2825
3073
|
|
2826
|
-
|
2827
|
-
|
2828
|
-
|
2829
|
-
var cache = meta.writableCache();
|
2830
|
-
if (cache[keyName] !== CONSUMED) {
|
2831
|
-
cache[keyName] = CONSUMED;
|
2832
|
-
_emberMetalDependent_keys.addDependentKeys(this, obj, keyName, meta);
|
2833
|
-
}
|
2834
|
-
return ret;
|
2835
|
-
};
|
3074
|
+
AliasedProperty.prototype.didUnwatch = function didUnwatch(obj, keyName) {
|
3075
|
+
_emberMetalDependent_keys.removeDependentKeys(this, obj, keyName, _emberMetalMeta.meta(obj));
|
3076
|
+
};
|
2836
3077
|
|
2837
|
-
|
2838
|
-
|
2839
|
-
|
3078
|
+
AliasedProperty.prototype.get = function get(obj, keyName) {
|
3079
|
+
var ret = _emberMetalProperty_get.get(obj, this.altKey);
|
3080
|
+
var meta = _emberMetalMeta.meta(obj);
|
3081
|
+
var cache = meta.writableCache();
|
3082
|
+
if (cache[keyName] !== CONSUMED) {
|
3083
|
+
cache[keyName] = CONSUMED;
|
3084
|
+
_emberMetalDependent_keys.addDependentKeys(this, obj, keyName, meta);
|
3085
|
+
}
|
3086
|
+
return ret;
|
3087
|
+
};
|
2840
3088
|
|
2841
|
-
|
2842
|
-
|
2843
|
-
|
2844
|
-
|
3089
|
+
AliasedProperty.prototype.set = function set(obj, keyName, value) {
|
3090
|
+
return _emberMetalProperty_set.set(obj, this.altKey, value);
|
3091
|
+
};
|
3092
|
+
|
3093
|
+
AliasedProperty.prototype.readOnly = function readOnly() {
|
3094
|
+
this.set = AliasedProperty_readOnlySet;
|
3095
|
+
return this;
|
3096
|
+
};
|
3097
|
+
|
3098
|
+
AliasedProperty.prototype.oneWay = function oneWay() {
|
3099
|
+
this.set = AliasedProperty_oneWaySet;
|
3100
|
+
return this;
|
3101
|
+
};
|
3102
|
+
|
3103
|
+
return AliasedProperty;
|
3104
|
+
})(_emberMetalProperties.Descriptor);
|
3105
|
+
|
3106
|
+
exports.AliasedProperty = AliasedProperty;
|
2845
3107
|
|
2846
3108
|
function AliasedProperty_readOnlySet(obj, keyName, value) {
|
2847
3109
|
throw new _emberMetalError.default('Cannot set read-only property \'' + keyName + '\' on object: ' + _emberUtils.inspect(obj));
|
2848
3110
|
}
|
2849
3111
|
|
2850
|
-
AliasedProperty.prototype.oneWay = function () {
|
2851
|
-
this.set = AliasedProperty_oneWaySet;
|
2852
|
-
return this;
|
2853
|
-
};
|
2854
|
-
|
2855
3112
|
function AliasedProperty_oneWaySet(obj, keyName, value) {
|
2856
3113
|
_emberMetalProperties.defineProperty(obj, keyName, null);
|
2857
3114
|
return _emberMetalProperty_set.set(obj, keyName, value);
|
@@ -2875,41 +3132,42 @@ enifed('ember-metal/binding', ['exports', 'ember-utils', 'ember-console', 'ember
|
|
2875
3132
|
// BINDING
|
2876
3133
|
//
|
2877
3134
|
|
2878
|
-
|
2879
|
-
|
2880
|
-
|
2881
|
-
|
2882
|
-
|
3135
|
+
var Binding = (function () {
|
3136
|
+
function Binding(toPath, fromPath) {
|
3137
|
+
// Configuration
|
3138
|
+
this._from = fromPath;
|
3139
|
+
this._to = toPath;
|
3140
|
+
this._oneWay = undefined;
|
2883
3141
|
|
2884
|
-
|
2885
|
-
|
2886
|
-
|
2887
|
-
|
2888
|
-
|
2889
|
-
|
2890
|
-
|
3142
|
+
// State
|
3143
|
+
this._direction = undefined;
|
3144
|
+
this._readyToSync = undefined;
|
3145
|
+
this._fromObj = undefined;
|
3146
|
+
this._fromPath = undefined;
|
3147
|
+
this._toObj = undefined;
|
3148
|
+
}
|
2891
3149
|
|
2892
|
-
|
2893
|
-
|
2894
|
-
|
2895
|
-
|
2896
|
-
|
2897
|
-
|
3150
|
+
/**
|
3151
|
+
@class Binding
|
3152
|
+
@namespace Ember
|
3153
|
+
@deprecated See http://emberjs.com/deprecations/v2.x#toc_ember-binding
|
3154
|
+
@public
|
3155
|
+
*/
|
2898
3156
|
|
2899
|
-
Binding.prototype = {
|
2900
3157
|
/**
|
2901
3158
|
This copies the Binding so it can be connected to another object.
|
2902
3159
|
@method copy
|
2903
3160
|
@return {Ember.Binding} `this`
|
2904
3161
|
@public
|
2905
3162
|
*/
|
2906
|
-
|
3163
|
+
|
3164
|
+
Binding.prototype.copy = function copy() {
|
2907
3165
|
var copy = new Binding(this._to, this._from);
|
2908
3166
|
if (this._oneWay) {
|
2909
3167
|
copy._oneWay = true;
|
2910
3168
|
}
|
2911
3169
|
return copy;
|
2912
|
-
}
|
3170
|
+
};
|
2913
3171
|
|
2914
3172
|
// ..........................................................
|
2915
3173
|
// CONFIG
|
@@ -2927,10 +3185,11 @@ enifed('ember-metal/binding', ['exports', 'ember-utils', 'ember-console', 'ember
|
|
2927
3185
|
@return {Ember.Binding} `this`
|
2928
3186
|
@public
|
2929
3187
|
*/
|
2930
|
-
|
3188
|
+
|
3189
|
+
Binding.prototype.from = function from(path) {
|
2931
3190
|
this._from = path;
|
2932
3191
|
return this;
|
2933
|
-
}
|
3192
|
+
};
|
2934
3193
|
|
2935
3194
|
/**
|
2936
3195
|
This will set the `to` property path to the specified value. It will not
|
@@ -2944,10 +3203,11 @@ enifed('ember-metal/binding', ['exports', 'ember-utils', 'ember-console', 'ember
|
|
2944
3203
|
@return {Ember.Binding} `this`
|
2945
3204
|
@public
|
2946
3205
|
*/
|
2947
|
-
|
3206
|
+
|
3207
|
+
Binding.prototype.to = function to(path) {
|
2948
3208
|
this._to = path;
|
2949
3209
|
return this;
|
2950
|
-
}
|
3210
|
+
};
|
2951
3211
|
|
2952
3212
|
/**
|
2953
3213
|
Configures the binding as one way. A one-way binding will relay changes
|
@@ -2958,20 +3218,22 @@ enifed('ember-metal/binding', ['exports', 'ember-utils', 'ember-console', 'ember
|
|
2958
3218
|
@return {Ember.Binding} `this`
|
2959
3219
|
@public
|
2960
3220
|
*/
|
2961
|
-
|
3221
|
+
|
3222
|
+
Binding.prototype.oneWay = function oneWay() {
|
2962
3223
|
this._oneWay = true;
|
2963
3224
|
return this;
|
2964
|
-
}
|
3225
|
+
};
|
2965
3226
|
|
2966
3227
|
/**
|
2967
3228
|
@method toString
|
2968
3229
|
@return {String} string representation of binding
|
2969
3230
|
@public
|
2970
3231
|
*/
|
2971
|
-
|
3232
|
+
|
3233
|
+
Binding.prototype.toString = function toString() {
|
2972
3234
|
var oneWay = this._oneWay ? '[oneWay]' : '';
|
2973
3235
|
return 'Ember.Binding<' + _emberUtils.guidFor(this) + '>(' + this._from + ' -> ' + this._to + ')' + oneWay;
|
2974
|
-
}
|
3236
|
+
};
|
2975
3237
|
|
2976
3238
|
// ..........................................................
|
2977
3239
|
// CONNECT AND SYNC
|
@@ -2986,7 +3248,8 @@ enifed('ember-metal/binding', ['exports', 'ember-utils', 'ember-console', 'ember
|
|
2986
3248
|
@return {Ember.Binding} `this`
|
2987
3249
|
@public
|
2988
3250
|
*/
|
2989
|
-
|
3251
|
+
|
3252
|
+
Binding.prototype.connect = function connect(obj) {
|
2990
3253
|
_emberMetalDebug.assert('Must pass a valid object to Ember.Binding.connect()', !!obj);
|
2991
3254
|
|
2992
3255
|
var fromObj = undefined,
|
@@ -3030,7 +3293,7 @@ enifed('ember-metal/binding', ['exports', 'ember-utils', 'ember-console', 'ember
|
|
3030
3293
|
this._toObj = obj;
|
3031
3294
|
|
3032
3295
|
return this;
|
3033
|
-
}
|
3296
|
+
};
|
3034
3297
|
|
3035
3298
|
/**
|
3036
3299
|
Disconnects the binding instance. Changes will no longer be relayed. You
|
@@ -3039,7 +3302,8 @@ enifed('ember-metal/binding', ['exports', 'ember-utils', 'ember-console', 'ember
|
|
3039
3302
|
@return {Ember.Binding} `this`
|
3040
3303
|
@public
|
3041
3304
|
*/
|
3042
|
-
|
3305
|
+
|
3306
|
+
Binding.prototype.disconnect = function disconnect() {
|
3043
3307
|
_emberMetalDebug.assert('Must pass a valid object to Ember.Binding.disconnect()', !!this._toObj);
|
3044
3308
|
|
3045
3309
|
// Remove an observer on the object so we're no longer notified of
|
@@ -3053,23 +3317,25 @@ enifed('ember-metal/binding', ['exports', 'ember-utils', 'ember-console', 'ember
|
|
3053
3317
|
|
3054
3318
|
this._readyToSync = false; // Disable scheduled syncs...
|
3055
3319
|
return this;
|
3056
|
-
}
|
3320
|
+
};
|
3057
3321
|
|
3058
3322
|
// ..........................................................
|
3059
3323
|
// PRIVATE
|
3060
3324
|
//
|
3061
3325
|
|
3062
3326
|
/* Called when the from side changes. */
|
3063
|
-
|
3327
|
+
|
3328
|
+
Binding.prototype.fromDidChange = function fromDidChange(target) {
|
3064
3329
|
this._scheduleSync('fwd');
|
3065
|
-
}
|
3330
|
+
};
|
3066
3331
|
|
3067
3332
|
/* Called when the to side changes. */
|
3068
|
-
|
3333
|
+
|
3334
|
+
Binding.prototype.toDidChange = function toDidChange(target) {
|
3069
3335
|
this._scheduleSync('back');
|
3070
|
-
}
|
3336
|
+
};
|
3071
3337
|
|
3072
|
-
_scheduleSync
|
3338
|
+
Binding.prototype._scheduleSync = function _scheduleSync(dir) {
|
3073
3339
|
var existingDir = this._direction;
|
3074
3340
|
|
3075
3341
|
// If we haven't scheduled the binding yet, schedule it.
|
@@ -3083,9 +3349,11 @@ enifed('ember-metal/binding', ['exports', 'ember-utils', 'ember-console', 'ember
|
|
3083
3349
|
if (existingDir === 'back' && dir === 'fwd') {
|
3084
3350
|
this._direction = 'fwd';
|
3085
3351
|
}
|
3086
|
-
}
|
3352
|
+
};
|
3353
|
+
|
3354
|
+
Binding.prototype._sync = function _sync() {
|
3355
|
+
var _this = this;
|
3087
3356
|
|
3088
|
-
_sync: function () {
|
3089
3357
|
var log = _emberEnvironment.ENV.LOG_BINDINGS;
|
3090
3358
|
|
3091
3359
|
var toObj = this._toObj;
|
@@ -3106,30 +3374,35 @@ enifed('ember-metal/binding', ['exports', 'ember-utils', 'ember-console', 'ember
|
|
3106
3374
|
|
3107
3375
|
// If we're synchronizing from the remote object...
|
3108
3376
|
if (direction === 'fwd') {
|
3109
|
-
|
3110
|
-
|
3111
|
-
_emberConsole.default.log(' ', this.toString(), '->', fromValue, fromObj);
|
3112
|
-
}
|
3113
|
-
if (this._oneWay) {
|
3114
|
-
_emberMetalProperty_set.trySet(toObj, this._to, fromValue);
|
3115
|
-
} else {
|
3116
|
-
_emberMetalObserver._suspendObserver(toObj, this._to, this, 'toDidChange', function () {
|
3117
|
-
_emberMetalProperty_set.trySet(toObj, this._to, fromValue);
|
3118
|
-
});
|
3119
|
-
}
|
3120
|
-
// If we're synchronizing *to* the remote object.
|
3121
|
-
} else if (direction === 'back') {
|
3122
|
-
var toValue = _emberMetalProperty_get.get(toObj, this._to);
|
3377
|
+
(function () {
|
3378
|
+
var fromValue = _emberMetalProperty_get.get(fromObj, fromPath);
|
3123
3379
|
if (log) {
|
3124
|
-
_emberConsole.default.log(' ',
|
3380
|
+
_emberConsole.default.log(' ', _this.toString(), '->', fromValue, fromObj);
|
3125
3381
|
}
|
3126
|
-
|
3127
|
-
_emberMetalProperty_set.trySet(
|
3128
|
-
}
|
3382
|
+
if (_this._oneWay) {
|
3383
|
+
_emberMetalProperty_set.trySet(toObj, _this._to, fromValue);
|
3384
|
+
} else {
|
3385
|
+
_emberMetalObserver._suspendObserver(toObj, _this._to, _this, 'toDidChange', function () {
|
3386
|
+
_emberMetalProperty_set.trySet(toObj, this._to, fromValue);
|
3387
|
+
});
|
3388
|
+
}
|
3389
|
+
// If we're synchronizing *to* the remote object.
|
3390
|
+
})();
|
3391
|
+
} else if (direction === 'back') {
|
3392
|
+
(function () {
|
3393
|
+
var toValue = _emberMetalProperty_get.get(toObj, _this._to);
|
3394
|
+
if (log) {
|
3395
|
+
_emberConsole.default.log(' ', _this.toString(), '<-', toValue, toObj);
|
3396
|
+
}
|
3397
|
+
_emberMetalObserver._suspendObserver(fromObj, fromPath, _this, 'fromDidChange', function () {
|
3398
|
+
_emberMetalProperty_set.trySet(fromObj, fromPath, toValue);
|
3399
|
+
});
|
3400
|
+
})();
|
3129
3401
|
}
|
3130
|
-
}
|
3402
|
+
};
|
3131
3403
|
|
3132
|
-
|
3404
|
+
return Binding;
|
3405
|
+
})();
|
3133
3406
|
|
3134
3407
|
function fireDeprecations(obj, toPath, fromPath, deprecateGlobal, deprecateOneWay, deprecateAlias) {
|
3135
3408
|
var deprecateGlobalMessage = '`Ember.Binding` is deprecated. Since you' + ' are binding to a global consider using a service instead.';
|
@@ -3437,24 +3710,24 @@ enifed('ember-metal/chains', ['exports', 'ember-utils', 'ember-metal/property_ge
|
|
3437
3710
|
return !(isObject(obj) && obj.isDescriptor && obj._volatile === false);
|
3438
3711
|
}
|
3439
3712
|
|
3440
|
-
|
3441
|
-
|
3442
|
-
|
3443
|
-
|
3444
|
-
|
3445
|
-
|
3713
|
+
var ChainWatchers = (function () {
|
3714
|
+
function ChainWatchers() {
|
3715
|
+
// chain nodes that reference a key in this obj by key
|
3716
|
+
// we only create ChainWatchers when we are going to add them
|
3717
|
+
// so create this upfront
|
3718
|
+
this.chains = new _emberUtils.EmptyObject();
|
3719
|
+
}
|
3446
3720
|
|
3447
|
-
|
3448
|
-
add: function (key, node) {
|
3721
|
+
ChainWatchers.prototype.add = function add(key, node) {
|
3449
3722
|
var nodes = this.chains[key];
|
3450
3723
|
if (nodes === undefined) {
|
3451
3724
|
this.chains[key] = [node];
|
3452
3725
|
} else {
|
3453
3726
|
nodes.push(node);
|
3454
3727
|
}
|
3455
|
-
}
|
3728
|
+
};
|
3456
3729
|
|
3457
|
-
remove
|
3730
|
+
ChainWatchers.prototype.remove = function remove(key, node) {
|
3458
3731
|
var nodes = this.chains[key];
|
3459
3732
|
if (nodes) {
|
3460
3733
|
for (var i = 0; i < nodes.length; i++) {
|
@@ -3464,9 +3737,9 @@ enifed('ember-metal/chains', ['exports', 'ember-utils', 'ember-metal/property_ge
|
|
3464
3737
|
}
|
3465
3738
|
}
|
3466
3739
|
}
|
3467
|
-
}
|
3740
|
+
};
|
3468
3741
|
|
3469
|
-
has
|
3742
|
+
ChainWatchers.prototype.has = function has(key, node) {
|
3470
3743
|
var nodes = this.chains[key];
|
3471
3744
|
if (nodes) {
|
3472
3745
|
for (var i = 0; i < nodes.length; i++) {
|
@@ -3476,24 +3749,25 @@ enifed('ember-metal/chains', ['exports', 'ember-utils', 'ember-metal/property_ge
|
|
3476
3749
|
}
|
3477
3750
|
}
|
3478
3751
|
return false;
|
3479
|
-
}
|
3752
|
+
};
|
3480
3753
|
|
3481
|
-
revalidateAll
|
3754
|
+
ChainWatchers.prototype.revalidateAll = function revalidateAll() {
|
3482
3755
|
for (var key in this.chains) {
|
3483
3756
|
this.notify(key, true, undefined);
|
3484
3757
|
}
|
3485
|
-
}
|
3758
|
+
};
|
3486
3759
|
|
3487
|
-
revalidate
|
3760
|
+
ChainWatchers.prototype.revalidate = function revalidate(key) {
|
3488
3761
|
this.notify(key, true, undefined);
|
3489
|
-
}
|
3762
|
+
};
|
3490
3763
|
|
3491
3764
|
// key: the string key that is part of a path changed
|
3492
3765
|
// revalidate: boolean; the chains that are watching this value should revalidate
|
3493
3766
|
// callback: function that will be called with the object and path that
|
3494
3767
|
// will be/are invalidated by this key change, depending on
|
3495
3768
|
// whether the revalidate flag is passed
|
3496
|
-
|
3769
|
+
|
3770
|
+
ChainWatchers.prototype.notify = function notify(key, revalidate, callback) {
|
3497
3771
|
var nodes = this.chains[key];
|
3498
3772
|
if (nodes === undefined || nodes.length === 0) {
|
3499
3773
|
return;
|
@@ -3519,8 +3793,10 @@ enifed('ember-metal/chains', ['exports', 'ember-utils', 'ember-metal/property_ge
|
|
3519
3793
|
var path = affected[i + 1];
|
3520
3794
|
callback(obj, path);
|
3521
3795
|
}
|
3522
|
-
}
|
3523
|
-
|
3796
|
+
};
|
3797
|
+
|
3798
|
+
return ChainWatchers;
|
3799
|
+
})();
|
3524
3800
|
|
3525
3801
|
function makeChainWatcher() {
|
3526
3802
|
return new ChainWatchers();
|
@@ -3554,71 +3830,48 @@ enifed('ember-metal/chains', ['exports', 'ember-utils', 'ember-metal/property_ge
|
|
3554
3830
|
// A ChainNode watches a single key on an object. If you provide a starting
|
3555
3831
|
// value for the key then the node won't actually watch it. For a root node
|
3556
3832
|
// pass null for parent and key and object for value.
|
3557
|
-
function ChainNode(parent, key, value) {
|
3558
|
-
this._parent = parent;
|
3559
|
-
this._key = key;
|
3560
|
-
|
3561
|
-
// _watching is true when calling get(this._parent, this._key) will
|
3562
|
-
// return the value of this node.
|
3563
|
-
//
|
3564
|
-
// It is false for the root of a chain (because we have no parent)
|
3565
|
-
// and for global paths (because the parent node is the object with
|
3566
|
-
// the observer on it)
|
3567
|
-
this._watching = value === undefined;
|
3568
|
-
|
3569
|
-
this._chains = undefined;
|
3570
|
-
this._object = undefined;
|
3571
|
-
this.count = 0;
|
3572
|
-
|
3573
|
-
this._value = value;
|
3574
|
-
this._paths = {};
|
3575
|
-
if (this._watching) {
|
3576
|
-
var obj = parent.value();
|
3577
3833
|
|
3578
|
-
|
3579
|
-
|
3580
|
-
|
3834
|
+
var ChainNode = (function () {
|
3835
|
+
function ChainNode(parent, key, value) {
|
3836
|
+
this._parent = parent;
|
3837
|
+
this._key = key;
|
3581
3838
|
|
3582
|
-
this.
|
3839
|
+
// _watching is true when calling get(this._parent, this._key) will
|
3840
|
+
// return the value of this node.
|
3841
|
+
//
|
3842
|
+
// It is false for the root of a chain (because we have no parent)
|
3843
|
+
// and for global paths (because the parent node is the object with
|
3844
|
+
// the observer on it)
|
3845
|
+
this._watching = value === undefined;
|
3583
3846
|
|
3584
|
-
|
3585
|
-
|
3586
|
-
|
3847
|
+
this._chains = undefined;
|
3848
|
+
this._object = undefined;
|
3849
|
+
this.count = 0;
|
3587
3850
|
|
3588
|
-
|
3589
|
-
|
3590
|
-
|
3591
|
-
|
3851
|
+
this._value = value;
|
3852
|
+
this._paths = {};
|
3853
|
+
if (this._watching) {
|
3854
|
+
var obj = parent.value();
|
3592
3855
|
|
3593
|
-
|
3856
|
+
if (!isObject(obj)) {
|
3857
|
+
return;
|
3858
|
+
}
|
3594
3859
|
|
3595
|
-
|
3596
|
-
if (meta && meta.proto === obj) {
|
3597
|
-
return;
|
3598
|
-
}
|
3860
|
+
this._object = obj;
|
3599
3861
|
|
3600
|
-
|
3601
|
-
if (isVolatile(obj[key])) {
|
3602
|
-
return _emberMetalProperty_get.get(obj, key);
|
3603
|
-
// Otherwise attempt to get the cached value of the computed property
|
3604
|
-
} else {
|
3605
|
-
var cache = meta.readableCache();
|
3606
|
-
if (cache) {
|
3607
|
-
return _emberMetalComputed.cacheFor.get(cache, key);
|
3608
|
-
}
|
3862
|
+
addChainWatcher(this._object, this._key, this);
|
3609
3863
|
}
|
3610
|
-
|
3864
|
+
}
|
3611
3865
|
|
3612
|
-
|
3613
|
-
value: function () {
|
3866
|
+
ChainNode.prototype.value = function value() {
|
3614
3867
|
if (this._value === undefined && this._watching) {
|
3615
3868
|
var obj = this._parent.value();
|
3616
3869
|
this._value = lazyGet(obj, this._key);
|
3617
3870
|
}
|
3618
3871
|
return this._value;
|
3619
|
-
}
|
3872
|
+
};
|
3620
3873
|
|
3621
|
-
destroy
|
3874
|
+
ChainNode.prototype.destroy = function destroy() {
|
3622
3875
|
if (this._watching) {
|
3623
3876
|
var obj = this._object;
|
3624
3877
|
if (obj) {
|
@@ -3626,10 +3879,11 @@ enifed('ember-metal/chains', ['exports', 'ember-utils', 'ember-metal/property_ge
|
|
3626
3879
|
}
|
3627
3880
|
this._watching = false; // so future calls do nothing
|
3628
3881
|
}
|
3629
|
-
}
|
3882
|
+
};
|
3630
3883
|
|
3631
3884
|
// copies a top level object only
|
3632
|
-
|
3885
|
+
|
3886
|
+
ChainNode.prototype.copy = function copy(obj) {
|
3633
3887
|
var ret = new ChainNode(null, null, obj);
|
3634
3888
|
var paths = this._paths;
|
3635
3889
|
var path = undefined;
|
@@ -3642,11 +3896,12 @@ enifed('ember-metal/chains', ['exports', 'ember-utils', 'ember-metal/property_ge
|
|
3642
3896
|
ret.add(path);
|
3643
3897
|
}
|
3644
3898
|
return ret;
|
3645
|
-
}
|
3899
|
+
};
|
3646
3900
|
|
3647
3901
|
// called on the root node of a chain to setup watchers on the specified
|
3648
3902
|
// path.
|
3649
|
-
|
3903
|
+
|
3904
|
+
ChainNode.prototype.add = function add(path) {
|
3650
3905
|
var paths = this._paths;
|
3651
3906
|
paths[path] = (paths[path] || 0) + 1;
|
3652
3907
|
|
@@ -3654,11 +3909,12 @@ enifed('ember-metal/chains', ['exports', 'ember-utils', 'ember-metal/property_ge
|
|
3654
3909
|
var tail = path.slice(key.length + 1);
|
3655
3910
|
|
3656
3911
|
this.chain(key, tail);
|
3657
|
-
}
|
3912
|
+
};
|
3658
3913
|
|
3659
3914
|
// called on the root node of a chain to teardown watcher on the specified
|
3660
3915
|
// path
|
3661
|
-
|
3916
|
+
|
3917
|
+
ChainNode.prototype.remove = function remove(path) {
|
3662
3918
|
var paths = this._paths;
|
3663
3919
|
if (paths[path] > 0) {
|
3664
3920
|
paths[path]--;
|
@@ -3668,9 +3924,9 @@ enifed('ember-metal/chains', ['exports', 'ember-utils', 'ember-metal/property_ge
|
|
3668
3924
|
var tail = path.slice(key.length + 1);
|
3669
3925
|
|
3670
3926
|
this.unchain(key, tail);
|
3671
|
-
}
|
3927
|
+
};
|
3672
3928
|
|
3673
|
-
chain
|
3929
|
+
ChainNode.prototype.chain = function chain(key, path) {
|
3674
3930
|
var chains = this._chains;
|
3675
3931
|
var node = undefined;
|
3676
3932
|
if (chains === undefined) {
|
@@ -3691,9 +3947,9 @@ enifed('ember-metal/chains', ['exports', 'ember-utils', 'ember-metal/property_ge
|
|
3691
3947
|
path = path.slice(key.length + 1);
|
3692
3948
|
node.chain(key, path);
|
3693
3949
|
}
|
3694
|
-
}
|
3950
|
+
};
|
3695
3951
|
|
3696
|
-
unchain
|
3952
|
+
ChainNode.prototype.unchain = function unchain(key, path) {
|
3697
3953
|
var chains = this._chains;
|
3698
3954
|
var node = chains[key];
|
3699
3955
|
|
@@ -3710,9 +3966,9 @@ enifed('ember-metal/chains', ['exports', 'ember-utils', 'ember-metal/property_ge
|
|
3710
3966
|
chains[node._key] = undefined;
|
3711
3967
|
node.destroy();
|
3712
3968
|
}
|
3713
|
-
}
|
3969
|
+
};
|
3714
3970
|
|
3715
|
-
notify
|
3971
|
+
ChainNode.prototype.notify = function notify(revalidate, affected) {
|
3716
3972
|
if (revalidate && this._watching) {
|
3717
3973
|
var parentValue = this._parent.value();
|
3718
3974
|
|
@@ -3746,9 +4002,9 @@ enifed('ember-metal/chains', ['exports', 'ember-utils', 'ember-metal/property_ge
|
|
3746
4002
|
if (affected && this._parent) {
|
3747
4003
|
this._parent.populateAffected(this._key, 1, affected);
|
3748
4004
|
}
|
3749
|
-
}
|
4005
|
+
};
|
3750
4006
|
|
3751
|
-
populateAffected
|
4007
|
+
ChainNode.prototype.populateAffected = function populateAffected(path, depth, affected) {
|
3752
4008
|
if (this._key) {
|
3753
4009
|
path = this._key + '.' + path;
|
3754
4010
|
}
|
@@ -3760,8 +4016,34 @@ enifed('ember-metal/chains', ['exports', 'ember-utils', 'ember-metal/property_ge
|
|
3760
4016
|
affected.push(this.value(), path);
|
3761
4017
|
}
|
3762
4018
|
}
|
4019
|
+
};
|
4020
|
+
|
4021
|
+
return ChainNode;
|
4022
|
+
})();
|
4023
|
+
|
4024
|
+
function lazyGet(obj, key) {
|
4025
|
+
if (!isObject(obj)) {
|
4026
|
+
return;
|
4027
|
+
}
|
4028
|
+
|
4029
|
+
var meta = _emberMetalMeta.peekMeta(obj);
|
4030
|
+
|
4031
|
+
// check if object meant only to be a prototype
|
4032
|
+
if (meta && meta.proto === obj) {
|
4033
|
+
return;
|
3763
4034
|
}
|
3764
|
-
|
4035
|
+
|
4036
|
+
// Use `get` if the return value is an EachProxy or an uncacheable value.
|
4037
|
+
if (isVolatile(obj[key])) {
|
4038
|
+
return _emberMetalProperty_get.get(obj, key);
|
4039
|
+
// Otherwise attempt to get the cached value of the computed property
|
4040
|
+
} else {
|
4041
|
+
var cache = meta.readableCache();
|
4042
|
+
if (cache) {
|
4043
|
+
return _emberMetalComputed.cacheFor.get(cache, key);
|
4044
|
+
}
|
4045
|
+
}
|
4046
|
+
}
|
3765
4047
|
|
3766
4048
|
function finishChains(obj) {
|
3767
4049
|
// We only create meta if we really have to
|
@@ -4265,8 +4547,8 @@ enifed('ember-metal/computed', ['exports', 'ember-utils', 'ember-metal/debug', '
|
|
4265
4547
|
this.setProperties({ firstName, lastName });
|
4266
4548
|
return value;
|
4267
4549
|
}
|
4268
|
-
})
|
4269
|
-
})
|
4550
|
+
})
|
4551
|
+
});
|
4270
4552
|
|
4271
4553
|
let client = Person.create();
|
4272
4554
|
client.get('firstName'); // 'Betty'
|
@@ -4623,31 +4905,37 @@ enifed("ember-metal/error", ["exports"], function (exports) {
|
|
4623
4905
|
*/
|
4624
4906
|
"use strict";
|
4625
4907
|
|
4626
|
-
|
4908
|
+
var EmberError = (function (_Error) {
|
4909
|
+
babelHelpers.inherits(EmberError, _Error);
|
4627
4910
|
|
4628
|
-
|
4629
|
-
|
4630
|
-
return new EmberError(message);
|
4631
|
-
}
|
4911
|
+
function EmberError(message) {
|
4912
|
+
_Error.call(this);
|
4632
4913
|
|
4633
|
-
|
4914
|
+
if (!(this instanceof EmberError)) {
|
4915
|
+
return new EmberError(message);
|
4916
|
+
}
|
4634
4917
|
|
4635
|
-
|
4636
|
-
|
4637
|
-
|
4638
|
-
|
4918
|
+
var error = Error.call(this, message);
|
4919
|
+
|
4920
|
+
if (Error.captureStackTrace) {
|
4921
|
+
Error.captureStackTrace(this, EmberError);
|
4922
|
+
} else {
|
4923
|
+
this.stack = error.stack;
|
4924
|
+
}
|
4925
|
+
|
4926
|
+
this.description = error.description;
|
4927
|
+
this.fileName = error.fileName;
|
4928
|
+
this.lineNumber = error.lineNumber;
|
4929
|
+
this.message = error.message;
|
4930
|
+
this.name = error.name;
|
4931
|
+
this.number = error.number;
|
4932
|
+
this.code = error.code;
|
4639
4933
|
}
|
4640
4934
|
|
4641
|
-
|
4642
|
-
|
4643
|
-
this.lineNumber = error.lineNumber;
|
4644
|
-
this.message = error.message;
|
4645
|
-
this.name = error.name;
|
4646
|
-
this.number = error.number;
|
4647
|
-
this.code = error.code;
|
4648
|
-
}
|
4935
|
+
return EmberError;
|
4936
|
+
})(Error);
|
4649
4937
|
|
4650
|
-
|
4938
|
+
exports.default = EmberError;
|
4651
4939
|
});
|
4652
4940
|
enifed('ember-metal/error_handler', ['exports', 'ember-console', 'ember-metal/testing'], function (exports, _emberConsole, _emberMetalTesting) {
|
4653
4941
|
'use strict';
|
@@ -4655,7 +4943,6 @@ enifed('ember-metal/error_handler', ['exports', 'ember-console', 'ember-metal/te
|
|
4655
4943
|
exports.getOnerror = getOnerror;
|
4656
4944
|
exports.setOnerror = setOnerror;
|
4657
4945
|
exports.dispatchError = dispatchError;
|
4658
|
-
exports.getDispatchOverride = getDispatchOverride;
|
4659
4946
|
exports.setDispatchOverride = setDispatchOverride;
|
4660
4947
|
|
4661
4948
|
// To maintain stacktrace consistency across browsers
|
@@ -4663,7 +4950,7 @@ enifed('ember-metal/error_handler', ['exports', 'ember-console', 'ember-metal/te
|
|
4663
4950
|
var stack = error.stack;
|
4664
4951
|
var message = error.message;
|
4665
4952
|
|
4666
|
-
if (stack && stack.
|
4953
|
+
if (stack && !stack.includes(message)) {
|
4667
4954
|
stack = message + '\n' + stack;
|
4668
4955
|
}
|
4669
4956
|
|
@@ -4696,10 +4983,6 @@ enifed('ember-metal/error_handler', ['exports', 'ember-console', 'ember-metal/te
|
|
4696
4983
|
|
4697
4984
|
// allows testing adapter to override dispatch
|
4698
4985
|
|
4699
|
-
function getDispatchOverride() {
|
4700
|
-
return dispatchOverride;
|
4701
|
-
}
|
4702
|
-
|
4703
4986
|
function setDispatchOverride(handler) {
|
4704
4987
|
dispatchOverride = handler;
|
4705
4988
|
}
|
@@ -5430,6 +5713,9 @@ enifed('ember-metal/injected_property', ['exports', 'ember-utils', 'ember-metal/
|
|
5430
5713
|
InjectedPropertyPrototype.teardown = ComputedPropertyPrototype.teardown;
|
5431
5714
|
});
|
5432
5715
|
enifed('ember-metal/instrumentation', ['exports', 'ember-environment', 'ember-metal/features'], function (exports, _emberEnvironment, _emberMetalFeatures) {
|
5716
|
+
/* eslint no-console:off */
|
5717
|
+
/* global console */
|
5718
|
+
|
5433
5719
|
'use strict';
|
5434
5720
|
|
5435
5721
|
exports.instrument = instrument;
|
@@ -5566,8 +5852,8 @@ enifed('ember-metal/instrumentation', ['exports', 'ember-environment', 'ember-me
|
|
5566
5852
|
result = payload;
|
5567
5853
|
} finally {
|
5568
5854
|
finalizer();
|
5569
|
-
return result;
|
5570
5855
|
}
|
5856
|
+
return result;
|
5571
5857
|
}
|
5572
5858
|
|
5573
5859
|
function NOOP() {}
|
@@ -5887,8 +6173,6 @@ enifed('ember-metal/is_proxy', ['exports', 'ember-metal/meta'], function (export
|
|
5887
6173
|
enifed('ember-metal/libraries', ['exports', 'ember-metal/debug', 'ember-metal/features'], function (exports, _emberMetalDebug, _emberMetalFeatures) {
|
5888
6174
|
'use strict';
|
5889
6175
|
|
5890
|
-
exports.Libraries = Libraries;
|
5891
|
-
|
5892
6176
|
/**
|
5893
6177
|
Helper class that allows you to register your library with Ember.
|
5894
6178
|
|
@@ -5899,10 +6183,20 @@ enifed('ember-metal/libraries', ['exports', 'ember-metal/debug', 'ember-metal/fe
|
|
5899
6183
|
@private
|
5900
6184
|
*/
|
5901
6185
|
|
5902
|
-
|
5903
|
-
|
5904
|
-
|
5905
|
-
|
6186
|
+
var Libraries = (function () {
|
6187
|
+
function Libraries() {
|
6188
|
+
this._registry = [];
|
6189
|
+
this._coreLibIndex = 0;
|
6190
|
+
}
|
6191
|
+
|
6192
|
+
Libraries.prototype.isRegistered = function isRegistered(name) {
|
6193
|
+
return !!this._getLibraryByName(name);
|
6194
|
+
};
|
6195
|
+
|
6196
|
+
return Libraries;
|
6197
|
+
})();
|
6198
|
+
|
6199
|
+
exports.Libraries = Libraries;
|
5906
6200
|
|
5907
6201
|
Libraries.prototype = {
|
5908
6202
|
constructor: Libraries,
|
@@ -6489,7 +6783,6 @@ enifed('ember-metal/meta', ['exports', 'ember-utils', 'ember-metal/features', 'e
|
|
6489
6783
|
// Remove "use strict"; from transpiled module until
|
6490
6784
|
// https://bugs.webkit.org/show_bug.cgi?id=138038 is fixed
|
6491
6785
|
|
6492
|
-
exports.Meta = Meta;
|
6493
6786
|
exports.deleteMeta = deleteMeta;
|
6494
6787
|
exports.meta = meta;
|
6495
6788
|
|
@@ -6559,144 +6852,280 @@ enifed('ember-metal/meta', ['exports', 'ember-utils', 'ember-metal/features', 'e
|
|
6559
6852
|
var memberNames = Object.keys(members);
|
6560
6853
|
var META_FIELD = '__ember_meta__';
|
6561
6854
|
|
6562
|
-
|
6563
|
-
|
6564
|
-
|
6565
|
-
_emberMetalDebug.runInDebug(function () {
|
6566
|
-
return counters.metaInstantiated++;
|
6567
|
-
});
|
6568
|
-
|
6569
|
-
this._cache = undefined;
|
6570
|
-
this._weak = undefined;
|
6571
|
-
this._watching = undefined;
|
6572
|
-
this._mixins = undefined;
|
6573
|
-
this._bindings = undefined;
|
6574
|
-
this._values = undefined;
|
6575
|
-
this._deps = undefined;
|
6576
|
-
this._chainWatchers = undefined;
|
6577
|
-
this._chains = undefined;
|
6578
|
-
this._tag = undefined;
|
6579
|
-
this._tags = undefined;
|
6580
|
-
|
6581
|
-
// initial value for all flags right now is false
|
6582
|
-
// see FLAGS const for detailed list of flags used
|
6583
|
-
this._flags = 0;
|
6584
|
-
|
6585
|
-
// used only internally
|
6586
|
-
this.source = obj;
|
6587
|
-
|
6588
|
-
// when meta(obj).proto === obj, the object is intended to be only a
|
6589
|
-
// prototype and doesn't need to actually be observable itself
|
6590
|
-
this.proto = undefined;
|
6591
|
-
|
6592
|
-
// The next meta in our inheritance chain. We (will) track this
|
6593
|
-
// explicitly instead of using prototypical inheritance because we
|
6594
|
-
// have detailed knowledge of how each property should really be
|
6595
|
-
// inherited, and we can optimize it much better than JS runtimes.
|
6596
|
-
this.parent = parentMeta;
|
6855
|
+
var Meta = (function () {
|
6856
|
+
function Meta(obj, parentMeta) {
|
6857
|
+
var _this = this;
|
6597
6858
|
|
6598
|
-
if (_emberMetalFeatures.default('ember-glimmer-detect-backtracking-rerender') || _emberMetalFeatures.default('ember-glimmer-allow-backtracking-rerender')) {
|
6599
|
-
this._lastRendered = undefined;
|
6600
6859
|
_emberMetalDebug.runInDebug(function () {
|
6601
|
-
|
6602
|
-
_this._lastRenderedTemplateMap = undefined;
|
6860
|
+
return counters.metaInstantiated++;
|
6603
6861
|
});
|
6862
|
+
|
6863
|
+
this._cache = undefined;
|
6864
|
+
this._weak = undefined;
|
6865
|
+
this._watching = undefined;
|
6866
|
+
this._mixins = undefined;
|
6867
|
+
this._bindings = undefined;
|
6868
|
+
this._values = undefined;
|
6869
|
+
this._deps = undefined;
|
6870
|
+
this._chainWatchers = undefined;
|
6871
|
+
this._chains = undefined;
|
6872
|
+
this._tag = undefined;
|
6873
|
+
this._tags = undefined;
|
6874
|
+
|
6875
|
+
// initial value for all flags right now is false
|
6876
|
+
// see FLAGS const for detailed list of flags used
|
6877
|
+
this._flags = 0;
|
6878
|
+
|
6879
|
+
// used only internally
|
6880
|
+
this.source = obj;
|
6881
|
+
|
6882
|
+
// when meta(obj).proto === obj, the object is intended to be only a
|
6883
|
+
// prototype and doesn't need to actually be observable itself
|
6884
|
+
this.proto = undefined;
|
6885
|
+
|
6886
|
+
// The next meta in our inheritance chain. We (will) track this
|
6887
|
+
// explicitly instead of using prototypical inheritance because we
|
6888
|
+
// have detailed knowledge of how each property should really be
|
6889
|
+
// inherited, and we can optimize it much better than JS runtimes.
|
6890
|
+
this.parent = parentMeta;
|
6891
|
+
|
6892
|
+
if (_emberMetalFeatures.default('ember-glimmer-detect-backtracking-rerender') || _emberMetalFeatures.default('ember-glimmer-allow-backtracking-rerender')) {
|
6893
|
+
this._lastRendered = undefined;
|
6894
|
+
_emberMetalDebug.runInDebug(function () {
|
6895
|
+
_this._lastRenderedReferenceMap = undefined;
|
6896
|
+
_this._lastRenderedTemplateMap = undefined;
|
6897
|
+
});
|
6898
|
+
}
|
6899
|
+
|
6900
|
+
this._initializeListeners();
|
6604
6901
|
}
|
6605
6902
|
|
6606
|
-
|
6607
|
-
|
6903
|
+
Meta.prototype.isInitialized = function isInitialized(obj) {
|
6904
|
+
return this.proto !== obj;
|
6905
|
+
};
|
6608
6906
|
|
6609
|
-
|
6610
|
-
|
6611
|
-
|
6907
|
+
Meta.prototype.destroy = function destroy() {
|
6908
|
+
if (this.isMetaDestroyed()) {
|
6909
|
+
return;
|
6910
|
+
}
|
6612
6911
|
|
6613
|
-
|
6912
|
+
// remove chainWatchers to remove circular references that would prevent GC
|
6913
|
+
var nodes = undefined,
|
6914
|
+
key = undefined,
|
6915
|
+
nodeObject = undefined;
|
6916
|
+
var node = this.readableChains();
|
6917
|
+
if (node) {
|
6918
|
+
NODE_STACK.push(node);
|
6919
|
+
// process tree
|
6920
|
+
while (NODE_STACK.length > 0) {
|
6921
|
+
node = NODE_STACK.pop();
|
6922
|
+
// push children
|
6923
|
+
nodes = node._chains;
|
6924
|
+
if (nodes) {
|
6925
|
+
for (key in nodes) {
|
6926
|
+
if (nodes[key] !== undefined) {
|
6927
|
+
NODE_STACK.push(nodes[key]);
|
6928
|
+
}
|
6929
|
+
}
|
6930
|
+
}
|
6614
6931
|
|
6615
|
-
|
6616
|
-
|
6617
|
-
|
6618
|
-
|
6932
|
+
// remove chainWatcher in node object
|
6933
|
+
if (node._watching) {
|
6934
|
+
nodeObject = node._object;
|
6935
|
+
if (nodeObject) {
|
6936
|
+
var foreignMeta = peekMeta(nodeObject);
|
6937
|
+
// avoid cleaning up chain watchers when both current and
|
6938
|
+
// foreign objects are being destroyed
|
6939
|
+
// if both are being destroyed manual cleanup is not needed
|
6940
|
+
// as they will be GC'ed and no non-destroyed references will
|
6941
|
+
// be remaining
|
6942
|
+
if (foreignMeta && !foreignMeta.isSourceDestroying()) {
|
6943
|
+
_emberMetalChains.removeChainWatcher(nodeObject, node._key, node, foreignMeta);
|
6944
|
+
}
|
6945
|
+
}
|
6946
|
+
}
|
6947
|
+
}
|
6948
|
+
}
|
6619
6949
|
|
6620
|
-
|
6621
|
-
|
6622
|
-
|
6623
|
-
|
6624
|
-
|
6625
|
-
|
6626
|
-
|
6627
|
-
|
6628
|
-
|
6629
|
-
|
6630
|
-
|
6631
|
-
|
6632
|
-
|
6633
|
-
|
6634
|
-
|
6635
|
-
|
6636
|
-
|
6950
|
+
this.setMetaDestroyed();
|
6951
|
+
};
|
6952
|
+
|
6953
|
+
Meta.prototype.isSourceDestroying = function isSourceDestroying() {
|
6954
|
+
return (this._flags & SOURCE_DESTROYING) !== 0;
|
6955
|
+
};
|
6956
|
+
|
6957
|
+
Meta.prototype.setSourceDestroying = function setSourceDestroying() {
|
6958
|
+
this._flags |= SOURCE_DESTROYING;
|
6959
|
+
};
|
6960
|
+
|
6961
|
+
Meta.prototype.isSourceDestroyed = function isSourceDestroyed() {
|
6962
|
+
return (this._flags & SOURCE_DESTROYED) !== 0;
|
6963
|
+
};
|
6964
|
+
|
6965
|
+
Meta.prototype.setSourceDestroyed = function setSourceDestroyed() {
|
6966
|
+
this._flags |= SOURCE_DESTROYED;
|
6967
|
+
};
|
6968
|
+
|
6969
|
+
Meta.prototype.isMetaDestroyed = function isMetaDestroyed() {
|
6970
|
+
return (this._flags & META_DESTROYED) !== 0;
|
6971
|
+
};
|
6972
|
+
|
6973
|
+
Meta.prototype.setMetaDestroyed = function setMetaDestroyed() {
|
6974
|
+
this._flags |= META_DESTROYED;
|
6975
|
+
};
|
6976
|
+
|
6977
|
+
Meta.prototype.isProxy = function isProxy() {
|
6978
|
+
return (this._flags & IS_PROXY) !== 0;
|
6979
|
+
};
|
6980
|
+
|
6981
|
+
Meta.prototype.setProxy = function setProxy() {
|
6982
|
+
this._flags |= IS_PROXY;
|
6983
|
+
};
|
6984
|
+
|
6985
|
+
Meta.prototype._getOrCreateOwnMap = function _getOrCreateOwnMap(key) {
|
6986
|
+
return this[key] || (this[key] = new _emberUtils.EmptyObject());
|
6987
|
+
};
|
6988
|
+
|
6989
|
+
Meta.prototype._getInherited = function _getInherited(key) {
|
6990
|
+
var pointer = this;
|
6991
|
+
while (pointer !== undefined) {
|
6992
|
+
if (pointer[key]) {
|
6993
|
+
return pointer[key];
|
6994
|
+
}
|
6995
|
+
pointer = pointer.parent;
|
6996
|
+
}
|
6997
|
+
};
|
6998
|
+
|
6999
|
+
Meta.prototype._findInherited = function _findInherited(key, subkey) {
|
7000
|
+
var pointer = this;
|
7001
|
+
while (pointer !== undefined) {
|
7002
|
+
var map = pointer[key];
|
7003
|
+
if (map) {
|
7004
|
+
var value = map[subkey];
|
7005
|
+
if (value !== undefined) {
|
7006
|
+
return value;
|
7007
|
+
}
|
7008
|
+
}
|
7009
|
+
pointer = pointer.parent;
|
7010
|
+
}
|
7011
|
+
};
|
7012
|
+
|
7013
|
+
// Implements a member that provides a lazily created map of maps,
|
7014
|
+
// with inheritance at both levels.
|
7015
|
+
|
7016
|
+
Meta.prototype.writeDeps = function writeDeps(subkey, itemkey, value) {
|
7017
|
+
_emberMetalDebug.assert('Cannot call writeDeps after the object is destroyed.', !this.isMetaDestroyed());
|
7018
|
+
|
7019
|
+
var outerMap = this._getOrCreateOwnMap('_deps');
|
7020
|
+
var innerMap = outerMap[subkey];
|
7021
|
+
if (!innerMap) {
|
7022
|
+
innerMap = outerMap[subkey] = new _emberUtils.EmptyObject();
|
7023
|
+
}
|
7024
|
+
innerMap[itemkey] = value;
|
7025
|
+
};
|
7026
|
+
|
7027
|
+
Meta.prototype.peekDeps = function peekDeps(subkey, itemkey) {
|
7028
|
+
var pointer = this;
|
7029
|
+
while (pointer !== undefined) {
|
7030
|
+
var map = pointer._deps;
|
7031
|
+
if (map) {
|
7032
|
+
var value = map[subkey];
|
7033
|
+
if (value) {
|
7034
|
+
if (value[itemkey] !== undefined) {
|
7035
|
+
return value[itemkey];
|
6637
7036
|
}
|
6638
7037
|
}
|
6639
7038
|
}
|
7039
|
+
pointer = pointer.parent;
|
7040
|
+
}
|
7041
|
+
};
|
7042
|
+
|
7043
|
+
Meta.prototype.hasDeps = function hasDeps(subkey) {
|
7044
|
+
var pointer = this;
|
7045
|
+
while (pointer !== undefined) {
|
7046
|
+
if (pointer._deps && pointer._deps[subkey]) {
|
7047
|
+
return true;
|
7048
|
+
}
|
7049
|
+
pointer = pointer.parent;
|
7050
|
+
}
|
7051
|
+
return false;
|
7052
|
+
};
|
7053
|
+
|
7054
|
+
Meta.prototype.forEachInDeps = function forEachInDeps(subkey, fn) {
|
7055
|
+
return this._forEachIn('_deps', subkey, fn);
|
7056
|
+
};
|
6640
7057
|
|
6641
|
-
|
6642
|
-
|
6643
|
-
|
6644
|
-
|
6645
|
-
|
6646
|
-
|
6647
|
-
|
6648
|
-
|
6649
|
-
|
6650
|
-
|
6651
|
-
|
6652
|
-
|
7058
|
+
Meta.prototype._forEachIn = function _forEachIn(key, subkey, fn) {
|
7059
|
+
var pointer = this;
|
7060
|
+
var seen = new _emberUtils.EmptyObject();
|
7061
|
+
var calls = [];
|
7062
|
+
while (pointer !== undefined) {
|
7063
|
+
var map = pointer[key];
|
7064
|
+
if (map) {
|
7065
|
+
var innerMap = map[subkey];
|
7066
|
+
if (innerMap) {
|
7067
|
+
for (var innerKey in innerMap) {
|
7068
|
+
if (!seen[innerKey]) {
|
7069
|
+
seen[innerKey] = true;
|
7070
|
+
calls.push([innerKey, innerMap[innerKey]]);
|
7071
|
+
}
|
6653
7072
|
}
|
6654
7073
|
}
|
6655
7074
|
}
|
7075
|
+
pointer = pointer.parent;
|
6656
7076
|
}
|
6657
|
-
|
7077
|
+
for (var i = 0; i < calls.length; i++) {
|
7078
|
+
var _calls$i = calls[i];
|
7079
|
+
var innerKey = _calls$i[0];
|
7080
|
+
var value = _calls$i[1];
|
6658
7081
|
|
6659
|
-
|
6660
|
-
|
7082
|
+
fn(innerKey, value);
|
7083
|
+
}
|
7084
|
+
};
|
6661
7085
|
|
6662
|
-
|
6663
|
-
|
6664
|
-
}
|
6665
|
-
memberNames.forEach(function (name) {
|
6666
|
-
return members[name](name, Meta);
|
6667
|
-
});
|
7086
|
+
Meta.prototype.readInheritedValue = function readInheritedValue(key, subkey) {
|
7087
|
+
var internalKey = '_' + key;
|
6668
7088
|
|
6669
|
-
|
6670
|
-
return (this._flags & SOURCE_DESTROYING) !== 0;
|
6671
|
-
};
|
7089
|
+
var pointer = this;
|
6672
7090
|
|
6673
|
-
|
6674
|
-
|
6675
|
-
|
7091
|
+
while (pointer !== undefined) {
|
7092
|
+
var map = pointer[internalKey];
|
7093
|
+
if (map) {
|
7094
|
+
var value = map[subkey];
|
7095
|
+
if (value !== undefined || subkey in map) {
|
7096
|
+
return map[subkey];
|
7097
|
+
}
|
7098
|
+
}
|
7099
|
+
pointer = pointer.parent;
|
7100
|
+
}
|
6676
7101
|
|
6677
|
-
|
6678
|
-
|
6679
|
-
};
|
7102
|
+
return UNDEFINED;
|
7103
|
+
};
|
6680
7104
|
|
6681
|
-
|
6682
|
-
|
6683
|
-
|
7105
|
+
Meta.prototype.writeValue = function writeValue(obj, key, value) {
|
7106
|
+
var descriptor = _emberUtils.lookupDescriptor(obj, key);
|
7107
|
+
var isMandatorySetter = descriptor && descriptor.set && descriptor.set.isMandatorySetter;
|
6684
7108
|
|
6685
|
-
|
6686
|
-
|
6687
|
-
|
7109
|
+
if (isMandatorySetter) {
|
7110
|
+
this.writeValues(key, value);
|
7111
|
+
} else {
|
7112
|
+
obj[key] = value;
|
7113
|
+
}
|
7114
|
+
};
|
6688
7115
|
|
6689
|
-
|
6690
|
-
|
6691
|
-
};
|
7116
|
+
return Meta;
|
7117
|
+
})();
|
6692
7118
|
|
6693
|
-
Meta
|
6694
|
-
return (this._flags & IS_PROXY) !== 0;
|
6695
|
-
};
|
7119
|
+
exports.Meta = Meta;
|
6696
7120
|
|
6697
|
-
|
6698
|
-
|
6699
|
-
|
7121
|
+
var NODE_STACK = [];
|
7122
|
+
|
7123
|
+
for (var _name in _emberMetalMeta_listeners.protoMethods) {
|
7124
|
+
Meta.prototype[_name] = _emberMetalMeta_listeners.protoMethods[_name];
|
7125
|
+
}
|
7126
|
+
memberNames.forEach(function (name) {
|
7127
|
+
return members[name](name, Meta);
|
7128
|
+
});
|
6700
7129
|
|
6701
7130
|
// Implements a member that is a lazily created, non-inheritable
|
6702
7131
|
// POJO.
|
@@ -6711,14 +7140,6 @@ enifed('ember-metal/meta', ['exports', 'ember-utils', 'ember-metal/features', 'e
|
|
6711
7140
|
};
|
6712
7141
|
}
|
6713
7142
|
|
6714
|
-
Meta.prototype._getOrCreateOwnMap = function (key) {
|
6715
|
-
var ret = this[key];
|
6716
|
-
if (!ret) {
|
6717
|
-
ret = this[key] = new _emberUtils.EmptyObject();
|
6718
|
-
}
|
6719
|
-
return ret;
|
6720
|
-
};
|
6721
|
-
|
6722
7143
|
// Implements a member that is a lazily created POJO with inheritable
|
6723
7144
|
// values.
|
6724
7145
|
function inheritedMap(name, Meta) {
|
@@ -6768,105 +7189,9 @@ enifed('ember-metal/meta', ['exports', 'ember-utils', 'ember-metal/features', 'e
|
|
6768
7189
|
};
|
6769
7190
|
}
|
6770
7191
|
|
6771
|
-
Meta.prototype._getInherited = function (key) {
|
6772
|
-
var pointer = this;
|
6773
|
-
while (pointer !== undefined) {
|
6774
|
-
if (pointer[key]) {
|
6775
|
-
return pointer[key];
|
6776
|
-
}
|
6777
|
-
pointer = pointer.parent;
|
6778
|
-
}
|
6779
|
-
};
|
6780
|
-
|
6781
|
-
Meta.prototype._findInherited = function (key, subkey) {
|
6782
|
-
var pointer = this;
|
6783
|
-
while (pointer !== undefined) {
|
6784
|
-
var map = pointer[key];
|
6785
|
-
if (map) {
|
6786
|
-
var value = map[subkey];
|
6787
|
-
if (value !== undefined) {
|
6788
|
-
return value;
|
6789
|
-
}
|
6790
|
-
}
|
6791
|
-
pointer = pointer.parent;
|
6792
|
-
}
|
6793
|
-
};
|
6794
|
-
|
6795
7192
|
var UNDEFINED = _emberUtils.symbol('undefined');
|
6796
7193
|
|
6797
7194
|
exports.UNDEFINED = UNDEFINED;
|
6798
|
-
// Implements a member that provides a lazily created map of maps,
|
6799
|
-
// with inheritance at both levels.
|
6800
|
-
Meta.prototype.writeDeps = function writeDeps(subkey, itemkey, value) {
|
6801
|
-
_emberMetalDebug.assert('Cannot call writeDeps after the object is destroyed.', !this.isMetaDestroyed());
|
6802
|
-
|
6803
|
-
var outerMap = this._getOrCreateOwnMap('_deps');
|
6804
|
-
var innerMap = outerMap[subkey];
|
6805
|
-
if (!innerMap) {
|
6806
|
-
innerMap = outerMap[subkey] = new _emberUtils.EmptyObject();
|
6807
|
-
}
|
6808
|
-
innerMap[itemkey] = value;
|
6809
|
-
};
|
6810
|
-
|
6811
|
-
Meta.prototype.peekDeps = function peekDeps(subkey, itemkey) {
|
6812
|
-
var pointer = this;
|
6813
|
-
while (pointer !== undefined) {
|
6814
|
-
var map = pointer._deps;
|
6815
|
-
if (map) {
|
6816
|
-
var value = map[subkey];
|
6817
|
-
if (value) {
|
6818
|
-
if (value[itemkey] !== undefined) {
|
6819
|
-
return value[itemkey];
|
6820
|
-
}
|
6821
|
-
}
|
6822
|
-
}
|
6823
|
-
pointer = pointer.parent;
|
6824
|
-
}
|
6825
|
-
};
|
6826
|
-
|
6827
|
-
Meta.prototype.hasDeps = function hasDeps(subkey) {
|
6828
|
-
var pointer = this;
|
6829
|
-
while (pointer !== undefined) {
|
6830
|
-
if (pointer._deps && pointer._deps[subkey]) {
|
6831
|
-
return true;
|
6832
|
-
}
|
6833
|
-
pointer = pointer.parent;
|
6834
|
-
}
|
6835
|
-
return false;
|
6836
|
-
};
|
6837
|
-
|
6838
|
-
Meta.prototype.forEachInDeps = function forEachInDeps(subkey, fn) {
|
6839
|
-
return this._forEachIn('_deps', subkey, fn);
|
6840
|
-
};
|
6841
|
-
|
6842
|
-
Meta.prototype._forEachIn = function (key, subkey, fn) {
|
6843
|
-
var pointer = this;
|
6844
|
-
var seen = new _emberUtils.EmptyObject();
|
6845
|
-
var calls = [];
|
6846
|
-
while (pointer !== undefined) {
|
6847
|
-
var map = pointer[key];
|
6848
|
-
if (map) {
|
6849
|
-
var innerMap = map[subkey];
|
6850
|
-
if (innerMap) {
|
6851
|
-
for (var innerKey in innerMap) {
|
6852
|
-
if (!seen[innerKey]) {
|
6853
|
-
seen[innerKey] = true;
|
6854
|
-
calls.push([innerKey, innerMap[innerKey]]);
|
6855
|
-
}
|
6856
|
-
}
|
6857
|
-
}
|
6858
|
-
}
|
6859
|
-
pointer = pointer.parent;
|
6860
|
-
}
|
6861
|
-
for (var i = 0; i < calls.length; i++) {
|
6862
|
-
var _calls$i = calls[i];
|
6863
|
-
var innerKey = _calls$i[0];
|
6864
|
-
var value = _calls$i[1];
|
6865
|
-
|
6866
|
-
fn(innerKey, value);
|
6867
|
-
}
|
6868
|
-
};
|
6869
|
-
|
6870
7195
|
// Implements a member that provides a non-heritable, lazily-created
|
6871
7196
|
// object using the method you provide.
|
6872
7197
|
function ownCustomObject(name, Meta) {
|
@@ -7273,7 +7598,6 @@ enifed('ember-metal/mixin', ['exports', 'ember-utils', 'ember-metal/error', 'emb
|
|
7273
7598
|
*/
|
7274
7599
|
exports.detectBinding = detectBinding;
|
7275
7600
|
exports.mixin = mixin;
|
7276
|
-
exports.default = Mixin;
|
7277
7601
|
exports.hasUnprocessedMixins = hasUnprocessedMixins;
|
7278
7602
|
exports.clearUnprocessedMixins = clearUnprocessedMixins;
|
7279
7603
|
exports.required = required;
|
@@ -7285,7 +7609,9 @@ enifed('ember-metal/mixin', ['exports', 'ember-utils', 'ember-metal/error', 'emb
|
|
7285
7609
|
function ROOT() {}
|
7286
7610
|
ROOT.__hasSuper = false;
|
7287
7611
|
|
7288
|
-
var a_slice =
|
7612
|
+
var a_slice = Array.prototype.slice;
|
7613
|
+
var a_concat = Array.prototype.concat;
|
7614
|
+
var isArray = Array.isArray;
|
7289
7615
|
|
7290
7616
|
function isMethod(obj) {
|
7291
7617
|
return 'function' === typeof obj && obj.isMethod !== false && obj !== Boolean && obj !== Object && obj !== Number && obj !== Array && obj !== Date && obj !== String;
|
@@ -7309,14 +7635,11 @@ enifed('ember-metal/mixin', ['exports', 'ember-utils', 'ember-metal/error', 'emb
|
|
7309
7635
|
}
|
7310
7636
|
|
7311
7637
|
function concatenatedMixinProperties(concatProp, props, values, base) {
|
7312
|
-
var concats = undefined;
|
7313
|
-
|
7314
7638
|
// reset before adding each new mixin to pickup concats from previous
|
7315
|
-
concats = values[concatProp] || base[concatProp];
|
7639
|
+
var concats = values[concatProp] || base[concatProp];
|
7316
7640
|
if (props[concatProp]) {
|
7317
|
-
concats = concats ?
|
7641
|
+
concats = concats ? a_concat.call(concats, props[concatProp]) : props[concatProp];
|
7318
7642
|
}
|
7319
|
-
|
7320
7643
|
return concats;
|
7321
7644
|
}
|
7322
7645
|
|
@@ -7383,18 +7706,18 @@ enifed('ember-metal/mixin', ['exports', 'ember-utils', 'ember-metal/error', 'emb
|
|
7383
7706
|
var baseValue = values[key] || obj[key];
|
7384
7707
|
var ret = undefined;
|
7385
7708
|
|
7386
|
-
if (baseValue) {
|
7387
|
-
|
7709
|
+
if (baseValue === null || baseValue === undefined) {
|
7710
|
+
ret = _emberUtils.makeArray(value);
|
7711
|
+
} else {
|
7712
|
+
if (isArray(baseValue)) {
|
7388
7713
|
if (value === null || value === undefined) {
|
7389
7714
|
ret = baseValue;
|
7390
7715
|
} else {
|
7391
|
-
ret =
|
7716
|
+
ret = a_concat.call(baseValue, value);
|
7392
7717
|
}
|
7393
7718
|
} else {
|
7394
|
-
ret = _emberUtils.makeArray(baseValue)
|
7719
|
+
ret = a_concat.call(_emberUtils.makeArray(baseValue), value);
|
7395
7720
|
}
|
7396
|
-
} else {
|
7397
|
-
ret = _emberUtils.makeArray(value);
|
7398
7721
|
}
|
7399
7722
|
|
7400
7723
|
_emberMetalDebug.runInDebug(function () {
|
@@ -7413,7 +7736,7 @@ enifed('ember-metal/mixin', ['exports', 'ember-utils', 'ember-metal/error', 'emb
|
|
7413
7736
|
var baseValue = values[key] || obj[key];
|
7414
7737
|
|
7415
7738
|
_emberMetalDebug.runInDebug(function () {
|
7416
|
-
if (
|
7739
|
+
if (isArray(value)) {
|
7417
7740
|
// use conditional to avoid stringifying every time
|
7418
7741
|
_emberMetalDebug.assert('You passed in `' + JSON.stringify(value) + '` as the value for `' + key + '` but `' + key + '` cannot be an Array', false);
|
7419
7742
|
}
|
@@ -7740,41 +8063,86 @@ enifed('ember-metal/mixin', ['exports', 'ember-utils', 'ember-metal/error', 'emb
|
|
7740
8063
|
@public
|
7741
8064
|
*/
|
7742
8065
|
|
7743
|
-
|
7744
|
-
|
8066
|
+
var Mixin = (function () {
|
8067
|
+
function Mixin(args, properties) {
|
8068
|
+
this.properties = properties;
|
8069
|
+
|
8070
|
+
var length = args && args.length;
|
8071
|
+
|
8072
|
+
if (length > 0) {
|
8073
|
+
var m = new Array(length);
|
8074
|
+
|
8075
|
+
for (var i = 0; i < length; i++) {
|
8076
|
+
var x = args[i];
|
8077
|
+
if (x instanceof Mixin) {
|
8078
|
+
m[i] = x;
|
8079
|
+
} else {
|
8080
|
+
m[i] = new Mixin(undefined, x);
|
8081
|
+
}
|
8082
|
+
}
|
8083
|
+
|
8084
|
+
this.mixins = m;
|
8085
|
+
} else {
|
8086
|
+
this.mixins = undefined;
|
8087
|
+
}
|
8088
|
+
this.ownerConstructor = undefined;
|
8089
|
+
this._without = undefined;
|
8090
|
+
this[_emberUtils.GUID_KEY] = null;
|
8091
|
+
this[_emberUtils.NAME_KEY] = null;
|
8092
|
+
_emberMetalDebug.debugSeal(this);
|
8093
|
+
}
|
8094
|
+
|
8095
|
+
Mixin.applyPartial = function applyPartial(obj) {
|
8096
|
+
var args = a_slice.call(arguments, 1);
|
8097
|
+
return applyMixin(obj, args, true);
|
8098
|
+
};
|
8099
|
+
|
8100
|
+
/**
|
8101
|
+
@method create
|
8102
|
+
@static
|
8103
|
+
@param arguments*
|
8104
|
+
@public
|
8105
|
+
*/
|
8106
|
+
|
8107
|
+
Mixin.create = function create() {
|
8108
|
+
// ES6TODO: this relies on a global state?
|
8109
|
+
unprocessedFlag = true;
|
8110
|
+
var M = this;
|
8111
|
+
|
8112
|
+
for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
|
8113
|
+
args[_key2] = arguments[_key2];
|
8114
|
+
}
|
8115
|
+
|
8116
|
+
return new M(args, undefined);
|
8117
|
+
};
|
8118
|
+
|
8119
|
+
// returns the mixins currently applied to the specified object
|
8120
|
+
// TODO: Make Ember.mixin
|
8121
|
+
|
8122
|
+
Mixin.mixins = function mixins(obj) {
|
8123
|
+
var m = _emberMetalMeta.peekMeta(obj);
|
8124
|
+
var ret = [];
|
8125
|
+
if (!m) {
|
8126
|
+
return ret;
|
8127
|
+
}
|
7745
8128
|
|
7746
|
-
|
8129
|
+
m.forEachMixins(function (key, currentMixin) {
|
8130
|
+
// skip primitive mixins since these are always anonymous
|
8131
|
+
if (!currentMixin.properties) {
|
8132
|
+
ret.push(currentMixin);
|
8133
|
+
}
|
8134
|
+
});
|
7747
8135
|
|
7748
|
-
|
7749
|
-
|
8136
|
+
return ret;
|
8137
|
+
};
|
7750
8138
|
|
7751
|
-
|
7752
|
-
|
7753
|
-
if (x instanceof Mixin) {
|
7754
|
-
m[i] = x;
|
7755
|
-
} else {
|
7756
|
-
m[i] = new Mixin(undefined, x);
|
7757
|
-
}
|
7758
|
-
}
|
8139
|
+
return Mixin;
|
8140
|
+
})();
|
7759
8141
|
|
7760
|
-
|
7761
|
-
} else {
|
7762
|
-
this.mixins = undefined;
|
7763
|
-
}
|
7764
|
-
this.ownerConstructor = undefined;
|
7765
|
-
this._without = undefined;
|
7766
|
-
this[_emberUtils.GUID_KEY] = null;
|
7767
|
-
this[_emberUtils.NAME_KEY] = null;
|
7768
|
-
_emberMetalDebug.debugSeal(this);
|
7769
|
-
}
|
8142
|
+
exports.default = Mixin;
|
7770
8143
|
|
7771
8144
|
Mixin._apply = applyMixin;
|
7772
8145
|
|
7773
|
-
Mixin.applyPartial = function (obj) {
|
7774
|
-
var args = a_slice.call(arguments, 1);
|
7775
|
-
return applyMixin(obj, args, true);
|
7776
|
-
};
|
7777
|
-
|
7778
8146
|
Mixin.finishPartial = finishPartial;
|
7779
8147
|
|
7780
8148
|
var unprocessedFlag = false;
|
@@ -7787,24 +8155,6 @@ enifed('ember-metal/mixin', ['exports', 'ember-utils', 'ember-metal/error', 'emb
|
|
7787
8155
|
unprocessedFlag = false;
|
7788
8156
|
}
|
7789
8157
|
|
7790
|
-
/**
|
7791
|
-
@method create
|
7792
|
-
@static
|
7793
|
-
@param arguments*
|
7794
|
-
@public
|
7795
|
-
*/
|
7796
|
-
Mixin.create = function () {
|
7797
|
-
// ES6TODO: this relies on a global state?
|
7798
|
-
unprocessedFlag = true;
|
7799
|
-
var M = this;
|
7800
|
-
|
7801
|
-
for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
|
7802
|
-
args[_key2] = arguments[_key2];
|
7803
|
-
}
|
7804
|
-
|
7805
|
-
return new M(args, undefined);
|
7806
|
-
};
|
7807
|
-
|
7808
8158
|
var MixinPrototype = Mixin.prototype;
|
7809
8159
|
|
7810
8160
|
/**
|
@@ -7938,25 +8288,6 @@ enifed('ember-metal/mixin', ['exports', 'ember-utils', 'ember-metal/error', 'emb
|
|
7938
8288
|
|
7939
8289
|
_emberMetalDebug.debugSeal(MixinPrototype);
|
7940
8290
|
|
7941
|
-
// returns the mixins currently applied to the specified object
|
7942
|
-
// TODO: Make Ember.mixin
|
7943
|
-
Mixin.mixins = function (obj) {
|
7944
|
-
var m = _emberMetalMeta.peekMeta(obj);
|
7945
|
-
var ret = [];
|
7946
|
-
if (!m) {
|
7947
|
-
return ret;
|
7948
|
-
}
|
7949
|
-
|
7950
|
-
m.forEachMixins(function (key, currentMixin) {
|
7951
|
-
// skip primitive mixins since these are always anonymous
|
7952
|
-
if (!currentMixin.properties) {
|
7953
|
-
ret.push(currentMixin);
|
7954
|
-
}
|
7955
|
-
});
|
7956
|
-
|
7957
|
-
return ret;
|
7958
|
-
};
|
7959
|
-
|
7960
8291
|
var REQUIRED = new _emberMetalProperties.Descriptor();
|
7961
8292
|
REQUIRED.toString = function () {
|
7962
8293
|
return '(Required Property)';
|
@@ -8160,7 +8491,6 @@ enifed('ember-metal/mixin', ['exports', 'ember-utils', 'ember-metal/error', 'emb
|
|
8160
8491
|
}
|
8161
8492
|
|
8162
8493
|
exports.Mixin = Mixin;
|
8163
|
-
exports.required = required;
|
8164
8494
|
exports.REQUIRED = REQUIRED;
|
8165
8495
|
});
|
8166
8496
|
enifed('ember-metal/observer', ['exports', 'ember-metal/watching', 'ember-metal/events'], function (exports, _emberMetalWatching, _emberMetalEvents) {
|
@@ -8280,8 +8610,6 @@ enifed('ember-metal/observer', ['exports', 'ember-metal/watching', 'ember-metal/
|
|
8280
8610
|
enifed('ember-metal/observer_set', ['exports', 'ember-utils', 'ember-metal/events'], function (exports, _emberUtils, _emberMetalEvents) {
|
8281
8611
|
'use strict';
|
8282
8612
|
|
8283
|
-
exports.default = ObserverSet;
|
8284
|
-
|
8285
8613
|
/*
|
8286
8614
|
this.observerSet = {
|
8287
8615
|
[senderGuid]: { // variable name: `keySet`
|
@@ -8301,53 +8629,59 @@ enifed('ember-metal/observer_set', ['exports', 'ember-utils', 'ember-metal/event
|
|
8301
8629
|
]
|
8302
8630
|
*/
|
8303
8631
|
|
8304
|
-
|
8305
|
-
|
8306
|
-
|
8632
|
+
var ObserverSet = (function () {
|
8633
|
+
function ObserverSet() {
|
8634
|
+
this.clear();
|
8635
|
+
}
|
8307
8636
|
|
8308
|
-
|
8309
|
-
|
8310
|
-
|
8311
|
-
|
8312
|
-
|
8313
|
-
|
8637
|
+
ObserverSet.prototype.add = function add(sender, keyName, eventName) {
|
8638
|
+
var observerSet = this.observerSet;
|
8639
|
+
var observers = this.observers;
|
8640
|
+
var senderGuid = _emberUtils.guidFor(sender);
|
8641
|
+
var keySet = observerSet[senderGuid];
|
8642
|
+
var index = undefined;
|
8314
8643
|
|
8315
|
-
|
8316
|
-
|
8317
|
-
|
8318
|
-
|
8319
|
-
|
8320
|
-
|
8321
|
-
|
8322
|
-
|
8323
|
-
|
8324
|
-
|
8325
|
-
|
8326
|
-
|
8327
|
-
|
8328
|
-
|
8329
|
-
|
8644
|
+
if (!keySet) {
|
8645
|
+
observerSet[senderGuid] = keySet = {};
|
8646
|
+
}
|
8647
|
+
index = keySet[keyName];
|
8648
|
+
if (index === undefined) {
|
8649
|
+
index = observers.push({
|
8650
|
+
sender: sender,
|
8651
|
+
keyName: keyName,
|
8652
|
+
eventName: eventName,
|
8653
|
+
listeners: []
|
8654
|
+
}) - 1;
|
8655
|
+
keySet[keyName] = index;
|
8656
|
+
}
|
8657
|
+
return observers[index].listeners;
|
8658
|
+
};
|
8330
8659
|
|
8331
|
-
|
8332
|
-
|
8333
|
-
|
8334
|
-
|
8335
|
-
|
8336
|
-
|
8337
|
-
|
8338
|
-
|
8339
|
-
|
8340
|
-
|
8341
|
-
|
8660
|
+
ObserverSet.prototype.flush = function flush() {
|
8661
|
+
var observers = this.observers;
|
8662
|
+
var i = undefined,
|
8663
|
+
observer = undefined,
|
8664
|
+
sender = undefined;
|
8665
|
+
this.clear();
|
8666
|
+
for (i = 0; i < observers.length; ++i) {
|
8667
|
+
observer = observers[i];
|
8668
|
+
sender = observer.sender;
|
8669
|
+
if (sender.isDestroying || sender.isDestroyed) {
|
8670
|
+
continue;
|
8671
|
+
}
|
8672
|
+
_emberMetalEvents.sendEvent(sender, observer.eventName, [sender, observer.keyName], observer.listeners);
|
8342
8673
|
}
|
8343
|
-
|
8344
|
-
}
|
8345
|
-
};
|
8674
|
+
};
|
8346
8675
|
|
8347
|
-
|
8348
|
-
|
8349
|
-
|
8350
|
-
|
8676
|
+
ObserverSet.prototype.clear = function clear() {
|
8677
|
+
this.observerSet = {};
|
8678
|
+
this.observers = [];
|
8679
|
+
};
|
8680
|
+
|
8681
|
+
return ObserverSet;
|
8682
|
+
})();
|
8683
|
+
|
8684
|
+
exports.default = ObserverSet;
|
8351
8685
|
});
|
8352
8686
|
enifed('ember-metal/path_cache', ['exports', 'ember-metal/cache'], function (exports, _emberMetalCache) {
|
8353
8687
|
'use strict';
|
@@ -9270,7 +9604,7 @@ enifed('ember-metal/run_loop', ['exports', 'ember-utils', 'ember-metal/debug', '
|
|
9270
9604
|
|
9271
9605
|
var onErrorTarget = {
|
9272
9606
|
get onerror() {
|
9273
|
-
return _emberMetalError_handler.
|
9607
|
+
return _emberMetalError_handler.getOnerror();
|
9274
9608
|
},
|
9275
9609
|
set onerror(handler) {
|
9276
9610
|
return _emberMetalError_handler.setOnerror(handler);
|
@@ -10704,21 +11038,22 @@ enifed('ember-runtime/compare', ['exports', 'ember-runtime/utils', 'ember-runtim
|
|
10704
11038
|
return spaceship(v.localeCompare(w), 0);
|
10705
11039
|
|
10706
11040
|
case 'array':
|
10707
|
-
|
10708
|
-
|
10709
|
-
|
10710
|
-
|
10711
|
-
|
10712
|
-
var
|
10713
|
-
|
10714
|
-
|
11041
|
+
{
|
11042
|
+
var vLen = v.length;
|
11043
|
+
var wLen = w.length;
|
11044
|
+
var len = Math.min(vLen, wLen);
|
11045
|
+
|
11046
|
+
for (var i = 0; i < len; i++) {
|
11047
|
+
var r = compare(v[i], w[i]);
|
11048
|
+
if (r !== 0) {
|
11049
|
+
return r;
|
11050
|
+
}
|
10715
11051
|
}
|
10716
|
-
}
|
10717
|
-
|
10718
|
-
// all elements are equal now
|
10719
|
-
// shorter array should be ordered first
|
10720
|
-
return spaceship(vLen, wLen);
|
10721
11052
|
|
11053
|
+
// all elements are equal now
|
11054
|
+
// shorter array should be ordered first
|
11055
|
+
return spaceship(vLen, wLen);
|
11056
|
+
}
|
10722
11057
|
case 'instance':
|
10723
11058
|
if (_emberRuntimeMixinsComparable.default && _emberRuntimeMixinsComparable.default.detect(v)) {
|
10724
11059
|
return v.compare(v, w);
|
@@ -11012,16 +11347,16 @@ enifed('ember-runtime/computed/computed_macros', ['exports', 'ember-metal'], fun
|
|
11012
11347
|
|
11013
11348
|
```javascript
|
11014
11349
|
let Hamster = Ember.Object.extend({
|
11015
|
-
|
11350
|
+
satisfied: Ember.computed.equal('percentCarrotsEaten', 100)
|
11016
11351
|
});
|
11017
11352
|
|
11018
11353
|
let hamster = Hamster.create();
|
11019
11354
|
|
11020
|
-
hamster.get('
|
11021
|
-
hamster.set('
|
11022
|
-
hamster.get('
|
11023
|
-
hamster.set('
|
11024
|
-
hamster.get('
|
11355
|
+
hamster.get('satisfied'); // false
|
11356
|
+
hamster.set('percentCarrotsEaten', 100);
|
11357
|
+
hamster.get('satisfied'); // true
|
11358
|
+
hamster.set('percentCarrotsEaten', 50);
|
11359
|
+
hamster.get('satisfied'); // false
|
11025
11360
|
```
|
11026
11361
|
|
11027
11362
|
@method equal
|
@@ -12164,7 +12499,7 @@ enifed('ember-runtime/computed/reduce_computed_macros', ['exports', 'ember-utils
|
|
12164
12499
|
|
12165
12500
|
if (activeObservers) {
|
12166
12501
|
activeObservers.forEach(function (args) {
|
12167
|
-
return _emberMetal.removeObserver.apply(
|
12502
|
+
return _emberMetal.removeObserver.apply(undefined, args);
|
12168
12503
|
});
|
12169
12504
|
}
|
12170
12505
|
|
@@ -12177,7 +12512,7 @@ enifed('ember-runtime/computed/reduce_computed_macros', ['exports', 'ember-utils
|
|
12177
12512
|
|
12178
12513
|
var path = itemsKeyIsAtThis ? '@each.' + prop : itemsKey + '.@each.' + prop;
|
12179
12514
|
var args = [_this5, path, sortPropertyDidChange];
|
12180
|
-
_emberMetal.addObserver.apply(
|
12515
|
+
_emberMetal.addObserver.apply(undefined, args);
|
12181
12516
|
return args;
|
12182
12517
|
});
|
12183
12518
|
|
@@ -13479,9 +13814,7 @@ enifed('ember-runtime/mixins/array', ['exports', 'ember-utils', 'ember-metal', '
|
|
13479
13814
|
}).readOnly(), _Mixin$create.lastObject = _emberMetal.computed(function () {
|
13480
13815
|
return objectAt(this, _emberMetal.get(this, 'length') - 1);
|
13481
13816
|
}).readOnly(), _Mixin$create.contains = function (obj) {
|
13482
|
-
|
13483
|
-
_emberMetal.deprecate('`Enumerable#contains` is deprecated, use `Enumerable#includes` instead.', false, { id: 'ember-runtime.enumerable-contains', until: '3.0.0', url: 'http://emberjs.com/deprecations/v2.x#toc_enumerable-contains' });
|
13484
|
-
}
|
13817
|
+
_emberMetal.deprecate('`Enumerable#contains` is deprecated, use `Enumerable#includes` instead.', false, { id: 'ember-runtime.enumerable-contains', until: '3.0.0', url: 'http://emberjs.com/deprecations/v2.x#toc_enumerable-contains' });
|
13485
13818
|
|
13486
13819
|
return this.indexOf(obj) >= 0;
|
13487
13820
|
}, _Mixin$create.slice = function (beginIndex, endIndex) {
|
@@ -13555,6 +13888,27 @@ enifed('ember-runtime/mixins/array', ['exports', 'ember-utils', 'ember-metal', '
|
|
13555
13888
|
return arrayContentWillChange(this, startIdx, removeAmt, addAmt);
|
13556
13889
|
}, _Mixin$create.arrayContentDidChange = function (startIdx, removeAmt, addAmt) {
|
13557
13890
|
return arrayContentDidChange(this, startIdx, removeAmt, addAmt);
|
13891
|
+
}, _Mixin$create.includes = function (obj, startAt) {
|
13892
|
+
var len = _emberMetal.get(this, 'length');
|
13893
|
+
|
13894
|
+
if (startAt === undefined) {
|
13895
|
+
startAt = 0;
|
13896
|
+
}
|
13897
|
+
|
13898
|
+
if (startAt < 0) {
|
13899
|
+
startAt += len;
|
13900
|
+
}
|
13901
|
+
|
13902
|
+
for (var idx = startAt; idx < len; idx++) {
|
13903
|
+
var currentObj = objectAt(this, idx);
|
13904
|
+
|
13905
|
+
// SameValueZero comparison (NaN !== NaN)
|
13906
|
+
if (obj === currentObj || obj !== obj && currentObj !== currentObj) {
|
13907
|
+
return true;
|
13908
|
+
}
|
13909
|
+
}
|
13910
|
+
|
13911
|
+
return false;
|
13558
13912
|
}, _Mixin$create['@each'] = _emberMetal.computed(function () {
|
13559
13913
|
// TODO use Symbol or add to meta
|
13560
13914
|
if (!this.__each) {
|
@@ -13564,55 +13918,6 @@ enifed('ember-runtime/mixins/array', ['exports', 'ember-utils', 'ember-metal', '
|
|
13564
13918
|
return this.__each;
|
13565
13919
|
}).volatile().readOnly(), _Mixin$create));
|
13566
13920
|
|
13567
|
-
if (_emberMetal.isFeatureEnabled('ember-runtime-enumerable-includes')) {
|
13568
|
-
ArrayMixin.reopen({
|
13569
|
-
/**
|
13570
|
-
Returns `true` if the passed object can be found in the array.
|
13571
|
-
This method is a Polyfill for ES 2016 Array.includes.
|
13572
|
-
If no `startAt` argument is given, the starting location to
|
13573
|
-
search is 0. If it's negative, searches from the index of
|
13574
|
-
`this.length + startAt` by asc.
|
13575
|
-
```javascript
|
13576
|
-
[1, 2, 3].includes(2); // true
|
13577
|
-
[1, 2, 3].includes(4); // false
|
13578
|
-
[1, 2, 3].includes(3, 2); // true
|
13579
|
-
[1, 2, 3].includes(3, 3); // false
|
13580
|
-
[1, 2, 3].includes(3, -1); // true
|
13581
|
-
[1, 2, 3].includes(1, -1); // false
|
13582
|
-
[1, 2, 3].includes(1, -4); // true
|
13583
|
-
[1, 2, NaN].includes(NaN); // true
|
13584
|
-
```
|
13585
|
-
@method includes
|
13586
|
-
@param {Object} obj The object to search for.
|
13587
|
-
@param {Number} startAt optional starting location to search, default 0
|
13588
|
-
@return {Boolean} `true` if object is found in the array.
|
13589
|
-
@public
|
13590
|
-
*/
|
13591
|
-
includes: function (obj, startAt) {
|
13592
|
-
var len = _emberMetal.get(this, 'length');
|
13593
|
-
|
13594
|
-
if (startAt === undefined) {
|
13595
|
-
startAt = 0;
|
13596
|
-
}
|
13597
|
-
|
13598
|
-
if (startAt < 0) {
|
13599
|
-
startAt += len;
|
13600
|
-
}
|
13601
|
-
|
13602
|
-
for (var idx = startAt; idx < len; idx++) {
|
13603
|
-
var currentObj = objectAt(this, idx);
|
13604
|
-
|
13605
|
-
// SameValueZero comparison (NaN !== NaN)
|
13606
|
-
if (obj === currentObj || obj !== obj && currentObj !== currentObj) {
|
13607
|
-
return true;
|
13608
|
-
}
|
13609
|
-
}
|
13610
|
-
|
13611
|
-
return false;
|
13612
|
-
}
|
13613
|
-
});
|
13614
|
-
}
|
13615
|
-
|
13616
13921
|
exports.default = ArrayMixin;
|
13617
13922
|
});
|
13618
13923
|
// ES6TODO: Ember.A
|
@@ -13808,6 +14113,29 @@ enifed('ember-runtime/mixins/array', ['exports', 'ember-utils', 'ember-metal', '
|
|
13808
14113
|
@public
|
13809
14114
|
*/
|
13810
14115
|
|
14116
|
+
/**
|
14117
|
+
Returns `true` if the passed object can be found in the array.
|
14118
|
+
This method is a Polyfill for ES 2016 Array.includes.
|
14119
|
+
If no `startAt` argument is given, the starting location to
|
14120
|
+
search is 0. If it's negative, searches from the index of
|
14121
|
+
`this.length + startAt` by asc.
|
14122
|
+
```javascript
|
14123
|
+
[1, 2, 3].includes(2); // true
|
14124
|
+
[1, 2, 3].includes(4); // false
|
14125
|
+
[1, 2, 3].includes(3, 2); // true
|
14126
|
+
[1, 2, 3].includes(3, 3); // false
|
14127
|
+
[1, 2, 3].includes(3, -1); // true
|
14128
|
+
[1, 2, 3].includes(1, -1); // false
|
14129
|
+
[1, 2, 3].includes(1, -4); // true
|
14130
|
+
[1, 2, NaN].includes(NaN); // true
|
14131
|
+
```
|
14132
|
+
@method includes
|
14133
|
+
@param {Object} obj The object to search for.
|
14134
|
+
@param {Number} startAt optional starting location to search, default 0
|
14135
|
+
@return {Boolean} `true` if object is found in the array.
|
14136
|
+
@public
|
14137
|
+
*/
|
14138
|
+
|
13811
14139
|
/**
|
13812
14140
|
Returns a special object that can be used to observe individual properties
|
13813
14141
|
on the array. Just get an equivalent property on this object and it will
|
@@ -13867,13 +14195,15 @@ enifed('ember-runtime/mixins/comparable', ['exports', 'ember-metal'], function (
|
|
13867
14195
|
compare: null
|
13868
14196
|
});
|
13869
14197
|
});
|
13870
|
-
enifed('ember-runtime/mixins/container_proxy', ['exports', 'ember-metal'], function (exports, _emberMetal) {
|
14198
|
+
enifed('ember-runtime/mixins/container_proxy', ['exports', 'ember-metal', 'container'], function (exports, _emberMetal, _container) {
|
13871
14199
|
/**
|
13872
14200
|
@module ember
|
13873
14201
|
@submodule ember-runtime
|
13874
14202
|
*/
|
13875
14203
|
'use strict';
|
13876
14204
|
|
14205
|
+
var _containerProxyMixin;
|
14206
|
+
|
13877
14207
|
/**
|
13878
14208
|
ContainerProxyMixin is used to provide public access to specific
|
13879
14209
|
container functionality.
|
@@ -13881,7 +14211,7 @@ enifed('ember-runtime/mixins/container_proxy', ['exports', 'ember-metal'], funct
|
|
13881
14211
|
@class ContainerProxyMixin
|
13882
14212
|
@private
|
13883
14213
|
*/
|
13884
|
-
|
14214
|
+
var containerProxyMixin = (_containerProxyMixin = {
|
13885
14215
|
/**
|
13886
14216
|
The container stores state.
|
13887
14217
|
@private
|
@@ -13902,6 +14232,7 @@ enifed('ember-runtime/mixins/container_proxy', ['exports', 'ember-metal'], funct
|
|
13902
14232
|
```
|
13903
14233
|
@public
|
13904
14234
|
@method ownerInjection
|
14235
|
+
@since 2.3.0
|
13905
14236
|
@return {Object}
|
13906
14237
|
*/
|
13907
14238
|
ownerInjection: function () {
|
@@ -13952,34 +14283,51 @@ enifed('ember-runtime/mixins/container_proxy', ['exports', 'ember-metal'], funct
|
|
13952
14283
|
*/
|
13953
14284
|
_lookupFactory: function (fullName, options) {
|
13954
14285
|
return this.__container__.lookupFactory(fullName, options);
|
13955
|
-
}
|
14286
|
+
}
|
13956
14287
|
|
13957
|
-
|
13958
|
-
|
13959
|
-
@private
|
13960
|
-
@method _resolveLocalLookupName
|
13961
|
-
@param {String} fullName
|
13962
|
-
@param {String} source
|
13963
|
-
@return {String}
|
13964
|
-
*/
|
13965
|
-
_resolveLocalLookupName: function (name, source) {
|
13966
|
-
return this.__container__.registry.expandLocalLookup('component:' + name, {
|
13967
|
-
source: source
|
13968
|
-
});
|
13969
|
-
},
|
14288
|
+
}, _containerProxyMixin[_container.FACTORY_FOR] = function () {
|
14289
|
+
var _container__;
|
13970
14290
|
|
13971
|
-
|
13972
|
-
|
13973
|
-
|
13974
|
-
willDestroy: function () {
|
13975
|
-
this._super.apply(this, arguments);
|
14291
|
+
return (_container__ = this.__container__)[_container.FACTORY_FOR].apply(_container__, arguments);
|
14292
|
+
}, _containerProxyMixin[_container.LOOKUP_FACTORY] = function () {
|
14293
|
+
var _container__2;
|
13976
14294
|
|
13977
|
-
|
13978
|
-
|
13979
|
-
|
14295
|
+
return (_container__2 = this.__container__)[_container.LOOKUP_FACTORY].apply(_container__2, arguments);
|
14296
|
+
}, _containerProxyMixin._resolveLocalLookupName = function (name, source) {
|
14297
|
+
return this.__container__.registry.expandLocalLookup('component:' + name, {
|
14298
|
+
source: source
|
14299
|
+
});
|
14300
|
+
}, _containerProxyMixin.willDestroy = function () {
|
14301
|
+
this._super.apply(this, arguments);
|
14302
|
+
|
14303
|
+
if (this.__container__) {
|
14304
|
+
_emberMetal.run(this.__container__, 'destroy');
|
13980
14305
|
}
|
13981
|
-
});
|
14306
|
+
}, _containerProxyMixin);
|
14307
|
+
|
14308
|
+
if (_emberMetal.isFeatureEnabled('ember-factory-for')) {
|
14309
|
+
containerProxyMixin.factoryFor = function ContainerProxyMixin_factoryFor(fullName) {
|
14310
|
+
var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];
|
14311
|
+
|
14312
|
+
return this.__container__.factoryFor(fullName, options);
|
14313
|
+
};
|
14314
|
+
}
|
14315
|
+
|
14316
|
+
exports.default = _emberMetal.Mixin.create(containerProxyMixin);
|
13982
14317
|
});
|
14318
|
+
|
14319
|
+
/**
|
14320
|
+
Given a name and a source path, resolve the fullName
|
14321
|
+
@private
|
14322
|
+
@method _resolveLocalLookupName
|
14323
|
+
@param {String} fullName
|
14324
|
+
@param {String} source
|
14325
|
+
@return {String}
|
14326
|
+
*/
|
14327
|
+
|
14328
|
+
/**
|
14329
|
+
@private
|
14330
|
+
*/
|
13983
14331
|
enifed('ember-runtime/mixins/controller', ['exports', 'ember-metal', 'ember-runtime/mixins/action_handler', 'ember-runtime/mixins/controller_content_model_alias_deprecation'], function (exports, _emberMetal, _emberRuntimeMixinsAction_handler, _emberRuntimeMixinsController_content_model_alias_deprecation) {
|
13984
14332
|
'use strict';
|
13985
14333
|
|
@@ -14324,9 +14672,7 @@ enifed('ember-runtime/mixins/enumerable', ['exports', 'ember-utils', 'ember-meta
|
|
14324
14672
|
@public
|
14325
14673
|
*/
|
14326
14674
|
contains: function (obj) {
|
14327
|
-
|
14328
|
-
_emberMetal.deprecate('`Enumerable#contains` is deprecated, use `Enumerable#includes` instead.', false, { id: 'ember-runtime.enumerable-contains', until: '3.0.0', url: 'http://emberjs.com/deprecations/v2.x#toc_enumerable-contains' });
|
14329
|
-
}
|
14675
|
+
_emberMetal.deprecate('`Enumerable#contains` is deprecated, use `Enumerable#includes` instead.', false, { id: 'ember-runtime.enumerable-contains', until: '3.0.0', url: 'http://emberjs.com/deprecations/v2.x#toc_enumerable-contains' });
|
14330
14676
|
|
14331
14677
|
var found = this.find(function (item) {
|
14332
14678
|
return item === obj;
|
@@ -14847,14 +15193,15 @@ enifed('ember-runtime/mixins/enumerable', ['exports', 'ember-utils', 'ember-meta
|
|
14847
15193
|
@public
|
14848
15194
|
*/
|
14849
15195
|
without: function (value) {
|
14850
|
-
if (!this.
|
15196
|
+
if (!this.includes(value)) {
|
14851
15197
|
return this; // nothing to do
|
14852
15198
|
}
|
14853
15199
|
|
14854
15200
|
var ret = emberA();
|
14855
15201
|
|
14856
15202
|
this.forEach(function (k) {
|
14857
|
-
|
15203
|
+
// SameValueZero comparison (NaN !== NaN)
|
15204
|
+
if (!(k === value || k !== k && value !== value)) {
|
14858
15205
|
ret[ret.length] = k;
|
14859
15206
|
}
|
14860
15207
|
});
|
@@ -15110,99 +15457,74 @@ enifed('ember-runtime/mixins/enumerable', ['exports', 'ember-utils', 'ember-meta
|
|
15110
15457
|
}
|
15111
15458
|
return 0;
|
15112
15459
|
});
|
15113
|
-
}
|
15114
|
-
});
|
15460
|
+
},
|
15115
15461
|
|
15116
|
-
|
15117
|
-
|
15118
|
-
|
15119
|
-
|
15120
|
-
|
15121
|
-
|
15122
|
-
|
15123
|
-
|
15124
|
-
|
15125
|
-
|
15126
|
-
|
15127
|
-
@public
|
15128
|
-
*/
|
15129
|
-
|
15130
|
-
uniqBy: function (key) {
|
15131
|
-
var ret = emberA();
|
15132
|
-
var seen = new _emberUtils.EmptyObject();
|
15133
|
-
|
15134
|
-
this.forEach(function (item) {
|
15135
|
-
var guid = _emberUtils.guidFor(_emberMetal.get(item, key));
|
15136
|
-
if (!(guid in seen)) {
|
15137
|
-
seen[guid] = true;
|
15138
|
-
ret.push(item);
|
15139
|
-
}
|
15140
|
-
});
|
15462
|
+
/**
|
15463
|
+
Returns a new enumerable that contains only items containing a unique property value.
|
15464
|
+
The default implementation returns an array regardless of the receiver type.
|
15465
|
+
```javascript
|
15466
|
+
let arr = [{ value: 'a' }, { value: 'a' }, { value: 'b' }, { value: 'b' }];
|
15467
|
+
arr.uniqBy('value'); // [{ value: 'a' }, { value: 'b' }]
|
15468
|
+
```
|
15469
|
+
@method uniqBy
|
15470
|
+
@return {Ember.Enumerable}
|
15471
|
+
@public
|
15472
|
+
*/
|
15141
15473
|
|
15142
|
-
|
15143
|
-
|
15144
|
-
|
15145
|
-
}
|
15474
|
+
uniqBy: function (key) {
|
15475
|
+
var ret = emberA();
|
15476
|
+
var seen = new _emberUtils.EmptyObject();
|
15146
15477
|
|
15147
|
-
|
15148
|
-
|
15149
|
-
|
15150
|
-
|
15151
|
-
|
15152
|
-
[1, 2, 3].includes(2); // true
|
15153
|
-
[1, 2, 3].includes(4); // false
|
15154
|
-
[1, 2, undefined].includes(undefined); // true
|
15155
|
-
[1, 2, null].includes(null); // true
|
15156
|
-
[1, 2, NaN].includes(NaN); // true
|
15157
|
-
```
|
15158
|
-
@method includes
|
15159
|
-
@param {Object} obj The object to search for.
|
15160
|
-
@return {Boolean} `true` if object is found in the enumerable.
|
15161
|
-
@public
|
15162
|
-
*/
|
15163
|
-
includes: function (obj) {
|
15164
|
-
_emberMetal.assert('Enumerable#includes cannot accept a second argument "startAt" as enumerable items are unordered.', arguments.length === 1);
|
15165
|
-
|
15166
|
-
var len = _emberMetal.get(this, 'length');
|
15167
|
-
var idx = undefined,
|
15168
|
-
next = undefined;
|
15169
|
-
var last = null;
|
15170
|
-
var found = false;
|
15171
|
-
|
15172
|
-
var context = popCtx();
|
15173
|
-
|
15174
|
-
for (idx = 0; idx < len && !found; idx++) {
|
15175
|
-
next = this.nextObject(idx, last, context);
|
15176
|
-
|
15177
|
-
found = obj === next || obj !== obj && next !== next;
|
15178
|
-
|
15179
|
-
last = next;
|
15478
|
+
this.forEach(function (item) {
|
15479
|
+
var guid = _emberUtils.guidFor(_emberMetal.get(item, key));
|
15480
|
+
if (!(guid in seen)) {
|
15481
|
+
seen[guid] = true;
|
15482
|
+
ret.push(item);
|
15180
15483
|
}
|
15484
|
+
});
|
15181
15485
|
|
15182
|
-
|
15183
|
-
|
15486
|
+
return ret;
|
15487
|
+
},
|
15184
15488
|
|
15185
|
-
|
15186
|
-
|
15489
|
+
/**
|
15490
|
+
Returns `true` if the passed object can be found in the enumerable.
|
15491
|
+
```javascript
|
15492
|
+
[1, 2, 3].includes(2); // true
|
15493
|
+
[1, 2, 3].includes(4); // false
|
15494
|
+
[1, 2, undefined].includes(undefined); // true
|
15495
|
+
[1, 2, null].includes(null); // true
|
15496
|
+
[1, 2, NaN].includes(NaN); // true
|
15497
|
+
```
|
15498
|
+
@method includes
|
15499
|
+
@param {Object} obj The object to search for.
|
15500
|
+
@return {Boolean} `true` if object is found in the enumerable.
|
15501
|
+
@public
|
15502
|
+
*/
|
15503
|
+
includes: function (obj) {
|
15504
|
+
_emberMetal.assert('Enumerable#includes cannot accept a second argument "startAt" as enumerable items are unordered.', arguments.length === 1);
|
15187
15505
|
|
15188
|
-
|
15189
|
-
|
15190
|
-
|
15191
|
-
|
15506
|
+
var len = _emberMetal.get(this, 'length');
|
15507
|
+
var idx = undefined,
|
15508
|
+
next = undefined;
|
15509
|
+
var last = null;
|
15510
|
+
var found = false;
|
15192
15511
|
|
15193
|
-
|
15512
|
+
var context = popCtx();
|
15194
15513
|
|
15195
|
-
|
15196
|
-
|
15197
|
-
if (!(k === value || k !== k && value !== value)) {
|
15198
|
-
ret[ret.length] = k;
|
15199
|
-
}
|
15200
|
-
});
|
15514
|
+
for (idx = 0; idx < len && !found; idx++) {
|
15515
|
+
next = this.nextObject(idx, last, context);
|
15201
15516
|
|
15202
|
-
|
15517
|
+
found = obj === next || obj !== obj && next !== next;
|
15518
|
+
|
15519
|
+
last = next;
|
15203
15520
|
}
|
15204
|
-
|
15205
|
-
|
15521
|
+
|
15522
|
+
next = last = null;
|
15523
|
+
context = pushCtx(context);
|
15524
|
+
|
15525
|
+
return found;
|
15526
|
+
}
|
15527
|
+
});
|
15206
15528
|
|
15207
15529
|
exports.default = Enumerable;
|
15208
15530
|
});
|
@@ -15796,13 +16118,7 @@ enifed('ember-runtime/mixins/mutable_array', ['exports', 'ember-metal', 'ember-r
|
|
15796
16118
|
@public
|
15797
16119
|
*/
|
15798
16120
|
addObject: function (obj) {
|
15799
|
-
var included =
|
15800
|
-
|
15801
|
-
if (_emberMetal.isFeatureEnabled('ember-runtime-enumerable-includes')) {
|
15802
|
-
included = this.includes(obj);
|
15803
|
-
} else {
|
15804
|
-
included = this.contains(obj);
|
15805
|
-
}
|
16121
|
+
var included = this.includes(obj);
|
15806
16122
|
|
15807
16123
|
if (!included) {
|
15808
16124
|
this.pushObject(obj);
|
@@ -16059,7 +16375,7 @@ enifed('ember-runtime/mixins/observable', ['exports', 'ember-metal'], function (
|
|
16059
16375
|
args[_key] = arguments[_key];
|
16060
16376
|
}
|
16061
16377
|
|
16062
|
-
return _emberMetal.getProperties.apply(
|
16378
|
+
return _emberMetal.getProperties.apply(undefined, [this].concat(args));
|
16063
16379
|
},
|
16064
16380
|
|
16065
16381
|
/**
|
@@ -16215,34 +16531,31 @@ enifed('ember-runtime/mixins/observable', ['exports', 'ember-metal'], function (
|
|
16215
16531
|
will be notified. Note that the observers are triggered any time the
|
16216
16532
|
value is set, regardless of whether it has actually changed. Your
|
16217
16533
|
observer should be prepared to handle that.
|
16218
|
-
You can also pass an optional context parameter to this method. The
|
16219
|
-
context will be passed to your observer method whenever it is triggered.
|
16220
|
-
Note that if you add the same target/method pair on a key multiple times
|
16221
|
-
with different context parameters, your observer will only be called once
|
16222
|
-
with the last context you passed.
|
16223
16534
|
### Observer Methods
|
16224
|
-
Observer methods
|
16225
|
-
you do not pass a `context` parameter:
|
16535
|
+
Observer methods have the following signature:
|
16226
16536
|
```javascript
|
16227
|
-
|
16537
|
+
export default Ember.Component.extend({
|
16538
|
+
init() {
|
16539
|
+
this._super(...arguments);
|
16540
|
+
this.addObserver('foo', this, 'fooDidChange');
|
16541
|
+
},
|
16542
|
+
fooDidChange(sender, key, value, rev) {
|
16543
|
+
// your code
|
16544
|
+
}
|
16545
|
+
});
|
16228
16546
|
```
|
16229
|
-
The sender is the object that changed. The key is the property that
|
16230
|
-
changes. The value property is currently reserved and unused. The rev
|
16547
|
+
The `sender` is the object that changed. The `key` is the property that
|
16548
|
+
changes. The `value` property is currently reserved and unused. The `rev`
|
16231
16549
|
is the last property revision of the object when it changed, which you can
|
16232
16550
|
use to detect if the key value has really changed or not.
|
16233
|
-
|
16234
|
-
revision like so:
|
16235
|
-
```javascript
|
16236
|
-
fooDidChange: function(sender, key, value, context, rev) { };
|
16237
|
-
```
|
16238
|
-
Usually you will not need the value, context or revision parameters at
|
16551
|
+
Usually you will not need the value or revision parameters at
|
16239
16552
|
the end. In this case, it is common to write observer methods that take
|
16240
16553
|
only a sender and key value as parameters or, if you aren't interested in
|
16241
16554
|
any of these values, to write an observer that has no parameters at all.
|
16242
16555
|
@method addObserver
|
16243
|
-
@param {String} key The key to
|
16556
|
+
@param {String} key The key to observer
|
16244
16557
|
@param {Object} target The target object to invoke
|
16245
|
-
@param {String|Function} method The method to invoke
|
16558
|
+
@param {String|Function} method The method to invoke.
|
16246
16559
|
@public
|
16247
16560
|
*/
|
16248
16561
|
addObserver: function (key, target, method) {
|
@@ -16254,9 +16567,9 @@ enifed('ember-runtime/mixins/observable', ['exports', 'ember-metal'], function (
|
|
16254
16567
|
the same key, target, and method you passed to `addObserver()` and your
|
16255
16568
|
target will no longer receive notifications.
|
16256
16569
|
@method removeObserver
|
16257
|
-
@param {String} key The key to
|
16570
|
+
@param {String} key The key to observer
|
16258
16571
|
@param {Object} target The target object to invoke
|
16259
|
-
@param {String|Function} method The method to invoke
|
16572
|
+
@param {String|Function} method The method to invoke.
|
16260
16573
|
@public
|
16261
16574
|
*/
|
16262
16575
|
removeObserver: function (key, target, method) {
|
@@ -16933,10 +17246,14 @@ enifed('ember-runtime/mixins/target_action_support', ['exports', 'ember-environm
|
|
16933
17246
|
var ret = undefined;
|
16934
17247
|
|
16935
17248
|
if (target.send) {
|
16936
|
-
|
17249
|
+
var _target;
|
17250
|
+
|
17251
|
+
ret = (_target = target).send.apply(_target, args(actionContext, action));
|
16937
17252
|
} else {
|
17253
|
+
var _target2;
|
17254
|
+
|
16938
17255
|
_emberMetal.assert('The action \'' + action + '\' did not exist on ' + target, typeof target[action] === 'function');
|
16939
|
-
ret = target[action].apply(
|
17256
|
+
ret = (_target2 = target)[action].apply(_target2, args(actionContext));
|
16940
17257
|
}
|
16941
17258
|
|
16942
17259
|
if (ret !== false) {
|
@@ -17402,133 +17719,137 @@ enifed('ember-runtime/system/core_object', ['exports', 'ember-utils', 'ember-met
|
|
17402
17719
|
// possible.
|
17403
17720
|
|
17404
17721
|
var wasApplied = false;
|
17405
|
-
var initProperties;
|
17722
|
+
var initProperties = undefined;
|
17406
17723
|
|
17407
|
-
var Class = function () {
|
17408
|
-
|
17409
|
-
|
17410
|
-
|
17411
|
-
|
17412
|
-
if (arguments.length > 0) {
|
17413
|
-
initProperties = [arguments[0]];
|
17414
|
-
}
|
17724
|
+
var Class = (function () {
|
17725
|
+
function Class() {
|
17726
|
+
if (!wasApplied) {
|
17727
|
+
Class.proto(); // prepare prototype...
|
17728
|
+
}
|
17415
17729
|
|
17416
|
-
|
17417
|
-
|
17418
|
-
|
17419
|
-
m.proto = this;
|
17420
|
-
if (initProperties) {
|
17421
|
-
// capture locally so we can clear the closed over variable
|
17422
|
-
var props = initProperties;
|
17423
|
-
initProperties = null;
|
17730
|
+
if (arguments.length > 0) {
|
17731
|
+
initProperties = [arguments[0]];
|
17732
|
+
}
|
17424
17733
|
|
17425
|
-
|
17426
|
-
var
|
17734
|
+
this.__defineNonEnumerable(_emberUtils.GUID_KEY_PROPERTY);
|
17735
|
+
var m = _emberMetal.meta(this);
|
17736
|
+
var proto = m.proto;
|
17737
|
+
m.proto = this;
|
17738
|
+
if (initProperties) {
|
17739
|
+
// capture locally so we can clear the closed over variable
|
17740
|
+
var props = initProperties;
|
17741
|
+
initProperties = null;
|
17427
17742
|
|
17428
|
-
|
17429
|
-
var
|
17743
|
+
var concatenatedProperties = this.concatenatedProperties;
|
17744
|
+
var mergedProperties = this.mergedProperties;
|
17430
17745
|
|
17431
|
-
|
17746
|
+
for (var i = 0; i < props.length; i++) {
|
17747
|
+
var properties = props[i];
|
17748
|
+
_emberMetal.assert('Ember.Object.create no longer supports mixing in other ' + 'definitions, use .extend & .create separately instead.', !(properties instanceof _emberMetal.Mixin));
|
17432
17749
|
|
17433
|
-
|
17434
|
-
|
17435
|
-
|
17750
|
+
if (typeof properties !== 'object' && properties !== undefined) {
|
17751
|
+
throw new _emberMetal.Error('Ember.Object.create only accepts objects.');
|
17752
|
+
}
|
17436
17753
|
|
17437
|
-
|
17438
|
-
|
17439
|
-
|
17754
|
+
if (!properties) {
|
17755
|
+
continue;
|
17756
|
+
}
|
17440
17757
|
|
17441
|
-
|
17758
|
+
var keyNames = Object.keys(properties);
|
17442
17759
|
|
17443
|
-
|
17444
|
-
|
17445
|
-
|
17760
|
+
for (var j = 0; j < keyNames.length; j++) {
|
17761
|
+
var keyName = keyNames[j];
|
17762
|
+
var value = properties[keyName];
|
17446
17763
|
|
17447
|
-
|
17448
|
-
|
17449
|
-
|
17764
|
+
if (_emberMetal.detectBinding(keyName)) {
|
17765
|
+
m.writeBindings(keyName, value);
|
17766
|
+
}
|
17450
17767
|
|
17451
|
-
|
17452
|
-
|
17768
|
+
var possibleDesc = this[keyName];
|
17769
|
+
var desc = possibleDesc !== null && typeof possibleDesc === 'object' && possibleDesc.isDescriptor ? possibleDesc : undefined;
|
17453
17770
|
|
17454
|
-
|
17455
|
-
|
17456
|
-
|
17771
|
+
_emberMetal.assert('Ember.Object.create no longer supports defining computed ' + 'properties. Define computed properties using extend() or reopen() ' + 'before calling create().', !(value instanceof _emberMetal.ComputedProperty));
|
17772
|
+
_emberMetal.assert('Ember.Object.create no longer supports defining methods that call _super.', !(typeof value === 'function' && value.toString().indexOf('._super') !== -1));
|
17773
|
+
_emberMetal.assert('`actions` must be provided at extend time, not at create time, ' + 'when Ember.ActionHandler is used (i.e. views, controllers & routes).', !(keyName === 'actions' && _emberRuntimeMixinsAction_handler.default.detect(this)));
|
17457
17774
|
|
17458
|
-
|
17459
|
-
|
17775
|
+
if (concatenatedProperties && concatenatedProperties.length > 0 && concatenatedProperties.indexOf(keyName) >= 0) {
|
17776
|
+
var baseValue = this[keyName];
|
17460
17777
|
|
17461
|
-
|
17462
|
-
|
17463
|
-
|
17778
|
+
if (baseValue) {
|
17779
|
+
if ('function' === typeof baseValue.concat) {
|
17780
|
+
value = baseValue.concat(value);
|
17781
|
+
} else {
|
17782
|
+
value = _emberUtils.makeArray(baseValue).concat(value);
|
17783
|
+
}
|
17464
17784
|
} else {
|
17465
|
-
value = _emberUtils.makeArray(
|
17785
|
+
value = _emberUtils.makeArray(value);
|
17466
17786
|
}
|
17467
|
-
} else {
|
17468
|
-
value = _emberUtils.makeArray(value);
|
17469
17787
|
}
|
17470
|
-
}
|
17471
17788
|
|
17472
|
-
|
17473
|
-
|
17789
|
+
if (mergedProperties && mergedProperties.length && mergedProperties.indexOf(keyName) >= 0) {
|
17790
|
+
var originalValue = this[keyName];
|
17474
17791
|
|
17475
|
-
|
17476
|
-
|
17792
|
+
value = _emberUtils.assign({}, originalValue, value);
|
17793
|
+
}
|
17477
17794
|
|
17478
|
-
|
17479
|
-
|
17480
|
-
} else {
|
17481
|
-
if (typeof this.setUnknownProperty === 'function' && !(keyName in this)) {
|
17482
|
-
this.setUnknownProperty(keyName, value);
|
17795
|
+
if (desc) {
|
17796
|
+
desc.set(this, keyName, value);
|
17483
17797
|
} else {
|
17484
|
-
if (
|
17485
|
-
|
17798
|
+
if (typeof this.setUnknownProperty === 'function' && !(keyName in this)) {
|
17799
|
+
this.setUnknownProperty(keyName, value);
|
17486
17800
|
} else {
|
17487
|
-
|
17488
|
-
|
17801
|
+
if (_emberMetal.isFeatureEnabled('mandatory-setter')) {
|
17802
|
+
_emberMetal.defineProperty(this, keyName, null, value); // setup mandatory setter
|
17803
|
+
} else {
|
17804
|
+
this[keyName] = value;
|
17805
|
+
}
|
17806
|
+
}
|
17489
17807
|
}
|
17490
17808
|
}
|
17491
17809
|
}
|
17492
17810
|
}
|
17493
|
-
}
|
17494
17811
|
|
17495
|
-
|
17812
|
+
finishPartial(this, m);
|
17496
17813
|
|
17497
|
-
|
17814
|
+
this.init.apply(this, arguments);
|
17498
17815
|
|
17499
|
-
|
17500
|
-
|
17501
|
-
m.proto = proto;
|
17502
|
-
_emberMetal.finishChains(this);
|
17503
|
-
_emberMetal.sendEvent(this, 'init');
|
17504
|
-
};
|
17816
|
+
this[POST_INIT]();
|
17505
17817
|
|
17506
|
-
|
17507
|
-
|
17508
|
-
|
17509
|
-
Class.PrototypeMixin = _emberMetal.Mixin.create(Class.PrototypeMixin);
|
17818
|
+
m.proto = proto;
|
17819
|
+
_emberMetal.finishChains(this);
|
17820
|
+
_emberMetal.sendEvent(this, 'init');
|
17510
17821
|
}
|
17511
17822
|
|
17512
|
-
|
17513
|
-
|
17823
|
+
Class.willReopen = function willReopen() {
|
17824
|
+
if (wasApplied) {
|
17825
|
+
Class.PrototypeMixin = _emberMetal.Mixin.create(Class.PrototypeMixin);
|
17826
|
+
}
|
17514
17827
|
|
17515
|
-
|
17516
|
-
|
17517
|
-
};
|
17828
|
+
wasApplied = false;
|
17829
|
+
};
|
17518
17830
|
|
17519
|
-
|
17520
|
-
|
17521
|
-
|
17522
|
-
superclass.proto();
|
17523
|
-
}
|
17831
|
+
Class._initProperties = function _initProperties(args) {
|
17832
|
+
initProperties = args;
|
17833
|
+
};
|
17524
17834
|
|
17525
|
-
|
17526
|
-
|
17527
|
-
|
17528
|
-
|
17835
|
+
Class.proto = function proto() {
|
17836
|
+
var superclass = Class.superclass;
|
17837
|
+
if (superclass) {
|
17838
|
+
superclass.proto();
|
17839
|
+
}
|
17529
17840
|
|
17530
|
-
|
17531
|
-
|
17841
|
+
if (!wasApplied) {
|
17842
|
+
wasApplied = true;
|
17843
|
+
Class.PrototypeMixin.applyPartial(Class.prototype);
|
17844
|
+
}
|
17845
|
+
|
17846
|
+
return this.prototype;
|
17847
|
+
};
|
17848
|
+
|
17849
|
+
return Class;
|
17850
|
+
})();
|
17851
|
+
|
17852
|
+
Class.toString = _emberMetal.Mixin.prototype.toString;
|
17532
17853
|
|
17533
17854
|
return Class;
|
17534
17855
|
}
|
@@ -17633,7 +17954,7 @@ enifed('ember-runtime/system/core_object', ['exports', 'ember-utils', 'ember-met
|
|
17633
17954
|
}, _Mixin$create.toString = function () {
|
17634
17955
|
var hasToStringExtension = typeof this.toStringExtension === 'function';
|
17635
17956
|
var extension = hasToStringExtension ? ':' + this.toStringExtension() : '';
|
17636
|
-
var ret = '<' + this.constructor.toString() + ':' + _emberUtils.guidFor(this) + extension + '>';
|
17957
|
+
var ret = '<' + (this[_emberUtils.NAME_KEY] || this.constructor.toString()) + ':' + _emberUtils.guidFor(this) + extension + '>';
|
17637
17958
|
|
17638
17959
|
return ret;
|
17639
17960
|
}, _Mixin$create));
|
@@ -17653,7 +17974,7 @@ enifed('ember-runtime/system/core_object', ['exports', 'ember-utils', 'ember-met
|
|
17653
17974
|
isMethod: false
|
17654
17975
|
}, _ClassMixinProps[_emberUtils.NAME_KEY] = null, _ClassMixinProps[_emberUtils.GUID_KEY] = null, _ClassMixinProps.extend = function () {
|
17655
17976
|
var Class = makeCtor();
|
17656
|
-
var proto;
|
17977
|
+
var proto = undefined;
|
17657
17978
|
Class.ClassMixin = _emberMetal.Mixin.create(this.ClassMixin);
|
17658
17979
|
Class.PrototypeMixin = _emberMetal.Mixin.create(this.PrototypeMixin);
|
17659
17980
|
|
@@ -17709,27 +18030,27 @@ enifed('ember-runtime/system/core_object', ['exports', 'ember-utils', 'ember-met
|
|
17709
18030
|
var possibleDesc = proto[key];
|
17710
18031
|
var desc = possibleDesc !== null && typeof possibleDesc === 'object' && possibleDesc.isDescriptor ? possibleDesc : undefined;
|
17711
18032
|
|
17712
|
-
_emberMetal.assert('metaForProperty() could not find a computed property
|
18033
|
+
_emberMetal.assert('metaForProperty() could not find a computed property with key \'' + key + '\'.', !!desc && desc instanceof _emberMetal.ComputedProperty);
|
17713
18034
|
return desc._meta || {};
|
17714
18035
|
}, _ClassMixinProps._computedProperties = _emberMetal.computed(function () {
|
17715
18036
|
hasCachedComputedProperties = true;
|
17716
18037
|
var proto = this.proto();
|
17717
|
-
var property;
|
18038
|
+
var property = undefined;
|
17718
18039
|
var properties = [];
|
17719
18040
|
|
17720
|
-
for (var
|
17721
|
-
property = proto[
|
18041
|
+
for (var _name in proto) {
|
18042
|
+
property = proto[_name];
|
17722
18043
|
|
17723
18044
|
if (property && property.isDescriptor) {
|
17724
18045
|
properties.push({
|
17725
|
-
name:
|
18046
|
+
name: _name,
|
17726
18047
|
meta: property._meta
|
17727
18048
|
});
|
17728
18049
|
}
|
17729
18050
|
}
|
17730
18051
|
return properties;
|
17731
18052
|
}).readOnly(), _ClassMixinProps.eachComputedProperty = function (callback, binding) {
|
17732
|
-
var property;
|
18053
|
+
var property = undefined;
|
17733
18054
|
var empty = {};
|
17734
18055
|
|
17735
18056
|
var properties = _emberMetal.get(this, '_computedProperties');
|
@@ -17764,7 +18085,8 @@ enifed('ember-runtime/system/core_object', ['exports', 'ember-utils', 'ember-met
|
|
17764
18085
|
ClassMixinProps._lazyInjections = function () {
|
17765
18086
|
var injections = {};
|
17766
18087
|
var proto = this.proto();
|
17767
|
-
var key
|
18088
|
+
var key = undefined;
|
18089
|
+
var desc = undefined;
|
17768
18090
|
|
17769
18091
|
for (key in proto) {
|
17770
18092
|
desc = proto[key];
|
@@ -18020,7 +18342,7 @@ enifed('ember-runtime/system/core_object', ['exports', 'ember-utils', 'ember-met
|
|
18020
18342
|
```javascript
|
18021
18343
|
const Person = Ember.Object.extend({
|
18022
18344
|
say(thing) {
|
18023
|
-
|
18345
|
+
let name = this.get('name');
|
18024
18346
|
alert(`${name} says: ${thing}`);
|
18025
18347
|
}
|
18026
18348
|
});
|
@@ -18175,7 +18497,7 @@ enifed('ember-runtime/system/core_object', ['exports', 'ember-utils', 'ember-met
|
|
18175
18497
|
You can pass a hash of these values to a computed property like this:
|
18176
18498
|
```javascript
|
18177
18499
|
person: Ember.computed(function() {
|
18178
|
-
|
18500
|
+
let personId = this.get('personId');
|
18179
18501
|
return Person.create({ id: personId });
|
18180
18502
|
}).meta({ type: Person })
|
18181
18503
|
```
|
@@ -18640,6 +18962,8 @@ enifed('ember-runtime/system/native_array', ['exports', 'ember-metal', 'ember-en
|
|
18640
18962
|
*/
|
18641
18963
|
'use strict';
|
18642
18964
|
|
18965
|
+
var _NativeArray;
|
18966
|
+
|
18643
18967
|
// Add Ember.Array to Array.prototype. Remove methods with native
|
18644
18968
|
// implementations and supply some more optimized versions of generic methods
|
18645
18969
|
// because they are so common.
|
@@ -18729,7 +19053,7 @@ enifed('ember-runtime/system/native_array', ['exports', 'ember-metal', 'ember-en
|
|
18729
19053
|
});
|
18730
19054
|
|
18731
19055
|
exports.NativeArray // TODO: only use default export
|
18732
|
-
= NativeArray = NativeArray.without.apply(
|
19056
|
+
= NativeArray = (_NativeArray = NativeArray).without.apply(_NativeArray, ignore);
|
18733
19057
|
|
18734
19058
|
/**
|
18735
19059
|
Creates an `Ember.NativeArray` from an Array like object.
|
@@ -19414,12 +19738,12 @@ enifed('ember-runtime/utils', ['exports', 'ember-runtime/mixins/array', 'ember-r
|
|
19414
19738
|
enifed("ember/features", ["exports"], function (exports) {
|
19415
19739
|
"use strict";
|
19416
19740
|
|
19417
|
-
exports.default = { "features-stripped-test": false, "ember-libraries-isregistered": false, "ember-
|
19741
|
+
exports.default = { "features-stripped-test": false, "ember-libraries-isregistered": false, "ember-improved-instrumentation": false, "ember-metal-weakmap": false, "ember-glimmer-allow-backtracking-rerender": false, "ember-testing-resume-test": false, "ember-factory-for": true, "ember-no-double-extend": false, "mandatory-setter": true, "ember-glimmer-detect-backtracking-rerender": true };
|
19418
19742
|
});
|
19419
19743
|
enifed("ember/version", ["exports"], function (exports) {
|
19420
19744
|
"use strict";
|
19421
19745
|
|
19422
|
-
exports.default = "2.
|
19746
|
+
exports.default = "2.12.0-beta.1";
|
19423
19747
|
});
|
19424
19748
|
enifed('rsvp', ['exports'], function (exports) {
|
19425
19749
|
'use strict';
|
@@ -19843,7 +20167,6 @@ enifed('rsvp', ['exports'], function (exports) {
|
|
19843
20167
|
} else {
|
19844
20168
|
if (then$$ === GET_THEN_ERROR) {
|
19845
20169
|
reject(promise, GET_THEN_ERROR.error);
|
19846
|
-
GET_THEN_ERROR.error = null;
|
19847
20170
|
} else if (then$$ === undefined) {
|
19848
20171
|
fulfill(promise, maybeThenable);
|
19849
20172
|
} else if (isFunction(then$$)) {
|
@@ -19971,10 +20294,10 @@ enifed('rsvp', ['exports'], function (exports) {
|
|
19971
20294
|
if (value === TRY_CATCH_ERROR) {
|
19972
20295
|
failed = true;
|
19973
20296
|
error = value.error;
|
19974
|
-
value
|
20297
|
+
value = null;
|
19975
20298
|
} else {
|
19976
|
-
|
19977
|
-
|
20299
|
+
succeeded = true;
|
20300
|
+
}
|
19978
20301
|
|
19979
20302
|
if (promise === value) {
|
19980
20303
|
reject(promise, withOwnPromise());
|
@@ -20758,7 +21081,7 @@ enifed('rsvp', ['exports'], function (exports) {
|
|
20758
21081
|
try {
|
20759
21082
|
return findAuthor(); // succeed or fail
|
20760
21083
|
} catch(error) {
|
20761
|
-
return
|
21084
|
+
return findOtherAuther();
|
20762
21085
|
} finally {
|
20763
21086
|
// always runs
|
20764
21087
|
// doesn't affect the return value
|
@@ -20769,7 +21092,7 @@ enifed('rsvp', ['exports'], function (exports) {
|
|
20769
21092
|
|
20770
21093
|
```js
|
20771
21094
|
findAuthor().catch(function(reason){
|
20772
|
-
return
|
21095
|
+
return findOtherAuther();
|
20773
21096
|
}).finally(function(){
|
20774
21097
|
// author was either found, or not
|
20775
21098
|
});
|