Skip to content

Commit ce85254

Browse files
committed
fix toc
1 parent c6b7f38 commit ce85254

File tree

2 files changed

+23
-14
lines changed

2 files changed

+23
-14
lines changed

src/utils/generateMDX.tsx

Lines changed: 22 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,12 @@ export async function generateMDX(
8080
...runtime,
8181
baseUrl: import.meta.url,
8282
});
83-
return {content: <MDXContent components={{...MDXComponents}} />, toc, meta};
83+
const tocWithMDX = await getTransformedToc(toc);
84+
return {
85+
content: <MDXContent components={{...MDXComponents}} />,
86+
toc: tocWithMDX,
87+
meta,
88+
};
8489
}
8590

8691
const compiled = await compile(mdx, {
@@ -105,7 +110,22 @@ export async function generateMDX(
105110

106111
await writeToCache(store, hash, result, path);
107112

108-
const tocWithMDX = await Promise.all(
113+
const tocWithMDX = await getTransformedToc(toc);
114+
115+
const {default: MDXContent} = await run(result.code, {
116+
...runtime,
117+
baseUrl: import.meta.url,
118+
});
119+
120+
return {
121+
content: <MDXContent components={{...MDXComponents}} />,
122+
toc: tocWithMDX,
123+
meta: result.meta,
124+
};
125+
}
126+
127+
async function getTransformedToc(toc: ExtractedTOC[]): Promise<ExtractedTOC[]> {
128+
return await Promise.all(
109129
toc.map(async (item) => {
110130
if (typeof item.node !== 'string') {
111131
return item;
@@ -125,15 +145,4 @@ export async function generateMDX(
125145
return item;
126146
})
127147
);
128-
129-
const {default: MDXContent} = await run(result.code, {
130-
...runtime,
131-
baseUrl: import.meta.url,
132-
});
133-
134-
return {
135-
content: <MDXContent components={{...MDXComponents}} />,
136-
toc: tocWithMDX,
137-
meta: result.meta,
138-
};
139148
}

src/utils/mdx/TOCExtractorPlugin.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ interface MDXJsxFlowElementNode extends Node {
2626

2727
export interface ExtractedTOC {
2828
url: string;
29-
node: string | JSX.Element;
29+
node: string | React.ReactNode;
3030
depth: number;
3131
}
3232

0 commit comments

Comments
 (0)