diff --git a/assets/starry-slides-brand-assets/starry-slides-app-icon.png b/assets/starry-slides-brand-assets/starry-slides-app-icon.png new file mode 100644 index 0000000..ddab9c8 Binary files /dev/null and b/assets/starry-slides-brand-assets/starry-slides-app-icon.png differ diff --git a/assets/starry-slides-brand-assets/starry-slides-app-icon.svg b/assets/starry-slides-brand-assets/starry-slides-app-icon.svg new file mode 100644 index 0000000..8dcfbac --- /dev/null +++ b/assets/starry-slides-brand-assets/starry-slides-app-icon.svg @@ -0,0 +1,7 @@ + + Starry Slides app icon + Mobile app icon source with a white Starry Slides mark on Starry Purple. + + + + diff --git a/assets/starry-slides-brand-assets/starry-slides-banner-tall.png b/assets/starry-slides-brand-assets/starry-slides-banner-tall.png new file mode 100644 index 0000000..39fc3a7 Binary files /dev/null and b/assets/starry-slides-brand-assets/starry-slides-banner-tall.png differ diff --git a/assets/starry-slides-brand-assets/starry-slides-banner.png b/assets/starry-slides-brand-assets/starry-slides-banner.png new file mode 100644 index 0000000..377ea8a Binary files /dev/null and b/assets/starry-slides-brand-assets/starry-slides-banner.png differ diff --git a/assets/starry-slides-brand-assets/starry-slides-favicon-on-purple.png b/assets/starry-slides-brand-assets/starry-slides-favicon-on-purple.png new file mode 100644 index 0000000..c7342e7 Binary files /dev/null and b/assets/starry-slides-brand-assets/starry-slides-favicon-on-purple.png differ diff --git a/assets/starry-slides-brand-assets/starry-slides-favicon-on-purple.svg b/assets/starry-slides-brand-assets/starry-slides-favicon-on-purple.svg new file mode 100644 index 0000000..eedf852 --- /dev/null +++ b/assets/starry-slides-brand-assets/starry-slides-favicon-on-purple.svg @@ -0,0 +1,7 @@ + + Starry Slides favicon on Starry Purple + Compact white Starry Slides mark on a Starry Purple background. + + + + diff --git a/assets/starry-slides-brand-assets/starry-slides-favicon.png b/assets/starry-slides-brand-assets/starry-slides-favicon.png new file mode 100644 index 0000000..9cddba2 Binary files /dev/null and b/assets/starry-slides-brand-assets/starry-slides-favicon.png differ diff --git a/assets/starry-slides-brand-assets/starry-slides-favicon.svg b/assets/starry-slides-brand-assets/starry-slides-favicon.svg new file mode 100644 index 0000000..901e8ae --- /dev/null +++ b/assets/starry-slides-brand-assets/starry-slides-favicon.svg @@ -0,0 +1,6 @@ + + Starry Slides favicon + Compact Starry Slides purple mark. + + + diff --git a/assets/starry-slides-brand-assets/starry-slides-html-document-icon.png b/assets/starry-slides-brand-assets/starry-slides-html-document-icon.png new file mode 100644 index 0000000..0768a9a Binary files /dev/null and b/assets/starry-slides-brand-assets/starry-slides-html-document-icon.png differ diff --git a/assets/starry-slides-brand-assets/starry-slides-html-document-icon.svg b/assets/starry-slides-brand-assets/starry-slides-html-document-icon.svg new file mode 100644 index 0000000..3adf712 --- /dev/null +++ b/assets/starry-slides-brand-assets/starry-slides-html-document-icon.svg @@ -0,0 +1,35 @@ + + Starry Slides HTML document icon + A document-style Starry Slides HTML export icon with a folded page corner and centered Starry Slides mark. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/starry-slides-brand-assets/starry-slides-logo-on-purple.png b/assets/starry-slides-brand-assets/starry-slides-logo-on-purple.png new file mode 100644 index 0000000..ddab9c8 Binary files /dev/null and b/assets/starry-slides-brand-assets/starry-slides-logo-on-purple.png differ diff --git a/assets/starry-slides-brand-assets/starry-slides-logo-on-purple.svg b/assets/starry-slides-brand-assets/starry-slides-logo-on-purple.svg new file mode 100644 index 0000000..8b5689b --- /dev/null +++ b/assets/starry-slides-brand-assets/starry-slides-logo-on-purple.svg @@ -0,0 +1,7 @@ + + Starry Slides logo on Starry Purple + White Starry Slides logo on a Starry Purple background. + + + + diff --git a/assets/starry-slides-brand-assets/starry-slides-logo-reverse.png b/assets/starry-slides-brand-assets/starry-slides-logo-reverse.png new file mode 100644 index 0000000..ca2db36 Binary files /dev/null and b/assets/starry-slides-brand-assets/starry-slides-logo-reverse.png differ diff --git a/assets/starry-slides-brand-assets/starry-slides-logo-reverse.svg b/assets/starry-slides-brand-assets/starry-slides-logo-reverse.svg new file mode 100644 index 0000000..5286cef --- /dev/null +++ b/assets/starry-slides-brand-assets/starry-slides-logo-reverse.svg @@ -0,0 +1,6 @@ + + Starry Slides reverse logo + White Starry Slides logo for dark or colored backgrounds. + + + diff --git a/assets/starry-slides-brand-assets/starry-slides-logo.png b/assets/starry-slides-brand-assets/starry-slides-logo.png new file mode 100644 index 0000000..bb42257 Binary files /dev/null and b/assets/starry-slides-brand-assets/starry-slides-logo.png differ diff --git a/assets/starry-slides-brand-assets/starry-slides-logo.svg b/assets/starry-slides-brand-assets/starry-slides-logo.svg new file mode 100644 index 0000000..92e178e --- /dev/null +++ b/assets/starry-slides-brand-assets/starry-slides-logo.svg @@ -0,0 +1,6 @@ + + Starry Slides logo - Starry Purple + Single-color purple Starry Slides logo in #6D5DF6, with transparent background. + + + diff --git a/assets/starry-slides-brand-assets/starry-slides-mark-mono.png b/assets/starry-slides-brand-assets/starry-slides-mark-mono.png new file mode 100644 index 0000000..a50e409 Binary files /dev/null and b/assets/starry-slides-brand-assets/starry-slides-mark-mono.png differ diff --git a/assets/starry-slides-brand-assets/starry-slides-mark-mono.svg b/assets/starry-slides-brand-assets/starry-slides-mark-mono.svg new file mode 100644 index 0000000..6b9a19d --- /dev/null +++ b/assets/starry-slides-brand-assets/starry-slides-mark-mono.svg @@ -0,0 +1,6 @@ + + Starry Slides mono mark + A single-color hollow four-point Starry Slides star mark. + + + diff --git a/assets/starry-slides-brand-assets/starry-slides-mark-on-purple.png b/assets/starry-slides-brand-assets/starry-slides-mark-on-purple.png new file mode 100644 index 0000000..ddab9c8 Binary files /dev/null and b/assets/starry-slides-brand-assets/starry-slides-mark-on-purple.png differ diff --git a/assets/starry-slides-brand-assets/starry-slides-mark-on-purple.svg b/assets/starry-slides-brand-assets/starry-slides-mark-on-purple.svg new file mode 100644 index 0000000..7d63644 --- /dev/null +++ b/assets/starry-slides-brand-assets/starry-slides-mark-on-purple.svg @@ -0,0 +1,7 @@ + + Starry Slides mark on Starry Purple + White Starry Slides mark on a Starry Purple background. + + + + diff --git a/assets/starry-slides-brand-assets/starry-slides-mark-white.png b/assets/starry-slides-brand-assets/starry-slides-mark-white.png new file mode 100644 index 0000000..ca2db36 Binary files /dev/null and b/assets/starry-slides-brand-assets/starry-slides-mark-white.png differ diff --git a/assets/starry-slides-brand-assets/starry-slides-mark-white.svg b/assets/starry-slides-brand-assets/starry-slides-mark-white.svg new file mode 100644 index 0000000..9a35a77 --- /dev/null +++ b/assets/starry-slides-brand-assets/starry-slides-mark-white.svg @@ -0,0 +1,6 @@ + + Starry Slides white mark + White Starry Slides mark for dark or colored backgrounds. + + + diff --git a/assets/starry-slides-brand-assets/starry-slides-mark.png b/assets/starry-slides-brand-assets/starry-slides-mark.png new file mode 100644 index 0000000..bb42257 Binary files /dev/null and b/assets/starry-slides-brand-assets/starry-slides-mark.png differ diff --git a/assets/starry-slides-brand-assets/starry-slides-mark.svg b/assets/starry-slides-brand-assets/starry-slides-mark.svg new file mode 100644 index 0000000..5af459e --- /dev/null +++ b/assets/starry-slides-brand-assets/starry-slides-mark.svg @@ -0,0 +1,6 @@ + + Starry Slides mark + Single-color purple Starry Slides mark in #6D5DF6. + + + diff --git a/assets/starry-slides-brand-assets/starry-slides-wordmark-on-purple.png b/assets/starry-slides-brand-assets/starry-slides-wordmark-on-purple.png new file mode 100644 index 0000000..debb761 Binary files /dev/null and b/assets/starry-slides-brand-assets/starry-slides-wordmark-on-purple.png differ diff --git a/assets/starry-slides-brand-assets/starry-slides-wordmark-on-purple.svg b/assets/starry-slides-brand-assets/starry-slides-wordmark-on-purple.svg new file mode 100644 index 0000000..e0cac12 --- /dev/null +++ b/assets/starry-slides-brand-assets/starry-slides-wordmark-on-purple.svg @@ -0,0 +1,23 @@ + + Starry Slides logo on Starry Purple + White Starry Slides mark and outlined Urbanist 700 wordmark on a Starry Purple background. + + + + + + + + + + + + + + + + + diff --git a/assets/starry-slides-brand-assets/starry-slides-wordmark-reverse.png b/assets/starry-slides-brand-assets/starry-slides-wordmark-reverse.png new file mode 100644 index 0000000..8c77164 Binary files /dev/null and b/assets/starry-slides-brand-assets/starry-slides-wordmark-reverse.png differ diff --git a/assets/starry-slides-brand-assets/starry-slides-wordmark-reverse.svg b/assets/starry-slides-brand-assets/starry-slides-wordmark-reverse.svg new file mode 100644 index 0000000..b4e9e53 --- /dev/null +++ b/assets/starry-slides-brand-assets/starry-slides-wordmark-reverse.svg @@ -0,0 +1,22 @@ + + Starry Slides reverse logo + The Starry Slides purple mark paired with an outlined Urbanist 700 wordmark for dark backgrounds. + + + + + + + + + + + + + + + + diff --git a/assets/starry-slides-brand-assets/starry-slides-wordmark-white.png b/assets/starry-slides-brand-assets/starry-slides-wordmark-white.png new file mode 100644 index 0000000..e7afe25 Binary files /dev/null and b/assets/starry-slides-brand-assets/starry-slides-wordmark-white.png differ diff --git a/assets/starry-slides-brand-assets/starry-slides-wordmark-white.svg b/assets/starry-slides-brand-assets/starry-slides-wordmark-white.svg new file mode 100644 index 0000000..a13a713 --- /dev/null +++ b/assets/starry-slides-brand-assets/starry-slides-wordmark-white.svg @@ -0,0 +1,22 @@ + + Starry Slides white logo + White Starry Slides mark paired with an outlined Urbanist 700 wordmark for dark or colored backgrounds. + + + + + + + + + + + + + + + + diff --git a/assets/starry-slides-brand-assets/starry-slides-wordmark.png b/assets/starry-slides-brand-assets/starry-slides-wordmark.png new file mode 100644 index 0000000..cbf8671 Binary files /dev/null and b/assets/starry-slides-brand-assets/starry-slides-wordmark.png differ diff --git a/assets/starry-slides-brand-assets/starry-slides-wordmark.svg b/assets/starry-slides-brand-assets/starry-slides-wordmark.svg new file mode 100644 index 0000000..4093915 --- /dev/null +++ b/assets/starry-slides-brand-assets/starry-slides-wordmark.svg @@ -0,0 +1,22 @@ + + Starry Slides logo + The Starry Slides purple mark paired with an outlined Urbanist 700 wordmark. + + + + + + + + + + + + + + + + diff --git a/docs/adr/0021-adopt-reusable-present-mode-and-single-html-export.md b/docs/adr/0021-adopt-reusable-present-mode-and-single-html-export.md index 6297211..531c53f 100644 --- a/docs/adr/0021-adopt-reusable-present-mode-and-single-html-export.md +++ b/docs/adr/0021-adopt-reusable-present-mode-and-single-html-export.md @@ -142,6 +142,22 @@ HTML export becomes the second real export format after PDF, so future export work should reuse the ADR-0016 split: core plans and validates, runtime writes, CLI/editor expose. +### 2026-05-30 补充:单页 HTML 必须内联 deck-local 资源 + +单页 HTML 导出不能依赖原 deck 目录或本地 dev server。Node runtime 在写出 HTML +前,需要把 slide HTML 中引用的 deck-local CSS、CSS `url(...)` 资源、图片、 +音频、视频、`poster` 和 `source` 等媒体文件改写为 `data:` URL。外部 URL 与 +已经内联的 `data:` / `blob:` URL 保持不变。 + +core 继续负责 presenter 文档生成;Node runtime 负责文件系统资源读取和 +内联。这个分工保持 ADR-0016 的 export split:core 生成格式,runtime 写文件 +并处理本地文件系统细节。 + +导出的 HTML 还应包含内嵌的文档式 Starry Slides icon metadata,用于浏览器 +标签页、收藏、移动端快捷入口和分享预览。macOS CLI 写入本地文件时,Node +runtime 可以 best-effort 写入 Finder custom icon;该步骤属于本机文件系统增 +强,失败时不能影响 HTML 导出。 + ## Alternatives considered ### Open browser fullscreen with the existing editor iframe diff --git a/docs/skills-references/STARRY-SLIDES-CLI-USAGE.md b/docs/skills-references/STARRY-SLIDES-CLI-USAGE.md index af2d047..cfb1c86 100644 --- a/docs/skills-references/STARRY-SLIDES-CLI-USAGE.md +++ b/docs/skills-references/STARRY-SLIDES-CLI-USAGE.md @@ -30,6 +30,7 @@ The CLI currently supports these command forms: - `starry-slides verify [deck]` - `starry-slides view [deck] --all` - `starry-slides view [deck] --slide ` +- `starry-slides export html [deck] --out ` - `starry-slides open [deck]` - `starry-slides [deck]` @@ -194,6 +195,48 @@ Example verify failure result from `view`: } ``` +## `export html` + +使用 `export html` 将 deck 导出成一个单页 presenter HTML 文件: + +```bash +starry-slides export html --out ./deck.html +``` + +它会把 manifest 中参与展示的 slide 写入同一个 HTML 文件,并内联 deck-local +资源: + +- 本地 `` 会转换为内联 ` @@ -112,6 +119,10 @@ function escapeHtml(value: string): string { .replace(/"/g, """); } +export const STARRY_SLIDES_EXPORT_ICON_PNG_BASE64 = + "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"; +export const STARRY_SLIDES_EXPORT_ICON_DATA_URL = `data:image/png;base64,${STARRY_SLIDES_EXPORT_ICON_PNG_BASE64}`; + const STANDALONE_PRESENTER_CSS = ` html,body{margin:0;width:100%;height:100%;overflow:hidden;background:#111;color:#f8fafc;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif} *{box-sizing:border-box} diff --git a/packages/slides-editor/src/assets/logo-starry-slides.png b/packages/slides-editor/src/assets/logo-starry-slides.png index a58119c..cbf8671 100644 Binary files a/packages/slides-editor/src/assets/logo-starry-slides.png and b/packages/slides-editor/src/assets/logo-starry-slides.png differ diff --git a/packages/slides-editor/src/assets/starry-slides-favicon-on-purple.png b/packages/slides-editor/src/assets/starry-slides-favicon-on-purple.png new file mode 100644 index 0000000..c7342e7 Binary files /dev/null and b/packages/slides-editor/src/assets/starry-slides-favicon-on-purple.png differ diff --git a/src/cli/commands/export/action.ts b/src/cli/commands/export/action.ts new file mode 100644 index 0000000..00f30dd --- /dev/null +++ b/src/cli/commands/export/action.ts @@ -0,0 +1,19 @@ +import { resolveDeckPath } from "../../../node/deck-source"; +import { exportHtml } from "../../../node/html-export"; + +function writeJson(value: unknown) { + process.stdout.write(`${JSON.stringify(value, null, 2)}\n`); +} + +export async function runExportHtml(deckPathArg: string | undefined, options: { out?: string }) { + if (!options.out) { + throw new Error("export html requires --out "); + } + + const deckPath = resolveDeckPath(deckPathArg); + const result = await exportHtml({ + deckPath, + outFile: options.out, + }); + writeJson(result); +} diff --git a/src/cli/commands/export/index.ts b/src/cli/commands/export/index.ts new file mode 100644 index 0000000..8035999 --- /dev/null +++ b/src/cli/commands/export/index.ts @@ -0,0 +1,15 @@ +import type { Command } from "commander/esm.mjs"; +import { runExportHtml } from "./action"; + +export function registerExportCommand(program: Command) { + const exportCommand = program.command("export").description("Export a deck."); + + exportCommand + .command("html") + .argument("[deck]", "deck path") + .requiredOption("--out ", "write the single HTML file to this path") + .description("Export a deck as one self-contained presenter HTML file.") + .action(async (deckPath: string | undefined, options: { out?: string }) => { + await runExportHtml(deckPath, options); + }); +} diff --git a/src/cli/index.test.ts b/src/cli/index.test.ts index 2bc5b85..bec235f 100644 --- a/src/cli/index.test.ts +++ b/src/cli/index.test.ts @@ -169,6 +169,38 @@ describe("source starry-slides cli", () => { expect(fs.existsSync(path.join(deck, ".starry-slides", "view"))).toBe(false); }); + test("export html writes a self-contained single HTML file", () => { + const deck = createDeck(); + fs.mkdirSync(path.join(deck, "assets"), { recursive: true }); + fs.writeFileSync(path.join(deck, "assets", "shared.css"), ".hero{color:red}"); + fs.writeFileSync(path.join(deck, "assets", "photo.png"), Buffer.from([0x89, 0x50, 0x4e, 0x47])); + writeDeck(deck, [ + { + file: "slides/01.html", + title: "One", + html: ` + + +
Photo
+ `, + }, + ]); + const outFile = path.join(deck, "exported.html"); + + const result = runCli(["export", "html", deck, "--out", outFile]); + + expect(result.status).toBe(0); + expect(result.stderr).toBe(""); + const parsed = parseJson(result.stdout); + expect(parsed.path).toBe(outFile); + expect(parsed.slides).toHaveLength(1); + const html = fs.readFileSync(outFile, "utf8"); + expect(html).toContain("data:image/png;base64"); + expect(html).toContain(".hero{color:red}"); + expect(html).not.toContain("../assets/photo.png"); + expect(html).not.toContain("../assets/shared.css"); + }); + test("view slide combines exact selection with explicit out-dir", () => { const deck = createDeck(); writeDeck(deck, [ @@ -359,6 +391,7 @@ describe("source starry-slides cli", () => { expect(result.stderr).toBe(""); expect(result.stdout).toContain("Usage: starry-slides [options] [command] "); expect(result.stdout).toContain("open [options] "); + expect(result.stdout).toContain("export"); expect(result.stdout).toContain("verify [deck]"); expect(result.stdout).toContain("view [options] [deck]"); } diff --git a/src/cli/index.ts b/src/cli/index.ts index f482fe2..df280a4 100644 --- a/src/cli/index.ts +++ b/src/cli/index.ts @@ -2,6 +2,7 @@ import { Command, CommanderError, InvalidArgumentError } from "commander/esm.mjs"; import { transformCommanderErrorOutput } from "./cli-output"; +import { registerExportCommand } from "./commands/export"; import { registerDefaultOpen, registerOpenCommand } from "./commands/open"; import { registerVerifyCommand } from "./commands/verify"; import { registerViewCommand } from "./commands/view"; @@ -27,6 +28,7 @@ function createProgram() { }); registerDefaultOpen(program); + registerExportCommand(program); registerOpenCommand(program); registerVerifyCommand(program); registerViewCommand(program); diff --git a/src/node/html-export-assets.ts b/src/node/html-export-assets.ts new file mode 100644 index 0000000..ec342f1 --- /dev/null +++ b/src/node/html-export-assets.ts @@ -0,0 +1,241 @@ +import fs from "node:fs"; +import path from "node:path"; +import { JSDOM, VirtualConsole } from "jsdom"; + +interface InlineDeckLocalAssetsOptions { + deckPath: string; + slideFile: string; + htmlSource: string; +} + +const MIME_TYPES: Record = { + ".avif": "image/avif", + ".gif": "image/gif", + ".jpeg": "image/jpeg", + ".jpg": "image/jpeg", + ".mp3": "audio/mpeg", + ".mp4": "video/mp4", + ".ogg": "audio/ogg", + ".png": "image/png", + ".svg": "image/svg+xml", + ".wav": "audio/wav", + ".webm": "video/webm", + ".webp": "image/webp", +}; + +export function inlineDeckLocalAssets({ + deckPath, + slideFile, + htmlSource, +}: InlineDeckLocalAssetsOptions): string { + const deckRoot = path.resolve(deckPath); + const slideDir = path.dirname(path.join(deckRoot, slideFile)); + const dataUrlCache = new Map(); + const dom = new JSDOM(htmlSource, { virtualConsole: new VirtualConsole() }); + const { document } = dom.window; + + for (const link of Array.from(document.querySelectorAll("link[href]"))) { + if (!isStylesheetLink(link)) { + continue; + } + + const assetPath = resolveDeckLocalAssetPath({ + deckRoot, + baseDir: slideDir, + url: link.getAttribute("href") ?? "", + }); + if (!assetPath) { + continue; + } + + const css = fs.readFileSync(assetPath, "utf8"); + const style = document.createElement("style"); + style.textContent = inlineCssUrls({ + css, + deckRoot, + baseDir: path.dirname(assetPath), + dataUrlCache, + }); + link.replaceWith(style); + } + + for (const style of Array.from(document.querySelectorAll("style"))) { + style.textContent = inlineCssUrls({ + css: style.textContent ?? "", + deckRoot, + baseDir: slideDir, + dataUrlCache, + }); + } + + for (const element of Array.from(document.querySelectorAll("[style]"))) { + const inlineStyle = element.getAttribute("style"); + if (!inlineStyle) { + continue; + } + element.setAttribute( + "style", + inlineCssUrls({ css: inlineStyle, deckRoot, baseDir: slideDir, dataUrlCache }) + ); + } + + inlineAttributeUrls( + document, + "img[src],video[src],audio[src],source[src],track[src],embed[src]", + "src", + { + deckRoot, + baseDir: slideDir, + dataUrlCache, + } + ); + inlineAttributeUrls(document, "video[poster]", "poster", { + deckRoot, + baseDir: slideDir, + dataUrlCache, + }); + inlineAttributeUrls(document, "object[data]", "data", { + deckRoot, + baseDir: slideDir, + dataUrlCache, + }); + inlineAttributeUrls( + document, + "image[href],image[xlink\\:href],use[href],use[xlink\\:href]", + "href", + { + deckRoot, + baseDir: slideDir, + dataUrlCache, + } + ); + inlineAttributeUrls( + document, + "image[href],image[xlink\\:href],use[href],use[xlink\\:href]", + "xlink:href", + { + deckRoot, + baseDir: slideDir, + dataUrlCache, + } + ); + + return dom.serialize(); +} + +function isStylesheetLink(link: HTMLLinkElement): boolean { + const rel = link.getAttribute("rel"); + return Boolean(rel?.split(/\s+/).some((value) => value.toLowerCase() === "stylesheet")); +} + +function inlineAttributeUrls( + document: Document, + selector: string, + attribute: string, + options: { + deckRoot: string; + baseDir: string; + dataUrlCache: Map; + } +) { + for (const element of Array.from(document.querySelectorAll(selector))) { + const value = element.getAttribute(attribute); + if (!value) { + continue; + } + + const assetPath = resolveDeckLocalAssetPath({ ...options, url: value }); + if (!assetPath) { + continue; + } + + element.setAttribute(attribute, getDataUrl(assetPath, options.dataUrlCache)); + } +} + +function inlineCssUrls({ + css, + deckRoot, + baseDir, + dataUrlCache, +}: { + css: string; + deckRoot: string; + baseDir: string; + dataUrlCache: Map; +}): string { + return css.replace(/url\(\s*(["']?)(.*?)\1\s*\)/g, (match, quote: string, rawUrl: string) => { + const assetPath = resolveDeckLocalAssetPath({ deckRoot, baseDir, url: rawUrl }); + if (!assetPath) { + return match; + } + + return `url(${quote}${getDataUrl(assetPath, dataUrlCache)}${quote})`; + }); +} + +function resolveDeckLocalAssetPath({ + deckRoot, + baseDir, + url, +}: { + deckRoot: string; + baseDir: string; + url: string; +}): string | null { + const trimmedUrl = url.trim(); + if (!trimmedUrl || isNonLocalUrl(trimmedUrl)) { + return null; + } + + const pathOnly = trimmedUrl.split(/[?#]/, 1)[0]; + const decodedPath = safeDecodeUriComponent(pathOnly); + const assetPath = path.resolve(baseDir, decodedPath); + if (!isInsideDirectory(assetPath, deckRoot)) { + return null; + } + + try { + if (!fs.statSync(assetPath).isFile()) { + return null; + } + } catch { + return null; + } + + return assetPath; +} + +function isNonLocalUrl(url: string): boolean { + return ( + url.startsWith("#") || + url.startsWith("/") || + url.startsWith("//") || + /^[a-zA-Z][a-zA-Z\d+.-]*:/.test(url) + ); +} + +function safeDecodeUriComponent(value: string): string { + try { + return decodeURIComponent(value); + } catch { + return value; + } +} + +function isInsideDirectory(filePath: string, directory: string): boolean { + const relativePath = path.relative(directory, filePath); + return relativePath === "" || (!relativePath.startsWith("..") && !path.isAbsolute(relativePath)); +} + +function getDataUrl(filePath: string, cache: Map): string { + const cached = cache.get(filePath); + if (cached) { + return cached; + } + + const mimeType = MIME_TYPES[path.extname(filePath).toLowerCase()] ?? "application/octet-stream"; + const dataUrl = `data:${mimeType};base64,${fs.readFileSync(filePath).toString("base64")}`; + cache.set(filePath, dataUrl); + return dataUrl; +} diff --git a/src/node/html-export.test.ts b/src/node/html-export.test.ts new file mode 100644 index 0000000..f03ff40 --- /dev/null +++ b/src/node/html-export.test.ts @@ -0,0 +1,61 @@ +import fs from "node:fs"; +import path from "node:path"; +import { afterEach, describe, expect, test } from "vitest"; +import { createTempDeck, writeDeck } from "../../tests/helpers/deck-fixtures"; +import { exportHtml } from "./html-export"; + +const decks: Array<{ cleanup: () => void }> = []; + +function createDeck() { + const deck = createTempDeck("starry-slides-html-export-"); + decks.push(deck); + return deck.root; +} + +afterEach(() => { + for (const deck of decks.splice(0)) { + deck.cleanup(); + } +}); + +describe("HTML export runtime", () => { + test("inlines deck-local CSS, images, and media resources into the single HTML file", async () => { + const deck = createDeck(); + fs.mkdirSync(path.join(deck, "assets"), { recursive: true }); + fs.writeFileSync(path.join(deck, "assets", "shared.css"), ".hero{background:url('./bg.svg')}"); + fs.writeFileSync(path.join(deck, "assets", "bg.svg"), ""); + fs.writeFileSync(path.join(deck, "assets", "photo.png"), Buffer.from([0x89, 0x50, 0x4e, 0x47])); + fs.writeFileSync(path.join(deck, "assets", "poster.jpg"), Buffer.from([0xff, 0xd8, 0xff])); + fs.writeFileSync(path.join(deck, "assets", "demo.mp4"), Buffer.from("video")); + writeDeck(deck, [ + { + file: "slides/01.html", + title: "One", + html: ` + + +
+ Photo + + Remote +
+ `, + }, + ]); + const outFile = path.join(deck, "single.html"); + + const result = await exportHtml({ deckPath: deck, outFile }); + const html = fs.readFileSync(result.path, "utf8"); + + expect(html).toContain("data:image/png;base64"); + expect(html).toContain("data:image/svg+xml;base64"); + expect(html).toContain("data:image/jpeg;base64"); + expect(html).toContain("data:video/mp4;base64"); + expect(html).toContain(".hero"); + expect(html).not.toContain("../assets/photo.png"); + expect(html).not.toContain("../assets/shared.css"); + expect(html).not.toContain("../assets/demo.mp4"); + expect(html).not.toContain("/deck/"); + expect(html).toContain("https://example.com/remote.png"); + }); +}); diff --git a/src/node/html-export.ts b/src/node/html-export.ts index 82823da..e8ca3fb 100644 --- a/src/node/html-export.ts +++ b/src/node/html-export.ts @@ -5,6 +5,8 @@ import { createSingleHtmlExportDocument, planHtmlExportSlides, } from "@starrykit/slides-core"; +import { inlineDeckLocalAssets } from "./html-export-assets"; +import { applyMacosCustomIcon } from "./macos-file-icon"; import { getManifestSlides } from "./view-renderer"; export interface HtmlExportResultSlide { @@ -35,7 +37,11 @@ export async function exportHtml({ file: slide.file, ...(slide.title ? { title: slide.title } : {}), ...(slide.hidden ? { hidden: slide.hidden } : {}), - htmlSource: fs.readFileSync(slide.filePath, "utf8"), + htmlSource: inlineDeckLocalAssets({ + deckPath: deck, + slideFile: slide.file, + htmlSource: fs.readFileSync(slide.filePath, "utf8"), + }), })); const html = createSingleHtmlExportDocument({ title: path.basename(deck), @@ -45,6 +51,7 @@ export async function exportHtml({ fs.mkdirSync(path.dirname(outputPath), { recursive: true }); fs.writeFileSync(outputPath, html, "utf8"); + applyMacosCustomIcon(outputPath); return { deck, diff --git a/src/node/macos-file-icon.test.ts b/src/node/macos-file-icon.test.ts new file mode 100644 index 0000000..68d3bd9 --- /dev/null +++ b/src/node/macos-file-icon.test.ts @@ -0,0 +1,29 @@ +import fs from "node:fs"; +import os from "node:os"; +import path from "node:path"; +import { afterEach, describe, expect, test } from "vitest"; +import { applyMacosCustomIcon } from "./macos-file-icon"; + +const tempDirs: string[] = []; + +function createTempFile() { + const dir = fs.mkdtempSync(path.join(os.tmpdir(), "starry-slides-macos-icon-")); + tempDirs.push(dir); + const filePath = path.join(dir, "deck.html"); + fs.writeFileSync(filePath, "Deck"); + return filePath; +} + +afterEach(() => { + for (const dir of tempDirs.splice(0)) { + fs.rmSync(dir, { recursive: true, force: true }); + } +}); + +describe("macOS file icon helper", () => { + test("skips non-macOS platforms", () => { + const filePath = createTempFile(); + + expect(applyMacosCustomIcon(filePath, { platform: "linux" })).toBe(false); + }); +}); diff --git a/src/node/macos-file-icon.ts b/src/node/macos-file-icon.ts new file mode 100644 index 0000000..b405d86 --- /dev/null +++ b/src/node/macos-file-icon.ts @@ -0,0 +1,36 @@ +import { execFileSync } from "node:child_process"; +import fs from "node:fs"; +import os from "node:os"; +import path from "node:path"; +import { STARRY_SLIDES_EXPORT_ICON_PNG_BASE64 } from "@starrykit/slides-core"; + +export interface MacosCustomIconOptions { + platform?: NodeJS.Platform | string; + env?: NodeJS.ProcessEnv; +} + +export function applyMacosCustomIcon( + filePath: string, + { platform = process.platform, env = process.env }: MacosCustomIconOptions = {} +): boolean { + if (platform !== "darwin" || env.STARRY_SLIDES_DISABLE_MACOS_FILE_ICON === "1") { + return false; + } + + const tempDir = fs.mkdtempSync(path.join(os.tmpdir(), "starry-slides-icon-")); + const iconPath = path.join(tempDir, "icon.png"); + const resourcePath = path.join(tempDir, "icon.rsrc"); + + try { + fs.writeFileSync(iconPath, Buffer.from(STARRY_SLIDES_EXPORT_ICON_PNG_BASE64, "base64")); + execFileSync("sips", ["-i", iconPath], { stdio: "ignore" }); + fs.writeFileSync(resourcePath, execFileSync("DeRez", ["-only", "icns", iconPath])); + execFileSync("Rez", ["-append", resourcePath, "-o", filePath], { stdio: "ignore" }); + execFileSync("SetFile", ["-a", "C", filePath], { stdio: "ignore" }); + return true; + } catch { + return false; + } finally { + fs.rmSync(tempDir, { recursive: true, force: true }); + } +}