1- import  {  Injector ,  Signal ,  effect ,  signal ,   untracked  }  from  '@angular/core' ; 
1+ import  {  Injector ,  Signal ,  effect ,  signal  }  from  '@angular/core' ; 
22import  {  assertInjector  }  from  'ngxtension/assert-injector' ; 
33import  {  Loader ,  Object3D  }  from  'three' ; 
44import  {  NgtAnyRecord  }  from  './types' ; 
@@ -43,9 +43,7 @@ function normalizeInputs(input: string | string[] | Record<string, string>) {
4343		urls  =  Object . values ( input ) ; 
4444	} 
4545
46- 	return  urls . map ( ( url )  =>  { 
47- 		return  url . includes ( 'undefined' )  ||  url . includes ( 'null' )  ||  ! url  ? ''  : url ; 
48- 	} ) ; 
46+ 	return  urls . map ( ( url )  =>  ( url . includes ( 'undefined' )  ||  url . includes ( 'null' )  ||  ! url  ? ''  : url ) ) ; 
4947} 
5048
5149function  load < 
@@ -66,7 +64,7 @@ function load<
6664		onProgress ?: ( event : ProgressEvent )  =>  void ; 
6765	}  =  { } , 
6866)  { 
69- 	return  ( ) : Array < Promise < any > >  |   null   =>  { 
67+ 	return  ( ) : Array < Promise < any > >  =>  { 
7068		const  urls  =  normalizeInputs ( inputs ( ) ) ; 
7169
7270		let  loader : Loader < TData >  =  memoizedLoaders . get ( loaderConstructorFactory ( urls ) ) ; 
@@ -76,11 +74,9 @@ function load<
7674		} 
7775
7876		if  ( extensions )  extensions ( loader ) ; 
79- 		 // TODO: reevaluate this 
77+ 
8078		return  urls . map ( ( url )  =>  { 
81- 			if  ( url  ===  '' )  { 
82- 				return  null ; 
83- 			} 
79+ 			if  ( url  ===  '' )  return  Promise . resolve ( null ) ; 
8480
8581			if  ( ! cached . has ( url ) )  { 
8682				cached . set ( 
@@ -105,6 +101,7 @@ function load<
105101					} ) , 
106102				) ; 
107103			} 
104+ 
108105			return  cached . get ( url ) ! ; 
109106		} ) ; 
110107	} ; 
@@ -141,31 +138,25 @@ function _injectLoader<
141138			onProgress, 
142139			onLoad : onLoad  as  ( data : unknown )  =>  void , 
143140		} ) ; 
144- 		effect ( 
145- 			( )  =>  { 
146- 				const  originalUrls  =  inputs ( ) ; 
147- 				const  cachedEffect  =  effector ( ) ; 
148- 				if  ( cachedEffect  ===  null  &&  untracked ( response )  !==  null )  { 
149- 					response . set ( null ) ; 
150- 				}  else  if  ( cachedEffect  !==  null )  { 
151- 					Promise . all ( cachedEffect ) . then ( ( results )  =>  { 
152- 						response . update ( ( )  =>  { 
153- 							if  ( Array . isArray ( originalUrls ) )  return  results ; 
154- 							if  ( typeof  originalUrls  ===  'string' )  return  results [ 0 ] ; 
155- 							const  keys  =  Object . keys ( originalUrls ) ; 
156- 							return  keys . reduce ( 
157- 								( result ,  key )  =>  { 
158- 									( result  as  NgtAnyRecord ) [ key ]  =  results [ keys . indexOf ( key ) ] ; 
159- 									return  result ; 
160- 								} , 
161- 								{ }  as  {  [ key  in  keyof  TUrl ] : NgtBranchingReturn < TReturn ,  NgtGLTFLike ,  NgtGLTFLike  &  NgtObjectMap >  } , 
162- 							) ; 
163- 						} ) ; 
164- 					} ) ; 
165- 				} 
166- 			} , 
167- 			{  allowSignalWrites : true  } , 
168- 		) ; 
141+ 
142+ 		effect ( ( )  =>  { 
143+ 			const  originalUrls  =  inputs ( ) ; 
144+ 			const  cachedEffect  =  effector ( ) ; 
145+ 			Promise . all ( cachedEffect ) . then ( ( results )  =>  { 
146+ 				response . update ( ( )  =>  { 
147+ 					if  ( Array . isArray ( originalUrls ) )  return  results ; 
148+ 					if  ( typeof  originalUrls  ===  'string' )  return  results [ 0 ] ; 
149+ 					const  keys  =  Object . keys ( originalUrls ) ; 
150+ 					return  keys . reduce ( 
151+ 						( result ,  key )  =>  { 
152+ 							( result  as  NgtAnyRecord ) [ key ]  =  results [ keys . indexOf ( key ) ] ; 
153+ 							return  result ; 
154+ 						} , 
155+ 						{ }  as  {  [ key  in  keyof  TUrl ] : NgtBranchingReturn < TReturn ,  NgtGLTFLike ,  NgtGLTFLike  &  NgtObjectMap >  } , 
156+ 					) ; 
157+ 				} ) ; 
158+ 			} ) ; 
159+ 		} ) ; 
169160
170161		return  response . asReadonly ( ) ; 
171162	} ) ; 
0 commit comments