@@ -6,7 +6,7 @@ import * as runtime from 'react/jsx-runtime';
66import { remarkPlugins } from '../../plugins/markdownToHtml' ;
77import remarkGfm from 'remark-gfm' ;
88import remarkFrontmatter from 'remark-frontmatter' ;
9- import { MDXComponents } from '../components/MDX/MDXComponents' ;
9+ import { MDXComponents , MDXComponentsToc } from '../components/MDX/MDXComponents' ;
1010import { MaxWidthWrapperPlugin } from './mdx/MaxWidthWrapperPlugin' ;
1111import { ExtractedTOC , TOCExtractorPlugin } from './mdx/TOCExtractorPlugin' ;
1212import { MetaAttributesPlugin } from './mdx/MetaAttributesPlugin' ;
@@ -96,22 +96,44 @@ export async function generateMDX(
9696 } ) ;
9797
9898 const { data : meta } = grayMatter ( mdx ) ;
99+ const toc = compiled . data . toc as ExtractedTOC [ ] ;
99100 const result : CachedResult = {
100101 code : String ( compiled ) ,
101- toc : compiled . data . toc as ExtractedTOC [ ] ,
102+ toc,
102103 meta,
103104 } ;
104105
105106 await writeToCache ( store , hash , result , path ) ;
106107
108+ const tocWithMDX = await Promise . all (
109+ toc . map ( async ( item ) => {
110+ if ( typeof item . node !== 'string' ) {
111+ return item ;
112+ }
113+
114+ const compiled = await compile ( item . node , {
115+ outputFormat : 'function-body' ,
116+ } ) ;
117+
118+ const { default : MDXContent } = await run ( compiled , {
119+ ...runtime ,
120+ baseUrl : import . meta. url ,
121+ } ) ;
122+
123+ item . node = < MDXContent components = { { ...MDXComponentsToc } } /> ;
124+
125+ return item ;
126+ } )
127+ ) ;
128+
107129 const { default : MDXContent } = await run ( result . code , {
108130 ...runtime ,
109131 baseUrl : import . meta. url ,
110132 } ) ;
111133
112134 return {
113135 content : < MDXContent components = { { ...MDXComponents } } /> ,
114- toc : result . toc ,
136+ toc : tocWithMDX ,
115137 meta : result . meta ,
116138 } ;
117139}
0 commit comments