{"version":3,"file":"Match.cjs","names":["Solid","createControlledPromise","getLocationChangeInfo","invariant","isNotFound","isRedirect","rootRouteId","isServer","Dynamic","CatchBoundary","ErrorComponent","useRouter","CatchNotFound","getNotFound","nearestMatchContext","SafeFragment","renderRouteNotFound","ScrollRestoration","AnyRoute","RootRouteOptions","Match","props","matchId","router","match","createMemo","id","undefined","stores","matchStores","get","rawMatchState","currentMatch","routeId","parentRouteId","routesById","parentRoute","ssr","_displayPending","hasPendingMatch","currentRouteId","Boolean","pendingRouteIds","nearestMatch","hasPending","_$createComponent","Show","when","children","currentMatchState","route","resolvePendingComponent","options","pendingComponent","defaultPendingComponent","routeErrorComponent","errorComponent","defaultErrorComponent","routeOnCatch","onCatch","defaultOnCatch","routeNotFoundComponent","isRoot","notFoundComponent","notFoundRoute","component","resolvedNoSsr","ResolvedSuspenseBoundary","Suspense","ResolvedCatchBoundary","ResolvedNotFoundBoundary","ShellComponent","shellComponent","Provider","value","fallback","_$memo","getResetKey","loadedAt","error","Error","notFoundError","process","env","NODE_ENV","console","warn","_$mergeProps","Switch","MatchInner","OnRendered","scrollRestoration","location","resolvedLocation","state","__TSR_key","createEffect","on","emit","type","useContext","remountFn","remountDeps","defaultRemountDeps","loaderDeps","params","_strictParams","search","_strictSearch","key","JSON","stringify","status","_forcePending","componentKey","out","Comp","defaultComponent","Outlet","getLoadPromise","fallbackMatch","_nonReactive","loadPromise","Promise","getMatch","keyedOut","keyed","_key","_","displayPendingResult","createResource","displayPendingPromise","minPendingResult","minPendingPromise","pendingMinMs","defaultPendingMinMs","routerMatch","setTimeout","resolve","loaderResult","r","FallbackComponent","_routeId","RouteErrorComponent","info","componentStack","nearestParentMatch","parentMatch","parentGlobalNotFound","globalNotFound","childMatchId","childMatchIdByRouteId","childMatchStatus","shouldShowNotFound","childRouteKey","cid","resolvedRoute","_routeKey"],"sources":["../../src/Match.tsx"],"sourcesContent":["import * as Solid from 'solid-js'\nimport {\n  createControlledPromise,\n  getLocationChangeInfo,\n  invariant,\n  isNotFound,\n  isRedirect,\n  rootRouteId,\n} from '@tanstack/router-core'\nimport { isServer } from '@tanstack/router-core/isServer'\nimport { Dynamic } from 'solid-js/web'\nimport { CatchBoundary, ErrorComponent } from './CatchBoundary'\nimport { useRouter } from './useRouter'\nimport { CatchNotFound, getNotFound } from './not-found'\nimport { nearestMatchContext } from './matchContext'\nimport { SafeFragment } from './SafeFragment'\nimport { renderRouteNotFound } from './renderRouteNotFound'\nimport { ScrollRestoration } from './scroll-restoration'\nimport type { AnyRoute, RootRouteOptions } from '@tanstack/router-core'\n\nexport const Match = (props: { matchId: string }) => {\n  const router = useRouter()\n\n  const match = Solid.createMemo(() => {\n    const id = props.matchId\n    if (!id) return undefined\n    return router.stores.matchStores.get(id)?.get()\n  })\n\n  const rawMatchState = Solid.createMemo(() => {\n    const currentMatch = match()\n    if (!currentMatch) {\n      return null\n    }\n\n    const routeId = currentMatch.routeId as string\n    const parentRouteId = (router.routesById[routeId] as AnyRoute)?.parentRoute\n      ?.id\n\n    return {\n      matchId: currentMatch.id,\n      routeId,\n      ssr: currentMatch.ssr,\n      _displayPending: currentMatch._displayPending,\n      parentRouteId: parentRouteId as string | undefined,\n    }\n  })\n\n  const hasPendingMatch = Solid.createMemo(() => {\n    const currentRouteId = rawMatchState()?.routeId\n    return currentRouteId\n      ? Boolean(router.stores.pendingRouteIds.get()[currentRouteId])\n      : false\n  })\n  const nearestMatch = {\n    matchId: () => rawMatchState()?.matchId,\n    routeId: () => rawMatchState()?.routeId,\n    match,\n    hasPending: hasPendingMatch,\n  }\n\n  return (\n    <Solid.Show when={rawMatchState()}>\n      {(currentMatchState) => {\n        const route: () => AnyRoute = () =>\n          router.routesById[currentMatchState().routeId]\n\n        const resolvePendingComponent = () =>\n          route().options.pendingComponent ??\n          router.options.defaultPendingComponent\n\n        const routeErrorComponent = () =>\n          route().options.errorComponent ?? router.options.defaultErrorComponent\n\n        const routeOnCatch = () =>\n          route().options.onCatch ?? router.options.defaultOnCatch\n\n        const routeNotFoundComponent = () =>\n          route().isRoot\n            ? // If it's the root route, use the globalNotFound option, with fallback to the notFoundRoute's component\n              (route().options.notFoundComponent ??\n              router.options.notFoundRoute?.options.component)\n            : route().options.notFoundComponent\n\n        const resolvedNoSsr =\n          currentMatchState().ssr === false ||\n          currentMatchState().ssr === 'data-only'\n\n        const ResolvedSuspenseBoundary = () => Solid.Suspense\n\n        const ResolvedCatchBoundary = () =>\n          routeErrorComponent() ? CatchBoundary : SafeFragment\n\n        const ResolvedNotFoundBoundary = () =>\n          routeNotFoundComponent() ? CatchNotFound : SafeFragment\n\n        const ShellComponent = route().isRoot\n          ? ((route().options as RootRouteOptions).shellComponent ??\n            SafeFragment)\n          : SafeFragment\n\n        return (\n          <ShellComponent>\n            <nearestMatchContext.Provider value={nearestMatch}>\n              <Dynamic\n                component={ResolvedSuspenseBoundary()}\n                fallback={\n                  // Don't show fallback on server when using no-ssr mode to avoid hydration mismatch\n                  (isServer ?? router.isServer) && resolvedNoSsr ? undefined : (\n                    <Dynamic component={resolvePendingComponent()} />\n                  )\n                }\n              >\n                <Dynamic\n                  component={ResolvedCatchBoundary()}\n                  getResetKey={() => router.stores.loadedAt.get()}\n                  errorComponent={routeErrorComponent() || ErrorComponent}\n                  onCatch={(error: Error) => {\n                    // Forward not found errors (we don't want to show the error component for these)\n                    const notFoundError = getNotFound(error)\n                    if (notFoundError) {\n                      notFoundError.routeId ??= currentMatchState()\n                        .routeId as any\n                      throw notFoundError\n                    }\n                    if (process.env.NODE_ENV !== 'production') {\n                      console.warn(\n                        `Warning: Error in route match: ${currentMatchState().routeId}`,\n                      )\n                    }\n                    routeOnCatch()?.(error)\n                  }}\n                >\n                  <Dynamic\n                    component={ResolvedNotFoundBoundary()}\n                    fallback={(error: any) => {\n                      const notFoundError = getNotFound(error) ?? error\n\n                      notFoundError.routeId ??= currentMatchState()\n                        .routeId as any\n\n                      // If the current not found handler doesn't exist or it has a\n                      // route ID which doesn't match the current route, rethrow the error\n                      if (\n                        !routeNotFoundComponent() ||\n                        (notFoundError.routeId &&\n                          notFoundError.routeId !==\n                            currentMatchState().routeId) ||\n                        (!notFoundError.routeId && !route().isRoot)\n                      )\n                        throw notFoundError\n\n                      return (\n                        <Dynamic\n                          component={routeNotFoundComponent()}\n                          {...notFoundError}\n                        />\n                      )\n                    }}\n                  >\n                    <Solid.Switch>\n                      <Solid.Match when={resolvedNoSsr}>\n                        <Solid.Show\n                          when={!(isServer ?? router.isServer)}\n                          fallback={\n                            <Dynamic component={resolvePendingComponent()} />\n                          }\n                        >\n                          <MatchInner />\n                        </Solid.Show>\n                      </Solid.Match>\n                      <Solid.Match when={!resolvedNoSsr}>\n                        <MatchInner />\n                      </Solid.Match>\n                    </Solid.Switch>\n                  </Dynamic>\n                </Dynamic>\n              </Dynamic>\n            </nearestMatchContext.Provider>\n\n            {currentMatchState().parentRouteId === rootRouteId ? (\n              <>\n                <OnRendered />\n                {router.options.scrollRestoration &&\n                (isServer ?? router.isServer) ? (\n                  <ScrollRestoration />\n                ) : null}\n              </>\n            ) : null}\n          </ShellComponent>\n        )\n      }}\n    </Solid.Show>\n  )\n}\n\n// On Rendered can't happen above the root layout because it needs to run\n// after the app has committed below the root layout. Keeping it here lets us\n// fire onRendered even after a hydration mismatch above the root layout\n// (like bad head/link tags, which is common).\nfunction OnRendered() {\n  const router = useRouter()\n\n  const location = Solid.createMemo(\n    () => router.stores.resolvedLocation.get()?.state.__TSR_key,\n  )\n  Solid.createEffect(\n    Solid.on([location], () => {\n      router.emit({\n        type: 'onRendered',\n        ...getLocationChangeInfo(\n          router.stores.location.get(),\n          router.stores.resolvedLocation.get(),\n        ),\n      })\n    }),\n  )\n  return null\n}\n\nexport const MatchInner = (): any => {\n  const router = useRouter()\n  const match = Solid.useContext(nearestMatchContext).match\n\n  const rawMatchState = Solid.createMemo(() => {\n    const currentMatch = match()\n    if (!currentMatch) {\n      return null\n    }\n\n    const routeId = currentMatch.routeId as string\n\n    const remountFn =\n      (router.routesById[routeId] as AnyRoute).options.remountDeps ??\n      router.options.defaultRemountDeps\n    const remountDeps = remountFn?.({\n      routeId,\n      loaderDeps: currentMatch.loaderDeps,\n      params: currentMatch._strictParams,\n      search: currentMatch._strictSearch,\n    })\n    const key = remountDeps ? JSON.stringify(remountDeps) : undefined\n\n    return {\n      key,\n      routeId,\n      match: {\n        id: currentMatch.id,\n        status: currentMatch.status,\n        error: currentMatch.error,\n        _forcePending: currentMatch._forcePending ?? false,\n        _displayPending: currentMatch._displayPending ?? false,\n      },\n    }\n  })\n\n  return (\n    <Solid.Show when={rawMatchState()}>\n      {(currentMatchState) => {\n        const route = () => router.routesById[currentMatchState().routeId]!\n\n        const currentMatch = () => currentMatchState().match\n\n        const componentKey = () =>\n          currentMatchState().key ?? currentMatchState().match.id\n\n        const out = () => {\n          const Comp =\n            route().options.component ?? router.options.defaultComponent\n          if (Comp) {\n            return <Comp />\n          }\n          return <Outlet />\n        }\n\n        const getLoadPromise = (\n          matchId: string,\n          fallbackMatch:\n            | {\n                _nonReactive: {\n                  loadPromise?: Promise<void>\n                }\n              }\n            | undefined,\n        ) => {\n          return (\n            router.getMatch(matchId)?._nonReactive.loadPromise ??\n            fallbackMatch?._nonReactive.loadPromise\n          )\n        }\n\n        const keyedOut = () => (\n          <Solid.Show when={componentKey()} keyed>\n            {(_key) => out()}\n          </Solid.Show>\n        )\n\n        return (\n          <Solid.Switch>\n            <Solid.Match when={currentMatch()._displayPending}>\n              {(_) => {\n                const [displayPendingResult] = Solid.createResource(\n                  () =>\n                    router.getMatch(currentMatch().id)?._nonReactive\n                      .displayPendingPromise,\n                )\n\n                return <>{displayPendingResult()}</>\n              }}\n            </Solid.Match>\n            <Solid.Match when={currentMatch()._forcePending}>\n              {(_) => {\n                const [minPendingResult] = Solid.createResource(\n                  () =>\n                    router.getMatch(currentMatch().id)?._nonReactive\n                      .minPendingPromise,\n                )\n\n                return <>{minPendingResult()}</>\n              }}\n            </Solid.Match>\n            <Solid.Match when={currentMatch().status === 'pending'}>\n              {(_) => {\n                const pendingMinMs =\n                  route().options.pendingMinMs ??\n                  router.options.defaultPendingMinMs\n\n                if (pendingMinMs) {\n                  const routerMatch = router.getMatch(currentMatch().id)\n                  if (\n                    routerMatch &&\n                    !routerMatch._nonReactive.minPendingPromise\n                  ) {\n                    // Create a promise that will resolve after the minPendingMs\n                    if (!(isServer ?? router.isServer)) {\n                      const minPendingPromise = createControlledPromise<void>()\n\n                      routerMatch._nonReactive.minPendingPromise =\n                        minPendingPromise\n\n                      setTimeout(() => {\n                        minPendingPromise.resolve()\n                        // We've handled the minPendingPromise, so we can delete it\n                        routerMatch._nonReactive.minPendingPromise = undefined\n                      }, pendingMinMs)\n                    }\n                  }\n                }\n\n                const [loaderResult] = Solid.createResource(async () => {\n                  await new Promise((r) => setTimeout(r, 0))\n                  return router.getMatch(currentMatch().id)?._nonReactive\n                    .loadPromise\n                })\n\n                const FallbackComponent =\n                  route().options.pendingComponent ??\n                  router.options.defaultPendingComponent\n\n                return (\n                  <>\n                    {FallbackComponent && pendingMinMs > 0 ? (\n                      <Dynamic component={FallbackComponent} />\n                    ) : null}\n                    {loaderResult()}\n                  </>\n                )\n              }}\n            </Solid.Match>\n            <Solid.Match when={currentMatch().status === 'notFound'}>\n              {(_) => {\n                if (!isNotFound(currentMatch().error)) {\n                  if (process.env.NODE_ENV !== 'production') {\n                    throw new Error(\n                      'Invariant failed: Expected a notFound error',\n                    )\n                  }\n\n                  invariant()\n                }\n\n                // Use Show with keyed to ensure re-render when routeId changes\n                return (\n                  <Solid.Show when={currentMatchState().routeId} keyed>\n                    {(_routeId) =>\n                      renderRouteNotFound(router, route(), currentMatch().error)\n                    }\n                  </Solid.Show>\n                )\n              }}\n            </Solid.Match>\n            <Solid.Match when={currentMatch().status === 'redirected'}>\n              {(_) => {\n                const matchId = currentMatch().id\n                const routerMatch = router.getMatch(matchId)\n\n                if (!isRedirect(currentMatch().error)) {\n                  if (process.env.NODE_ENV !== 'production') {\n                    throw new Error(\n                      'Invariant failed: Expected a redirect error',\n                    )\n                  }\n\n                  invariant()\n                }\n\n                const [loaderResult] = Solid.createResource(async () => {\n                  await new Promise((r) => setTimeout(r, 0))\n                  return getLoadPromise(matchId, routerMatch)\n                })\n\n                return <>{loaderResult()}</>\n              }}\n            </Solid.Match>\n            <Solid.Match when={currentMatch().status === 'error'}>\n              {(_) => {\n                if (isServer ?? router.isServer) {\n                  const RouteErrorComponent =\n                    (route().options.errorComponent ??\n                      router.options.defaultErrorComponent) ||\n                    ErrorComponent\n\n                  return (\n                    <RouteErrorComponent\n                      error={currentMatch().error}\n                      info={{\n                        componentStack: '',\n                      }}\n                    />\n                  )\n                }\n\n                throw currentMatch().error\n              }}\n            </Solid.Match>\n            <Solid.Match when={currentMatch().status === 'success'}>\n              {keyedOut()}\n            </Solid.Match>\n          </Solid.Switch>\n        )\n      }}\n    </Solid.Show>\n  )\n}\n\nexport const Outlet = () => {\n  const router = useRouter()\n  const nearestParentMatch = Solid.useContext(nearestMatchContext)\n  const parentMatch = nearestParentMatch.match\n  const routeId = nearestParentMatch.routeId\n  const route = Solid.createMemo(() =>\n    routeId() ? router.routesById[routeId()!] : undefined,\n  )\n\n  const parentGlobalNotFound = Solid.createMemo(\n    () => parentMatch()?.globalNotFound ?? false,\n  )\n\n  const childMatchId = Solid.createMemo(() => {\n    const currentRouteId = routeId()\n    return currentRouteId\n      ? router.stores.childMatchIdByRouteId.get()[currentRouteId]\n      : undefined\n  })\n\n  const childMatchStatus = Solid.createMemo(() => {\n    const id = childMatchId()\n    if (!id) return undefined\n    return router.stores.matchStores.get(id)?.get().status\n  })\n\n  const shouldShowNotFound = () =>\n    childMatchStatus() !== 'redirected' && parentGlobalNotFound()\n\n  const childRouteKey = Solid.createMemo(() => {\n    if (shouldShowNotFound()) return undefined\n    const cid = childMatchId()\n    if (!cid) return undefined\n    return router.stores.matchStores.get(cid)?.routeId ?? cid\n  })\n\n  return (\n    <Solid.Show\n      when={childRouteKey()}\n      keyed\n      fallback={\n        <Solid.Show when={shouldShowNotFound() && route()}>\n          {(resolvedRoute) =>\n            renderRouteNotFound(router, resolvedRoute(), undefined)\n          }\n        </Solid.Show>\n      }\n    >\n      {(_routeKey: string) => {\n        return (\n          <Solid.Show\n            when={routeId() === rootRouteId}\n            fallback={<Match matchId={childMatchId()!} />}\n          >\n            <Solid.Suspense\n              fallback={\n                <Dynamic component={router.options.defaultPendingComponent} />\n              }\n            >\n              <Match matchId={childMatchId()!} />\n            </Solid.Suspense>\n          </Solid.Show>\n        )\n      }}\n    </Solid.Show>\n  )\n}\n"],"mappings":"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"}