150 lines
No EOL
4.6 KiB
JavaScript
150 lines
No EOL
4.6 KiB
JavaScript
/*
|
|
THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
|
|
if you want to view the source, please visit the github repository of this plugin
|
|
*/
|
|
|
|
var __defProp = Object.defineProperty;
|
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
var __export = (target, all) => {
|
|
for (var name in all)
|
|
__defProp(target, name, { get: all[name], enumerable: true });
|
|
};
|
|
var __copyProps = (to, from, except, desc) => {
|
|
if (from && typeof from === "object" || typeof from === "function") {
|
|
for (let key of __getOwnPropNames(from))
|
|
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
}
|
|
return to;
|
|
};
|
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
|
|
// src/main.ts
|
|
var main_exports = {};
|
|
__export(main_exports, {
|
|
default: () => Mehrmaid
|
|
});
|
|
module.exports = __toCommonJS(main_exports);
|
|
var import_obsidian2 = require("obsidian");
|
|
|
|
// src/mermaid.ts
|
|
var import_obsidian = require("obsidian");
|
|
|
|
// src/themes.ts
|
|
var THEME_DARK = {
|
|
theme: "dark",
|
|
"themeVariables": {
|
|
"primaryColor": "#BB2528",
|
|
"primaryTextColor": "#fff",
|
|
"primaryBorderColor": "#7C0000",
|
|
"lineColor": "#dadada",
|
|
"secondaryColor": "#006100",
|
|
"tertiaryColor": "#fff",
|
|
"clusterBkg": "#242424",
|
|
"clusterBorder": "#2d2d2d",
|
|
"nodeBorder": "#dadada"
|
|
},
|
|
securityLevel: "loose",
|
|
startOnLoad: true,
|
|
flowchart: {
|
|
htmlLabels: true
|
|
}
|
|
};
|
|
var THEME_LIGHT = {
|
|
theme: "neutral",
|
|
"themeVariables": {
|
|
"primaryBorderColor": "#000",
|
|
"clusterBorder": "#2d2d2d",
|
|
"lineColor": "#000",
|
|
"nodeBorder": "#000"
|
|
},
|
|
securityLevel: "loose",
|
|
startOnLoad: true,
|
|
flowchart: {
|
|
htmlLabels: true
|
|
}
|
|
};
|
|
|
|
// src/mermaid.ts
|
|
async function renderMarkdown(str, el, ctx, app) {
|
|
const markdownRenderChild = new import_obsidian.MarkdownRenderChild(el);
|
|
const markdownEl = el.createDiv();
|
|
markdownEl.addClass("mehrmaid-markdown-container");
|
|
if (ctx && !(typeof ctx == "string")) {
|
|
ctx.addChild(markdownRenderChild);
|
|
}
|
|
await import_obsidian.MarkdownRenderer.render(app, str, markdownEl, ctx.sourcePath, markdownRenderChild);
|
|
return markdownEl;
|
|
}
|
|
async function renderMehrmaid(source, el, ctx) {
|
|
var _a;
|
|
const mermaid = await (0, import_obsidian.loadMermaid)();
|
|
let config = {};
|
|
if (document.body.classList.contains("theme-dark")) {
|
|
config = THEME_DARK;
|
|
source += "\nclassDef primary fill:#8a5cf5";
|
|
} else {
|
|
config = THEME_LIGHT;
|
|
source += "\nclassDef primary fill:#a68afa";
|
|
}
|
|
mermaid.initialize(config);
|
|
mermaid.mermaidAPI.setConfig(config);
|
|
let matches = source.match(/"([^"]*?)"/g);
|
|
if (matches) {
|
|
const promises = [];
|
|
for (let match of matches) {
|
|
match = match.substring(1, match.length - 1);
|
|
promises.push(renderMarkdown(match, el, ctx, this.app));
|
|
}
|
|
const markdownEls = await Promise.all(promises);
|
|
let widths = [];
|
|
let heights = [];
|
|
for (let markdownEl of markdownEls) {
|
|
widths.push(markdownEl.offsetWidth);
|
|
heights.push(markdownEl.offsetHeight);
|
|
}
|
|
el.empty();
|
|
for (let i = 0; i < matches.length; i++) {
|
|
let match = matches[i];
|
|
let markdownEl = markdownEls[i];
|
|
let width = widths[i];
|
|
width = Math.max(width, 10);
|
|
let height = heights[i];
|
|
height = Math.max(height, 10);
|
|
let id = match.replace(/[^a-zA-Z0-9]/g, "") + i;
|
|
source = source.replace(
|
|
match,
|
|
`<div class="${id} cm-sizer" style="width: ${width}px; height: ${height - 7}px; display: inline-block;"></div>`
|
|
);
|
|
}
|
|
const graphId = "mehrmaid-" + ((_a = ctx.getSectionInfo(el)) == null ? void 0 : _a.lineStart) + "-" + Date.now();
|
|
const { svg } = await mermaid.render(graphId, source);
|
|
el.insertAdjacentHTML("beforeend", svg);
|
|
for (let i = 0; i < markdownEls.length; i++) {
|
|
let id = matches[i].replace(/[^a-zA-Z0-9]/g, "") + i;
|
|
let markdownEl = markdownEls[i];
|
|
let htmlEl = el.getElementsByClassName(id)[0];
|
|
htmlEl.appendChild(markdownEl);
|
|
}
|
|
}
|
|
}
|
|
|
|
// src/main.ts
|
|
var Mehrmaid = class extends import_obsidian2.Plugin {
|
|
async onload() {
|
|
this.app.workspace.onLayoutReady(() => {
|
|
this.registerMarkdownCodeBlockProcessor("mehrmaid", async (source, el, ctx) => {
|
|
try {
|
|
await renderMehrmaid(source, el, ctx);
|
|
} catch (e) {
|
|
console.error(e);
|
|
new import_obsidian2.Notice("Mehrmaid: Error rendering mermaid diagram");
|
|
}
|
|
});
|
|
});
|
|
}
|
|
};
|
|
|
|
/* nosourcemap */ |