{"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","shouldSkipSuspenseFallback","ResolvedSuspenseBoundary","Suspense","ResolvedCatchBoundary","ResolvedNotFoundBoundary","ShellComponent","shellComponent","Provider","value","fallback","getResetKey","loadedAt","error","Error","notFoundError","process","env","NODE_ENV","console","warn","_$mergeProps","Switch","MatchInner","_$memo","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","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 shouldSkipSuspenseFallback =\n          (isServer ?? router.isServer)\n            ? resolvedNoSsr\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                  // Data-only SSR renders the inner fallback on the server, so\n                  // avoid adding an extra suspense fallback on the client.\n                  shouldSkipSuspenseFallback ? 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 Promise.resolve()\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 Promise.resolve()\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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"}