mirror of
https://github.com/fmhy/edit.git
synced 2026-02-18 09:11:33 +11:00
25 lines
1.3 KiB
TypeScript
25 lines
1.3 KiB
TypeScript
import nprogress, { type NProgress } from 'nprogress' // Import NProgress library and its type definition
|
|
import type { EnhanceAppContext } from 'vitepress' // Import EnhanceAppContext type definition from VitePress
|
|
|
|
export function loadProgress(router: EnhanceAppContext['router']): NProgress { // Export a function called loadProgress that takes in a router object as an argument
|
|
if (typeof window === 'undefined') return // Return early if the window object is not defined
|
|
|
|
// Initialize NProgress with some custom configurations
|
|
setTimeout(() => {
|
|
nprogress.configure({ showSpinner: false })
|
|
|
|
// Set up event listeners for the router's onBeforeRouteChange and onAfterRouteChanged events
|
|
const cacheBeforeRouteChange = router.onBeforeRouteChange
|
|
const cacheAfterRouteChange = router.onAfterRouteChanged
|
|
router.onBeforeRouteChange = (to) => {
|
|
nprogress.start() // Start the NProgress bar when the user navigates to a new page
|
|
cacheBeforeRouteChange?.(to) // Call the original onBeforeRouteChange event handler
|
|
}
|
|
router.onAfterRouteChanged = (to) => {
|
|
nprogress.done() // Stop the NProgress bar after the route has changed
|
|
cacheAfterRouteChange?.(to) // Call the original onAfterRouteChanged event handler
|
|
}
|
|
})
|
|
|
|
return nprogress // Return the NProgress object
|
|
}
|