UNPKG

hirsun-vuepress-theme-hope-plus

Version:
34 lines 1.37 kB
import { isLinkExternal, isString } from "@vuepress/shared"; import { ref, watch } from "vue"; import { useRouter } from "vue-router"; import { useThemeLocaleData } from "@theme-hope/composables/index"; import { resolveLinkInfo } from "@theme-hope/utils/index"; export const resolveNavbarItem = (router, item, prefix = "") => { if (isString(item)) return resolveLinkInfo(router, `${prefix}${item}`); if ("children" in item) return { ...item, ...(item.link && !isLinkExternal(item.link) ? resolveLinkInfo(router, `${prefix}${item.link}`) : {}), children: item.children.map((child) => resolveNavbarItem(router, child, `${prefix}${item.prefix || ""}`)), }; return { ...item, link: isLinkExternal(item.link) ? item.link : resolveLinkInfo(router, `${prefix}${item.link}`).link, }; }; export const useNavbarItems = () => { const themeLocaleData = useThemeLocaleData(); const router = useRouter(); const getNavbarItems = () => (themeLocaleData.value.navbar || []).map((item) => resolveNavbarItem(router, item)); const navbarItems = ref(getNavbarItems()); watch(themeLocaleData, () => { navbarItems.value = getNavbarItems(); }); return navbarItems; }; //# sourceMappingURL=navbarConfig.js.map