angular-three 1.8.1 → 1.9.0
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/esm2020/index.mjs +2 -1
- package/esm2020/lib/directives/parent.mjs +35 -0
- package/esm2020/lib/renderer/enums.mjs +1 -1
- package/esm2020/lib/renderer/renderer.mjs +58 -33
- package/esm2020/lib/renderer/state.mjs +60 -57
- package/esm2020/lib/renderer/utils.mjs +2 -2
- package/fesm2015/angular-three.mjs +150 -92
- package/fesm2015/angular-three.mjs.map +1 -1
- package/fesm2020/angular-three.mjs +149 -91
- package/fesm2020/angular-three.mjs.map +1 -1
- package/index.d.ts +1 -0
- package/lib/directives/parent.d.ts +11 -0
- package/lib/renderer/enums.d.ts +13 -12
- package/lib/renderer/renderer.d.ts +3 -3
- package/lib/renderer/state.d.ts +3 -0
- package/package.json +1 -1
- package/plugin/package.json +1 -1
|
@@ -1040,6 +1040,38 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.3", ngImpor
|
|
|
1040
1040
|
type: Input
|
|
1041
1041
|
}] } });
|
|
1042
1042
|
|
|
1043
|
+
class NgtParent extends NgtCommonDirective {
|
|
1044
|
+
constructor() {
|
|
1045
|
+
super(...arguments);
|
|
1046
|
+
this.injectedParent = null;
|
|
1047
|
+
}
|
|
1048
|
+
set parent(parent) {
|
|
1049
|
+
if (!parent)
|
|
1050
|
+
return;
|
|
1051
|
+
this.injected = false;
|
|
1052
|
+
this.injectedParent = parent;
|
|
1053
|
+
this.createView();
|
|
1054
|
+
}
|
|
1055
|
+
get parent() {
|
|
1056
|
+
if (this.validate()) {
|
|
1057
|
+
this.injected = true;
|
|
1058
|
+
return this.injectedParent;
|
|
1059
|
+
}
|
|
1060
|
+
return null;
|
|
1061
|
+
}
|
|
1062
|
+
validate() {
|
|
1063
|
+
return !this.injected && !!this.injectedParent;
|
|
1064
|
+
}
|
|
1065
|
+
}
|
|
1066
|
+
NgtParent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: NgtParent, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
1067
|
+
NgtParent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.1.3", type: NgtParent, isStandalone: true, selector: "[parent]", inputs: { parent: "parent" }, usesInheritance: true, ngImport: i0 });
|
|
1068
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: NgtParent, decorators: [{
|
|
1069
|
+
type: Directive,
|
|
1070
|
+
args: [{ selector: '[parent]', standalone: true }]
|
|
1071
|
+
}], propDecorators: { parent: [{
|
|
1072
|
+
type: Input
|
|
1073
|
+
}] } });
|
|
1074
|
+
|
|
1043
1075
|
function releaseInternalPointerCapture(capturedMap, obj, captures, pointerId) {
|
|
1044
1076
|
const captureData = captures.get(obj);
|
|
1045
1077
|
if (captureData) {
|
|
@@ -1464,9 +1496,9 @@ function attachThreeChild(parent, child) {
|
|
|
1464
1496
|
if (cLS.isRaw) {
|
|
1465
1497
|
cLS.parent = parent;
|
|
1466
1498
|
// at this point we don't have rawValue yet, so we bail and wait until the Renderer recalls attach
|
|
1467
|
-
if (child.__ngt_renderer__[
|
|
1499
|
+
if (child.__ngt_renderer__[11 /* NgtRendererClassId.rawValue */] === undefined)
|
|
1468
1500
|
return;
|
|
1469
|
-
attach(parent, child.__ngt_renderer__[
|
|
1501
|
+
attach(parent, child.__ngt_renderer__[11 /* NgtRendererClassId.rawValue */], attachProp);
|
|
1470
1502
|
}
|
|
1471
1503
|
else {
|
|
1472
1504
|
attach(parent, child, attachProp);
|
|
@@ -1593,6 +1625,7 @@ class NgtRendererStore {
|
|
|
1593
1625
|
const state = [
|
|
1594
1626
|
type,
|
|
1595
1627
|
null,
|
|
1628
|
+
null,
|
|
1596
1629
|
[],
|
|
1597
1630
|
false,
|
|
1598
1631
|
undefined,
|
|
@@ -1614,7 +1647,7 @@ class NgtRendererStore {
|
|
|
1614
1647
|
// assign injectorFactory on non-three type since
|
|
1615
1648
|
// rendererNode is an instance of DOM Node
|
|
1616
1649
|
if (state[0 /* NgtRendererClassId.type */] !== 'three') {
|
|
1617
|
-
state[
|
|
1650
|
+
state[14 /* NgtRendererClassId.injectorFactory */] = () => getDebugNode(rendererNode).injector;
|
|
1618
1651
|
}
|
|
1619
1652
|
if (state[0 /* NgtRendererClassId.type */] === 'comment') {
|
|
1620
1653
|
// we attach an arrow function to the Comment node
|
|
@@ -1631,9 +1664,9 @@ class NgtRendererStore {
|
|
|
1631
1664
|
return rendererNode;
|
|
1632
1665
|
}
|
|
1633
1666
|
if (state[0 /* NgtRendererClassId.type */] === 'compound') {
|
|
1634
|
-
state[
|
|
1635
|
-
state[
|
|
1636
|
-
state[
|
|
1667
|
+
state[8 /* NgtRendererClassId.queueOps */] = new Set();
|
|
1668
|
+
state[9 /* NgtRendererClassId.attributes */] = {};
|
|
1669
|
+
state[10 /* NgtRendererClassId.properties */] = {};
|
|
1637
1670
|
return rendererNode;
|
|
1638
1671
|
}
|
|
1639
1672
|
return rendererNode;
|
|
@@ -1644,49 +1677,49 @@ class NgtRendererStore {
|
|
|
1644
1677
|
}
|
|
1645
1678
|
}
|
|
1646
1679
|
addChild(node, child) {
|
|
1647
|
-
if (!node.__ngt_renderer__[
|
|
1648
|
-
node.__ngt_renderer__[
|
|
1680
|
+
if (!node.__ngt_renderer__[3 /* NgtRendererClassId.children */].includes(child)) {
|
|
1681
|
+
node.__ngt_renderer__[3 /* NgtRendererClassId.children */].push(child);
|
|
1649
1682
|
}
|
|
1650
1683
|
}
|
|
1651
1684
|
removeChild(node, child) {
|
|
1652
|
-
const index = node.__ngt_renderer__[
|
|
1685
|
+
const index = node.__ngt_renderer__[3 /* NgtRendererClassId.children */].findIndex((c) => child === c);
|
|
1653
1686
|
if (index >= 0) {
|
|
1654
|
-
node.__ngt_renderer__[
|
|
1687
|
+
node.__ngt_renderer__[3 /* NgtRendererClassId.children */].splice(index, 1);
|
|
1655
1688
|
}
|
|
1656
1689
|
}
|
|
1657
1690
|
setCompound(compound, instance) {
|
|
1658
1691
|
const rS = compound.__ngt_renderer__;
|
|
1659
|
-
rS[
|
|
1660
|
-
const attributes = Object.keys(rS[
|
|
1661
|
-
const properties = Object.keys(rS[
|
|
1692
|
+
rS[7 /* NgtRendererClassId.compounded */] = instance;
|
|
1693
|
+
const attributes = Object.keys(rS[9 /* NgtRendererClassId.attributes */]);
|
|
1694
|
+
const properties = Object.keys(rS[10 /* NgtRendererClassId.properties */]);
|
|
1662
1695
|
if (attributes.length) {
|
|
1663
1696
|
for (const key of attributes) {
|
|
1664
|
-
this.applyAttribute(instance, key, rS[
|
|
1697
|
+
this.applyAttribute(instance, key, rS[9 /* NgtRendererClassId.attributes */][key]);
|
|
1665
1698
|
}
|
|
1666
1699
|
}
|
|
1667
1700
|
if (properties.length) {
|
|
1668
1701
|
for (const key of properties) {
|
|
1669
|
-
this.applyProperty(instance, key, rS[
|
|
1702
|
+
this.applyProperty(instance, key, rS[10 /* NgtRendererClassId.properties */][key]);
|
|
1670
1703
|
}
|
|
1671
1704
|
}
|
|
1672
1705
|
this.executeOperation(compound);
|
|
1673
1706
|
}
|
|
1674
1707
|
queueOperation(node, op) {
|
|
1675
|
-
node.__ngt_renderer__[
|
|
1708
|
+
node.__ngt_renderer__[8 /* NgtRendererClassId.queueOps */].add(op);
|
|
1676
1709
|
}
|
|
1677
1710
|
executeOperation(node, type = 'op') {
|
|
1678
1711
|
const rS = node.__ngt_renderer__;
|
|
1679
|
-
if (rS[
|
|
1680
|
-
rS[
|
|
1712
|
+
if (rS[8 /* NgtRendererClassId.queueOps */]?.size) {
|
|
1713
|
+
rS[8 /* NgtRendererClassId.queueOps */].forEach((op) => {
|
|
1681
1714
|
if (op[0 /* NgtQueueOpClassId.type */] === type) {
|
|
1682
1715
|
op[1 /* NgtQueueOpClassId.op */]();
|
|
1683
|
-
rS[
|
|
1716
|
+
rS[8 /* NgtRendererClassId.queueOps */].delete(op);
|
|
1684
1717
|
}
|
|
1685
1718
|
});
|
|
1686
1719
|
}
|
|
1687
1720
|
}
|
|
1688
1721
|
processPortalContainer(portal) {
|
|
1689
|
-
const injectorFactory = portal.__ngt_renderer__[
|
|
1722
|
+
const injectorFactory = portal.__ngt_renderer__[14 /* NgtRendererClassId.injectorFactory */];
|
|
1690
1723
|
const injector = injectorFactory?.();
|
|
1691
1724
|
if (!injector)
|
|
1692
1725
|
return;
|
|
@@ -1696,11 +1729,11 @@ class NgtRendererStore {
|
|
|
1696
1729
|
const portalContainer = portalStore.get('scene');
|
|
1697
1730
|
if (!portalContainer)
|
|
1698
1731
|
return;
|
|
1699
|
-
portal.__ngt_renderer__[
|
|
1732
|
+
portal.__ngt_renderer__[13 /* NgtRendererClassId.portalContainer */] = this.createNode('three', portalContainer);
|
|
1700
1733
|
}
|
|
1701
1734
|
applyAttribute(node, name, value) {
|
|
1702
1735
|
const rS = node.__ngt_renderer__;
|
|
1703
|
-
if (rS[
|
|
1736
|
+
if (rS[4 /* NgtRendererClassId.destroyed */])
|
|
1704
1737
|
return;
|
|
1705
1738
|
if (name === SPECIAL_PROPERTIES.RENDER_PRIORITY) {
|
|
1706
1739
|
// priority needs to be set as an attribute string so that they can be set as early as possible
|
|
@@ -1714,7 +1747,7 @@ class NgtRendererStore {
|
|
|
1714
1747
|
}
|
|
1715
1748
|
if (name === SPECIAL_PROPERTIES.COMPOUND) {
|
|
1716
1749
|
// we set the compound property on instance node now so we know that this instance is being compounded
|
|
1717
|
-
rS[
|
|
1750
|
+
rS[5 /* NgtRendererClassId.compound */] = [value === '' || value === 'first', {}];
|
|
1718
1751
|
return;
|
|
1719
1752
|
}
|
|
1720
1753
|
if (name === SPECIAL_PROPERTIES.ATTACH) {
|
|
@@ -1733,25 +1766,25 @@ class NgtRendererStore {
|
|
|
1733
1766
|
else if (!isNaN(Number(maybeCoerced))) {
|
|
1734
1767
|
maybeCoerced = Number(maybeCoerced);
|
|
1735
1768
|
}
|
|
1736
|
-
rS[
|
|
1769
|
+
rS[11 /* NgtRendererClassId.rawValue */] = maybeCoerced;
|
|
1737
1770
|
return;
|
|
1738
1771
|
}
|
|
1739
1772
|
applyProps(node, { [name]: value });
|
|
1740
1773
|
}
|
|
1741
1774
|
applyProperty(node, name, value) {
|
|
1742
1775
|
const rS = node.__ngt_renderer__;
|
|
1743
|
-
if (rS[
|
|
1776
|
+
if (rS[4 /* NgtRendererClassId.destroyed */])
|
|
1744
1777
|
return;
|
|
1745
1778
|
// [ref]
|
|
1746
1779
|
if (name === SPECIAL_PROPERTIES.REF && is.ref(value)) {
|
|
1747
|
-
rS[
|
|
1780
|
+
rS[12 /* NgtRendererClassId.ref */] = value;
|
|
1748
1781
|
value.nativeElement = node;
|
|
1749
1782
|
return;
|
|
1750
1783
|
}
|
|
1751
1784
|
const parent = getLocalState(node).parent || rS[1 /* NgtRendererClassId.parent */];
|
|
1752
1785
|
// [rawValue]
|
|
1753
1786
|
if (getLocalState(node).isRaw && name === SPECIAL_PROPERTIES.VALUE) {
|
|
1754
|
-
rS[
|
|
1787
|
+
rS[11 /* NgtRendererClassId.rawValue */] = value;
|
|
1755
1788
|
if (parent)
|
|
1756
1789
|
attachThreeChild(parent, node);
|
|
1757
1790
|
return;
|
|
@@ -1763,7 +1796,7 @@ class NgtRendererStore {
|
|
|
1763
1796
|
attachThreeChild(parent, node);
|
|
1764
1797
|
return;
|
|
1765
1798
|
}
|
|
1766
|
-
const compound = rS[
|
|
1799
|
+
const compound = rS[5 /* NgtRendererClassId.compound */];
|
|
1767
1800
|
if (compound?.[1 /* NgtCompoundClassId.props */] &&
|
|
1768
1801
|
name in compound[1 /* NgtCompoundClassId.props */] &&
|
|
1769
1802
|
!compound[0 /* NgtCompoundClassId.applyFirst */]) {
|
|
@@ -1792,51 +1825,52 @@ class NgtRendererStore {
|
|
|
1792
1825
|
getClosestParentWithInstance(node) {
|
|
1793
1826
|
let parent = node.__ngt_renderer__[1 /* NgtRendererClassId.parent */];
|
|
1794
1827
|
while (parent && parent.__ngt_renderer__[0 /* NgtRendererClassId.type */] !== 'three') {
|
|
1795
|
-
parent = parent.__ngt_renderer__[
|
|
1796
|
-
? parent.__ngt_renderer__[
|
|
1828
|
+
parent = parent.__ngt_renderer__[13 /* NgtRendererClassId.portalContainer */]
|
|
1829
|
+
? parent.__ngt_renderer__[13 /* NgtRendererClassId.portalContainer */]
|
|
1797
1830
|
: parent.__ngt_renderer__[1 /* NgtRendererClassId.parent */];
|
|
1798
1831
|
}
|
|
1799
1832
|
return parent;
|
|
1800
1833
|
}
|
|
1801
1834
|
getClosestParentWithCompound(node) {
|
|
1802
|
-
if (node.__ngt_renderer__[
|
|
1803
|
-
return node.__ngt_renderer__[
|
|
1835
|
+
if (node.__ngt_renderer__[6 /* NgtRendererClassId.compoundParent */]) {
|
|
1836
|
+
return node.__ngt_renderer__[6 /* NgtRendererClassId.compoundParent */];
|
|
1804
1837
|
}
|
|
1805
1838
|
let parent = node.__ngt_renderer__[1 /* NgtRendererClassId.parent */];
|
|
1806
1839
|
if (parent &&
|
|
1807
1840
|
parent.__ngt_renderer__[0 /* NgtRendererClassId.type */] === 'compound' &&
|
|
1808
|
-
!parent.__ngt_renderer__[
|
|
1841
|
+
!parent.__ngt_renderer__[7 /* NgtRendererClassId.compounded */]) {
|
|
1809
1842
|
return parent;
|
|
1810
1843
|
}
|
|
1811
1844
|
while (parent &&
|
|
1812
1845
|
(parent.__ngt_renderer__[0 /* NgtRendererClassId.type */] === 'three' ||
|
|
1813
|
-
!parent.__ngt_renderer__[
|
|
1846
|
+
!parent.__ngt_renderer__[6 /* NgtRendererClassId.compoundParent */] ||
|
|
1814
1847
|
parent.__ngt_renderer__[0 /* NgtRendererClassId.type */] !== 'compound')) {
|
|
1815
1848
|
parent = parent.__ngt_renderer__[1 /* NgtRendererClassId.parent */];
|
|
1816
1849
|
}
|
|
1817
1850
|
if (!parent)
|
|
1818
1851
|
return;
|
|
1819
1852
|
if (parent.__ngt_renderer__[0 /* NgtRendererClassId.type */] === 'three' &&
|
|
1820
|
-
parent.__ngt_renderer__[
|
|
1821
|
-
return parent.__ngt_renderer__[
|
|
1853
|
+
parent.__ngt_renderer__[6 /* NgtRendererClassId.compoundParent */]) {
|
|
1854
|
+
return parent.__ngt_renderer__[6 /* NgtRendererClassId.compoundParent */];
|
|
1822
1855
|
}
|
|
1823
|
-
if (!parent.__ngt_renderer__[
|
|
1856
|
+
if (!parent.__ngt_renderer__[7 /* NgtRendererClassId.compounded */]) {
|
|
1824
1857
|
return parent;
|
|
1825
1858
|
}
|
|
1826
1859
|
return null;
|
|
1827
1860
|
}
|
|
1828
1861
|
getCreationState() {
|
|
1829
1862
|
const injectedArgs = this.firstNonInjectedDirective(NgtArgs)?.args || [];
|
|
1863
|
+
const injectedParent = this.firstNonInjectedDirective(NgtParent)?.parent || null;
|
|
1830
1864
|
const store = this.tryGetPortalStore();
|
|
1831
|
-
return { injectedArgs, store };
|
|
1865
|
+
return { injectedArgs, injectedParent, store };
|
|
1832
1866
|
}
|
|
1833
1867
|
destroy(node, parent) {
|
|
1834
1868
|
const rS = node.__ngt_renderer__;
|
|
1835
|
-
if (rS[
|
|
1869
|
+
if (rS[4 /* NgtRendererClassId.destroyed */])
|
|
1836
1870
|
return;
|
|
1837
1871
|
if (rS[0 /* NgtRendererClassId.type */] === 'three') {
|
|
1838
|
-
rS[
|
|
1839
|
-
rS[
|
|
1872
|
+
rS[5 /* NgtRendererClassId.compound */] = undefined;
|
|
1873
|
+
rS[6 /* NgtRendererClassId.compoundParent */] = undefined;
|
|
1840
1874
|
const localState = getLocalState(node);
|
|
1841
1875
|
if (localState.objects) {
|
|
1842
1876
|
localState.objects.value.forEach((obj) => this.destroy(obj, parent));
|
|
@@ -1863,7 +1897,7 @@ class NgtRendererStore {
|
|
|
1863
1897
|
}
|
|
1864
1898
|
}
|
|
1865
1899
|
if (rS[0 /* NgtRendererClassId.type */] === 'comment') {
|
|
1866
|
-
rS[
|
|
1900
|
+
rS[14 /* NgtRendererClassId.injectorFactory */] = null;
|
|
1867
1901
|
delete node['__ngt_renderer_add_comment__'];
|
|
1868
1902
|
const index = this.comments.findIndex((comment) => comment === node);
|
|
1869
1903
|
if (index > -1) {
|
|
@@ -1871,35 +1905,35 @@ class NgtRendererStore {
|
|
|
1871
1905
|
}
|
|
1872
1906
|
}
|
|
1873
1907
|
if (rS[0 /* NgtRendererClassId.type */] === 'portal') {
|
|
1874
|
-
rS[
|
|
1908
|
+
rS[14 /* NgtRendererClassId.injectorFactory */] = null;
|
|
1875
1909
|
const index = this.portals.findIndex((portal) => portal === node);
|
|
1876
1910
|
if (index > -1) {
|
|
1877
1911
|
this.portals.splice(index, 1);
|
|
1878
1912
|
}
|
|
1879
1913
|
}
|
|
1880
1914
|
if (rS[0 /* NgtRendererClassId.type */] === 'compound') {
|
|
1881
|
-
rS[
|
|
1882
|
-
rS[
|
|
1883
|
-
rS[
|
|
1915
|
+
rS[7 /* NgtRendererClassId.compounded */] = undefined;
|
|
1916
|
+
rS[9 /* NgtRendererClassId.attributes */] = null;
|
|
1917
|
+
rS[10 /* NgtRendererClassId.properties */] = null;
|
|
1884
1918
|
this.executeOperation(node, 'cleanUp');
|
|
1885
|
-
rS[
|
|
1886
|
-
rS[
|
|
1919
|
+
rS[8 /* NgtRendererClassId.queueOps */].clear();
|
|
1920
|
+
rS[8 /* NgtRendererClassId.queueOps */] = null;
|
|
1887
1921
|
}
|
|
1888
|
-
if (rS[
|
|
1922
|
+
if (rS[12 /* NgtRendererClassId.ref */]) {
|
|
1889
1923
|
// nullify ref
|
|
1890
|
-
rS[
|
|
1891
|
-
rS[
|
|
1924
|
+
rS[12 /* NgtRendererClassId.ref */].nativeElement = null;
|
|
1925
|
+
rS[12 /* NgtRendererClassId.ref */] = undefined;
|
|
1892
1926
|
}
|
|
1893
1927
|
// nullify parent
|
|
1894
1928
|
rS[1 /* NgtRendererClassId.parent */] = null;
|
|
1895
|
-
for (const renderChild of rS[
|
|
1929
|
+
for (const renderChild of rS[3 /* NgtRendererClassId.children */] || []) {
|
|
1896
1930
|
if (renderChild.__ngt_renderer__[0 /* NgtRendererClassId.type */] === 'three' && parent) {
|
|
1897
1931
|
removeThreeChild(parent, renderChild, true);
|
|
1898
1932
|
}
|
|
1899
1933
|
this.destroy(renderChild, parent);
|
|
1900
1934
|
}
|
|
1901
|
-
rS[
|
|
1902
|
-
rS[
|
|
1935
|
+
rS[3 /* NgtRendererClassId.children */] = [];
|
|
1936
|
+
rS[4 /* NgtRendererClassId.destroyed */] = true;
|
|
1903
1937
|
if (parent) {
|
|
1904
1938
|
this.removeChild(parent, node);
|
|
1905
1939
|
}
|
|
@@ -1909,11 +1943,11 @@ class NgtRendererStore {
|
|
|
1909
1943
|
let i = this.comments.length - 1;
|
|
1910
1944
|
while (i >= 0) {
|
|
1911
1945
|
const comment = this.comments[i];
|
|
1912
|
-
if (comment.__ngt_renderer__[
|
|
1946
|
+
if (comment.__ngt_renderer__[4 /* NgtRendererClassId.destroyed */]) {
|
|
1913
1947
|
i--;
|
|
1914
1948
|
continue;
|
|
1915
1949
|
}
|
|
1916
|
-
const injector = comment.__ngt_renderer__[
|
|
1950
|
+
const injector = comment.__ngt_renderer__[14 /* NgtRendererClassId.injectorFactory */]();
|
|
1917
1951
|
if (!injector) {
|
|
1918
1952
|
i--;
|
|
1919
1953
|
continue;
|
|
@@ -1934,11 +1968,11 @@ class NgtRendererStore {
|
|
|
1934
1968
|
while (i >= 0) {
|
|
1935
1969
|
// loop through the portal state backwards to find the closest NgtStore
|
|
1936
1970
|
const portal = this.portals[i];
|
|
1937
|
-
if (portal.__ngt_renderer__[
|
|
1971
|
+
if (portal.__ngt_renderer__[4 /* NgtRendererClassId.destroyed */]) {
|
|
1938
1972
|
i--;
|
|
1939
1973
|
continue;
|
|
1940
1974
|
}
|
|
1941
|
-
const injector = portal.__ngt_renderer__[
|
|
1975
|
+
const injector = portal.__ngt_renderer__[14 /* NgtRendererClassId.injectorFactory */]();
|
|
1942
1976
|
if (!injector) {
|
|
1943
1977
|
i--;
|
|
1944
1978
|
continue;
|
|
@@ -2023,7 +2057,7 @@ class NgtRenderer {
|
|
|
2023
2057
|
if (this.root) {
|
|
2024
2058
|
this.root = false;
|
|
2025
2059
|
const node = this.store.createNode('three', this.store.rootScene);
|
|
2026
|
-
node.__ngt_renderer__[
|
|
2060
|
+
node.__ngt_renderer__[14 /* NgtRendererClassId.injectorFactory */] = () => getDebugNode(element).injector;
|
|
2027
2061
|
return node;
|
|
2028
2062
|
}
|
|
2029
2063
|
// handle compound
|
|
@@ -2038,7 +2072,13 @@ class NgtRenderer {
|
|
|
2038
2072
|
if (name === SPECIAL_DOM_TAG.NGT_VALUE) {
|
|
2039
2073
|
return this.store.createNode('three', Object.assign({ __ngt_renderer__: { rawValue: undefined } }, { __ngt__: { isRaw: true } }));
|
|
2040
2074
|
}
|
|
2041
|
-
const { injectedArgs, store } = this.store.getCreationState();
|
|
2075
|
+
const { injectedArgs, injectedParent, store } = this.store.getCreationState();
|
|
2076
|
+
let parent = injectedParent;
|
|
2077
|
+
if (typeof injectedParent === 'string') {
|
|
2078
|
+
parent = store
|
|
2079
|
+
.get('scene')
|
|
2080
|
+
.getObjectByName(injectedParent);
|
|
2081
|
+
}
|
|
2042
2082
|
// handle primitive
|
|
2043
2083
|
if (name === SPECIAL_DOM_TAG.NGT_PRIMITIVE) {
|
|
2044
2084
|
if (!injectedArgs[0])
|
|
@@ -2051,7 +2091,11 @@ class NgtRenderer {
|
|
|
2051
2091
|
}
|
|
2052
2092
|
if (!localState.store)
|
|
2053
2093
|
localState.store = store;
|
|
2054
|
-
|
|
2094
|
+
const node = this.store.createNode('three', object);
|
|
2095
|
+
if (parent) {
|
|
2096
|
+
node.__ngt_renderer__[2 /* NgtRendererClassId.injectedParent */] = parent;
|
|
2097
|
+
}
|
|
2098
|
+
return node;
|
|
2055
2099
|
}
|
|
2056
2100
|
const threeTag = name.startsWith('ngt') ? name.slice(4) : name;
|
|
2057
2101
|
const threeName = kebabToPascal(threeTag);
|
|
@@ -2067,6 +2111,9 @@ class NgtRenderer {
|
|
|
2067
2111
|
else if (is.material(instance)) {
|
|
2068
2112
|
localState.attach = ['material'];
|
|
2069
2113
|
}
|
|
2114
|
+
if (parent) {
|
|
2115
|
+
node.__ngt_renderer__[2 /* NgtRendererClassId.injectedParent */] = parent;
|
|
2116
|
+
}
|
|
2070
2117
|
return node;
|
|
2071
2118
|
}
|
|
2072
2119
|
return this.store.createNode('dom', element);
|
|
@@ -2084,21 +2131,32 @@ class NgtRenderer {
|
|
|
2084
2131
|
this.store.setParent(newChild, parent);
|
|
2085
2132
|
return;
|
|
2086
2133
|
}
|
|
2134
|
+
if (cRS[2 /* NgtRendererClassId.injectedParent */]) {
|
|
2135
|
+
if (is.ref(cRS[2 /* NgtRendererClassId.injectedParent */])) {
|
|
2136
|
+
cRS[2 /* NgtRendererClassId.injectedParent */].$.pipe(take(1)).subscribe((val) => {
|
|
2137
|
+
this.appendChild(val, newChild);
|
|
2138
|
+
});
|
|
2139
|
+
}
|
|
2140
|
+
else {
|
|
2141
|
+
this.appendChild(cRS[2 /* NgtRendererClassId.injectedParent */], newChild);
|
|
2142
|
+
}
|
|
2143
|
+
return;
|
|
2144
|
+
}
|
|
2087
2145
|
this.store.setParent(newChild, parent);
|
|
2088
2146
|
this.store.addChild(parent, newChild);
|
|
2089
2147
|
// if new child is a portal
|
|
2090
2148
|
if (cRS[0 /* NgtRendererClassId.type */] === 'portal') {
|
|
2091
2149
|
this.store.processPortalContainer(newChild);
|
|
2092
|
-
if (cRS[
|
|
2093
|
-
this.appendChild(parent, cRS[
|
|
2150
|
+
if (cRS[13 /* NgtRendererClassId.portalContainer */]) {
|
|
2151
|
+
this.appendChild(parent, cRS[13 /* NgtRendererClassId.portalContainer */]);
|
|
2094
2152
|
}
|
|
2095
2153
|
return;
|
|
2096
2154
|
}
|
|
2097
2155
|
// if parent is a portal
|
|
2098
2156
|
if (pRS[0 /* NgtRendererClassId.type */] === 'portal') {
|
|
2099
2157
|
this.store.processPortalContainer(parent);
|
|
2100
|
-
if (pRS[
|
|
2101
|
-
this.appendChild(pRS[
|
|
2158
|
+
if (pRS[13 /* NgtRendererClassId.portalContainer */]) {
|
|
2159
|
+
this.appendChild(pRS[13 /* NgtRendererClassId.portalContainer */], newChild);
|
|
2102
2160
|
}
|
|
2103
2161
|
return;
|
|
2104
2162
|
}
|
|
@@ -2110,7 +2168,7 @@ class NgtRenderer {
|
|
|
2110
2168
|
// attach THREE child
|
|
2111
2169
|
attachThreeChild(parent, newChild);
|
|
2112
2170
|
// here, we handle the special case of if the parent has a compoundParent, which means this child is part of a compound parent template
|
|
2113
|
-
if (!cRS[
|
|
2171
|
+
if (!cRS[5 /* NgtRendererClassId.compound */])
|
|
2114
2172
|
return;
|
|
2115
2173
|
const closestGrandparentWithCompound = this.store.getClosestParentWithCompound(parent);
|
|
2116
2174
|
if (!closestGrandparentWithCompound)
|
|
@@ -2120,26 +2178,26 @@ class NgtRenderer {
|
|
|
2120
2178
|
}
|
|
2121
2179
|
// if only the parent is the THREE instance
|
|
2122
2180
|
if (pRS[0 /* NgtRendererClassId.type */] === 'three') {
|
|
2123
|
-
for (const renderChild of cRS[
|
|
2181
|
+
for (const renderChild of cRS[3 /* NgtRendererClassId.children */]) {
|
|
2124
2182
|
this.appendChild(parent, renderChild);
|
|
2125
2183
|
}
|
|
2126
2184
|
}
|
|
2127
2185
|
// if parent is a compound
|
|
2128
2186
|
if (pRS[0 /* NgtRendererClassId.type */] === 'compound') {
|
|
2129
2187
|
// if compound doesn't have a THREE instance set yet
|
|
2130
|
-
if (!pRS[
|
|
2188
|
+
if (!pRS[7 /* NgtRendererClassId.compounded */] && cRS[0 /* NgtRendererClassId.type */] === 'three') {
|
|
2131
2189
|
// if child is indeed an ngtCompound
|
|
2132
|
-
if (cRS[
|
|
2190
|
+
if (cRS[5 /* NgtRendererClassId.compound */])
|
|
2133
2191
|
this.store.setCompound(parent, newChild);
|
|
2134
2192
|
// if not, we track the parent (that is supposedly the compound component) on this three instance
|
|
2135
|
-
else if (!cRS[
|
|
2136
|
-
cRS[
|
|
2193
|
+
else if (!cRS[6 /* NgtRendererClassId.compoundParent */])
|
|
2194
|
+
cRS[6 /* NgtRendererClassId.compoundParent */] = parent;
|
|
2137
2195
|
}
|
|
2138
2196
|
// reset the compound if it's changed
|
|
2139
|
-
if (pRS[
|
|
2197
|
+
if (pRS[7 /* NgtRendererClassId.compounded */] &&
|
|
2140
2198
|
cRS[0 /* NgtRendererClassId.type */] === 'three' &&
|
|
2141
|
-
cRS[
|
|
2142
|
-
pRS[
|
|
2199
|
+
cRS[5 /* NgtRendererClassId.compound */] &&
|
|
2200
|
+
pRS[7 /* NgtRendererClassId.compounded */] !== newChild) {
|
|
2143
2201
|
this.store.setCompound(parent, newChild);
|
|
2144
2202
|
}
|
|
2145
2203
|
}
|
|
@@ -2148,9 +2206,9 @@ class NgtRenderer {
|
|
|
2148
2206
|
(cRS[0 /* NgtRendererClassId.type */] === 'three' && !getLocalState(newChild).parent) ||
|
|
2149
2207
|
// or both parent and child are DOM elements
|
|
2150
2208
|
((pRS[0 /* NgtRendererClassId.type */] === 'dom' ||
|
|
2151
|
-
(pRS[0 /* NgtRendererClassId.type */] === 'compound' && !pRS[
|
|
2209
|
+
(pRS[0 /* NgtRendererClassId.type */] === 'compound' && !pRS[7 /* NgtRendererClassId.compounded */])) &&
|
|
2152
2210
|
(cRS[0 /* NgtRendererClassId.type */] === 'dom' ||
|
|
2153
|
-
(cRS[0 /* NgtRendererClassId.type */] === 'compound' && !cRS[
|
|
2211
|
+
(cRS[0 /* NgtRendererClassId.type */] === 'compound' && !cRS[7 /* NgtRendererClassId.compounded */])));
|
|
2154
2212
|
if (shouldFindGrandparentInstance) {
|
|
2155
2213
|
// we'll try to get the grandparent instance here so that we can run appendChild with both instances
|
|
2156
2214
|
const closestGrandparentInstance = this.store.getClosestParentWithInstance(parent);
|
|
@@ -2163,7 +2221,7 @@ class NgtRenderer {
|
|
|
2163
2221
|
// refChild: NgtRendererNode
|
|
2164
2222
|
// isMove?: boolean | undefined
|
|
2165
2223
|
) {
|
|
2166
|
-
if (!parent.__ngt_renderer__ || parent === newChild)
|
|
2224
|
+
if (parent == null || !parent.__ngt_renderer__ || parent === newChild)
|
|
2167
2225
|
return;
|
|
2168
2226
|
this.appendChild(parent, newChild);
|
|
2169
2227
|
}
|
|
@@ -2198,12 +2256,12 @@ class NgtRenderer {
|
|
|
2198
2256
|
const rS = el.__ngt_renderer__;
|
|
2199
2257
|
if (rS[0 /* NgtRendererClassId.type */] === 'compound') {
|
|
2200
2258
|
// we don't have the compound instance yet
|
|
2201
|
-
rS[
|
|
2202
|
-
if (!rS[
|
|
2259
|
+
rS[9 /* NgtRendererClassId.attributes */][name] = value;
|
|
2260
|
+
if (!rS[7 /* NgtRendererClassId.compounded */]) {
|
|
2203
2261
|
this.store.queueOperation(el, ['op', () => this.setAttribute(el, name, value, namespace)]);
|
|
2204
2262
|
return;
|
|
2205
2263
|
}
|
|
2206
|
-
this.setAttribute(rS[
|
|
2264
|
+
this.setAttribute(rS[7 /* NgtRendererClassId.compounded */], name, value, namespace);
|
|
2207
2265
|
return;
|
|
2208
2266
|
}
|
|
2209
2267
|
if (rS[0 /* NgtRendererClassId.type */] === 'three')
|
|
@@ -2213,20 +2271,20 @@ class NgtRenderer {
|
|
|
2213
2271
|
const rS = el.__ngt_renderer__;
|
|
2214
2272
|
if (rS[0 /* NgtRendererClassId.type */] === 'compound') {
|
|
2215
2273
|
// we don't have the compound instance yet
|
|
2216
|
-
rS[
|
|
2217
|
-
if (!rS[
|
|
2274
|
+
rS[10 /* NgtRendererClassId.properties */][name] = value;
|
|
2275
|
+
if (!rS[7 /* NgtRendererClassId.compounded */]) {
|
|
2218
2276
|
this.store.queueOperation(el, ['op', () => this.setProperty(el, name, value)]);
|
|
2219
2277
|
return;
|
|
2220
2278
|
}
|
|
2221
|
-
if (rS[
|
|
2222
|
-
Object.assign(rS[
|
|
2279
|
+
if (rS[7 /* NgtRendererClassId.compounded */].__ngt_renderer__[5 /* NgtRendererClassId.compound */]) {
|
|
2280
|
+
Object.assign(rS[7 /* NgtRendererClassId.compounded */].__ngt_renderer__[5 /* NgtRendererClassId.compound */], {
|
|
2223
2281
|
props: {
|
|
2224
|
-
...rS[
|
|
2282
|
+
...rS[7 /* NgtRendererClassId.compounded */].__ngt_renderer__[5 /* NgtRendererClassId.compound */],
|
|
2225
2283
|
[name]: value,
|
|
2226
2284
|
},
|
|
2227
2285
|
});
|
|
2228
2286
|
}
|
|
2229
|
-
this.setProperty(rS[
|
|
2287
|
+
this.setProperty(rS[7 /* NgtRendererClassId.compounded */], name, value);
|
|
2230
2288
|
return;
|
|
2231
2289
|
}
|
|
2232
2290
|
if (rS[0 /* NgtRendererClassId.type */] === 'three')
|
|
@@ -2234,7 +2292,7 @@ class NgtRenderer {
|
|
|
2234
2292
|
}
|
|
2235
2293
|
listen(target, eventName, callback) {
|
|
2236
2294
|
const rS = target.__ngt_renderer__;
|
|
2237
|
-
const targetCdr = rS?.[
|
|
2295
|
+
const targetCdr = rS?.[14 /* NgtRendererClassId.injectorFactory */]?.().get(ChangeDetectorRef, null);
|
|
2238
2296
|
// if target is DOM node, then we pass that to delegate Renderer
|
|
2239
2297
|
const callbackWithCdr = (event) => {
|
|
2240
2298
|
const value = callback(event);
|
|
@@ -2259,12 +2317,12 @@ class NgtRenderer {
|
|
|
2259
2317
|
return this.delegate.listen(eventTarget, event, callbackWithCdr);
|
|
2260
2318
|
}
|
|
2261
2319
|
if (rS[0 /* NgtRendererClassId.type */] === 'three' ||
|
|
2262
|
-
(rS[0 /* NgtRendererClassId.type */] === 'compound' && rS[
|
|
2263
|
-
const instance = rS[
|
|
2320
|
+
(rS[0 /* NgtRendererClassId.type */] === 'compound' && rS[7 /* NgtRendererClassId.compounded */])) {
|
|
2321
|
+
const instance = rS[7 /* NgtRendererClassId.compounded */] || target;
|
|
2264
2322
|
const priority = getLocalState(target).priority;
|
|
2265
2323
|
return processThreeEvent(instance, priority || 0, eventName, callback, this.store.rootCdr, targetCdr);
|
|
2266
2324
|
}
|
|
2267
|
-
if (rS[0 /* NgtRendererClassId.type */] === 'compound' && !rS[
|
|
2325
|
+
if (rS[0 /* NgtRendererClassId.type */] === 'compound' && !rS[7 /* NgtRendererClassId.compounded */]) {
|
|
2268
2326
|
this.store.queueOperation(target, [
|
|
2269
2327
|
'op',
|
|
2270
2328
|
() => this.store.queueOperation(target, ['cleanUp', this.listen(target, eventName, callback)]),
|
|
@@ -3046,5 +3104,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.3", ngImpor
|
|
|
3046
3104
|
* Generated bundle index. Do not edit.
|
|
3047
3105
|
*/
|
|
3048
3106
|
|
|
3049
|
-
export { NGT_CATALOGUE, NgtArgs, NgtCanvas, NgtPortal, NgtPortalBeforeRender, NgtPortalContent, NgtPush, NgtRepeat, NgtRoutedScene, NgtRxStore, NgtStore, addAfterEffect, addEffect, addTail, applyProps, checkNeedsUpdate, checkUpdate, createAttachFunction, createLoop, createRunInContext, extend, flushGlobalEffects, getLocalState, injectBeforeRender, injectNgtDestroy, injectNgtLoader, injectNgtRef, invalidateInstance, is, makeDefaultCamera, makeDefaultRenderer, makeDpr, makeId, makeObjectGraph, prepare, rootStateMap, safeDetectChanges, startWithUndefined, tapEffect, updateCamera };
|
|
3107
|
+
export { NGT_CATALOGUE, NgtArgs, NgtCanvas, NgtParent, NgtPortal, NgtPortalBeforeRender, NgtPortalContent, NgtPush, NgtRepeat, NgtRoutedScene, NgtRxStore, NgtStore, addAfterEffect, addEffect, addTail, applyProps, checkNeedsUpdate, checkUpdate, createAttachFunction, createLoop, createRunInContext, extend, flushGlobalEffects, getLocalState, injectBeforeRender, injectNgtDestroy, injectNgtLoader, injectNgtRef, invalidateInstance, is, makeDefaultCamera, makeDefaultRenderer, makeDpr, makeId, makeObjectGraph, prepare, rootStateMap, safeDetectChanges, startWithUndefined, tapEffect, updateCamera };
|
|
3050
3108
|
//# sourceMappingURL=angular-three.mjs.map
|