代码折叠

This commit is contained in:
lyf
2024-08-09 14:55:25 +08:00
parent 44787637f2
commit 8f759d1c3e
2 changed files with 56 additions and 37 deletions

View File

@@ -127,44 +127,50 @@ export function PreCode(props: { children: any }) {
useEffect(() => {
if (ref.current) {
// 获取代码块的实际高度
const screenHeight = window.innerHeight;
const codeHeight = ref.current.scrollHeight;
setShowToggle(codeHeight > screenHeight * 0.3);
setShowToggle(codeHeight > 400);
ref.current.scrollTop = ref.current.scrollHeight;
}
}, [props.children]);
const toggleCollapsed = () => {
setCollapsed(!collapsed);
};
console.log(props.children);
return (
<>
<pre
ref={ref}
style={{ maxHeight: collapsed ? "30vh" : "none", overflow: "hidden" }}
>
<span
className="copy-code-button"
onClick={() => {
if (ref.current) {
const code = ref.current.innerText;
copyToClipboard(code);
}
<div style={{ position: "relative" }}>
<pre
ref={ref}
style={{
maxHeight: collapsed ? "400px" : "none",
overflow: "hidden",
}}
></span>
{props.children}
{showToggle && collapsed && (
<p
style={{ margin: 0 }}
className="show-hide-button"
onClick={toggleCollapsed}
>
</p>
)}
</pre>
>
<span
className="copy-code-button"
onClick={() => {
if (ref.current) {
const code = ref.current.innerText;
copyToClipboard(code);
}
}}
></span>
{props.children}
{showToggle && collapsed && (
<div
className="show-hide-button"
style={{
backgroundImage: collapsed
? "linear-gradient(to bottom, rgba(0,0,0,.8), rgba(0,0,0,.06))"
: "none",
}}
>
<button onClick={toggleCollapsed}></button>
</div>
)}
</pre>
</div>
{mermaidCode.length > 0 && (
<Mermaid code={mermaidCode} key={mermaidCode} />
)}