1
1
import { DOCUMENT } from '@angular/common' ;
2
2
import {
3
+ DebugNode ,
3
4
Injectable ,
4
5
Renderer2 ,
5
6
RendererFactory2 ,
6
7
RendererType2 ,
7
- getDebugNode ,
8
8
inject ,
9
9
makeEnvironmentProviders ,
10
10
untracked ,
@@ -99,7 +99,12 @@ export class NgtRenderer implements Renderer2 {
99
99
if ( this . isRoot ) {
100
100
this . isRoot = false ;
101
101
const node = createNode ( 'three' , this . rootStore . snapshot . scene , this . document ) ;
102
- node . __ngt_renderer__ [ NgtRendererClassId . injectorFactory ] = ( ) => getDebugNode ( element ) ?. injector ;
102
+ node . __ngt_renderer__ [ NgtRendererClassId . debugNodeFactory ] = ( ) => {
103
+ if ( ! node . __ngt_renderer__ [ NgtRendererClassId . debugNode ] ) {
104
+ node . __ngt_renderer__ [ NgtRendererClassId . debugNode ] = new DebugNode ( element ) ;
105
+ }
106
+ return node . __ngt_renderer__ [ NgtRendererClassId . debugNode ] ;
107
+ } ;
103
108
return node ;
104
109
}
105
110
@@ -521,13 +526,15 @@ export class NgtRenderer implements Renderer2 {
521
526
}
522
527
523
528
if ( rS [ NgtRendererClassId . type ] === 'comment' ) {
524
- rS [ NgtRendererClassId . injectorFactory ] = null ! ;
529
+ rS [ NgtRendererClassId . debugNode ] = null ! ;
530
+ rS [ NgtRendererClassId . debugNodeFactory ] = null ! ;
525
531
delete ( node as NgtAnyRecord ) [ SPECIAL_INTERNAL_ADD_COMMENT ] ;
526
532
this . removeCommentNode ( node , this . argsCommentNodes ) ;
527
533
}
528
534
529
535
if ( rS [ NgtRendererClassId . type ] === 'portal' ) {
530
- rS [ NgtRendererClassId . injectorFactory ] = null ! ;
536
+ rS [ NgtRendererClassId . debugNode ] = null ! ;
537
+ rS [ NgtRendererClassId . debugNodeFactory ] = null ! ;
531
538
this . removeCommentNode ( node , this . portalCommentsNodes ) ;
532
539
}
533
540
@@ -563,7 +570,7 @@ export class NgtRenderer implements Renderer2 {
563
570
}
564
571
565
572
private processPortalContainer ( portal : NgtRendererNode ) {
566
- const injector = portal . __ngt_renderer__ [ NgtRendererClassId . injectorFactory ] ?.( ) ;
573
+ const injector = portal . __ngt_renderer__ [ NgtRendererClassId . debugNodeFactory ] ?.( ) ?. injector ;
567
574
if ( ! injector ) return ;
568
575
569
576
const portalStore = injector . get ( NGT_STORE , null ) ;
@@ -608,7 +615,7 @@ export class NgtRenderer implements Renderer2 {
608
615
i -- ;
609
616
continue ;
610
617
}
611
- const injector = comment . __ngt_renderer__ [ NgtRendererClassId . injectorFactory ] ( ) ;
618
+ const injector = comment . __ngt_renderer__ [ NgtRendererClassId . debugNodeFactory ] ?. ( ) ?. injector ;
612
619
if ( ! injector ) {
613
620
i -- ;
614
621
continue ;
@@ -629,41 +636,6 @@ export class NgtRenderer implements Renderer2 {
629
636
return directive ;
630
637
}
631
638
632
- private tryGetPortalStore ( ) {
633
- let store : NgtSignalStore < NgtState > | undefined ;
634
- const destroyed = [ ] ;
635
- // we only care about the portal states because NgtStore only differs per Portal
636
- let i = this . portalCommentsNodes . length - 1 ;
637
- while ( i >= 0 ) {
638
- // loop through the portal state backwards to find the closest NgtStore
639
- const portal = this . portalCommentsNodes [ i ] ;
640
- if ( portal . __ngt_renderer__ [ NgtRendererClassId . destroyed ] ) {
641
- destroyed . push ( i ) ;
642
- i -- ;
643
- continue ;
644
- }
645
-
646
- const injector = portal . __ngt_renderer__ [ NgtRendererClassId . injectorFactory ] ( ) ;
647
- if ( ! injector ) {
648
- i -- ;
649
- continue ;
650
- }
651
- const instance = injector . get ( NGT_STORE , null ) ;
652
- // only the instance with previousRoot should pass
653
- if ( instance && instance . get ( 'previousRoot' ) ) {
654
- store = instance ;
655
- break ;
656
- }
657
- i -- ;
658
- }
659
-
660
- destroyed . forEach ( ( index ) => {
661
- this . portalCommentsNodes . splice ( index , 1 ) ;
662
- } ) ;
663
-
664
- return store || this . rootStore ;
665
- }
666
-
667
639
createText = this . delegate . createText . bind ( this . delegate ) ;
668
640
destroy = this . delegate . destroy . bind ( this . delegate ) ;
669
641
destroyNode : ( ( node : any ) => void ) | null = null ;
0 commit comments