@@ -54,7 +54,10 @@ import { is } from './utils/is';
54
54
} ,
55
55
changeDetection : ChangeDetectionStrategy . OnPush ,
56
56
} )
57
- export class NgtCanvas {
57
+ export class NgtCanvas <
58
+ TSceneGraph extends Type < any > | 'routed' ,
59
+ TSceneCmp = TSceneGraph extends Type < infer Cmp > ? Cmp : NgtRoutedScene ,
60
+ > {
58
61
private store = injectStore ( ) ;
59
62
private initRoot = injectCanvasRootInitializer ( ) ;
60
63
@@ -63,7 +66,7 @@ export class NgtCanvas {
63
66
private environmentInjector = inject ( EnvironmentInjector ) ;
64
67
private injector = inject ( Injector ) ;
65
68
66
- sceneGraph = input . required < Type < any > , Type < any > | 'routed' > ( {
69
+ sceneGraph = input . required < Type < TSceneCmp > , TSceneGraph > ( {
67
70
transform : ( value ) => {
68
71
if ( value === 'routed' ) return NgtRoutedScene ;
69
72
return value ;
@@ -91,7 +94,9 @@ export class NgtCanvas {
91
94
eventSource = input < HTMLElement | ElementRef < HTMLElement > > ( ) ;
92
95
eventPrefix = input < NonNullable < NgtCanvasOptions [ 'eventPrefix' ] > > ( 'offset' ) ;
93
96
lookAt = input < Vector3 | Parameters < Vector3 [ 'set' ] > > ( ) ;
97
+
94
98
created = output < NgtState > ( ) ;
99
+ rendered = output < ComponentRef < TSceneCmp > > ( ) ;
95
100
pointerMissed = outputFromObservable ( this . store . get ( 'pointerMissed$' ) ) ;
96
101
97
102
private glCanvas = viewChild . required < ElementRef < HTMLCanvasElement > > ( 'glCanvas' ) ;
@@ -104,7 +109,7 @@ export class NgtCanvas {
104
109
private configurator = signal < NgtCanvasConfigurator | null > ( null ) ;
105
110
106
111
private glEnvironmentInjector ?: EnvironmentInjector ;
107
- private glRef ?: ComponentRef < unknown > ;
112
+ private glRef ?: ComponentRef < TSceneCmp > ;
108
113
109
114
constructor ( ) {
110
115
// NOTE: this means that everything in NgtCanvas will be in afterNextRender.
@@ -211,5 +216,6 @@ export class NgtCanvas {
211
216
} ) ;
212
217
213
218
this . glRef . changeDetectorRef . detectChanges ( ) ;
219
+ this . rendered . emit ( this . glRef ) ;
214
220
}
215
221
}
0 commit comments