element-plus/docs/.vitepress/config/sidebars.ts

52 lines
1.2 KiB
TypeScript
Raw Normal View History

import { ensureLang } from '../utils/lang'
import guideLocale from '../i18n/pages/guide.json'
import componentLocale from '../i18n/pages/component.json'
function getGuideSidebar() {
return Object.fromEntries(
Object.entries(guideLocale).map(([lang, val]) => [
lang,
Object.values(val).map((item) => mapPrefix(item, lang)),
])
)
}
function getComponentsSideBar() {
return Object.fromEntries(
Object.entries(componentLocale).map(([lang, val]) => [
lang,
Object.values(val).map((item) => mapPrefix(item, lang, '/component')),
])
)
}
// return sidebar with language configs.
// this might create duplicated data but the overhead is ignorable
const getSidebars = () => {
return {
'/guide/': getGuideSidebar(),
'/component/': getComponentsSideBar(),
}
}
type Item = {
text: string
children?: Item[]
link?: string
}
function mapPrefix(item: Item, lang: string, prefix = '') {
if (item.children && item.children.length > 0) {
return {
...item,
children: item.children.map((child) => mapPrefix(child, lang, prefix)),
}
}
return {
...item,
link: `${ensureLang(lang)}${prefix}${item.link}`,
}
}
export const sidebars = getSidebars()