@@ -114,7 +114,7 @@ export interface Viewport {
114114  aspect : number 
115115} 
116116
117- /** Possible camera types . */ 
117+ /** Possible camera kinds . */ 
118118export  type  CameraKind  =  PerspectiveCamera  |  OrthographicCamera 
119119
120120export  type  Loader < TSource ,  TResult  extends  object >  =  { 
@@ -318,7 +318,6 @@ export interface PluginFn {
318318    methods : ( element : T  extends  readonly  Constructor < infer U > [ ]  ? U  : never )  =>  Methods , 
319319  ) : Plugin < { 
320320    ( element : T  extends  readonly  Constructor < infer U > [ ]  ? U  : never ) : Methods 
321-     ( element : any ) : { } 
322321  } > 
323322
324323  // No setup - direct usage with two arguments (type guard) 
@@ -327,7 +326,6 @@ export interface PluginFn {
327326    methods : ( element : T )  =>  Methods , 
328327  ) : Plugin < { 
329328    ( element : T ) : Methods 
330-     ( element : any ) : { } 
331329  } > 
332330
333331  // Setup function 
@@ -349,7 +347,6 @@ export interface PluginFn {
349347        )  =>  Methods , 
350348      ) : Plugin < { 
351349        ( element : T  extends  readonly  Constructor < infer U > [ ]  ? U  : never ) : Methods 
352-         ( element : any ) : { } 
353350      } > 
354351
355352      // With setup - two arguments (type guard) 
@@ -358,7 +355,6 @@ export interface PluginFn {
358355        methods : ( element : T ,  context : TSetupContext )  =>  Methods , 
359356      ) : Plugin < { 
360357        ( element : T ) : Methods 
361-         ( element : any ) : { } 
362358      } > 
363359    } 
364360  } 
@@ -370,81 +366,10 @@ export type InferPluginProps<TPlugins extends Plugin[]> = Merge<{
370366    : never 
371367} > 
372368
373- /** 
374-  * Helper type to resolve overloaded function returns 
375-  * Matches overloads from most specific to least specific 
376-  */ 
377- type  ResolvePluginReturn < TFn ,  TTarget >  =  TFn  extends  { 
378-   ( element : infer P1 ) : infer R1 
379-   ( element : infer P2 ) : infer R2 
380-   ( element : infer P3 ) : infer R3 
381-   ( element : infer P4 ) : infer R4 
382-   ( element : infer P5 ) : infer R5 
383- } 
384-   ? TTarget  extends  P1 
385-     ? R1 
386-     : TTarget  extends  P2 
387-     ? R2 
388-     : TTarget  extends  P3 
389-     ? R3 
390-     : TTarget  extends  P4 
391-     ? R4 
392-     : TTarget  extends  P5 
393-     ? R5 
394-     : never 
395-   : TFn  extends  { 
396-       ( element : infer P1 ) : infer R1 
397-       ( element : infer P2 ) : infer R2 
398-       ( element : infer P3 ) : infer R3 
399-       ( element : infer P4 ) : infer R4 
400-     } 
401-   ? TTarget  extends  P1 
402-     ? R1 
403-     : TTarget  extends  P2 
404-     ? R2 
405-     : TTarget  extends  P3 
406-     ? R3 
407-     : TTarget  extends  P4 
408-     ? R4 
409-     : never 
410-   : TFn  extends  { 
411-       ( element : infer P1 ) : infer R1 
412-       ( element : infer P2 ) : infer R2 
413-       ( element : infer P3 ) : infer R3 
414-     } 
415-   ? TTarget  extends  P1 
416-     ? R1 
417-     : TTarget  extends  P2 
418-     ? R2 
419-     : TTarget  extends  P3 
420-     ? R3 
421-     : never 
422-   : TFn  extends  {  ( element : infer P1 ) : infer R1 ;  ( element : infer P2 ) : infer R2  } 
423-   ? TTarget  extends  P1 
424-     ? R1 
425-     : TTarget  extends  P2 
426-     ? R2 
427-     : never 
428-   : TFn  extends  {  ( element : infer P ) : infer R  } 
429-   ? TTarget  extends  P 
430-     ? R 
431-     : never 
432-   : never 
433- 
434- /** 
435-  * Resolves what a plugin returns for a specific element type T 
436-  * Handles both simple functions and overloaded functions 
437-  */ 
438369type  PluginReturn < TPlugin ,  TKind >  =  TPlugin  extends  Plugin < infer TFn > 
439-   ? TFn  extends  ( ...args : any [ ] )  =>  any 
440-     ? ResolvePluginReturn < TFn ,  TKind >  extends  infer TResult 
441-       ? TResult  extends  never 
442-         ? TFn  extends  ( element : TKind )  =>  infer R 
443-           ? R 
444-           : TFn  extends  ( element : any )  =>  infer R 
445-           ? R 
446-           : { } 
447-         : TResult 
370+   ? TFn  extends  {  ( element : infer P ) : infer R  } 
371+     ? TKind  extends  P 
372+       ? R 
448373      : { } 
449374    : { } 
450375  : { } 
@@ -454,11 +379,12 @@ type PluginReturn<TPlugin, TKind> = TPlugin extends Plugin<infer TFn>
454379 * This allows plugins to provide conditional methods based on the actual element type 
455380 */ 
456381export  type  PluginPropsOf < T ,  TPlugins  extends  Plugin [ ] >  =  Merge < { 
457-   [ K  in  keyof  TPlugins ] : PluginReturn < TPlugins [ K ] ,  T >  extends  infer Methods 
458-     ? Methods  extends  Record < string ,  any > 
459-       ? { 
460-           [ M  in  keyof  Methods ] : Methods [ M ]  extends  ( value : infer V )  =>  any  ? V  : never 
461-         } 
462-       : { } 
382+   [ K  in  keyof  TPlugins ] : PluginReturn < TPlugins [ K ] ,  T >  extends  infer Methods  extends  Record < 
383+     string , 
384+     any 
385+   > 
386+     ? { 
387+         [ M  in  keyof  Methods ] : Methods [ M ]  extends  ( value : infer V )  =>  any  ? V  : never 
388+       } 
463389    : { } 
464390} > 
0 commit comments