fix: toc for cyrillic and other non-latin alphabets (closes #396)

This commit is contained in:
Jacky Zhao 2023-08-22 22:41:50 -07:00
parent 39809a1b44
commit 67e5f13ba4
2 changed files with 4 additions and 3 deletions

View File

@ -64,7 +64,7 @@ async function navigate(url: URL, isBack: boolean = false) {
// scroll into place and add history // scroll into place and add history
if (!isBack) { if (!isBack) {
if (url.hash) { if (url.hash) {
const el = document.getElementById(url.hash.substring(1)) const el = document.getElementById(decodeURIComponent(url.hash.substring(1)))
el?.scrollIntoView() el?.scrollIntoView()
} else { } else {
window.scrollTo({ top: 0 }) window.scrollTo({ top: 0 })

View File

@ -2,7 +2,7 @@ import { QuartzTransformerPlugin } from "../types"
import { Root } from "mdast" import { Root } from "mdast"
import { visit } from "unist-util-visit" import { visit } from "unist-util-visit"
import { toString } from "mdast-util-to-string" import { toString } from "mdast-util-to-string"
import { slug as slugAnchor } from "github-slugger" import Slugger from "github-slugger"
export interface Options { export interface Options {
maxDepth: 1 | 2 | 3 | 4 | 5 | 6 maxDepth: 1 | 2 | 3 | 4 | 5 | 6
@ -34,6 +34,7 @@ export const TableOfContents: QuartzTransformerPlugin<Partial<Options> | undefin
return async (tree: Root, file) => { return async (tree: Root, file) => {
const display = file.data.frontmatter?.enableToc ?? opts.showByDefault const display = file.data.frontmatter?.enableToc ?? opts.showByDefault
if (display) { if (display) {
const slugAnchor = new Slugger()
const toc: TocEntry[] = [] const toc: TocEntry[] = []
let highestDepth: number = opts.maxDepth let highestDepth: number = opts.maxDepth
visit(tree, "heading", (node) => { visit(tree, "heading", (node) => {
@ -43,7 +44,7 @@ export const TableOfContents: QuartzTransformerPlugin<Partial<Options> | undefin
toc.push({ toc.push({
depth: node.depth, depth: node.depth,
text, text,
slug: slugAnchor(text), slug: slugAnchor.slug(text),
}) })
} }
}) })