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;
}