vuepress-theme-plume/theme/src/node/config/resolveNotesOptions.ts
2024-05-26 13:11:21 +08:00

38 lines
1.3 KiB
TypeScript

import type { NotesDataOptions, NotesSidebar } from '@vuepress-plume/plugin-notes-data'
import { entries } from '@vuepress/helper'
import { uniq } from '@pengzhanbo/utils'
import type { PlumeThemeLocaleOptions } from '../..//shared/index.js'
import { withBase } from '../utils.js'
export function resolveNotesLinkList(localeOptions: PlumeThemeLocaleOptions) {
const locales = localeOptions.locales || {}
const notesLinks: string[] = []
for (const [locale, opt] of entries(locales)) {
const config = locale === '/' ? (opt.notes || localeOptions.notes) : opt.notes
if (config && config.notes?.length) {
const prefix = config.link || ''
notesLinks.push(
...config.notes.map(
note => withBase(`${prefix}/${note.link || ''}`, locale),
),
)
}
}
return uniq(notesLinks)
}
export function resolveNotesOptions(localeOptions: PlumeThemeLocaleOptions): NotesDataOptions[] {
const locales = localeOptions.locales || {}
const notesOptionsList: NotesDataOptions[] = []
for (const [locale, opt] of entries(locales)) {
const options = locale === '/' ? (opt.notes || localeOptions.notes) : opt.notes
if (options) {
options.dir = withBase(options.dir, locale)
notesOptionsList.push(options)
}
}
return notesOptionsList
}