@@ -24,36 +24,47 @@ interface ParameterComponentType {
24
24
typeData : typeDataType ;
25
25
}
26
26
27
+ type TypeArguments = ( string | React . JSX . Element ) [ ] ;
28
+
27
29
export const ParameterType = ( { typeData } : ParameterComponentType ) => {
28
30
if ( ! typeData ) return ;
29
31
const typeArgs = typeData . typeArguments ;
30
32
let typeType = typeData . type ;
31
33
if ( typeData . kind === 256 ) {
32
34
typeType = 'declaration' ;
33
35
}
36
+
37
+ // adds type arguments to an array to be rendered
38
+ const addTypeArgs = (
39
+ typeArgs : LinkDataType [ ] ,
40
+ displayArray : TypeArguments
41
+ ) : TypeArguments => {
42
+ const typeArgArray = typeArgs . reduce < TypeArguments > ( ( acc , tArg , index ) => {
43
+ let retValue ;
44
+ if ( index === 0 ) {
45
+ retValue = [ < TypeLink key = { tArg . name } linkData = { tArg } /> ] ;
46
+ } else {
47
+ retValue = [ ...acc , ', ' , < TypeLink key = { tArg . name } linkData = { tArg } /> ] ;
48
+ }
49
+ if ( tArg ?. typeArguments ?. length ) {
50
+ addTypeArgs ( tArg . typeArguments , retValue ) ;
51
+ }
52
+ return retValue ;
53
+ } , [ ] ) ;
54
+ if ( typeArgArray . length ) {
55
+ typeArgArray . push ( '>' ) ;
56
+ typeArgArray . unshift ( '<' ) ;
57
+ displayArray . push ( ...typeArgArray ) ;
58
+ }
59
+ return displayArray ;
60
+ } ;
61
+
34
62
switch ( typeType ) {
35
63
case 'reference' :
36
64
return (
37
65
< >
38
66
< ReferenceType data = { typeData } /> { ' ' }
39
- { typeArgs && (
40
- < >
41
- <
42
- { typeArgs . reduce < ( string | React . JSX . Element ) [ ] > (
43
- ( acc , tArg , index ) => {
44
- if ( index === 0 )
45
- return [ < TypeLink key = { tArg . name } linkData = { tArg } /> ] ;
46
- return [
47
- ...acc ,
48
- ', ' ,
49
- < TypeLink key = { tArg . name } linkData = { tArg } />
50
- ] ;
51
- } ,
52
- [ ]
53
- ) }
54
- >
55
- </ >
56
- ) }
67
+ { typeArgs && < > { addTypeArgs ( typeArgs , [ ] ) } </ > }
57
68
</ >
58
69
) ;
59
70
case 'intersection' :
@@ -82,6 +93,8 @@ export const ParameterType = ({ typeData }: ParameterComponentType) => {
82
93
} ;
83
94
84
95
const ArrayType = ( { data } ) => {
96
+ console . log ( 'ARRAY TYPE' ) ;
97
+ console . log ( data ) ;
85
98
return (
86
99
< >
87
100
< ParameterType typeData = { data } />
0 commit comments