diff --git a/src/client/theme-default/composables/prev-next.ts b/src/client/theme-default/composables/prev-next.ts index 5bc39eca..7deb00f2 100644 --- a/src/client/theme-default/composables/prev-next.ts +++ b/src/client/theme-default/composables/prev-next.ts @@ -8,7 +8,10 @@ export function usePrevNext() { return computed(() => { const sidebar = getSidebar(theme.value.sidebar, page.value.relativePath) - const candidates = getFlatSideBarLinks(sidebar) + const links = getFlatSideBarLinks(sidebar) + + // ignore inner-page links with hashes + const candidates = uniqBy(links, (link) => link.link.replace(/[?#].*$/, '')) const index = candidates.findIndex((link) => { return isActive(page.value.relativePath, link.link) @@ -61,3 +64,11 @@ export function usePrevNext() { } }) } + +function uniqBy(array: T[], keyFn: (item: T) => any): T[] { + const seen = new Set() + return array.filter((item) => { + const k = keyFn(item) + return seen.has(k) ? false : seen.add(k) + }) +}