|
|
@ -117,10 +117,12 @@ export function useActiveAnchor(
|
|
|
|
const onScroll = throttleAndDebounce(setActiveLink, 100)
|
|
|
|
const onScroll = throttleAndDebounce(setActiveLink, 100)
|
|
|
|
|
|
|
|
|
|
|
|
let prevActiveLink: HTMLAnchorElement | null = null
|
|
|
|
let prevActiveLink: HTMLAnchorElement | null = null
|
|
|
|
|
|
|
|
let ignoreScrollOnce: boolean = false
|
|
|
|
|
|
|
|
|
|
|
|
onMounted(() => {
|
|
|
|
onMounted(() => {
|
|
|
|
requestAnimationFrame(setActiveLink)
|
|
|
|
requestAnimationFrame(setActiveLink)
|
|
|
|
window.addEventListener('scroll', onScroll)
|
|
|
|
window.addEventListener('scroll', onScroll)
|
|
|
|
|
|
|
|
container.value.addEventListener('click', onClick)
|
|
|
|
})
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
|
|
onUpdated(() => {
|
|
|
|
onUpdated(() => {
|
|
|
@ -130,13 +132,28 @@ export function useActiveAnchor(
|
|
|
|
|
|
|
|
|
|
|
|
onUnmounted(() => {
|
|
|
|
onUnmounted(() => {
|
|
|
|
window.removeEventListener('scroll', onScroll)
|
|
|
|
window.removeEventListener('scroll', onScroll)
|
|
|
|
|
|
|
|
container.value.removeEventListener('click', onClick)
|
|
|
|
})
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function onClick(e: MouseEvent) {
|
|
|
|
|
|
|
|
if (!isAsideEnabled.value || !(e.target instanceof HTMLAnchorElement)) {
|
|
|
|
|
|
|
|
return
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
activateLink(location.hash)
|
|
|
|
|
|
|
|
ignoreScrollOnce = true
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
function setActiveLink() {
|
|
|
|
function setActiveLink() {
|
|
|
|
if (!isAsideEnabled.value) {
|
|
|
|
if (!isAsideEnabled.value) {
|
|
|
|
return
|
|
|
|
return
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (ignoreScrollOnce) {
|
|
|
|
|
|
|
|
ignoreScrollOnce = false
|
|
|
|
|
|
|
|
return
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
const scrollY = window.scrollY
|
|
|
|
const scrollY = window.scrollY
|
|
|
|
const innerHeight = window.innerHeight
|
|
|
|
const innerHeight = window.innerHeight
|
|
|
|
const offsetHeight = document.body.offsetHeight
|
|
|
|
const offsetHeight = document.body.offsetHeight
|
|
|
|