diff --git a/packages/dev/s2-docs/src/Code.tsx b/packages/dev/s2-docs/src/Code.tsx index dffa8edf31e..b7759a1b9ab 100644 --- a/packages/dev/s2-docs/src/Code.tsx +++ b/packages/dev/s2-docs/src/Code.tsx @@ -228,7 +228,7 @@ function renderHast(node: HastNode | HastTextNode, key: string, links?: Links, i // CodeProps includes the indent and newlines in case there are no props to show. if (node.tagName === 'div' && typeof childArray[0] === 'string' && /^\s+$/.test(childArray[0]) && React.isValidElement(childArray[1]) && childArray[1].type === CodeProps) { - children = childArray[1]; + children = childArray.slice(1); } let tagName: any = node.tagName; diff --git a/packages/dev/s2-docs/src/MarkdownMenu.tsx b/packages/dev/s2-docs/src/MarkdownMenu.tsx index 3faca5a37cd..b32798b561e 100644 --- a/packages/dev/s2-docs/src/MarkdownMenu.tsx +++ b/packages/dev/s2-docs/src/MarkdownMenu.tsx @@ -15,6 +15,7 @@ interface MarkdownMenuProps { export function MarkdownMenu({url}: MarkdownMenuProps) { let mdUrl = (url ?? '').replace(/\.html?$/i, '') + '.md'; let [isCopied, setIsCopied] = useState(false); + let [isPending, setPending] = useState(false); let timeout = useRef | null>(null); let pageUrl = typeof window !== 'undefined' && url ? new URL(url, window.location.origin).href : url ?? ''; @@ -38,20 +39,25 @@ export function MarkdownMenu({url}: MarkdownMenuProps) { } if (typeof navigator !== 'undefined' && navigator.clipboard) { try { - let response = await fetch(mdUrl); - let markdown = await response.text(); - await navigator.clipboard.writeText(markdown); + setPending(true); + await navigator.clipboard.write([ + new ClipboardItem({ + ['text/plain']: fetch(mdUrl).then(res => res.text()) + }) + ]); setIsCopied(true); timeout.current = setTimeout(() => setIsCopied(false), 2000); } catch { ToastQueue.negative('Failed to copy markdown.'); + } finally { + setPending(false); } } }, [mdUrl]); return (
- + {isCopied ? : } Copy for LLM