@vuepress-reco/style-default
Version:
It is default type of vuepress-theme-reco.
31 lines (30 loc) • 1.36 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.headersToSidebarItemChildren = exports.headerToSidebarItem = exports.resolvePageHeaders = exports.usePageHeaders = exports.pageHeadersSymbol = void 0;
const vue_1 = require("vue");
const client_1 = require("@vuepress/client");
exports.pageHeadersSymbol = Symbol('pageHeaders');
const usePageHeaders = () => {
const pageHeaders = vue_1.inject(exports.pageHeadersSymbol);
if (!pageHeaders) {
throw new Error('usePageHeaders() is called without provider.');
}
return pageHeaders;
};
exports.usePageHeaders = usePageHeaders;
function resolvePageHeaders() {
const page = client_1.usePageData();
// if the sidebar item is current page and children is not set
// use headers of current page as children
return exports.headersToSidebarItemChildren(page.value.headers);
}
exports.resolvePageHeaders = resolvePageHeaders;
const headerToSidebarItem = (header) => ({
text: header.title,
link: `#${header.slug}`,
level: header.level,
children: exports.headersToSidebarItemChildren(header.children),
});
exports.headerToSidebarItem = headerToSidebarItem;
const headersToSidebarItemChildren = (headers) => headers.map((header) => exports.headerToSidebarItem(header));
exports.headersToSidebarItemChildren = headersToSidebarItemChildren;