From ecf48de7e8b2c371e3ee122f50821671d0c59332 Mon Sep 17 00:00:00 2001 From: dmitriylaukhin Date: Wed, 3 Jun 2026 15:34:15 +0500 Subject: [PATCH] Copy code block verbatim (fences live in content for Obsidian snippets) --- src/components/student/lesson-content.tsx | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/src/components/student/lesson-content.tsx b/src/components/student/lesson-content.tsx index b11dc1b..e44ab47 100644 --- a/src/components/student/lesson-content.tsx +++ b/src/components/student/lesson-content.tsx @@ -11,22 +11,14 @@ import Underline from "@tiptap/extension-underline"; import { Copy, Check } from "lucide-react"; import { KinescopePlayer } from "@/components/player/kinescope-player"; -function CodeBlockStudentView({ - node, -}: { - node: { textContent: string; attrs: Record }; -}) { +function CodeBlockStudentView({ node }: { node: { textContent: string } }) { const [copied, setCopied] = useState(false); const handleCopy = async () => { - const lang = (node.attrs?.language as string) || ""; - // Для блоков с языком (dataview/query/mermaid) копируем ПОЛНЫЙ markdown-забор — - // студент вставляет рабочий блок в Obsidian. Для блоков без языка — как есть. - const payload = lang - ? "```" + lang + "\n" + node.textContent + "\n```" - : node.textContent; + // WYSIWYG: копируем содержимое блока ровно как показано. Для Obsidian-сниппетов + // (dataview/query) забор ```...``` хранится прямо в содержимом → копируется целиком. try { - await navigator.clipboard.writeText(payload); + await navigator.clipboard.writeText(node.textContent); setCopied(true); setTimeout(() => setCopied(false), 1500); } catch {