43 lines
1.0 KiB
TypeScript
43 lines
1.0 KiB
TypeScript
import type { DefaultTheme } from 'vitepress/theme'
|
|
import { ensureStartingSlash } from './utils.js'
|
|
|
|
/**
|
|
* Get the `Sidebar` from sidebar option. This method will ensure to get correct
|
|
* sidebar config from `MultiSideBarConfig` with various path combinations such
|
|
* as matching `guide/` and `/guide/`. If no matching config was found, it will
|
|
* return empty array.
|
|
*/
|
|
export function getSidebar(
|
|
sidebar: DefaultTheme.Sidebar,
|
|
path: string
|
|
): DefaultTheme.SidebarGroup[] {
|
|
if (Array.isArray(sidebar)) {
|
|
return sidebar
|
|
}
|
|
|
|
path = ensureStartingSlash(path)
|
|
|
|
for (const dir in sidebar) {
|
|
// make sure the multi sidebar key starts with slash too
|
|
if (path.startsWith(ensureStartingSlash(dir))) {
|
|
return sidebar[dir]
|
|
}
|
|
}
|
|
|
|
return []
|
|
}
|
|
|
|
export function getFlatSideBarLinks(
|
|
sidebar: DefaultTheme.SidebarGroup[]
|
|
): DefaultTheme.SidebarItem[] {
|
|
const links: DefaultTheme.SidebarItem[] = []
|
|
|
|
for (const group of sidebar) {
|
|
for (const link of group.items) {
|
|
links.push(link)
|
|
}
|
|
}
|
|
|
|
return links
|
|
}
|