浏览代码

fix: wrap multi-line code blocks in pre tag (#5586)

Co-authored-by: openhands <openhands@all-hands.dev>
Robert Brennan 1 年之前
父节点
当前提交
50478c7d21
共有 1 个文件被更改,包括 24 次插入5 次删除
  1. 24 5
      frontend/src/components/features/markdown/code.tsx

+ 24 - 5
frontend/src/components/features/markdown/code.tsx

@@ -17,19 +17,38 @@ export function code({
   const match = /language-(\w+)/.exec(className || ""); // get the language
 
   if (!match) {
+    const isMultiline = String(children).includes("\n");
+
+    if (!isMultiline) {
+      return (
+        <code
+          className={className}
+          style={{
+            backgroundColor: "#2a3038",
+            padding: "0.2em 0.4em",
+            borderRadius: "4px",
+            color: "#e6edf3",
+            border: "1px solid #30363d",
+          }}
+        >
+          {children}
+        </code>
+      );
+    }
+
     return (
-      <code
-        className={className}
+      <pre
         style={{
           backgroundColor: "#2a3038",
-          padding: "0.2em 0.4em",
+          padding: "1em",
           borderRadius: "4px",
           color: "#e6edf3",
           border: "1px solid #30363d",
+          overflow: "auto",
         }}
       >
-        {children}
-      </code>
+        <code className={className}>{String(children).replace(/\n$/, "")}</code>
+      </pre>
     );
   }