From cee2362f46cc53d01ff2366fcd4d7aa27b659d78 Mon Sep 17 00:00:00 2001 From: saberzero1 Date: Tue, 29 Oct 2024 19:17:39 +0100 Subject: [PATCH] feat(transformer): allow inline CSS styling --- quartz/components/Head.tsx | 6 ++---- quartz/components/renderPage.tsx | 8 +++++++- quartz/plugins/transformers/latex.ts | 7 +++++-- quartz/util/resources.tsx | 25 ++++++++++++++++++++++++- 4 files changed, 38 insertions(+), 8 deletions(-) diff --git a/quartz/components/Head.tsx b/quartz/components/Head.tsx index 90e338730..cf79434fa 100644 --- a/quartz/components/Head.tsx +++ b/quartz/components/Head.tsx @@ -1,6 +1,6 @@ import { i18n } from "../i18n" import { FullSlug, joinSegments, pathToRoot } from "../util/path" -import { JSResourceToScriptElement } from "../util/resources" +import { CSSResourceToStyleElement, JSResourceToScriptElement } from "../util/resources" import { googleFontHref } from "../util/theme" import { QuartzComponent, QuartzComponentConstructor, QuartzComponentProps } from "./types" @@ -40,9 +40,7 @@ export default (() => { - {css.map((href) => ( - - ))} + {css.map((resource) => CSSResourceToStyleElement(resource, true))} {js .filter((resource) => resource.loadTime === "beforeDOMReady") .map((res) => JSResourceToScriptElement(res, true))} diff --git a/quartz/components/renderPage.tsx b/quartz/components/renderPage.tsx index f2dcceaa5..10921300f 100644 --- a/quartz/components/renderPage.tsx +++ b/quartz/components/renderPage.tsx @@ -29,7 +29,13 @@ export function pageResources( const contentIndexScript = `const fetchData = fetch("${contentIndexPath}").then(data => data.json())` return { - css: [joinSegments(baseDir, "index.css"), ...staticResources.css], + css: [ + { + content: joinSegments(baseDir, "index.css"), + inline: false, + }, + ...staticResources.css, + ], js: [ { src: joinSegments(baseDir, "prescript.js"), diff --git a/quartz/plugins/transformers/latex.ts b/quartz/plugins/transformers/latex.ts index 28b4d506a..3c45c8d9b 100644 --- a/quartz/plugins/transformers/latex.ts +++ b/quartz/plugins/transformers/latex.ts @@ -31,8 +31,11 @@ export const Latex: QuartzTransformerPlugin> = (opts) => { if (engine === "katex") { return { css: [ - // base css - "https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.16.9/katex.min.css", + { + // base css + content: "https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.16.9/katex.min.css", + inline: false, + }, ], js: [ { diff --git a/quartz/util/resources.tsx b/quartz/util/resources.tsx index a572d891f..1dd1daced 100644 --- a/quartz/util/resources.tsx +++ b/quartz/util/resources.tsx @@ -16,6 +16,12 @@ export type JSResource = { } ) +export type CSSResource = { + content: string + inline: boolean + spaPreserve?: boolean +} + export function JSResourceToScriptElement(resource: JSResource, preserve?: boolean): JSX.Element { const scriptType = resource.moduleType ?? "application/javascript" const spaPreserve = preserve ?? resource.spaPreserve @@ -36,7 +42,24 @@ export function JSResourceToScriptElement(resource: JSResource, preserve?: boole } } +export function CSSResourceToStyleElement(resource: CSSResource, preserve?: boolean): JSX.Element { + const spaPreserve = preserve ?? resource.spaPreserve + if (resource.inline) { + return + } else { + return ( + + ) + } +} + export interface StaticResources { - css: string[] + css: CSSResource[] js: JSResource[] }