Fix MDX heading IDs generation when using a frontmatter reference #5978
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Changes
This PR fixes #5780.
When using a frontmatter reference in a MDX heading, the ID generated for the heading is not using the reference value. For example,
would generate
<h1 id="frontmattertitle">The Title</h1>
instead of<h1 id="the-title">The Title</h1>
.This pull request updates the
@astrojs/markdown-remark
rehype plugin generating these IDs to fix this behavior:MDXTextExpression
, e.g.# {frontmatter.title}
, the plugin will use the associated ESTree entry to get the variable path, e.g.['frontmatter', 'title']
.Note: the added dev dependencies to
@astrojs/markdown-remark
are only used to reference types.Testing
I added a new fixtures
test-with-frontmatter.mdx
to the@astrojs/mdx
test suite to test the changes.The tests covers various cases and syntaxes from a basic variable to nested list items:
Docs
I could not find any specific mention regarding this specific behavior in the docs and I'm not sure if it's worth mentioning it.