import nprogress, { type NProgress } from 'nprogress'
import type { EnhanceAppContext } from 'vitepress'

export function loadProgress(router: EnhanceAppContext['router']): NProgress {
  if (typeof window === 'undefined') return

  setTimeout(() => {
    nprogress.configure({ showSpinner: false })

    const cacheBeforeRouteChange = router.onBeforeRouteChange
    const cacheAfterRouteChange = router.onAfterRouteChanged
    router.onBeforeRouteChange = (to) => {
      nprogress.start()
      cacheBeforeRouteChange?.(to)
    }
    router.onAfterRouteChanged = (to) => {
      nprogress.done()
      cacheAfterRouteChange?.(to)
    }
  })

  return nprogress
}