@valaxyjs/utils
Version:
A utility library for Valaxy
76 lines (72 loc) • 2.07 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[];
/**
* Remove git+ prefix from repository URL
* @param url - Repository URL that may contain git+ prefix
* @returns Normalized URL without git+ prefix
* @example
* normalizeRepositoryUrl('git+https://github.com/user/repo.git')
* // => 'https://github.com/user/repo.git'
*/
declare function normalizeRepositoryUrl(url: string): string;
export { addToParent, buildTree, getHeaders, normalizeRepositoryUrl, resolveHeaders, resolvedHeaders, serializeHeader };
export type { GetHeadersOptions, Header, MenuItem };