ember-source 4.4.0-alpha.3 → 4.4.0-alpha.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +5 -1
- package/blueprints/-addon-import.js +9 -0
- package/blueprints/-maybe-polyfill-typescript-blueprints.js +17 -0
- package/blueprints/acceptance-test/index.js +8 -0
- package/blueprints/acceptance-test/mocha-rfc-232-files/tests/acceptance/{__name__-test.js → __name__-test.ts} +1 -1
- package/blueprints/acceptance-test/qunit-rfc-232-files/tests/acceptance/{__name__-test.js → __name__-test.ts} +1 -1
- package/blueprints/component/files/__root__/__path__/{__name__.js → __name__.ts} +0 -0
- package/blueprints/component/index.js +6 -1
- package/blueprints/component-addon/files/__root__/__path__/{__name__.js → __name__.ts} +0 -0
- package/blueprints/component-addon/index.js +9 -0
- package/blueprints/component-class/files/__root__/__path__/{__name__.js → __name__.ts} +0 -0
- package/blueprints/component-class/index.js +5 -0
- package/blueprints/component-class-addon/files/__root__/__path__/{__name__.js → __name__.ts} +0 -0
- package/blueprints/component-class-addon/index.js +9 -0
- package/blueprints/component-test/index.js +8 -0
- package/blueprints/component-test/mocha-rfc-232-files/__root__/__testType__/__path__/{__test__.js → __test__.ts} +2 -2
- package/blueprints/component-test/qunit-rfc-232-files/__root__/__testType__/__path__/{__test__.js → __test__.ts} +3 -3
- package/blueprints/controller/files/__root__/__path__/{__name__.js → __name__.ts} +0 -0
- package/blueprints/controller/index.js +10 -0
- package/blueprints/controller-test/index.js +10 -0
- package/blueprints/controller-test/mocha-rfc-232-files/__root__/__testType__/__path__/{__test__.js → __test__.ts} +1 -1
- package/blueprints/controller-test/qunit-rfc-232-files/__root__/__testType__/__path__/{__test__.js → __test__.ts} +1 -1
- package/blueprints/helper/files/__root__/__collection__/{__name__.js → __name__.ts} +0 -0
- package/blueprints/helper/index.js +9 -0
- package/blueprints/helper-addon/files/__root__/__path__/{__name__.js → __name__.ts} +0 -0
- package/blueprints/helper-test/index.js +9 -0
- package/blueprints/helper-test/mocha-rfc-232-files/__root__/__testType__/__collection__/{__name__-test.js → __name__-test.ts} +1 -1
- package/blueprints/helper-test/qunit-rfc-232-files/__root__/__testType__/__collection__/{__name__-test.js → __name__-test.ts} +1 -1
- package/blueprints/initializer/files/__root__/initializers/__name__.ts +6 -0
- package/blueprints/initializer/index.js +9 -0
- package/blueprints/initializer-addon/files/__root__/__path__/{__name__.js → __name__.ts} +0 -0
- package/blueprints/initializer-test/index.js +8 -0
- package/blueprints/initializer-test/mocha-rfc-232-files/__root__/__testType__/__path__/{__name__-test.js → __name__-test.ts} +3 -1
- package/blueprints/initializer-test/qunit-rfc-232-files/__root__/__testType__/__path__/__name__-test.ts +37 -0
- package/blueprints/instance-initializer/files/__root__/instance-initializers/__name__.ts +6 -0
- package/blueprints/instance-initializer/index.js +9 -0
- package/blueprints/instance-initializer-addon/files/__root__/__path__/{__name__.js → __name__.ts} +0 -0
- package/blueprints/instance-initializer-test/index.js +8 -0
- package/blueprints/instance-initializer-test/mocha-rfc-232-files/__root__/__testType__/__path__/{__name__-test.js → __name__-test.ts} +5 -1
- package/blueprints/instance-initializer-test/qunit-rfc-232-files/__root__/__testType__/__path__/{__name__-test.js → __name__-test.ts} +6 -1
- package/blueprints/route/files/__root__/__path__/{__name__.js → __name__.ts} +2 -4
- package/blueprints/route/index.js +9 -0
- package/blueprints/route-addon/files/__root__/__path__/{__name__.js → __name__.ts} +0 -0
- package/blueprints/route-addon/index.js +9 -0
- package/blueprints/route-test/index.js +9 -0
- package/blueprints/route-test/mocha-rfc-232-files/__root__/__testType__/__path__/{__test__.js → __test__.ts} +1 -1
- package/blueprints/route-test/qunit-rfc-232-files/__root__/__testType__/__path__/{__test__.js → __test__.ts} +1 -1
- package/blueprints/service/files/__root__/__path__/{__name__.js → __name__.ts} +0 -0
- package/blueprints/service/index.js +10 -0
- package/blueprints/service-test/index.js +8 -0
- package/blueprints/service-test/mocha-rfc-232-files/__root__/__testType__/__path__/{__test__.js → __test__.ts} +1 -1
- package/blueprints/service-test/qunit-rfc-232-files/__root__/__testType__/__path__/{__test__.js → __test__.ts} +1 -1
- package/blueprints/util/files/__root__/utils/{__name__.js → __name__.ts} +0 -0
- package/blueprints/util/index.js +10 -0
- package/blueprints/util-test/index.js +8 -0
- package/blueprints/util-test/mocha-rfc-232-files/__root__/__testType__/{__name__-test.js → __name__-test.ts} +0 -0
- package/blueprints/util-test/qunit-rfc-232-files/__root__/__testType__/{__name__-test.js → __name__-test.ts} +0 -0
- package/build-metadata.json +3 -3
- package/dist/ember-template-compiler.js +15 -13
- package/dist/ember-template-compiler.map +1 -1
- package/dist/ember-testing.js +8 -4
- package/dist/ember-testing.map +1 -1
- package/dist/ember.debug.js +478 -1149
- package/dist/ember.debug.map +1 -1
- package/dist/header/license.js +1 -1
- package/dist/packages/@ember/-internals/container/index.js +1 -25
- package/dist/packages/@ember/-internals/extension-support/lib/container_debug_adapter.js +10 -19
- package/dist/packages/@ember/-internals/extension-support/lib/data_adapter.js +113 -112
- package/dist/packages/@ember/-internals/glimmer/index.js +117 -749
- package/dist/packages/@ember/-internals/metal/index.js +17 -22
- package/dist/packages/@ember/-internals/routing/lib/services/router.js +140 -145
- package/dist/packages/@ember/-internals/routing/lib/system/router.js +3 -1
- package/dist/packages/@ember/-internals/runtime/lib/ext/rsvp.js +8 -4
- package/dist/packages/@ember/-internals/runtime/lib/mixins/-proxy.js +1 -1
- package/dist/packages/@ember/-internals/runtime/lib/mixins/array.js +1 -1
- package/dist/packages/@ember/-internals/runtime/lib/mixins/promise_proxy.js +16 -16
- package/dist/packages/@ember/-internals/runtime/lib/mixins/target_action_support.js +8 -8
- package/dist/packages/@ember/-internals/views/lib/system/utils.js +4 -2
- package/dist/packages/@ember/-internals/views/lib/views/core_view.js +5 -22
- package/dist/packages/@ember/canary-features/index.js +1 -5
- package/dist/packages/@ember/debug/index.js +1 -1
- package/dist/packages/@ember/debug/lib/deprecate.js +6 -2
- package/dist/packages/@ember/renderer/index.js +21 -0
- package/dist/packages/ember/version.js +1 -1
- package/docs/data.json +447 -260
- package/package.json +15 -12
- package/blueprints/initializer/files/__root__/initializers/__name__.js +0 -5
- package/blueprints/initializer-test/qunit-rfc-232-files/__root__/__testType__/__path__/__name__-test.js +0 -34
- package/blueprints/instance-initializer/files/__root__/instance-initializers/__name__.js +0 -5
package/dist/ember.debug.js
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
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 4.4.0-alpha.
|
|
9
|
+
* @version 4.4.0-alpha.6
|
|
10
10
|
*/
|
|
11
11
|
/* eslint-disable no-var */
|
|
12
12
|
|
|
@@ -565,10 +565,6 @@ define("@ember/-internals/container/index", ["exports", "@ember/-internals/owner
|
|
|
565
565
|
this.madeToString = undefined;
|
|
566
566
|
this.injections = undefined;
|
|
567
567
|
setFactoryFor(this, this);
|
|
568
|
-
|
|
569
|
-
if (isInstantiatable(container, fullName)) {
|
|
570
|
-
setFactoryFor(factory, this);
|
|
571
|
-
}
|
|
572
568
|
}
|
|
573
569
|
|
|
574
570
|
toString() {
|
|
@@ -588,14 +584,10 @@ define("@ember/-internals/container/index", ["exports", "@ember/-internals/owner
|
|
|
588
584
|
throw new Error(`Cannot create new instances after the owner has been destroyed (you attempted to create ${this.fullName})`);
|
|
589
585
|
}
|
|
590
586
|
|
|
591
|
-
var props = {};
|
|
587
|
+
var props = options ? Object.assign({}, options) : {};
|
|
592
588
|
(0, _owner.setOwner)(props, container.owner);
|
|
593
589
|
setFactoryFor(props, this);
|
|
594
590
|
|
|
595
|
-
if (options !== undefined) {
|
|
596
|
-
props = Object.assign({}, props, options);
|
|
597
|
-
}
|
|
598
|
-
|
|
599
591
|
if (true
|
|
600
592
|
/* DEBUG */
|
|
601
593
|
) {
|
|
@@ -704,22 +696,6 @@ define("@ember/-internals/container/index", ["exports", "@ember/-internals/owner
|
|
|
704
696
|
container(options) {
|
|
705
697
|
return new Container(this, options);
|
|
706
698
|
}
|
|
707
|
-
/**
|
|
708
|
-
Registers a factory for later injection.
|
|
709
|
-
Example:
|
|
710
|
-
```javascript
|
|
711
|
-
let registry = new Registry();
|
|
712
|
-
registry.register('model:user', Person, {singleton: false });
|
|
713
|
-
registry.register('fruit:favorite', Orange);
|
|
714
|
-
registry.register('communication:main', Email, {singleton: false});
|
|
715
|
-
```
|
|
716
|
-
@private
|
|
717
|
-
@method register
|
|
718
|
-
@param {String} fullName
|
|
719
|
-
@param {Function} factory
|
|
720
|
-
@param {Object} options
|
|
721
|
-
*/
|
|
722
|
-
|
|
723
699
|
|
|
724
700
|
register(fullName, factory, options) {
|
|
725
701
|
if (options === void 0) {
|
|
@@ -1497,23 +1473,11 @@ define("@ember/-internals/extension-support/lib/container_debug_adapter", ["expo
|
|
|
1497
1473
|
@since 1.5.0
|
|
1498
1474
|
@public
|
|
1499
1475
|
*/
|
|
1500
|
-
|
|
1501
|
-
|
|
1502
|
-
|
|
1503
|
-
|
|
1476
|
+
class ContainerDebugAdapter extends _runtime.Object {
|
|
1477
|
+
constructor(owner) {
|
|
1478
|
+
super(owner);
|
|
1504
1479
|
this.resolver = (0, _owner.getOwner)(this).lookup('resolver-for-debugging:main');
|
|
1505
|
-
}
|
|
1506
|
-
|
|
1507
|
-
/**
|
|
1508
|
-
The resolver instance of the application
|
|
1509
|
-
being debugged. This property will be injected
|
|
1510
|
-
on creation.
|
|
1511
|
-
@property resolver
|
|
1512
|
-
@default null
|
|
1513
|
-
@public
|
|
1514
|
-
*/
|
|
1515
|
-
resolver: null,
|
|
1516
|
-
|
|
1480
|
+
}
|
|
1517
1481
|
/**
|
|
1518
1482
|
Returns true if it is possible to catalog a list of available
|
|
1519
1483
|
classes in the resolver for a given type.
|
|
@@ -1522,14 +1486,15 @@ define("@ember/-internals/extension-support/lib/container_debug_adapter", ["expo
|
|
|
1522
1486
|
@return {boolean} whether a list is available for this type.
|
|
1523
1487
|
@public
|
|
1524
1488
|
*/
|
|
1489
|
+
|
|
1490
|
+
|
|
1525
1491
|
canCatalogEntriesByType(type) {
|
|
1526
1492
|
if (type === 'model' || type === 'template') {
|
|
1527
1493
|
return false;
|
|
1528
1494
|
}
|
|
1529
1495
|
|
|
1530
1496
|
return true;
|
|
1531
|
-
}
|
|
1532
|
-
|
|
1497
|
+
}
|
|
1533
1498
|
/**
|
|
1534
1499
|
Returns the available classes a given type.
|
|
1535
1500
|
@method catalogEntriesByType
|
|
@@ -1537,6 +1502,8 @@ define("@ember/-internals/extension-support/lib/container_debug_adapter", ["expo
|
|
|
1537
1502
|
@return {Array} An array of strings.
|
|
1538
1503
|
@public
|
|
1539
1504
|
*/
|
|
1505
|
+
|
|
1506
|
+
|
|
1540
1507
|
catalogEntriesByType(type) {
|
|
1541
1508
|
var namespaces = (0, _runtime.A)(_runtime.Namespace.NAMESPACES);
|
|
1542
1509
|
var types = (0, _runtime.A)();
|
|
@@ -1559,9 +1526,9 @@ define("@ember/-internals/extension-support/lib/container_debug_adapter", ["expo
|
|
|
1559
1526
|
return types;
|
|
1560
1527
|
}
|
|
1561
1528
|
|
|
1562
|
-
}
|
|
1529
|
+
}
|
|
1563
1530
|
|
|
1564
|
-
_exports.default =
|
|
1531
|
+
_exports.default = ContainerDebugAdapter;
|
|
1565
1532
|
});
|
|
1566
1533
|
define("@ember/-internals/extension-support/lib/data_adapter", ["exports", "@ember/-internals/owner", "@ember/runloop", "@ember/-internals/metal", "@ember/string", "@ember/-internals/runtime", "@glimmer/validator"], function (_exports, _owner, _runloop, _metal, _string, _runtime, _validator) {
|
|
1567
1534
|
"use strict";
|
|
@@ -1583,12 +1550,12 @@ define("@ember/-internals/extension-support/lib/data_adapter", ["exports", "@emb
|
|
|
1583
1550
|
|
|
1584
1551
|
class RecordsWatcher {
|
|
1585
1552
|
constructor(records, recordsAdded, recordsUpdated, recordsRemoved, wrapRecord, release) {
|
|
1553
|
+
this.wrapRecord = wrapRecord;
|
|
1554
|
+
this.release = release;
|
|
1586
1555
|
this.recordCaches = new Map();
|
|
1587
1556
|
this.added = [];
|
|
1588
1557
|
this.updated = [];
|
|
1589
1558
|
this.removed = [];
|
|
1590
|
-
this.release = release;
|
|
1591
|
-
this.wrapRecord = wrapRecord;
|
|
1592
1559
|
this.recordArrayCache = (0, _validator.createCache)(() => {
|
|
1593
1560
|
var seen = new Set(); // Track `[]` for legacy support
|
|
1594
1561
|
|
|
@@ -1600,7 +1567,7 @@ define("@ember/-internals/extension-support/lib/data_adapter", ["exports", "@emb
|
|
|
1600
1567
|
// should not be polled again in the future
|
|
1601
1568
|
|
|
1602
1569
|
(0, _validator.untrack)(() => {
|
|
1603
|
-
this.recordCaches.forEach((
|
|
1570
|
+
this.recordCaches.forEach((_cache, record) => {
|
|
1604
1571
|
if (!seen.has(record)) {
|
|
1605
1572
|
this.removed.push(wrapRecord(record));
|
|
1606
1573
|
this.recordCaches.delete(record);
|
|
@@ -1652,6 +1619,7 @@ define("@ember/-internals/extension-support/lib/data_adapter", ["exports", "@emb
|
|
|
1652
1619
|
|
|
1653
1620
|
class TypeWatcher {
|
|
1654
1621
|
constructor(records, onChange, release) {
|
|
1622
|
+
this.release = release;
|
|
1655
1623
|
var hasBeenAccessed = false;
|
|
1656
1624
|
this.cache = (0, _validator.createCache)(() => {
|
|
1657
1625
|
// Empty iteration, we're doing this just
|
|
@@ -1720,49 +1688,47 @@ define("@ember/-internals/extension-support/lib/data_adapter", ["exports", "@emb
|
|
|
1720
1688
|
*/
|
|
1721
1689
|
|
|
1722
1690
|
|
|
1723
|
-
|
|
1724
|
-
|
|
1725
|
-
|
|
1726
|
-
|
|
1727
|
-
this.containerDebugAdapter = (0, _owner.getOwner)(this).lookup('container-debug-adapter:main');
|
|
1691
|
+
class DataAdapter extends _runtime.Object {
|
|
1692
|
+
constructor(owner) {
|
|
1693
|
+
super(owner);
|
|
1728
1694
|
this.releaseMethods = (0, _runtime.A)();
|
|
1729
1695
|
this.recordsWatchers = new Map();
|
|
1730
1696
|
this.typeWatchers = new Map();
|
|
1731
1697
|
this.flushWatchers = null;
|
|
1732
|
-
|
|
1733
|
-
|
|
1734
|
-
|
|
1735
|
-
|
|
1736
|
-
|
|
1737
|
-
|
|
1738
|
-
|
|
1739
|
-
|
|
1740
|
-
@public
|
|
1741
|
-
**/
|
|
1698
|
+
/**
|
|
1699
|
+
The container-debug-adapter which is used
|
|
1700
|
+
to list all models.
|
|
1701
|
+
@property containerDebugAdapter
|
|
1702
|
+
@default undefined
|
|
1703
|
+
@since 1.5.0
|
|
1704
|
+
@public
|
|
1705
|
+
**/
|
|
1742
1706
|
|
|
1743
|
-
|
|
1744
|
-
|
|
1745
|
-
|
|
1746
|
-
|
|
1747
|
-
|
|
1748
|
-
|
|
1749
|
-
|
|
1750
|
-
|
|
1751
|
-
|
|
1752
|
-
attributeLimit: 3,
|
|
1707
|
+
/**
|
|
1708
|
+
The number of attributes to send
|
|
1709
|
+
as columns. (Enough to make the record
|
|
1710
|
+
identifiable).
|
|
1711
|
+
@private
|
|
1712
|
+
@property attributeLimit
|
|
1713
|
+
@default 3
|
|
1714
|
+
@since 1.3.0
|
|
1715
|
+
*/
|
|
1753
1716
|
|
|
1754
|
-
|
|
1755
|
-
|
|
1756
|
-
|
|
1757
|
-
|
|
1758
|
-
|
|
1759
|
-
|
|
1760
|
-
|
|
1761
|
-
|
|
1762
|
-
|
|
1763
|
-
|
|
1764
|
-
|
|
1717
|
+
this.attributeLimit = 3;
|
|
1718
|
+
/**
|
|
1719
|
+
Ember Data > v1.0.0-beta.18
|
|
1720
|
+
requires string model names to be passed
|
|
1721
|
+
around instead of the actual factories.
|
|
1722
|
+
This is a stamp for the Ember Inspector
|
|
1723
|
+
to differentiate between the versions
|
|
1724
|
+
to be able to support older versions too.
|
|
1725
|
+
@public
|
|
1726
|
+
@property acceptsModelName
|
|
1727
|
+
*/
|
|
1765
1728
|
|
|
1729
|
+
this.acceptsModelName = true;
|
|
1730
|
+
this.containerDebugAdapter = (0, _owner.getOwner)(this).lookup('container-debug-adapter:main');
|
|
1731
|
+
}
|
|
1766
1732
|
/**
|
|
1767
1733
|
Map from records arrays to RecordsWatcher instances
|
|
1768
1734
|
@private
|
|
@@ -1802,10 +1768,11 @@ define("@ember/-internals/extension-support/lib/data_adapter", ["exports", "@emb
|
|
|
1802
1768
|
@return {Array} List of objects defining filters.
|
|
1803
1769
|
The object should have a `name` and `desc` property.
|
|
1804
1770
|
*/
|
|
1771
|
+
|
|
1772
|
+
|
|
1805
1773
|
getFilters() {
|
|
1806
1774
|
return (0, _runtime.A)();
|
|
1807
|
-
}
|
|
1808
|
-
|
|
1775
|
+
}
|
|
1809
1776
|
/**
|
|
1810
1777
|
Fetch the model types and observe them for changes.
|
|
1811
1778
|
@public
|
|
@@ -1816,6 +1783,8 @@ define("@ember/-internals/extension-support/lib/data_adapter", ["exports", "@emb
|
|
|
1816
1783
|
Takes an array of objects containing wrapped types.
|
|
1817
1784
|
@return {Function} Method to call to remove all observers
|
|
1818
1785
|
*/
|
|
1786
|
+
|
|
1787
|
+
|
|
1819
1788
|
watchModelTypes(typesAdded, typesUpdated) {
|
|
1820
1789
|
var modelTypes = this.getModelTypes();
|
|
1821
1790
|
var releaseMethods = (0, _runtime.A)();
|
|
@@ -1835,7 +1804,7 @@ define("@ember/-internals/extension-support/lib/data_adapter", ["exports", "@emb
|
|
|
1835
1804
|
|
|
1836
1805
|
this.releaseMethods.pushObject(release);
|
|
1837
1806
|
return release;
|
|
1838
|
-
}
|
|
1807
|
+
}
|
|
1839
1808
|
|
|
1840
1809
|
_nameToClass(type) {
|
|
1841
1810
|
if (typeof type === 'string') {
|
|
@@ -1845,8 +1814,7 @@ define("@ember/-internals/extension-support/lib/data_adapter", ["exports", "@emb
|
|
|
1845
1814
|
}
|
|
1846
1815
|
|
|
1847
1816
|
return type;
|
|
1848
|
-
}
|
|
1849
|
-
|
|
1817
|
+
}
|
|
1850
1818
|
/**
|
|
1851
1819
|
Fetch the records of a given type and observe them for changes.
|
|
1852
1820
|
@public
|
|
@@ -1863,6 +1831,8 @@ define("@ember/-internals/extension-support/lib/data_adapter", ["exports", "@emb
|
|
|
1863
1831
|
Takes an array of objects containing wrapped records.
|
|
1864
1832
|
@return {Function} Method to call to remove all observers.
|
|
1865
1833
|
*/
|
|
1834
|
+
|
|
1835
|
+
|
|
1866
1836
|
watchRecords(modelName, recordsAdded, recordsUpdated, recordsRemoved) {
|
|
1867
1837
|
var klass = this._nameToClass(modelName);
|
|
1868
1838
|
|
|
@@ -1883,7 +1853,7 @@ define("@ember/-internals/extension-support/lib/data_adapter", ["exports", "@emb
|
|
|
1883
1853
|
}
|
|
1884
1854
|
|
|
1885
1855
|
return recordsWatcher.release;
|
|
1886
|
-
}
|
|
1856
|
+
}
|
|
1887
1857
|
|
|
1888
1858
|
updateFlushWatchers() {
|
|
1889
1859
|
if (this.flushWatchers === null) {
|
|
@@ -1900,13 +1870,14 @@ define("@ember/-internals/extension-support/lib/data_adapter", ["exports", "@emb
|
|
|
1900
1870
|
|
|
1901
1871
|
this.flushWatchers = null;
|
|
1902
1872
|
}
|
|
1903
|
-
}
|
|
1904
|
-
|
|
1873
|
+
}
|
|
1905
1874
|
/**
|
|
1906
1875
|
Clear all observers before destruction
|
|
1907
1876
|
@private
|
|
1908
1877
|
@method willDestroy
|
|
1909
1878
|
*/
|
|
1879
|
+
|
|
1880
|
+
|
|
1910
1881
|
willDestroy() {
|
|
1911
1882
|
this._super(...arguments);
|
|
1912
1883
|
|
|
@@ -1917,8 +1888,7 @@ define("@ember/-internals/extension-support/lib/data_adapter", ["exports", "@emb
|
|
|
1917
1888
|
if (this.flushWatchers) {
|
|
1918
1889
|
_runloop._backburner.off('end', this.flushWatchers);
|
|
1919
1890
|
}
|
|
1920
|
-
}
|
|
1921
|
-
|
|
1891
|
+
}
|
|
1922
1892
|
/**
|
|
1923
1893
|
Detect whether a class is a model.
|
|
1924
1894
|
Test that against the model class
|
|
@@ -1927,10 +1897,11 @@ define("@ember/-internals/extension-support/lib/data_adapter", ["exports", "@emb
|
|
|
1927
1897
|
@method detect
|
|
1928
1898
|
@return boolean Whether the class is a model class or not.
|
|
1929
1899
|
*/
|
|
1930
|
-
detect() {
|
|
1931
|
-
return false;
|
|
1932
|
-
},
|
|
1933
1900
|
|
|
1901
|
+
|
|
1902
|
+
detect(_klass) {
|
|
1903
|
+
return false;
|
|
1904
|
+
}
|
|
1934
1905
|
/**
|
|
1935
1906
|
Get the columns for a given model type.
|
|
1936
1907
|
@public
|
|
@@ -1939,10 +1910,11 @@ define("@ember/-internals/extension-support/lib/data_adapter", ["exports", "@emb
|
|
|
1939
1910
|
name: {String} The name of the column.
|
|
1940
1911
|
desc: {String} Humanized description (what would show in a table column name).
|
|
1941
1912
|
*/
|
|
1942
|
-
columnsForType() {
|
|
1943
|
-
return (0, _runtime.A)();
|
|
1944
|
-
},
|
|
1945
1913
|
|
|
1914
|
+
|
|
1915
|
+
columnsForType(_klass) {
|
|
1916
|
+
return (0, _runtime.A)();
|
|
1917
|
+
}
|
|
1946
1918
|
/**
|
|
1947
1919
|
Adds observers to a model type class.
|
|
1948
1920
|
@private
|
|
@@ -1951,6 +1923,8 @@ define("@ember/-internals/extension-support/lib/data_adapter", ["exports", "@emb
|
|
|
1951
1923
|
@param {Function} typesUpdated Called when a type is modified.
|
|
1952
1924
|
@return {Function} The function to call to remove observers.
|
|
1953
1925
|
*/
|
|
1926
|
+
|
|
1927
|
+
|
|
1954
1928
|
observeModelType(modelName, typesUpdated) {
|
|
1955
1929
|
var klass = this._nameToClass(modelName);
|
|
1956
1930
|
|
|
@@ -1976,63 +1950,50 @@ define("@ember/-internals/extension-support/lib/data_adapter", ["exports", "@emb
|
|
|
1976
1950
|
}
|
|
1977
1951
|
|
|
1978
1952
|
return typeWatcher.release;
|
|
1979
|
-
}
|
|
1980
|
-
|
|
1953
|
+
}
|
|
1981
1954
|
/**
|
|
1982
1955
|
Wraps a given model type and observes changes to it.
|
|
1983
1956
|
@private
|
|
1984
1957
|
@method wrapModelType
|
|
1985
1958
|
@param {Class} klass A model class.
|
|
1986
1959
|
@param {String} modelName Name of the class.
|
|
1987
|
-
@return {Object}
|
|
1988
|
-
|
|
1989
|
-
|
|
1990
|
-
|
|
1991
|
-
|
|
1992
|
-
count: {Integer} The number of records available.
|
|
1993
|
-
columns: {Columns} An array of columns to describe the record.
|
|
1994
|
-
object: {Class} The actual Model type class.
|
|
1995
|
-
release: {Function} The function to remove observers.
|
|
1960
|
+
@return {Object} The wrapped type has the following format:
|
|
1961
|
+
name: {String} The name of the type.
|
|
1962
|
+
count: {Integer} The number of records available.
|
|
1963
|
+
columns: {Columns} An array of columns to describe the record.
|
|
1964
|
+
object: {Class} The actual Model type class.
|
|
1996
1965
|
*/
|
|
1966
|
+
|
|
1967
|
+
|
|
1997
1968
|
wrapModelType(klass, name) {
|
|
1998
1969
|
var records = this.getRecords(klass, name);
|
|
1999
|
-
|
|
2000
|
-
typeToSend = {
|
|
1970
|
+
return {
|
|
2001
1971
|
name,
|
|
2002
1972
|
count: (0, _metal.get)(records, 'length'),
|
|
2003
1973
|
columns: this.columnsForType(klass),
|
|
2004
1974
|
object: klass
|
|
2005
1975
|
};
|
|
2006
|
-
|
|
2007
|
-
},
|
|
2008
|
-
|
|
1976
|
+
}
|
|
2009
1977
|
/**
|
|
2010
1978
|
Fetches all models defined in the application.
|
|
2011
1979
|
@private
|
|
2012
1980
|
@method getModelTypes
|
|
2013
1981
|
@return {Array} Array of model types.
|
|
2014
1982
|
*/
|
|
2015
|
-
getModelTypes() {
|
|
2016
|
-
var containerDebugAdapter = this.get('containerDebugAdapter');
|
|
2017
|
-
var types;
|
|
2018
1983
|
|
|
2019
|
-
if (containerDebugAdapter.canCatalogEntriesByType('model')) {
|
|
2020
|
-
types = containerDebugAdapter.catalogEntriesByType('model');
|
|
2021
|
-
} else {
|
|
2022
|
-
types = this._getObjectsOnNamespaces();
|
|
2023
|
-
} // New adapters return strings instead of classes.
|
|
2024
1984
|
|
|
1985
|
+
getModelTypes() {
|
|
1986
|
+
var containerDebugAdapter = this.containerDebugAdapter;
|
|
1987
|
+
var stringTypes = containerDebugAdapter.canCatalogEntriesByType('model') ? containerDebugAdapter.catalogEntriesByType('model') : this._getObjectsOnNamespaces(); // New adapters return strings instead of classes.
|
|
2025
1988
|
|
|
2026
|
-
|
|
1989
|
+
var klassTypes = (0, _runtime.A)(stringTypes).map(name => {
|
|
2027
1990
|
return {
|
|
2028
1991
|
klass: this._nameToClass(name),
|
|
2029
1992
|
name
|
|
2030
1993
|
};
|
|
2031
1994
|
});
|
|
2032
|
-
|
|
2033
|
-
|
|
2034
|
-
},
|
|
2035
|
-
|
|
1995
|
+
return (0, _runtime.A)(klassTypes).filter(type => this.detect(type.klass));
|
|
1996
|
+
}
|
|
2036
1997
|
/**
|
|
2037
1998
|
Loops over all namespaces and all objects
|
|
2038
1999
|
attached to them.
|
|
@@ -2040,6 +2001,8 @@ define("@ember/-internals/extension-support/lib/data_adapter", ["exports", "@emb
|
|
|
2040
2001
|
@method _getObjectsOnNamespaces
|
|
2041
2002
|
@return {Array} Array of model type strings.
|
|
2042
2003
|
*/
|
|
2004
|
+
|
|
2005
|
+
|
|
2043
2006
|
_getObjectsOnNamespaces() {
|
|
2044
2007
|
var namespaces = (0, _runtime.A)(_runtime.Namespace.NAMESPACES);
|
|
2045
2008
|
var types = (0, _runtime.A)();
|
|
@@ -2060,8 +2023,7 @@ define("@ember/-internals/extension-support/lib/data_adapter", ["exports", "@emb
|
|
|
2060
2023
|
}
|
|
2061
2024
|
});
|
|
2062
2025
|
return types;
|
|
2063
|
-
}
|
|
2064
|
-
|
|
2026
|
+
}
|
|
2065
2027
|
/**
|
|
2066
2028
|
Fetches all loaded records for a given type.
|
|
2067
2029
|
@public
|
|
@@ -2070,10 +2032,11 @@ define("@ember/-internals/extension-support/lib/data_adapter", ["exports", "@emb
|
|
|
2070
2032
|
This array will be observed for changes,
|
|
2071
2033
|
so it should update when new records are added/removed.
|
|
2072
2034
|
*/
|
|
2073
|
-
getRecords() {
|
|
2074
|
-
return (0, _runtime.A)();
|
|
2075
|
-
},
|
|
2076
2035
|
|
|
2036
|
+
|
|
2037
|
+
getRecords(_klass, _name) {
|
|
2038
|
+
return (0, _runtime.A)();
|
|
2039
|
+
}
|
|
2077
2040
|
/**
|
|
2078
2041
|
Wraps a record and observers changes to it.
|
|
2079
2042
|
@private
|
|
@@ -2083,17 +2046,17 @@ define("@ember/-internals/extension-support/lib/data_adapter", ["exports", "@emb
|
|
|
2083
2046
|
columnValues: {Array}
|
|
2084
2047
|
searchKeywords: {Array}
|
|
2085
2048
|
*/
|
|
2049
|
+
|
|
2050
|
+
|
|
2086
2051
|
wrapRecord(record) {
|
|
2087
|
-
|
|
2088
|
-
object: record
|
|
2052
|
+
return {
|
|
2053
|
+
object: record,
|
|
2054
|
+
columnValues: this.getRecordColumnValues(record),
|
|
2055
|
+
searchKeywords: this.getRecordKeywords(record),
|
|
2056
|
+
filterValues: this.getRecordFilterValues(record),
|
|
2057
|
+
color: this.getRecordColor(record)
|
|
2089
2058
|
};
|
|
2090
|
-
|
|
2091
|
-
recordToSend.searchKeywords = this.getRecordKeywords(record);
|
|
2092
|
-
recordToSend.filterValues = this.getRecordFilterValues(record);
|
|
2093
|
-
recordToSend.color = this.getRecordColor(record);
|
|
2094
|
-
return recordToSend;
|
|
2095
|
-
},
|
|
2096
|
-
|
|
2059
|
+
}
|
|
2097
2060
|
/**
|
|
2098
2061
|
Gets the values for each column.
|
|
2099
2062
|
@public
|
|
@@ -2101,20 +2064,22 @@ define("@ember/-internals/extension-support/lib/data_adapter", ["exports", "@emb
|
|
|
2101
2064
|
@return {Object} Keys should match column names defined
|
|
2102
2065
|
by the model type.
|
|
2103
2066
|
*/
|
|
2104
|
-
getRecordColumnValues() {
|
|
2105
|
-
return {};
|
|
2106
|
-
},
|
|
2107
2067
|
|
|
2068
|
+
|
|
2069
|
+
getRecordColumnValues(_record) {
|
|
2070
|
+
return {};
|
|
2071
|
+
}
|
|
2108
2072
|
/**
|
|
2109
2073
|
Returns keywords to match when searching records.
|
|
2110
2074
|
@public
|
|
2111
2075
|
@method getRecordKeywords
|
|
2112
2076
|
@return {Array} Relevant keywords for search.
|
|
2113
2077
|
*/
|
|
2114
|
-
getRecordKeywords() {
|
|
2115
|
-
return (0, _runtime.A)();
|
|
2116
|
-
},
|
|
2117
2078
|
|
|
2079
|
+
|
|
2080
|
+
getRecordKeywords(_record) {
|
|
2081
|
+
return (0, _runtime.A)();
|
|
2082
|
+
}
|
|
2118
2083
|
/**
|
|
2119
2084
|
Returns the values of filters defined by `getFilters`.
|
|
2120
2085
|
@public
|
|
@@ -2122,10 +2087,11 @@ define("@ember/-internals/extension-support/lib/data_adapter", ["exports", "@emb
|
|
|
2122
2087
|
@param {Object} record The record instance.
|
|
2123
2088
|
@return {Object} The filter values.
|
|
2124
2089
|
*/
|
|
2125
|
-
getRecordFilterValues() {
|
|
2126
|
-
return {};
|
|
2127
|
-
},
|
|
2128
2090
|
|
|
2091
|
+
|
|
2092
|
+
getRecordFilterValues(_record) {
|
|
2093
|
+
return {};
|
|
2094
|
+
}
|
|
2129
2095
|
/**
|
|
2130
2096
|
Each record can have a color that represents its state.
|
|
2131
2097
|
@public
|
|
@@ -2134,13 +2100,15 @@ define("@ember/-internals/extension-support/lib/data_adapter", ["exports", "@emb
|
|
|
2134
2100
|
@return {String} The records color.
|
|
2135
2101
|
Possible options: black, red, blue, green.
|
|
2136
2102
|
*/
|
|
2137
|
-
|
|
2103
|
+
|
|
2104
|
+
|
|
2105
|
+
getRecordColor(_record) {
|
|
2138
2106
|
return null;
|
|
2139
2107
|
}
|
|
2140
2108
|
|
|
2141
|
-
}
|
|
2109
|
+
}
|
|
2142
2110
|
|
|
2143
|
-
_exports.default =
|
|
2111
|
+
_exports.default = DataAdapter;
|
|
2144
2112
|
});
|
|
2145
2113
|
define("@ember/-internals/glimmer/index", ["exports", "@glimmer/opcode-compiler", "@ember/-internals/owner", "@ember/-internals/utils", "@ember/debug", "@glimmer/manager", "@glimmer/reference", "@glimmer/validator", "@ember/-internals/metal", "@ember/object", "@ember/-internals/browser-environment", "@ember/-internals/views", "@ember/engine", "@ember/engine/instance", "@ember/instrumentation", "@ember/service", "@ember/string", "@glimmer/destroyable", "@ember/runloop", "@glimmer/util", "@glimmer/runtime", "@ember/-internals/runtime", "@ember/-internals/environment", "@ember/-internals/container", "@glimmer/node", "@ember/-internals/glimmer", "@glimmer/global-context", "@ember/-internals/routing", "@glimmer/program", "rsvp"], function (_exports, _opcodeCompiler, _owner2, _utils, _debug, _manager2, _reference, _validator, _metal, _object, _browserEnvironment, _views, _engine, _instance, _instrumentation, _service, _string, _destroyable, _runloop, _util, _runtime, _runtime2, _environment2, _container, _node, _glimmer, _globalContext, _routing2, _program, _rsvp) {
|
|
2146
2114
|
"use strict";
|
|
@@ -2476,7 +2444,7 @@ define("@ember/-internals/glimmer/index", ["exports", "@glimmer/opcode-compiler"
|
|
|
2476
2444
|
class AbstractInput extends InternalComponent {
|
|
2477
2445
|
constructor() {
|
|
2478
2446
|
super(...arguments);
|
|
2479
|
-
this._value = valueFrom(this.args.named
|
|
2447
|
+
this._value = valueFrom(this.args.named['value']);
|
|
2480
2448
|
}
|
|
2481
2449
|
|
|
2482
2450
|
validateArguments() {
|
|
@@ -2734,7 +2702,7 @@ define("@ember/-internals/glimmer/index", ["exports", "@glimmer/opcode-compiler"
|
|
|
2734
2702
|
class Input extends AbstractInput {
|
|
2735
2703
|
constructor() {
|
|
2736
2704
|
super(...arguments);
|
|
2737
|
-
this._checked = valueFrom(this.args.named
|
|
2705
|
+
this._checked = valueFrom(this.args.named['checked']);
|
|
2738
2706
|
}
|
|
2739
2707
|
|
|
2740
2708
|
static toString() {
|
|
@@ -2774,7 +2742,7 @@ define("@ember/-internals/glimmer/index", ["exports", "@glimmer/opcode-compiler"
|
|
|
2774
2742
|
|
|
2775
2743
|
get checked() {
|
|
2776
2744
|
if (this.isCheckbox) {
|
|
2777
|
-
(true && (0, _debug.warn)('`<Input @type="checkbox" />` reflects its checked state via the `@checked` argument. ' + 'You wrote `<Input @type="checkbox" @value={{...}} />` which is likely not what you intended. ' + 'Did you mean `<Input @type="checkbox" @checked={{...}} />`?', (0, _validator.untrack)(() => this.args.named
|
|
2745
|
+
(true && (0, _debug.warn)('`<Input @type="checkbox" />` reflects its checked state via the `@checked` argument. ' + 'You wrote `<Input @type="checkbox" @value={{...}} />` which is likely not what you intended. ' + 'Did you mean `<Input @type="checkbox" @checked={{...}} />`?', (0, _validator.untrack)(() => this.args.named['checked'] !== undefined || this.args.named['value'] === undefined || typeof (0, _reference.valueForRef)(this.args.named['value']) === 'string'), {
|
|
2778
2746
|
id: 'ember.built-in-components.input-checkbox-value'
|
|
2779
2747
|
}));
|
|
2780
2748
|
return this._checked.get();
|
|
@@ -2784,7 +2752,7 @@ define("@ember/-internals/glimmer/index", ["exports", "@glimmer/opcode-compiler"
|
|
|
2784
2752
|
}
|
|
2785
2753
|
|
|
2786
2754
|
set checked(checked) {
|
|
2787
|
-
(true && (0, _debug.warn)('`<Input @type="checkbox" />` reflects its checked state via the `@checked` argument. ' + 'You wrote `<Input @type="checkbox" @value={{...}} />` which is likely not what you intended. ' + 'Did you mean `<Input @type="checkbox" @checked={{...}} />`?', (0, _validator.untrack)(() => this.args.named
|
|
2755
|
+
(true && (0, _debug.warn)('`<Input @type="checkbox" />` reflects its checked state via the `@checked` argument. ' + 'You wrote `<Input @type="checkbox" @value={{...}} />` which is likely not what you intended. ' + 'Did you mean `<Input @type="checkbox" @checked={{...}} />`?', (0, _validator.untrack)(() => this.args.named['checked'] !== undefined || this.args.named['value'] === undefined || typeof (0, _reference.valueForRef)(this.args.named['value']) === 'string'), {
|
|
2788
2756
|
id: 'ember.built-in-components.input-checkbox-value'
|
|
2789
2757
|
}));
|
|
2790
2758
|
|
|
@@ -4093,8 +4061,8 @@ define("@ember/-internals/glimmer/index", ["exports", "@glimmer/opcode-compiler"
|
|
|
4093
4061
|
var [context, action$$1, ...restArgs] = positional;
|
|
4094
4062
|
(true && !(context && action$$1) && (0, _debug.assert)('hash position arguments', context && action$$1));
|
|
4095
4063
|
var debugKey = action$$1.debugLabel;
|
|
4096
|
-
var target = 'target' in named
|
|
4097
|
-
var processArgs = makeArgsProcessor('value' in named && named
|
|
4064
|
+
var target = 'target' in named ? named['target'] : context;
|
|
4065
|
+
var processArgs = makeArgsProcessor('value' in named && named['value'] || false, restArgs);
|
|
4098
4066
|
var fn$$1;
|
|
4099
4067
|
|
|
4100
4068
|
if ((0, _reference.isInvokableRef)(action$$1)) {
|
|
@@ -4735,624 +4703,6 @@ define("@ember/-internals/glimmer/index", ["exports", "@glimmer/opcode-compiler"
|
|
|
4735
4703
|
}
|
|
4736
4704
|
|
|
4737
4705
|
var lazyEventsProcessed = new WeakMap();
|
|
4738
|
-
/**
|
|
4739
|
-
@module @ember/component
|
|
4740
|
-
*/
|
|
4741
|
-
|
|
4742
|
-
/**
|
|
4743
|
-
A component is a reusable UI element that consists of a `.hbs` template and an
|
|
4744
|
-
optional JavaScript class that defines its behavior. For example, someone
|
|
4745
|
-
might make a `button` in the template and handle the click behavior in the
|
|
4746
|
-
JavaScript file that shares the same name as the template.
|
|
4747
|
-
|
|
4748
|
-
Components are broken down into two categories:
|
|
4749
|
-
|
|
4750
|
-
- Components _without_ JavaScript, that are based only on a template. These
|
|
4751
|
-
are called Template-only or TO components.
|
|
4752
|
-
- Components _with_ JavaScript, which consist of a template and a backing
|
|
4753
|
-
class.
|
|
4754
|
-
|
|
4755
|
-
Ember ships with two types of JavaScript classes for components:
|
|
4756
|
-
|
|
4757
|
-
1. Glimmer components, imported from `@glimmer/component`, which are the
|
|
4758
|
-
default component's for Ember Octane (3.15) and more recent editions.
|
|
4759
|
-
2. Classic components, imported from `@ember/component`, which were the
|
|
4760
|
-
default for older editions of Ember (pre 3.15).
|
|
4761
|
-
|
|
4762
|
-
Below is the documentation for Classic components. If you are looking for the
|
|
4763
|
-
API documentation for Template-only or Glimmer components, it is
|
|
4764
|
-
[available here](/ember/release/modules/@glimmer%2Fcomponent).
|
|
4765
|
-
|
|
4766
|
-
## Defining a Classic Component
|
|
4767
|
-
|
|
4768
|
-
If you want to customize the component in order to handle events, transform
|
|
4769
|
-
arguments or maintain internal state, you implement a subclass of `Component`.
|
|
4770
|
-
|
|
4771
|
-
One example is to add computed properties to your component:
|
|
4772
|
-
|
|
4773
|
-
```app/components/person-profile.js
|
|
4774
|
-
import Component from '@ember/component';
|
|
4775
|
-
|
|
4776
|
-
export default Component.extend({
|
|
4777
|
-
displayName: computed('person.title', 'person.firstName', 'person.lastName', function() {
|
|
4778
|
-
let { title, firstName, lastName } = this.person;
|
|
4779
|
-
|
|
4780
|
-
if (title) {
|
|
4781
|
-
return `${title} ${lastName}`;
|
|
4782
|
-
} else {
|
|
4783
|
-
return `${firstName} ${lastName}`;
|
|
4784
|
-
}
|
|
4785
|
-
})
|
|
4786
|
-
});
|
|
4787
|
-
```
|
|
4788
|
-
|
|
4789
|
-
And then use it in the component's template:
|
|
4790
|
-
|
|
4791
|
-
```app/templates/components/person-profile.hbs
|
|
4792
|
-
<h1>{{this.displayName}}</h1>
|
|
4793
|
-
{{yield}}
|
|
4794
|
-
```
|
|
4795
|
-
|
|
4796
|
-
## Customizing a Classic Component's HTML Element in JavaScript
|
|
4797
|
-
|
|
4798
|
-
### HTML Tag
|
|
4799
|
-
|
|
4800
|
-
The default HTML tag name used for a component's HTML representation is `div`.
|
|
4801
|
-
This can be customized by setting the `tagName` property.
|
|
4802
|
-
|
|
4803
|
-
Consider the following component class:
|
|
4804
|
-
|
|
4805
|
-
```app/components/emphasized-paragraph.js
|
|
4806
|
-
import Component from '@ember/component';
|
|
4807
|
-
|
|
4808
|
-
export default Component.extend({
|
|
4809
|
-
tagName: 'em'
|
|
4810
|
-
});
|
|
4811
|
-
```
|
|
4812
|
-
|
|
4813
|
-
When invoked, this component would produce output that looks something like
|
|
4814
|
-
this:
|
|
4815
|
-
|
|
4816
|
-
```html
|
|
4817
|
-
<em id="ember1" class="ember-view"></em>
|
|
4818
|
-
```
|
|
4819
|
-
|
|
4820
|
-
### HTML `class` Attribute
|
|
4821
|
-
|
|
4822
|
-
The HTML `class` attribute of a component's tag can be set by providing a
|
|
4823
|
-
`classNames` property that is set to an array of strings:
|
|
4824
|
-
|
|
4825
|
-
```app/components/my-widget.js
|
|
4826
|
-
import Component from '@ember/component';
|
|
4827
|
-
|
|
4828
|
-
export default Component.extend({
|
|
4829
|
-
classNames: ['my-class', 'my-other-class']
|
|
4830
|
-
});
|
|
4831
|
-
```
|
|
4832
|
-
|
|
4833
|
-
Invoking this component will produce output that looks like this:
|
|
4834
|
-
|
|
4835
|
-
```html
|
|
4836
|
-
<div id="ember1" class="ember-view my-class my-other-class"></div>
|
|
4837
|
-
```
|
|
4838
|
-
|
|
4839
|
-
`class` attribute values can also be set by providing a `classNameBindings`
|
|
4840
|
-
property set to an array of properties names for the component. The return
|
|
4841
|
-
value of these properties will be added as part of the value for the
|
|
4842
|
-
components's `class` attribute. These properties can be computed properties:
|
|
4843
|
-
|
|
4844
|
-
```app/components/my-widget.js
|
|
4845
|
-
import Component from '@ember/component';
|
|
4846
|
-
import { computed } from '@ember/object';
|
|
4847
|
-
|
|
4848
|
-
export default Component.extend({
|
|
4849
|
-
classNames: ['my-class', 'my-other-class'],
|
|
4850
|
-
classNameBindings: ['propertyA', 'propertyB'],
|
|
4851
|
-
|
|
4852
|
-
propertyA: 'from-a',
|
|
4853
|
-
propertyB: computed(function() {
|
|
4854
|
-
if (someLogic) { return 'from-b'; }
|
|
4855
|
-
})
|
|
4856
|
-
});
|
|
4857
|
-
```
|
|
4858
|
-
|
|
4859
|
-
Invoking this component will produce HTML that looks like:
|
|
4860
|
-
|
|
4861
|
-
```html
|
|
4862
|
-
<div id="ember1" class="ember-view my-class my-other-class from-a from-b"></div>
|
|
4863
|
-
```
|
|
4864
|
-
|
|
4865
|
-
Note that `classNames` and `classNameBindings` is in addition to the `class`
|
|
4866
|
-
attribute passed with the angle bracket invocation syntax. Therefore, if this
|
|
4867
|
-
component was invoked like so:
|
|
4868
|
-
|
|
4869
|
-
```handlebars
|
|
4870
|
-
<MyWidget class="from-invocation" />
|
|
4871
|
-
```
|
|
4872
|
-
|
|
4873
|
-
The resulting HTML will look similar to this:
|
|
4874
|
-
|
|
4875
|
-
```html
|
|
4876
|
-
<div id="ember1" class="from-invocation ember-view my-class my-other-class from-a from-b"></div>
|
|
4877
|
-
```
|
|
4878
|
-
|
|
4879
|
-
If the value of a class name binding returns a boolean the property name
|
|
4880
|
-
itself will be used as the class name if the property is true. The class name
|
|
4881
|
-
will not be added if the value is `false` or `undefined`.
|
|
4882
|
-
|
|
4883
|
-
```app/components/my-widget.js
|
|
4884
|
-
import Component from '@ember/component';
|
|
4885
|
-
|
|
4886
|
-
export default Component.extend({
|
|
4887
|
-
classNameBindings: ['hovered'],
|
|
4888
|
-
|
|
4889
|
-
hovered: true
|
|
4890
|
-
});
|
|
4891
|
-
```
|
|
4892
|
-
|
|
4893
|
-
Invoking this component will produce HTML that looks like:
|
|
4894
|
-
|
|
4895
|
-
```html
|
|
4896
|
-
<div id="ember1" class="ember-view hovered"></div>
|
|
4897
|
-
```
|
|
4898
|
-
|
|
4899
|
-
### Custom Class Names for Boolean Values
|
|
4900
|
-
|
|
4901
|
-
When using boolean class name bindings you can supply a string value other
|
|
4902
|
-
than the property name for use as the `class` HTML attribute by appending the
|
|
4903
|
-
preferred value after a ":" character when defining the binding:
|
|
4904
|
-
|
|
4905
|
-
```app/components/my-widget.js
|
|
4906
|
-
import Component from '@ember/component';
|
|
4907
|
-
|
|
4908
|
-
export default Component.extend({
|
|
4909
|
-
classNameBindings: ['awesome:so-very-cool'],
|
|
4910
|
-
|
|
4911
|
-
awesome: true
|
|
4912
|
-
});
|
|
4913
|
-
```
|
|
4914
|
-
|
|
4915
|
-
Invoking this component will produce HTML that looks like:
|
|
4916
|
-
|
|
4917
|
-
```html
|
|
4918
|
-
<div id="ember1" class="ember-view so-very-cool"></div>
|
|
4919
|
-
```
|
|
4920
|
-
|
|
4921
|
-
Boolean value class name bindings whose property names are in a
|
|
4922
|
-
camelCase-style format will be converted to a dasherized format:
|
|
4923
|
-
|
|
4924
|
-
```app/components/my-widget.js
|
|
4925
|
-
import Component from '@ember/component';
|
|
4926
|
-
|
|
4927
|
-
export default Component.extend({
|
|
4928
|
-
classNameBindings: ['isUrgent'],
|
|
4929
|
-
|
|
4930
|
-
isUrgent: true
|
|
4931
|
-
});
|
|
4932
|
-
```
|
|
4933
|
-
|
|
4934
|
-
Invoking this component will produce HTML that looks like:
|
|
4935
|
-
|
|
4936
|
-
```html
|
|
4937
|
-
<div id="ember1" class="ember-view is-urgent"></div>
|
|
4938
|
-
```
|
|
4939
|
-
|
|
4940
|
-
Class name bindings can also refer to object values that are found by
|
|
4941
|
-
traversing a path relative to the component itself:
|
|
4942
|
-
|
|
4943
|
-
```app/components/my-widget.js
|
|
4944
|
-
import Component from '@ember/component';
|
|
4945
|
-
import EmberObject from '@ember/object';
|
|
4946
|
-
|
|
4947
|
-
export default Component.extend({
|
|
4948
|
-
classNameBindings: ['messages.empty'],
|
|
4949
|
-
|
|
4950
|
-
messages: EmberObject.create({
|
|
4951
|
-
empty: true
|
|
4952
|
-
})
|
|
4953
|
-
});
|
|
4954
|
-
```
|
|
4955
|
-
|
|
4956
|
-
Invoking this component will produce HTML that looks like:
|
|
4957
|
-
|
|
4958
|
-
```html
|
|
4959
|
-
<div id="ember1" class="ember-view empty"></div>
|
|
4960
|
-
```
|
|
4961
|
-
|
|
4962
|
-
If you want to add a class name for a property which evaluates to true and
|
|
4963
|
-
and a different class name if it evaluates to false, you can pass a binding
|
|
4964
|
-
like this:
|
|
4965
|
-
|
|
4966
|
-
```app/components/my-widget.js
|
|
4967
|
-
import Component from '@ember/component';
|
|
4968
|
-
|
|
4969
|
-
export default Component.extend({
|
|
4970
|
-
classNameBindings: ['isEnabled:enabled:disabled'],
|
|
4971
|
-
isEnabled: true
|
|
4972
|
-
});
|
|
4973
|
-
```
|
|
4974
|
-
|
|
4975
|
-
Invoking this component will produce HTML that looks like:
|
|
4976
|
-
|
|
4977
|
-
```html
|
|
4978
|
-
<div id="ember1" class="ember-view enabled"></div>
|
|
4979
|
-
```
|
|
4980
|
-
|
|
4981
|
-
When isEnabled is `false`, the resulting HTML representation looks like this:
|
|
4982
|
-
|
|
4983
|
-
```html
|
|
4984
|
-
<div id="ember1" class="ember-view disabled"></div>
|
|
4985
|
-
```
|
|
4986
|
-
|
|
4987
|
-
This syntax offers the convenience to add a class if a property is `false`:
|
|
4988
|
-
|
|
4989
|
-
```app/components/my-widget.js
|
|
4990
|
-
import Component from '@ember/component';
|
|
4991
|
-
|
|
4992
|
-
// Applies no class when isEnabled is true and class 'disabled' when isEnabled is false
|
|
4993
|
-
export default Component.extend({
|
|
4994
|
-
classNameBindings: ['isEnabled::disabled'],
|
|
4995
|
-
isEnabled: true
|
|
4996
|
-
});
|
|
4997
|
-
```
|
|
4998
|
-
|
|
4999
|
-
Invoking this component when the `isEnabled` property is true will produce
|
|
5000
|
-
HTML that looks like:
|
|
5001
|
-
|
|
5002
|
-
```html
|
|
5003
|
-
<div id="ember1" class="ember-view"></div>
|
|
5004
|
-
```
|
|
5005
|
-
|
|
5006
|
-
Invoking it when the `isEnabled` property on the component is `false` will
|
|
5007
|
-
produce HTML that looks like:
|
|
5008
|
-
|
|
5009
|
-
```html
|
|
5010
|
-
<div id="ember1" class="ember-view disabled"></div>
|
|
5011
|
-
```
|
|
5012
|
-
|
|
5013
|
-
Updates to the value of a class name binding will result in automatic update
|
|
5014
|
-
of the HTML `class` attribute in the component's rendered HTML
|
|
5015
|
-
representation. If the value becomes `false` or `undefined` the class name
|
|
5016
|
-
will be removed.
|
|
5017
|
-
|
|
5018
|
-
Both `classNames` and `classNameBindings` are concatenated properties. See
|
|
5019
|
-
[EmberObject](/ember/release/classes/EmberObject) documentation for more
|
|
5020
|
-
information about concatenated properties.
|
|
5021
|
-
|
|
5022
|
-
### Other HTML Attributes
|
|
5023
|
-
|
|
5024
|
-
The HTML attribute section of a component's tag can be set by providing an
|
|
5025
|
-
`attributeBindings` property set to an array of property names on the component.
|
|
5026
|
-
The return value of these properties will be used as the value of the component's
|
|
5027
|
-
HTML associated attribute:
|
|
5028
|
-
|
|
5029
|
-
```app/components/my-anchor.js
|
|
5030
|
-
import Component from '@ember/component';
|
|
5031
|
-
|
|
5032
|
-
export default Component.extend({
|
|
5033
|
-
tagName: 'a',
|
|
5034
|
-
attributeBindings: ['href'],
|
|
5035
|
-
|
|
5036
|
-
href: 'http://google.com'
|
|
5037
|
-
});
|
|
5038
|
-
```
|
|
5039
|
-
|
|
5040
|
-
Invoking this component will produce HTML that looks like:
|
|
5041
|
-
|
|
5042
|
-
```html
|
|
5043
|
-
<a id="ember1" class="ember-view" href="http://google.com"></a>
|
|
5044
|
-
```
|
|
5045
|
-
|
|
5046
|
-
One property can be mapped on to another by placing a ":" between
|
|
5047
|
-
the source property and the destination property:
|
|
5048
|
-
|
|
5049
|
-
```app/components/my-anchor.js
|
|
5050
|
-
import Component from '@ember/component';
|
|
5051
|
-
|
|
5052
|
-
export default Component.extend({
|
|
5053
|
-
tagName: 'a',
|
|
5054
|
-
attributeBindings: ['url:href'],
|
|
5055
|
-
|
|
5056
|
-
url: 'http://google.com'
|
|
5057
|
-
});
|
|
5058
|
-
```
|
|
5059
|
-
|
|
5060
|
-
Invoking this component will produce HTML that looks like:
|
|
5061
|
-
|
|
5062
|
-
```html
|
|
5063
|
-
<a id="ember1" class="ember-view" href="http://google.com"></a>
|
|
5064
|
-
```
|
|
5065
|
-
|
|
5066
|
-
HTML attributes passed with angle bracket invocations will take precedence
|
|
5067
|
-
over those specified in `attributeBindings`. Therefore, if this component was
|
|
5068
|
-
invoked like so:
|
|
5069
|
-
|
|
5070
|
-
```handlebars
|
|
5071
|
-
<MyAnchor href="http://bing.com" @url="http://google.com" />
|
|
5072
|
-
```
|
|
5073
|
-
|
|
5074
|
-
The resulting HTML will looks like this:
|
|
5075
|
-
|
|
5076
|
-
```html
|
|
5077
|
-
<a id="ember1" class="ember-view" href="http://bing.com"></a>
|
|
5078
|
-
```
|
|
5079
|
-
|
|
5080
|
-
Note that the `href` attribute is ultimately set to `http://bing.com`,
|
|
5081
|
-
despite it having attribute binidng to the `url` property, which was
|
|
5082
|
-
set to `http://google.com`.
|
|
5083
|
-
|
|
5084
|
-
Namespaced attributes (e.g. `xlink:href`) are supported, but have to be
|
|
5085
|
-
mapped, since `:` is not a valid character for properties in Javascript:
|
|
5086
|
-
|
|
5087
|
-
```app/components/my-use.js
|
|
5088
|
-
import Component from '@ember/component';
|
|
5089
|
-
|
|
5090
|
-
export default Component.extend({
|
|
5091
|
-
tagName: 'use',
|
|
5092
|
-
attributeBindings: ['xlinkHref:xlink:href'],
|
|
5093
|
-
|
|
5094
|
-
xlinkHref: '#triangle'
|
|
5095
|
-
});
|
|
5096
|
-
```
|
|
5097
|
-
|
|
5098
|
-
Invoking this component will produce HTML that looks like:
|
|
5099
|
-
|
|
5100
|
-
```html
|
|
5101
|
-
<use xlink:href="#triangle"></use>
|
|
5102
|
-
```
|
|
5103
|
-
|
|
5104
|
-
If the value of a property monitored by `attributeBindings` is a boolean, the
|
|
5105
|
-
attribute will be present or absent depending on the value:
|
|
5106
|
-
|
|
5107
|
-
```app/components/my-text-input.js
|
|
5108
|
-
import Component from '@ember/component';
|
|
5109
|
-
|
|
5110
|
-
export default Component.extend({
|
|
5111
|
-
tagName: 'input',
|
|
5112
|
-
attributeBindings: ['disabled'],
|
|
5113
|
-
|
|
5114
|
-
disabled: false
|
|
5115
|
-
});
|
|
5116
|
-
```
|
|
5117
|
-
|
|
5118
|
-
Invoking this component will produce HTML that looks like:
|
|
5119
|
-
|
|
5120
|
-
```html
|
|
5121
|
-
<input id="ember1" class="ember-view" />
|
|
5122
|
-
```
|
|
5123
|
-
|
|
5124
|
-
`attributeBindings` can refer to computed properties:
|
|
5125
|
-
|
|
5126
|
-
```app/components/my-text-input.js
|
|
5127
|
-
import Component from '@ember/component';
|
|
5128
|
-
import { computed } from '@ember/object';
|
|
5129
|
-
|
|
5130
|
-
export default Component.extend({
|
|
5131
|
-
tagName: 'input',
|
|
5132
|
-
attributeBindings: ['disabled'],
|
|
5133
|
-
|
|
5134
|
-
disabled: computed(function() {
|
|
5135
|
-
if (someLogic) {
|
|
5136
|
-
return true;
|
|
5137
|
-
} else {
|
|
5138
|
-
return false;
|
|
5139
|
-
}
|
|
5140
|
-
})
|
|
5141
|
-
});
|
|
5142
|
-
```
|
|
5143
|
-
|
|
5144
|
-
To prevent setting an attribute altogether, use `null` or `undefined` as the
|
|
5145
|
-
value of the property used in `attributeBindings`:
|
|
5146
|
-
|
|
5147
|
-
```app/components/my-text-input.js
|
|
5148
|
-
import Component from '@ember/component';
|
|
5149
|
-
|
|
5150
|
-
export default Component.extend({
|
|
5151
|
-
tagName: 'form',
|
|
5152
|
-
attributeBindings: ['novalidate'],
|
|
5153
|
-
novalidate: null
|
|
5154
|
-
});
|
|
5155
|
-
```
|
|
5156
|
-
|
|
5157
|
-
Updates to the property of an attribute binding will result in automatic
|
|
5158
|
-
update of the HTML attribute in the component's HTML output.
|
|
5159
|
-
|
|
5160
|
-
`attributeBindings` is a concatenated property. See
|
|
5161
|
-
[EmberObject](/ember/release/classes/EmberObject) documentation for more
|
|
5162
|
-
information about concatenated properties.
|
|
5163
|
-
|
|
5164
|
-
## Layouts
|
|
5165
|
-
|
|
5166
|
-
The `layout` property can be used to dynamically specify a template associated
|
|
5167
|
-
with a component class, instead of relying on Ember to link together a
|
|
5168
|
-
component class and a template based on file names.
|
|
5169
|
-
|
|
5170
|
-
In general, applications should not use this feature, but it's commonly used
|
|
5171
|
-
in addons for historical reasons.
|
|
5172
|
-
|
|
5173
|
-
The `layout` property should be set to the default export of a template
|
|
5174
|
-
module, which is the name of a template file without the `.hbs` extension.
|
|
5175
|
-
|
|
5176
|
-
```app/templates/components/person-profile.hbs
|
|
5177
|
-
<h1>Person's Title</h1>
|
|
5178
|
-
<div class='details'>{{yield}}</div>
|
|
5179
|
-
```
|
|
5180
|
-
|
|
5181
|
-
```app/components/person-profile.js
|
|
5182
|
-
import Component from '@ember/component';
|
|
5183
|
-
import layout from '../templates/components/person-profile';
|
|
5184
|
-
|
|
5185
|
-
export default Component.extend({
|
|
5186
|
-
layout
|
|
5187
|
-
});
|
|
5188
|
-
```
|
|
5189
|
-
|
|
5190
|
-
If you invoke the component:
|
|
5191
|
-
|
|
5192
|
-
```handlebars
|
|
5193
|
-
<PersonProfile>
|
|
5194
|
-
<h2>Chief Basket Weaver</h2>
|
|
5195
|
-
<h3>Fisherman Industries</h3>
|
|
5196
|
-
</PersonProfile>
|
|
5197
|
-
```
|
|
5198
|
-
|
|
5199
|
-
or
|
|
5200
|
-
|
|
5201
|
-
```handlebars
|
|
5202
|
-
{{#person-profile}}
|
|
5203
|
-
<h2>Chief Basket Weaver</h2>
|
|
5204
|
-
<h3>Fisherman Industries</h3>
|
|
5205
|
-
{{/person-profile}}
|
|
5206
|
-
```
|
|
5207
|
-
|
|
5208
|
-
It will result in the following HTML output:
|
|
5209
|
-
|
|
5210
|
-
```html
|
|
5211
|
-
<h1>Person's Title</h1>
|
|
5212
|
-
<div class="details">
|
|
5213
|
-
<h2>Chief Basket Weaver</h2>
|
|
5214
|
-
<h3>Fisherman Industries</h3>
|
|
5215
|
-
</div>
|
|
5216
|
-
```
|
|
5217
|
-
|
|
5218
|
-
## Handling Browser Events
|
|
5219
|
-
|
|
5220
|
-
Components can respond to user-initiated events in one of three ways: passing
|
|
5221
|
-
actions with angle bracket invocation, adding event handler methods to the
|
|
5222
|
-
component's class, or adding actions to the component's template.
|
|
5223
|
-
|
|
5224
|
-
### Passing Actions With Angle Bracket Invocation
|
|
5225
|
-
|
|
5226
|
-
For one-off events specific to particular instance of a component, it is possible
|
|
5227
|
-
to pass actions to the component's element using angle bracket invocation syntax.
|
|
5228
|
-
|
|
5229
|
-
```handlebars
|
|
5230
|
-
<MyWidget {{action 'firstWidgetClicked'}} />
|
|
5231
|
-
|
|
5232
|
-
<MyWidget {{action 'secondWidgetClicked'}} />
|
|
5233
|
-
```
|
|
5234
|
-
|
|
5235
|
-
In this case, when the first component is clicked on, Ember will invoke the
|
|
5236
|
-
`firstWidgetClicked` action. When the second component is clicked on, Ember
|
|
5237
|
-
will invoke the `secondWidgetClicked` action instead.
|
|
5238
|
-
|
|
5239
|
-
Besides `{{action}}`, it is also possible to pass any arbitrary element modifiers
|
|
5240
|
-
using the angle bracket invocation syntax.
|
|
5241
|
-
|
|
5242
|
-
### Event Handler Methods
|
|
5243
|
-
|
|
5244
|
-
Components can also respond to user-initiated events by implementing a method
|
|
5245
|
-
that matches the event name. This approach is appropriate when the same event
|
|
5246
|
-
should be handled by all instances of the same component.
|
|
5247
|
-
|
|
5248
|
-
An event object will be passed as the argument to the event handler method.
|
|
5249
|
-
|
|
5250
|
-
```app/components/my-widget.js
|
|
5251
|
-
import Component from '@ember/component';
|
|
5252
|
-
|
|
5253
|
-
export default Component.extend({
|
|
5254
|
-
click(event) {
|
|
5255
|
-
// `event.target` is either the component's element or one of its children
|
|
5256
|
-
let tag = event.target.tagName.toLowerCase();
|
|
5257
|
-
console.log('clicked on a `<${tag}>` HTML element!');
|
|
5258
|
-
}
|
|
5259
|
-
});
|
|
5260
|
-
```
|
|
5261
|
-
|
|
5262
|
-
In this example, whenever the user clicked anywhere inside the component, it
|
|
5263
|
-
will log a message to the console.
|
|
5264
|
-
|
|
5265
|
-
It is possible to handle event types other than `click` by implementing the
|
|
5266
|
-
following event handler methods. In addition, custom events can be registered
|
|
5267
|
-
by using `Application.customEvents`.
|
|
5268
|
-
|
|
5269
|
-
Touch events:
|
|
5270
|
-
|
|
5271
|
-
* `touchStart`
|
|
5272
|
-
* `touchMove`
|
|
5273
|
-
* `touchEnd`
|
|
5274
|
-
* `touchCancel`
|
|
5275
|
-
|
|
5276
|
-
Keyboard events:
|
|
5277
|
-
|
|
5278
|
-
* `keyDown`
|
|
5279
|
-
* `keyUp`
|
|
5280
|
-
* `keyPress`
|
|
5281
|
-
|
|
5282
|
-
Mouse events:
|
|
5283
|
-
|
|
5284
|
-
* `mouseDown`
|
|
5285
|
-
* `mouseUp`
|
|
5286
|
-
* `contextMenu`
|
|
5287
|
-
* `click`
|
|
5288
|
-
* `doubleClick`
|
|
5289
|
-
* `focusIn`
|
|
5290
|
-
* `focusOut`
|
|
5291
|
-
|
|
5292
|
-
Form events:
|
|
5293
|
-
|
|
5294
|
-
* `submit`
|
|
5295
|
-
* `change`
|
|
5296
|
-
* `focusIn`
|
|
5297
|
-
* `focusOut`
|
|
5298
|
-
* `input`
|
|
5299
|
-
|
|
5300
|
-
Drag and drop events:
|
|
5301
|
-
|
|
5302
|
-
* `dragStart`
|
|
5303
|
-
* `drag`
|
|
5304
|
-
* `dragEnter`
|
|
5305
|
-
* `dragLeave`
|
|
5306
|
-
* `dragOver`
|
|
5307
|
-
* `dragEnd`
|
|
5308
|
-
* `drop`
|
|
5309
|
-
|
|
5310
|
-
### `{{action}}` Helper
|
|
5311
|
-
|
|
5312
|
-
Instead of handling all events of a particular type anywhere inside the
|
|
5313
|
-
component's element, you may instead want to limit it to a particular
|
|
5314
|
-
element in the component's template. In this case, it would be more
|
|
5315
|
-
convenient to implement an action instead.
|
|
5316
|
-
|
|
5317
|
-
For example, you could implement the action `hello` for the `person-profile`
|
|
5318
|
-
component:
|
|
5319
|
-
|
|
5320
|
-
```app/components/person-profile.js
|
|
5321
|
-
import Component from '@ember/component';
|
|
5322
|
-
|
|
5323
|
-
export default Component.extend({
|
|
5324
|
-
actions: {
|
|
5325
|
-
hello(name) {
|
|
5326
|
-
console.log("Hello", name);
|
|
5327
|
-
}
|
|
5328
|
-
}
|
|
5329
|
-
});
|
|
5330
|
-
```
|
|
5331
|
-
|
|
5332
|
-
And then use it in the component's template:
|
|
5333
|
-
|
|
5334
|
-
```app/templates/components/person-profile.hbs
|
|
5335
|
-
<h1>{{@person.name}}</h1>
|
|
5336
|
-
|
|
5337
|
-
<button {{action 'hello' @person.name}}>
|
|
5338
|
-
Say Hello to {{@person.name}}
|
|
5339
|
-
</button>
|
|
5340
|
-
```
|
|
5341
|
-
|
|
5342
|
-
When the user clicks the button, Ember will invoke the `hello` action,
|
|
5343
|
-
passing in the current value of `@person.name` as an argument.
|
|
5344
|
-
|
|
5345
|
-
See [Ember.Templates.helpers.action](/ember/release/classes/Ember.Templates.helpers/methods/action?anchor=action).
|
|
5346
|
-
|
|
5347
|
-
@class Component
|
|
5348
|
-
@extends Ember.CoreView
|
|
5349
|
-
@uses Ember.TargetActionSupport
|
|
5350
|
-
@uses Ember.ClassNamesSupport
|
|
5351
|
-
@uses Ember.ActionSupport
|
|
5352
|
-
@uses Ember.ViewMixin
|
|
5353
|
-
@uses Ember.ViewStateSupport
|
|
5354
|
-
@public
|
|
5355
|
-
*/
|
|
5356
4706
|
|
|
5357
4707
|
var Component = _views.CoreView.extend(_views.ChildViewsSupport, _views.ViewStateSupport, _views.ClassNamesSupport, _runtime2.TargetActionSupport, _views.ActionSupport, _views.ViewMixin, {
|
|
5358
4708
|
isComponent: true,
|
|
@@ -5662,23 +5012,6 @@ define("@ember/-internals/glimmer/index", ["exports", "@glimmer/opcode-compiler"
|
|
|
5662
5012
|
@since 1.13.0
|
|
5663
5013
|
*/
|
|
5664
5014
|
|
|
5665
|
-
/**
|
|
5666
|
-
Layout can be used to wrap content in a component.
|
|
5667
|
-
@property layout
|
|
5668
|
-
@type Function
|
|
5669
|
-
@public
|
|
5670
|
-
*/
|
|
5671
|
-
|
|
5672
|
-
/**
|
|
5673
|
-
The name of the layout to lookup if no layout is provided.
|
|
5674
|
-
By default `Component` will lookup a template with this name in
|
|
5675
|
-
`Ember.TEMPLATES` (a shared global object).
|
|
5676
|
-
@property layoutName
|
|
5677
|
-
@type String
|
|
5678
|
-
@default null
|
|
5679
|
-
@private
|
|
5680
|
-
*/
|
|
5681
|
-
|
|
5682
5015
|
/**
|
|
5683
5016
|
The HTML `id` of the component's element in the DOM. You can provide this
|
|
5684
5017
|
value yourself but it must be unique (just as in HTML):
|
|
@@ -6739,7 +6072,7 @@ define("@ember/-internals/glimmer/index", ["exports", "@glimmer/opcode-compiler"
|
|
|
6739
6072
|
},
|
|
6740
6073
|
|
|
6741
6074
|
warnIfStyleNotTrusted(value) {
|
|
6742
|
-
(true && (0, _debug.warn)((0, _views.constructStyleDeprecationMessage)(value), (() => {
|
|
6075
|
+
(true && (0, _debug.warn)((0, _views.constructStyleDeprecationMessage)(String(value)), (() => {
|
|
6743
6076
|
if (value === null || value === undefined || isHTMLSafe$1(value)) {
|
|
6744
6077
|
return true;
|
|
6745
6078
|
}
|
|
@@ -6835,9 +6168,9 @@ define("@ember/-internals/glimmer/index", ["exports", "@glimmer/opcode-compiler"
|
|
|
6835
6168
|
} = _ref12;
|
|
6836
6169
|
var nameOrValueRef = positional[0];
|
|
6837
6170
|
(true && !(positional.length === 1 && nameOrValueRef) && (0, _debug.assert)(`[BUG] wrong number of positional arguments, expecting 1, got ${positional.length}`, positional.length === 1 && nameOrValueRef));
|
|
6838
|
-
var typeRef = named
|
|
6839
|
-
var locRef = named
|
|
6840
|
-
var originalRef = named
|
|
6171
|
+
var typeRef = named['type'];
|
|
6172
|
+
var locRef = named['loc'];
|
|
6173
|
+
var originalRef = named['original'];
|
|
6841
6174
|
(true && !(typeRef) && (0, _debug.assert)(`[BUG] expecting \`type\` named argument`, typeRef));
|
|
6842
6175
|
(true && !(locRef) && (0, _debug.assert)(`[BUG] expecting \`loc\` named argument`, locRef));
|
|
6843
6176
|
(true && !(originalRef) && (0, _debug.assert)(`[BUG] expecting \`original\` named argument`, originalRef)); // Bug: why do these fail?
|
|
@@ -7221,7 +6554,7 @@ define("@ember/-internals/glimmer/index", ["exports", "@glimmer/opcode-compiler"
|
|
|
7221
6554
|
@module ember
|
|
7222
6555
|
*/
|
|
7223
6556
|
|
|
7224
|
-
internalHelper(() => {
|
|
6557
|
+
var uniqueId = internalHelper(() => {
|
|
7225
6558
|
return (0, _reference.createConstRef)(uniqueId$1(), 'unique-id');
|
|
7226
6559
|
}); // From https://gist.github.com/selfish/fef2c0ba6cdfe07af76e64cecd74888b
|
|
7227
6560
|
//
|
|
@@ -7754,7 +7087,7 @@ define("@ember/-internals/glimmer/index", ["exports", "@glimmer/opcode-compiler"
|
|
|
7754
7087
|
var outletRef = (0, _reference.createComputeRef)(() => {
|
|
7755
7088
|
var state = (0, _reference.valueForRef)(scope.get('outletState'));
|
|
7756
7089
|
var outlets = state !== undefined ? state.outlets : undefined;
|
|
7757
|
-
return outlets !== undefined ? outlets
|
|
7090
|
+
return outlets !== undefined ? outlets['main'] : undefined;
|
|
7758
7091
|
});
|
|
7759
7092
|
var lastState = null;
|
|
7760
7093
|
var definition = null;
|
|
@@ -7779,7 +7112,7 @@ define("@ember/-internals/glimmer/index", ["exports", "@glimmer/opcode-compiler"
|
|
|
7779
7112
|
// provide the correct updated value. So we stop updating and return
|
|
7780
7113
|
// the _last_ model value for that outlet.
|
|
7781
7114
|
|
|
7782
|
-
named
|
|
7115
|
+
named['model'] = (0, _reference.createComputeRef)(() => {
|
|
7783
7116
|
if (lastState === state) {
|
|
7784
7117
|
model = (0, _reference.valueForRef)(modelRef);
|
|
7785
7118
|
}
|
|
@@ -7790,7 +7123,7 @@ define("@ember/-internals/glimmer/index", ["exports", "@glimmer/opcode-compiler"
|
|
|
7790
7123
|
if (true
|
|
7791
7124
|
/* DEBUG */
|
|
7792
7125
|
) {
|
|
7793
|
-
named
|
|
7126
|
+
named['model'] = (0, _reference.createDebugAliasRef)('@model', named['model']);
|
|
7794
7127
|
}
|
|
7795
7128
|
|
|
7796
7129
|
var args = (0, _runtime.createCapturedArgs)(named, _runtime.EMPTY_POSITIONAL);
|
|
@@ -7920,6 +7253,9 @@ define("@ember/-internals/glimmer/index", ["exports", "@glimmer/opcode-compiler"
|
|
|
7920
7253
|
get: _runtime.get,
|
|
7921
7254
|
hash: _runtime.hash
|
|
7922
7255
|
});
|
|
7256
|
+
{
|
|
7257
|
+
BUILTIN_HELPERS['unique-id'] = uniqueId;
|
|
7258
|
+
}
|
|
7923
7259
|
var BUILTIN_KEYWORD_MODIFIERS = {
|
|
7924
7260
|
action: actionModifier
|
|
7925
7261
|
};
|
|
@@ -8076,6 +7412,107 @@ define("@ember/-internals/glimmer/index", ["exports", "@glimmer/opcode-compiler"
|
|
|
8076
7412
|
|
|
8077
7413
|
}
|
|
8078
7414
|
|
|
7415
|
+
var TOP_LEVEL_NAME = '-top-level';
|
|
7416
|
+
var TOP_LEVEL_OUTLET = 'main';
|
|
7417
|
+
|
|
7418
|
+
class OutletView {
|
|
7419
|
+
constructor(_environment, owner, template, namespace) {
|
|
7420
|
+
this._environment = _environment;
|
|
7421
|
+
this.owner = owner;
|
|
7422
|
+
this.template = template;
|
|
7423
|
+
this.namespace = namespace;
|
|
7424
|
+
var outletStateTag = (0, _validator.createTag)();
|
|
7425
|
+
var outletState = {
|
|
7426
|
+
outlets: {
|
|
7427
|
+
main: undefined
|
|
7428
|
+
},
|
|
7429
|
+
render: {
|
|
7430
|
+
owner: owner,
|
|
7431
|
+
into: undefined,
|
|
7432
|
+
outlet: TOP_LEVEL_OUTLET,
|
|
7433
|
+
name: TOP_LEVEL_NAME,
|
|
7434
|
+
controller: undefined,
|
|
7435
|
+
model: undefined,
|
|
7436
|
+
template
|
|
7437
|
+
}
|
|
7438
|
+
};
|
|
7439
|
+
var ref = this.ref = (0, _reference.createComputeRef)(() => {
|
|
7440
|
+
(0, _validator.consumeTag)(outletStateTag);
|
|
7441
|
+
return outletState;
|
|
7442
|
+
}, state => {
|
|
7443
|
+
(0, _validator.dirtyTag)(outletStateTag);
|
|
7444
|
+
outletState.outlets['main'] = state;
|
|
7445
|
+
});
|
|
7446
|
+
this.state = {
|
|
7447
|
+
ref,
|
|
7448
|
+
name: TOP_LEVEL_NAME,
|
|
7449
|
+
outlet: TOP_LEVEL_OUTLET,
|
|
7450
|
+
template,
|
|
7451
|
+
controller: undefined,
|
|
7452
|
+
model: undefined
|
|
7453
|
+
};
|
|
7454
|
+
}
|
|
7455
|
+
|
|
7456
|
+
static extend(injections) {
|
|
7457
|
+
return class extends OutletView {
|
|
7458
|
+
static create(options) {
|
|
7459
|
+
if (options) {
|
|
7460
|
+
return super.create(Object.assign({}, injections, options));
|
|
7461
|
+
} else {
|
|
7462
|
+
return super.create(injections);
|
|
7463
|
+
}
|
|
7464
|
+
}
|
|
7465
|
+
|
|
7466
|
+
};
|
|
7467
|
+
}
|
|
7468
|
+
|
|
7469
|
+
static reopenClass(injections) {
|
|
7470
|
+
Object.assign(this, injections);
|
|
7471
|
+
}
|
|
7472
|
+
|
|
7473
|
+
static create(options) {
|
|
7474
|
+
var {
|
|
7475
|
+
environment: _environment,
|
|
7476
|
+
application: namespace,
|
|
7477
|
+
template: templateFactory$$1
|
|
7478
|
+
} = options;
|
|
7479
|
+
var owner = (0, _owner2.getOwner)(options);
|
|
7480
|
+
(true && !(owner) && (0, _debug.assert)('OutletView is unexpectedly missing an owner', owner));
|
|
7481
|
+
var template = templateFactory$$1(owner);
|
|
7482
|
+
return new OutletView(_environment, owner, template, namespace);
|
|
7483
|
+
}
|
|
7484
|
+
|
|
7485
|
+
appendTo(selector) {
|
|
7486
|
+
var target;
|
|
7487
|
+
|
|
7488
|
+
if (this._environment.hasDOM) {
|
|
7489
|
+
target = typeof selector === 'string' ? document.querySelector(selector) : selector;
|
|
7490
|
+
} else {
|
|
7491
|
+
target = selector;
|
|
7492
|
+
}
|
|
7493
|
+
|
|
7494
|
+
var renderer = this.owner.lookup('renderer:-dom'); // SAFETY: It's not clear that this cast is safe.
|
|
7495
|
+
// The types for appendOutletView may be incorrect or this is a potential bug.
|
|
7496
|
+
|
|
7497
|
+
(0, _runloop.schedule)('render', renderer, 'appendOutletView', this, target);
|
|
7498
|
+
}
|
|
7499
|
+
|
|
7500
|
+
rerender() {
|
|
7501
|
+
/**/
|
|
7502
|
+
}
|
|
7503
|
+
|
|
7504
|
+
setOutletState(state) {
|
|
7505
|
+
(0, _reference.updateRef)(this.ref, state);
|
|
7506
|
+
}
|
|
7507
|
+
|
|
7508
|
+
destroy() {
|
|
7509
|
+
/**/
|
|
7510
|
+
}
|
|
7511
|
+
|
|
7512
|
+
}
|
|
7513
|
+
|
|
7514
|
+
_exports.OutletView = OutletView;
|
|
7515
|
+
|
|
8079
7516
|
class DynamicScope {
|
|
8080
7517
|
constructor(view, outletState) {
|
|
8081
7518
|
this.view = view;
|
|
@@ -8133,7 +7570,7 @@ define("@ember/-internals/glimmer/index", ["exports", "@glimmer/opcode-compiler"
|
|
|
8133
7570
|
this.root = root;
|
|
8134
7571
|
this.runtime = runtime;
|
|
8135
7572
|
(true && !(template !== undefined) && (0, _debug.assert)(`You cannot render \`${(0, _reference.valueForRef)(self)}\` without a template.`, template !== undefined));
|
|
8136
|
-
this.id = (0, _views.getViewId)(root);
|
|
7573
|
+
this.id = root instanceof OutletView ? (0, _utils.guidFor)(root) : (0, _views.getViewId)(root);
|
|
8137
7574
|
this.result = undefined;
|
|
8138
7575
|
this.destroyed = false;
|
|
8139
7576
|
this.render = errorLoopTransaction(() => {
|
|
@@ -8575,106 +8012,6 @@ define("@ember/-internals/glimmer/index", ["exports", "@glimmer/opcode-compiler"
|
|
|
8575
8012
|
"moduleName": "packages/@ember/-internals/glimmer/lib/templates/outlet.hbs",
|
|
8576
8013
|
"isStrictMode": false
|
|
8577
8014
|
});
|
|
8578
|
-
var TOP_LEVEL_NAME = '-top-level';
|
|
8579
|
-
var TOP_LEVEL_OUTLET = 'main';
|
|
8580
|
-
|
|
8581
|
-
class OutletView {
|
|
8582
|
-
constructor(_environment, owner, template, namespace) {
|
|
8583
|
-
this._environment = _environment;
|
|
8584
|
-
this.owner = owner;
|
|
8585
|
-
this.template = template;
|
|
8586
|
-
this.namespace = namespace;
|
|
8587
|
-
var outletStateTag = (0, _validator.createTag)();
|
|
8588
|
-
var outletState = {
|
|
8589
|
-
outlets: {
|
|
8590
|
-
main: undefined
|
|
8591
|
-
},
|
|
8592
|
-
render: {
|
|
8593
|
-
owner: owner,
|
|
8594
|
-
into: undefined,
|
|
8595
|
-
outlet: TOP_LEVEL_OUTLET,
|
|
8596
|
-
name: TOP_LEVEL_NAME,
|
|
8597
|
-
controller: undefined,
|
|
8598
|
-
model: undefined,
|
|
8599
|
-
template
|
|
8600
|
-
}
|
|
8601
|
-
};
|
|
8602
|
-
var ref = this.ref = (0, _reference.createComputeRef)(() => {
|
|
8603
|
-
(0, _validator.consumeTag)(outletStateTag);
|
|
8604
|
-
return outletState;
|
|
8605
|
-
}, state => {
|
|
8606
|
-
(0, _validator.dirtyTag)(outletStateTag);
|
|
8607
|
-
outletState.outlets.main = state;
|
|
8608
|
-
});
|
|
8609
|
-
this.state = {
|
|
8610
|
-
ref,
|
|
8611
|
-
name: TOP_LEVEL_NAME,
|
|
8612
|
-
outlet: TOP_LEVEL_OUTLET,
|
|
8613
|
-
template,
|
|
8614
|
-
controller: undefined,
|
|
8615
|
-
model: undefined
|
|
8616
|
-
};
|
|
8617
|
-
}
|
|
8618
|
-
|
|
8619
|
-
static extend(injections) {
|
|
8620
|
-
return class extends OutletView {
|
|
8621
|
-
static create(options) {
|
|
8622
|
-
if (options) {
|
|
8623
|
-
return super.create(Object.assign({}, injections, options));
|
|
8624
|
-
} else {
|
|
8625
|
-
return super.create(injections);
|
|
8626
|
-
}
|
|
8627
|
-
}
|
|
8628
|
-
|
|
8629
|
-
};
|
|
8630
|
-
}
|
|
8631
|
-
|
|
8632
|
-
static reopenClass(injections) {
|
|
8633
|
-
Object.assign(this, injections);
|
|
8634
|
-
}
|
|
8635
|
-
|
|
8636
|
-
static create(options) {
|
|
8637
|
-
var {
|
|
8638
|
-
environment: _environment,
|
|
8639
|
-
application: namespace,
|
|
8640
|
-
template: templateFactory$$1
|
|
8641
|
-
} = options;
|
|
8642
|
-
var owner = (0, _owner2.getOwner)(options);
|
|
8643
|
-
(true && !(owner) && (0, _debug.assert)('OutletView is unexpectedly missing an owner', owner));
|
|
8644
|
-
var template = templateFactory$$1(owner);
|
|
8645
|
-
return new OutletView(_environment, owner, template, namespace);
|
|
8646
|
-
}
|
|
8647
|
-
|
|
8648
|
-
appendTo(selector) {
|
|
8649
|
-
var target;
|
|
8650
|
-
|
|
8651
|
-
if (this._environment.hasDOM) {
|
|
8652
|
-
target = typeof selector === 'string' ? document.querySelector(selector) : selector;
|
|
8653
|
-
} else {
|
|
8654
|
-
target = selector;
|
|
8655
|
-
}
|
|
8656
|
-
|
|
8657
|
-
var renderer = this.owner.lookup('renderer:-dom'); // SAFETY: It's not clear that this cast is safe.
|
|
8658
|
-
// The types for appendOutletView may be incorrect or this is a potential bug.
|
|
8659
|
-
|
|
8660
|
-
(0, _runloop.schedule)('render', renderer, 'appendOutletView', this, target);
|
|
8661
|
-
}
|
|
8662
|
-
|
|
8663
|
-
rerender() {
|
|
8664
|
-
/**/
|
|
8665
|
-
}
|
|
8666
|
-
|
|
8667
|
-
setOutletState(state) {
|
|
8668
|
-
(0, _reference.updateRef)(this.ref, state);
|
|
8669
|
-
}
|
|
8670
|
-
|
|
8671
|
-
destroy() {
|
|
8672
|
-
/**/
|
|
8673
|
-
}
|
|
8674
|
-
|
|
8675
|
-
}
|
|
8676
|
-
|
|
8677
|
-
_exports.OutletView = OutletView;
|
|
8678
8015
|
|
|
8679
8016
|
function setupApplicationRegistry(registry) {
|
|
8680
8017
|
// because we are using injections we can't use instantiate false
|
|
@@ -11527,10 +10864,6 @@ define("@ember/-internals/metal/index", ["exports", "@ember/-internals/meta", "@
|
|
|
11527
10864
|
function isPath(path) {
|
|
11528
10865
|
return typeof path === 'string' && firstDotIndexCache.get(path) !== -1;
|
|
11529
10866
|
}
|
|
11530
|
-
/**
|
|
11531
|
-
@module @ember/object
|
|
11532
|
-
*/
|
|
11533
|
-
|
|
11534
10867
|
|
|
11535
10868
|
var PROXY_CONTENT = (0, _utils.symbol)('PROXY_CONTENT');
|
|
11536
10869
|
_exports.PROXY_CONTENT = PROXY_CONTENT;
|
|
@@ -12569,7 +11902,7 @@ define("@ember/-internals/metal/index", ["exports", "@ember/-internals/meta", "@
|
|
|
12569
11902
|
} else if (_mixins !== undefined) {
|
|
12570
11903
|
mergeMixins(_mixins, meta$$1, descs, values, base, keys, keysWithSuper);
|
|
12571
11904
|
|
|
12572
|
-
if (currentMixin._without !== undefined) {
|
|
11905
|
+
if (currentMixin instanceof Mixin && currentMixin._without !== undefined) {
|
|
12573
11906
|
currentMixin._without.forEach(keyName => {
|
|
12574
11907
|
// deleting the key means we won't process the value
|
|
12575
11908
|
var index = keys.indexOf(keyName);
|
|
@@ -13302,40 +12635,38 @@ define("@ember/-internals/metal/index", ["exports", "@ember/-internals/meta", "@
|
|
|
13302
12635
|
_exports.TrackedDescriptor = TrackedDescriptor;
|
|
13303
12636
|
|
|
13304
12637
|
var cached = function () {
|
|
13305
|
-
{
|
|
13306
|
-
|
|
13307
|
-
|
|
13308
|
-
}
|
|
12638
|
+
for (var _len12 = arguments.length, args = new Array(_len12), _key13 = 0; _key13 < _len12; _key13++) {
|
|
12639
|
+
args[_key13] = arguments[_key13];
|
|
12640
|
+
}
|
|
13309
12641
|
|
|
13310
|
-
|
|
12642
|
+
var [target, key, descriptor] = args; // Error on `@cached()`, `@cached(...args)`, and `@cached propName = value;`
|
|
13311
12643
|
|
|
13312
|
-
|
|
13313
|
-
|
|
13314
|
-
|
|
12644
|
+
if (true
|
|
12645
|
+
/* DEBUG */
|
|
12646
|
+
&& target === undefined) throwCachedExtraneousParens();
|
|
13315
12647
|
|
|
13316
|
-
|
|
13317
|
-
|
|
13318
|
-
|
|
13319
|
-
|
|
13320
|
-
|
|
12648
|
+
if (true
|
|
12649
|
+
/* DEBUG */
|
|
12650
|
+
&& (typeof target !== 'object' || typeof key !== 'string' || typeof descriptor !== 'object' || args.length !== 3)) {
|
|
12651
|
+
throwCachedInvalidArgsError(args);
|
|
12652
|
+
}
|
|
13321
12653
|
|
|
13322
|
-
|
|
13323
|
-
|
|
13324
|
-
|
|
13325
|
-
|
|
13326
|
-
|
|
12654
|
+
if (true
|
|
12655
|
+
/* DEBUG */
|
|
12656
|
+
&& (!('get' in descriptor) || typeof descriptor.get !== 'function')) {
|
|
12657
|
+
throwCachedGetterOnlyError(key);
|
|
12658
|
+
}
|
|
13327
12659
|
|
|
13328
|
-
|
|
13329
|
-
|
|
12660
|
+
var caches = new WeakMap();
|
|
12661
|
+
var getter = descriptor.get;
|
|
13330
12662
|
|
|
13331
|
-
|
|
13332
|
-
|
|
13333
|
-
|
|
13334
|
-
|
|
12663
|
+
descriptor.get = function () {
|
|
12664
|
+
if (!caches.has(this)) {
|
|
12665
|
+
caches.set(this, (0, _validator.createCache)(getter.bind(this)));
|
|
12666
|
+
}
|
|
13335
12667
|
|
|
13336
|
-
|
|
13337
|
-
|
|
13338
|
-
}
|
|
12668
|
+
return (0, _validator.getValue)(caches.get(this));
|
|
12669
|
+
};
|
|
13339
12670
|
};
|
|
13340
12671
|
|
|
13341
12672
|
_exports.cached = cached;
|
|
@@ -15028,151 +14359,6 @@ define("@ember/-internals/routing/lib/services/router", ["exports", "@ember/-int
|
|
|
15028
14359
|
}
|
|
15029
14360
|
|
|
15030
14361
|
class RouterService extends _service.default.extend(_runtime.Evented) {
|
|
15031
|
-
constructor() {
|
|
15032
|
-
super(...arguments);
|
|
15033
|
-
/**
|
|
15034
|
-
You can register a listener for events emitted by this service with `.on()`:
|
|
15035
|
-
```app/routes/contact-form.js
|
|
15036
|
-
import Route from '@ember/routing';
|
|
15037
|
-
import { service } from '@ember/service';
|
|
15038
|
-
export default class extends Route {
|
|
15039
|
-
@service router;
|
|
15040
|
-
activate() {
|
|
15041
|
-
this.router.on('routeWillChange', (transition) => {
|
|
15042
|
-
if (!transition.to.find(route => route.name === this.routeName)) {
|
|
15043
|
-
alert("Please save or cancel your changes.");
|
|
15044
|
-
transition.abort();
|
|
15045
|
-
}
|
|
15046
|
-
})
|
|
15047
|
-
}
|
|
15048
|
-
}
|
|
15049
|
-
```
|
|
15050
|
-
@method on
|
|
15051
|
-
@param {String} eventName
|
|
15052
|
-
@param {Function} callback
|
|
15053
|
-
@public
|
|
15054
|
-
*/
|
|
15055
|
-
|
|
15056
|
-
/**
|
|
15057
|
-
You can unregister a listener for events emitted by this service with `.off()`:
|
|
15058
|
-
```app/routes/contact-form.js
|
|
15059
|
-
import Route from '@ember/routing';
|
|
15060
|
-
import { service } from '@ember/service';
|
|
15061
|
-
export default class extends Route {
|
|
15062
|
-
@service router;
|
|
15063
|
-
callback = (transition) => {
|
|
15064
|
-
if (!transition.to.find(route => route.name === this.routeName)) {
|
|
15065
|
-
alert("Please save or cancel your changes.");
|
|
15066
|
-
transition.abort();
|
|
15067
|
-
}
|
|
15068
|
-
};
|
|
15069
|
-
activate() {
|
|
15070
|
-
this.router.on('routeWillChange', this.callback);
|
|
15071
|
-
}
|
|
15072
|
-
deactivate() {
|
|
15073
|
-
this.router.off('routeWillChange', this.callback);
|
|
15074
|
-
}
|
|
15075
|
-
```
|
|
15076
|
-
@method off
|
|
15077
|
-
@param {String} eventName
|
|
15078
|
-
@param {Function} callback
|
|
15079
|
-
@public
|
|
15080
|
-
*/
|
|
15081
|
-
|
|
15082
|
-
/**
|
|
15083
|
-
The `routeWillChange` event is fired at the beginning of any
|
|
15084
|
-
attempted transition with a `Transition` object as the sole
|
|
15085
|
-
argument. This action can be used for aborting, redirecting,
|
|
15086
|
-
or decorating the transition from the currently active routes.
|
|
15087
|
-
A good example is preventing navigation when a form is
|
|
15088
|
-
half-filled out:
|
|
15089
|
-
```app/routes/contact-form.js
|
|
15090
|
-
import Route from '@ember/routing';
|
|
15091
|
-
import { service } from '@ember/service';
|
|
15092
|
-
export default class extends Route {
|
|
15093
|
-
@service router;
|
|
15094
|
-
activate() {
|
|
15095
|
-
this.router.on('routeWillChange', (transition) => {
|
|
15096
|
-
if (!transition.to.find(route => route.name === this.routeName)) {
|
|
15097
|
-
alert("Please save or cancel your changes.");
|
|
15098
|
-
transition.abort();
|
|
15099
|
-
}
|
|
15100
|
-
})
|
|
15101
|
-
}
|
|
15102
|
-
}
|
|
15103
|
-
```
|
|
15104
|
-
The `routeWillChange` event fires whenever a new route is chosen as the desired target of a transition. This includes `transitionTo`, `replaceWith`, all redirection for any reason including error handling, and abort. Aborting implies changing the desired target back to where you already were. Once a transition has completed, `routeDidChange` fires.
|
|
15105
|
-
@event routeWillChange
|
|
15106
|
-
@param {Transition} transition
|
|
15107
|
-
@public
|
|
15108
|
-
*/
|
|
15109
|
-
|
|
15110
|
-
/**
|
|
15111
|
-
The `routeDidChange` event only fires once a transition has settled.
|
|
15112
|
-
This includes aborts and error substates. Like the `routeWillChange` event
|
|
15113
|
-
it receives a Transition as the sole argument.
|
|
15114
|
-
A good example is sending some analytics when the route has transitioned:
|
|
15115
|
-
```app/routes/contact-form.js
|
|
15116
|
-
import Route from '@ember/routing';
|
|
15117
|
-
import { service } from '@ember/service';
|
|
15118
|
-
export default class extends Route {
|
|
15119
|
-
@service router;
|
|
15120
|
-
activate() {
|
|
15121
|
-
this.router.on('routeDidChange', (transition) => {
|
|
15122
|
-
ga.send('pageView', {
|
|
15123
|
-
current: transition.to.name,
|
|
15124
|
-
from: transition.from.name
|
|
15125
|
-
});
|
|
15126
|
-
})
|
|
15127
|
-
}
|
|
15128
|
-
}
|
|
15129
|
-
```
|
|
15130
|
-
`routeDidChange` will be called after any `Route`'s
|
|
15131
|
-
[didTransition](/ember/release/classes/Route/events/didTransition?anchor=didTransition)
|
|
15132
|
-
action has been fired.
|
|
15133
|
-
The updates of properties
|
|
15134
|
-
[currentURL](/ember/release/classes/RouterService/properties/currentURL?anchor=currentURL),
|
|
15135
|
-
[currentRouteName](/ember/release/classes/RouterService/properties/currentURL?anchor=currentRouteName)
|
|
15136
|
-
and
|
|
15137
|
-
[currentRoute](/ember/release/classes/RouterService/properties/currentURL?anchor=currentRoute)
|
|
15138
|
-
are completed at the time `routeDidChange` is called.
|
|
15139
|
-
@event routeDidChange
|
|
15140
|
-
@param {Transition} transition
|
|
15141
|
-
@public
|
|
15142
|
-
*/
|
|
15143
|
-
// Canary features
|
|
15144
|
-
|
|
15145
|
-
/**
|
|
15146
|
-
* Refreshes all currently active routes, doing a full transition.
|
|
15147
|
-
* If a route name is provided and refers to a currently active route,
|
|
15148
|
-
* it will refresh only that route and its descendents.
|
|
15149
|
-
* Returns a promise that will be resolved once the refresh is complete.
|
|
15150
|
-
* All resetController, beforeModel, model, afterModel, redirect, and setupController
|
|
15151
|
-
* hooks will be called again. You will get new data from the model hook.
|
|
15152
|
-
*
|
|
15153
|
-
* @method refresh
|
|
15154
|
-
* @param {String} [routeName] the route to refresh (along with all child routes)
|
|
15155
|
-
* @return Transition
|
|
15156
|
-
* @category EMBER_ROUTING_ROUTER_SERVICE_REFRESH
|
|
15157
|
-
* @public
|
|
15158
|
-
*/
|
|
15159
|
-
|
|
15160
|
-
this.refresh = true
|
|
15161
|
-
/* EMBER_ROUTING_ROUTER_SERVICE_REFRESH */
|
|
15162
|
-
? function (pivotRouteName) {
|
|
15163
|
-
if (!pivotRouteName) {
|
|
15164
|
-
return this._router._routerMicrolib.refresh();
|
|
15165
|
-
}
|
|
15166
|
-
|
|
15167
|
-
(true && !(this._router.hasRoute(pivotRouteName)) && (0, _debug.assert)(`The route "${pivotRouteName}" was not found`, this._router.hasRoute(pivotRouteName)));
|
|
15168
|
-
(true && !(this.isActive(pivotRouteName)) && (0, _debug.assert)(`The route "${pivotRouteName}" is currently not active`, this.isActive(pivotRouteName)));
|
|
15169
|
-
var owner = (0, _owner.getOwner)(this);
|
|
15170
|
-
(true && !(owner) && (0, _debug.assert)('RouterService is unexpectedly missing an owner', owner));
|
|
15171
|
-
var pivotRoute = owner.lookup(`route:${pivotRouteName}`);
|
|
15172
|
-
return this._router._routerMicrolib.refresh(pivotRoute);
|
|
15173
|
-
} : undefined;
|
|
15174
|
-
}
|
|
15175
|
-
|
|
15176
14362
|
get _router() {
|
|
15177
14363
|
var router = this[ROUTER];
|
|
15178
14364
|
|
|
@@ -15508,6 +14694,146 @@ define("@ember/-internals/routing/lib/services/router", ["exports", "@ember/-int
|
|
|
15508
14694
|
var internalURL = cleanURL(url, this.rootURL);
|
|
15509
14695
|
return this._router._routerMicrolib.recognizeAndLoad(internalURL);
|
|
15510
14696
|
}
|
|
14697
|
+
/**
|
|
14698
|
+
You can register a listener for events emitted by this service with `.on()`:
|
|
14699
|
+
```app/routes/contact-form.js
|
|
14700
|
+
import Route from '@ember/routing';
|
|
14701
|
+
import { service } from '@ember/service';
|
|
14702
|
+
export default class extends Route {
|
|
14703
|
+
@service router;
|
|
14704
|
+
activate() {
|
|
14705
|
+
this.router.on('routeWillChange', (transition) => {
|
|
14706
|
+
if (!transition.to.find(route => route.name === this.routeName)) {
|
|
14707
|
+
alert("Please save or cancel your changes.");
|
|
14708
|
+
transition.abort();
|
|
14709
|
+
}
|
|
14710
|
+
})
|
|
14711
|
+
}
|
|
14712
|
+
}
|
|
14713
|
+
```
|
|
14714
|
+
@method on
|
|
14715
|
+
@param {String} eventName
|
|
14716
|
+
@param {Function} callback
|
|
14717
|
+
@public
|
|
14718
|
+
*/
|
|
14719
|
+
|
|
14720
|
+
/**
|
|
14721
|
+
You can unregister a listener for events emitted by this service with `.off()`:
|
|
14722
|
+
```app/routes/contact-form.js
|
|
14723
|
+
import Route from '@ember/routing';
|
|
14724
|
+
import { service } from '@ember/service';
|
|
14725
|
+
export default class extends Route {
|
|
14726
|
+
@service router;
|
|
14727
|
+
callback = (transition) => {
|
|
14728
|
+
if (!transition.to.find(route => route.name === this.routeName)) {
|
|
14729
|
+
alert("Please save or cancel your changes.");
|
|
14730
|
+
transition.abort();
|
|
14731
|
+
}
|
|
14732
|
+
};
|
|
14733
|
+
activate() {
|
|
14734
|
+
this.router.on('routeWillChange', this.callback);
|
|
14735
|
+
}
|
|
14736
|
+
deactivate() {
|
|
14737
|
+
this.router.off('routeWillChange', this.callback);
|
|
14738
|
+
}
|
|
14739
|
+
```
|
|
14740
|
+
@method off
|
|
14741
|
+
@param {String} eventName
|
|
14742
|
+
@param {Function} callback
|
|
14743
|
+
@public
|
|
14744
|
+
*/
|
|
14745
|
+
|
|
14746
|
+
/**
|
|
14747
|
+
The `routeWillChange` event is fired at the beginning of any
|
|
14748
|
+
attempted transition with a `Transition` object as the sole
|
|
14749
|
+
argument. This action can be used for aborting, redirecting,
|
|
14750
|
+
or decorating the transition from the currently active routes.
|
|
14751
|
+
A good example is preventing navigation when a form is
|
|
14752
|
+
half-filled out:
|
|
14753
|
+
```app/routes/contact-form.js
|
|
14754
|
+
import Route from '@ember/routing';
|
|
14755
|
+
import { service } from '@ember/service';
|
|
14756
|
+
export default class extends Route {
|
|
14757
|
+
@service router;
|
|
14758
|
+
activate() {
|
|
14759
|
+
this.router.on('routeWillChange', (transition) => {
|
|
14760
|
+
if (!transition.to.find(route => route.name === this.routeName)) {
|
|
14761
|
+
alert("Please save or cancel your changes.");
|
|
14762
|
+
transition.abort();
|
|
14763
|
+
}
|
|
14764
|
+
})
|
|
14765
|
+
}
|
|
14766
|
+
}
|
|
14767
|
+
```
|
|
14768
|
+
The `routeWillChange` event fires whenever a new route is chosen as the desired target of a transition. This includes `transitionTo`, `replaceWith`, all redirection for any reason including error handling, and abort. Aborting implies changing the desired target back to where you already were. Once a transition has completed, `routeDidChange` fires.
|
|
14769
|
+
@event routeWillChange
|
|
14770
|
+
@param {Transition} transition
|
|
14771
|
+
@public
|
|
14772
|
+
*/
|
|
14773
|
+
|
|
14774
|
+
/**
|
|
14775
|
+
The `routeDidChange` event only fires once a transition has settled.
|
|
14776
|
+
This includes aborts and error substates. Like the `routeWillChange` event
|
|
14777
|
+
it receives a Transition as the sole argument.
|
|
14778
|
+
A good example is sending some analytics when the route has transitioned:
|
|
14779
|
+
```app/routes/contact-form.js
|
|
14780
|
+
import Route from '@ember/routing';
|
|
14781
|
+
import { service } from '@ember/service';
|
|
14782
|
+
export default class extends Route {
|
|
14783
|
+
@service router;
|
|
14784
|
+
activate() {
|
|
14785
|
+
this.router.on('routeDidChange', (transition) => {
|
|
14786
|
+
ga.send('pageView', {
|
|
14787
|
+
current: transition.to.name,
|
|
14788
|
+
from: transition.from.name
|
|
14789
|
+
});
|
|
14790
|
+
})
|
|
14791
|
+
}
|
|
14792
|
+
}
|
|
14793
|
+
```
|
|
14794
|
+
`routeDidChange` will be called after any `Route`'s
|
|
14795
|
+
[didTransition](/ember/release/classes/Route/events/didTransition?anchor=didTransition)
|
|
14796
|
+
action has been fired.
|
|
14797
|
+
The updates of properties
|
|
14798
|
+
[currentURL](/ember/release/classes/RouterService/properties/currentURL?anchor=currentURL),
|
|
14799
|
+
[currentRouteName](/ember/release/classes/RouterService/properties/currentURL?anchor=currentRouteName)
|
|
14800
|
+
and
|
|
14801
|
+
[currentRoute](/ember/release/classes/RouterService/properties/currentURL?anchor=currentRoute)
|
|
14802
|
+
are completed at the time `routeDidChange` is called.
|
|
14803
|
+
@event routeDidChange
|
|
14804
|
+
@param {Transition} transition
|
|
14805
|
+
@public
|
|
14806
|
+
*/
|
|
14807
|
+
|
|
14808
|
+
/**
|
|
14809
|
+
* Refreshes all currently active routes, doing a full transition.
|
|
14810
|
+
* If a route name is provided and refers to a currently active route,
|
|
14811
|
+
* it will refresh only that route and its descendents.
|
|
14812
|
+
* Returns a promise that will be resolved once the refresh is complete.
|
|
14813
|
+
* All resetController, beforeModel, model, afterModel, redirect, and setupController
|
|
14814
|
+
* hooks will be called again. You will get new data from the model hook.
|
|
14815
|
+
*
|
|
14816
|
+
* @method refresh
|
|
14817
|
+
* @param {String} [routeName] the route to refresh (along with all child routes)
|
|
14818
|
+
* @return Transition
|
|
14819
|
+
* @public
|
|
14820
|
+
*/
|
|
14821
|
+
|
|
14822
|
+
|
|
14823
|
+
refresh(pivotRouteName) {
|
|
14824
|
+
if (!pivotRouteName) {
|
|
14825
|
+
return this._router._routerMicrolib.refresh();
|
|
14826
|
+
}
|
|
14827
|
+
|
|
14828
|
+
(true && !(this._router.hasRoute(pivotRouteName)) && (0, _debug.assert)(`The route "${pivotRouteName}" was not found`, this._router.hasRoute(pivotRouteName)));
|
|
14829
|
+
(true && !(this.isActive(pivotRouteName)) && (0, _debug.assert)(`The route "${pivotRouteName}" is currently not active`, this.isActive(pivotRouteName)));
|
|
14830
|
+
var owner = (0, _owner.getOwner)(this);
|
|
14831
|
+
(true && !(owner) && (0, _debug.assert)('RouterService is unexpectedly missing an owner', owner));
|
|
14832
|
+
var pivotRoute = owner.lookup(`route:${pivotRouteName}`); // R could be instantiated with a different sub-type
|
|
14833
|
+
// @ts-ignore
|
|
14834
|
+
|
|
14835
|
+
return this._router._routerMicrolib.refresh(pivotRoute);
|
|
14836
|
+
}
|
|
15511
14837
|
|
|
15512
14838
|
}
|
|
15513
14839
|
|
|
@@ -18025,6 +17351,8 @@ define("@ember/-internals/routing/lib/system/router", ["exports", "@ember/-inter
|
|
|
18025
17351
|
seen[name] = true;
|
|
18026
17352
|
|
|
18027
17353
|
if (!route) {
|
|
17354
|
+
// SAFETY: this is configured in `commonSetupRegistry` in the
|
|
17355
|
+
// `@ember/application/lib` package.
|
|
18028
17356
|
var DefaultRoute = routeOwner.factoryFor('route:basic').class;
|
|
18029
17357
|
routeOwner.register(fullRouteName, DefaultRoute.extend());
|
|
18030
17358
|
route = routeOwner.lookup(fullRouteName);
|
|
@@ -19473,7 +18801,7 @@ define("@ember/-internals/routing/lib/system/router", ["exports", "@ember/-inter
|
|
|
19473
18801
|
// Create an entry to represent our default template name,
|
|
19474
18802
|
// just so other routes can target it and inherit its place
|
|
19475
18803
|
// in the outlet hierarchy.
|
|
19476
|
-
defaultParentState.outlets
|
|
18804
|
+
defaultParentState.outlets['main'] = {
|
|
19477
18805
|
render: {
|
|
19478
18806
|
name: routeName,
|
|
19479
18807
|
outlet: 'main'
|
|
@@ -20433,13 +19761,17 @@ define("@ember/-internals/runtime/lib/ext/rsvp", ["exports", "rsvp", "@ember/run
|
|
|
20433
19761
|
|
|
20434
19762
|
function errorFor(reason) {
|
|
20435
19763
|
if (!reason) return;
|
|
19764
|
+
var withErrorThrown = reason;
|
|
20436
19765
|
|
|
20437
|
-
if (
|
|
20438
|
-
return unwrapErrorThrown(
|
|
19766
|
+
if (withErrorThrown.errorThrown) {
|
|
19767
|
+
return unwrapErrorThrown(withErrorThrown);
|
|
20439
19768
|
}
|
|
20440
19769
|
|
|
20441
|
-
|
|
20442
|
-
|
|
19770
|
+
var withName = reason;
|
|
19771
|
+
|
|
19772
|
+
if (withName.name === 'UnrecognizedURLError') {
|
|
19773
|
+
(true && !(false) && (0, _debug.assert)(`The URL '${withName.message}' did not match any routes in your application`, false)); // @ts-expect-error We'll hit this if the assert is stripped
|
|
19774
|
+
|
|
20443
19775
|
return;
|
|
20444
19776
|
}
|
|
20445
19777
|
|
|
@@ -20598,7 +19930,7 @@ define("@ember/-internals/runtime/lib/mixins/-proxy", ["exports", "@ember/-inter
|
|
|
20598
19930
|
var _default = _metal.Mixin.create({
|
|
20599
19931
|
/**
|
|
20600
19932
|
The object whose properties will be forwarded.
|
|
20601
|
-
|
|
19933
|
+
@property content
|
|
20602
19934
|
@type {unknown}
|
|
20603
19935
|
@default null
|
|
20604
19936
|
@public
|
|
@@ -22254,7 +21586,7 @@ define("@ember/-internals/runtime/lib/mixins/array", ["exports", "@ember/-intern
|
|
|
22254
21586
|
colors.unshiftObjects('yellow'); // Type Error: 'undefined' is not a function
|
|
22255
21587
|
```
|
|
22256
21588
|
@method unshiftObjects
|
|
22257
|
-
@param {
|
|
21589
|
+
@param {Enumerable} objects the objects to add
|
|
22258
21590
|
@return {EmberArray} receiver
|
|
22259
21591
|
@public
|
|
22260
21592
|
*/
|
|
@@ -23419,7 +22751,7 @@ define("@ember/-internals/runtime/lib/mixins/promise_proxy", ["exports", "@ember
|
|
|
23419
22751
|
/**
|
|
23420
22752
|
If the proxied promise is rejected this will contain the reason
|
|
23421
22753
|
provided.
|
|
23422
|
-
|
|
22754
|
+
@property reason
|
|
23423
22755
|
@default null
|
|
23424
22756
|
@public
|
|
23425
22757
|
*/
|
|
@@ -23427,7 +22759,7 @@ define("@ember/-internals/runtime/lib/mixins/promise_proxy", ["exports", "@ember
|
|
|
23427
22759
|
|
|
23428
22760
|
/**
|
|
23429
22761
|
Once the proxied promise has settled this will become `false`.
|
|
23430
|
-
|
|
22762
|
+
@property isPending
|
|
23431
22763
|
@default true
|
|
23432
22764
|
@public
|
|
23433
22765
|
*/
|
|
@@ -23437,7 +22769,7 @@ define("@ember/-internals/runtime/lib/mixins/promise_proxy", ["exports", "@ember
|
|
|
23437
22769
|
|
|
23438
22770
|
/**
|
|
23439
22771
|
Once the proxied promise has settled this will become `true`.
|
|
23440
|
-
|
|
22772
|
+
@property isSettled
|
|
23441
22773
|
@default false
|
|
23442
22774
|
@public
|
|
23443
22775
|
*/
|
|
@@ -23447,7 +22779,7 @@ define("@ember/-internals/runtime/lib/mixins/promise_proxy", ["exports", "@ember
|
|
|
23447
22779
|
|
|
23448
22780
|
/**
|
|
23449
22781
|
Will become `true` if the proxied promise is rejected.
|
|
23450
|
-
|
|
22782
|
+
@property isRejected
|
|
23451
22783
|
@default false
|
|
23452
22784
|
@public
|
|
23453
22785
|
*/
|
|
@@ -23455,7 +22787,7 @@ define("@ember/-internals/runtime/lib/mixins/promise_proxy", ["exports", "@ember
|
|
|
23455
22787
|
|
|
23456
22788
|
/**
|
|
23457
22789
|
Will become `true` if the proxied promise is fulfilled.
|
|
23458
|
-
|
|
22790
|
+
@property isFulfilled
|
|
23459
22791
|
@default false
|
|
23460
22792
|
@public
|
|
23461
22793
|
*/
|
|
@@ -23463,17 +22795,17 @@ define("@ember/-internals/runtime/lib/mixins/promise_proxy", ["exports", "@ember
|
|
|
23463
22795
|
|
|
23464
22796
|
/**
|
|
23465
22797
|
The promise whose fulfillment value is being proxied by this object.
|
|
23466
|
-
|
|
22798
|
+
This property must be specified upon creation, and should not be
|
|
23467
22799
|
changed once created.
|
|
23468
|
-
|
|
23469
|
-
|
|
22800
|
+
Example:
|
|
22801
|
+
```javascript
|
|
23470
22802
|
import ObjectProxy from '@ember/object/proxy';
|
|
23471
22803
|
import PromiseProxyMixin from '@ember/object/promise-proxy-mixin';
|
|
23472
|
-
|
|
22804
|
+
ObjectProxy.extend(PromiseProxyMixin).create({
|
|
23473
22805
|
promise: <thenable>
|
|
23474
22806
|
});
|
|
23475
22807
|
```
|
|
23476
|
-
|
|
22808
|
+
@property promise
|
|
23477
22809
|
@public
|
|
23478
22810
|
*/
|
|
23479
22811
|
promise: (0, _metal.computed)({
|
|
@@ -23489,8 +22821,8 @@ define("@ember/-internals/runtime/lib/mixins/promise_proxy", ["exports", "@ember
|
|
|
23489
22821
|
|
|
23490
22822
|
/**
|
|
23491
22823
|
An alias to the proxied promise's `then`.
|
|
23492
|
-
|
|
23493
|
-
|
|
22824
|
+
See RSVP.Promise.then.
|
|
22825
|
+
@method then
|
|
23494
22826
|
@param {Function} callback
|
|
23495
22827
|
@return {RSVP.Promise}
|
|
23496
22828
|
@public
|
|
@@ -23499,8 +22831,8 @@ define("@ember/-internals/runtime/lib/mixins/promise_proxy", ["exports", "@ember
|
|
|
23499
22831
|
|
|
23500
22832
|
/**
|
|
23501
22833
|
An alias to the proxied promise's `catch`.
|
|
23502
|
-
|
|
23503
|
-
|
|
22834
|
+
See RSVP.Promise.catch.
|
|
22835
|
+
@method catch
|
|
23504
22836
|
@param {Function} callback
|
|
23505
22837
|
@return {RSVP.Promise}
|
|
23506
22838
|
@since 1.3.0
|
|
@@ -23510,8 +22842,8 @@ define("@ember/-internals/runtime/lib/mixins/promise_proxy", ["exports", "@ember
|
|
|
23510
22842
|
|
|
23511
22843
|
/**
|
|
23512
22844
|
An alias to the proxied promise's `finally`.
|
|
23513
|
-
|
|
23514
|
-
|
|
22845
|
+
See RSVP.Promise.finally.
|
|
22846
|
+
@method finally
|
|
23515
22847
|
@param {Function} callback
|
|
23516
22848
|
@return {RSVP.Promise}
|
|
23517
22849
|
@since 1.3.0
|
|
@@ -23802,9 +23134,9 @@ define("@ember/-internals/runtime/lib/mixins/target_action_support", ["exports",
|
|
|
23802
23134
|
/**
|
|
23803
23135
|
Send an `action` with an `actionContext` to a `target`. The action, actionContext
|
|
23804
23136
|
and target will be retrieved from properties of the object. For example:
|
|
23805
|
-
|
|
23137
|
+
```javascript
|
|
23806
23138
|
import { alias } from '@ember/object/computed';
|
|
23807
|
-
|
|
23139
|
+
App.SaveButtonView = Ember.View.extend(Ember.TargetActionSupport, {
|
|
23808
23140
|
target: alias('controller'),
|
|
23809
23141
|
action: 'save',
|
|
23810
23142
|
actionContext: alias('context'),
|
|
@@ -23814,9 +23146,9 @@ define("@ember/-internals/runtime/lib/mixins/target_action_support", ["exports",
|
|
|
23814
23146
|
}
|
|
23815
23147
|
});
|
|
23816
23148
|
```
|
|
23817
|
-
|
|
23149
|
+
The `target`, `action`, and `actionContext` can be provided as properties of
|
|
23818
23150
|
an optional object argument to `triggerAction` as well.
|
|
23819
|
-
|
|
23151
|
+
```javascript
|
|
23820
23152
|
App.SaveButtonView = Ember.View.extend(Ember.TargetActionSupport, {
|
|
23821
23153
|
click() {
|
|
23822
23154
|
this.triggerAction({
|
|
@@ -23828,12 +23160,12 @@ define("@ember/-internals/runtime/lib/mixins/target_action_support", ["exports",
|
|
|
23828
23160
|
}
|
|
23829
23161
|
});
|
|
23830
23162
|
```
|
|
23831
|
-
|
|
23163
|
+
The `actionContext` defaults to the object you are mixing `TargetActionSupport` into.
|
|
23832
23164
|
But `target` and `action` must be specified either as properties or with the argument
|
|
23833
23165
|
to `triggerAction`, or a combination:
|
|
23834
|
-
|
|
23166
|
+
```javascript
|
|
23835
23167
|
import { alias } from '@ember/object/computed';
|
|
23836
|
-
|
|
23168
|
+
App.SaveButtonView = Ember.View.extend(Ember.TargetActionSupport, {
|
|
23837
23169
|
target: alias('controller'),
|
|
23838
23170
|
click() {
|
|
23839
23171
|
this.triggerAction({
|
|
@@ -23843,7 +23175,7 @@ define("@ember/-internals/runtime/lib/mixins/target_action_support", ["exports",
|
|
|
23843
23175
|
}
|
|
23844
23176
|
});
|
|
23845
23177
|
```
|
|
23846
|
-
|
|
23178
|
+
@method triggerAction
|
|
23847
23179
|
@param opts {Object} (optional, with the optional keys action, target and/or actionContext)
|
|
23848
23180
|
@return {Boolean} true if the action was sent successfully and did not return false
|
|
23849
23181
|
@private
|
|
@@ -27601,12 +26933,14 @@ define("@ember/-internals/views/lib/system/utils", ["exports", "@ember/-internal
|
|
|
27601
26933
|
_exports.setElementView = setElementView;
|
|
27602
26934
|
_exports.setViewElement = setViewElement;
|
|
27603
26935
|
|
|
27604
|
-
/* globals Element */
|
|
27605
|
-
|
|
27606
26936
|
/**
|
|
27607
26937
|
@module ember
|
|
27608
26938
|
*/
|
|
27609
26939
|
function isSimpleClick(event) {
|
|
26940
|
+
if (!(event instanceof MouseEvent)) {
|
|
26941
|
+
return false;
|
|
26942
|
+
}
|
|
26943
|
+
|
|
27610
26944
|
var modifier = event.shiftKey || event.metaKey || event.altKey || event.ctrlKey;
|
|
27611
26945
|
var secondaryClick = event.which > 1; // IE9 may return undefined
|
|
27612
26946
|
|
|
@@ -27834,22 +27168,6 @@ define("@ember/-internals/views/lib/views/core_view", ["exports", "@ember/-inter
|
|
|
27834
27168
|
});
|
|
27835
27169
|
_exports.default = void 0;
|
|
27836
27170
|
|
|
27837
|
-
/**
|
|
27838
|
-
`Ember.CoreView` is an abstract class that exists to give view-like behavior
|
|
27839
|
-
to both Ember's main view class `Component` and other classes that don't need
|
|
27840
|
-
the full functionality of `Component`.
|
|
27841
|
-
|
|
27842
|
-
Unless you have specific needs for `CoreView`, you will use `Component`
|
|
27843
|
-
in your applications.
|
|
27844
|
-
|
|
27845
|
-
@class CoreView
|
|
27846
|
-
@namespace Ember
|
|
27847
|
-
@extends EmberObject
|
|
27848
|
-
@deprecated Use `Component` instead.
|
|
27849
|
-
@uses Evented
|
|
27850
|
-
@uses Ember.ActionHandler
|
|
27851
|
-
@private
|
|
27852
|
-
*/
|
|
27853
27171
|
var CoreView = _runtime.FrameworkObject.extend(_runtime.Evented, _runtime.ActionHandler, {
|
|
27854
27172
|
isView: true,
|
|
27855
27173
|
_states: _states.default,
|
|
@@ -27866,7 +27184,7 @@ define("@ember/-internals/views/lib/views/core_view", ["exports", "@ember/-inter
|
|
|
27866
27184
|
/**
|
|
27867
27185
|
If the view is currently inserted into the DOM of a parent view, this
|
|
27868
27186
|
property will point to the parent of the view.
|
|
27869
|
-
|
|
27187
|
+
@property parentView
|
|
27870
27188
|
@type Ember.View
|
|
27871
27189
|
@default null
|
|
27872
27190
|
@private
|
|
@@ -27874,16 +27192,16 @@ define("@ember/-internals/views/lib/views/core_view", ["exports", "@ember/-inter
|
|
|
27874
27192
|
parentView: null,
|
|
27875
27193
|
|
|
27876
27194
|
instrumentDetails(hash) {
|
|
27877
|
-
hash
|
|
27878
|
-
hash
|
|
27879
|
-
hash
|
|
27195
|
+
hash['object'] = this.toString();
|
|
27196
|
+
hash['containerKey'] = this._debugContainerKey;
|
|
27197
|
+
hash['view'] = this;
|
|
27880
27198
|
return hash;
|
|
27881
27199
|
},
|
|
27882
27200
|
|
|
27883
27201
|
/**
|
|
27884
27202
|
Override the default event firing from `Evented` to
|
|
27885
27203
|
also call methods with the given name.
|
|
27886
|
-
|
|
27204
|
+
@method trigger
|
|
27887
27205
|
@param name {String}
|
|
27888
27206
|
@private
|
|
27889
27207
|
*/
|
|
@@ -29727,7 +29045,7 @@ define("@ember/canary-features/index", ["exports", "@ember/-internals/environmen
|
|
|
29727
29045
|
Object.defineProperty(_exports, "__esModule", {
|
|
29728
29046
|
value: true
|
|
29729
29047
|
});
|
|
29730
|
-
_exports.FEATURES = _exports.EMBER_UNIQUE_ID_HELPER = _exports.
|
|
29048
|
+
_exports.FEATURES = _exports.EMBER_UNIQUE_ID_HELPER = _exports.EMBER_LIBRARIES_ISREGISTERED = _exports.EMBER_IMPROVED_INSTRUMENTATION = _exports.DEFAULT_FEATURES = void 0;
|
|
29731
29049
|
_exports.isEnabled = isEnabled;
|
|
29732
29050
|
|
|
29733
29051
|
/**
|
|
@@ -29743,9 +29061,7 @@ define("@ember/canary-features/index", ["exports", "@ember/-internals/environmen
|
|
|
29743
29061
|
var DEFAULT_FEATURES = {
|
|
29744
29062
|
EMBER_LIBRARIES_ISREGISTERED: null,
|
|
29745
29063
|
EMBER_IMPROVED_INSTRUMENTATION: null,
|
|
29746
|
-
|
|
29747
|
-
EMBER_CACHED: true,
|
|
29748
|
-
EMBER_UNIQUE_ID_HELPER: null
|
|
29064
|
+
EMBER_UNIQUE_ID_HELPER: true
|
|
29749
29065
|
};
|
|
29750
29066
|
/**
|
|
29751
29067
|
The hash of enabled Canary features. Add to this, any canary features
|
|
@@ -29801,10 +29117,6 @@ define("@ember/canary-features/index", ["exports", "@ember/-internals/environmen
|
|
|
29801
29117
|
_exports.EMBER_LIBRARIES_ISREGISTERED = EMBER_LIBRARIES_ISREGISTERED;
|
|
29802
29118
|
var EMBER_IMPROVED_INSTRUMENTATION = featureValue(FEATURES.EMBER_IMPROVED_INSTRUMENTATION);
|
|
29803
29119
|
_exports.EMBER_IMPROVED_INSTRUMENTATION = EMBER_IMPROVED_INSTRUMENTATION;
|
|
29804
|
-
var EMBER_ROUTING_ROUTER_SERVICE_REFRESH = featureValue(FEATURES.EMBER_ROUTING_ROUTER_SERVICE_REFRESH);
|
|
29805
|
-
_exports.EMBER_ROUTING_ROUTER_SERVICE_REFRESH = EMBER_ROUTING_ROUTER_SERVICE_REFRESH;
|
|
29806
|
-
var EMBER_CACHED = featureValue(FEATURES.EMBER_CACHED);
|
|
29807
|
-
_exports.EMBER_CACHED = EMBER_CACHED;
|
|
29808
29120
|
var EMBER_UNIQUE_ID_HELPER = featureValue(FEATURES.EMBER_UNIQUE_ID_HELPER);
|
|
29809
29121
|
_exports.EMBER_UNIQUE_ID_HELPER = EMBER_UNIQUE_ID_HELPER;
|
|
29810
29122
|
});
|
|
@@ -30323,7 +29635,7 @@ define("@ember/debug/index", ["exports", "@ember/-internals/browser-environment"
|
|
|
30323
29635
|
&& !(0, _testing.isTesting)()) {
|
|
30324
29636
|
if (typeof window !== 'undefined' && (_browserEnvironment.isFirefox || _browserEnvironment.isChrome) && window.addEventListener) {
|
|
30325
29637
|
window.addEventListener('load', () => {
|
|
30326
|
-
if (document.documentElement && document.documentElement.dataset && !document.documentElement.dataset
|
|
29638
|
+
if (document.documentElement && document.documentElement.dataset && !document.documentElement.dataset['emberExtension']) {
|
|
30327
29639
|
var downloadURL;
|
|
30328
29640
|
|
|
30329
29641
|
if (_browserEnvironment.isChrome) {
|
|
@@ -30445,11 +29757,15 @@ define("@ember/debug/lib/deprecate", ["exports", "@ember/-internals/environment"
|
|
|
30445
29757
|
var formatMessage = function formatMessage(_message, options) {
|
|
30446
29758
|
var message = _message;
|
|
30447
29759
|
|
|
30448
|
-
if (options
|
|
29760
|
+
if (options === null || options === void 0 ? void 0 : options.id) {
|
|
30449
29761
|
message = message + ` [deprecation id: ${options.id}]`;
|
|
30450
29762
|
}
|
|
30451
29763
|
|
|
30452
|
-
if (options
|
|
29764
|
+
if (options === null || options === void 0 ? void 0 : options.until) {
|
|
29765
|
+
message = message + ` This will be removed in Ember ${options.until}.`;
|
|
29766
|
+
}
|
|
29767
|
+
|
|
29768
|
+
if (options === null || options === void 0 ? void 0 : options.url) {
|
|
30453
29769
|
message += ` See ${options.url} for more details.`;
|
|
30454
29770
|
}
|
|
30455
29771
|
|
|
@@ -34760,6 +34076,19 @@ define("@ember/polyfills/lib/assign", ["exports", "@ember/debug"], function (_ex
|
|
|
34760
34076
|
return Object.assign(target, ...rest);
|
|
34761
34077
|
}
|
|
34762
34078
|
});
|
|
34079
|
+
define("@ember/renderer/index", ["exports", "@ember/-internals/glimmer"], function (_exports, _glimmer) {
|
|
34080
|
+
"use strict";
|
|
34081
|
+
|
|
34082
|
+
Object.defineProperty(_exports, "__esModule", {
|
|
34083
|
+
value: true
|
|
34084
|
+
});
|
|
34085
|
+
Object.defineProperty(_exports, "renderSettled", {
|
|
34086
|
+
enumerable: true,
|
|
34087
|
+
get: function () {
|
|
34088
|
+
return _glimmer.renderSettled;
|
|
34089
|
+
}
|
|
34090
|
+
});
|
|
34091
|
+
});
|
|
34763
34092
|
define("@ember/routing/auto-location", ["exports", "@ember/-internals/routing"], function (_exports, _routing) {
|
|
34764
34093
|
"use strict";
|
|
34765
34094
|
|
|
@@ -55722,7 +55051,7 @@ define("ember/version", ["exports"], function (_exports) {
|
|
|
55722
55051
|
value: true
|
|
55723
55052
|
});
|
|
55724
55053
|
_exports.default = void 0;
|
|
55725
|
-
var _default = "4.4.0-alpha.
|
|
55054
|
+
var _default = "4.4.0-alpha.6";
|
|
55726
55055
|
_exports.default = _default;
|
|
55727
55056
|
});
|
|
55728
55057
|
define("route-recognizer", ["exports"], function (_exports) {
|