@valaxyjs/utils
Version:
A utility library for Valaxy
66 lines (63 loc) • 1.7 kB
text/typescript
interface Header {
/**
* The level of the header
*
* `1` to `6` for `<h1>` to `<h6>`
*/
level: number;
/**
* The title of the header
*/
title: string;
/**
* The slug of the header
*
* Typically the `id` attr of the header anchor
*/
slug: string;
/**
* Link of the header
*
* Typically using `#${slug}` as the anchor hash
*/
link: string;
/**
* i18n
*/
lang?: string;
}
/**
* @en
* Menu item, the title menu parsed from the article.
*
* @zh
* 菜单项,从文章中解析出的标题菜单。
*/
type MenuItem = Omit<Header, 'slug' | 'children'> & {
element: HTMLHeadElement;
children?: MenuItem[];
};
/**
* @ref vitepress src/client/theme-default/composables/outline.ts
*/
declare const resolvedHeaders: {
element: HTMLHeadElement;
link: string;
}[];
interface GetHeadersOptions {
range?: number | [number, number] | 'deep' | {
level: [number, number];
};
selector?: string;
filter?: (el: Element) => boolean;
}
declare function buildTree(data: MenuItem[], min: number, max: number): MenuItem[];
declare function addToParent(currIndex: number, headers: MenuItem[], levelsRange: [number, number]): boolean;
declare function resolveHeaders(headers: MenuItem[], range?: GetHeadersOptions['range']): MenuItem[];
declare function serializeHeader(h: Element): string;
/**
* get headers from document directly
*/
declare function getHeaders(options?: GetHeadersOptions): MenuItem[];
export { addToParent, buildTree, getHeaders, resolveHeaders, resolvedHeaders, serializeHeader };
export type { GetHeadersOptions, Header, MenuItem };