|
|
|
@ -1,7 +1,6 @@
|
|
|
|
|
import { getScrollOffset } from 'vitepress'
|
|
|
|
|
import type { DefaultTheme } from 'vitepress/theme'
|
|
|
|
|
import { onMounted, onUnmounted, onUpdated, type Ref } from 'vue'
|
|
|
|
|
import type { MenuItem } from '../../shared'
|
|
|
|
|
import { throttleAndDebounce } from '../support/utils'
|
|
|
|
|
import { useAside } from './aside'
|
|
|
|
|
|
|
|
|
@ -20,7 +19,9 @@ export function resolveTitle(theme: DefaultTheme.Config): string {
|
|
|
|
|
)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export function getHeaders(range: DefaultTheme.Config['outline']): MenuItem[] {
|
|
|
|
|
export function getHeaders(
|
|
|
|
|
range: DefaultTheme.Config['outline']
|
|
|
|
|
): DefaultTheme.OutlineItem[] {
|
|
|
|
|
const headers = [
|
|
|
|
|
...document.querySelectorAll('.VPDoc :where(h1,h2,h3,h4,h5,h6)')
|
|
|
|
|
]
|
|
|
|
@ -52,9 +53,9 @@ function serializeHeader(h: Element): string {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export function resolveHeaders(
|
|
|
|
|
headers: MenuItem[],
|
|
|
|
|
headers: DefaultTheme.OutlineItem[],
|
|
|
|
|
range?: DefaultTheme.Config['outline']
|
|
|
|
|
): MenuItem[] {
|
|
|
|
|
): DefaultTheme.OutlineItem[] {
|
|
|
|
|
if (range === false) {
|
|
|
|
|
return []
|
|
|
|
|
}
|
|
|
|
@ -188,11 +189,18 @@ function getAbsoluteTop(element: HTMLElement): number {
|
|
|
|
|
return offsetTop
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function buildTree(data: MenuItem[], min: number, max: number): MenuItem[] {
|
|
|
|
|
function buildTree(
|
|
|
|
|
data: DefaultTheme.OutlineItem[],
|
|
|
|
|
min: number,
|
|
|
|
|
max: number
|
|
|
|
|
): DefaultTheme.OutlineItem[] {
|
|
|
|
|
resolvedHeaders.length = 0
|
|
|
|
|
|
|
|
|
|
const result: MenuItem[] = []
|
|
|
|
|
const stack: (MenuItem | { level: number; shouldIgnore: true })[] = []
|
|
|
|
|
const result: DefaultTheme.OutlineItem[] = []
|
|
|
|
|
const stack: (
|
|
|
|
|
| DefaultTheme.OutlineItem
|
|
|
|
|
| { level: number; shouldIgnore: true }
|
|
|
|
|
)[] = []
|
|
|
|
|
|
|
|
|
|
data.forEach((item) => {
|
|
|
|
|
const node = { ...item, children: [] }
|
|
|
|
|