@tanstack/solid-router
Version:
Modern and scalable routing for Solid applications
1 lines • 62.5 kB
Source Map (JSON)
{"version":3,"file":"Match.cjs","names":["<ScrollRestoration />","<Solid.Show when={matchState()}>\n {(currentMatchState) => {\n const route = router.routesById[props.routeId] as AnyRoute\n const routeOptions = () => {\n // Lazy route options become observable with the next publication.\n currentMatchState()\n return route.options\n }\n const resolvePendingComponent = Solid.createMemo(\n () =>\n routeOptions().pendingComponent ??\n router.options.defaultPendingComponent,\n )\n const routeErrorComponent = Solid.createMemo(\n () =>\n routeOptions().errorComponent ??\n router.options.defaultErrorComponent,\n )\n const routeNotFoundComponent = Solid.createMemo(() =>\n route.isRoot\n ? (routeOptions().notFoundComponent ??\n router.options.notFoundRoute?.options.component ??\n router.options.defaultNotFoundComponent)\n : (routeOptions().notFoundComponent ??\n router.options.defaultNotFoundComponent),\n )\n const resolvedNoSsr = Solid.createMemo(\n () =>\n currentMatchState().ssr === false ||\n currentMatchState().ssr === 'data-only',\n )\n const ResolvedLoadingBoundary = Solid.createMemo(() =>\n resolvedNoSsr() ? SafeFragment : Solid.Loading,\n )\n const shouldSkipLoadingFallback = Solid.createMemo(() =>\n (isServer ?? router.isServer)\n ? resolvedNoSsr()\n : currentMatchState().ssr === 'data-only',\n )\n const ResolvedNotFoundBoundary = Solid.createMemo(() =>\n routeNotFoundComponent() ? CatchNotFound : SafeFragment,\n )\n const ShellComponent = Solid.createMemo(() =>\n route.isRoot\n ? ((route.options as RootRouteOptions).shellComponent ??\n SafeFragment)\n : SafeFragment,\n )\n\n const MatchContent = () => (\n <Solid.Show\n when={currentMatchState().status !== 'pending'}\n fallback={(() => {\n if (process.env.NODE_ENV !== 'production') {\n return renderInNonRouteComponentContext(\n () => <Dynamic component={resolvePendingComponent()} />,\n 'pendingComponent',\n )\n }\n return <Dynamic component={resolvePendingComponent()} />\n })()}\n >\n <MatchInner />\n </Solid.Show>\n )\n const RouteContent = () => (\n <Dynamic\n component={ResolvedNotFoundBoundary()}\n fallback={(error: any) => {\n const notFoundError = getNotFound(error) ?? error\n notFoundError.routeId ??= currentMatchState().routeId\n\n if (notFoundError.routeId !== currentMatchState().routeId) {\n throw notFoundError\n }\n\n return process.env.NODE_ENV !== 'production' ? (\n renderInNonRouteComponentContext(\n () => (\n <Dynamic\n component={routeNotFoundComponent()}\n {...notFoundError}\n />\n ),\n 'notFoundComponent',\n )\n ) : (\n <Dynamic\n component={routeNotFoundComponent()}\n {...notFoundError}\n />\n )\n }}\n >\n <Solid.Switch>\n <Solid.Match when={resolvedNoSsr()}>\n <ClientOnly\n fallback={(() => {\n if (process.env.NODE_ENV !== 'production') {\n return renderInNonRouteComponentContext(\n () => <Dynamic component={resolvePendingComponent()} />,\n 'pendingComponent',\n )\n }\n return <Dynamic component={resolvePendingComponent()} />\n })()}\n >\n <MatchContent />\n </ClientOnly>\n </Solid.Match>\n <Solid.Match when={!resolvedNoSsr()}>\n <MatchContent />\n </Solid.Match>\n </Solid.Switch>\n </Dynamic>\n )\n\n return (\n <Dynamic component={ShellComponent()}>\n <NearestMatchContext value={nearestMatch}>\n <Dynamic\n component={ResolvedLoadingBoundary()}\n fallback={(() => {\n // Data-only SSR renders the inner fallback on the server, so\n // avoid adding an extra loading fallback on the client.\n if (shouldSkipLoadingFallback()) {\n return undefined\n }\n if (process.env.NODE_ENV !== 'production') {\n return renderInNonRouteComponentContext(\n () => <Dynamic component={resolvePendingComponent()} />,\n 'pendingComponent',\n )\n }\n return <Dynamic component={resolvePendingComponent()} />\n })()}\n >\n <Solid.Show\n when={routeErrorComponent()}\n fallback={<RouteContent />}\n >\n {(errorComponent) => (\n <CatchBoundary\n // Scope the reset key to this match and its\n // descendants (whose errors bubble here when they\n // have no errorComponent of their own): resetting on\n // unrelated matches' transitions just re-throws the\n // still-stale error and recreates the retried\n // subtree mid-settle.\n getResetKey={() => {\n const matches = router.stores.matches.get()\n const index = matches.findIndex(\n (match) => match.routeId === props.routeId,\n )\n if (index === -1) {\n return ''\n }\n let key = ''\n for (let i = index; i < matches.length; i++) {\n const match = matches[i]!\n key += `${match.status}|${match.updatedAt},`\n }\n return key\n }}\n errorComponent={errorComponent() as any}\n onCatch={(error: Error) => {\n const notFoundError = getNotFound(error)\n if (notFoundError) {\n notFoundError.routeId ??= currentMatchState().routeId\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 ;(\n routeOptions().onCatch ??\n router.options.defaultOnCatch\n )?.(error)\n }}\n render={RouteContent}\n />\n )}\n </Solid.Show>\n </Dynamic>\n </NearestMatchContext>\n\n {renderScrollRestoration?.(router, route)}\n </Dynamic>\n )\n }}\n </Solid.Show>","Solid.Show","<Solid.Show\n when={currentMatchState().status !== 'pending'}\n fallback={(() => {\n if (process.env.NODE_ENV !== 'production') {\n return renderInNonRouteComponentContext(\n () => <Dynamic component={resolvePendingComponent()} />,\n 'pendingComponent',\n )\n }\n return <Dynamic component={resolvePendingComponent()} />\n })()}\n >\n <MatchInner />\n </Solid.Show>","<Dynamic component={resolvePendingComponent()} />","<MatchInner />","<Dynamic\n component={ResolvedNotFoundBoundary()}\n fallback={(error: any) => {\n const notFoundError = getNotFound(error) ?? error\n notFoundError.routeId ??= currentMatchState().routeId\n\n if (notFoundError.routeId !== currentMatchState().routeId) {\n throw notFoundError\n }\n\n return process.env.NODE_ENV !== 'production' ? (\n renderInNonRouteComponentContext(\n () => (\n <Dynamic\n component={routeNotFoundComponent()}\n {...notFoundError}\n />\n ),\n 'notFoundComponent',\n )\n ) : (\n <Dynamic\n component={routeNotFoundComponent()}\n {...notFoundError}\n />\n )\n }}\n >\n <Solid.Switch>\n <Solid.Match when={resolvedNoSsr()}>\n <ClientOnly\n fallback={(() => {\n if (process.env.NODE_ENV !== 'production') {\n return renderInNonRouteComponentContext(\n () => <Dynamic component={resolvePendingComponent()} />,\n 'pendingComponent',\n )\n }\n return <Dynamic component={resolvePendingComponent()} />\n })()}\n >\n <MatchContent />\n </ClientOnly>\n </Solid.Match>\n <Solid.Match when={!resolvedNoSsr()}>\n <MatchContent />\n </Solid.Match>\n </Solid.Switch>\n </Dynamic>","fallback={(error: any) => {\n const notFoundError = getNotFound(error) ?? error\n notFoundError.routeId ??= currentMatchState().routeId\n\n if (notFoundError.routeId !== currentMatchState().routeId) {\n throw notFoundError\n }\n\n return process.env.NODE_ENV !== 'production' ? (\n renderInNonRouteComponentContext(\n () => (\n <Dynamic\n component={routeNotFoundComponent()}\n {...notFoundError}\n />\n ),\n 'notFoundComponent',\n )\n ) : (\n <Dynamic\n component={routeNotFoundComponent()}\n {...notFoundError}\n />\n )\n }}","<Dynamic\n component={routeNotFoundComponent()}\n {...notFoundError}\n />","<Dynamic\n component={routeNotFoundComponent()}\n {...notFoundError}\n />","<Solid.Switch>\n <Solid.Match when={resolvedNoSsr()}>\n <ClientOnly\n fallback={(() => {\n if (process.env.NODE_ENV !== 'production') {\n return renderInNonRouteComponentContext(\n () => <Dynamic component={resolvePendingComponent()} />,\n 'pendingComponent',\n )\n }\n return <Dynamic component={resolvePendingComponent()} />\n })()}\n >\n <MatchContent />\n </ClientOnly>\n </Solid.Match>\n <Solid.Match when={!resolvedNoSsr()}>\n <MatchContent />\n </Solid.Match>\n </Solid.Switch>","Solid.Switch","<Solid.Match when={resolvedNoSsr()}>\n <ClientOnly\n fallback={(() => {\n if (process.env.NODE_ENV !== 'production') {\n return renderInNonRouteComponentContext(\n () => <Dynamic component={resolvePendingComponent()} />,\n 'pendingComponent',\n )\n }\n return <Dynamic component={resolvePendingComponent()} />\n })()}\n >\n <MatchContent />\n </ClientOnly>\n </Solid.Match>","Solid.Match","<ClientOnly\n fallback={(() => {\n if (process.env.NODE_ENV !== 'production') {\n return renderInNonRouteComponentContext(\n () => <Dynamic component={resolvePendingComponent()} />,\n 'pendingComponent',\n )\n }\n return <Dynamic component={resolvePendingComponent()} />\n })()}\n >\n <MatchContent />\n </ClientOnly>","<MatchContent />","<Solid.Match when={!resolvedNoSsr()}>\n <MatchContent />\n </Solid.Match>","<Dynamic component={ShellComponent()}>\n <NearestMatchContext value={nearestMatch}>\n <Dynamic\n component={ResolvedLoadingBoundary()}\n fallback={(() => {\n // Data-only SSR renders the inner fallback on the server, so\n // avoid adding an extra loading fallback on the client.\n if (shouldSkipLoadingFallback()) {\n return undefined\n }\n if (process.env.NODE_ENV !== 'production') {\n return renderInNonRouteComponentContext(\n () => <Dynamic component={resolvePendingComponent()} />,\n 'pendingComponent',\n )\n }\n return <Dynamic component={resolvePendingComponent()} />\n })()}\n >\n <Solid.Show\n when={routeErrorComponent()}\n fallback={<RouteContent />}\n >\n {(errorComponent) => (\n <CatchBoundary\n // Scope the reset key to this match and its\n // descendants (whose errors bubble here when they\n // have no errorComponent of their own): resetting on\n // unrelated matches' transitions just re-throws the\n // still-stale error and recreates the retried\n // subtree mid-settle.\n getResetKey={() => {\n const matches = router.stores.matches.get()\n const index = matches.findIndex(\n (match) => match.routeId === props.routeId,\n )\n if (index === -1) {\n return ''\n }\n let key = ''\n for (let i = index; i < matches.length; i++) {\n const match = matches[i]!\n key += `${match.status}|${match.updatedAt},`\n }\n return key\n }}\n errorComponent={errorComponent() as any}\n onCatch={(error: Error) => {\n const notFoundError = getNotFound(error)\n if (notFoundError) {\n notFoundError.routeId ??= currentMatchState().routeId\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 ;(\n routeOptions().onCatch ??\n router.options.defaultOnCatch\n )?.(error)\n }}\n render={RouteContent}\n />\n )}\n </Solid.Show>\n </Dynamic>\n </NearestMatchContext>\n\n {renderScrollRestoration?.(router, route)}\n </Dynamic>","<NearestMatchContext value={nearestMatch}>\n <Dynamic\n component={ResolvedLoadingBoundary()}\n fallback={(() => {\n // Data-only SSR renders the inner fallback on the server, so\n // avoid adding an extra loading fallback on the client.\n if (shouldSkipLoadingFallback()) {\n return undefined\n }\n if (process.env.NODE_ENV !== 'production') {\n return renderInNonRouteComponentContext(\n () => <Dynamic component={resolvePendingComponent()} />,\n 'pendingComponent',\n )\n }\n return <Dynamic component={resolvePendingComponent()} />\n })()}\n >\n <Solid.Show\n when={routeErrorComponent()}\n fallback={<RouteContent />}\n >\n {(errorComponent) => (\n <CatchBoundary\n // Scope the reset key to this match and its\n // descendants (whose errors bubble here when they\n // have no errorComponent of their own): resetting on\n // unrelated matches' transitions just re-throws the\n // still-stale error and recreates the retried\n // subtree mid-settle.\n getResetKey={() => {\n const matches = router.stores.matches.get()\n const index = matches.findIndex(\n (match) => match.routeId === props.routeId,\n )\n if (index === -1) {\n return ''\n }\n let key = ''\n for (let i = index; i < matches.length; i++) {\n const match = matches[i]!\n key += `${match.status}|${match.updatedAt},`\n }\n return key\n }}\n errorComponent={errorComponent() as any}\n onCatch={(error: Error) => {\n const notFoundError = getNotFound(error)\n if (notFoundError) {\n notFoundError.routeId ??= currentMatchState().routeId\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 ;(\n routeOptions().onCatch ??\n router.options.defaultOnCatch\n )?.(error)\n }}\n render={RouteContent}\n />\n )}\n </Solid.Show>\n </Dynamic>\n </NearestMatchContext>","value={nearestMatch}","<Dynamic\n component={ResolvedLoadingBoundary()}\n fallback={(() => {\n // Data-only SSR renders the inner fallback on the server, so\n // avoid adding an extra loading fallback on the client.\n if (shouldSkipLoadingFallback()) {\n return undefined\n }\n if (process.env.NODE_ENV !== 'production') {\n return renderInNonRouteComponentContext(\n () => <Dynamic component={resolvePendingComponent()} />,\n 'pendingComponent',\n )\n }\n return <Dynamic component={resolvePendingComponent()} />\n })()}\n >\n <Solid.Show\n when={routeErrorComponent()}\n fallback={<RouteContent />}\n >\n {(errorComponent) => (\n <CatchBoundary\n // Scope the reset key to this match and its\n // descendants (whose errors bubble here when they\n // have no errorComponent of their own): resetting on\n // unrelated matches' transitions just re-throws the\n // still-stale error and recreates the retried\n // subtree mid-settle.\n getResetKey={() => {\n const matches = router.stores.matches.get()\n const index = matches.findIndex(\n (match) => match.routeId === props.routeId,\n )\n if (index === -1) {\n return ''\n }\n let key = ''\n for (let i = index; i < matches.length; i++) {\n const match = matches[i]!\n key += `${match.status}|${match.updatedAt},`\n }\n return key\n }}\n errorComponent={errorComponent() as any}\n onCatch={(error: Error) => {\n const notFoundError = getNotFound(error)\n if (notFoundError) {\n notFoundError.routeId ??= currentMatchState().routeId\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 ;(\n routeOptions().onCatch ??\n router.options.defaultOnCatch\n )?.(error)\n }}\n render={RouteContent}\n />\n )}\n </Solid.Show>\n </Dynamic>","<Solid.Show\n when={routeErrorComponent()}\n fallback={<RouteContent />}\n >\n {(errorComponent) => (\n <CatchBoundary\n // Scope the reset key to this match and its\n // descendants (whose errors bubble here when they\n // have no errorComponent of their own): resetting on\n // unrelated matches' transitions just re-throws the\n // still-stale error and recreates the retried\n // subtree mid-settle.\n getResetKey={() => {\n const matches = router.stores.matches.get()\n const index = matches.findIndex(\n (match) => match.routeId === props.routeId,\n )\n if (index === -1) {\n return ''\n }\n let key = ''\n for (let i = index; i < matches.length; i++) {\n const match = matches[i]!\n key += `${match.status}|${match.updatedAt},`\n }\n return key\n }}\n errorComponent={errorComponent() as any}\n onCatch={(error: Error) => {\n const notFoundError = getNotFound(error)\n if (notFoundError) {\n notFoundError.routeId ??= currentMatchState().routeId\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 ;(\n routeOptions().onCatch ??\n router.options.defaultOnCatch\n )?.(error)\n }}\n render={RouteContent}\n />\n )}\n </Solid.Show>","<RouteContent />","<CatchBoundary\n // Scope the reset key to this match and its\n // descendants (whose errors bubble here when they\n // have no errorComponent of their own): resetting on\n // unrelated matches' transitions just re-throws the\n // still-stale error and recreates the retried\n // subtree mid-settle.\n getResetKey={() => {\n const matches = router.stores.matches.get()\n const index = matches.findIndex(\n (match) => match.routeId === props.routeId,\n )\n if (index === -1) {\n return ''\n }\n let key = ''\n for (let i = index; i < matches.length; i++) {\n const match = matches[i]!\n key += `${match.status}|${match.updatedAt},`\n }\n return key\n }}\n errorComponent={errorComponent() as any}\n onCatch={(error: Error) => {\n const notFoundError = getNotFound(error)\n if (notFoundError) {\n notFoundError.routeId ??= currentMatchState().routeId\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 ;(\n routeOptions().onCatch ??\n router.options.defaultOnCatch\n )?.(error)\n }}\n render={RouteContent}\n />","getResetKey={() => {\n const matches = router.stores.matches.get()\n const index = matches.findIndex(\n (match) => match.routeId === props.routeId,\n )\n if (index === -1) {\n return ''\n }\n let key = ''\n for (let i = index; i < matches.length; i++) {\n const match = matches[i]!\n key += `${match.status}|${match.updatedAt},`\n }\n return key\n }}","onCatch={(error: Error) => {\n const notFoundError = getNotFound(error)\n if (notFoundError) {\n notFoundError.routeId ??= currentMatchState().routeId\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 ;(\n routeOptions().onCatch ??\n router.options.defaultOnCatch\n )?.(error)\n }}","render={RouteContent}","renderScrollRestoration?.(router, route)","<Solid.Show when={matchState()}>\n {(currentMatchState) => {\n const route = Solid.createMemo(() => currentMatchState().route)\n const currentMatch = Solid.createMemo(() => currentMatchState().match)\n const componentKey = Solid.createMemo(\n () => currentMatchState().componentKey,\n )\n const OutComponent = Solid.createMemo(\n () =>\n route().options.component ??\n router.options.defaultComponent ??\n Outlet,\n )\n const keyedOut = () => (\n <Solid.Show when={componentKey()} keyed>\n {(_key) => <Dynamic component={OutComponent()} />}\n </Solid.Show>\n )\n\n return (\n <Solid.Switch>\n <Solid.Match when={currentMatch().status === 'notFound'}>\n {(_) =>\n Solid.untrack(() =>\n renderRouteNotFound(router, route(), currentMatch().error),\n )\n }\n </Solid.Match>\n <Solid.Match when={currentMatch().status === 'error'}>\n {(_) => {\n const matchError = Solid.untrack(\n () => currentMatch().error,\n ) as Error\n if (isServer ?? router.isServer) {\n const RouteErrorComponent =\n (route().options.errorComponent ??\n router.options.defaultErrorComponent) ||\n ErrorComponent\n\n return process.env.NODE_ENV !== 'production' ? (\n renderInNonRouteComponentContext(\n () => (\n <RouteErrorComponent\n error={matchError}\n reset={undefined as any}\n info={{ componentStack: '' }}\n />\n ),\n 'errorComponent',\n )\n ) : (\n <RouteErrorComponent\n error={matchError}\n reset={undefined as any}\n info={{ componentStack: '' }}\n />\n )\n }\n\n throw matchError\n }}\n </Solid.Match>\n <Solid.Match when={currentMatch().status === 'success'}>\n {keyedOut()}\n </Solid.Match>\n </Solid.Switch>\n )\n }}\n </Solid.Show>","<Solid.Show when={componentKey()} keyed>\n {(_key) => <Dynamic component={OutComponent()} />}\n </Solid.Show>","<Dynamic component={OutComponent()} />","<Solid.Switch>\n <Solid.Match when={currentMatch().status === 'notFound'}>\n {(_) =>\n Solid.untrack(() =>\n renderRouteNotFound(router, route(), currentMatch().error),\n )\n }\n </Solid.Match>\n <Solid.Match when={currentMatch().status === 'error'}>\n {(_) => {\n const matchError = Solid.untrack(\n () => currentMatch().error,\n ) as Error\n if (isServer ?? router.isServer) {\n const RouteErrorComponent =\n (route().options.errorComponent ??\n router.options.defaultErrorComponent) ||\n ErrorComponent\n\n return process.env.NODE_ENV !== 'production' ? (\n renderInNonRouteComponentContext(\n () => (\n <RouteErrorComponent\n error={matchError}\n reset={undefined as any}\n info={{ componentStack: '' }}\n />\n ),\n 'errorComponent',\n )\n ) : (\n <RouteErrorComponent\n error={matchError}\n reset={undefined as any}\n info={{ componentStack: '' }}\n />\n )\n }\n\n throw matchError\n }}\n </Solid.Match>\n <Solid.Match when={currentMatch().status === 'success'}>\n {keyedOut()}\n </Solid.Match>\n </Solid.Switch>","<Solid.Match when={currentMatch().status === 'notFound'}>\n {(_) =>\n Solid.untrack(() =>\n renderRouteNotFound(router, route(), currentMatch().error),\n )\n }\n </Solid.Match>","<Solid.Match when={currentMatch().status === 'error'}>\n {(_) => {\n const matchError = Solid.untrack(\n () => currentMatch().error,\n ) as Error\n if (isServer ?? router.isServer) {\n const RouteErrorComponent =\n (route().options.errorComponent ??\n router.options.defaultErrorComponent) ||\n ErrorComponent\n\n return process.env.NODE_ENV !== 'production' ? (\n renderInNonRouteComponentContext(\n () => (\n <RouteErrorComponent\n error={matchError}\n reset={undefined as any}\n info={{ componentStack: '' }}\n />\n ),\n 'errorComponent',\n )\n ) : (\n <RouteErrorComponent\n error={matchError}\n reset={undefined as any}\n info={{ componentStack: '' }}\n />\n )\n }\n\n throw matchError\n }}\n </Solid.Match>","<RouteErrorComponent\n error={matchError}\n reset={undefined as any}\n info={{ componentStack: '' }}\n />","error={matchError}","reset={undefined as any}","info={{ componentStack: '' }}","<RouteErrorComponent\n error={matchError}\n reset={undefined as any}\n info={{ componentStack: '' }}\n />","<Solid.Match when={currentMatch().status === 'success'}>\n {keyedOut()}\n </Solid.Match>","<Solid.Show\n when={childRouteId()}\n keyed\n fallback={\n <Solid.Show when={parentNotFound() && route()}>\n {(resolvedRoute) =>\n Solid.untrack(() =>\n renderRouteNotFound(\n router,\n resolvedRoute(),\n parentNotFoundError(),\n ),\n )\n }\n </Solid.Show>\n }\n >\n {(currentChildRouteId) => {\n const nextMatch = () => <Match routeId={currentChildRouteId} />\n return (\n <Solid.Show when={routeId() === rootRouteId} fallback={nextMatch()}>\n <Solid.Loading\n fallback={(() => {\n if (!childPendingComponent()) {\n return null\n }\n if (process.env.NODE_ENV !== 'production') {\n return renderInNonRouteComponentContext(\n () => <Dynamic component={childPendingComponent()} />,\n 'pendingComponent',\n )\n }\n return <Dynamic component={childPendingComponent()} />\n })()}\n >\n {nextMatch()}\n </Solid.Loading>\n </Solid.Show>\n )\n }}\n </Solid.Show>","<Solid.Show when={parentNotFound() && route()}>\n {(resolvedRoute) =>\n Solid.untrack(() =>\n renderRouteNotFound(\n router,\n resolvedRoute(),\n parentNotFoundError(),\n ),\n )\n }\n </Solid.Show>","parentNotFound() && route()","<Match routeId={currentChildRouteId} />","routeId={currentChildRouteId}","<Solid.Show when={routeId() === rootRouteId} fallback={nextMatch()}>\n <Solid.Loading\n fallback={(() => {\n if (!childPendingComponent()) {\n return null\n }\n if (process.env.NODE_ENV !== 'production') {\n return renderInNonRouteComponentContext(\n () => <Dynamic component={childPendingComponent()} />,\n 'pendingComponent',\n )\n }\n return <Dynamic component={childPendingComponent()} />\n })()}\n >\n {nextMatch()}\n </Solid.Loading>\n </Solid.Show>","<Solid.Loading\n fallback={(() => {\n if (!childPendingComponent()) {\n return null\n }\n if (process.env.NODE_ENV !== 'production') {\n return renderInNonRouteComponentContext(\n () => <Dynamic component={childPendingComponent()} />,\n 'pendingComponent',\n )\n }\n return <Dynamic component={childPendingComponent()} />\n })()}\n >\n {nextMatch()}\n </Solid.Loading>","Solid.Loading","<Dynamic component={childPendingComponent()} />"],"sources":["../../src/Match.tsx"],"sourcesContent":["import * as Solid from 'solid-js'\nimport { rootRouteId } from '@tanstack/router-core'\nimport { isServer } from '@tanstack/router-core/isServer'\nimport { Dynamic } from '@solidjs/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 { ClientOnly } from './ClientOnly'\nimport {\n nonRouteComponentContext,\n renderInNonRouteComponentContext,\n} from './nonRouteComponentContext'\nimport type {\n AnyRoute,\n AnyRouter,\n RootRouteOptions,\n} from '@tanstack/router-core'\n\nconst NearestMatchContext = nearestMatchContext as unknown as Solid.Component<{\n value: any\n children?: any\n}>\n\n// Keep the client constant undefined so the server-only script can be dropped.\nconst renderScrollRestoration =\n isServer === false\n ? undefined\n : (router: AnyRouter, route: AnyRoute) =>\n (isServer ?? router.isServer) &&\n route.parentRoute?.id === rootRouteId &&\n router.options.scrollRestoration ? (\n <ScrollRestoration />\n ) : null\n\nexport const Match = (props: { routeId: string }) => {\n const router = useRouter()\n const currentMatch = Solid.createMemo(() =>\n router.stores.getMatchStore(props.routeId).get(),\n )\n const matchState = Solid.createMemo(() => {\n const match = currentMatch()\n if (!match) {\n return null\n }\n\n return {\n routeId: match.routeId,\n ssr: match.ssr,\n status: match.status,\n }\n })\n const nearestMatch = [() => props.routeId, currentMatch] as const\n\n return (\n <Solid.Show when={matchState()}>\n {(currentMatchState) => {\n const route = router.routesById[props.routeId] as AnyRoute\n const routeOptions = () => {\n // Lazy route options become observable with the next publication.\n currentMatchState()\n return route.options\n }\n const resolvePendingComponent = Solid.createMemo(\n () =>\n routeOptions().pendingComponent ??\n router.options.defaultPendingComponent,\n )\n const routeErrorComponent = Solid.createMemo(\n () =>\n routeOptions().errorComponent ??\n router.options.defaultErrorComponent,\n )\n const routeNotFoundComponent = Solid.createMemo(() =>\n route.isRoot\n ? (routeOptions().notFoundComponent ??\n router.options.notFoundRoute?.options.component ??\n router.options.defaultNotFoundComponent)\n : (routeOptions().notFoundComponent ??\n router.options.defaultNotFoundComponent),\n )\n const resolvedNoSsr = Solid.createMemo(\n () =>\n currentMatchState().ssr === false ||\n currentMatchState().ssr === 'data-only',\n )\n const ResolvedLoadingBoundary = Solid.createMemo(() =>\n resolvedNoSsr() ? SafeFragment : Solid.Loading,\n )\n const shouldSkipLoadingFallback = Solid.createMemo(() =>\n (isServer ?? router.isServer)\n ? resolvedNoSsr()\n : currentMatchState().ssr === 'data-only',\n )\n const ResolvedNotFoundBoundary = Solid.createMemo(() =>\n routeNotFoundComponent() ? CatchNotFound : SafeFragment,\n )\n const ShellComponent = Solid.createMemo(() =>\n route.isRoot\n ? ((route.options as RootRouteOptions).shellComponent ??\n SafeFragment)\n : SafeFragment,\n )\n\n const MatchContent = () => (\n <Solid.Show\n when={currentMatchState().status !== 'pending'}\n fallback={(() => {\n if (process.env.NODE_ENV !== 'production') {\n return renderInNonRouteComponentContext(\n () => <Dynamic component={resolvePendingComponent()} />,\n 'pendingComponent',\n )\n }\n return <Dynamic component={resolvePendingComponent()} />\n })()}\n >\n <MatchInner />\n </Solid.Show>\n )\n const RouteContent = () => (\n <Dynamic\n component={ResolvedNotFoundBoundary()}\n fallback={(error: any) => {\n const notFoundError = getNotFound(error) ?? error\n notFoundError.routeId ??= currentMatchState().routeId\n\n if (notFoundError.routeId !== currentMatchState().routeId) {\n throw notFoundError\n }\n\n return process.env.NODE_ENV !== 'production' ? (\n renderInNonRouteComponentContext(\n () => (\n <Dynamic\n component={routeNotFoundComponent()}\n {...notFoundError}\n />\n ),\n 'notFoundComponent',\n )\n ) : (\n <Dynamic\n component={routeNotFoundComponent()}\n {...notFoundError}\n />\n )\n }}\n >\n <Solid.Switch>\n <Solid.Match when={resolvedNoSsr()}>\n <ClientOnly\n fallback={(() => {\n if (process.env.NODE_ENV !== 'production') {\n return renderInNonRouteComponentContext(\n () => <Dynamic component={resolvePendingComponent()} />,\n 'pendingComponent',\n )\n }\n return <Dynamic component={resolvePendingComponent()} />\n })()}\n >\n <MatchContent />\n </ClientOnly>\n </Solid.Match>\n <Solid.Match when={!resolvedNoSsr()}>\n <MatchContent />\n </Solid.Match>\n </Solid.Switch>\n </Dynamic>\n )\n\n return (\n <Dynamic component={ShellComponent()}>\n <NearestMatchContext value={nearestMatch}>\n <Dynamic\n component={ResolvedLoadingBoundary()}\n fallback={(() => {\n // Data-only SSR renders the inner fallback on the server, so\n // avoid adding an extra loading fallback on the client.\n if (shouldSkipLoadingFallback()) {\n return undefined\n }\n if (process.env.NODE_ENV !== 'production') {\n return renderInNonRouteComponentContext(\n () => <Dynamic component={resolvePendingComponent()} />,\n 'pendingComponent',\n )\n }\n return <Dynamic component={resolvePendingComponent()} />\n })()}\n >\n <Solid.Show\n when={routeErrorComponent()}\n fallback={<RouteContent />}\n >\n {(errorComponent) => (\n <CatchBoundary\n // Scope the reset key to this match and its\n // descendants (whose errors bubble here when they\n // have no errorComponent of their own): resetting on\n // unrelated matches' transitions just re-throws the\n // still-stale error and recreates the retried\n // subtree mid-settle.\n getResetKey={() => {\n const matches = router.stores.matches.get()\n const index = matches.findIndex(\n (match) => match.routeId === props.routeId,\n )\n if (index === -1) {\n return ''\n }\n let key = ''\n for (let i = index; i < matches.length; i++) {\n const match = matches[i]!\n key += `${match.status}|${match.updatedAt},`\n }\n return key\n }}\n errorComponent={errorComponent() as any}\n onCatch={(error: Error) => {\n const notFoundError = getNotFound(error)\n if (notFoundError) {\n notFoundError.routeId ??= currentMatchState().routeId\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 ;(\n routeOptions().onCatch ??\n router.options.defaultOnCatch\n )?.(error)\n }}\n render={RouteContent}\n />\n )}\n </Solid.Show>\n </Dynamic>\n </NearestMatchContext>\n\n {renderScrollRestoration?.(router, route)}\n </Dynamic>\n )\n }}\n </Solid.Show>\n )\n}\n\nexport const MatchInner = (): any => {\n const router = useRouter()\n const nearestMatch = Solid.useContext(nearestMatchContext)\n const match = nearestMatch[1 /* match */]\n const routeId = nearestMatch[0 /* route id */]\n\n const matchState = Solid.createMemo(() => {\n const currentMatch = match()\n const currentRouteId = routeId()\n if (!currentMatch || !currentRouteId) {\n return null\n }\n\n const route = router.routesById[currentRouteId] as AnyRoute\n const remount =\n route.options.remountDeps ?? router.options.defaultRemountDeps\n let componentKey: string\n if (!remount) {\n componentKey = currentRouteId\n } else {\n const deps = remount({\n routeId: currentRouteId,\n loaderDeps: currentMatch.loaderDeps,\n params: currentMatch._strictParams,\n search: currentMatch._strictSearch,\n })\n componentKey = JSON.stringify(deps) ?? currentRouteId\n }\n\n return {\n route,\n routeId: currentRouteId,\n match: {\n id: currentMatch.id,\n status: currentMatch.status,\n error: currentMatch.error,\n },\n componentKey,\n }\n })\n\n return (\n <Solid.Show when={matchState()}>\n {(currentMatchState) => {\n const route = Solid.createMemo(() => currentMatchState().route)\n const currentMatch = Solid.createMemo(() => currentMatchState().match)\n const componentKey = Solid.createMemo(\n () => currentMatchState().componentKey,\n )\n const OutComponent = Solid.createMemo(\n () =>\n route().options.component ??\n router.options.defaultComponent ??\n Outlet,\n )\n const keyedOut = () => (\n <Solid.Show when={componentKey()} keyed>\n {(_key) => <Dynamic component={OutComponent()} />}\n </Solid.Show>\n )\n\n return (\n <Solid.Switch>\n <Solid.Match when={currentMatch().status === 'notFound'}>\n {(_) =>\n Solid.untrack(() =>\n renderRouteNotFound(router, route(), currentMatch().error),\n )\n }\n </Solid.Match>\n <Solid.Match when={currentMatch().status === 'error'}>\n {(_) => {\n const matchError = Solid.untrack(\n () => currentMatch().error,\n ) as Error\n if (isServer ?? router.isServer) {\n const RouteErrorComponent =\n (route().options.errorComponent ??\n router.options.defaultErrorComponent) ||\n ErrorComponent\n\n return process.env.NODE_ENV !== 'production' ? (\n renderInNonRouteComponentContext(\n () => (\n <RouteErrorComponent\n error={matchError}\n reset={undefined as any}\n info={{ componentStack: '' }}\n />\n ),\n 'errorComponent',\n )\n ) : (\n <RouteErrorComponent\n error={matchError}\n reset={undefined as any}\n info={{ componentStack: '' }}\n />\n )\n }\n\n throw matchError\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 if (process.env.NODE_ENV !== 'production') {\n const nonRouteComponent = Solid.useContext(nonRouteComponentContext!)\n if (nonRouteComponent) {\n console.warn(\n `Warning: An <Outlet /> was rendered inside a ${nonRouteComponent}. <Outlet /> should only be rendered inside a route component.`,\n )\n }\n }\n\n const router = useRouter()\n const nearestParentMatch = Solid.useContext(nearestMatchContext)\n const parentMatch = nearestParentMatch[1 /* match */]\n const routeId = nearestParentMatch[0 /* route id */]\n const route = Solid.createMemo(() => {\n const currentRouteId = routeId()\n return currentRouteId\n ? (router.routesById[currentRouteId] as AnyRoute)\n : undefined\n })\n const parentNotFound = Solid.createMemo(() => parentMatch()?._notFound)\n const parentNotFoundError = Solid.createMemo(() => parentMatch()?.error)\n const childRouteId = Solid.createMemo(() => {\n if (parentNotFound()) {\n return undefined\n }\n const currentRouteId = routeId()\n if (!currentRouteId) {\n return undefined\n }\n const ids = router.stores.ids.get()\n return ids[ids.indexOf(currentRouteId) + 1]\n })\n const childPendingComponent = Solid.createMemo(() => {\n const childId = childRouteId()\n return childId\n ? ((router.routesById[childId] as AnyRoute).options.pendingComponent ??\n router.options.defaultPendingComponent)\n : router.options.defaultPendingComponent\n })\n\n return (\n <Solid.Show\n when={childRouteId()}\n keyed\n fallback={\n <Solid.Show when={parentNotFound() && route()}>\n {(resolvedRoute) =>\n Solid.untrack(() =>\n renderRouteNotFound(\n router,\n resolvedRoute(),\n parentNotFoundError(),\n ),\n )\n }\n </Solid.Show>\n }\n >\n {(currentChildRouteId) => {\n const nextMatch = () => <Match routeId={currentChildRouteId} />\n return (\n <Solid.Show when={routeId() === rootRouteId} fallback={nextMatch()}>\n <Solid.Loading\n fallback={(() => {\n if (!childPendingComponent()) {\n return null\n }\n if (process.env.NODE_ENV !== 'production') {\n return renderInNonRouteComponentContext(\n () => <Dynamic component={childPendingComponent()} />,\n 'pendingComponent',\n )\n }\n return <Dynamic component={childPendingComponent()} />\n })()}\n >\n {nextMatch()}\n </Solid.Loading>\n </Solid.Show>\n )\n }}\n </Solid.Show>\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAsBA,IAAM,sBAAsB,qBAAA;AAM5B,IAAM,0BACJ,+BAAA,aAAa,QACT,KAAA,KACC,QAAmB,WACjB,+BAAA,YAAY,OAAO,aACpB,MAAM,aAAa,OAAO,sBAAA,eAC1B,OAAO,QAAQ,qBAAA,GAAA,aAAA,iBACbA,2BAAAA,mBAAAA,CAAoB,CAAA,IAClB;AAEZ,IAAa,SAAS,UAA+B;CACnD,MAAM,SAAS,kBAAA,UAAU;CACzB,MAAM,eAAe,SAAM,iBACzB,OAAO,OAAO,cAAc,MAAM,OAAO,EAAE,IAAI,CACjD;CACA,MAAM,aAAa,SAAM,iBAAiB;EACxC,MAAM,QAAQ,aAAa;EAC3B,IAAI,CAAC,OACH,OAAO;EAGT,OAAO;GACL,SAAS,MAAM;GACf,KAAK,MAAM;GACX,QAAQ,MAAM;EAChB;CACF,CAAC;CACD,MAAM,eAAe,OAAO,MAAM,SAAS,YAAY;CAEvD,QAAA,GAAA,aAAA,iBACEC,SAACC,MAAD;EAAY,IAAA,OAAA;UAAM,WAAW;EAAC;EAA9BD,WACI,sBAAsB;GACtB,MAAM,QAAQ,OAAO,WAAW,MAAM;GACtC,MAAM,qBAAqB;IAEzB,kBAAkB;IAClB,OAAO,MAAM;GACf;GACA,MAAM,0BAA0B,SAAM,iBAElC,aAAa,EAAE,oBACf,OAAO,QAAQ,uBACnB;GACA,MAAM,sBAAsB,SAAM,iBAE9B,aAAa,EAAE,kBACf,OAAO,QAAQ,qBACnB;GACA,MAAM,yBAAyB,SAAM,iBACnC,MAAM,SACD,aAAa,EAAE,qBAChB,OAAO,QAAQ,eAAe,QAAQ,aACtC,OAAO,QAAQ,2BACd,aAAa,EAAE,qBAChB,OAAO,QAAQ,wBACrB;GACA,MAAM,gBAAgB,SAAM,iBAExB,kBAAkB,EAAE,QAAQ,SAC5B,kBAAkB,EAAE,QAAQ,WAChC;GACA,MAAM,0BAA0B,SAAM,iBACpC,cAAc,IAAI,qBAAA,eAAe,SAAM,OACzC;GACA,MAAM,4BAA4B,SAAM,iBACrC,+BAAA,YAAY,OAAO,WAChB,cAAc,IACd,kBAAkB,EAAE,QAAQ,WAClC;GACA,MAAM,2BAA2B,SAAM,iBACrC,uBAAuB,IAAI,kBAAA,gBAAgB,qBAAA,YAC7C;GACA,MAAM,iBAAiB,SAAM,iBAC3B,MAAM,SACA,MAAM,QAA6B,kBACrC,qBAAA,eACA,qBAAA,YACN;GAEA,MAAM,sBAAA,GAAA,aAAA,iBACJE,SAACD,MAAD;IACE,IAAA,OAAA;YAAM,kBAAkB,EAAE,WAAW;IAAS;IAC9C,IAAA,WAAA;KACE,IAAA,QAAA,IAAA,aAA6B,cAC3B,OAAO,iCAAA,wCAAA,GAAA,aAAA,iBACCE,aAAAA,SAAAA,EAAS,IAAA,YAAA;aAAW,wBAAwB;KAAC,EAAG,CAAA,GACtD,kBACF;KAEF,QAAA,GAAA,aAAA,iBAAOA,aAAAA,SAAAA,EAAS,IAAA,YAAA;aAAW,wBAAwB;KAAC,EAAG,CAAA;IACrD;IAVN,IAAA,WAAA;8CAYEC,YAAAA,CAAa,CAAA;IACH;;GAEd,MAAM,sBAAA,GAAA,aAAA,iBACJC,aAAAA,SAAAA;IACE,IAAA,YAAA;YAAW,yBAAyB;IAAC;IACrCC,WAAW,UAAe;KACxB,MAAM,gBAAgB,kBAAA,YAAY,KAAK,KAAK;KAC5C,cAAc,YAAY,kBAAkB,EAAE;KAE9C,IAAI,cAAc,YAAY,kBAAkB,EAAE,SAChD,MAAM;KAGR,OAAA,QAAA,IAAA,aAAgC,eAC9B,iCAAA,wCAAA,GAAA,aAAA,iBAEIC,aAAAA,UAAAA,GAAAA,aAAAA,YAAAA,EACE,IAAA,YAAA;aAAW,uBAAuB;KAAC,EAEpC,GADK,aACL,CAAA,GAEH,mBACF,KAAA,GAAA,aAAA,iBAEAC,aAAAA,UAAAA,GAAAA,aAAAA,YAAAA,EACE,IAAA,YAAA;aAAW,uBAAuB;KAAC,EAEpC,GADK,aACL,CAAA;IAEL;IA1BF,IAAA,WAAA;8CA4BEC,SAACC,QAAD,EAAA,IAAA,WAAA;aAAc,EAAA,GAAA,aAAA,iBACZC,SAACC,OAAD;OAAa,IAAA,OAAA;eAAM,cAAc;OAAC;OAAlC,IAAA,WAAA;iDACEC,mBAAAA,YAAAA;SACE,IAAA,WAAA;UACE,IAAA,QAAA,IAAA,aAA6B,cAC3B,OAAO,iCAAA,wCAAA,GAAA,aAAA,iBACCV,aAAAA,SAAAA,EAAS,IAAA,YAAA;kBAAW,wBAAwB;UAAC,EAAG,CAAA,GACtD,kBACF;UAEF,QAAA,GAAA,aAAA,iBAAOA,aAAAA,SAAAA,EAAS,IAAA,YAAA;kBAAW,wBAAwB;UAAC,EAAG,CAAA;SACrD;SATN,IAAA,WAAA;mDAWEW,cAAAA,CAAe,CAAA;SACL;;OACD;4CACbC,SAACH,OAAD;OAAa,IAAA,OAAA;eAAM,CAAC,cAAc;OAAC;OAAnC,IAAA,WAAA;iDACEE,cAAAA,CAAe,CAAA;OACJ;QAjBd;KAkBa,EAAA,CAAA;IACP;;GAGX,QAAA,GAAA,aAAA,iBACEE,aAAAA,SAAAA;IAAS,IAAA,YAAA;YAAW,eAAe;IAAC;IAApC,IAAA,WAAA;YAAsC,EAAA,GAAA,aAAA,iBACpCC,qBAAAA;MAAqBC,OAAO;MAA5B,IAAA,WAAA;gDACEC,aAAAA,SAAAA;QACE,IAAA,YAAA;gBAAW,wBAAwB;QAAC;QACpC,IAAA,WAAA;SAGE,IAAI,0BAA0B,GAC5B;SAEF,IAAA,QAAA,IAAA,aAA6B,cAC3B,OAAO,iCAAA,wCAAA,GAAA,aAAA,iBACChB,aAAAA,SAAAA,EAAS,IAAA,YAAA;iBAAW,wBAAwB;SAAC,EAAG,CAAA,GACtD,kBACF;SAEF,QAAA,GAAA,aAAA,iBAAOA,aAAAA,SAAAA,EAAS,IAAA,YAAA;iBAAW,wBAAwB;SAAC,EAAG,CAAA;QACrD;QAfN,IAAA,WAAA;kDAiBEiB,SAACnB,MAAD;UACE,IAAA,OAAA;kBAAM,oBAAoB;UAAC;UAC3B,IAAA,WAAA;oDAAUoB,cAAAA,CAAe,CAAA;UAAC;UAF5BD,WAII,oBAAA,GAAA,aAAA,iBACAE,sBAAAA,eAAAA;WAOEC,mBAAmB;YACjB,MAAM,UAAU,OAAO,OAAO,QAAQ,IAAI;YAC1C,MAAM,QAAQ,QAAQ,WACnB,UAAU,MAAM,YAAY,MAAM,OACrC;YACA,IAAI,UAAU,IACZ,OAAO;YAET,IAAI,MAAM;YACV,KAAK,IAAI,IAAI,OAAO,IAAI,QAAQ,QAAQ,KAAK;aAC3C,MAAM,QAAQ,QAAQ;aACtB,OAAO,GAAG,MAAM,OAAO,GAAG,MAAM,UAAU;YAC5C;YACA,OAAO;WACT;WACA,IAAA,iBAAA;mBAAgB,eAAe;WAAQ;WACvCC,UAAU,UAAiB;YACzB,MAAM,gBAAgB,kBAAA,YAAY,KAAK;YACvC,IAAI,eAAe;aACjB,cAAc,YAAY,kBAAkB,EAAE;aAC9C,MAAM;YACR;YACA,IAAA,QAAA,IAAA,aAA6B,cAC3B,QAAQ,KACN,kCAAkC,kBAAkB,EAAE,SACxD;YAED,CACC,aAAa,EAAE,WACf,OAAO,QAAQ,kBACb,KAAK;WACX;WACAC,QAAQ;UACT,CAAA;SAEO,CAAA;QACL;;MACU;sCAEpBC;uCAA0B,QAAQ,KAAK;OArEzC;IAsEQ;;EAEb;CACU,CAAA;AAEhB;AAEA,IAAa,mBAAwB;CACnC,MAAM,SAAS,kBAAA,UAAU;CACzB,MAAM,eAAe,SAAM,WAAW,qBAAA,mBAAmB;CACzD,MAAM,QAAQ,aAAa;CAC3B,MAAM,UAAU,aAAa;CAE7B,MAAM,aAAa,SAAM,iBAAiB;EACxC,MAAM,eAAe,MAAM;EAC3B,MAAM,iBAAiB,QAAQ;EAC/B,IAAI,CAAC,gBAAgB,CAAC,gBACpB,OAAO;EAGT,MAAM,QAAQ,OAAO,WAAW;EAChC,MAAM,UACJ,MAAM,QAAQ,eAAe,OAAO,QAAQ;EAC9C,IAAI;EACJ,IAAI,CAAC,SACH,eAAe;OACV;GACL,MAAM,OAAO,QAAQ;IACnB,SAAS;IACT,YAAY,aAAa;IACzB,QAAQ,aAAa;IACrB,QAAQ,aAAa;GACvB,CAAC;GACD,eAAe,KAAK,UAAU,IAAI,KAAK;EACzC;EAEA,OAAO;GACL;GACA,SAAS;GACT,OAAO;IACL,IAAI,aAAa;IACjB,QAAQ,aAAa;IACrB,OAAO,aAAa;GACtB;GACA;EACF;CACF,CAAC;CAED,QAAA,GAAA,aAAA,iBACEC,SAAC1B,MAAD;EAAY,IAAA,OAAA;UAAM,WAAW;EAAC;EAA9B0B,WACI,sBAAsB;GACtB,MAAM,QAAQ,SAAM,iBAAiB,kBAAkB,EAAE,KAAK;GAC9D,MAAM,eAAe,SAAM,iBAAiB,kBAAkB,EAAE,KAAK;GACrE,MAAM,eAAe,SAAM,iBACnB,kBAAkB,EAAE,YAC5B;GACA,MAAM,eAAe,SAAM,iBAEvB,MAAM,EAAE,QAAQ,aAChB,OAAO,QAAQ,oBACf,MACJ;GACA,MAAM,kBAAA,GAAA,aAAA,iBACJC,SAAC3B,MAAD;IAAY,IAAA,OAAA;YAAM,aAAa;IAAC;IAAE,OAAA;IAAlC2B,WACI,UAAA,GAAA,aAAA,iBAASC,aAAAA,SAAAA,EAAS,IAAA,YAAA;YAAW,aAAa;IAAC,EAAG,CAAA;GACtC,CAAA;GAGd,QAAA,GAAA,aAAA,iBACEC,SAACpB,QAAD,EAAA,IAAA,WAAA;WAAc;uCACZqB,SAACnB,OAAD;MAAa,IAAA,OAAA;cAAM,aAAa,EAAE,WAAW;MAAU;MAAvDmB,WACI,MACA,SAAM,cACJ,4BAAA,oBAAoB,QAAQ,MAAM,GAAG,aAAa,EAAE,KAAK,CAC3D;KAES,CAAA;uCACbC,SAACpB,OAAD;MAAa,IAAA,OAAA;cAAM,aAAa,EAAE,WAAW;MAAO;MAApDoB,WACI,MAAM;OACN,MAAM,aAAa,SAAM,cACjB,aAAa,EAAE,KACvB;OACA,IAAI,+BAAA,YAAY,OAAO,UAAU;QAC/B,MAAM,uBACH,MAAM,EAAE,QAAQ,kBACf,OAAO,QAAQ,0BACjB,sBAAA;QAEF,OAAA,QAAA,IAAA,aAAgC,eAC9B,iCAAA,wCAAA,GAAA,aAAA,iBAEIC,qBAAAA;SACEC,OAAO;SACPC,OAAO,KAAA;SACPC,MAAM,EAAE,gBAAgB,GAAG;QAC5B,CAAA,GAEH,gBACF,KAAA,GAAA,aAAA,iBAEAC,qBAAAA;SACEH,OAAO;SACPC,OAAO,KAAA;SACPC,MAAM,EAAE,gBAAgB,GAAG;QAC5B,CAAA;OAEL;OAEA,MAAM;MACR;KACW,CAAA;uCACbE,SAAC1B,OAAD;MAAa,IAAA,OAAA;cAAM,aAAa,EAAE,WAAW;MAAS;MAAtD,IAAA,WAAA;cACG,SAAS;MACC;;IA3Cd;GA4Ca,EAAA,CAAA;EAElB;CACU,CAAA;AAEhB;AAEA,IAAa,eAAe;CAC1B,IAAA,QAAA,IAAA,aAA6B,cAAc;EACzC,MAAM,oBAAoB,SAAM,WAAW,iCAAA,wBAAyB;EACpE,IAAI,mBACF,QAAQ,KACN,gDAAgD,kBAAkB,+DACpE;CAEJ;CAEA,MAAM,SAAS,kBAAA,UAAU;CACzB,MAAM,qBAAqB,SAAM,WAAW,qBAAA,mBAAmB;CAC/D,MAAM,cAAc,mBAAmB;CACvC,MAAM,UAAU,mBAAmB;CACnC,MAAM,QAAQ,SAAM,iBAAiB;EACnC,MAAM,iBAAiB,QAAQ;EAC/B,OAAO,iBACF,OAAO,WAAW,kBACnB,KAAA;CACN,CAAC;CACD,MAAM,iBAAiB,SAAM,iBAAiB,YAAY,GAAG,SAAS;CACtE,MAAM,sBAAsB,SAAM,iBAAiB,YAAY,GAAG,KAAK;CACvE,MAAM,eAAe,SAAM,iBAAiB;EAC1C,IAAI,eAAe,GACjB;EAEF,MAAM,iBAAiB,QAAQ;EAC/B,IAAI,CAAC,gBACH;EAEF,MAAM,MAAM,OAAO,OAAO,IAAI,IAAI;EAClC,OAAO,IAAI,IAAI,QAAQ,cAAc,IAAI;CAC3C,CAAC;CACD,MAAM,wBAAwB,SAAM,iBAAiB;EACnD,MAAM,UAAU,aAAa;EAC7B,OAAO,UACD,OAAO,WAAW,SAAsB,QAAQ,oBAChD,OAAO,QAAQ,0BACjB,OAAO,QAAQ;CACrB,CAAC;CAED,QAAA,GAAA,aAAA,iBACE2B,SAACtC,MAAD;EACE,IAAA,OAAA;UAAM,aAAa;EAAC;EACpB,OAAA;EACA,IAAA,WAAA;4CACEuC,SAACvC,MAAD;IAAY,IAAA,OAAA;yCAAMwC;8BAAe;KAAW,CAAA,EAAA,IAAN,MAAM,IAA1B,eAAe;IAAY;IAA7CD,WACI,kBACA,SAAM,cACJ,4BAAA,oBACE,QACA,cAAc,GACd,oBAAoB,CACtB,CACF;GAEQ,CAAA;EACd;EAfFD,WAiBI,wBAAwB;GACxB,MAAM,mBAAA,GAAA,aAAA,iBAAkBG,OAAAA,EAAOC,SAAS,oBAAsB,CAAA;GAC9D,QAAA,GAAA,aAAA,iBACEC,SAAC3C,MAAD;IAAY,IAAA,OAAA;YAAM,QAAQ,MAAM,sBAAA;IAAW;IAAE,IAAA,WAAA;YAAU,UAAU;IAAC;IAAlE,IAAA,WAAA;8CACE4C,SAACC,SAAD;MACE,IAAA,WAAA;OACE,IAAI,CAAC,sBAAsB,GACzB,OAAO;OAET,IAAA,QAAA,IAAA,aAA6B,cAC3B,OAAO,iCAAA,wCAAA,GAAA,aAAA,iBACCC,aAAAA,SAAAA,EAAS,IAAA,YAAA;eAAW,sBAAsB;OAAC,EAAG,CAAA,GACpD,kBACF;OAEF,QAAA,GAAA,aAAA,iBAAOA,aAAAA,SAAAA,EAAS,IAAA,YAAA;eAAW,sBAAsB;OAAC,EAAG,CAAA;MACnD;MAZN,IAAA,WAAA;cAcG,UAAU;MACE;;IACL;;EAEhB;CACU,CAAA;AAEhB"}