val 0.7.0

An arbitrary precision calculator language
Documentation
import { AstNode } from '@/components/ast-node';
import type { AstNode as AstNodeType, Range } from 'val-wasm';

interface AstPaneProps {
  collapsedNodes: Set<AstNodeType>;
  onHighlightChange: (range: Range | undefined) => void;
  root: AstNodeType | undefined;
  toggleExpand: (node: AstNodeType) => void;
}

export const AstPane = ({
  collapsedNodes,
  onHighlightChange,
  root,
  toggleExpand,
}: AstPaneProps) => {
  return (
    <section
      aria-label='Syntax tree'
      className='flex h-full min-h-0 flex-col overflow-hidden'
    >
      <div className='min-h-0 flex-1 overflow-auto'>
        {root ? (
          <div className='p-2'>
            <AstNode
              node={root}
              level={0}
              collapsedNodes={collapsedNodes}
              toggleExpand={toggleExpand}
              onHighlightChange={onHighlightChange}
            />
          </div>
        ) : (
          <p className='text-muted-foreground p-4 text-center'>
            No AST available
          </p>
        )}
      </div>
    </section>
  );
};