@@ -29,38 +29,23 @@ export class NgtRendererFactory implements RendererFactory2 {
2929
3030 private rendererMap = new Map < string , Renderer2 > ( ) ;
3131 private portals : NgtRendererNode [ ] = [ ] ;
32+ private rendererStore = new NgtRendererStore ( {
33+ store : this . store ,
34+ cdr : this . cdr ,
35+ portals : this . portals ,
36+ compoundPrefixes : this . compoundPrefixes ,
37+ document : this . document ,
38+ } ) ;
3239
3340 createRenderer ( hostElement : any , type : RendererType2 | null ) : Renderer2 {
3441 const delegateRenderer = this . delegateRendererFactory . createRenderer ( hostElement , type ) ;
3542 if ( ! type ) return delegateRenderer ;
3643
3744 let renderer = this . rendererMap . get ( type . id ) ;
38- if ( renderer ) return renderer ;
39-
40- if ( ! hostElement ) {
41- const store = new NgtRendererStore ( {
42- store : this . store ,
43- cdr : this . cdr ,
44- portals : this . portals ,
45- compoundPrefixes : this . compoundPrefixes ,
46- document : this . document ,
47- } ) ;
48- renderer = new NgtRenderer ( delegateRenderer , store , this . catalogue ) ;
49- this . rendererMap . set ( type . id , renderer ) ;
50- }
51-
5245 if ( ! renderer ) {
53- const store = new NgtRendererStore ( {
54- store : this . store ,
55- cdr : this . cdr ,
56- portals : this . portals ,
57- compoundPrefixes : this . compoundPrefixes ,
58- document : this . document ,
59- } ) ;
60- renderer = new NgtRenderer ( delegateRenderer , store , this . catalogue , false ) ;
46+ renderer = new NgtRenderer ( delegateRenderer , this . rendererStore , this . catalogue , ! hostElement ) ;
6147 this . rendererMap . set ( type . id , renderer ) ;
6248 }
63-
6449 return renderer ;
6550 }
6651}
@@ -69,20 +54,19 @@ export class NgtRendererFactory implements RendererFactory2 {
6954 * Anything abbreviated with rS/RS stands for RendererState
7055 */
7156export class NgtRenderer implements Renderer2 {
72- private first = false ;
7357 constructor (
7458 private readonly delegate : Renderer2 ,
7559 private readonly store : NgtRendererStore ,
7660 private readonly catalogue : Record < string , new ( ...args : any [ ] ) => any > ,
77- private readonly root = true
61+ private root = true
7862 ) { }
7963
8064 createElement ( name : string , namespace ?: string | null | undefined ) {
8165 const element = this . delegate . createElement ( name , namespace ) ;
8266
8367 // on first pass, we return the Root Scene as the root node
84- if ( this . root && ! this . first ) {
85- this . first = true ;
68+ if ( this . root ) {
69+ this . root = false ;
8670 const node = this . store . createNode ( 'three' , this . store . rootScene ) ;
8771 node . __ngt_renderer__ [ NgtRendererClassId . injectorFactory ] = ( ) => getDebugNode ( element ) ! . injector ;
8872 return node ;
0 commit comments