12345678910111213141516171819202122232425262728293031323334353637 |
- import { computed } from 'vue';
- import { useData } from 'vitepress';
- import { isArray, ensureStartingSlash, removeExtention } from '../utils';
- import { getSideBarConfig, getFlatSideBarLinks } from '../support/sideBar';
- export function useNextAndPrevLinks() {
- const { page, theme } = useData();
- const path = computed(() => {
- return removeExtention(ensureStartingSlash(page.value.relativePath));
- });
- const candidates = computed(() => {
- const config = getSideBarConfig(theme.value.sidebar, path.value);
- return isArray(config) ? getFlatSideBarLinks(config) : [];
- });
- const index = computed(() => {
- return candidates.value.findIndex((item) => {
- return item.link === path.value;
- });
- });
- const next = computed(() => {
- if (theme.value.nextLinks !== false &&
- index.value > -1 &&
- index.value < candidates.value.length - 1) {
- return candidates.value[index.value + 1];
- }
- });
- const prev = computed(() => {
- if (theme.value.prevLinks !== false && index.value > 0) {
- return candidates.value[index.value - 1];
- }
- });
- const hasLinks = computed(() => !!next.value || !!prev.value);
- return {
- next,
- prev,
- hasLinks
- };
- }
|