MCPcopy Create free account
hub / github.com/MagicCube/agentara / CodeBlockContent

Function CodeBlockContent

web/src/components/ai-elements/code-block.tsx:379–419  ·  view source on GitHub ↗
({
  code,
  language,
  showLineNumbers = false,
}: {
  code: string;
  language: BundledLanguage;
  showLineNumbers?: boolean;
})

Source from the content-addressed store, hash-verified

377);
378
379export const CodeBlockContent = ({
380 code,
381 language,
382 showLineNumbers = false,
383}: {
384 code: string;
385 language: BundledLanguage;
386 showLineNumbers?: boolean;
387}) => {
388 // Memoized raw tokens for immediate display
389 const rawTokens = useMemo(() => createRawTokens(code), [code]);
390
391 // Try to get cached result synchronously, otherwise use raw tokens
392 const [tokenized, setTokenized] = useState<TokenizedCode>(
393 () => highlightCode(code, language) ?? rawTokens
394 );
395
396 useEffect(() => {
397 let cancelled = false;
398
399 // Reset to raw tokens when code changes (shows current code, not stale tokens)
400 setTokenized(highlightCode(code, language) ?? rawTokens);
401
402 // Subscribe to async highlighting result
403 highlightCode(code, language, (result) => {
404 if (!cancelled) {
405 setTokenized(result);
406 }
407 });
408
409 return () => {
410 cancelled = true;
411 };
412 }, [code, language, rawTokens]);
413
414 return (
415 <div className="relative overflow-auto">
416 <CodeBlockBody showLineNumbers={showLineNumbers} tokenized={tokenized} />
417 </div>
418 );
419};
420
421export const CodeBlock = ({
422 code,

Callers

nothing calls this directly

Calls 2

createRawTokensFunction · 0.85
highlightCodeFunction · 0.85

Tested by

no test coverage detected