11import { DOCUMENT } from '@angular/common' ;
22import {
3+ DebugNode ,
34 Injectable ,
45 Renderer2 ,
56 RendererFactory2 ,
67 RendererType2 ,
7- getDebugNode ,
88 inject ,
99 makeEnvironmentProviders ,
1010 untracked ,
@@ -99,7 +99,12 @@ export class NgtRenderer implements Renderer2 {
9999 if ( this . isRoot ) {
100100 this . isRoot = false ;
101101 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+ } ;
103108 return node ;
104109 }
105110
@@ -521,13 +526,15 @@ export class NgtRenderer implements Renderer2 {
521526 }
522527
523528 if ( rS [ NgtRendererClassId . type ] === 'comment' ) {
524- rS [ NgtRendererClassId . injectorFactory ] = null ! ;
529+ rS [ NgtRendererClassId . debugNode ] = null ! ;
530+ rS [ NgtRendererClassId . debugNodeFactory ] = null ! ;
525531 delete ( node as NgtAnyRecord ) [ SPECIAL_INTERNAL_ADD_COMMENT ] ;
526532 this . removeCommentNode ( node , this . argsCommentNodes ) ;
527533 }
528534
529535 if ( rS [ NgtRendererClassId . type ] === 'portal' ) {
530- rS [ NgtRendererClassId . injectorFactory ] = null ! ;
536+ rS [ NgtRendererClassId . debugNode ] = null ! ;
537+ rS [ NgtRendererClassId . debugNodeFactory ] = null ! ;
531538 this . removeCommentNode ( node , this . portalCommentsNodes ) ;
532539 }
533540
@@ -563,7 +570,7 @@ export class NgtRenderer implements Renderer2 {
563570 }
564571
565572 private processPortalContainer ( portal : NgtRendererNode ) {
566- const injector = portal . __ngt_renderer__ [ NgtRendererClassId . injectorFactory ] ?.( ) ;
573+ const injector = portal . __ngt_renderer__ [ NgtRendererClassId . debugNodeFactory ] ?.( ) ?. injector ;
567574 if ( ! injector ) return ;
568575
569576 const portalStore = injector . get ( NGT_STORE , null ) ;
@@ -608,7 +615,7 @@ export class NgtRenderer implements Renderer2 {
608615 i -- ;
609616 continue ;
610617 }
611- const injector = comment . __ngt_renderer__ [ NgtRendererClassId . injectorFactory ] ( ) ;
618+ const injector = comment . __ngt_renderer__ [ NgtRendererClassId . debugNodeFactory ] ?. ( ) ?. injector ;
612619 if ( ! injector ) {
613620 i -- ;
614621 continue ;
@@ -629,41 +636,6 @@ export class NgtRenderer implements Renderer2 {
629636 return directive ;
630637 }
631638
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-
667639 createText = this . delegate . createText . bind ( this . delegate ) ;
668640 destroy = this . delegate . destroy . bind ( this . delegate ) ;
669641 destroyNode : ( ( node : any ) => void ) | null = null ;
0 commit comments