refix lol

This commit is contained in:
Michael Freno
2025-12-29 16:17:18 -05:00
parent ec3b36948e
commit ec4a895016

View File

@@ -13,8 +13,14 @@ export const Mermaid = Node.create({
content: { content: {
default: "", default: "",
parseHTML: (element) => { parseHTML: (element) => {
// Try to get code element
const code = element.querySelector("code"); const code = element.querySelector("code");
return code?.textContent || ""; if (code) {
// Get text content, which strips out all HTML tags (including spans from syntax highlighting)
return code.textContent || "";
}
// Fallback to element's own text content
return element.textContent || "";
}, },
renderHTML: (attributes) => { renderHTML: (attributes) => {
return {}; return {};
@@ -34,11 +40,20 @@ export const Mermaid = Node.create({
parseHTML() { parseHTML() {
return [ return [
// Priority 1: Pre with explicit mermaid marker (from our own rendering)
{ {
tag: 'pre[data-type="mermaid"]' tag: 'pre[data-mermaid-diagram="true"]',
priority: 100
}, },
// Priority 2: Pre with data-type="mermaid"
{
tag: 'pre[data-type="mermaid"]',
priority: 90
},
// Priority 3: Wrapper div (from NodeView)
{ {
tag: "div.mermaid-node-wrapper", tag: "div.mermaid-node-wrapper",
priority: 80,
getAttrs: (element) => { getAttrs: (element) => {
if (typeof element === "string") return false; if (typeof element === "string") return false;
const pre = element.querySelector('pre[data-type="mermaid"]'); const pre = element.querySelector('pre[data-type="mermaid"]');
@@ -49,14 +64,20 @@ export const Mermaid = Node.create({
}; };
} }
}, },
// Detect regular code blocks that contain mermaid syntax // Priority 4: Generic pre blocks that look like mermaid (fallback for legacy content)
{ {
tag: "pre", tag: "pre",
priority: 51, // Higher than code block extension
getAttrs: (element) => { getAttrs: (element) => {
if (typeof element === "string") return false; if (typeof element === "string") return false;
// Skip if already has data-type attribute // Skip if already has data-type or data-mermaid-diagram attribute
if (element.hasAttribute("data-type")) return false; if (
element.hasAttribute("data-type") ||
element.hasAttribute("data-mermaid-diagram")
) {
return false;
}
const code = element.querySelector("code"); const code = element.querySelector("code");
if (!code) return false; if (!code) return false;
@@ -94,8 +115,7 @@ export const Mermaid = Node.create({
} }
return false; return false;
}, }
priority: 51 // Higher priority than code block extension
} }
]; ];
}, },
@@ -105,6 +125,7 @@ export const Mermaid = Node.create({
"pre", "pre",
mergeAttributes(HTMLAttributes, { mergeAttributes(HTMLAttributes, {
"data-type": "mermaid", "data-type": "mermaid",
"data-mermaid-diagram": "true", // Clear marker for parsing from DB
class: "mermaid-diagram" class: "mermaid-diagram"
}), }),
["code", {}, node.attrs.content || ""] ["code", {}, node.attrs.content || ""]
@@ -148,6 +169,7 @@ export const Mermaid = Node.create({
const pre = document.createElement("pre"); const pre = document.createElement("pre");
pre.setAttribute("data-type", "mermaid"); pre.setAttribute("data-type", "mermaid");
pre.setAttribute("data-mermaid-diagram", "true"); // Clear marker
pre.className = "mermaid-diagram"; pre.className = "mermaid-diagram";
const code = document.createElement("code"); const code = document.createElement("code");