diff options
author | 2025-03-12 14:58:59 +0100 | |
---|---|---|
committer | 2025-03-12 13:58:59 +0000 | |
commit | cb886dcde6c28acca286a66be46228a4d4cc52e7 (patch) | |
tree | d00898192e6a7149698c2261c7194000d1e44a3d /packages/integrations/mdx/src/plugins.ts | |
parent | a3327ffbe6373228339824684eaa6f340a20a32e (diff) | |
download | astro-cb886dcde6c28acca286a66be46228a4d4cc52e7.tar.gz astro-cb886dcde6c28acca286a66be46228a4d4cc52e7.tar.zst astro-cb886dcde6c28acca286a66be46228a4d4cc52e7.zip |
Add `experimental.headingIdCompat` flag (#13352)
* Add `experimental.headingIdCompat` option schema & types
* Markdown and MDX support
* Markdoc support
* Add changeset
* Fix missing argument in Markdoc integration
* Improve JSDoc comment
Co-authored-by: Matt Kane <m@mk.gg>
* Refactor to avoid global context object in Markdoc
* Minor changeset tweak
* Make `rehypeHeadingIds()` argument optional for backwards compatibility
* Add doc comment to `rehypeHeadingIds()`
* Document rehype plugin usage in changeset
---------
Co-authored-by: Matt Kane <m@mk.gg>
Diffstat (limited to 'packages/integrations/mdx/src/plugins.ts')
-rw-r--r-- | packages/integrations/mdx/src/plugins.ts | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/packages/integrations/mdx/src/plugins.ts b/packages/integrations/mdx/src/plugins.ts index e1640238f..c44c8fffd 100644 --- a/packages/integrations/mdx/src/plugins.ts +++ b/packages/integrations/mdx/src/plugins.ts @@ -23,12 +23,13 @@ const isPerformanceBenchmark = Boolean(process.env.ASTRO_PERFORMANCE_BENCHMARK); interface MdxProcessorExtraOptions { sourcemap: boolean; + experimentalHeadingIdCompat: boolean; } export function createMdxProcessor(mdxOptions: MdxOptions, extraOptions: MdxProcessorExtraOptions) { return createProcessor({ remarkPlugins: getRemarkPlugins(mdxOptions), - rehypePlugins: getRehypePlugins(mdxOptions), + rehypePlugins: getRehypePlugins(mdxOptions, extraOptions), recmaPlugins: mdxOptions.recmaPlugins, remarkRehypeOptions: mdxOptions.remarkRehype, jsxImportSource: 'astro', @@ -57,7 +58,10 @@ function getRemarkPlugins(mdxOptions: MdxOptions): PluggableList { return remarkPlugins; } -function getRehypePlugins(mdxOptions: MdxOptions): PluggableList { +function getRehypePlugins( + mdxOptions: MdxOptions, + { experimentalHeadingIdCompat }: MdxProcessorExtraOptions, +): PluggableList { let rehypePlugins: PluggableList = [ // ensure `data.meta` is preserved in `properties.metastring` for rehype syntax highlighters rehypeMetaString, @@ -84,7 +88,10 @@ function getRehypePlugins(mdxOptions: MdxOptions): PluggableList { if (!isPerformanceBenchmark) { // getHeadings() is guaranteed by TS, so this must be included. // We run `rehypeHeadingIds` _last_ to respect any custom IDs set by user plugins. - rehypePlugins.push(rehypeHeadingIds, rehypeInjectHeadingsExport); + rehypePlugins.push( + [rehypeHeadingIds, { experimentalHeadingIdCompat }], + rehypeInjectHeadingsExport, + ); } rehypePlugins.push( |