From 80f0ab31aceec35c9fd04a6387b14349b806f713 Mon Sep 17 00:00:00 2001 From: nsfisis Date: Fri, 4 Jul 2025 19:14:54 +0900 Subject: feat(blog/nuldoc): implement TOC --- services/blog/nuldoc-src/djot/document.ts | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'services/blog/nuldoc-src/djot/document.ts') diff --git a/services/blog/nuldoc-src/djot/document.ts b/services/blog/nuldoc-src/djot/document.ts index be9c08d5..3e8cd92c 100644 --- a/services/blog/nuldoc-src/djot/document.ts +++ b/services/blog/nuldoc-src/djot/document.ts @@ -12,6 +12,7 @@ export const PostMetadataSchema = z.object({ title: z.string(), description: z.string(), tags: z.array(z.string()), + toc: z.boolean().optional(), revisions: z.array(z.object({ date: z.string(), remark: z.string(), @@ -22,6 +23,17 @@ export const PostMetadataSchema = z.object({ export type PostMetadata = z.infer; +export type TocEntry = { + id: string; + text: string; + level: number; + children: TocEntry[]; +}; + +export type TocRoot = { + entries: TocEntry[]; +}; + export type Document = { root: Element; sourceFilePath: string; @@ -31,6 +43,8 @@ export type Document = { description: string; // TODO: should it be markup text? tags: string[]; revisions: Revision[]; + toc?: TocRoot; + isTocEnabled: boolean; }; export function createNewDocumentFromDjotDocument( @@ -56,5 +70,6 @@ export function createNewDocumentFromDjotDocument( remark: r.remark, isInternal: !!r.isInternal, })), + isTocEnabled: meta.article.toc !== false, }; } -- cgit v1.2.3-70-g09d2