@@ -29,7 +29,25 @@ function _extensions(useDraco: boolean | string, useMeshOpt: boolean, extensions
2929 } ;
3030}
3131
32- function _injectGLTF < TUrl extends string | string [ ] | Record < string , string > > (
32+ type InjectGLTFUrl < TGltf extends GLTF | GLTF [ ] | Record < string , GLTF > > = TGltf extends GLTF
33+ ? string
34+ : TGltf extends GLTF [ ]
35+ ? string [ ]
36+ : TGltf extends Record < string , GLTF >
37+ ? Record < string , string >
38+ : never ;
39+ type InjectGLTFObjectMap < TGltf extends GLTF | GLTF [ ] | Record < string , GLTF > > = TGltf extends GLTF
40+ ? TGltf & NgtObjectMap
41+ : TGltf extends Array < infer _GLTF extends GLTF >
42+ ? Array < _GLTF & NgtObjectMap >
43+ : TGltf extends Record < string , infer _GLTF extends GLTF >
44+ ? Record < string , _GLTF & NgtObjectMap >
45+ : never ;
46+
47+ function _injectGLTF <
48+ TGltf extends GLTF | GLTF [ ] | Record < string , GLTF > = GLTF ,
49+ TUrl extends string | string [ ] | Record < string , string > = InjectGLTFUrl < TGltf > ,
50+ > (
3351 path : ( ) => TUrl ,
3452 {
3553 useDraco = true ,
@@ -42,9 +60,9 @@ function _injectGLTF<TUrl extends string | string[] | Record<string, string>>(
4260 useMeshOpt ?: boolean ;
4361 injector ?: Injector ;
4462 extensions ?: ( loader : GLTFLoader ) => void ;
45- onLoad ?: ( data : NgtLoaderResults < TUrl , GLTF & NgtObjectMap > ) => void ;
63+ onLoad ?: ( data : InjectGLTFObjectMap < TGltf > ) => void ;
4664 } = { } ,
47- ) : Signal < NgtLoaderResults < TUrl , GLTF & NgtObjectMap > | null > & { scene : Signal < GLTF [ 'scene' ] | null > } {
65+ ) : Signal < InjectGLTFObjectMap < TGltf > | null > & { scene : Signal < GLTF [ 'scene' ] | null > } {
4866 return assertInjector ( _injectGLTF , injector , ( ) => {
4967 const result = injectLoader ( ( ) => GLTFLoader , path , {
5068 extensions : _extensions ( useDraco , useMeshOpt , extensions ) ,
@@ -61,7 +79,7 @@ function _injectGLTF<TUrl extends string | string[] | Record<string, string>>(
6179 } ) ;
6280
6381 return result ;
64- } ) as Signal < NgtLoaderResults < TUrl , GLTF & NgtObjectMap > | null > & { scene : Signal < GLTF [ 'scene' ] | null > } ;
82+ } ) as Signal < InjectGLTFObjectMap < TGltf > | null > & { scene : Signal < GLTF [ 'scene' ] | null > } ;
6583}
6684
6785_injectGLTF . preload = < TUrl extends string | string [ ] | Record < string , string > > (
0 commit comments