Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | import { computed } from "vue";
import { useData, useRoute } from "vitepress";
import { breadcrumbsForRoute, routeWithoutBase } from "./breadcrumbs.js";
/**
* Resolve the current page's configured breadcrumb state.
*
* @returns {{crumbs: import("vue").ComputedRef, visible: import("vue").ComputedRef}} Breadcrumb state.
*/
export const useBreadcrumbs = () => {
const route = useRoute();
const { frontmatter, site, theme } = useData();
const crumbs = computed(() => {
if (frontmatter.value.layout === "home" || frontmatter.value.layout === false) {
return [];
}
if (frontmatter.value.breadcrumbs === false) {
return [];
}
const options = theme.value.breadcrumbs || {};
return breadcrumbsForRoute(
routeWithoutBase(route.path, site.value.base),
options.routes || theme.value.routeTitles || {},
);
});
const visible = computed(() => {
const minimumDepth = theme.value.breadcrumbs?.minDepth ?? 2;
return crumbs.value.length >= minimumDepth;
});
return { crumbs, visible };
};
|