diff --git a/resources/js/components/code-block.tsx b/resources/js/components/code-block.tsx
index cf04563d3..96e2b0486 100644
--- a/resources/js/components/code-block.tsx
+++ b/resources/js/components/code-block.tsx
@@ -7,10 +7,12 @@ import { cn } from '@/lib/utils';
export function CodeBlock({
html,
+ fullHtml,
language,
isCopyable = true,
}: {
html: string;
+ fullHtml?: string;
language: string | null;
isCopyable?: boolean;
}) {
@@ -34,7 +36,16 @@ export function CodeBlock({
return;
}
- if (await copy(codeRef.current.textContent ?? '')) {
+ let code = codeRef.current.textContent ?? '';
+
+ if (fullHtml !== undefined) {
+ // The server escapes the code while highlighting it, and a template runs nothing.
+ const template = document.createElement('template');
+ template.innerHTML = fullHtml;
+ code = template.content.textContent ?? '';
+ }
+
+ if (await copy(code)) {
setIsCopied(true);
return;
diff --git a/resources/js/components/commit-body.tsx b/resources/js/components/commit-body.tsx
index fac23d0a0..6ecabe883 100644
--- a/resources/js/components/commit-body.tsx
+++ b/resources/js/components/commit-body.tsx
@@ -91,6 +91,7 @@ export function BodySegments({