UNPKG

@jsprismarine/typedoc-material-theme

Version:
45 lines (43 loc) 1.93 kB
import { cpSync } from "node:fs"; import { dirname, resolve } from "node:path"; import { fileURLToPath } from "node:url"; import { JSX, RendererEvent, ParameterType } from "typedoc"; import { getThemeCSSProperties } from "./theme.js"; const __dirname = dirname(fileURLToPath(import.meta.url)); /** * Called by TypeDoc when loaded as a plugin. */ export function load(app) { app.options.addDeclaration({ name: "themeColor", help: "Material Theme: Material 3 source color to derive the theme from.", type: ParameterType.String, defaultValue: "#cb9820", }); app.renderer.hooks.on("head.end", (event) => (JSX.createElement(JSX.Fragment, null, JSX.createElement("style", null, JSX.createElement(JSX.Raw, { html: getThemeCSSProperties(app.options.getValue("themeColor")) })), JSX.createElement("link", { rel: "stylesheet", href: event.relativeURL("assets/material-style.css") })))); app.renderer.hooks.on("body.end", (event) => (JSX.createElement("script", null, JSX.createElement(JSX.Raw, { html: /* js */ ` try { const generateLinkElement = document.querySelector(".tsd-generator a"); const link = document.createElement("a"); Object.assign(link, { href: "https://github.com/dmnsgn/typedoc-material-theme", target: "_blank", rel: "noreferrer", innerText: "typedoc-material-theme." }); generateLinkElement.insertAdjacentElement("afterend", link); generateLinkElement.insertAdjacentText("afterend", " with "); } catch (error) { } ` })))); app.renderer.on(RendererEvent.END, () => { const from = resolve(__dirname, "../assets/style.css"); const to = resolve(app.options.getValue("out"), "assets/material-style.css"); cpSync(from, to); }); }