import {abcRender} from "../render/abcRender";
import {chartRender} from "../render/chartRender";
import {graphvizRender} from "../render/graphvizRender";
import {mathRender} from "../render/mathRender";
import {mermaidRender} from "../render/mermaidRender";
import {mindmapRender} from "../render/mindmapRender";
import {flowchartRender} from "../render/flowchartRender";
import {plantumlRender} from "../render/plantumlRender";
import {Constants} from "../../constants";
export const processPasteCode = (html: string, text: string) => {
const tempElement = document.createElement("div");
tempElement.innerHTML = html;
let isCode = false;
if (tempElement.childElementCount === 1 &&
(tempElement.lastElementChild as HTMLElement).style.fontFamily.indexOf("monospace") > -1) {
// VS Code
isCode = true;
} else if (tempElement.childElementCount === 1 && tempElement.querySelectorAll("pre").length === 1) {
// IDE
isCode = true;
} else if (html.indexOf('\n
') === 0) {
// Xcode
isCode = true;
} else if (tempElement.childElementCount === 1 && tempElement.firstElementChild.tagName === "TABLE" &&
tempElement.querySelector(".line-number") && tempElement.querySelector(".line-content")) {
// 网页源码
isCode = true;
}
if (isCode) {
let code = text || html;
if (/\n/.test(code)) {
return `
${window.siyuan.storage[Constants.LOCAL_CODELANG]}
${code.replace(/&/g, "&").replace(/
${Constants.ZWSP}
`;
} else {
// Paste code from IDE no longer escape `<` and `>` https://github.com/siyuan-note/siyuan/issues/8340
code = code.replace("<", "<").replace(">", ">");
return "`" + code + "`";
}
}
return false;
};
export const processRender = (previewPanel: Element) => {
const language = previewPanel.getAttribute("data-subtype");
if (!["abc", "plantuml", "mermaid", "flowchart", "echarts", "mindmap", "graphviz", "math"].includes(language)) {
abcRender(previewPanel);
plantumlRender(previewPanel);
mermaidRender(previewPanel);
flowchartRender(previewPanel);
chartRender(previewPanel);
mindmapRender(previewPanel);
graphvizRender(previewPanel);
mathRender(previewPanel);
return;
}
if (language === "abc") {
abcRender(previewPanel);
} else if (language === "plantuml") {
plantumlRender(previewPanel);
} else if (language === "mermaid") {
mermaidRender(previewPanel);
} else if (language === "flowchart") {
flowchartRender(previewPanel);
} else if (language === "echarts") {
chartRender(previewPanel);
} else if (language === "mindmap") {
mindmapRender(previewPanel);
} else if (language === "graphviz") {
graphvizRender(previewPanel);
} else if (language === "math") {
mathRender(previewPanel);
}
};