mirror of
https://github.com/siyuan-note/siyuan.git
synced 2026-03-08 05:32:33 +01:00
This commit is contained in:
parent
d177a2f2a7
commit
59d1343f29
5 changed files with 12242 additions and 67 deletions
|
|
@ -15,48 +15,58 @@ export const mermaidRender = (element: Element, cdn = Constants.PROTYLE_CDN) =>
|
|||
return;
|
||||
}
|
||||
addScript(`${cdn}/js/mermaid/mermaid.min.js?v=11.11.0`, "protyleMermaidScript").then(() => {
|
||||
const config: any = {
|
||||
securityLevel: "loose", // 升级后无 https://github.com/siyuan-note/siyuan/issues/3587,可使用该选项
|
||||
altFontFamily: "sans-serif",
|
||||
fontFamily: "sans-serif",
|
||||
startOnLoad: false,
|
||||
flowchart: {
|
||||
htmlLabels: true,
|
||||
useMaxWidth: !0
|
||||
},
|
||||
sequence: {
|
||||
useMaxWidth: true,
|
||||
diagramMarginX: 8,
|
||||
diagramMarginY: 8,
|
||||
boxMargin: 8,
|
||||
showSequenceNumbers: true // Mermaid 时序图增加序号 https://github.com/siyuan-note/siyuan/pull/6992 https://mermaid.js.org/syntax/sequenceDiagram.html#sequencenumbers
|
||||
},
|
||||
gantt: {
|
||||
leftPadding: 75,
|
||||
rightPadding: 20
|
||||
}
|
||||
};
|
||||
if (window.siyuan.config.appearance.mode === 1) {
|
||||
config.theme = "dark";
|
||||
}
|
||||
window.mermaid.initialize(config);
|
||||
if (mermaidElements[0].firstElementChild.clientWidth === 0) {
|
||||
const observer = new MutationObserver(() => {
|
||||
initMermaid(mermaidElements);
|
||||
observer.disconnect();
|
||||
});
|
||||
const hideElement = hasClosestByAttribute(mermaidElements[0], "fold", "1");
|
||||
if (hideElement) {
|
||||
observer.observe(hideElement, {attributeFilter: ["fold"]});
|
||||
} else {
|
||||
const cardElement = hasClosestByClassName(mermaidElements[0], "card__block", true);
|
||||
if (cardElement) {
|
||||
observer.observe(cardElement, {attributeFilter: ["class"]});
|
||||
addScript(`${cdn}/js/mermaid/mermaid-zenuml.min.js?v=0.2.2`, "protyleMermaidZenumlScript").then(async () => {
|
||||
await window.mermaid.registerExternalDiagrams([window.zenuml]);
|
||||
window.mermaid.registerIconPacks([
|
||||
{
|
||||
name: "logos",
|
||||
loader: () =>
|
||||
fetch(`${cdn}/js/mermaid/icons.json?v=11.11.0`).then((res) => res.json()),
|
||||
},
|
||||
]);
|
||||
const config: any = {
|
||||
securityLevel: "loose", // 升级后无 https://github.com/siyuan-note/siyuan/issues/3587,可使用该选项
|
||||
altFontFamily: "sans-serif",
|
||||
fontFamily: "sans-serif",
|
||||
startOnLoad: false,
|
||||
flowchart: {
|
||||
htmlLabels: true,
|
||||
useMaxWidth: !0
|
||||
},
|
||||
sequence: {
|
||||
useMaxWidth: true,
|
||||
diagramMarginX: 8,
|
||||
diagramMarginY: 8,
|
||||
boxMargin: 8,
|
||||
showSequenceNumbers: true // Mermaid 时序图增加序号 https://github.com/siyuan-note/siyuan/pull/6992 https://mermaid.js.org/syntax/sequenceDiagram.html#sequencenumbers
|
||||
},
|
||||
gantt: {
|
||||
leftPadding: 75,
|
||||
rightPadding: 20
|
||||
}
|
||||
};
|
||||
if (window.siyuan.config.appearance.mode === 1) {
|
||||
config.theme = "dark";
|
||||
}
|
||||
} else {
|
||||
initMermaid(mermaidElements);
|
||||
}
|
||||
window.mermaid.initialize(config);
|
||||
if (mermaidElements[0].firstElementChild.clientWidth === 0) {
|
||||
const observer = new MutationObserver(() => {
|
||||
initMermaid(mermaidElements);
|
||||
observer.disconnect();
|
||||
});
|
||||
const hideElement = hasClosestByAttribute(mermaidElements[0], "fold", "1");
|
||||
if (hideElement) {
|
||||
observer.observe(hideElement, {attributeFilter: ["fold"]});
|
||||
} else {
|
||||
const cardElement = hasClosestByClassName(mermaidElements[0], "card__block", true);
|
||||
if (cardElement) {
|
||||
observer.observe(cardElement, {attributeFilter: ["class"]});
|
||||
}
|
||||
}
|
||||
} else {
|
||||
initMermaid(mermaidElements);
|
||||
}
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
|
|
|
|||
8
app/src/types/index.d.ts
vendored
8
app/src/types/index.d.ts
vendored
|
|
@ -202,9 +202,15 @@ interface Window {
|
|||
strict: (errorCode: string) => "ignore" | "warn";
|
||||
}): string;
|
||||
};
|
||||
zenuml: object,
|
||||
mermaid: {
|
||||
initialize(options: any): void,
|
||||
render(id: string, text: string): { svg: string }
|
||||
render(id: string, text: string): { svg: string },
|
||||
registerExternalDiagrams(ex: object[]): void,
|
||||
registerIconPacks(options: {
|
||||
name: string,
|
||||
loader(): Promise<Response>
|
||||
}[]): void
|
||||
};
|
||||
plantumlEncoder: {
|
||||
encode(options: string): string,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue