"use client"; import { useState } from "react"; import { NotationHoverCard } from "@/components/tree-visualizer/NotationHoverCard"; import { MathOnlyRenderer } from "@/components/tree-visualizer/RichMath"; import { cn } from "@/lib/utils"; import { splitTokenBlocks } from "@/lib/tree/content"; interface MathRendererProps { content: string; className?: string; compact?: boolean; forceTokenOpen?: boolean; allowTokenToggle?: boolean; } function stopNodeInteraction(event: React.SyntheticEvent) { event.stopPropagation(); } function tokenLabel(name: string) { return name.replace(/[^a-zA-Z0-9_]+/g, "_"); } function TokenBlob({ name, value, raw, forceOpen, allowToggle = true }: { name: string; value: string; raw: string; forceOpen?: boolean; allowToggle?: boolean; }) { const [open, setOpen] = useState(false); const isFinalAnswer = name === "final_answer"; const isOpen = Boolean(forceOpen || open); return (
{isOpen && (
)}
); } export function MathRenderer({ content, className, compact = false, forceTokenOpen = false, allowTokenToggle = true }: MathRendererProps) { const segments = splitTokenBlocks(content || ""); if (!content.trim()) { return

No math content.

; } return (
{segments.map((segment, index) => { if (segment.type === "token") { return ( ); } return ; })}
); }