From 6cb6f47b56154220a1adc03984e42813e0cb5dc1 Mon Sep 17 00:00:00 2001 From: Taylor Mullen Date: Thu, 15 May 2025 00:36:08 -0700 Subject: Refactor: Replace MarkdownRenderer with MarkdownDisplay component - This commit refactors the Markdown rendering logic within the CLI UI. The existing `MarkdownRenderer.tsx` class-based component has been replaced with a new functional component `MarkdownDisplay.tsx`. - The `MarkdownDisplay` component is a React.memoized component for improved performance and maintains the same core Markdown parsing and rendering capabilities. --- packages/cli/src/ui/components/messages/GeminiMessage.tsx | 5 ++--- packages/cli/src/ui/components/messages/GeminiMessageContent.tsx | 5 ++--- packages/cli/src/ui/components/messages/ToolMessage.tsx | 4 ++-- 3 files changed, 6 insertions(+), 8 deletions(-) (limited to 'packages/cli/src/ui/components/messages') diff --git a/packages/cli/src/ui/components/messages/GeminiMessage.tsx b/packages/cli/src/ui/components/messages/GeminiMessage.tsx index 11449b18..b2c816a9 100644 --- a/packages/cli/src/ui/components/messages/GeminiMessage.tsx +++ b/packages/cli/src/ui/components/messages/GeminiMessage.tsx @@ -6,7 +6,7 @@ import React from 'react'; import { Text, Box } from 'ink'; -import { MarkdownRenderer } from '../../utils/MarkdownRenderer.js'; +import { MarkdownDisplay } from '../../utils/MarkdownDisplay.js'; import { Colors } from '../../colors.js'; interface GeminiMessageProps { @@ -16,7 +16,6 @@ interface GeminiMessageProps { export const GeminiMessage: React.FC = ({ text }) => { const prefix = '✦ '; const prefixWidth = prefix.length; - const renderedBlocks = MarkdownRenderer.render(text); return ( @@ -24,7 +23,7 @@ export const GeminiMessage: React.FC = ({ text }) => { {prefix} - {renderedBlocks} + ); diff --git a/packages/cli/src/ui/components/messages/GeminiMessageContent.tsx b/packages/cli/src/ui/components/messages/GeminiMessageContent.tsx index fb025231..b9b85dc7 100644 --- a/packages/cli/src/ui/components/messages/GeminiMessageContent.tsx +++ b/packages/cli/src/ui/components/messages/GeminiMessageContent.tsx @@ -6,7 +6,7 @@ import React from 'react'; import { Box } from 'ink'; -import { MarkdownRenderer } from '../../utils/MarkdownRenderer.js'; +import { MarkdownDisplay } from '../../utils/MarkdownDisplay.js'; interface GeminiMessageContentProps { text: string; @@ -23,11 +23,10 @@ export const GeminiMessageContent: React.FC = ({ }) => { const originalPrefix = '✦ '; const prefixWidth = originalPrefix.length; - const renderedBlocks = MarkdownRenderer.render(text); return ( - {renderedBlocks} + ); }; diff --git a/packages/cli/src/ui/components/messages/ToolMessage.tsx b/packages/cli/src/ui/components/messages/ToolMessage.tsx index 7c4b1d6f..3b58c052 100644 --- a/packages/cli/src/ui/components/messages/ToolMessage.tsx +++ b/packages/cli/src/ui/components/messages/ToolMessage.tsx @@ -10,7 +10,7 @@ import Spinner from 'ink-spinner'; import { IndividualToolCallDisplay, ToolCallStatus } from '../../types.js'; import { DiffRenderer } from './DiffRenderer.js'; import { Colors } from '../../colors.js'; -import { MarkdownRenderer } from '../../utils/MarkdownRenderer.js'; +import { MarkdownDisplay } from '../../utils/MarkdownDisplay.js'; export const ToolMessage: React.FC = ({ name, @@ -60,7 +60,7 @@ export const ToolMessage: React.FC = ({ {/* Use default text color (white) or gray instead of dimColor */} {typeof resultDisplay === 'string' && ( - {MarkdownRenderer.render(resultDisplay)} + )} {typeof resultDisplay === 'object' && ( -- cgit v1.2.3