@@ -5,7 +5,7 @@ import './Tree.css';
55
66const Tree : FC < { node : Node } > = ( { node } ) => {
77 return (
8- < pre >
8+ < pre className = "Tree" >
99 < TreeNode node = { node } level = { 0 } />
1010 </ pre >
1111 ) ;
@@ -16,30 +16,41 @@ export default Tree;
1616const TreeNode : FC < { node : Node ; level : number } > = ( { node, level } ) => {
1717 const [ open , setOpen ] = useState ( false ) ;
1818 const handleClick = useCallback ( ( ) => setOpen ( ( open ) => ! open ) , [ ] ) ;
19+ if ( ! open ) {
20+ return (
21+ < span onClick = { handleClick } className = { classNames ( 'toggable' , { open } ) } >
22+ < span className = "nc" > { SyntaxKind [ node . kind ] } </ span > { ' ' }
23+ < span className = "p" >
24+ { '{' }
25+ { Object . keys ( node ) . slice ( 0 , 5 ) . join ( ', ' ) }
26+ { ')' }
27+ </ span >
28+ </ span >
29+ ) ;
30+ }
1931 return (
2032 < >
2133 < span onClick = { handleClick } className = { classNames ( 'toggable' , { open } ) } >
2234 < span className = "nc" > { SyntaxKind [ node . kind ] } </ span > < span className = "p" > { '{' } </ span >
2335 </ span >
24- { open &&
25- Object . entries ( node ) . map ( ( [ key , value ] ) => {
26- if ( key === 'parent' ) {
27- return null ;
28- }
29- return (
30- < div key = { key } >
31- { '\t' . repeat ( level + 1 ) }
32- < PropertyName name = { key } /> :{ ' ' }
33- { isNode ( value ) ? (
34- < TreeNode node = { value } level = { level + 1 } />
35- ) : Array . isArray ( value ) ? (
36- < TreeNodeArray array = { value } level = { level + 1 } />
37- ) : (
38- < PrimitiveValue value = { value } />
39- ) }
40- </ div >
41- ) ;
42- } ) }
36+ { Object . entries ( node ) . map ( ( [ key , value ] ) => {
37+ if ( key === 'parent' ) {
38+ return null ;
39+ }
40+ return (
41+ < div key = { key } >
42+ { '\t' . repeat ( level + 1 ) }
43+ < PropertyName name = { key } /> :{ ' ' }
44+ { isNode ( value ) ? (
45+ < TreeNode node = { value } level = { level + 1 } />
46+ ) : Array . isArray ( value ) ? (
47+ < TreeNodeArray array = { value } level = { level + 1 } />
48+ ) : (
49+ < PrimitiveValue value = { value } />
50+ ) }
51+ </ div >
52+ ) ;
53+ } ) }
4354 < span >
4455 { open && '\t' . repeat ( level ) }
4556 < span className = "p" > { '}' } </ span >
@@ -54,6 +65,15 @@ const TreeNodeArray: FC<{ array: unknown[]; level: number }> = ({ array, level }
5465 if ( ! array . length ) {
5566 return < span className = "p" > []</ span > ;
5667 }
68+ if ( ! open ) {
69+ return (
70+ < span onClick = { handleClick } className = { classNames ( 'toggable' , { open } ) } >
71+ < span className = "p" >
72+ [ { array . length } { array . length > 1 ? 'elements' : 'element' } ]
73+ </ span >
74+ </ span >
75+ ) ;
76+ }
5777 return (
5878 < >
5979 < span onClick = { handleClick } className = { classNames ( 'toggable' , { open } ) } >
0 commit comments