mirror of https://github.com/mashirozx/sakura.git
28 lines
716 B
TypeScript
28 lines
716 B
TypeScript
import { onDeactivated, watch, onActivated } from 'vue'
|
|
import { useWindowScroll } from '@vueuse/core'
|
|
import { useState } from '@/hooks'
|
|
|
|
export default function () {
|
|
const { scrollTop, scrollLeft } = (function () {
|
|
const { x, y } = useWindowScroll()
|
|
return { scrollTop: y, scrollLeft: x }
|
|
})()
|
|
|
|
const [scrollTopCache, setScrollTopCache] = useState(0)
|
|
const [isScrollTopSet, setIsScrollTopSet] = useState(false)
|
|
|
|
watch(scrollTop, (value) => {
|
|
if (!isScrollTopSet.value) return
|
|
setScrollTopCache(value)
|
|
})
|
|
|
|
onActivated(() => {
|
|
window.scrollTo(scrollLeft.value ?? 0, scrollTopCache.value)
|
|
setIsScrollTopSet(true)
|
|
})
|
|
|
|
onDeactivated(() => {
|
|
setIsScrollTopSet(false)
|
|
})
|
|
}
|