summaryrefslogtreecommitdiff
path: root/packages/integrations/mdx/src/plugins.ts
diff options
context:
space:
mode:
authorGravatar Chris Swithinbank <swithinbank@gmail.com> 2025-03-12 14:58:59 +0100
committerGravatar GitHub <noreply@github.com> 2025-03-12 13:58:59 +0000
commitcb886dcde6c28acca286a66be46228a4d4cc52e7 (patch)
treed00898192e6a7149698c2261c7194000d1e44a3d /packages/integrations/mdx/src/plugins.ts
parenta3327ffbe6373228339824684eaa6f340a20a32e (diff)
downloadastro-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.ts13
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(