@@ -29,38 +29,23 @@ export class NgtRendererFactory implements RendererFactory2 {
29
29
30
30
private rendererMap = new Map < string , Renderer2 > ( ) ;
31
31
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
+ } ) ;
32
39
33
40
createRenderer ( hostElement : any , type : RendererType2 | null ) : Renderer2 {
34
41
const delegateRenderer = this . delegateRendererFactory . createRenderer ( hostElement , type ) ;
35
42
if ( ! type ) return delegateRenderer ;
36
43
37
44
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
-
52
45
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 ) ;
61
47
this . rendererMap . set ( type . id , renderer ) ;
62
48
}
63
-
64
49
return renderer ;
65
50
}
66
51
}
@@ -69,20 +54,19 @@ export class NgtRendererFactory implements RendererFactory2 {
69
54
* Anything abbreviated with rS/RS stands for RendererState
70
55
*/
71
56
export class NgtRenderer implements Renderer2 {
72
- private first = false ;
73
57
constructor (
74
58
private readonly delegate : Renderer2 ,
75
59
private readonly store : NgtRendererStore ,
76
60
private readonly catalogue : Record < string , new ( ...args : any [ ] ) => any > ,
77
- private readonly root = true
61
+ private root = true
78
62
) { }
79
63
80
64
createElement ( name : string , namespace ?: string | null | undefined ) {
81
65
const element = this . delegate . createElement ( name , namespace ) ;
82
66
83
67
// 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 ;
86
70
const node = this . store . createNode ( 'three' , this . store . rootScene ) ;
87
71
node . __ngt_renderer__ [ NgtRendererClassId . injectorFactory ] = ( ) => getDebugNode ( element ) ! . injector ;
88
72
return node ;
0 commit comments