angular-three 1.8.1 → 1.9.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 +60 -33
- package/esm2020/lib/renderer/state.mjs +60 -57
- package/esm2020/lib/renderer/utils.mjs +2 -2
- package/fesm2015/angular-three.mjs +152 -92
- package/fesm2015/angular-three.mjs.map +1 -1
- package/fesm2020/angular-three.mjs +151 -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,34 @@ 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
|
+
if (val !== parent) {
|
|
2138
|
+
this.appendChild(val, newChild);
|
|
2139
|
+
}
|
|
2140
|
+
});
|
|
2141
|
+
}
|
|
2142
|
+
else if (parent !== cRS[2 /* NgtRendererClassId.injectedParent */]) {
|
|
2143
|
+
this.appendChild(cRS[2 /* NgtRendererClassId.injectedParent */], newChild);
|
|
2144
|
+
}
|
|
2145
|
+
return;
|
|
2146
|
+
}
|
|
2087
2147
|
this.store.setParent(newChild, parent);
|
|
2088
2148
|
this.store.addChild(parent, newChild);
|
|
2089
2149
|
// if new child is a portal
|
|
2090
2150
|
if (cRS[0 /* NgtRendererClassId.type */] === 'portal') {
|
|
2091
2151
|
this.store.processPortalContainer(newChild);
|
|
2092
|
-
if (cRS[
|
|
2093
|
-
this.appendChild(parent, cRS[
|
|
2152
|
+
if (cRS[13 /* NgtRendererClassId.portalContainer */]) {
|
|
2153
|
+
this.appendChild(parent, cRS[13 /* NgtRendererClassId.portalContainer */]);
|
|
2094
2154
|
}
|
|
2095
2155
|
return;
|
|
2096
2156
|
}
|
|
2097
2157
|
// if parent is a portal
|
|
2098
2158
|
if (pRS[0 /* NgtRendererClassId.type */] === 'portal') {
|
|
2099
2159
|
this.store.processPortalContainer(parent);
|
|
2100
|
-
if (pRS[
|
|
2101
|
-
this.appendChild(pRS[
|
|
2160
|
+
if (pRS[13 /* NgtRendererClassId.portalContainer */]) {
|
|
2161
|
+
this.appendChild(pRS[13 /* NgtRendererClassId.portalContainer */], newChild);
|
|
2102
2162
|
}
|
|
2103
2163
|
return;
|
|
2104
2164
|
}
|
|
@@ -2110,7 +2170,7 @@ class NgtRenderer {
|
|
|
2110
2170
|
// attach THREE child
|
|
2111
2171
|
attachThreeChild(parent, newChild);
|
|
2112
2172
|
// 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[
|
|
2173
|
+
if (!cRS[5 /* NgtRendererClassId.compound */])
|
|
2114
2174
|
return;
|
|
2115
2175
|
const closestGrandparentWithCompound = this.store.getClosestParentWithCompound(parent);
|
|
2116
2176
|
if (!closestGrandparentWithCompound)
|
|
@@ -2120,26 +2180,26 @@ class NgtRenderer {
|
|
|
2120
2180
|
}
|
|
2121
2181
|
// if only the parent is the THREE instance
|
|
2122
2182
|
if (pRS[0 /* NgtRendererClassId.type */] === 'three') {
|
|
2123
|
-
for (const renderChild of cRS[
|
|
2183
|
+
for (const renderChild of cRS[3 /* NgtRendererClassId.children */]) {
|
|
2124
2184
|
this.appendChild(parent, renderChild);
|
|
2125
2185
|
}
|
|
2126
2186
|
}
|
|
2127
2187
|
// if parent is a compound
|
|
2128
2188
|
if (pRS[0 /* NgtRendererClassId.type */] === 'compound') {
|
|
2129
2189
|
// if compound doesn't have a THREE instance set yet
|
|
2130
|
-
if (!pRS[
|
|
2190
|
+
if (!pRS[7 /* NgtRendererClassId.compounded */] && cRS[0 /* NgtRendererClassId.type */] === 'three') {
|
|
2131
2191
|
// if child is indeed an ngtCompound
|
|
2132
|
-
if (cRS[
|
|
2192
|
+
if (cRS[5 /* NgtRendererClassId.compound */])
|
|
2133
2193
|
this.store.setCompound(parent, newChild);
|
|
2134
2194
|
// if not, we track the parent (that is supposedly the compound component) on this three instance
|
|
2135
|
-
else if (!cRS[
|
|
2136
|
-
cRS[
|
|
2195
|
+
else if (!cRS[6 /* NgtRendererClassId.compoundParent */])
|
|
2196
|
+
cRS[6 /* NgtRendererClassId.compoundParent */] = parent;
|
|
2137
2197
|
}
|
|
2138
2198
|
// reset the compound if it's changed
|
|
2139
|
-
if (pRS[
|
|
2199
|
+
if (pRS[7 /* NgtRendererClassId.compounded */] &&
|
|
2140
2200
|
cRS[0 /* NgtRendererClassId.type */] === 'three' &&
|
|
2141
|
-
cRS[
|
|
2142
|
-
pRS[
|
|
2201
|
+
cRS[5 /* NgtRendererClassId.compound */] &&
|
|
2202
|
+
pRS[7 /* NgtRendererClassId.compounded */] !== newChild) {
|
|
2143
2203
|
this.store.setCompound(parent, newChild);
|
|
2144
2204
|
}
|
|
2145
2205
|
}
|
|
@@ -2148,9 +2208,9 @@ class NgtRenderer {
|
|
|
2148
2208
|
(cRS[0 /* NgtRendererClassId.type */] === 'three' && !getLocalState(newChild).parent) ||
|
|
2149
2209
|
// or both parent and child are DOM elements
|
|
2150
2210
|
((pRS[0 /* NgtRendererClassId.type */] === 'dom' ||
|
|
2151
|
-
(pRS[0 /* NgtRendererClassId.type */] === 'compound' && !pRS[
|
|
2211
|
+
(pRS[0 /* NgtRendererClassId.type */] === 'compound' && !pRS[7 /* NgtRendererClassId.compounded */])) &&
|
|
2152
2212
|
(cRS[0 /* NgtRendererClassId.type */] === 'dom' ||
|
|
2153
|
-
(cRS[0 /* NgtRendererClassId.type */] === 'compound' && !cRS[
|
|
2213
|
+
(cRS[0 /* NgtRendererClassId.type */] === 'compound' && !cRS[7 /* NgtRendererClassId.compounded */])));
|
|
2154
2214
|
if (shouldFindGrandparentInstance) {
|
|
2155
2215
|
// we'll try to get the grandparent instance here so that we can run appendChild with both instances
|
|
2156
2216
|
const closestGrandparentInstance = this.store.getClosestParentWithInstance(parent);
|
|
@@ -2163,7 +2223,7 @@ class NgtRenderer {
|
|
|
2163
2223
|
// refChild: NgtRendererNode
|
|
2164
2224
|
// isMove?: boolean | undefined
|
|
2165
2225
|
) {
|
|
2166
|
-
if (!parent.__ngt_renderer__ || parent === newChild)
|
|
2226
|
+
if (parent == null || !parent.__ngt_renderer__ || parent === newChild)
|
|
2167
2227
|
return;
|
|
2168
2228
|
this.appendChild(parent, newChild);
|
|
2169
2229
|
}
|
|
@@ -2198,12 +2258,12 @@ class NgtRenderer {
|
|
|
2198
2258
|
const rS = el.__ngt_renderer__;
|
|
2199
2259
|
if (rS[0 /* NgtRendererClassId.type */] === 'compound') {
|
|
2200
2260
|
// we don't have the compound instance yet
|
|
2201
|
-
rS[
|
|
2202
|
-
if (!rS[
|
|
2261
|
+
rS[9 /* NgtRendererClassId.attributes */][name] = value;
|
|
2262
|
+
if (!rS[7 /* NgtRendererClassId.compounded */]) {
|
|
2203
2263
|
this.store.queueOperation(el, ['op', () => this.setAttribute(el, name, value, namespace)]);
|
|
2204
2264
|
return;
|
|
2205
2265
|
}
|
|
2206
|
-
this.setAttribute(rS[
|
|
2266
|
+
this.setAttribute(rS[7 /* NgtRendererClassId.compounded */], name, value, namespace);
|
|
2207
2267
|
return;
|
|
2208
2268
|
}
|
|
2209
2269
|
if (rS[0 /* NgtRendererClassId.type */] === 'three')
|
|
@@ -2213,20 +2273,20 @@ class NgtRenderer {
|
|
|
2213
2273
|
const rS = el.__ngt_renderer__;
|
|
2214
2274
|
if (rS[0 /* NgtRendererClassId.type */] === 'compound') {
|
|
2215
2275
|
// we don't have the compound instance yet
|
|
2216
|
-
rS[
|
|
2217
|
-
if (!rS[
|
|
2276
|
+
rS[10 /* NgtRendererClassId.properties */][name] = value;
|
|
2277
|
+
if (!rS[7 /* NgtRendererClassId.compounded */]) {
|
|
2218
2278
|
this.store.queueOperation(el, ['op', () => this.setProperty(el, name, value)]);
|
|
2219
2279
|
return;
|
|
2220
2280
|
}
|
|
2221
|
-
if (rS[
|
|
2222
|
-
Object.assign(rS[
|
|
2281
|
+
if (rS[7 /* NgtRendererClassId.compounded */].__ngt_renderer__[5 /* NgtRendererClassId.compound */]) {
|
|
2282
|
+
Object.assign(rS[7 /* NgtRendererClassId.compounded */].__ngt_renderer__[5 /* NgtRendererClassId.compound */], {
|
|
2223
2283
|
props: {
|
|
2224
|
-
...rS[
|
|
2284
|
+
...rS[7 /* NgtRendererClassId.compounded */].__ngt_renderer__[5 /* NgtRendererClassId.compound */],
|
|
2225
2285
|
[name]: value,
|
|
2226
2286
|
},
|
|
2227
2287
|
});
|
|
2228
2288
|
}
|
|
2229
|
-
this.setProperty(rS[
|
|
2289
|
+
this.setProperty(rS[7 /* NgtRendererClassId.compounded */], name, value);
|
|
2230
2290
|
return;
|
|
2231
2291
|
}
|
|
2232
2292
|
if (rS[0 /* NgtRendererClassId.type */] === 'three')
|
|
@@ -2234,7 +2294,7 @@ class NgtRenderer {
|
|
|
2234
2294
|
}
|
|
2235
2295
|
listen(target, eventName, callback) {
|
|
2236
2296
|
const rS = target.__ngt_renderer__;
|
|
2237
|
-
const targetCdr = rS?.[
|
|
2297
|
+
const targetCdr = rS?.[14 /* NgtRendererClassId.injectorFactory */]?.().get(ChangeDetectorRef, null);
|
|
2238
2298
|
// if target is DOM node, then we pass that to delegate Renderer
|
|
2239
2299
|
const callbackWithCdr = (event) => {
|
|
2240
2300
|
const value = callback(event);
|
|
@@ -2259,12 +2319,12 @@ class NgtRenderer {
|
|
|
2259
2319
|
return this.delegate.listen(eventTarget, event, callbackWithCdr);
|
|
2260
2320
|
}
|
|
2261
2321
|
if (rS[0 /* NgtRendererClassId.type */] === 'three' ||
|
|
2262
|
-
(rS[0 /* NgtRendererClassId.type */] === 'compound' && rS[
|
|
2263
|
-
const instance = rS[
|
|
2322
|
+
(rS[0 /* NgtRendererClassId.type */] === 'compound' && rS[7 /* NgtRendererClassId.compounded */])) {
|
|
2323
|
+
const instance = rS[7 /* NgtRendererClassId.compounded */] || target;
|
|
2264
2324
|
const priority = getLocalState(target).priority;
|
|
2265
2325
|
return processThreeEvent(instance, priority || 0, eventName, callback, this.store.rootCdr, targetCdr);
|
|
2266
2326
|
}
|
|
2267
|
-
if (rS[0 /* NgtRendererClassId.type */] === 'compound' && !rS[
|
|
2327
|
+
if (rS[0 /* NgtRendererClassId.type */] === 'compound' && !rS[7 /* NgtRendererClassId.compounded */]) {
|
|
2268
2328
|
this.store.queueOperation(target, [
|
|
2269
2329
|
'op',
|
|
2270
2330
|
() => this.store.queueOperation(target, ['cleanUp', this.listen(target, eventName, callback)]),
|
|
@@ -3046,5 +3106,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.3", ngImpor
|
|
|
3046
3106
|
* Generated bundle index. Do not edit.
|
|
3047
3107
|
*/
|
|
3048
3108
|
|
|
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 };
|
|
3109
|
+
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
3110
|
//# sourceMappingURL=angular-three.mjs.map
|