/* 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); // main.ts var main_exports = {}; __export(main_exports, { default: () => MenuPlugin }); module.exports = __toCommonJS(main_exports); var import_obsidian = require("obsidian"); var { shell } = require("electron"); var MenuPlugin = class extends import_obsidian.Plugin { async onload() { this.registerMarkdownCodeBlockProcessor("menu", (source, el, ctx) => { const lines = source.trim().split("\n"); let layout = ""; let colors = {}; const links = []; for (const line of lines) { const trimmed = line.trim(); if (trimmed.startsWith("layout:") || trimmed.startsWith("class:")) { const colonIndex = trimmed.indexOf(":"); layout = trimmed.substring(colonIndex + 1).trim(); } else if (trimmed.includes(":") && !trimmed.startsWith("[") && !trimmed.startsWith("[[")) { const [key, ...valueParts] = trimmed.split(":"); const value = valueParts.join(":").trim(); if (key && value && !key.includes("//") && !key.includes("http")) { colors[key.trim()] = value; } } else if (trimmed && !trimmed.includes(":")) { links.push(trimmed); } else if (trimmed.startsWith("[")) { links.push(trimmed); } } const finalLayout = layout || "default"; const container = el.createEl("div", { cls: `menu-container ${finalLayout}` }); if (Object.keys(colors).length > 0) { for (const [key, value] of Object.entries(colors)) { let cssKey = key.replace(/accent/g, "hover-text"); container.style.setProperty(`--${cssKey}`, value); } if (colors["hover-text"]) { container.style.setProperty("--hover-text", colors["hover-text"]); } } for (const link of links) { if (link.startsWith("[[") && link.endsWith("]]")) { const linkContent = link.slice(2, -2); let href = linkContent; let text = linkContent; if (linkContent.includes("|")) { [href, text] = linkContent.split("|"); } const a = container.createEl("a", { text, attr: { "data-href": href } }); a.addClass("menu-internal-link"); a.style.cursor = "pointer"; a.addEventListener("click", (e) => { e.preventDefault(); const vaultName = this.app.vault.getName(); const encodedFile = encodeURIComponent(href); const uri = `obsidian://open?vault=${encodeURIComponent(vaultName)}&file=${encodedFile}`; window.open(uri); }); } else if (link.match(/^\[.*\]\(.*\)$/)) { const match = link.match(/^\[(.*)\]\((.*)\)$/); if (match) { const text = match[1]; const url = match[2]; const a = container.createEl("a", { text, attr: url.startsWith("file://") ? {} : { href: url, target: "_blank", rel: "noopener noreferrer" } }); a.style.cursor = "pointer"; if (url.startsWith("file://")) { a.addClass("menu-file-link"); } else { a.addClass("menu-external-link"); } a.addEventListener("click", (e) => { e.preventDefault(); if (url.startsWith("file://")) { try { let filePath = decodeURIComponent(url.substring(7)); if (filePath.startsWith("/") && filePath.charAt(2) === ":") { filePath = filePath.substring(1); } console.log("Opening file path:", filePath); shell.openPath(filePath); } catch (error) { console.error("Failed to open file:", error); } } else { window.open(url, "_blank", "noopener,noreferrer"); } }); } } } }); } onunload() { } }; // Annotate the CommonJS export names for ESM import in node: 0 && (module.exports = {}); //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsibWFpbi50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0IHsgUGx1Z2luIH0gZnJvbSAnb2JzaWRpYW4nO1xyXG5pbXBvcnQgeyBmaWxlVVJMVG9QYXRoIH0gZnJvbSAndXJsJztcclxuXHJcbmNvbnN0IHsgc2hlbGwgfSA9IHJlcXVpcmUoJ2VsZWN0cm9uJyk7XHJcblxyXG4vLyBTaW1wbGUgWUFNTCBwYXJzZXIgZm9yIGNvbG9yIHByb3BlcnRpZXNcclxuZnVuY3Rpb24gcGFyc2VZQU1MKHRleHQ6IHN0cmluZykge1xyXG5cdGNvbnN0IHJlc3VsdDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9O1xyXG5cdGNvbnN0IGxpbmVzID0gdGV4dC5zcGxpdCgnXFxuJyk7XHJcblx0Zm9yIChjb25zdCBsaW5lIG9mIGxpbmVzKSB7XHJcblx0XHRjb25zdCB0cmltbWVkID0gbGluZS50cmltKCk7XHJcblx0XHRpZiAodHJpbW1lZCAmJiB0cmltbWVkLmluY2x1ZGVzKCc6JykpIHtcclxuXHRcdFx0Y29uc3QgW2tleSwgLi4udmFsdWVQYXJ0c10gPSB0cmltbWVkLnNwbGl0KCc6Jyk7XHJcblx0XHRcdGNvbnN0IHZhbHVlID0gdmFsdWVQYXJ0cy5qb2luKCc6JykudHJpbSgpO1xyXG5cdFx0XHRpZiAoa2V5ICYmIHZhbHVlKSB7XHJcblx0XHRcdFx0cmVzdWx0W2tleS50cmltKCldID0gdmFsdWU7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9XHJcblx0cmV0dXJuIHJlc3VsdDtcclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTWVudVBsdWdpbiBleHRlbmRzIFBsdWdpbiB7XHJcblx0YXN5bmMgb25sb2FkKCkge1xyXG5cdFx0dGhpcy5yZWdpc3Rlck1hcmtkb3duQ29kZUJsb2NrUHJvY2Vzc29yKCdtZW51JywgKHNvdXJjZSwgZWwsIGN0eCkgPT4ge1xyXG5cdFx0XHRjb25zdCBsaW5lcyA9IHNvdXJjZS50cmltKCkuc3BsaXQoJ1xcbicpO1xyXG5cdFx0XHRsZXQgbGF5b3V0ID0gJyc7XHJcblx0XHRcdGxldCBjb2xvcnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcclxuXHRcdFx0Y29uc3QgbGlua3M6IHN0cmluZ1tdID0gW107XHJcblx0XHRcdFxyXG5cdFx0XHQvLyBQYXJzZSBZQU1MLWxpa2UgcHJvcGVydGllcyBhbmQgbGlua3NcclxuXHRcdFx0Zm9yIChjb25zdCBsaW5lIG9mIGxpbmVzKSB7XHJcblx0XHRcdFx0Y29uc3QgdHJpbW1lZCA9IGxpbmUudHJpbSgpO1xyXG5cdFx0XHRcdGlmICh0cmltbWVkLnN0YXJ0c1dpdGgoJ2xheW91dDonKSB8fCB0cmltbWVkLnN0YXJ0c1dpdGgoJ2NsYXNzOicpKSB7XHJcblx0XHRcdFx0XHRjb25zdCBjb2xvbkluZGV4ID0gdHJpbW1lZC5pbmRleE9mKCc6Jyk7XHJcblx0XHRcdFx0XHRsYXlvdXQgPSB0cmltbWVkLnN1YnN0cmluZyhjb2xvbkluZGV4ICsgMSkudHJpbSgpO1xyXG5cdFx0XHRcdH0gZWxzZSBpZiAodHJpbW1lZC5pbmNsdWRlcygnOicpICYmICF0cmltbWVkLnN0YXJ0c1dpdGgoJ1snKSAmJiAhdHJpbW1lZC5zdGFydHNXaXRoKCdbWycpKSB7XHJcblx0XHRcdFx0XHQvLyBQYXJzZSBjb2xvciBwcm9wZXJ0aWVzXHJcblx0XHRcdFx0XHRjb25zdCBba2V5LCAuLi52YWx1ZVBhcnRzXSA9IHRyaW1tZWQuc3BsaXQoJzonKTtcclxuXHRcdFx0XHRcdGNvbnN0IHZhbHVlID0gdmFsdWVQYXJ0cy5qb2luKCc6JykudHJpbSgpO1xyXG5cdFx0XHRcdFx0aWYgKGtleSAmJiB2YWx1ZSAmJiAha2V5LmluY2x1ZGVzKCcvLycpICYmICFrZXkuaW5jbHVkZXMoJ2h0dHAnKSkge1xyXG5cdFx0XHRcdFx0XHRjb2xvcnNba2V5LnRyaW0oKV0gPSB2YWx1ZTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9IGVsc2UgaWYgKHRyaW1tZWQgJiYgIXRyaW1tZWQuaW5jbHVkZXMoJzonKSkge1xyXG5cdFx0XHRcdFx0bGlua3MucHVzaCh0cmltbWVkKTtcclxuXHRcdFx0XHR9IGVsc2UgaWYgKHRyaW1tZWQuc3RhcnRzV2l0aCgnWycpKSB7XHJcblx0XHRcdFx0XHRsaW5rcy5wdXNoKHRyaW1tZWQpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0XHRcclxuXHRcdFx0Y29uc3QgZmluYWxMYXlvdXQgPSBsYXlvdXQgfHwgJ2RlZmF1bHQnO1xyXG5cdFx0XHRjb25zdCBjb250YWluZXIgPSBlbC5jcmVhdGVFbCgnZGl2JywgeyBjbHM6IGBtZW51LWNvbnRhaW5lciAke2ZpbmFsTGF5b3V0fWAgfSk7XHJcblx0XHRcdFxyXG5cdFx0XHQvLyBBcHBseSBjdXN0b20gY29sb3JzIGFzIENTUyB2YXJpYWJsZXNcclxuXHRcdFx0aWYgKE9iamVjdC5rZXlzKGNvbG9ycykubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRcdGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKGNvbG9ycykpIHtcclxuXHRcdFx0XHRcdC8vIFJlcGxhY2UgJ2FjY2VudCcgd2l0aCAnaG92ZXItdGV4dCcgZm9yIGNvbnNpc3RlbmN5XHJcblx0XHRcdFx0XHRsZXQgY3NzS2V5ID0ga2V5LnJlcGxhY2UoL2FjY2VudC9nLCAnaG92ZXItdGV4dCcpO1xyXG5cdFx0XHRcdFx0Y29udGFpbmVyLnN0eWxlLnNldFByb3BlcnR5KGAtLSR7Y3NzS2V5fWAsIHZhbHVlKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0Ly8gRXhhbXBsZTogZW5zdXJlIGhvdmVyLXRleHQgaXMgc2V0IGFuZCBhZGQgYSBjb21tZW50IGZvciB1c2FnZVxyXG5cdFx0XHRcdGlmIChjb2xvcnNbJ2hvdmVyLXRleHQnXSkge1xyXG5cdFx0XHRcdFx0Y29udGFpbmVyLnN0eWxlLnNldFByb3BlcnR5KCctLWhvdmVyLXRleHQnLCBjb2xvcnNbJ2hvdmVyLXRleHQnXSk7XHJcblx0XHRcdFx0XHQvLyBUbyB1c2UgaW4gQ1NTOiBhOmhvdmVyIHsgY29sb3I6IHZhcigtLWhvdmVyLXRleHQpOyB9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcbiBcclxuXHRcdFx0Ly8gUHJvY2VzcyBlYWNoIGxpbmtcclxuXHRcdFx0Zm9yIChjb25zdCBsaW5rIG9mIGxpbmtzKSB7XHJcblx0XHRcdFx0aWYgKGxpbmsuc3RhcnRzV2l0aCgnW1snKSAmJiBsaW5rLmVuZHNXaXRoKCddXScpKSB7XHJcblx0XHRcdFx0XHQvLyBJbnRlcm5hbCBsaW5rXHJcblx0XHRcdFx0XHRjb25zdCBsaW5rQ29udGVudCA9IGxpbmsuc2xpY2UoMiwgLTIpO1xyXG5cdFx0XHRcdFx0bGV0IGhyZWYgPSBsaW5rQ29udGVudDtcclxuXHRcdFx0XHRcdGxldCB0ZXh0ID0gbGlua0NvbnRlbnQ7XHJcblx0XHRcdFx0XHRpZiAobGlua0NvbnRlbnQuaW5jbHVkZXMoJ3wnKSkge1xyXG5cdFx0XHRcdFx0XHRbaHJlZiwgdGV4dF0gPSBsaW5rQ29udGVudC5zcGxpdCgnfCcpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0Y29uc3QgYSA9IGNvbnRhaW5lci5jcmVhdGVFbCgnYScsIHtcclxuXHRcdFx0XHRcdFx0dGV4dDogdGV4dCxcclxuXHRcdFx0XHRcdFx0YXR0cjogeyAnZGF0YS1ocmVmJzogaHJlZiB9XHJcblx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHRcdGEuYWRkQ2xhc3MoJ21lbnUtaW50ZXJuYWwtbGluaycpO1xyXG5cdFx0XHRcdFx0YS5zdHlsZS5jdXJzb3IgPSAncG9pbnRlcic7XHJcblx0XHRcdFx0XHRhLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKGUpID0+IHtcclxuXHRcdFx0XHRcdFx0ZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG5cdFx0XHRcdFx0XHRjb25zdCB2YXVsdE5hbWUgPSB0aGlzLmFwcC52YXVsdC5nZXROYW1lKCk7XHJcblx0XHRcdFx0XHRcdGNvbnN0IGVuY29kZWRGaWxlID0gZW5jb2RlVVJJQ29tcG9uZW50KGhyZWYpO1xyXG5cdFx0XHRcdFx0XHRjb25zdCB1cmkgPSBgb2JzaWRpYW46Ly9vcGVuP3ZhdWx0PSR7ZW5jb2RlVVJJQ29tcG9uZW50KHZhdWx0TmFtZSl9JmZpbGU9JHtlbmNvZGVkRmlsZX1gO1xyXG5cdFx0XHRcdFx0XHR3aW5kb3cub3Blbih1cmkpO1xyXG5cdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0fSBlbHNlIGlmIChsaW5rLm1hdGNoKC9eXFxbLipcXF1cXCguKlxcKSQvKSkge1xyXG5cdFx0XHRcdFx0Ly8gRXh0ZXJuYWwgbGlua1xyXG5cdFx0XHRcdFx0Y29uc3QgbWF0Y2ggPSBsaW5rLm1hdGNoKC9eXFxbKC4qKVxcXVxcKCguKilcXCkkLyk7XHJcblx0XHRcdFx0XHRpZiAobWF0Y2gpIHtcclxuXHRcdFx0XHRcdFx0Y29uc3QgdGV4dCA9IG1hdGNoWzFdO1xyXG5cdFx0XHRcdFx0XHRjb25zdCB1cmwgPSBtYXRjaFsyXTtcclxuXHRcdFx0XHRcdFx0Y29uc3QgYSA9IGNvbnRhaW5lci5jcmVhdGVFbCgnYScsIHtcclxuXHRcdFx0XHRcdFx0XHR0ZXh0OiB0ZXh0LFxyXG5cdFx0XHRcdFx0XHRcdGF0dHI6IHVybC5zdGFydHNXaXRoKCdmaWxlOi8vJykgPyB7fSA6IHsgaHJlZjogdXJsLCB0YXJnZXQ6ICdfYmxhbmsnLCByZWw6ICdub29wZW5lciBub3JlZmVycmVyJyB9XHJcblx0XHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0XHRhLnN0eWxlLmN1cnNvciA9ICdwb2ludGVyJztcclxuXHRcdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRcdC8vIEFkZCBhcHByb3ByaWF0ZSBjbGFzcyBiYXNlZCBvbiBsaW5rIHR5cGVcclxuXHRcdFx0XHRcdFx0aWYgKHVybC5zdGFydHNXaXRoKCdmaWxlOi8vJykpIHtcclxuXHRcdFx0XHRcdFx0XHRhLmFkZENsYXNzKCdtZW51LWZpbGUtbGluaycpO1xyXG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0XHRcdGEuYWRkQ2xhc3MoJ21lbnUtZXh0ZXJuYWwtbGluaycpO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdGEuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoZSkgPT4ge1xyXG5cdFx0XHRcdFx0XHRcdGUucHJldmVudERlZmF1bHQoKTtcclxuXHRcdFx0XHRcdFx0XHRpZiAodXJsLnN0YXJ0c1dpdGgoJ2ZpbGU6Ly8nKSkge1xyXG5cdFx0XHRcdFx0XHRcdFx0dHJ5IHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0Ly8gQ29udmVydCBmaWxlIFVSTCB0byBwYXRoIGFuZCBoYW5kbGUgV2luZG93cyBwYXRoc1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRsZXQgZmlsZVBhdGggPSBkZWNvZGVVUklDb21wb25lbnQodXJsLnN1YnN0cmluZyg3KSk7IC8vIFJlbW92ZSAnZmlsZTovLydcclxuXHRcdFx0XHRcdFx0XHRcdFx0Ly8gSGFuZGxlIFdpbmRvd3MgcGF0aHMgdGhhdCBzdGFydCB3aXRoIC9DOlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoZmlsZVBhdGguc3RhcnRzV2l0aCgnLycpICYmIGZpbGVQYXRoLmNoYXJBdCgyKSA9PT0gJzonKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0ZmlsZVBhdGggPSBmaWxlUGF0aC5zdWJzdHJpbmcoMSk7XHJcblx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0Y29uc29sZS5sb2coJ09wZW5pbmcgZmlsZSBwYXRoOicsIGZpbGVQYXRoKTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0c2hlbGwub3BlblBhdGgoZmlsZVBhdGgpO1xyXG5cdFx0XHRcdFx0XHRcdFx0fSBjYXRjaCAoZXJyb3IpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0Y29uc29sZS5lcnJvcignRmFpbGVkIHRvIG9wZW4gZmlsZTonLCBlcnJvcik7XHJcblx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0XHRcdHdpbmRvdy5vcGVuKHVybCwgJ19ibGFuaycsICdub29wZW5lcixub3JlZmVycmVyJyk7XHJcblx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0b251bmxvYWQoKSB7XHJcblx0XHQvLyBDbGVhbnVwIGlmIG5lZWRlZFxyXG5cdH1cclxufVxyXG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsc0JBQXVCO0FBR3ZCLElBQU0sRUFBRSxNQUFNLElBQUksUUFBUSxVQUFVO0FBbUJwQyxJQUFxQixhQUFyQixjQUF3Qyx1QkFBTztBQUFBLEVBQzlDLE1BQU0sU0FBUztBQUNkLFNBQUssbUNBQW1DLFFBQVEsQ0FBQyxRQUFRLElBQUksUUFBUTtBQUNwRSxZQUFNLFFBQVEsT0FBTyxLQUFLLEVBQUUsTUFBTSxJQUFJO0FBQ3RDLFVBQUksU0FBUztBQUNiLFVBQUksU0FBaUMsQ0FBQztBQUN0QyxZQUFNLFFBQWtCLENBQUM7QUFHekIsaUJBQVcsUUFBUSxPQUFPO0FBQ3pCLGNBQU0sVUFBVSxLQUFLLEtBQUs7QUFDMUIsWUFBSSxRQUFRLFdBQVcsU0FBUyxLQUFLLFFBQVEsV0FBVyxRQUFRLEdBQUc7QUFDbEUsZ0JBQU0sYUFBYSxRQUFRLFFBQVEsR0FBRztBQUN0QyxtQkFBUyxRQUFRLFVBQVUsYUFBYSxDQUFDLEVBQUUsS0FBSztBQUFBLFFBQ2pELFdBQVcsUUFBUSxTQUFTLEdBQUcsS0FBSyxDQUFDLFFBQVEsV0FBVyxHQUFHLEtBQUssQ0FBQyxRQUFRLFdBQVcsSUFBSSxHQUFHO0FBRTFGLGdCQUFNLENBQUMsS0FBSyxHQUFHLFVBQVUsSUFBSSxRQUFRLE1BQU0sR0FBRztBQUM5QyxnQkFBTSxRQUFRLFdBQVcsS0FBSyxHQUFHLEVBQUUsS0FBSztBQUN4QyxjQUFJLE9BQU8sU0FBUyxDQUFDLElBQUksU0FBUyxJQUFJLEtB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