diff --git a/src/lib/table-of-contents.svelte b/src/lib/table-of-contents.svelte index f30c399..2888480 100644 --- a/src/lib/table-of-contents.svelte +++ b/src/lib/table-of-contents.svelte @@ -33,10 +33,15 @@ return document.querySelectorAll("h2, h3, h4, h5"); } + // Generates an ID for a given header node. Does not override + // any existing ID. let getHeaderId = function(header: Node): string { var id = (header as HTMLElement).id; + if (!id) { - id = `header-${idCounter}`; + var text = (header as HTMLElement).innerText.toLowerCase(); + text = text.replaceAll(/[^a-zA-Z0-9]/gi, "-"); + id = text; (header as HTMLElement).id = id; idCounter += 1; }