{"version":3,"sources":["../../../src/client/components/app-router.tsx"],"sourcesContent":["import React, {\n  useEffect,\n  useMemo,\n  startTransition,\n  useInsertionEffect,\n  useDeferredValue,\n} from 'react'\nimport {\n  AppRouterContext,\n  LayoutRouterContext,\n  GlobalLayoutRouterContext,\n} from '../../shared/lib/app-router-context.shared-runtime'\nimport type { CacheNode } from '../../shared/lib/app-router-types'\nimport { ACTION_RESTORE } from './router-reducer/router-reducer-types'\nimport type {\n  AppHistoryState,\n  AppRouterState,\n} from './router-reducer/router-reducer-types'\nimport { createHrefFromUrl } from './router-reducer/create-href-from-url'\nimport {\n  SearchParamsContext,\n  PathnameContext,\n  PathParamsContext,\n  NavigationPromisesContext,\n  type NavigationPromises,\n} from '../../shared/lib/hooks-client-context.shared-runtime'\nimport { dispatchAppRouterAction, useActionQueue } from './use-action-queue'\nimport { setLastCommittedTree } from './router-reducer/reducers/committed-state'\nimport { AppRouterAnnouncer } from './app-router-announcer'\nimport { RedirectBoundary } from './redirect-boundary'\nimport { findHeadInCache } from './router-reducer/reducers/find-head-in-cache'\nimport { unresolvedThenable } from './unresolved-thenable'\nimport { removeBasePath } from '../remove-base-path'\nimport { hasBasePath } from '../has-base-path'\nimport {\n  extractSourcePageFromFlightRouterState,\n  getSelectedParams,\n} from './router-reducer/compute-changed-path'\nimport { useNavFailureHandler } from './nav-failure-handler'\nimport {\n  dispatchTraverseAction,\n  publicAppRouterInstance,\n  type AppRouterActionQueue,\n  type GlobalErrorState,\n} from './app-router-instance'\nimport { getRedirectTypeFromError, getURLFromRedirectError } from './redirect'\nimport { isRedirectError } from './redirect-error'\nimport { pingVisibleLinks } from './links'\nimport RootErrorBoundary from './errors/root-error-boundary'\nimport DefaultGlobalError from './builtin/global-error'\nimport { RootLayoutBoundary } from '../../lib/framework/boundary-components'\nimport type { StaticIndicatorState } from '../dev/hot-reloader/app/hot-reloader-app'\nimport { getAssetTokenQuery } from '../../shared/lib/deployment-id'\n\nconst globalMutable: {\n  pendingMpaPath?: string\n} = {}\n\nfunction HistoryUpdater({\n  appRouterState,\n}: {\n  appRouterState: AppRouterState\n}) {\n  useInsertionEffect(() => {\n    if (process.env.__NEXT_APP_NAV_FAIL_HANDLING) {\n      // clear pending URL as navigation is no longer\n      // in flight\n      window.next.__pendingUrl = undefined\n    }\n\n    const { tree, pushRef, canonicalUrl, renderedSearch } = appRouterState\n\n    const appHistoryState: AppHistoryState = {\n      tree,\n      renderedSearch,\n    }\n\n    // TODO: Use Navigation API if available\n    const historyState = {\n      ...(pushRef.preserveCustomHistoryState ? window.history.state : {}),\n      // Identifier is shortened intentionally.\n      // __NA is used to identify if the history entry can be handled by the app-router.\n      // __N is used to identify if the history entry can be handled by the old router.\n      __NA: true,\n      __PRIVATE_NEXTJS_INTERNALS_TREE: appHistoryState,\n    }\n    if (\n      pushRef.pendingPush &&\n      // Skip pushing an additional history entry if the canonicalUrl is the same as the current url.\n      // This mirrors the browser behavior for normal navigation.\n      createHrefFromUrl(new URL(window.location.href)) !== canonicalUrl\n    ) {\n      // This intentionally mutates React state, pushRef is overwritten to ensure additional push/replace calls do not trigger an additional history entry.\n      pushRef.pendingPush = false\n      window.history.pushState(historyState, '', canonicalUrl)\n    } else {\n      window.history.replaceState(historyState, '', canonicalUrl)\n    }\n\n    setLastCommittedTree(tree)\n  }, [appRouterState])\n\n  useEffect(() => {\n    // The Next-Url and the base tree may affect the result of a prefetch\n    // task. Re-prefetch all visible links with the updated values. In most\n    // cases, this will not result in any new network requests, only if\n    // the prefetch result actually varies on one of these inputs.\n    pingVisibleLinks(appRouterState.nextUrl, appRouterState.tree)\n  }, [appRouterState.nextUrl, appRouterState.tree])\n\n  return null\n}\n\nfunction copyNextJsInternalHistoryState(data: any) {\n  if (data == null) data = {}\n  const currentState = window.history.state\n  const __NA = currentState?.__NA\n  if (__NA) {\n    data.__NA = __NA\n  }\n  const __PRIVATE_NEXTJS_INTERNALS_TREE =\n    currentState?.__PRIVATE_NEXTJS_INTERNALS_TREE\n  if (__PRIVATE_NEXTJS_INTERNALS_TREE) {\n    data.__PRIVATE_NEXTJS_INTERNALS_TREE = __PRIVATE_NEXTJS_INTERNALS_TREE\n  }\n\n  return data\n}\n\nfunction Head({\n  headCacheNode,\n}: {\n  headCacheNode: CacheNode | null\n}): React.ReactNode {\n  // If this segment has a `prefetchHead`, it's the statically prefetched data.\n  // We should use that on initial render instead of `head`. Then we'll switch\n  // to `head` when the dynamic response streams in.\n  const head = headCacheNode !== null ? headCacheNode.head : null\n  const prefetchHead =\n    headCacheNode !== null ? headCacheNode.prefetchHead : null\n\n  // If no prefetch data is available, then we go straight to rendering `head`.\n  const resolvedPrefetchRsc = prefetchHead !== null ? prefetchHead : head\n\n  // We use `useDeferredValue` to handle switching between the prefetched and\n  // final values. The second argument is returned on initial render, then it\n  // re-renders with the first argument.\n  return useDeferredValue(head, resolvedPrefetchRsc)\n}\n\n/**\n * The global router that wraps the application components.\n */\nfunction Router({\n  actionQueue,\n  globalError,\n  webSocket,\n  staticIndicatorState,\n}: {\n  actionQueue: AppRouterActionQueue\n  globalError: GlobalErrorState\n  webSocket: WebSocket | undefined\n  staticIndicatorState: StaticIndicatorState | undefined\n}) {\n  const state = useActionQueue(actionQueue)\n  const { canonicalUrl } = state\n  // Add memoized pathname/query for useSearchParams and usePathname.\n  const { searchParams, pathname } = useMemo(() => {\n    const url = new URL(\n      canonicalUrl,\n      typeof window === 'undefined' ? 'http://n' : window.location.href\n    )\n\n    return {\n      // This is turned into a readonly class in `useSearchParams`\n      searchParams: url.searchParams,\n      pathname: hasBasePath(url.pathname)\n        ? removeBasePath(url.pathname)\n        : url.pathname,\n    }\n  }, [canonicalUrl])\n\n  if (process.env.NODE_ENV !== 'production') {\n    const { cache, tree } = state\n\n    // This hook is in a conditional but that is ok because `process.env.NODE_ENV` never changes\n    // eslint-disable-next-line react-hooks/rules-of-hooks\n    useEffect(() => {\n      // Add `window.nd` for debugging purposes.\n      // This is not meant for use in applications as concurrent rendering will affect the cache/tree/router.\n      // @ts-ignore this is for debugging\n      window.nd = {\n        router: publicAppRouterInstance,\n        cache,\n        tree,\n      }\n    }, [cache, tree])\n  }\n\n  useEffect(() => {\n    const sourcePage = extractSourcePageFromFlightRouterState(state.tree)\n\n    if (sourcePage !== undefined) {\n      window.next.__internal_src_page = sourcePage\n    } else {\n      delete window.next.__internal_src_page\n    }\n  }, [state.tree])\n\n  useEffect(() => {\n    // If the app is restored from bfcache, it's possible that\n    // pushRef.mpaNavigation is true, which would mean that any re-render of this component\n    // would trigger the mpa navigation logic again from the lines below.\n    // This will restore the router to the initial state in the event that the app is restored from bfcache.\n    function handlePageShow(event: PageTransitionEvent) {\n      if (\n        !event.persisted ||\n        !window.history.state?.__PRIVATE_NEXTJS_INTERNALS_TREE\n      ) {\n        return\n      }\n\n      // Clear the pendingMpaPath value so that a subsequent MPA navigation to the same URL can be triggered.\n      // This is necessary because if the browser restored from bfcache, the pendingMpaPath would still be set to the value\n      // of the last MPA navigation.\n      globalMutable.pendingMpaPath = undefined\n\n      dispatchAppRouterAction({\n        type: ACTION_RESTORE,\n        url: new URL(window.location.href),\n        historyState: window.history.state.__PRIVATE_NEXTJS_INTERNALS_TREE,\n      })\n    }\n\n    window.addEventListener('pageshow', handlePageShow)\n\n    return () => {\n      window.removeEventListener('pageshow', handlePageShow)\n    }\n  }, [])\n\n  useEffect(() => {\n    // Ensure that any redirect errors that bubble up outside of the RedirectBoundary\n    // are caught and handled by the router.\n    function handleUnhandledRedirect(\n      event: ErrorEvent | PromiseRejectionEvent\n    ) {\n      const error = 'reason' in event ? event.reason : event.error\n      if (isRedirectError(error)) {\n        event.preventDefault()\n        const url = getURLFromRedirectError(error)\n        const redirectType = getRedirectTypeFromError(error)\n        // TODO: This should access the router methods directly, rather than\n        // go through the public interface.\n        if (redirectType === 'push') {\n          publicAppRouterInstance.push(url, {})\n        } else {\n          publicAppRouterInstance.replace(url, {})\n        }\n      }\n    }\n    window.addEventListener('error', handleUnhandledRedirect)\n    window.addEventListener('unhandledrejection', handleUnhandledRedirect)\n\n    return () => {\n      window.removeEventListener('error', handleUnhandledRedirect)\n      window.removeEventListener('unhandledrejection', handleUnhandledRedirect)\n    }\n  }, [])\n\n  // When mpaNavigation flag is set do a hard navigation to the new url.\n  // Infinitely suspend because we don't actually want to rerender any child\n  // components with the new URL and any entangled state updates shouldn't\n  // commit either (eg: useTransition isPending should stay true until the page\n  // unloads).\n  //\n  // This is a side effect in render. Don't try this at home, kids. It's\n  // probably safe because we know this is a singleton component and it's never\n  // in <Offscreen>. At least I hope so. (It will run twice in dev strict mode,\n  // but that's... fine?)\n  const { pushRef } = state\n  if (pushRef.mpaNavigation) {\n    // if there's a re-render, we don't want to trigger another redirect if one is already in flight to the same URL\n    if (globalMutable.pendingMpaPath !== canonicalUrl) {\n      const location = window.location\n      if (pushRef.pendingPush) {\n        location.assign(canonicalUrl)\n      } else {\n        location.replace(canonicalUrl)\n      }\n\n      globalMutable.pendingMpaPath = canonicalUrl\n    }\n    // TODO-APP: Should we listen to navigateerror here to catch failed\n    // navigations somehow? And should we call window.stop() if a SPA navigation\n    // should interrupt an MPA one?\n    // NOTE: This is intentionally using `throw` instead of `use` because we're\n    // inside an externally mutable condition (pushRef.mpaNavigation), which\n    // violates the rules of hooks.\n    throw unresolvedThenable\n  }\n\n  useEffect(() => {\n    const originalPushState = window.history.pushState.bind(window.history)\n    const originalReplaceState = window.history.replaceState.bind(\n      window.history\n    )\n\n    // Ensure the canonical URL in the Next.js Router is updated when the URL is changed so that `usePathname` and `useSearchParams` hold the pushed values.\n    const applyUrlFromHistoryPushReplace = (\n      url: string | URL | null | undefined\n    ) => {\n      const href = window.location.href\n      const appHistoryState: AppHistoryState | undefined =\n        window.history.state?.__PRIVATE_NEXTJS_INTERNALS_TREE\n\n      startTransition(() => {\n        dispatchAppRouterAction({\n          type: ACTION_RESTORE,\n          url: new URL(url ?? href, href),\n          historyState: appHistoryState,\n        })\n      })\n    }\n\n    /**\n     * Patch pushState to ensure external changes to the history are reflected in the Next.js Router.\n     * Ensures Next.js internal history state is copied to the new history entry.\n     * Ensures usePathname and useSearchParams hold the newly provided url.\n     */\n    window.history.pushState = function pushState(\n      data: any,\n      _unused: string,\n      url?: string | URL | null\n    ): void {\n      // TODO: Warn when Navigation API is available (navigation.navigate() should be used)\n      // Avoid a loop when Next.js internals trigger pushState/replaceState\n      if (data?.__NA || data?._N) {\n        return originalPushState(data, _unused, url)\n      }\n\n      data = copyNextJsInternalHistoryState(data)\n\n      if (url) {\n        applyUrlFromHistoryPushReplace(url)\n      }\n\n      return originalPushState(data, _unused, url)\n    }\n\n    /**\n     * Patch replaceState to ensure external changes to the history are reflected in the Next.js Router.\n     * Ensures Next.js internal history state is copied to the new history entry.\n     * Ensures usePathname and useSearchParams hold the newly provided url.\n     */\n    window.history.replaceState = function replaceState(\n      data: any,\n      _unused: string,\n      url?: string | URL | null\n    ): void {\n      // TODO: Warn when Navigation API is available (navigation.navigate() should be used)\n      // Avoid a loop when Next.js internals trigger pushState/replaceState\n      if (data?.__NA || data?._N) {\n        return originalReplaceState(data, _unused, url)\n      }\n      data = copyNextJsInternalHistoryState(data)\n\n      if (url) {\n        applyUrlFromHistoryPushReplace(url)\n      }\n      return originalReplaceState(data, _unused, url)\n    }\n\n    /**\n     * Handle popstate event, this is used to handle back/forward in the browser.\n     * By default dispatches ACTION_RESTORE, however if the history entry was not pushed/replaced by app-router it will reload the page.\n     * That case can happen when the old router injected the history entry.\n     */\n    const onPopState = (event: PopStateEvent) => {\n      if (!event.state) {\n        // TODO-APP: this case only happens when pushState/replaceState was called outside of Next.js. It should probably reload the page in this case.\n        return\n      }\n\n      // This case happens when the history entry was pushed by the `pages` router.\n      if (!event.state.__NA) {\n        window.location.reload()\n        return\n      }\n\n      // TODO-APP: Ideally the back button should not use startTransition as it should apply the updates synchronously\n      // Without startTransition works if the cache is there for this path\n      startTransition(() => {\n        dispatchTraverseAction(\n          window.location.href,\n          event.state.__PRIVATE_NEXTJS_INTERNALS_TREE\n        )\n      })\n    }\n\n    // Register popstate event to call onPopstate.\n    window.addEventListener('popstate', onPopState)\n    return () => {\n      window.history.pushState = originalPushState\n      window.history.replaceState = originalReplaceState\n      window.removeEventListener('popstate', onPopState)\n    }\n  }, [])\n\n  const { cache, tree, nextUrl, focusAndScrollRef, previousNextUrl } = state\n\n  const matchingHead = useMemo(() => {\n    return findHeadInCache(cache, tree[1])\n  }, [cache, tree])\n\n  // Add memoized pathParams for useParams.\n  const pathParams = useMemo(() => {\n    return getSelectedParams(tree)\n  }, [tree])\n\n  // Create instrumented promises for navigation hooks (dev-only)\n  // These are specially instrumented promises to show in the Suspense DevTools\n  // Promises are cached outside of render to survive suspense retries.\n  let instrumentedNavigationPromises: NavigationPromises | null = null\n  if (process.env.NODE_ENV !== 'production') {\n    const { createRootNavigationPromises } =\n      require('./navigation-devtools') as typeof import('./navigation-devtools')\n\n    instrumentedNavigationPromises = createRootNavigationPromises(\n      tree,\n      pathname,\n      searchParams,\n      pathParams\n    )\n  }\n\n  const layoutRouterContext = useMemo(() => {\n    return {\n      parentTree: tree,\n      parentCacheNode: cache,\n      parentSegmentPath: null,\n      parentParams: {},\n      parentLoadingData: null,\n      // This is the <Activity> \"name\" that shows up in the Suspense DevTools.\n      // It represents the root of the app.\n      debugNameContext: '/',\n      // Root node always has `url`\n      // Provided in AppTreeContext to ensure it can be overwritten in layout-router\n      url: canonicalUrl,\n      // Root segment is always active\n      isActive: true,\n    }\n  }, [tree, cache, canonicalUrl])\n\n  const globalLayoutRouterContext = useMemo(() => {\n    return {\n      tree,\n      focusAndScrollRef,\n      nextUrl,\n      previousNextUrl,\n    }\n  }, [tree, focusAndScrollRef, nextUrl, previousNextUrl])\n\n  let head\n  if (matchingHead !== null) {\n    // The head is wrapped in an extra component so we can use\n    // `useDeferredValue` to swap between the prefetched and final versions of\n    // the head. (This is what LayoutRouter does for segment data, too.)\n    //\n    // The `key` is used to remount the component whenever the head moves to\n    // a different segment.\n    const [headCacheNode, headKey, headKeyWithoutSearchParams] = matchingHead\n\n    head = (\n      <Head\n        key={\n          // Necessary for PPR: omit search params from the key to match prerendered keys\n          typeof window === 'undefined' ? headKeyWithoutSearchParams : headKey\n        }\n        headCacheNode={headCacheNode}\n      />\n    )\n  } else {\n    head = null\n  }\n\n  let content = (\n    <RedirectBoundary>\n      {head}\n      {/* RootLayoutBoundary enables detection of Suspense boundaries around the root layout.\n          When users wrap their layout in <Suspense>, this creates the component stack pattern\n          \"Suspense -> RootLayoutBoundary\" which dynamic-rendering.ts uses to allow dynamic rendering. */}\n      <RootLayoutBoundary>{cache.rsc}</RootLayoutBoundary>\n      <AppRouterAnnouncer tree={tree} />\n    </RedirectBoundary>\n  )\n\n  if (process.env.__NEXT_DEV_SERVER) {\n    // In development, we apply few error boundaries and hot-reloader:\n    // - DevRootHTTPAccessFallbackBoundary: avoid using navigation API like notFound() in root layout\n    // - HotReloader:\n    //  - hot-reload the app when the code changes\n    //  - render dev overlay\n    //  - catch runtime errors and display global-error when necessary\n    if (typeof window !== 'undefined') {\n      const { DevRootHTTPAccessFallbackBoundary } =\n        require('./dev-root-http-access-fallback-boundary') as typeof import('./dev-root-http-access-fallback-boundary')\n      content = (\n        <DevRootHTTPAccessFallbackBoundary>\n          {content}\n        </DevRootHTTPAccessFallbackBoundary>\n      )\n    }\n    const HotReloader: typeof import('../dev/hot-reloader/app/hot-reloader-app').default =\n      (\n        require('../dev/hot-reloader/app/hot-reloader-app') as typeof import('../dev/hot-reloader/app/hot-reloader-app')\n      ).default\n\n    content = (\n      <HotReloader\n        globalError={globalError}\n        webSocket={webSocket}\n        staticIndicatorState={staticIndicatorState}\n      >\n        {content}\n      </HotReloader>\n    )\n  } else {\n    content = (\n      <RootErrorBoundary\n        errorComponent={globalError[0]}\n        errorStyles={globalError[1]}\n      >\n        {content}\n      </RootErrorBoundary>\n    )\n  }\n\n  return (\n    <>\n      <HistoryUpdater appRouterState={state} />\n      {process.env.TURBOPACK ? null : <RuntimeStylesForWebpack />}\n      <NavigationPromisesContext.Provider\n        value={instrumentedNavigationPromises}\n      >\n        <PathParamsContext.Provider value={pathParams}>\n          <PathnameContext.Provider value={pathname}>\n            <SearchParamsContext.Provider value={searchParams}>\n              <GlobalLayoutRouterContext.Provider\n                value={globalLayoutRouterContext}\n              >\n                {/* TODO: We should be able to remove this context. useRouter\n                    should import from app-router-instance instead. It's only\n                    necessary because useRouter is shared between Pages and\n                    App Router. We should fork that module, then remove this\n                    context provider. */}\n                <AppRouterContext.Provider value={publicAppRouterInstance}>\n                  <LayoutRouterContext.Provider value={layoutRouterContext}>\n                    {content}\n                  </LayoutRouterContext.Provider>\n                </AppRouterContext.Provider>\n              </GlobalLayoutRouterContext.Provider>\n            </SearchParamsContext.Provider>\n          </PathnameContext.Provider>\n        </PathParamsContext.Provider>\n      </NavigationPromisesContext.Provider>\n    </>\n  )\n}\n\nexport default function AppRouter({\n  actionQueue,\n  globalErrorState,\n  webSocket,\n  staticIndicatorState,\n}: {\n  actionQueue: AppRouterActionQueue\n  globalErrorState: GlobalErrorState\n  webSocket?: WebSocket\n  staticIndicatorState?: StaticIndicatorState\n}) {\n  useNavFailureHandler()\n\n  const router = (\n    <Router\n      actionQueue={actionQueue}\n      globalError={globalErrorState}\n      webSocket={webSocket}\n      staticIndicatorState={staticIndicatorState}\n    />\n  )\n\n  // At the very top level, use the default GlobalError component as the final fallback.\n  // When the app router itself fails, which means the framework itself fails, we show the default error.\n  return (\n    <RootErrorBoundary errorComponent={DefaultGlobalError}>\n      {router}\n    </RootErrorBoundary>\n  )\n}\n\nlet runtimeStyles: Set<string> | undefined\nlet runtimeStyleChanged: Set<() => void> | undefined\nif (!process.env.TURBOPACK && typeof window !== 'undefined') {\n  runtimeStyles = new Set<string>()\n  runtimeStyleChanged = new Set<() => void>()\n\n  globalThis._N_E_STYLE_LOAD = function (href: string) {\n    if (!runtimeStyles || !runtimeStyleChanged) return Promise.resolve()\n    let len = runtimeStyles.size\n    runtimeStyles.add(href)\n    if (runtimeStyles.size !== len) {\n      runtimeStyleChanged.forEach((cb) => cb())\n    }\n    // TODO figure out how to get a promise here\n    // But maybe it's not necessary as react would block rendering until it's loaded\n    return Promise.resolve()\n  }\n}\n\nfunction RuntimeStylesForWebpack() {\n  const [, forceUpdate] = React.useState(0)\n  const renderedStylesSize = runtimeStyles?.size ?? 0\n  useEffect(() => {\n    if (!runtimeStyles || !runtimeStyleChanged) return\n    const changed = () => forceUpdate((c) => c + 1)\n    runtimeStyleChanged.add(changed)\n    if (renderedStylesSize !== runtimeStyles.size) {\n      changed()\n    }\n    return () => {\n      runtimeStyleChanged.delete(changed)\n    }\n  }, [renderedStylesSize, forceUpdate])\n\n  const query = getAssetTokenQuery()\n  return [...(runtimeStyles || [])].map((href, i) => (\n    <link\n      key={i}\n      rel=\"stylesheet\"\n      href={`${href}${query}`}\n      // @ts-ignore\n      precedence=\"next\"\n      // TODO figure out crossOrigin and nonce\n      // crossOrigin={TODO}\n      // nonce={TODO}\n    />\n  ))\n}\n"],"names":["AppRouter","globalMutable","HistoryUpdater","appRouterState","useInsertionEffect","process","env","__NEXT_APP_NAV_FAIL_HANDLING","window","next","__pendingUrl","undefined","tree","pushRef","canonicalUrl","renderedSearch","appHistoryState","historyState","preserveCustomHistoryState","history","state","__NA","__PRIVATE_NEXTJS_INTERNALS_TREE","pendingPush","createHrefFromUrl","URL","location","href","pushState","replaceState","setLastCommittedTree","useEffect","pingVisibleLinks","nextUrl","copyNextJsInternalHistoryState","data","currentState","Head","headCacheNode","head","prefetchHead","resolvedPrefetchRsc","useDeferredValue","Router","actionQueue","globalError","webSocket","staticIndicatorState","useActionQueue","searchParams","pathname","useMemo","url","hasBasePath","removeBasePath","NODE_ENV","cache","nd","router","publicAppRouterInstance","sourcePage","extractSourcePageFromFlightRouterState","__internal_src_page","handlePageShow","event","persisted","pendingMpaPath","dispatchAppRouterAction","type","ACTION_RESTORE","addEventListener","removeEventListener","handleUnhandledRedirect","error","reason","isRedirectError","preventDefault","getURLFromRedirectError","redirectType","getRedirectTypeFromError","push","replace","mpaNavigation","assign","unresolvedThenable","originalPushState","bind","originalReplaceState","applyUrlFromHistoryPushReplace","startTransition","_unused","_N","onPopState","reload","dispatchTraverseAction","focusAndScrollRef","previousNextUrl","matchingHead","findHeadInCache","pathParams","getSelectedParams","instrumentedNavigationPromises","createRootNavigationPromises","require","layoutRouterContext","parentTree","parentCacheNode","parentSegmentPath","parentParams","parentLoadingData","debugNameContext","isActive","globalLayoutRouterContext","headKey","headKeyWithoutSearchParams","content","RedirectBoundary","RootLayoutBoundary","rsc","AppRouterAnnouncer","__NEXT_DEV_SERVER","DevRootHTTPAccessFallbackBoundary","HotReloader","default","RootErrorBoundary","errorComponent","errorStyles","TURBOPACK","RuntimeStylesForWebpack","NavigationPromisesContext","Provider","value","PathParamsContext","PathnameContext","SearchParamsContext","GlobalLayoutRouterContext","AppRouterContext","LayoutRouterContext","globalErrorState","useNavFailureHandler","DefaultGlobalError","runtimeStyles","runtimeStyleChanged","Set","globalThis","_N_E_STYLE_LOAD","Promise","resolve","len","size","add","forEach","cb","forceUpdate","React","useState","renderedStylesSize","changed","c","delete","query","getAssetTokenQuery","map","i","link","rel","precedence"],"mappings":"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","ignoreList":[0]}