{"version":3,"file":"analogjs-tanstack-angular-router.mjs","names":[],"sources":["../../../../node_modules/.pnpm/tiny-invariant@1.3.3/node_modules/tiny-invariant/dist/esm/tiny-invariant.js","../../../../node_modules/.pnpm/tiny-warning@1.0.3/node_modules/tiny-warning/dist/tiny-warning.esm.js","../../src/utils.ts","../../src/default-not-found.ts","../../src/is-dev-mode.ts","../../src/routerStores.ts","../../src/router.ts","../../src/router-state.ts","../../src/outlet.ts","../../src/match.ts","../../src/loader-data.ts","../../src/loader-deps.ts","../../src/params.ts","../../src/route-context.ts","../../src/search.ts","../../src/route.ts","../../src/default-error.ts","../../src/transitioner.ts","../../src/matches.ts","../../src/link.ts","../../src/match-route.ts","../../src/file-route.ts","../../src/router-root.ts","../../src/can-go-back.ts","../../src/location.ts"],"sourcesContent":["var isProduction = process.env.NODE_ENV === 'production';\nvar prefix = 'Invariant failed';\nfunction invariant(condition, message) {\n    if (condition) {\n        return;\n    }\n    if (isProduction) {\n        throw new Error(prefix);\n    }\n    var provided = typeof message === 'function' ? message() : message;\n    var value = provided ? \"\".concat(prefix, \": \").concat(provided) : prefix;\n    throw new Error(value);\n}\n\nexport { invariant as default };\n","var isProduction = process.env.NODE_ENV === 'production';\nfunction warning(condition, message) {\n  if (!isProduction) {\n    if (condition) {\n      return;\n    }\n\n    var text = \"Warning: \" + message;\n\n    if (typeof console !== 'undefined') {\n      console.warn(text);\n    }\n\n    try {\n      throw Error(text);\n    } catch (x) {}\n  }\n}\n\nexport default warning;\n","/**\n *\n * @deprecated use `jsesc` instead\n */\nexport function escapeJSON(jsonString: string) {\n  return jsonString\n    .replace(/\\\\/g, '\\\\\\\\') // Escape backslashes\n    .replace(/'/g, \"\\\\'\") // Escape single quotes\n    .replace(/\"/g, '\\\\\"'); // Escape double quotes\n}\n\nexport function shallow<T>(objA: T, objB: T) {\n  if (Object.is(objA, objB)) {\n    return true;\n  }\n\n  if (\n    typeof objA !== 'object' ||\n    objA === null ||\n    typeof objB !== 'object' ||\n    objB === null\n  ) {\n    return false;\n  }\n\n  const keysA = Object.keys(objA);\n  if (keysA.length !== Object.keys(objB).length) {\n    return false;\n  }\n\n  for (const item of keysA) {\n    if (\n      !Object.prototype.hasOwnProperty.call(objB, item) ||\n      !Object.is(objA[item as keyof T], objB[item as keyof T])\n    ) {\n      return false;\n    }\n  }\n  return true;\n}\n\nexport function pick<TValue, TKey extends keyof TValue>(\n  parent: TValue,\n  keys: Array<TKey>,\n): Pick<TValue, TKey> {\n  return keys.reduce((obj: any, key: TKey) => {\n    obj[key] = parent[key];\n    return obj;\n  }, {} as any);\n}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n  selector: 'default-not-found,DefaultNotFound',\n  template: ` <p>Page not found</p> `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  host: { style: 'display: contents;' },\n})\nexport class DefaultNotFound {}\n","import { DOCUMENT } from '@angular/common';\nimport {\n  Injector,\n  assertInInjectionContext,\n  inject,\n  runInInjectionContext,\n} from '@angular/core';\n\nexport function isDevMode({ injector }: { injector?: Injector } = {}) {\n  !injector && assertInInjectionContext(isDevMode);\n\n  if (!injector) {\n    injector = inject(Injector);\n  }\n\n  return runInInjectionContext(injector, () => {\n    const document = inject(DOCUMENT);\n    const window = document.defaultView;\n    return !!window && 'ng' in window;\n  });\n}\n","import { batch, createStore } from '@tanstack/angular-store';\nimport {\n  createNonReactiveMutableStore,\n  createNonReactiveReadonlyStore,\n} from '@tanstack/router-core';\nimport type { Readable, Store } from '@tanstack/angular-store';\nimport type {\n  GetStoreConfig,\n  RouterWritableStore,\n} from '@tanstack/router-core';\n\ndeclare module '@tanstack/router-core' {\n  export interface RouterReadableStore<TValue> extends Readable<TValue> {}\n}\n\n// `@tanstack/store` exposes `get()`/`setState()`, while router-core's\n// `RouterWritableStore` contract is `get()`/`set()`. Bridge the reactive store\n// so router-core can drive it while keeping the underlying reactivity intact.\nfunction createReactiveMutableStore<TValue>(\n  initialValue: TValue,\n): RouterWritableStore<TValue> {\n  const store = createStore(initialValue) as Store<TValue> &\n    RouterWritableStore<TValue>;\n  store.set = (nextOrUpdater: TValue | ((prev: TValue) => TValue)) =>\n    store.setState(\n      typeof nextOrUpdater === 'function'\n        ? (nextOrUpdater as (prev: TValue) => TValue)\n        : () => nextOrUpdater,\n    );\n  return store;\n}\n\nexport const getStoreFactory: GetStoreConfig = (opts) => {\n  if (opts.isServer) {\n    return {\n      createMutableStore: createNonReactiveMutableStore,\n      createReadonlyStore: createNonReactiveReadonlyStore,\n      batch: (fn) => fn(),\n    };\n  }\n  return {\n    createMutableStore: createReactiveMutableStore,\n    createReadonlyStore: <TValue>(read: () => TValue) => createStore(read),\n    batch: batch,\n  };\n};\n","import {\n  ApplicationRef,\n  InjectionToken,\n  Injector,\n  createEnvironmentInjector,\n  inject,\n} from '@angular/core';\nimport { RouterCore, rootRouteId } from '@tanstack/router-core';\nimport { getStoreFactory } from './routerStores';\nimport { BehaviorSubject } from 'rxjs';\n\nimport type {\n  AnyRoute,\n  AnyRouter,\n  CreateRouterFn,\n  RouterConstructorOptions,\n  RouterState,\n  TrailingSlashOption,\n} from '@tanstack/router-core';\nimport type { Observable } from 'rxjs';\nimport type { EnvironmentInjector, Provider } from '@angular/core';\nimport type { HistoryLocation, RouterHistory } from '@tanstack/history';\nimport type { RouteComponent } from './route';\n\ndeclare module '@tanstack/history' {\n  interface HistoryState {\n    __tempLocation?: HistoryLocation;\n    __tempKey?: string;\n    __hashScrollIntoViewOptions?: boolean | ScrollIntoViewOptions;\n  }\n}\n\ndeclare module '@tanstack/router-core' {\n  export interface RouterOptionsExtensions {\n    /**\n     * The default `component` a route should use if no component is provided.\n     *\n     * @default Outlet\n     * @link [API Docs](https://tanstack.com/router/latest/docs/framework/solid/api/router/RouterOptionsType#defaultcomponent-property)\n     */\n    defaultComponent?: () => RouteComponent;\n    /**\n     * The default `errorComponent` a route should use if no error component is provided.\n     *\n     * @default ErrorComponent\n     * @link [API Docs](https://tanstack.com/router/latest/docs/framework/solid/api/router/RouterOptionsType#defaulterrorcomponent-property)\n     * @link [Guide](https://tanstack.com/router/latest/docs/framework/solid/guide/data-loading#handling-errors-with-routeoptionserrorcomponent)\n     */\n    defaultErrorComponent?: () => RouteComponent;\n    /**\n     * The default `pendingComponent` a route should use if no pending component is provided.\n     *\n     * @link [API Docs](https://tanstack.com/router/latest/docs/framework/solid/api/router/RouterOptionsType#defaultpendingcomponent-property)\n     * @link [Guide](https://tanstack.com/router/latest/docs/framework/solid/guide/data-loading#showing-a-pending-component)\n     */\n    defaultPendingComponent?: () => RouteComponent;\n    /**\n     * The default `notFoundComponent` a route should use if no notFound component is provided.\n     *\n     * @default NotFound\n     * @link [API Docs](https://tanstack.com/router/latest/docs/framework/solid/api/router/RouterOptionsType#defaultnotfoundcomponent-property)\n     * @link [Guide](https://tanstack.com/router/latest/docs/framework/solid/guide/not-found-errors#default-router-wide-not-found-handling)\n     */\n    defaultNotFoundComponent?: () => RouteComponent;\n    /**\n     * The default `onCatch` handler for errors caught by the Router ErrorBoundary\n     *\n     * @link [API Docs](https://tanstack.com/router/latest/docs/framework/react/api/router/RouterOptionsType#defaultoncatch-property)\n     * @link [Guide](https://tanstack.com/router/latest/docs/framework/react/guide/data-loading#handling-errors-with-routeoptionsoncatch)\n     */\n    defaultOnCatch?: (error: Error) => void;\n  }\n}\n\nexport const ROUTER = new InjectionToken<NgRouter<AnyRoute>>('ROUTER');\nexport const ROUTER_STATE = new InjectionToken<\n  Observable<RouterState<AnyRoute>>\n>('ROUTER_STATE');\n\nexport function injectRouter() {\n  return inject(ROUTER);\n}\n\nexport function injectRouterState() {\n  return inject(ROUTER_STATE);\n}\n\nexport function provideRouter(router: AnyRouter) {\n  return [\n    { provide: ROUTER, useValue: router },\n    {\n      provide: ROUTER_STATE,\n      useFactory: () => {\n        const state = new BehaviorSubject(router.state);\n        const appRef = inject(ApplicationRef);\n\n        const subscription = router.stores.__store.subscribe((routerState) => {\n          state.next(routerState);\n        });\n\n        appRef.onDestroy(() => {\n          state.complete();\n          subscription.unsubscribe();\n        });\n\n        return state.asObservable();\n      },\n    },\n  ];\n}\n\nexport const createRouter: CreateRouterFn = (options) => {\n  return new NgRouter(options);\n};\n\nexport class NgRouter<\n  in out TRouteTree extends AnyRoute,\n  in out TTrailingSlashOption extends TrailingSlashOption = 'never',\n  in out TDefaultStructuralSharingOption extends boolean = false,\n  in out TRouterHistory extends RouterHistory = RouterHistory,\n  in out TDehydrated extends Record<string, any> = Record<string, any>,\n> extends RouterCore<\n  TRouteTree,\n  TTrailingSlashOption,\n  TDefaultStructuralSharingOption,\n  TRouterHistory,\n  TDehydrated\n> {\n  private injectors = new Map<string, Injector>();\n  private envInjectors = new Map<string, EnvironmentInjector>();\n\n  constructor(\n    options: RouterConstructorOptions<\n      TRouteTree,\n      TTrailingSlashOption,\n      TDefaultStructuralSharingOption,\n      TRouterHistory,\n      TDehydrated\n    >,\n  ) {\n    super(options, getStoreFactory);\n  }\n\n  getRouteInjector(\n    routeId: string,\n    parent: Injector,\n    providers: Array<Provider> = [],\n  ) {\n    const existingInjector = this.injectors.get(routeId);\n    if (existingInjector) return existingInjector;\n\n    const injector = Injector.create({\n      providers,\n      parent,\n      name: routeId,\n    });\n\n    // cache\n    this.injectors.set(routeId, injector);\n    return injector;\n  }\n\n  getRouteEnvInjector(\n    routeId: string,\n    parent: EnvironmentInjector,\n    providers: Array<Provider> = [],\n    router: AnyRouter,\n  ) {\n    const existingInjector = this.envInjectors.get(routeId);\n    if (existingInjector) return existingInjector;\n\n    let route = router.routesById[routeId] || router.routesByPath[routeId];\n\n    // walk up the route hierarchy to build the providers\n    while (route) {\n      if (route.options?.providers) {\n        providers.push(...route.options.providers);\n      }\n\n      const parentInjector = route.parentRoute\n        ? this.envInjectors.get(route.parentRoute.id)\n        : null;\n\n      if (parentInjector) {\n        parent = parentInjector;\n        break;\n      }\n\n      route = route.parentRoute;\n    }\n\n    const envInjector = createEnvironmentInjector(providers, parent, routeId);\n\n    // if routeId is rootRouteId, we'll switch existing injectors' parent to the __root__ injector\n    if (routeId === rootRouteId) {\n      this.envInjectors.forEach((ele) => {\n        if ('parent' in ele && ele.parent === parent) {\n          ele.parent = envInjector;\n        }\n      });\n    }\n\n    // cache\n    this.envInjectors.set(routeId, envInjector);\n    return envInjector;\n  }\n}\n","import {\n  Injector,\n  assertInInjectionContext,\n  inject,\n  runInInjectionContext,\n} from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { distinctUntilChanged, map } from 'rxjs';\nimport { injectRouterState } from './router';\n\nimport type { Observable } from 'rxjs';\n\nimport type { Signal, ValueEqualityFn } from '@angular/core';\nimport type { AnyRouter, RouterState } from '@tanstack/router-core';\nimport type { RegisteredRouter } from './register';\n\nexport type RouterStateResult<\n  TRouter extends AnyRouter,\n  TSelected,\n> = unknown extends TSelected ? RouterState<TRouter['routeTree']> : TSelected;\n\nexport type RouterStateOptions<TRouter extends AnyRouter, TSelected> = {\n  select?: (state: RouterState<TRouter['routeTree']>) => TSelected;\n  equal?: ValueEqualityFn<\n    RouterStateResult<NoInfer<TRouter>, NoInfer<TSelected>>\n  >;\n  injector?: Injector;\n};\n\nexport function routerState$<\n  TRouter extends AnyRouter = RegisteredRouter,\n  TSelected = unknown,\n>({\n  select,\n  injector,\n  equal,\n}: RouterStateOptions<TRouter, TSelected>): Observable<\n  RouterStateResult<TRouter, TSelected>\n> {\n  !injector && assertInInjectionContext(routerState$);\n\n  if (!injector) {\n    injector = inject(Injector);\n  }\n\n  return runInInjectionContext(injector, () => {\n    const rootRouterState = injectRouterState();\n    if (select)\n      return rootRouterState.pipe(\n        map((s) => select(s) as any),\n        distinctUntilChanged(equal),\n      );\n    return rootRouterState.pipe(distinctUntilChanged(equal) as any);\n  });\n}\n\nexport function routerState<\n  TRouter extends AnyRouter = RegisteredRouter,\n  TSelected = unknown,\n>({\n  select,\n  injector,\n  equal,\n}: RouterStateOptions<TRouter, TSelected> = {}): Signal<\n  RouterStateResult<TRouter, TSelected>\n> {\n  !injector && assertInInjectionContext(routerState);\n\n  if (!injector) {\n    injector = inject(Injector);\n  }\n\n  return runInInjectionContext(injector, () =>\n    toSignal(routerState$({ select, injector, equal }), { injector }),\n  ) as Signal<RouterStateResult<TRouter, TSelected>>;\n}\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  DestroyRef,\n  Directive,\n  EnvironmentInjector,\n  InjectionToken,\n  Injector,\n  ViewContainerRef,\n  afterNextRender,\n  inject,\n  input,\n} from '@angular/core';\nimport { toObservable } from '@angular/core/rxjs-interop';\nimport {\n  createControlledPromise,\n  getLocationChangeInfo,\n  isNotFound,\n  isRedirect,\n  rootRouteId,\n} from '@tanstack/router-core';\nimport {\n  catchError,\n  combineLatest,\n  distinctUntilChanged,\n  filter,\n  map,\n  of,\n  switchMap,\n  take,\n  throwError,\n  withLatestFrom,\n} from 'rxjs';\nimport invariant from 'tiny-invariant';\nimport warning from 'tiny-warning';\nimport { DefaultError } from './default-error';\nimport { DefaultNotFound } from './default-not-found';\nimport { isDevMode } from './is-dev-mode';\nimport { ERROR_COMPONENT_CONTEXT, NOT_FOUND_COMPONENT_CONTEXT } from './route';\nimport { injectRouter } from './router';\nimport { routerState$ } from './router-state';\nimport { pick, shallow } from './utils';\n\nimport type { ComponentRef, Type } from '@angular/core';\nimport type { Subscription } from 'rxjs';\n\n@Directive()\nexport class OnRendered {\n  private match = inject(RouteMatch);\n  private router = injectRouter();\n\n  private parentRouteId$ = combineLatest([\n    this.match.matchId$,\n    routerState$({ select: (s) => s.matches }),\n  ]).pipe(\n    map(\n      ([matchId, matches]) =>\n        matches.find((d) => d.id === matchId)?.routeId as string,\n    ),\n    distinctUntilChanged(shallow),\n  );\n  private location$ = routerState$({\n    select: (s) => s.resolvedLocation?.state.key,\n  });\n\n  constructor() {\n    let subscription: Subscription | undefined = undefined;\n    afterNextRender(() => {\n      subscription = combineLatest([\n        this.parentRouteId$,\n        this.location$,\n      ]).subscribe(([parentRouteId]) => {\n        if (!parentRouteId || parentRouteId !== rootRouteId) return;\n        this.router.emit({\n          type: 'onRendered',\n          ...getLocationChangeInfo(\n            this.router.stores.location.get(),\n            this.router.stores.resolvedLocation.get(),\n          ),\n        });\n      });\n    });\n\n    inject(DestroyRef).onDestroy(() => {\n      subscription?.unsubscribe();\n    });\n  }\n}\n\nexport const MATCH_ID = new InjectionToken<string>('MATCH_ID');\n\n@Component({\n  selector: 'route-match,RouteMatch',\n  template: ``,\n  hostDirectives: [OnRendered],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class RouteMatch {\n  matchId = input.required<string>();\n\n  private isDevMode = isDevMode();\n  private router = injectRouter();\n  private vcr = inject(ViewContainerRef);\n  private injector = inject(Injector);\n  private environmentInjector = inject(EnvironmentInjector);\n\n  matchId$ = toObservable(this.matchId);\n  private resetKey$ = routerState$({ select: (s) => s.loadedAt.toString() });\n  private matches$ = routerState$({ select: (s) => s.matches });\n  private routeId$ = combineLatest([this.matchId$, this.matches$]).pipe(\n    map(\n      ([matchId, matches]) =>\n        matches.find((d) => d.id === matchId)?.routeId as string,\n    ),\n    distinctUntilChanged(shallow),\n  );\n\n  private route$ = this.routeId$.pipe(\n    map((routeId) => this.router.routesById[routeId]),\n    distinctUntilChanged(shallow),\n  );\n  private pendingComponent$ = this.route$.pipe(\n    map(\n      (route) =>\n        route.options.pendingComponent ||\n        this.router.options.defaultPendingComponent,\n    ),\n    distinctUntilChanged(shallow),\n  );\n  private errorComponent$ = this.route$.pipe(\n    map(\n      (route) =>\n        route.options.errorComponent ||\n        this.router.options.defaultErrorComponent,\n    ),\n    distinctUntilChanged(shallow),\n  );\n  private onCatch$ = this.route$.pipe(\n    map((route) => route.options.onCatch || this.router.options.defaultOnCatch),\n    distinctUntilChanged(shallow),\n  );\n\n  private matchIndex$ = combineLatest([this.matchId$, this.matches$]).pipe(\n    map(([matchId, matches]) => matches.findIndex((d) => d.id === matchId)),\n    distinctUntilChanged(shallow),\n  );\n  private matchState$ = combineLatest([this.matchIndex$, this.matches$]).pipe(\n    map(([matchIndex, matches]) => matches[matchIndex]),\n    filter((match) => !!match),\n    map((match) => ({\n      routeId: match.routeId as string,\n      match: pick(match, ['id', 'status', 'error']),\n    })),\n  );\n\n  private matchRoute$ = this.matchState$.pipe(\n    map(({ routeId }) => this.router.routesById[routeId]),\n    distinctUntilChanged(shallow),\n  );\n  private match$ = this.matchState$.pipe(\n    map(({ match }) => match),\n    distinctUntilChanged((a, b) => a.id === b.id && a.status === b.status),\n  );\n  private matchLoad$ = this.match$.pipe(\n    withLatestFrom(this.matchRoute$),\n    switchMap(([match, matchRoute]) => {\n      const loadPromise = this.router.getMatch(match.id)?._nonReactive\n        .loadPromise;\n      if (!loadPromise) return Promise.resolve() as any;\n\n      if (match.status === 'pending') {\n        const pendingMinMs =\n          matchRoute.options.pendingMinMs ??\n          this.router.options.defaultPendingMinMs;\n        let minPendingPromise = this.router.getMatch(match.id)?._nonReactive\n          .minPendingPromise;\n\n        if (pendingMinMs && !minPendingPromise) {\n          // Create a promise that will resolve after the minPendingMs\n          if (!this.router.isServer) {\n            minPendingPromise = createControlledPromise<void>();\n            Promise.resolve().then(() => {\n              this.router.updateMatch(match.id, (prev) => ({\n                ...prev,\n                minPendingPromise,\n              }));\n            });\n\n            setTimeout(() => {\n              minPendingPromise?.resolve();\n              // We've handled the minPendingPromise, so we can delete it\n              this.router.updateMatch(match.id, (prev) => ({\n                ...prev,\n                minPendingPromise: undefined,\n              }));\n            }, pendingMinMs);\n          }\n        }\n\n        return minPendingPromise?.then(() => loadPromise) || loadPromise;\n      }\n\n      return loadPromise;\n    }),\n    distinctUntilChanged(shallow),\n  );\n\n  private run$ = this.routeId$.pipe(\n    switchMap((routeId) => {\n      invariant(\n        routeId,\n        `Could not find routeId for matchId \"${this.matchId()}\". Please file an issue!`,\n      );\n      return combineLatest([\n        this.match$,\n        this.matchRoute$,\n        this.resetKey$,\n      ]).pipe(\n        switchMap(([match, route]) => {\n          if (match.status === 'notFound') {\n            invariant(isNotFound(match.error), 'Expected a notFound error');\n            let notFoundCmp: Type<any> | undefined;\n            if (!route.options.notFoundComponent) {\n              notFoundCmp = this.router.options.defaultNotFoundComponent?.();\n              if (!notFoundCmp) {\n                if (this.isDevMode) {\n                  warning(\n                    route.options.notFoundComponent,\n                    `A notFoundError was encountered on the route with ID \"${route.id}\", but a notFoundComponent option was not configured, nor was a router level defaultNotFoundComponent configured. Consider configuring at least one of these to avoid TanStack Router's overly generic defaultNotFoundComponent (<p>Page not found</p>)`,\n                  );\n                }\n                notFoundCmp = DefaultNotFound;\n              }\n            } else {\n              notFoundCmp = route.options.notFoundComponent();\n            }\n\n            const injector = this.router.getRouteInjector(\n              route.id + '-not-found',\n              this.injector,\n              [{ provide: NOT_FOUND_COMPONENT_CONTEXT, useValue: {} }],\n            );\n            return of({\n              component: notFoundCmp,\n              injector,\n              environmentInjector: null,\n              clearView: true,\n            } as const);\n          }\n\n          if (match.status === 'redirected' || match.status === 'pending') {\n            if (match.status === 'redirected') {\n              invariant(isRedirect(match.error), 'Expected a redirect error');\n            }\n\n            return this.matchLoad$.pipe(\n              withLatestFrom(this.pendingComponent$),\n              switchMap(([, pendingComponent]) => {\n                const pendingCmp = pendingComponent?.();\n                if (!pendingCmp) return of(null);\n                return of({\n                  component: pendingCmp,\n                  injector: null,\n                  environmentInjector: null,\n                  clearView: true,\n                } as const);\n              }),\n            );\n          }\n\n          if (match.status === 'error') {\n            return this.errorComponent$.pipe(\n              take(1),\n              switchMap((errorComponent) => {\n                const errorCmp = errorComponent?.() || DefaultError;\n                const injector = this.router.getRouteInjector(\n                  route.id + '-error',\n                  this.injector,\n                  [\n                    {\n                      provide: ERROR_COMPONENT_CONTEXT,\n                      useValue: {\n                        error: match.error,\n                        info: { componentStack: '' },\n                        reset: () => void this.router.invalidate(),\n                      },\n                    },\n                  ],\n                );\n                return of({\n                  component: errorCmp,\n                  injector,\n                  environmentInjector: null,\n                  clearView: true,\n                } as const);\n              }),\n            );\n          }\n\n          const successComponent = route.options.component?.() || Outlet;\n\n          if (this.cmp === successComponent) {\n            return of({ clearView: false } as const);\n          }\n\n          this.cmpRef = undefined;\n          this.cmp = successComponent;\n          const injector = this.router.getRouteInjector(\n            route.id,\n            this.injector,\n          );\n          const environmentInjector = this.router.getRouteEnvInjector(\n            route.id,\n            this.environmentInjector,\n            route.options.providers || [],\n            this.router,\n          );\n\n          return of({\n            component: successComponent,\n            injector: Injector.create({\n              providers: [{ provide: MATCH_ID, useValue: match.id }],\n              parent: injector,\n            }),\n            environmentInjector,\n            clearView: true,\n          } as const);\n        }),\n      );\n    }),\n    catchError((error) =>\n      this.onCatch$.pipe(\n        take(1),\n        switchMap((onCatch) => throwError(() => [error, onCatch])),\n      ),\n    ),\n  );\n\n  private cmp?: Type<any>;\n  private cmpRef?: ComponentRef<any>;\n\n  constructor() {\n    let subscription: Subscription | undefined = undefined;\n\n    afterNextRender(() => {\n      subscription = this.run$.subscribe({\n        next: (runData) => {\n          if (!runData) return;\n          if (!runData.clearView) {\n            this.cmpRef?.changeDetectorRef.markForCheck();\n            return;\n          }\n          const { component, injector, environmentInjector } = runData;\n          this.vcr.clear();\n\n          this.cmpRef = this.vcr.createComponent(component, {\n            injector: injector || undefined,\n            environmentInjector: environmentInjector || undefined,\n          });\n          this.cmpRef.changeDetectorRef.markForCheck();\n        },\n        error: (error) => {\n          if (Array.isArray(error)) {\n            const [errorToThrow, onCatch] = error;\n            if (onCatch) onCatch(errorToThrow);\n            console.error(errorToThrow);\n            return;\n          }\n          console.error(error);\n        },\n      });\n    });\n\n    inject(DestroyRef).onDestroy(() => {\n      subscription?.unsubscribe();\n      this.vcr.clear();\n      this.cmp = undefined;\n      this.cmpRef = undefined;\n    });\n  }\n}\n\n@Component({\n  selector: 'outlet,Outlet',\n  template: ``,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Outlet {\n  private matchId = inject(MATCH_ID);\n  private router = injectRouter();\n  private vcr = inject(ViewContainerRef);\n  private isDevMode = isDevMode();\n\n  protected readonly defaultPendingComponent =\n    this.router.options.defaultPendingComponent?.();\n\n  private matches$ = routerState$({ select: (s) => s.matches });\n  private routeId$ = this.matches$.pipe(\n    map(\n      (matches) =>\n        matches.find((d) => d.id === this.matchId)?.routeId as string,\n    ),\n    distinctUntilChanged(shallow),\n  );\n  private route$ = this.routeId$.pipe(\n    map((routeId) => this.router.routesById[routeId]),\n    distinctUntilChanged(shallow),\n  );\n  private parentGlobalNotFound$ = this.matches$.pipe(\n    map((matches) => {\n      const parentMatch = matches.find((d) => d.id === this.matchId);\n      if (!parentMatch) {\n        warning(\n          false,\n          `Could not find parent match for matchId \"${this.matchId}\". Please file an issue!`,\n        );\n        return false;\n      }\n      return parentMatch.globalNotFound;\n    }),\n  );\n\n  private childMatchId$ = this.matches$.pipe(\n    map((matches) => {\n      const index = matches.findIndex((d) => d.id === this.matchId);\n      if (index === -1) return null;\n      return matches[index + 1]?.id;\n    }),\n    distinctUntilChanged(shallow),\n  );\n  private matchLoad$ = this.childMatchId$.pipe(\n    switchMap((childMatchId) => {\n      if (!childMatchId) return Promise.resolve() as any;\n      const loadPromise =\n        this.router.getMatch(childMatchId)?._nonReactive.loadPromise;\n      if (!loadPromise) return Promise.resolve() as any;\n      return loadPromise;\n    }),\n  );\n\n  private renderedId?: string;\n  private cmpRef?: ComponentRef<any>;\n\n  private run$ = combineLatest([\n    this.parentGlobalNotFound$,\n    this.childMatchId$,\n  ]).pipe(\n    switchMap(([parentGlobalNotFound, childMatchId]) => {\n      if (parentGlobalNotFound) {\n        return this.route$.pipe(\n          map((route) => {\n            let notFoundCmp: Type<any> | undefined = undefined;\n\n            if (!route.options.notFoundComponent) {\n              notFoundCmp = this.router.options.defaultNotFoundComponent?.();\n              if (!notFoundCmp) {\n                if (this.isDevMode) {\n                  warning(\n                    route.options.notFoundComponent,\n                    `A notFoundError was encountered on the route with ID \"${route.id}\", but a notFoundComponent option was not configured, nor was a router level defaultNotFoundComponent configured. Consider configuring at least one of these to avoid TanStack Router's overly generic defaultNotFoundComponent (<p>Page not found</p>)`,\n                  );\n                }\n                notFoundCmp = DefaultNotFound;\n              }\n            } else {\n              notFoundCmp = route.options.notFoundComponent();\n            }\n\n            this.renderedId = route.id + '-not-found';\n            const injector = this.router.getRouteInjector(\n              route.id + '-not-found',\n              this.vcr.injector,\n              [{ provide: NOT_FOUND_COMPONENT_CONTEXT, useValue: {} }],\n            );\n            return {\n              component: notFoundCmp,\n              injector,\n              clearView: true,\n              childMatchId: null,\n            } as const;\n          }),\n        );\n      }\n\n      if (!childMatchId) return of(null);\n\n      if (this.renderedId === childMatchId) {\n        return of({ clearView: false } as const);\n      }\n\n      this.cmpRef = undefined;\n\n      if (childMatchId === rootRouteId) {\n        return this.matchLoad$.pipe(\n          map(() => {\n            return {\n              component: this.defaultPendingComponent,\n              injector: null,\n              clearView: true,\n              childMatchId: null,\n            } as const;\n          }),\n        );\n      }\n\n      this.renderedId = childMatchId;\n      return of({\n        component: RouteMatch,\n        injector: null,\n        clearView: true,\n        childMatchId,\n      } as const);\n    }),\n    catchError((error) => throwError(() => error)),\n  );\n\n  constructor() {\n    let subscription: Subscription | undefined = undefined;\n    afterNextRender(() => {\n      subscription = this.run$.subscribe({\n        next: (runData) => {\n          if (!runData) return;\n          if (!runData.clearView) {\n            this.cmpRef?.changeDetectorRef.markForCheck();\n            return;\n          }\n          const { component, injector, childMatchId } = runData;\n          this.vcr.clear();\n          if (!component) return;\n          this.cmpRef = this.vcr.createComponent(component, {\n            injector: injector || undefined,\n          });\n          if (childMatchId) {\n            this.cmpRef.setInput('matchId', childMatchId);\n          }\n          this.cmpRef.changeDetectorRef.markForCheck();\n        },\n        error: (error) => {\n          console.error(error);\n        },\n      });\n    });\n\n    inject(DestroyRef).onDestroy(() => {\n      subscription?.unsubscribe();\n      this.vcr.clear();\n      this.cmpRef = undefined;\n      this.renderedId = undefined;\n    });\n  }\n}\n","import {\n  Injector,\n  assertInInjectionContext,\n  computed,\n  inject,\n  runInInjectionContext,\n} from '@angular/core';\nimport { toObservable, toSignal } from '@angular/core/rxjs-interop';\nimport { combineLatest, distinctUntilChanged, map } from 'rxjs';\nimport invariant from 'tiny-invariant';\nimport { shallow } from './utils';\nimport { MATCH_ID } from './outlet';\nimport { routerState$ } from './router-state';\n\nimport type {\n  AnyRouter,\n  MakeRouteMatch,\n  MakeRouteMatchUnion,\n  StrictOrFrom,\n  ThrowConstraint,\n  ThrowOrOptional,\n} from '@tanstack/router-core';\nimport type { RegisteredRouter } from './register';\nimport type { Observable } from 'rxjs';\nimport type { Signal } from '@angular/core';\n\nexport interface MatchBaseOptions<\n  TRouter extends AnyRouter,\n  TFrom,\n  TStrict extends boolean,\n  TThrow extends boolean,\n  TSelected,\n> {\n  select?: (\n    match: MakeRouteMatch<TRouter['routeTree'], TFrom, TStrict>,\n  ) => TSelected;\n  shouldThrow?: TThrow;\n  injector?: Injector;\n}\n\nexport type MatchRoute<TObservable extends boolean, out TFrom> = <\n  TRouter extends AnyRouter = RegisteredRouter,\n  TSelected = unknown,\n>(\n  opts?: MatchBaseOptions<TRouter, TFrom, true, true, TSelected>,\n) => TObservable extends true\n  ? Observable<MatchResult<TRouter, TFrom, true, TSelected>>\n  : Signal<MatchResult<TRouter, TFrom, true, TSelected>>;\n\nexport type MatchOptions<\n  TRouter extends AnyRouter,\n  TFrom extends string | undefined,\n  TStrict extends boolean,\n  TThrow extends boolean,\n  TSelected,\n> = StrictOrFrom<TRouter, TFrom, TStrict> &\n  MatchBaseOptions<TRouter, TFrom, TStrict, TThrow, TSelected>;\n\nexport type MatchResult<\n  TRouter extends AnyRouter,\n  TFrom,\n  TStrict extends boolean,\n  TSelected,\n> = unknown extends TSelected\n  ? TStrict extends true\n    ? MakeRouteMatch<TRouter['routeTree'], TFrom, TStrict>\n    : MakeRouteMatchUnion<TRouter>\n  : TSelected;\n\nexport function match$<\n  TRouter extends AnyRouter = RegisteredRouter,\n  const TFrom extends string | undefined = undefined,\n  TStrict extends boolean = true,\n  TThrow extends boolean = true,\n  TSelected = unknown,\n>({\n  injector,\n  ...opts\n}: MatchOptions<\n  TRouter,\n  TFrom,\n  TStrict,\n  ThrowConstraint<TStrict, TThrow>,\n  TSelected\n>): Observable<\n  ThrowOrOptional<MatchResult<TRouter, TFrom, TStrict, TSelected>, TThrow>\n> {\n  !injector && assertInInjectionContext(match$);\n\n  if (!injector) {\n    injector = inject(Injector);\n  }\n\n  return runInInjectionContext(injector, () => {\n    const closestMatchId = inject(MATCH_ID, { optional: true });\n    const nearestMatchId = computed(() => {\n      if (opts.from) return null;\n      return closestMatchId;\n    });\n\n    return combineLatest([\n      routerState$({ select: (s) => s.matches, injector }),\n      toObservable(nearestMatchId),\n    ]).pipe(\n      map(([matches, matchId]) => {\n        const match = matches.find((d) => {\n          return opts.from ? opts.from === d.routeId : d.id === matchId;\n        });\n        invariant(\n          !((opts.shouldThrow ?? true) && !match),\n          `Could not find ${opts.from ? `an active match from \"${opts.from}\"` : 'a nearest match!'}`,\n        );\n        if (match === undefined) {\n          return undefined;\n        }\n\n        return opts.select ? opts.select(match) : match;\n      }),\n      distinctUntilChanged(shallow),\n    ) as any;\n  });\n}\n\nexport function match<\n  TRouter extends AnyRouter = RegisteredRouter,\n  const TFrom extends string | undefined = undefined,\n  TStrict extends boolean = true,\n  TThrow extends boolean = true,\n  TSelected = unknown,\n>({\n  injector,\n  ...opts\n}: MatchOptions<\n  TRouter,\n  TFrom,\n  TStrict,\n  ThrowConstraint<TStrict, TThrow>,\n  TSelected\n>): Signal<\n  ThrowOrOptional<MatchResult<TRouter, TFrom, TStrict, TSelected>, TThrow>\n> {\n  !injector && assertInInjectionContext(match);\n\n  if (!injector) {\n    injector = inject(Injector);\n  }\n\n  return runInInjectionContext(injector, () => {\n    return toSignal(match$({ injector, ...opts } as unknown as any), {\n      injector,\n    });\n  }) as any;\n}\n","import {\n  Injector,\n  assertInInjectionContext,\n  inject,\n  runInInjectionContext,\n} from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { match$ } from './match';\n\nimport type { Signal } from '@angular/core';\nimport type {\n  AnyRouter,\n  ResolveUseLoaderData,\n  StrictOrFrom,\n  UseLoaderDataResult,\n} from '@tanstack/router-core';\nimport type { RegisteredRouter } from './register';\n\nimport type { Observable } from 'rxjs';\n\nexport interface LoaderDataBaseOptions<\n  TRouter extends AnyRouter,\n  TFrom,\n  TStrict extends boolean,\n  TSelected,\n> {\n  select?: (match: ResolveUseLoaderData<TRouter, TFrom, TStrict>) => TSelected;\n  injector?: Injector;\n}\n\nexport type LoaderDataOptions<\n  TRouter extends AnyRouter,\n  TFrom extends string | undefined,\n  TStrict extends boolean,\n  TSelected,\n> = StrictOrFrom<TRouter, TFrom, TStrict> &\n  LoaderDataBaseOptions<TRouter, TFrom, TStrict, TSelected>;\n\nexport type LoaderDataRoute<TObservable extends boolean, out TId> = <\n  TRouter extends AnyRouter = RegisteredRouter,\n  TSelected = unknown,\n>(\n  opts?: LoaderDataBaseOptions<TRouter, TId, true, TSelected>,\n) => TObservable extends true\n  ? Observable<UseLoaderDataResult<TRouter, TId, true, TSelected>>\n  : Signal<UseLoaderDataResult<TRouter, TId, true, TSelected>>;\n\nexport function loaderData$<\n  TRouter extends AnyRouter = RegisteredRouter,\n  const TFrom extends string | undefined = undefined,\n  TStrict extends boolean = true,\n  TSelected = unknown,\n>({\n  injector,\n  ...opts\n}: LoaderDataOptions<TRouter, TFrom, TStrict, TSelected>): Observable<\n  UseLoaderDataResult<TRouter, TFrom, TStrict, TSelected>\n> {\n  !injector && assertInInjectionContext(loaderData$);\n\n  if (!injector) {\n    injector = inject(Injector);\n  }\n\n  return runInInjectionContext(injector, () => {\n    return match$({\n      injector,\n      from: opts.from,\n      strict: opts.strict,\n      select: (s) => (opts.select ? opts.select(s.loaderData) : s.loaderData),\n    }) as any;\n  });\n}\n\nexport function loaderData<\n  TRouter extends AnyRouter = RegisteredRouter,\n  const TFrom extends string | undefined = undefined,\n  TStrict extends boolean = true,\n  TSelected = unknown,\n>({\n  injector,\n  ...opts\n}: LoaderDataOptions<TRouter, TFrom, TStrict, TSelected>): Signal<\n  UseLoaderDataResult<TRouter, TFrom, TStrict, TSelected>\n> {\n  !injector && assertInInjectionContext(loaderData);\n\n  if (!injector) {\n    injector = inject(Injector);\n  }\n\n  return runInInjectionContext(injector, () => {\n    return toSignal(loaderData$({ injector, ...opts } as unknown as any), {\n      injector,\n    });\n  }) as any;\n}\n","import {\n  Injector,\n  assertInInjectionContext,\n  inject,\n  runInInjectionContext,\n} from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { match$ } from './match';\n\nimport type { Signal } from '@angular/core';\nimport type {\n  AnyRouter,\n  ResolveUseLoaderDeps,\n  StrictOrFrom,\n  UseLoaderDepsResult,\n} from '@tanstack/router-core';\nimport type { RegisteredRouter } from './register';\nimport type { Observable } from 'rxjs';\n\nexport interface LoaderDepsBaseOptions<\n  TRouter extends AnyRouter,\n  TFrom,\n  TSelected,\n> {\n  select?: (deps: ResolveUseLoaderDeps<TRouter, TFrom>) => TSelected;\n  injector?: Injector;\n}\n\nexport type LoaderDepsOptions<\n  TRouter extends AnyRouter,\n  TFrom extends string | undefined,\n  TSelected,\n> = StrictOrFrom<TRouter, TFrom> &\n  LoaderDepsBaseOptions<TRouter, TFrom, TSelected>;\n\nexport type LoaderDepsRoute<TObservable extends boolean, out TId> = <\n  TRouter extends AnyRouter = RegisteredRouter,\n  TSelected = unknown,\n>(\n  opts?: LoaderDepsBaseOptions<TRouter, TId, TSelected>,\n) => TObservable extends true\n  ? Observable<UseLoaderDepsResult<TRouter, TId, TSelected>>\n  : Signal<UseLoaderDepsResult<TRouter, TId, TSelected>>;\n\nexport function loaderDeps$<\n  TRouter extends AnyRouter = RegisteredRouter,\n  const TFrom extends string | undefined = undefined,\n  TSelected = unknown,\n>({\n  injector,\n  ...opts\n}: LoaderDepsOptions<TRouter, TFrom, TSelected>): Observable<\n  UseLoaderDepsResult<TRouter, TFrom, TSelected>\n> {\n  !injector && assertInInjectionContext(loaderDeps$);\n\n  if (!injector) {\n    injector = inject(Injector);\n  }\n\n  return runInInjectionContext(injector, () => {\n    const { select, ...rest } = opts;\n    return match$({\n      ...rest,\n      select: (s) => {\n        return select ? select(s.loaderDeps) : s.loaderDeps;\n      },\n    }) as Observable<UseLoaderDepsResult<TRouter, TFrom, TSelected>>;\n  });\n}\n\nexport function loaderDeps<\n  TRouter extends AnyRouter = RegisteredRouter,\n  const TFrom extends string | undefined = undefined,\n  TSelected = unknown,\n>({\n  injector,\n  ...opts\n}: LoaderDepsOptions<TRouter, TFrom, TSelected>): Signal<\n  UseLoaderDepsResult<TRouter, TFrom, TSelected>\n> {\n  !injector && assertInInjectionContext(loaderDeps);\n\n  if (!injector) {\n    injector = inject(Injector);\n  }\n\n  return runInInjectionContext(injector, () => {\n    return toSignal(loaderDeps$({ injector, ...opts }), { injector });\n  }) as any;\n}\n","import {\n  Injector,\n  assertInInjectionContext,\n  inject,\n  runInInjectionContext,\n} from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { match$ } from './match';\n\nimport type { Signal } from '@angular/core';\nimport type {\n  AnyRouter,\n  ResolveUseParams,\n  StrictOrFrom,\n  ThrowConstraint,\n  ThrowOrOptional,\n  UseParamsResult,\n} from '@tanstack/router-core';\nimport type { RegisteredRouter } from './register';\nimport type { Observable } from 'rxjs';\n\nexport interface ParamsBaseOptions<\n  TRouter extends AnyRouter,\n  TFrom,\n  TStrict extends boolean,\n  TThrow extends boolean,\n  TSelected,\n> {\n  select?: (params: ResolveUseParams<TRouter, TFrom, TStrict>) => TSelected;\n  shouldThrow?: TThrow;\n  injector?: Injector;\n}\n\nexport type ParamsOptions<\n  TRouter extends AnyRouter,\n  TFrom extends string | undefined,\n  TStrict extends boolean,\n  TThrow extends boolean,\n  TSelected,\n> = StrictOrFrom<TRouter, TFrom, TStrict> &\n  ParamsBaseOptions<TRouter, TFrom, TStrict, TThrow, TSelected>;\n\nexport type ParamsRoute<TObservable extends boolean, out TFrom> = <\n  TRouter extends AnyRouter = RegisteredRouter,\n  TSelected = unknown,\n>(\n  opts?: ParamsBaseOptions<\n    TRouter,\n    TFrom,\n    /* TStrict */ true,\n    /* TThrow */ true,\n    TSelected\n  >,\n) => TObservable extends true\n  ? Observable<UseParamsResult<TRouter, TFrom, true, TSelected>>\n  : Signal<UseParamsResult<TRouter, TFrom, true, TSelected>>;\n\nexport function params$<\n  TRouter extends AnyRouter = RegisteredRouter,\n  const TFrom extends string | undefined = undefined,\n  TStrict extends boolean = true,\n  TThrow extends boolean = true,\n  TSelected = unknown,\n>({\n  injector,\n  ...opts\n}: ParamsOptions<\n  TRouter,\n  TFrom,\n  TStrict,\n  ThrowConstraint<TStrict, TThrow>,\n  TSelected\n>): Observable<\n  ThrowOrOptional<UseParamsResult<TRouter, TFrom, TStrict, TSelected>, TThrow>\n> {\n  !injector && assertInInjectionContext(params);\n\n  if (!injector) {\n    injector = inject(Injector);\n  }\n\n  return runInInjectionContext(injector, () => {\n    return match$({\n      from: opts.from!,\n      strict: opts.strict,\n      shouldThrow: opts.shouldThrow,\n      select: (match) => {\n        return opts.select ? opts.select(match.params) : match.params;\n      },\n    }) as any;\n  });\n}\n\nexport function params<\n  TRouter extends AnyRouter = RegisteredRouter,\n  const TFrom extends string | undefined = undefined,\n  TStrict extends boolean = true,\n  TThrow extends boolean = true,\n  TSelected = unknown,\n>({\n  injector,\n  ...opts\n}: ParamsOptions<\n  TRouter,\n  TFrom,\n  TStrict,\n  ThrowConstraint<TStrict, TThrow>,\n  TSelected\n>): Signal<\n  ThrowOrOptional<UseParamsResult<TRouter, TFrom, TStrict, TSelected>, TThrow>\n> {\n  !injector && assertInInjectionContext(params);\n\n  if (!injector) {\n    injector = inject(Injector);\n  }\n\n  return runInInjectionContext(injector, () => {\n    return toSignal(params$({ injector, ...opts } as unknown as any)) as any;\n  });\n}\n","import {\n  Injector,\n  assertInInjectionContext,\n  inject,\n  runInInjectionContext,\n} from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { match$ } from './match';\n\nimport type { Signal } from '@angular/core';\nimport type {\n  AnyRouter,\n  UseRouteContextBaseOptions,\n  UseRouteContextOptions,\n  UseRouteContextResult,\n} from '@tanstack/router-core';\nimport type { RegisteredRouter } from './register';\nimport type { Observable } from 'rxjs';\n\nexport type RouteContextRoute<TObservable extends boolean, out TFrom> = <\n  TRouter extends AnyRouter = RegisteredRouter,\n  TSelected = unknown,\n>(\n  opts?: UseRouteContextBaseOptions<TRouter, TFrom, true, TSelected> & {\n    injector?: Injector;\n  },\n) => TObservable extends true\n  ? Observable<UseRouteContextResult<TRouter, TFrom, true, TSelected>>\n  : Signal<UseRouteContextResult<TRouter, TFrom, true, TSelected>>;\n\nexport function routeContext$<\n  TRouter extends AnyRouter = RegisteredRouter,\n  const TFrom extends string | undefined = undefined,\n  TStrict extends boolean = true,\n  TSelected = unknown,\n>({\n  injector,\n  ...opts\n}: UseRouteContextOptions<TRouter, TFrom, TStrict, TSelected> & {\n  injector?: Injector;\n}): Observable<UseRouteContextResult<TRouter, TFrom, TStrict, TSelected>> {\n  !injector && assertInInjectionContext(routeContext);\n\n  if (!injector) {\n    injector = inject(Injector);\n  }\n\n  return runInInjectionContext(injector, () => {\n    return match$({\n      ...(opts as any),\n      select: (match) => {\n        return opts.select ? opts.select(match.context) : match.context;\n      },\n    }) as any;\n  });\n}\n\nexport function routeContext<\n  TRouter extends AnyRouter = RegisteredRouter,\n  const TFrom extends string | undefined = undefined,\n  TStrict extends boolean = true,\n  TSelected = unknown,\n>({\n  injector,\n  ...opts\n}: UseRouteContextOptions<TRouter, TFrom, TStrict, TSelected> & {\n  injector?: Injector;\n}): Signal<UseRouteContextResult<TRouter, TFrom, TStrict, TSelected>> {\n  !injector && assertInInjectionContext(routeContext);\n\n  if (!injector) {\n    injector = inject(Injector);\n  }\n\n  return runInInjectionContext(injector, () => {\n    return toSignal(\n      routeContext$({ injector, ...opts } as unknown as any),\n    ) as any;\n  });\n}\n","import {\n  Injector,\n  assertInInjectionContext,\n  inject,\n  runInInjectionContext,\n} from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { match$ } from './match';\n\nimport type { Signal } from '@angular/core';\nimport type {\n  AnyRouter,\n  ResolveUseSearch,\n  StrictOrFrom,\n  ThrowConstraint,\n  ThrowOrOptional,\n  UseSearchResult,\n} from '@tanstack/router-core';\nimport type { RegisteredRouter } from './register';\nimport type { Observable } from 'rxjs';\n\nexport interface SearchBaseOptions<\n  TRouter extends AnyRouter,\n  TFrom,\n  TStrict extends boolean,\n  TThrow extends boolean,\n  TSelected,\n> {\n  select?: (state: ResolveUseSearch<TRouter, TFrom, TStrict>) => TSelected;\n  shouldThrow?: TThrow;\n  injector?: Injector;\n}\n\nexport type SearchOptions<\n  TRouter extends AnyRouter,\n  TFrom,\n  TStrict extends boolean,\n  TThrow extends boolean,\n  TSelected,\n> = StrictOrFrom<TRouter, TFrom, TStrict> &\n  SearchBaseOptions<TRouter, TFrom, TStrict, TThrow, TSelected>;\n\nexport type SearchRoute<TObservable extends boolean, out TFrom> = <\n  TRouter extends AnyRouter = RegisteredRouter,\n  TSelected = unknown,\n>(\n  opts?: SearchBaseOptions<\n    TRouter,\n    TFrom,\n    /* TStrict */ true,\n    /* TThrow */ true,\n    TSelected\n  >,\n) => TObservable extends true\n  ? Observable<UseSearchResult<TRouter, TFrom, true, TSelected>>\n  : Signal<UseSearchResult<TRouter, TFrom, true, TSelected>>;\n\nexport function search$<\n  TRouter extends AnyRouter = RegisteredRouter,\n  const TFrom extends string | undefined = undefined,\n  TStrict extends boolean = true,\n  TThrow extends boolean = true,\n  TSelected = unknown,\n>({\n  injector,\n  ...opts\n}: SearchOptions<\n  TRouter,\n  TFrom,\n  TStrict,\n  ThrowConstraint<TStrict, TThrow>,\n  TSelected\n>): Observable<\n  ThrowOrOptional<UseSearchResult<TRouter, TFrom, TStrict, TSelected>, TThrow>\n> {\n  !injector && assertInInjectionContext(search);\n\n  if (!injector) {\n    injector = inject(Injector);\n  }\n\n  return runInInjectionContext(injector, () => {\n    return match$({\n      from: opts.from!,\n      strict: opts.strict,\n      shouldThrow: opts.shouldThrow,\n      select: (match) => {\n        return opts.select ? opts.select(match.search) : match.search;\n      },\n    }) as any;\n  });\n}\n\nexport function search<\n  TRouter extends AnyRouter = RegisteredRouter,\n  const TFrom extends string | undefined = undefined,\n  TStrict extends boolean = true,\n  TThrow extends boolean = true,\n  TSelected = unknown,\n>({\n  injector,\n  ...opts\n}: SearchOptions<\n  TRouter,\n  TFrom,\n  TStrict,\n  ThrowConstraint<TStrict, TThrow>,\n  TSelected\n>): Signal<\n  ThrowOrOptional<UseSearchResult<TRouter, TFrom, TStrict, TSelected>, TThrow>\n> {\n  !injector && assertInInjectionContext(search);\n\n  if (!injector) {\n    injector = inject(Injector);\n  }\n\n  return runInInjectionContext(injector, () => {\n    return toSignal(search$({ injector, ...opts } as unknown as any)) as any;\n  });\n}\n","import { InjectionToken, runInInjectionContext } from '@angular/core';\nimport { BaseRootRoute, BaseRoute, BaseRouteApi } from '@tanstack/router-core';\nimport { loaderData, loaderData$ } from './loader-data';\nimport { loaderDeps, loaderDeps$ } from './loader-deps';\nimport { match, match$ } from './match';\nimport { params, params$ } from './params';\nimport { routeContext, routeContext$ } from './route-context';\nimport { search, search$ } from './search';\n\nimport type { Provider, Type } from '@angular/core';\nimport type {\n  AnyContext,\n  AnyRoute,\n  AnyRouter,\n  ConstrainLiteral,\n  ErrorComponentProps,\n  NotFoundRouteProps,\n  Register,\n  ResolveFullPath,\n  ResolveId,\n  ResolveParams,\n  RootRouteId,\n  RootRouteOptions,\n  RouteConstraints,\n  RouteIds,\n  RouteOptions,\n} from '@tanstack/router-core';\nimport type { RegisteredRouter } from './register';\nimport type { LoaderDataRoute } from './loader-data';\nimport type { LoaderDepsRoute } from './loader-deps';\nimport type { MatchRoute } from './match';\nimport type { ParamsRoute } from './params';\nimport type { RouteContextRoute } from './route-context';\nimport type { SearchRoute } from './search';\n\ndeclare module '@tanstack/router-core' {\n  export interface UpdatableRouteOptionsExtensions {\n    component?: () => RouteComponent;\n    errorComponent?: false | null | (() => RouteComponent);\n    notFoundComponent?: () => RouteComponent;\n    pendingComponent?: () => RouteComponent;\n    providers?: Array<Provider>;\n  }\n\n  export interface RouteExtensions<\n    TId extends string,\n    TFullPath extends string,\n  > {\n    match$: MatchRoute<true, TId>;\n    match: MatchRoute<false, TId>;\n    routeContext$: RouteContextRoute<true, TId>;\n    routeContext: RouteContextRoute<false, TId>;\n    search$: SearchRoute<true, TId>;\n    search: SearchRoute<false, TId>;\n    params$: ParamsRoute<true, TId>;\n    params: ParamsRoute<false, TId>;\n    loaderDeps$: LoaderDepsRoute<true, TId>;\n    loaderDeps: LoaderDepsRoute<false, TId>;\n    loaderData$: LoaderDataRoute<true, TId>;\n    loaderData: LoaderDataRoute<false, TId>;\n  }\n}\n\nexport const ERROR_COMPONENT_CONTEXT = new InjectionToken<ErrorComponentProps>(\n  'ERROR_COMPONENT_CONTEXT',\n);\nexport const NOT_FOUND_COMPONENT_CONTEXT =\n  new InjectionToken<NotFoundRouteProps>('NOT_FOUND_COMPONENT_CONTEXT');\n\nexport type RouteComponent<TComponent extends object = object> =\n  Type<TComponent>;\n\nexport function routeApi<\n  const TId,\n  TRouter extends AnyRouter = RegisteredRouter,\n>(id: ConstrainLiteral<TId, RouteIds<TRouter['routeTree']>>) {\n  return new RouteApi<TId, TRouter>({ id });\n}\n\nexport class RouteApi<\n  TId,\n  TRouter extends AnyRouter = RegisteredRouter,\n> extends BaseRouteApi<TId, TRouter> {\n  /**\n   * @deprecated Use the `getRouteApi` function instead.\n   */\n  constructor({ id }: { id: TId }) {\n    super({ id });\n  }\n\n  match$: MatchRoute<true, TId> = (opts) =>\n    match$({ ...opts, from: this.id } as any) as any;\n  match: MatchRoute<false, TId> = (opts) =>\n    match({ ...opts, from: this.id } as any) as any;\n\n  routeContext$: RouteContextRoute<true, TId> = (opts) =>\n    routeContext$({ ...opts, from: this.id } as unknown as any);\n  routeContext: RouteContextRoute<false, TId> = (opts) =>\n    routeContext({ ...opts, from: this.id } as unknown as any);\n\n  search$: SearchRoute<true, TId> = (opts) =>\n    search$({ ...opts, from: this.id } as any) as any;\n  search: SearchRoute<false, TId> = (opts) =>\n    search({ ...opts, from: this.id } as any) as any;\n\n  params$: ParamsRoute<true, TId> = (opts) =>\n    params$({ ...opts, from: this.id } as any) as any;\n  params: ParamsRoute<false, TId> = (opts) =>\n    params({ ...opts, from: this.id } as any) as any;\n\n  loaderDeps$: LoaderDepsRoute<true, TId> = (opts) =>\n    loaderDeps$({ ...opts, from: this.id } as any);\n  loaderDeps: LoaderDepsRoute<false, TId> = (opts) =>\n    loaderDeps({ ...opts, from: this.id, strict: false } as any);\n\n  loaderData$: LoaderDataRoute<true, TId> = (opts) =>\n    loaderData$({ ...opts, from: this.id } as any);\n  loaderData: LoaderDataRoute<false, TId> = (opts) =>\n    loaderData({ ...opts, from: this.id, strict: false } as any);\n}\n\nexport class Route<\n  in out TParentRoute extends RouteConstraints['TParentRoute'] = AnyRoute,\n  in out TPath extends RouteConstraints['TPath'] = '/',\n  in out TFullPath extends RouteConstraints['TFullPath'] = ResolveFullPath<\n    TParentRoute,\n    TPath\n  >,\n  in out TCustomId extends RouteConstraints['TCustomId'] = string,\n  in out TId extends RouteConstraints['TId'] = ResolveId<\n    TParentRoute,\n    TCustomId,\n    TPath\n  >,\n  in out TSearchValidator = undefined,\n  in out TParams = ResolveParams<TPath>,\n  in out TRouterContext = AnyContext,\n  in out TRouteContextFn = AnyContext,\n  in out TBeforeLoadFn = AnyContext,\n  in out TLoaderDeps extends Record<string, any> = {},\n  in out TLoaderFn = undefined,\n  in out TChildren = unknown,\n  in out TFileRouteTypes = unknown,\n> extends BaseRoute<\n  TParentRoute,\n  AnyRoute,\n  TPath,\n  TFullPath,\n  TCustomId,\n  TId,\n  TSearchValidator,\n  TParams,\n  TRouterContext,\n  TRouteContextFn,\n  TBeforeLoadFn,\n  TLoaderDeps,\n  TLoaderFn,\n  TChildren,\n  TFileRouteTypes\n> {\n  /**\n   * @deprecated Use the `createRoute` function instead.\n   */\n  constructor(\n    options?: RouteOptions<\n      TParentRoute,\n      AnyRoute,\n      TId,\n      TCustomId,\n      TFullPath,\n      TPath,\n      TSearchValidator,\n      TParams,\n      TLoaderDeps,\n      TLoaderFn,\n      TRouterContext,\n      TRouteContextFn,\n      TBeforeLoadFn\n    >,\n  ) {\n    super(options);\n  }\n\n  match$: MatchRoute<true, TId> = (opts) =>\n    match$({ ...opts, from: this.id } as any) as any;\n  match: MatchRoute<false, TId> = (opts) =>\n    match({ ...opts, from: this.id } as any) as any;\n\n  routeContext$: RouteContextRoute<true, TId> = (opts) =>\n    routeContext$({ ...opts, from: this.id } as unknown as any);\n  routeContext: RouteContextRoute<false, TId> = (opts) =>\n    routeContext({ ...opts, from: this.id } as unknown as any);\n\n  search$: SearchRoute<true, TId> = (opts) =>\n    search$({ ...opts, from: this.id } as any) as any;\n  search: SearchRoute<false, TId> = (opts) =>\n    search({ ...opts, from: this.id } as any) as any;\n\n  params$: ParamsRoute<true, TId> = (opts) =>\n    params$({ ...opts, from: this.id } as any) as any;\n  params: ParamsRoute<false, TId> = (opts) =>\n    params({ ...opts, from: this.id } as any) as any;\n\n  loaderDeps$: LoaderDepsRoute<true, TId> = (opts) =>\n    loaderDeps$({ ...opts, from: this.id } as any);\n  loaderDeps: LoaderDepsRoute<false, TId> = (opts) =>\n    loaderDeps({ ...opts, from: this.id } as any);\n\n  loaderData$: LoaderDataRoute<true, TId> = (opts) =>\n    loaderData$({ ...opts, from: this.id } as any);\n  loaderData: LoaderDataRoute<false, TId> = (opts) =>\n    loaderData({ ...opts, from: this.id } as any);\n}\n\nexport function createRoute<\n  TParentRoute extends RouteConstraints['TParentRoute'] = AnyRoute,\n  TPath extends RouteConstraints['TPath'] = '/',\n  TFullPath extends RouteConstraints['TFullPath'] = ResolveFullPath<\n    TParentRoute,\n    TPath\n  >,\n  TCustomId extends RouteConstraints['TCustomId'] = string,\n  TId extends RouteConstraints['TId'] = ResolveId<\n    TParentRoute,\n    TCustomId,\n    TPath\n  >,\n  TSearchValidator = undefined,\n  TParams = ResolveParams<TPath>,\n  TRouteContextFn = AnyContext,\n  TBeforeLoadFn = AnyContext,\n  TLoaderDeps extends Record<string, any> = {},\n  TLoaderFn = undefined,\n  TChildren = unknown,\n>(\n  options: RouteOptions<\n    TParentRoute,\n    AnyRoute,\n    TId,\n    TCustomId,\n    TFullPath,\n    TPath,\n    TSearchValidator,\n    TParams,\n    TLoaderDeps,\n    TLoaderFn,\n    AnyContext,\n    TRouteContextFn,\n    TBeforeLoadFn\n  >,\n): Route<\n  TParentRoute,\n  TPath,\n  TFullPath,\n  TCustomId,\n  TId,\n  TSearchValidator,\n  TParams,\n  AnyContext,\n  TRouteContextFn,\n  TBeforeLoadFn,\n  TLoaderDeps,\n  TLoaderFn,\n  TChildren,\n  unknown\n> {\n  if (options.loader && typeof options.loader === 'function') {\n    options.loader = runFnInInjectionContext(options.loader);\n  }\n\n  if (options.shouldReload && typeof options.shouldReload === 'function') {\n    options.shouldReload = runFnInInjectionContext(options.shouldReload);\n  }\n\n  if (options.beforeLoad) {\n    options.beforeLoad = runFnInInjectionContext(options.beforeLoad);\n  }\n\n  return new Route<\n    TParentRoute,\n    TPath,\n    TFullPath,\n    TCustomId,\n    TId,\n    TSearchValidator,\n    TParams,\n    AnyContext,\n    TRouteContextFn,\n    TBeforeLoadFn,\n    TLoaderDeps,\n    TLoaderFn,\n    TChildren,\n    unknown\n  >(options);\n}\n\nexport type AnyRootRoute = RootRoute<any, any, any, any, any, any, any, any>;\n\nexport function createRootRouteWithContext<TRouterContext extends {}>() {\n  return <\n    TRegister = Register,\n    TRouteContextFn = AnyContext,\n    TBeforeLoadFn = AnyContext,\n    TSearchValidator = undefined,\n    TLoaderDeps extends Record<string, any> = {},\n    TLoaderFn = undefined,\n    TSSR = unknown,\n    TServerMiddlewares = unknown,\n  >(\n    options?: RootRouteOptions<\n      TRegister,\n      TSearchValidator,\n      TRouterContext,\n      TRouteContextFn,\n      TBeforeLoadFn,\n      TLoaderDeps,\n      TLoaderFn,\n      TSSR,\n      TServerMiddlewares\n    >,\n  ) => {\n    return createRootRoute<\n      TRegister,\n      TSearchValidator,\n      TRouterContext,\n      TRouteContextFn,\n      TBeforeLoadFn,\n      TLoaderDeps,\n      TLoaderFn,\n      TSSR,\n      TServerMiddlewares\n    >(options);\n  };\n}\n\nexport class RootRoute<\n  in out TRegister = unknown,\n  in out TSearchValidator = undefined,\n  in out TRouterContext = {},\n  in out TRouteContextFn = AnyContext,\n  in out TBeforeLoadFn = AnyContext,\n  in out TLoaderDeps extends Record<string, any> = {},\n  in out TLoaderFn = undefined,\n  in out TChildren = unknown,\n  in out TFileRouteTypes = unknown,\n  in out TSSR = unknown,\n  in out TServerMiddlewares = unknown,\n  in out THandlers = undefined,\n> extends BaseRootRoute<\n  TRegister,\n  TSearchValidator,\n  TRouterContext,\n  TRouteContextFn,\n  TBeforeLoadFn,\n  TLoaderDeps,\n  TLoaderFn,\n  TChildren,\n  TFileRouteTypes,\n  TSSR,\n  TServerMiddlewares,\n  THandlers\n> {\n  /**\n   * @deprecated `RootRoute` is now an internal implementation detail. Use `createRootRoute()` instead.\n   */\n  constructor(\n    options?: RootRouteOptions<\n      TRegister,\n      TSearchValidator,\n      TRouterContext,\n      TRouteContextFn,\n      TBeforeLoadFn,\n      TLoaderDeps,\n      TLoaderFn,\n      TSSR,\n      TServerMiddlewares,\n      THandlers\n    >,\n  ) {\n    super(options);\n  }\n\n  match$: MatchRoute<true, RootRouteId> = (opts) =>\n    match$({ ...opts, from: this.id } as any) as any;\n  match: MatchRoute<false, RootRouteId> = (opts) =>\n    match({ ...opts, from: this.id } as any) as any;\n\n  routeContext$: RouteContextRoute<true, RootRouteId> = (opts) =>\n    routeContext$({ ...opts, from: this.id } as unknown as any);\n  routeContext: RouteContextRoute<false, RootRouteId> = (opts) =>\n    routeContext({ ...opts, from: this.id } as unknown as any);\n\n  search$: SearchRoute<true, RootRouteId> = (opts) =>\n    search$({ ...opts, from: this.id } as any) as any;\n  search: SearchRoute<false, RootRouteId> = (opts) =>\n    search({ ...opts, from: this.id } as any) as any;\n\n  params$: ParamsRoute<true, RootRouteId> = (opts) =>\n    params$({ ...opts, from: this.id } as any) as any;\n  params: ParamsRoute<false, RootRouteId> = (opts) =>\n    params({ ...opts, from: this.id } as any) as any;\n\n  loaderDeps$: LoaderDepsRoute<true, RootRouteId> = (opts) =>\n    loaderDeps$({ ...opts, from: this.id } as any);\n  loaderDeps: LoaderDepsRoute<false, RootRouteId> = (opts) =>\n    loaderDeps({ ...opts, from: this.id } as any);\n\n  loaderData$: LoaderDataRoute<true, RootRouteId> = (opts) =>\n    loaderData$({ ...opts, from: this.id } as any);\n  loaderData: LoaderDataRoute<false, RootRouteId> = (opts) =>\n    loaderData({ ...opts, from: this.id } as any);\n}\n\nexport function createRootRoute<\n  TRegister = Register,\n  TSearchValidator = undefined,\n  TRouterContext = {},\n  TRouteContextFn = AnyContext,\n  TBeforeLoadFn = AnyContext,\n  TLoaderDeps extends Record<string, any> = {},\n  TLoaderFn = undefined,\n  TSSR = unknown,\n  const TServerMiddlewares = unknown,\n  THandlers = undefined,\n>(\n  options?: RootRouteOptions<\n    TRegister,\n    TSearchValidator,\n    TRouterContext,\n    TRouteContextFn,\n    TBeforeLoadFn,\n    TLoaderDeps,\n    TLoaderFn,\n    TSSR,\n    TServerMiddlewares,\n    THandlers\n  >,\n): RootRoute<\n  TRegister,\n  TSearchValidator,\n  TRouterContext,\n  TRouteContextFn,\n  TBeforeLoadFn,\n  TLoaderDeps,\n  TLoaderFn,\n  unknown,\n  unknown,\n  TSSR,\n  TServerMiddlewares,\n  THandlers\n> {\n  return new RootRoute<\n    TRegister,\n    TSearchValidator,\n    TRouterContext,\n    TRouteContextFn,\n    TBeforeLoadFn,\n    TLoaderDeps,\n    TLoaderFn,\n    unknown,\n    unknown,\n    TSSR,\n    TServerMiddlewares,\n    THandlers\n  >(options);\n}\n\nexport class NotFoundRoute<\n  TParentRoute extends AnyRootRoute,\n  TRouterContext = AnyContext,\n  TRouteContextFn = AnyContext,\n  TBeforeLoadFn = AnyContext,\n  TSearchValidator = undefined,\n  TLoaderDeps extends Record<string, any> = {},\n  TLoaderFn = undefined,\n  TChildren = unknown,\n> extends Route<\n  TParentRoute,\n  '/404',\n  '/404',\n  '404',\n  '404',\n  TSearchValidator,\n  {},\n  TRouterContext,\n  TRouteContextFn,\n  TBeforeLoadFn,\n  TLoaderDeps,\n  TLoaderFn,\n  TChildren\n> {\n  constructor(\n    options: Omit<\n      RouteOptions<\n        TParentRoute,\n        AnyRoute,\n        string,\n        string,\n        string,\n        string,\n        TSearchValidator,\n        {},\n        TLoaderDeps,\n        TLoaderFn,\n        TRouterContext,\n        TRouteContextFn,\n        TBeforeLoadFn\n      >,\n      | 'caseSensitive'\n      | 'parseParams'\n      | 'stringifyParams'\n      | 'path'\n      | 'id'\n      | 'params'\n    >,\n  ) {\n    super({\n      ...(options as any),\n      id: '404',\n    });\n  }\n}\n\nfunction runFnInInjectionContext<TFn extends (...args: Array<any>) => any>(\n  fn: TFn,\n) {\n  const originalFn = fn;\n  return (...args: Parameters<TFn>) => {\n    const { context, location, route } = args[0];\n    const routeInjector = context.getRouteInjector(route?.id || location.href);\n    return runInInjectionContext(routeInjector, originalFn.bind(null, ...args));\n  };\n}\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  inject,\n  signal,\n} from '@angular/core';\nimport { ERROR_COMPONENT_CONTEXT } from './route';\n\n@Component({\n  selector: 'default-error,DefaultError',\n  template: `\n    <div style=\"display: flex; align-items: center; gap: 0.5rem\">\n      <strong style=\"font-size: 1rem\">Something went wrong!</strong>\n      <button\n        style=\"appearance: none; font-size: 0.6em; border: 1px solid currentColor; padding: 0.1rem 0.2rem; font-weight: bold; border-radius: 0.25rem\"\n        (click)=\"show.set(!show())\"\n      >\n        {{ show() ? 'Hide Error' : 'Show Error' }}\n      </button>\n    </div>\n    <div style=\"height: 0.25rem\"></div>\n    @if (show()) {\n      <div>\n        <pre\n          style=\"font-size: 0.7em; border: 1px solid red; border-radius: 0.25rem; padding: 0.3rem; color: red; overflow: auto\"\n        >\n          @if (context.error.message; as message) {\n            <code>{{ message }}</code>\n          }\n        </pre>\n      </div>\n    }\n  `,\n  styles: `\n    :host {\n      display: block;\n      padding: 0.5rem;\n      max-width: 100%;\n    }\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DefaultError {\n  protected context = inject(ERROR_COMPONENT_CONTEXT);\n  protected show = signal(false);\n}\n","import { DOCUMENT } from '@angular/common';\nimport {\n  ChangeDetectorRef,\n  DestroyRef,\n  Directive,\n  afterNextRender,\n  inject,\n  linkedSignal,\n  untracked,\n} from '@angular/core';\nimport { getLocationChangeInfo, trimPathRight } from '@tanstack/router-core';\nimport { batch } from '@tanstack/angular-store';\nimport {\n  BehaviorSubject,\n  Subscription,\n  combineLatest,\n  distinctUntilChanged,\n  map,\n  tap,\n} from 'rxjs';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { injectRouter } from './router';\nimport { routerState$ } from './router-state';\n\nimport type { OnInit } from '@angular/core';\n\n@Directive()\nexport class Transitioner implements OnInit {\n  private router = injectRouter();\n  private destroyRef = inject(DestroyRef);\n  private document = inject(DOCUMENT);\n  private cdr = inject(ChangeDetectorRef);\n\n  private matches$ = routerState$({ select: (s) => s.matches });\n  private hasPendingMatches$ = this.matches$.pipe(\n    map((matches) => matches.some((d) => d.status === 'pending')),\n    distinctUntilChanged(),\n  );\n  private isLoading$ = routerState$({ select: (s) => s.isLoading });\n  private previousIsLoading = linkedSignal({\n    source: toSignal(this.isLoading$),\n    computation: (src, prev) => prev?.source ?? src,\n  });\n\n  private isTransitioning$ = new BehaviorSubject(false);\n  private isAnyPending$ = combineLatest([\n    this.isLoading$,\n    this.isTransitioning$,\n    this.hasPendingMatches$,\n  ]).pipe(\n    map(\n      ([isLoading, isTransitioning, hasPendingMatches]) =>\n        isLoading || isTransitioning || hasPendingMatches,\n    ),\n    distinctUntilChanged(),\n  );\n\n  private previousIsAnyPending = linkedSignal({\n    source: toSignal(this.isAnyPending$),\n    computation: (src, prev) => prev?.source ?? src,\n  });\n\n  private isPagePending$ = combineLatest([\n    this.isLoading$,\n    this.hasPendingMatches$,\n  ]).pipe(\n    map(([isLoading, hasPendingMatches]) => isLoading || hasPendingMatches),\n    distinctUntilChanged(),\n  );\n  private previousIsPagePending = linkedSignal({\n    source: toSignal(this.isPagePending$),\n    computation: (src, prev) => prev?.source ?? src,\n  });\n\n  private mountLoadForRouter = { router: this.router, mounted: false };\n\n  private load$ = this.isLoading$.pipe(\n    tap((isLoading) => {\n      const previousIsLoading = untracked(this.previousIsLoading);\n      if (previousIsLoading && !isLoading) {\n        this.router.emit({\n          type: 'onLoad',\n          ...getLocationChangeInfo(\n            this.router.stores.location.get(),\n            this.router.stores.resolvedLocation.get(),\n          ),\n        });\n        this.router.stores.status.set(() => 'idle');\n      }\n    }),\n  );\n  private pagePending$ = this.isPagePending$.pipe(\n    tap((isPagePending) => {\n      const previousIsPagePending = untracked(this.previousIsPagePending);\n      // emit onBeforeRouteMount\n      if (previousIsPagePending && !isPagePending) {\n        this.router.emit({\n          type: 'onBeforeRouteMount',\n          ...getLocationChangeInfo(\n            this.router.stores.location.get(),\n            this.router.stores.resolvedLocation.get(),\n          ),\n        });\n      }\n    }),\n  );\n  private pending$ = this.isAnyPending$.pipe(\n    tap((isAnyPending) => {\n      const previousIsAnyPending = untracked(this.previousIsAnyPending);\n      // The router was pending and now it's not\n      if (previousIsAnyPending && !isAnyPending) {\n        const changeInfo = getLocationChangeInfo(\n          this.router.stores.location.get(),\n          this.router.stores.resolvedLocation.get(),\n        );\n        this.router.emit({\n          type: 'onResolved',\n          ...changeInfo,\n        });\n\n        batch(() => {\n          this.router.stores.status.set(() => 'idle');\n          this.router.stores.resolvedLocation.set(() =>\n            this.router.stores.location.get(),\n          );\n        });\n      }\n    }),\n  );\n\n  constructor() {\n    if (!this.router.isServer) {\n      this.router.startTransition = (fn) => {\n        this.isTransitioning$.next(true);\n        fn();\n        this.isTransitioning$.next(false);\n        this.cdr.detectChanges();\n      };\n    }\n\n    const subscription = new Subscription();\n\n    // Try to load the initial location\n    afterNextRender(() => {\n      untracked(() => {\n        const window = this.document.defaultView;\n        if (\n          (typeof window !== 'undefined' && this.router.ssr) ||\n          (this.mountLoadForRouter.router === this.router &&\n            this.mountLoadForRouter.mounted)\n        ) {\n          return;\n        }\n        this.mountLoadForRouter = { router: this.router, mounted: true };\n        const tryLoad = async () => {\n          try {\n            await this.router.load();\n            this.router.stores.status.set(() => 'idle');\n          } catch (err) {\n            console.error(err);\n          }\n        };\n        void tryLoad();\n      });\n\n      subscription.add(this.load$.subscribe());\n      subscription.add(this.pagePending$.subscribe());\n      subscription.add(this.pending$.subscribe());\n    });\n\n    this.destroyRef.onDestroy(() => subscription.unsubscribe());\n  }\n\n  ngOnInit() {\n    // Subscribe to location changes\n    // and try to load the new location\n    const unsub = this.router.history.subscribe(() => this.router.load());\n\n    const nextLocation = this.router.buildLocation({\n      to: this.router.latestLocation.pathname,\n      search: true,\n      params: true,\n      hash: true,\n      state: true,\n      _includeValidateSearch: true,\n    });\n\n    if (\n      trimPathRight(this.router.latestLocation.href) !==\n      trimPathRight(nextLocation.href)\n    ) {\n      void this.router.commitLocation({ ...nextLocation, replace: true });\n    }\n\n    this.destroyRef.onDestroy(() => unsub());\n  }\n}\n","import {\n  DestroyRef,\n  Directive,\n  Injector,\n  ViewContainerRef,\n  afterNextRender,\n  assertInInjectionContext,\n  inject,\n  runInInjectionContext,\n} from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { combineLatest, distinctUntilChanged, map, of, switchMap } from 'rxjs';\nimport { shallow } from './utils';\nimport { DefaultError } from './default-error';\nimport { MATCH_ID, RouteMatch } from './outlet';\nimport { ERROR_COMPONENT_CONTEXT } from './route';\nimport { injectRouter } from './router';\nimport { routerState$ } from './router-state';\nimport { Transitioner } from './transitioner';\n\nimport type {\n  AnyRouter,\n  MakeRouteMatchUnion,\n  RouterState,\n} from '@tanstack/router-core';\nimport type { RegisteredRouter } from './register';\nimport type { Observable, Subscription } from 'rxjs';\nimport type { ComponentRef, Signal } from '@angular/core';\n\n@Directive({ hostDirectives: [Transitioner] })\nexport class Matches {\n  private router = injectRouter();\n  private injector = inject(Injector);\n  private vcr = inject(ViewContainerRef);\n\n  private defaultPendingComponent =\n    this.router.options.defaultPendingComponent?.();\n\n  private resetKey$ = routerState$({ select: (s) => s.loadedAt.toString() });\n  private rootMatchId$ = routerState$({ select: (s) => s.matches[0]?.id });\n\n  private matchLoad$ = this.rootMatchId$.pipe(\n    switchMap((rootMatchId) => {\n      if (!rootMatchId) return of({ pending: false });\n      const loadPromise =\n        this.router.getMatch(rootMatchId)?._nonReactive.loadPromise;\n      if (!loadPromise) return of({ pending: false });\n      return of({ pending: true }).pipe(\n        switchMap(() => loadPromise.then(() => ({ pending: false }))),\n      );\n    }),\n  );\n\n  private cmpRef?: ComponentRef<any>;\n\n  private run$ = this.matchLoad$.pipe(\n    switchMap(({ pending }) => {\n      if (pending) {\n        if (this.defaultPendingComponent) {\n          return of({\n            component: this.defaultPendingComponent,\n            clearView: true,\n            matchId: null,\n          } as const);\n        }\n        return of(null);\n      }\n\n      return combineLatest([this.rootMatchId$, this.resetKey$]).pipe(\n        map(([matchId]) => {\n          if (!matchId) return null;\n          if (this.cmpRef) return { clearView: false } as const;\n          return {\n            component: RouteMatch,\n            matchId,\n            clearView: true,\n          } as const;\n        }),\n      );\n    }),\n  );\n\n  constructor() {\n    let subscription: Subscription;\n    afterNextRender(() => {\n      subscription = this.run$.subscribe({\n        next: (runData) => {\n          if (!runData) return;\n          if (!runData.clearView) {\n            this.cmpRef?.changeDetectorRef.markForCheck();\n            return;\n          }\n          const { component, matchId } = runData;\n          this.vcr.clear();\n          this.cmpRef = this.vcr.createComponent(component);\n          if (matchId) {\n            this.cmpRef.setInput('matchId', matchId);\n          }\n          this.cmpRef.changeDetectorRef.markForCheck();\n        },\n        error: (error) => {\n          console.error(error);\n          const injector = Injector.create({\n            providers: [\n              {\n                provide: ERROR_COMPONENT_CONTEXT,\n                useValue: {\n                  error: error,\n                  info: { componentStack: '' },\n                  reset: () => void this.router.invalidate(),\n                },\n              },\n            ],\n            parent: this.injector,\n          });\n          this.vcr.clear();\n          const ref = this.vcr.createComponent(DefaultError, { injector });\n          ref.changeDetectorRef.markForCheck();\n          this.cmpRef = undefined;\n        },\n      });\n    });\n\n    inject(DestroyRef).onDestroy(() => {\n      subscription.unsubscribe();\n      this.vcr.clear();\n      this.cmpRef = undefined;\n    });\n  }\n}\n\nexport interface MatchesBaseOptions<TRouter extends AnyRouter, TSelected> {\n  select?: (matches: Array<MakeRouteMatchUnion<TRouter>>) => TSelected;\n  injector?: Injector;\n}\n\nexport type MatchesResult<\n  TRouter extends AnyRouter,\n  TSelected,\n> = unknown extends TSelected ? Array<MakeRouteMatchUnion<TRouter>> : TSelected;\n\nexport function matches$<\n  TRouter extends AnyRouter = RegisteredRouter,\n  TSelected = unknown,\n>({\n  injector,\n  ...opts\n}: MatchesBaseOptions<TRouter, TSelected> = {}): Observable<\n  MatchesResult<TRouter, TSelected>\n> {\n  !injector && assertInInjectionContext(matches$);\n\n  if (!injector) {\n    injector = inject(Injector);\n  }\n\n  return runInInjectionContext(injector, () => {\n    return routerState$({\n      injector,\n      select: (state: RouterState<TRouter['routeTree']>) => {\n        const matches = state.matches;\n        return opts.select\n          ? opts.select(matches as Array<MakeRouteMatchUnion<TRouter>>)\n          : matches;\n      },\n    }) as Observable<MatchesResult<TRouter, TSelected>>;\n  });\n}\n\nexport function matches<\n  TRouter extends AnyRouter = RegisteredRouter,\n  TSelected = unknown,\n>({ injector, ...opts }: MatchesBaseOptions<TRouter, TSelected> = {}): Signal<\n  MatchesResult<TRouter, TSelected>\n> {\n  !injector && assertInInjectionContext(matches);\n\n  if (!injector) {\n    injector = inject(Injector);\n  }\n\n  return runInInjectionContext(injector, () => {\n    return toSignal(matches$({ injector, ...opts })) as Signal<\n      MatchesResult<TRouter, TSelected>\n    >;\n  });\n}\n\nexport function parentMatches$<\n  TRouter extends AnyRouter = RegisteredRouter,\n  TSelected = unknown,\n>({\n  injector,\n  ...opts\n}: MatchesBaseOptions<TRouter, TSelected> = {}): Observable<\n  MatchesResult<TRouter, TSelected>\n> {\n  !injector && assertInInjectionContext(parentMatches$);\n\n  if (!injector) {\n    injector = inject(Injector);\n  }\n\n  return runInInjectionContext(injector, () => {\n    const closestMatch = inject(MATCH_ID);\n    return routerState$({ injector, select: (s) => s.matches }).pipe(\n      map((matches) => {\n        const sliced = matches.slice(\n          0,\n          matches.findIndex((d) => d.id === closestMatch),\n        );\n        return opts.select\n          ? opts.select(sliced as Array<MakeRouteMatchUnion<TRouter>>)\n          : sliced;\n      }),\n      distinctUntilChanged(shallow) as any,\n    );\n  });\n}\n\nexport function parentMatches<\n  TRouter extends AnyRouter = RegisteredRouter,\n  TSelected = unknown,\n>({ injector, ...opts }: MatchesBaseOptions<TRouter, TSelected> = {}): Signal<\n  MatchesResult<TRouter, TSelected>\n> {\n  !injector && assertInInjectionContext(parentMatches);\n\n  if (!injector) {\n    injector = inject(Injector);\n  }\n\n  return runInInjectionContext(injector, () => {\n    return toSignal(parentMatches$({ injector, ...opts })) as Signal<\n      MatchesResult<TRouter, TSelected>\n    >;\n  });\n}\nexport function childMatches$<\n  TRouter extends AnyRouter = RegisteredRouter,\n  TSelected = unknown,\n>({\n  injector,\n  ...opts\n}: MatchesBaseOptions<TRouter, TSelected> = {}): Observable<\n  MatchesResult<TRouter, TSelected>\n> {\n  !injector && assertInInjectionContext(childMatches$);\n\n  if (!injector) {\n    injector = inject(Injector);\n  }\n\n  return runInInjectionContext(injector, () => {\n    const closestMatch = inject(MATCH_ID);\n    return routerState$({ injector, select: (s) => s.matches }).pipe(\n      map((matches) => {\n        const sliced = matches.slice(\n          matches.findIndex((d) => d.id === closestMatch) + 1,\n        );\n        return opts.select\n          ? opts.select(sliced as Array<MakeRouteMatchUnion<TRouter>>)\n          : sliced;\n      }),\n      distinctUntilChanged(shallow) as any,\n    );\n  });\n}\n\nexport function childMatches<\n  TRouter extends AnyRouter = RegisteredRouter,\n  TSelected = unknown,\n>({ injector, ...opts }: MatchesBaseOptions<TRouter, TSelected> = {}): Signal<\n  MatchesResult<TRouter, TSelected>\n> {\n  !injector && assertInInjectionContext(childMatches);\n\n  if (!injector) {\n    injector = inject(Injector);\n  }\n\n  return runInInjectionContext(injector, () => {\n    return toSignal(childMatches$({ injector, ...opts })) as Signal<\n      MatchesResult<TRouter, TSelected>\n    >;\n  });\n}\n","import {\n  Directive,\n  ElementRef,\n  afterRenderEffect,\n  computed,\n  inject,\n  input,\n  signal,\n  untracked,\n} from '@angular/core';\nimport { toObservable, toSignal } from '@angular/core/rxjs-interop';\nimport {\n  deepEqual,\n  exactPathTest,\n  preloadWarning,\n  removeTrailingSlash,\n} from '@tanstack/router-core';\nimport { combineLatest, distinctUntilChanged, map } from 'rxjs';\nimport { matches$ } from './matches';\nimport { injectRouter } from './router';\nimport { routerState, routerState$ } from './router-state';\nimport { shallow } from './utils';\n\nimport type {\n  AnyRouter,\n  Constrain,\n  InferFrom,\n  InferMaskFrom,\n  InferMaskTo,\n  InferTo,\n  LinkOptions,\n} from '@tanstack/router-core';\nimport type {\n  LinkDirectiveInput,\n  LinkDirectiveObjectInput,\n  LinkDirectiveOutput,\n  RegisteredRouter,\n} from './register';\n\n@Directive({\n  selector: 'a[link]',\n  exportAs: 'link',\n  host: {\n    '(click)': 'handleClick($event)',\n    '(focus)': 'handleFocus()',\n    '(touchstart)': 'handleClick($event)',\n    '(mouseenter)': 'handleMouseEnter()',\n    '(mouseleave)': 'handleMouseLeave()',\n    '[class]': 'activeClass()',\n    '[attr.data-active]': 'isActive()',\n    '[attr.data-type]': 'type()',\n    '[attr.data-transitioning]':\n      'transitioning() ? \"transitioning\" : undefined',\n    '[attr.href]': 'hostHref()',\n    '[attr.role]': 'disabled() ? \"link\" : undefined',\n    '[attr.aria-disabled]': 'disabled()',\n    '[attr.aria-current]': 'isActive() ? \"page\" : undefined',\n    '[attr.data-from]': 'from()',\n  },\n})\nexport class Link {\n  linkOptions = input.required({\n    alias: 'link',\n    transform: (value: LinkDirectiveInput): LinkDirectiveOutput => {\n      return (\n        typeof value === 'object' ? value : { to: value }\n      ) as LinkDirectiveOutput;\n    },\n  });\n  linkActiveOptions = input(\n    { class: 'active' },\n    {\n      alias: 'linkActive',\n      transform: (\n        value: (LinkOptions['activeOptions'] & { class?: string }) | string,\n      ) => {\n        if (typeof value === 'string') return { class: value };\n\n        if (!value.class) value.class = 'active';\n        return value;\n      },\n    },\n  );\n\n  private router = injectRouter();\n  hostElement = inject<ElementRef<HTMLAnchorElement>>(ElementRef);\n\n  private currentSearch = routerState({ select: (s) => s.location.searchStr });\n\n  protected disabled = computed(() => this.linkOptions()['disabled']);\n  private to = computed(() => this.linkOptions()['to']);\n  private userFrom = computed(() => this.linkOptions()['from']);\n  private userReloadDocument = computed(\n    () => this.linkOptions()['reloadDocument'],\n  );\n  private userPreload = computed(() => this.linkOptions()['preload']);\n  private userPreloadDelay = computed(() => this.linkOptions()['preloadDelay']);\n\n  private activeOptions = computed(\n    () => this.linkOptions().activeOptions || this.linkActiveOptions(),\n  );\n  private exactActiveOptions = computed(() => this.activeOptions().exact);\n  private includeHashActiveOptions = computed(\n    () => this.activeOptions().includeHash,\n  );\n  private includeSearchActiveOptions = computed(\n    () => this.activeOptions().includeSearch,\n  );\n\n  protected type = computed(() => {\n    const to = this.to();\n    try {\n      new URL(`${to}`);\n      return 'external';\n    } catch {\n      return 'internal';\n    }\n  });\n\n  // when `from` is not supplied, use the leaf route of the current matches as the `from` location\n  // so relative routing works as expected\n  protected from = toSignal(\n    combineLatest([\n      toObservable(this.userFrom),\n      matches$({ select: (matches) => matches[matches.length - 1]?.fullPath }),\n    ]).pipe(\n      map(([userFrom, from]) => userFrom ?? from),\n      distinctUntilChanged(shallow),\n    ),\n  );\n\n  private navigateOptions = computed(() => {\n    return { ...this.linkOptions(), from: this.from() };\n  });\n\n  private next = computed(() => {\n    const [options] = [this.navigateOptions(), this.currentSearch()];\n    try {\n      return this.router.buildLocation(options as any);\n    } catch {\n      return null;\n    }\n  });\n\n  private preload = computed(() => {\n    const userReloadDocument = this.userReloadDocument();\n    if (userReloadDocument) return false;\n    const userPreload = this.userPreload();\n    if (userPreload) return userPreload;\n    return this.router.options.defaultPreload;\n  });\n\n  private preloadDelay = computed(() => {\n    const userPreloadDelay = this.userPreloadDelay();\n    if (userPreloadDelay) return userPreloadDelay;\n    return this.router.options.defaultPreloadDelay;\n  });\n\n  protected hostHref = computed(() => {\n    const [type, to] = [this.type(), this.to()];\n    if (type === 'external') return to;\n\n    const disabled = this.disabled();\n    if (disabled) return undefined;\n\n    const next = this.next();\n    if (!next) return undefined;\n\n    return next.maskedLocation\n      ? this.router.history.createHref(next.maskedLocation.href)\n      : this.router.history.createHref(next.href);\n  });\n\n  transitioning = signal(false);\n\n  isActive = toSignal(\n    combineLatest([\n      toObservable(this.next),\n      toObservable(this.exactActiveOptions),\n      toObservable(this.includeSearchActiveOptions),\n      toObservable(this.includeHashActiveOptions),\n      routerState$({ select: (s) => s.location }),\n    ]).pipe(\n      map(\n        ([next, exact, includeSearchOptions, includeHashOptions, location]) => {\n          if (!next) return false;\n          if (exact) {\n            const testExact = exactPathTest(\n              location.pathname,\n              next.pathname,\n              this.router.basepath,\n            );\n            if (!testExact) return false;\n          } else {\n            const currentPathSplit = removeTrailingSlash(\n              location.pathname,\n              this.router.basepath,\n            ).split('/');\n            const nextPathSplit = removeTrailingSlash(\n              next.pathname,\n              this.router.basepath,\n            ).split('/');\n            const pathIsFuzzyEqual = nextPathSplit.every(\n              (d, i) => d === currentPathSplit[i],\n            );\n            if (!pathIsFuzzyEqual) {\n              return false;\n            }\n          }\n\n          const includeSearch = includeSearchOptions ?? true;\n          if (includeSearch) {\n            const searchTest = deepEqual(location.search, next.search, {\n              partial: !exact,\n              ignoreUndefined: !(includeSearchOptions ?? true),\n            });\n            if (!searchTest) {\n              return false;\n            }\n          }\n\n          const includeHash = includeHashOptions ?? true;\n          if (includeHash) {\n            return location.hash === next.hash;\n          }\n\n          return true;\n        },\n      ),\n    ),\n  );\n  protected activeClass = computed(() =>\n    this.isActive() ? this.activeOptions().class || 'active' : '',\n  );\n\n  constructor() {\n    afterRenderEffect(() => {\n      const [disabled, preload] = [\n        untracked(this.disabled),\n        untracked(this.preload),\n      ];\n      if (!disabled && preload === 'render') {\n        this.doPreload();\n      }\n    });\n\n    afterRenderEffect((onCleanup) => {\n      const unsub = this.router.subscribe('onResolved', () => {\n        this.transitioning.set(false);\n      });\n      onCleanup(() => unsub());\n    });\n  }\n\n  protected handleClick(event: any): void {\n    if (this.type() === 'external') return;\n\n    const [disabled, target] = [\n      this.disabled(),\n      this.hostElement.nativeElement.target,\n    ];\n\n    if (\n      disabled ||\n      this.isCtrlEvent(event) ||\n      event.defaultPrevented ||\n      (target && target !== '_self') ||\n      event.button !== 0\n    ) {\n      return;\n    }\n\n    event.preventDefault();\n    this.transitioning.set(true);\n\n    this.router.navigate(this.navigateOptions() as any);\n  }\n\n  protected handleFocus() {\n    if (this.disabled() || this.type() === 'external') return;\n    if (this.preload()) {\n      this.doPreload();\n    }\n  }\n\n  private preloadTimeout: ReturnType<typeof setTimeout> | null = null;\n  protected handleMouseEnter() {\n    if (\n      this.disabled() ||\n      !this.preload() ||\n      this.isActive() ||\n      this.type() === 'external'\n    )\n      return;\n\n    this.preloadTimeout = setTimeout(() => {\n      this.preloadTimeout = null;\n      this.doPreload();\n    }, this.preloadDelay());\n  }\n\n  protected handleMouseLeave() {\n    if (this.disabled() || this.type() === 'external') return;\n    if (this.preloadTimeout) {\n      clearTimeout(this.preloadTimeout);\n      this.preloadTimeout = null;\n    }\n  }\n\n  private doPreload() {\n    this.router.preloadRoute(this.navigateOptions() as any).catch((err) => {\n      console.warn(err);\n      console.warn(preloadWarning);\n    });\n  }\n\n  private isCtrlEvent(e: MouseEvent) {\n    return e.metaKey || e.altKey || e.ctrlKey || e.shiftKey;\n  }\n}\n\nexport type ValidateLinkOptions<\n  TRouter extends AnyRouter = RegisteredRouter,\n  TOptions = unknown,\n  TDefaultFrom extends string = string,\n> = Constrain<\n  TOptions,\n  Omit<\n    LinkOptions<\n      TRouter,\n      InferFrom<TOptions, TDefaultFrom>,\n      InferTo<TOptions>,\n      InferMaskFrom<TOptions>,\n      InferMaskTo<TOptions>\n    >,\n    'activeOptions'\n  > &\n    Partial<Omit<HTMLAnchorElement, 'search'>> & {\n      label?: string | (() => string);\n      activeOptions?: LinkOptions<\n        TRouter,\n        InferFrom<TOptions, TDefaultFrom>,\n        InferTo<TOptions>,\n        InferMaskFrom<TOptions>,\n        InferMaskTo<TOptions>\n      >['activeOptions'] & { class?: string };\n    }\n>;\n\nexport type ValidateLinkOptionsArray<\n  TRouter extends AnyRouter = RegisteredRouter,\n  TOptions extends ReadonlyArray<any> = ReadonlyArray<unknown>,\n  TDefaultFrom extends string = string,\n> = {\n  [K in keyof TOptions]: ValidateLinkOptions<\n    TRouter,\n    TOptions[K],\n    TDefaultFrom\n  >;\n};\n\nexport type LinkOptionsFnOptions<\n  TOptions,\n  TRouter extends AnyRouter = RegisteredRouter,\n> =\n  TOptions extends ReadonlyArray<any>\n    ? ValidateLinkOptionsArray<TRouter, TOptions>\n    : ValidateLinkOptions<TRouter, TOptions>;\n\nexport type LinkOptionsFn = <\n  const TOptions,\n  TRouter extends AnyRouter = RegisteredRouter,\n>(\n  options: LinkOptionsFnOptions<TOptions, TRouter>,\n) => TOptions;\n\nexport const linkOptions: LinkOptionsFn = (options) => {\n  return options as any;\n};\n","import {\n  Directive,\n  Injector,\n  assertInInjectionContext,\n  computed,\n  inject,\n  input,\n  runInInjectionContext,\n} from '@angular/core';\nimport { toObservable, toSignal } from '@angular/core/rxjs-interop';\nimport { combineLatest, map, switchMap } from 'rxjs';\nimport { Link } from './link';\nimport { injectRouter } from './router';\nimport { routerState$ } from './router-state';\n\nimport type {\n  AnyRouter,\n  DeepPartial,\n  MakeOptionalPathParams,\n  MakeOptionalSearchParams,\n  MaskOptions,\n  RegisteredRouter,\n  MatchRouteOptions as TanstackMatchRouteOptions,\n  ToSubOptionsProps,\n} from '@tanstack/router-core';\n\nexport type MatchRouteOptions<\n  TRouter extends AnyRouter = RegisteredRouter,\n  TFrom extends string = string,\n  TTo extends string | undefined = undefined,\n  TMaskFrom extends string = TFrom,\n  TMaskTo extends string = '',\n> = ToSubOptionsProps<TRouter, TFrom, TTo> &\n  DeepPartial<MakeOptionalSearchParams<TRouter, TFrom, TTo>> &\n  DeepPartial<MakeOptionalPathParams<TRouter, TFrom, TTo>> &\n  MaskOptions<TRouter, TMaskFrom, TMaskTo> &\n  TanstackMatchRouteOptions & { injector?: Injector };\n\nexport function matchRoute$<TRouter extends AnyRouter = RegisteredRouter>({\n  injector,\n}: { injector?: Injector } = {}) {\n  !injector && assertInInjectionContext(matchRoute$);\n\n  if (!injector) {\n    injector = inject(Injector);\n  }\n\n  return runInInjectionContext(injector, () => {\n    const router = injectRouter();\n    const status$ = routerState$({ select: (s) => s.status });\n\n    return <\n      const TFrom extends string = string,\n      const TTo extends string | undefined = undefined,\n      const TMaskFrom extends string = TFrom,\n      const TMaskTo extends string = '',\n    >(\n      opts: MatchRouteOptions<TRouter, TFrom, TTo, TMaskFrom, TMaskTo>,\n    ) => {\n      const { pending, caseSensitive, fuzzy, includeSearch, ...rest } = opts;\n      return status$.pipe(\n        map(() =>\n          router.matchRoute(rest as any, {\n            pending,\n            caseSensitive,\n            fuzzy,\n            includeSearch,\n          }),\n        ),\n      );\n    };\n  });\n}\n\nexport function matchRoute<TRouter extends AnyRouter = RegisteredRouter>({\n  injector,\n}: { injector?: Injector } = {}) {\n  !injector && assertInInjectionContext(matchRoute);\n\n  if (!injector) {\n    injector = inject(Injector);\n  }\n\n  return runInInjectionContext(injector, () => {\n    const matchRoute$Return = matchRoute$({ injector });\n    return <\n      const TFrom extends string = string,\n      const TTo extends string | undefined = undefined,\n      const TMaskFrom extends string = TFrom,\n      const TMaskTo extends string = '',\n    >(\n      opts: MatchRouteOptions<TRouter, TFrom, TTo, TMaskFrom, TMaskTo>,\n    ) => {\n      return toSignal(matchRoute$Return(opts as any), { injector });\n    };\n  });\n}\n\nexport type MakeMatchRouteOptions<\n  TRouter extends AnyRouter = RegisteredRouter,\n  TFrom extends string = string,\n  TTo extends string | undefined = undefined,\n  TMaskFrom extends string = TFrom,\n  TMaskTo extends string = '',\n> = MatchRouteOptions<TRouter, TFrom, TTo, TMaskFrom, TMaskTo>;\n\n@Directive({ selector: '[match]', exportAs: 'matchRoute' })\nexport class MatchRoute<\n  TRouter extends AnyRouter = RegisteredRouter,\n  const TFrom extends string = string,\n  const TTo extends string | undefined = undefined,\n  const TMaskFrom extends string = TFrom,\n  const TMaskTo extends string = '',\n> {\n  matchRoute = input<\n    Partial<MakeMatchRouteOptions<TRouter, TFrom, TTo, TMaskFrom, TMaskTo>>\n  >({}, { alias: 'match' });\n\n  private status$ = routerState$({ select: (s) => s.status });\n  private matchRouteFn = matchRoute$<TRouter>();\n\n  private parentLink = inject(Link, { optional: true });\n  private options = computed(() => {\n    const parentLinkOptions = this.parentLink?.linkOptions();\n    if (!parentLinkOptions) return this.matchRoute();\n    return { ...parentLinkOptions, ...this.matchRoute() };\n  });\n\n  match$ = combineLatest([toObservable(this.options), this.status$]).pipe(\n    switchMap(([matchRoute]) => this.matchRouteFn(matchRoute as any)),\n  );\n  match = toSignal(this.match$);\n}\n","import warning from 'tiny-warning';\nimport { loaderData, loaderData$ } from './loader-data';\nimport { loaderDeps, loaderDeps$ } from './loader-deps';\nimport { match, match$ } from './match';\nimport { params, params$ } from './params';\nimport { createRoute } from './route';\nimport { routeContext, routeContext$ } from './route-context';\nimport { search, search$ } from './search';\n\nimport type {\n  AnyContext,\n  AnyRoute,\n  AnyRouter,\n  Constrain,\n  ConstrainLiteral,\n  FileBaseRouteOptions,\n  FileRoutesByPath,\n  LazyRouteOptions,\n  ResolveParams,\n  RouteById,\n  RouteConstraints,\n  RouteIds,\n  RouteLoaderFn,\n  UpdatableRouteOptions,\n} from '@tanstack/router-core';\nimport type { RegisteredRouter } from './register';\nimport type { LoaderDataRoute } from './loader-data';\nimport type { LoaderDepsRoute } from './loader-deps';\nimport type { MatchRoute } from './match';\nimport type { ParamsRoute } from './params';\nimport type { Route } from './route';\nimport type { RouteContextRoute } from './route-context';\nimport type { SearchRoute } from './search';\n\nexport function createFileRoute<\n  TFilePath extends keyof FileRoutesByPath,\n  TParentRoute extends AnyRoute = FileRoutesByPath[TFilePath]['parentRoute'],\n  TId extends RouteConstraints['TId'] = FileRoutesByPath[TFilePath]['id'],\n  TPath extends RouteConstraints['TPath'] = FileRoutesByPath[TFilePath]['path'],\n  TFullPath extends RouteConstraints['TFullPath'] =\n    FileRoutesByPath[TFilePath]['fullPath'],\n>(\n  path: TFilePath,\n): FileRoute<TFilePath, TParentRoute, TId, TPath, TFullPath>['createRoute'] {\n  return new FileRoute<TFilePath, TParentRoute, TId, TPath, TFullPath>(path, {\n    silent: true,\n  }).createRoute;\n}\n\n/**\n @deprecated It's no longer recommended to use the `FileRoute` class directly.\n  Instead, use `createFileRoute('/path/to/file')(options)` to create a file route.\n */\nexport class FileRoute<\n  TFilePath extends keyof FileRoutesByPath,\n  TParentRoute extends AnyRoute = FileRoutesByPath[TFilePath]['parentRoute'],\n  TId extends RouteConstraints['TId'] = FileRoutesByPath[TFilePath]['id'],\n  TPath extends RouteConstraints['TPath'] = FileRoutesByPath[TFilePath]['path'],\n  TFullPath extends RouteConstraints['TFullPath'] =\n    FileRoutesByPath[TFilePath]['fullPath'],\n> {\n  silent?: boolean;\n\n  constructor(\n    public path: TFilePath,\n    _opts?: { silent: boolean },\n  ) {\n    this.silent = _opts?.silent;\n  }\n\n  createRoute = <\n    TSearchValidator = undefined,\n    TParams = ResolveParams<TPath>,\n    TRouteContextFn = AnyContext,\n    TBeforeLoadFn = AnyContext,\n    TLoaderDeps extends Record<string, any> = {},\n    TLoaderFn = undefined,\n    TChildren = unknown,\n  >(\n    options?: FileBaseRouteOptions<\n      TParentRoute,\n      AnyRoute,\n      TId,\n      TPath,\n      TSearchValidator,\n      TParams,\n      TLoaderDeps,\n      TLoaderFn,\n      AnyContext,\n      TRouteContextFn,\n      TBeforeLoadFn\n    > &\n      UpdatableRouteOptions<\n        TParentRoute,\n        TId,\n        TFullPath,\n        TParams,\n        TSearchValidator,\n        TLoaderFn,\n        TLoaderDeps,\n        AnyContext,\n        TRouteContextFn,\n        TBeforeLoadFn\n      >,\n  ): Route<\n    TParentRoute,\n    TPath,\n    TFullPath,\n    TFilePath,\n    TId,\n    TSearchValidator,\n    TParams,\n    AnyContext,\n    TRouteContextFn,\n    TBeforeLoadFn,\n    TLoaderDeps,\n    TLoaderFn,\n    TChildren,\n    unknown\n  > => {\n    warning(\n      this.silent,\n      'FileRoute is deprecated and will be removed in the next major version. Use the createFileRoute(path)(options) function instead.',\n    );\n    const route = createRoute(options as any);\n    (route as any).isRoot = false;\n    return route as any;\n  };\n}\n\n/**\n @deprecated It's recommended not to split loaders into separate files.\n  Instead, place the loader function in the the main route file, inside the\n  `createFileRoute('/path/to/file)(options)` options.\n */\nexport function FileRouteLoader<\n  TFilePath extends keyof FileRoutesByPath,\n  TRoute extends FileRoutesByPath[TFilePath]['preLoaderRoute'],\n>(\n  _path: TFilePath,\n): <TLoaderFn>(\n  loaderFn: Constrain<\n    TLoaderFn,\n    RouteLoaderFn<\n      TRoute['parentRoute'],\n      TRoute['types']['id'],\n      TRoute['types']['params'],\n      TRoute['types']['loaderDeps'],\n      TRoute['types']['routerContext'],\n      TRoute['types']['routeContextFn'],\n      TRoute['types']['beforeLoadFn']\n    >\n  >,\n) => TLoaderFn {\n  warning(\n    false,\n    `FileRouteLoader is deprecated and will be removed in the next major version. Please place the loader function in the the main route file, inside the \\`createFileRoute('/path/to/file')(options)\\` options`,\n  );\n  return (loaderFn) => loaderFn as any;\n}\n\nexport class LazyRoute<TRoute extends AnyRoute> {\n  options: {\n    id: string;\n  } & LazyRouteOptions;\n\n  constructor(\n    opts: {\n      id: string;\n    } & LazyRouteOptions,\n  ) {\n    this.options = opts;\n  }\n\n  match$: MatchRoute<true, TRoute['id']> = (opts) =>\n    match$({ ...opts, from: this.options.id } as any) as any;\n  match: MatchRoute<false, TRoute['id']> = (opts) =>\n    match({ ...opts, from: this.options.id } as any) as any;\n\n  routeContext$: RouteContextRoute<true, TRoute['id']> = (opts) =>\n    routeContext$({ ...opts, from: this.options.id } as unknown as any);\n  routeContext: RouteContextRoute<false, TRoute['id']> = (opts) =>\n    routeContext({ ...opts, from: this.options.id } as unknown as any);\n\n  search$: SearchRoute<true, TRoute['id']> = (opts) =>\n    search$({ ...opts, from: this.options.id } as any) as any;\n  search: SearchRoute<false, TRoute['id']> = (opts) =>\n    search({ ...opts, from: this.options.id } as any) as any;\n\n  params$: ParamsRoute<true, TRoute['id']> = (opts) =>\n    params$({ ...opts, from: this.options.id } as any) as any;\n  params: ParamsRoute<false, TRoute['id']> = (opts) =>\n    params({ ...opts, from: this.options.id } as any) as any;\n\n  loaderDeps$: LoaderDepsRoute<true, TRoute['id']> = (opts) =>\n    loaderDeps$({ ...opts, from: this.options.id } as any);\n  loaderDeps: LoaderDepsRoute<false, TRoute['id']> = (opts) =>\n    loaderDeps({ ...opts, from: this.options.id } as any);\n\n  loaderData$: LoaderDataRoute<true, TRoute['id']> = (opts) =>\n    loaderData$({ ...opts, from: this.options.id } as any);\n  loaderData: LoaderDataRoute<false, TRoute['id']> = (opts) =>\n    loaderData({ ...opts, from: this.options.id } as any);\n}\n\nexport function createLazyRoute<\n  TRouter extends AnyRouter = RegisteredRouter,\n  TId extends string = string,\n  TRoute extends AnyRoute = RouteById<TRouter['routeTree'], TId>,\n>(id: ConstrainLiteral<TId, RouteIds<TRouter['routeTree']>>) {\n  return (opts: LazyRouteOptions) => {\n    return new LazyRoute<TRoute>({\n      id: id,\n      ...opts,\n    });\n  };\n}\nexport function createLazyFileRoute<\n  TFilePath extends keyof FileRoutesByPath,\n  TRoute extends FileRoutesByPath[TFilePath]['preLoaderRoute'],\n>(id: TFilePath) {\n  return (opts: LazyRouteOptions) => new LazyRoute<TRoute>({ id, ...opts });\n}\n","import {\n  Directive,\n  EnvironmentInjector,\n  effect,\n  inject,\n  input,\n} from '@angular/core';\nimport { Matches } from './matches';\nimport { injectRouter } from './router';\n\nimport type { Provider } from '@angular/core';\nimport type { AnyRoute, AnyRouter, RouterOptions } from '@tanstack/router-core';\nimport type { RegisteredRouter } from './register';\nimport type { NgRouter } from './router';\n\nexport type RouterRootOptions<\n  TRouter extends AnyRouter = RegisteredRouter,\n  TDehydrated extends Record<string, any> = Record<string, any>,\n> = Omit<\n  RouterOptions<\n    TRouter['routeTree'],\n    NonNullable<TRouter['options']['trailingSlash']>,\n    false,\n    TRouter['history'],\n    TDehydrated\n  >,\n  'context'\n> & {\n  router: TRouter;\n  context?: Partial<\n    RouterOptions<\n      TRouter['routeTree'],\n      NonNullable<TRouter['options']['trailingSlash']>,\n      false,\n      TRouter['history'],\n      TDehydrated\n    >['context']\n  >;\n};\n\n@Directive({\n  selector: 'router-root,RouterRoot',\n  hostDirectives: [Matches],\n})\nexport class RouterRoot<\n  TRouter extends AnyRouter = RegisteredRouter,\n  TDehydrated extends Record<string, any> = Record<string, any>,\n> {\n  router = input<RouterRootOptions<TRouter, TDehydrated>['router']>(\n    injectRouter() as unknown as TRouter,\n  );\n  options = input<Omit<RouterRootOptions<TRouter, TDehydrated>, 'router'>>({});\n\n  constructor() {\n    const environmentInjector = inject(EnvironmentInjector);\n    effect(() => {\n      const [router, options] = [this.router(), this.options()];\n      router.update({\n        ...router.options,\n        ...options,\n        context: {\n          ...router.options.context,\n          ...options.context,\n          getRouteInjector(routeId: string, providers: Array<Provider> = []) {\n            return (\n              router as unknown as NgRouter<AnyRoute>\n            ).getRouteEnvInjector(\n              routeId,\n              environmentInjector,\n              providers,\n              router,\n            );\n          },\n        },\n      });\n    });\n  }\n}\n","import {\n  Injector,\n  assertInInjectionContext,\n  inject,\n  runInInjectionContext,\n} from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { routerState$ } from './router-state';\n\nexport function canGoBack$({ injector }: { injector?: Injector } = {}) {\n  !injector && assertInInjectionContext(canGoBack$);\n\n  if (!injector) {\n    injector = inject(Injector);\n  }\n\n  return runInInjectionContext(injector, () => {\n    return routerState$({\n      select: (s) => s.location.state.__TSR_index !== 0,\n      injector,\n    });\n  });\n}\n\nexport function canGoBack({ injector }: { injector?: Injector } = {}) {\n  !injector && assertInInjectionContext(canGoBack);\n\n  if (!injector) {\n    injector = inject(Injector);\n  }\n\n  return runInInjectionContext(injector, () => {\n    return toSignal(canGoBack$({ injector }));\n  });\n}\n","import {\n  Injector,\n  assertInInjectionContext,\n  inject,\n  runInInjectionContext,\n} from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { routerState$ } from './router-state';\n\nimport type { Signal } from '@angular/core';\nimport type { AnyRouter, RouterState } from '@tanstack/router-core';\nimport type { RegisteredRouter } from './register';\nimport type { Observable } from 'rxjs';\n\nexport interface LocationBaseOptions<TRouter extends AnyRouter, TSelected> {\n  select?: (state: RouterState<TRouter['routeTree']>['location']) => TSelected;\n  injector?: Injector;\n}\n\nexport type LocationResult<\n  TRouter extends AnyRouter,\n  TSelected,\n> = unknown extends TSelected\n  ? RouterState<TRouter['routeTree']>['location']\n  : TSelected;\n\nexport function location$<\n  TRouter extends AnyRouter = RegisteredRouter,\n  TSelected = unknown,\n>({\n  injector,\n  select,\n}: LocationBaseOptions<TRouter, TSelected> = {}): Observable<\n  LocationResult<TRouter, TSelected>\n> {\n  !injector && assertInInjectionContext(location$);\n\n  if (!injector) {\n    injector = inject(Injector);\n  }\n\n  return runInInjectionContext(injector, () => {\n    return routerState$({\n      injector,\n      select: (state) => (select ? select(state.location) : state.location),\n    }) as Observable<LocationResult<TRouter, TSelected>>;\n  });\n}\n\nexport function location<\n  TRouter extends AnyRouter = RegisteredRouter,\n  TSelected = unknown,\n>({ injector, select }: LocationBaseOptions<TRouter, TSelected> = {}): Signal<\n  LocationResult<TRouter, TSelected>\n> {\n  !injector && assertInInjectionContext(location);\n\n  if (!injector) {\n    injector = inject(Injector);\n  }\n\n  return runInInjectionContext(injector, () => {\n    return toSignal(location$({ injector, select })) as Signal<\n      LocationResult<TRouter, TSelected>\n    >;\n  });\n}\n"],"x_google_ignoreList":[0,1],"mappings":"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"}