chore(export): bring back content CSS

This commit is contained in:
Elian Doran
2026-03-28 00:29:13 +02:00
parent 8b1d0063ff
commit d0abcfe355
3 changed files with 30 additions and 10 deletions

View File

@@ -1,10 +1,12 @@
import { type ExportFormat, type ZipExportProviderData, ZipExportProvider } from "@triliumnext/core";
import contentCss from "@triliumnext/ckeditor5/src/theme/ck-content.css?raw";
export async function standaloneZipExportProviderFactory(format: ExportFormat, data: ZipExportProviderData): Promise<ZipExportProvider> {
switch (format) {
case "html": {
const { default: HtmlExportProvider } = await import("@triliumnext/core/src/services/export/zip/html.js");
return new HtmlExportProvider(data);
return new HtmlExportProvider(data, { contentCss });
}
case "markdown": {
const { default: MarkdownExportProvider } = await import("@triliumnext/core/src/services/export/zip/markdown.js");

View File

@@ -1,10 +1,21 @@
import { type ExportFormat, type ZipExportProviderData, ZipExportProvider } from "@triliumnext/core";
import { type ExportFormat, ZipExportProvider, type ZipExportProviderData } from "@triliumnext/core";
import fs from "fs";
import path from "path";
import { getResourceDir, isDev } from "../../utils.js";
function readContentCss(): string {
const cssFile = isDev
? path.join(__dirname, "../../../../../../node_modules/ckeditor5/dist/ckeditor5-content.css")
: path.join(getResourceDir(), "ckeditor5-content.css");
return fs.readFileSync(cssFile, "utf-8");
}
export async function serverZipExportProviderFactory(format: ExportFormat, data: ZipExportProviderData): Promise<ZipExportProvider> {
switch (format) {
case "html": {
const { default: HtmlExportProvider } = await import("@triliumnext/core/src/services/export/zip/html.js");
return new HtmlExportProvider(data);
return new HtmlExportProvider(data, { contentCss: readContentCss() });
}
case "markdown": {
const { default: MarkdownExportProvider } = await import("@triliumnext/core/src/services/export/zip/markdown.js");

View File

@@ -1,14 +1,24 @@
import html from "html";
import { escapeHtml } from "../../utils/index";
import { ZipExportProvider } from "./abstract_provider.js";
import { ZipExportProvider, ZipExportProviderData } from "./abstract_provider.js";
import { NoteMeta } from "../../../meta";
export interface HtmlExportProviderOptions {
contentCss?: string;
}
export default class HtmlExportProvider extends ZipExportProvider {
private navigationMeta: NoteMeta | null = null;
private indexMeta: NoteMeta | null = null;
private cssMeta: NoteMeta | null = null;
private options: HtmlExportProviderOptions;
constructor(data: ZipExportProviderData, options?: HtmlExportProviderOptions) {
super(data);
this.options = options ?? {};
}
prepareMeta(metaFile) {
if (this.zipExportOptions?.skipExtraFiles) return;
@@ -168,12 +178,9 @@ export default class HtmlExportProvider extends ZipExportProvider {
return;
}
// TODO: Bring back CSS.
// const cssFile = isDev()
// ? path.join(__dirname, "../../../../../../node_modules/ckeditor5/dist/ckeditor5-content.css")
// : path.join(getResourceDir(), "ckeditor5-content.css");
// const cssContent = fs.readFileSync(cssFile, "utf-8");
// this.archive.append(cssContent, { name: cssMeta.dataFileName });
if (this.options.contentCss) {
this.archive.append(this.options.contentCss, { name: cssMeta.dataFileName });
}
}
}