Skip to content

Commit 3a10f58

Browse files
committed
add preview html code
1 parent 00be2be commit 3a10f58

1 file changed

Lines changed: 31 additions & 2 deletions

File tree

app/components/markdown.tsx

Lines changed: 31 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,21 +60,49 @@ export function Mermaid(props: { code: string }) {
6060
);
6161
}
6262

63+
export function HTMLPreview(props: { code: string }) {
64+
const ref = useRef<HTMLDivElement>(null);
65+
66+
return (
67+
<div
68+
className="no-dark html"
69+
style={{
70+
cursor: "pointer",
71+
overflow: "auto",
72+
}}
73+
ref={ref}
74+
onClick={() => console.log("click")}
75+
>
76+
<iframe
77+
frameBorder={0}
78+
sandbox="allow-scripts"
79+
style={{ width: "100%", height: 400 }}
80+
srcdoc={props.code}
81+
></iframe>
82+
</div>
83+
);
84+
}
85+
6386
export function PreCode(props: { children: any }) {
6487
const ref = useRef<HTMLPreElement>(null);
6588
const refText = ref.current?.innerText;
6689
const [mermaidCode, setMermaidCode] = useState("");
90+
const [htmlCode, setHtmlCode] = useState("");
6791

68-
const renderMermaid = useDebouncedCallback(() => {
92+
const renderArtifacts = useDebouncedCallback(() => {
6993
if (!ref.current) return;
7094
const mermaidDom = ref.current.querySelector("code.language-mermaid");
7195
if (mermaidDom) {
7296
setMermaidCode((mermaidDom as HTMLElement).innerText);
7397
}
98+
const htmlDom = ref.current.querySelector("code.language-html");
99+
if (htmlDom) {
100+
setHtmlCode((htmlDom as HTMLElement).innerText);
101+
}
74102
}, 600);
75103

76104
useEffect(() => {
77-
setTimeout(renderMermaid, 1);
105+
setTimeout(renderArtifacts, 1);
78106
// eslint-disable-next-line react-hooks/exhaustive-deps
79107
}, [refText]);
80108

@@ -83,6 +111,7 @@ export function PreCode(props: { children: any }) {
83111
{mermaidCode.length > 0 && (
84112
<Mermaid code={mermaidCode} key={mermaidCode} />
85113
)}
114+
{htmlCode.length > 0 && <HTMLPreview code={htmlCode} key={htmlCode} />}
86115
<pre ref={ref}>
87116
<span
88117
className="copy-code-button"

0 commit comments

Comments
 (0)