diff --git a/CHANGELOG.md b/CHANGELOG.md
index aa97c08..ce07c82 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,6 +2,13 @@
All notable changes to this project will be documented in this file.
-## [0.1.0] - 2023-0927
+## 0.2.0 - 2023-09-27
+
+### Bug Fixes
+
+- Add missing `id` & `role` to heading elements
+
+
+## 0.1.0 - 2023-09-27
- initial release
diff --git a/README.md b/README.md
index 3a2c81b..f28c6da 100644
--- a/README.md
+++ b/README.md
@@ -102,7 +102,7 @@ console.log(value)
```html
-
+
@@ -112,7 +112,7 @@ console.log(value)
-
+
@@ -120,7 +120,7 @@ console.log(value)
Paragraph 2
-
+
@@ -131,7 +131,7 @@ console.log(value)
-
+
diff --git a/package.json b/package.json
index ddfa2b5..705285a 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "rehype-slug-anchor-sectionize",
- "version": "0.1.0",
+ "version": "0.2.0",
"description": "rehype plugin which wraps headings and their descendants in nested elements and applies slugged anchor links to them.",
"keywords": [
"anchor",
diff --git a/src/index.ts b/src/index.ts
index 289720e..d02ed19 100644
--- a/src/index.ts
+++ b/src/index.ts
@@ -76,7 +76,7 @@ const rehypeSlugAnchorSectionize: Plugin<
endIndex > 0 ? endIndex : undefined
)
- const slugId = node.properties.id || slug(hastToString(node)) || null
+ const slugId = slug(hastToString(node)) || null
const linkProps = {
href: `#${slugId}`,
@@ -95,12 +95,12 @@ const rehypeSlugAnchorSectionize: Plugin<
}),
}
- const section = {
- type: 'element',
- tagName: options.wrapperTagName,
- properties: sectionProps,
- children: between,
- } as Element
+ node.properties = {
+ ...(slugId && {
+ id: slugId,
+ }),
+ role: 'presentation',
+ }
node.children = [
{
@@ -120,19 +120,17 @@ const rehypeSlugAnchorSectionize: Plugin<
type: 'element',
tagName: 'span',
properties: { role: 'heading', ariaLevel: depthTag.slice(1) },
- children: [
- Object.assign({}, ...node.children, {
- properties: {
- ...(slugId && {
- id: slugId,
- }),
- role: 'presentation',
- },
- }),
- ],
+ children: node.children,
},
]
+ const section = {
+ type: 'element',
+ tagName: options.wrapperTagName,
+ properties: sectionProps,
+ children: between,
+ } as Element
+
parent.children.splice(startIndex, section.children.length, section)
}
)
diff --git a/test/__snapshots__/plugin.test.ts.snap b/test/__snapshots__/plugin.test.ts.snap
index 948c2fa..7b5aa32 100644
--- a/test/__snapshots__/plugin.test.ts.snap
+++ b/test/__snapshots__/plugin.test.ts.snap
@@ -1,12 +1,12 @@
// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
exports[`should ... 1`] = `
-"Heading 2.1
+"Heading 2.1
Paragraph 1
-Heading 2.2
Paragraph 2
-Heading 3.1
+Heading 3.1
Paragraph 3
-"
`;