refix lol
This commit is contained in:
@@ -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");
|
||||||
|
|||||||
Reference in New Issue
Block a user