@@ -419,7 +419,7 @@ export function AstTree() {
419419 setActiveNode ( blockHeaderId , 'Block metadata (Header)' ) ;
420420 toggleExpanded ( blockHeaderId ) ;
421421 } }
422- onDoubleClick = { ( ) => scrollToHex ( block . header . numColumnsRange . start ) }
422+ onDoubleClick = { ( ) => scrollToHex ( block . header . byteRange . start ) }
423423 onMouseEnter = { ( ) => setHoveredNode ( blockHeaderId ) }
424424 onMouseLeave = { ( ) => setHoveredNode ( null ) }
425425 style = { { '--depth' : 1 } as React . CSSProperties }
@@ -428,12 +428,53 @@ export function AstTree() {
428428 < span className = "ast-metadata-badge" > Header</ span >
429429 < span className = "ast-metadata-label" > Block metadata</ span >
430430 < span className = "ast-metadata-bytes" >
431- [{ block . header . numColumnsRange . start } :{ block . header . numRowsRange . end } ] (
432- { block . header . numRowsRange . end - block . header . numColumnsRange . start } B)
431+ [{ block . header . byteRange . start } :{ block . header . byteRange . end } ] (
432+ { block . header . byteRange . end - block . header . byteRange . start } B)
433433 </ span >
434434 </ div >
435435 { isHeaderExpanded && (
436436 < div className = "ast-children" >
437+ { block . header . blockInfo && (
438+ < div className = "ast-metadata-section" >
439+ < div
440+ className = { `ast-metadata-header ${ activeNodeId === `block-${ blockIndex } -blockinfo` ? 'active' : '' } ${ hoveredNodeId === `block-${ blockIndex } -blockinfo` ? 'hovered' : '' } ` }
441+ onClick = { ( ) => setActiveNode ( `block-${ blockIndex } -blockinfo` , 'BlockInfo' ) }
442+ onDoubleClick = { ( ) => scrollToHex ( block . header . blockInfo ! . byteRange . start ) }
443+ onMouseEnter = { ( ) => setHoveredNode ( `block-${ blockIndex } -blockinfo` ) }
444+ onMouseLeave = { ( ) => setHoveredNode ( null ) }
445+ style = { { '--depth' : 2 } as React . CSSProperties }
446+ >
447+ < span className = "ast-metadata-badge" > BlockInfo</ span >
448+ < span className = "ast-metadata-label" > Field-based metadata</ span >
449+ < span className = "ast-metadata-bytes" >
450+ [{ block . header . blockInfo . byteRange . start } :{ block . header . blockInfo . byteRange . end } ] (
451+ { block . header . blockInfo . byteRange . end - block . header . blockInfo . byteRange . start } B)
452+ </ span >
453+ </ div >
454+ { block . header . blockInfo . fields . map ( ( field ) => {
455+ const fieldId = `block-${ blockIndex } -blockinfo-field-${ field . fieldNumber } ` ;
456+ return (
457+ < div
458+ key = { fieldId }
459+ className = { `ast-metadata-item ${ activeNodeId === fieldId ? 'active' : '' } ${ hoveredNodeId === fieldId ? 'hovered' : '' } ` }
460+ style = { { '--depth' : 3 } as React . CSSProperties }
461+ onClick = { ( ) => setActiveNode ( fieldId , `${ field . fieldName } : ${ field . displayValue } ` ) }
462+ onDoubleClick = { ( ) => scrollToHex ( field . byteRange . start ) }
463+ onMouseEnter = { ( ) => setHoveredNode ( fieldId ) }
464+ onMouseLeave = { ( ) => setHoveredNode ( null ) }
465+ >
466+ < span className = "ast-metadata-badge" > Field { field . fieldNumber } </ span >
467+ < span className = "ast-metadata-label" > { field . fieldName } :</ span >
468+ < span className = "ast-metadata-value" > { field . displayValue } </ span >
469+ < span className = "ast-metadata-bytes" >
470+ [{ field . byteRange . start } :{ field . byteRange . end } ] (
471+ { field . byteRange . end - field . byteRange . start } B)
472+ </ span >
473+ </ div >
474+ ) ;
475+ } ) }
476+ </ div >
477+ ) }
437478 < div
438479 className = { `ast-metadata-item ${ activeNodeId === numColsId ? 'active' : '' } ${ hoveredNodeId === numColsId ? 'hovered' : '' } ` }
439480 style = { { '--depth' : 2 } as React . CSSProperties }
@@ -525,8 +566,8 @@ export function AstTree() {
525566 < span className = "ast-metadata-badge" > Meta</ span >
526567 < span className = "ast-metadata-label" > Column definition</ span >
527568 < span className = "ast-metadata-bytes" >
528- [{ col . nameByteRange . start } :{ col . typeByteRange . end } ] (
529- { col . typeByteRange . end - col . nameByteRange . start } B)
569+ [{ col . metadataByteRange . start } :{ col . metadataByteRange . end } ] (
570+ { col . metadataByteRange . end - col . metadataByteRange . start } B)
530571 </ span >
531572 </ div >
532573 { isColMetaExpanded && (
@@ -563,6 +604,66 @@ export function AstTree() {
563604 { col . typeByteRange . end - col . typeByteRange . start } B)
564605 </ span >
565606 </ div >
607+ { col . serializationInfo && (
608+ < >
609+ < div
610+ className = { `ast-metadata-item ${ activeNodeId === `${ col . id } -serialization` ? 'active' : '' } ${ hoveredNodeId === `${ col . id } -serialization` ? 'hovered' : '' } ` }
611+ style = { { '--depth' : 3 } as React . CSSProperties }
612+ onClick = { ( ) => setActiveNode ( `${ col . id } -serialization` , 'Serialization info' ) }
613+ onDoubleClick = { ( ) => scrollToHex ( col . serializationInfo ! . byteRange . start ) }
614+ onMouseEnter = { ( ) => setHoveredNode ( `${ col . id } -serialization` ) }
615+ onMouseLeave = { ( ) => setHoveredNode ( null ) }
616+ >
617+ < span className = "ast-metadata-badge" > Meta</ span >
618+ < span className = "ast-metadata-label" > serialization:</ span >
619+ < span className = "ast-metadata-value" >
620+ { col . serializationInfo . hasCustomSerialization ? 'custom' : 'default' }
621+ </ span >
622+ < span className = "ast-metadata-bytes" >
623+ [{ col . serializationInfo . byteRange . start } :{ col . serializationInfo . byteRange . end } ] (
624+ { col . serializationInfo . byteRange . end - col . serializationInfo . byteRange . start } B)
625+ </ span >
626+ </ div >
627+ < div
628+ className = { `ast-metadata-item ${ activeNodeId === `${ col . id } -serialization-has-custom` ? 'active' : '' } ${ hoveredNodeId === `${ col . id } -serialization-has-custom` ? 'hovered' : '' } ` }
629+ style = { { '--depth' : 3 } as React . CSSProperties }
630+ onClick = { ( ) => setActiveNode ( `${ col . id } -serialization-has-custom` , `has_custom: ${ col . serializationInfo ! . hasCustomSerialization } ` ) }
631+ onDoubleClick = { ( ) => scrollToHex ( col . serializationInfo ! . hasCustomRange . start ) }
632+ onMouseEnter = { ( ) => setHoveredNode ( `${ col . id } -serialization-has-custom` ) }
633+ onMouseLeave = { ( ) => setHoveredNode ( null ) }
634+ >
635+ < span className = "ast-metadata-badge" > UInt8</ span >
636+ < span className = "ast-metadata-label" > has_custom:</ span >
637+ < span className = "ast-metadata-value" >
638+ { col . serializationInfo . hasCustomSerialization ? '1' : '0' }
639+ </ span >
640+ < span className = "ast-metadata-bytes" >
641+ [{ col . serializationInfo . hasCustomRange . start } :{ col . serializationInfo . hasCustomRange . end } ] (
642+ { col . serializationInfo . hasCustomRange . end - col . serializationInfo . hasCustomRange . start } B)
643+ </ span >
644+ </ div >
645+ { col . serializationInfo . kindStackRange && (
646+ < div
647+ className = { `ast-metadata-item ${ activeNodeId === `${ col . id } -serialization-kinds` ? 'active' : '' } ${ hoveredNodeId === `${ col . id } -serialization-kinds` ? 'hovered' : '' } ` }
648+ style = { { '--depth' : 3 } as React . CSSProperties }
649+ onClick = { ( ) => setActiveNode ( `${ col . id } -serialization-kinds` , `kind stack: ${ col . serializationInfo ! . kindStack . join ( ' -> ' ) } ` ) }
650+ onDoubleClick = { ( ) => scrollToHex ( col . serializationInfo ! . kindStackRange ! . start ) }
651+ onMouseEnter = { ( ) => setHoveredNode ( `${ col . id } -serialization-kinds` ) }
652+ onMouseLeave = { ( ) => setHoveredNode ( null ) }
653+ >
654+ < span className = "ast-metadata-badge" > Kinds</ span >
655+ < span className = "ast-metadata-label" > kindStack:</ span >
656+ < span className = "ast-metadata-value" >
657+ { col . serializationInfo . kindStack . join ( ' -> ' ) }
658+ </ span >
659+ < span className = "ast-metadata-bytes" >
660+ [{ col . serializationInfo . kindStackRange . start } :{ col . serializationInfo . kindStackRange . end } ] (
661+ { col . serializationInfo . kindStackRange . end - col . serializationInfo . kindStackRange . start } B)
662+ </ span >
663+ </ div >
664+ ) }
665+ </ >
666+ ) }
566667 </ div >
567668 ) }
568669 </ div >
0 commit comments