Skip to content

Commit 611b7de

Browse files
committed
Added same logic for modal
1 parent 06559d7 commit 611b7de

File tree

1 file changed

+33
-23
lines changed

1 file changed

+33
-23
lines changed

apps/webapp/app/components/code/CodeBlock.tsx

Lines changed: 33 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { ArrowsPointingOutIcon } from "@heroicons/react/20/solid";
22
import { Clipboard, ClipboardCheck } from "lucide-react";
33
import type { Language, PrismTheme } from "prism-react-renderer";
44
import { Highlight, Prism } from "prism-react-renderer";
5-
import { forwardRef, ReactNode, useCallback, useEffect, useState } from "react";
5+
import { forwardRef, ReactNode, useCallback, useEffect, useRef, useState } from "react";
66
import { TextWrapIcon } from "~/assets/icons/TextWrapIcon";
77
import { cn } from "~/utils/cn";
88
import { highlightSearchText } from "~/utils/logUtils";
@@ -217,6 +217,8 @@ export const CodeBlock = forwardRef<HTMLDivElement, CodeBlockProps>(
217217
const [isModalOpen, setIsModalOpen] = useState(false);
218218
const [isWrapped, setIsWrapped] = useState(false);
219219

220+
const restoreRef = useRef<(() => void) | null>(null);
221+
220222
const handleCodeMouseDown = useCallback((e: React.MouseEvent) => {
221223
if (e.button !== 0) return;
222224
const el = e.currentTarget as HTMLElement;
@@ -226,10 +228,16 @@ export const CodeBlock = forwardRef<HTMLDivElement, CodeBlockProps>(
226228
document.documentElement.style.userSelect = "";
227229
el.style.userSelect = "";
228230
document.removeEventListener("mouseup", restore);
231+
restoreRef.current = null;
229232
};
233+
restoreRef.current = restore;
230234
document.addEventListener("mouseup", restore);
231235
}, []);
232236

237+
useEffect(() => {
238+
return () => restoreRef.current?.();
239+
}, []);
240+
233241
const onCopied = useCallback(
234242
(event: React.MouseEvent<HTMLButtonElement>) => {
235243
event.preventDefault();
@@ -405,28 +413,30 @@ export const CodeBlock = forwardRef<HTMLDivElement, CodeBlockProps>(
405413
</Button>
406414
</DialogHeader>
407415

408-
{shouldHighlight ? (
409-
<HighlightCode
410-
theme={theme}
411-
code={code}
412-
language={language}
413-
showLineNumbers={showLineNumbers}
414-
highlightLines={highlightLines}
415-
maxLineWidth={maxLineWidth}
416-
className="min-h-full"
417-
preClassName="text-sm"
418-
isWrapped={isWrapped}
419-
/>
420-
) : (
421-
<div
422-
dir="ltr"
423-
className="overflow-auto px-3 py-3 scrollbar-thin scrollbar-track-transparent scrollbar-thumb-charcoal-600"
424-
>
425-
<pre className="relative mr-2 p-2 font-mono text-base leading-relaxed" dir="ltr">
426-
{highlightSearchText(code, searchTerm)}
427-
</pre>
428-
</div>
429-
)}
416+
<div onMouseDown={handleCodeMouseDown}>
417+
{shouldHighlight ? (
418+
<HighlightCode
419+
theme={theme}
420+
code={code}
421+
language={language}
422+
showLineNumbers={showLineNumbers}
423+
highlightLines={highlightLines}
424+
maxLineWidth={maxLineWidth}
425+
className="min-h-full"
426+
preClassName="text-sm"
427+
isWrapped={isWrapped}
428+
/>
429+
) : (
430+
<div
431+
dir="ltr"
432+
className="overflow-auto px-3 py-3 scrollbar-thin scrollbar-track-transparent scrollbar-thumb-charcoal-600"
433+
>
434+
<pre className="relative mr-2 p-2 font-mono text-base leading-relaxed" dir="ltr">
435+
{highlightSearchText(code, searchTerm)}
436+
</pre>
437+
</div>
438+
)}
439+
</div>
430440
</DialogContent>
431441
</Dialog>
432442
</>

0 commit comments

Comments
 (0)