{"version":3,"file":"ngrx-router-store.mjs","sources":["../../../../modules/router-store/src/actions.ts","../../../../modules/router-store/src/reducer.ts","../../../../modules/router-store/src/serializers/minimal_serializer.ts","../../../../modules/router-store/src/router_store_config.ts","../../../../modules/router-store/src/serializers/full_serializer.ts","../../../../modules/router-store/src/serializers/base.ts","../../../../modules/router-store/src/store_router_connecting.service.ts","../../../../modules/router-store/src/provide_router_store.ts","../../../../modules/router-store/src/router_store_module.ts","../../../../modules/router-store/src/router_selectors.ts","../../../../modules/router-store/index.ts","../../../../modules/router-store/ngrx-router-store.ts"],"sourcesContent":["import {\n  NavigationCancel,\n  NavigationEnd,\n  NavigationError,\n  NavigationStart,\n  RoutesRecognized,\n} from '@angular/router';\n\nimport { BaseRouterStoreState } from './serializers/base';\nimport { SerializedRouterStateSnapshot } from './serializers/full_serializer';\nimport { createAction, props } from '@ngrx/store';\n\n/**\n * An action dispatched when a router navigation request is fired.\n */\nexport const ROUTER_REQUEST = '@ngrx/router-store/request';\n\n/**\n * Payload of ROUTER_REQUEST\n */\nexport type RouterRequestPayload<\n  T extends BaseRouterStoreState = SerializedRouterStateSnapshot\n> = {\n  routerState: T;\n  event: NavigationStart;\n};\n\n/**\n * An action dispatched when a router navigation request is fired.\n */\nexport type RouterRequestAction<\n  T extends BaseRouterStoreState = SerializedRouterStateSnapshot\n> = {\n  type: typeof ROUTER_REQUEST;\n  payload: RouterRequestPayload<T>;\n};\n\nexport const routerRequestAction = createAction(\n  ROUTER_REQUEST,\n  props<{ payload: RouterRequestPayload<SerializedRouterStateSnapshot> }>()\n);\n/**\n * An action dispatched when the router navigates.\n */\nexport const ROUTER_NAVIGATION = '@ngrx/router-store/navigation';\n\n/**\n * Payload of ROUTER_NAVIGATION.\n */\nexport type RouterNavigationPayload<\n  T extends BaseRouterStoreState = SerializedRouterStateSnapshot\n> = {\n  routerState: T;\n  event: RoutesRecognized;\n};\n\n/**\n * An action dispatched when the router navigates.\n */\nexport type RouterNavigationAction<\n  T extends BaseRouterStoreState = SerializedRouterStateSnapshot\n> = {\n  type: typeof ROUTER_NAVIGATION;\n  payload: RouterNavigationPayload<T>;\n};\n\nexport const routerNavigationAction = createAction(\n  ROUTER_NAVIGATION,\n  props<{ payload: RouterNavigationPayload<SerializedRouterStateSnapshot> }>()\n);\n\n/**\n * An action dispatched when the router cancels navigation.\n */\nexport const ROUTER_CANCEL = '@ngrx/router-store/cancel';\n\n/**\n * Payload of ROUTER_CANCEL.\n */\nexport type RouterCancelPayload<\n  T,\n  V extends BaseRouterStoreState = SerializedRouterStateSnapshot\n> = {\n  routerState: V;\n  storeState: T;\n  event: NavigationCancel;\n};\n\n/**\n * An action dispatched when the router cancels navigation.\n */\nexport type RouterCancelAction<\n  T,\n  V extends BaseRouterStoreState = SerializedRouterStateSnapshot\n> = {\n  type: typeof ROUTER_CANCEL;\n  payload: RouterCancelPayload<T, V>;\n};\n\nexport const routerCancelAction = createAction(\n  ROUTER_CANCEL,\n  props<{ payload: RouterCancelPayload<SerializedRouterStateSnapshot> }>()\n);\n\n/**\n * An action dispatched when the router errors.\n */\nexport const ROUTER_ERROR = '@ngrx/router-store/error';\n\n/**\n * Payload of ROUTER_ERROR.\n */\nexport type RouterErrorPayload<\n  T,\n  V extends BaseRouterStoreState = SerializedRouterStateSnapshot\n> = {\n  routerState: V;\n  storeState: T;\n  event: NavigationError;\n};\n\n/**\n * An action dispatched when the router errors.\n */\nexport type RouterErrorAction<\n  T,\n  V extends BaseRouterStoreState = SerializedRouterStateSnapshot\n> = {\n  type: typeof ROUTER_ERROR;\n  payload: RouterErrorPayload<T, V>;\n};\n\nexport const routerErrorAction = createAction(\n  ROUTER_ERROR,\n  props<{ payload: RouterErrorPayload<SerializedRouterStateSnapshot> }>()\n);\n\n/**\n * An action dispatched after navigation has ended and new route is active.\n */\nexport const ROUTER_NAVIGATED = '@ngrx/router-store/navigated';\n\n/**\n * Payload of ROUTER_NAVIGATED.\n */\nexport type RouterNavigatedPayload<\n  T extends BaseRouterStoreState = SerializedRouterStateSnapshot\n> = {\n  routerState: T;\n  event: NavigationEnd;\n};\n\n/**\n * An action dispatched after navigation has ended and new route is active.\n */\nexport type RouterNavigatedAction<\n  T extends BaseRouterStoreState = SerializedRouterStateSnapshot\n> = {\n  type: typeof ROUTER_NAVIGATED;\n  payload: RouterNavigatedPayload<T>;\n};\n\nexport const routerNavigatedAction = createAction(\n  ROUTER_NAVIGATED,\n  props<{ payload: RouterNavigatedPayload<SerializedRouterStateSnapshot> }>()\n);\n\n/**\n * A union type of router actions.\n */\nexport type RouterAction<\n  T,\n  V extends BaseRouterStoreState = SerializedRouterStateSnapshot\n> =\n  | RouterRequestAction<V>\n  | RouterNavigationAction<V>\n  | RouterCancelAction<T, V>\n  | RouterErrorAction<T, V>\n  | RouterNavigatedAction<V>;\n","import { Action } from '@ngrx/store';\nimport {\n  ROUTER_CANCEL,\n  ROUTER_ERROR,\n  ROUTER_NAVIGATION,\n  RouterAction,\n} from './actions';\nimport { BaseRouterStoreState } from './serializers/base';\nimport { SerializedRouterStateSnapshot } from './serializers/full_serializer';\n\nexport type RouterReducerState<\n  T extends BaseRouterStoreState = SerializedRouterStateSnapshot\n> = {\n  state: T;\n  navigationId: number;\n};\n\nexport function routerReducer<\n  RouterState extends BaseRouterStoreState = SerializedRouterStateSnapshot,\n  Result = RouterReducerState<RouterState>\n>(state: Result | undefined, action: Action): Result {\n  // Allow compilation with strictFunctionTypes - ref: #1344\n  const routerAction = action as RouterAction<any, RouterState>;\n  switch (routerAction.type) {\n    case ROUTER_NAVIGATION:\n    case ROUTER_ERROR:\n    case ROUTER_CANCEL:\n      return {\n        state: routerAction.payload.routerState,\n        navigationId: routerAction.payload.event.id,\n      } as unknown as Result;\n    default:\n      return state as Result;\n  }\n}\n","import { ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';\nimport { BaseRouterStoreState, RouterStateSerializer } from './base';\n\nexport interface MinimalActivatedRouteSnapshot {\n  routeConfig: ActivatedRouteSnapshot['routeConfig'];\n  url: ActivatedRouteSnapshot['url'];\n  params: ActivatedRouteSnapshot['params'];\n  queryParams: ActivatedRouteSnapshot['queryParams'];\n  fragment: ActivatedRouteSnapshot['fragment'];\n  data: ActivatedRouteSnapshot['data'];\n  outlet: ActivatedRouteSnapshot['outlet'];\n  title: ActivatedRouteSnapshot['title'];\n  firstChild?: MinimalActivatedRouteSnapshot;\n  children: MinimalActivatedRouteSnapshot[];\n}\n\nexport interface MinimalRouterStateSnapshot extends BaseRouterStoreState {\n  root: MinimalActivatedRouteSnapshot;\n  url: string;\n}\n\nexport class MinimalRouterStateSerializer\n  implements RouterStateSerializer<MinimalRouterStateSnapshot>\n{\n  serialize(routerState: RouterStateSnapshot): MinimalRouterStateSnapshot {\n    return {\n      root: this.serializeRoute(routerState.root),\n      url: routerState.url,\n    };\n  }\n\n  private serializeRoute(\n    route: ActivatedRouteSnapshot\n  ): MinimalActivatedRouteSnapshot {\n    const children = route.children.map((c) => this.serializeRoute(c));\n    return {\n      params: route.params,\n      data: route.data,\n      url: route.url,\n      outlet: route.outlet,\n      title: route.title,\n      routeConfig: route.routeConfig\n        ? {\n            path: route.routeConfig.path,\n            pathMatch: route.routeConfig.pathMatch,\n            redirectTo: route.routeConfig.redirectTo,\n            outlet: route.routeConfig.outlet,\n            title:\n              typeof route.routeConfig.title === 'string'\n                ? route.routeConfig.title\n                : undefined,\n          }\n        : null,\n      queryParams: route.queryParams,\n      fragment: route.fragment,\n      firstChild: children[0],\n      children,\n    };\n  }\n}\n","import { InjectionToken } from '@angular/core';\nimport { Selector } from '@ngrx/store';\nimport { RouterReducerState } from './reducer';\nimport {\n  BaseRouterStoreState,\n  RouterStateSerializer,\n} from './serializers/base';\nimport { SerializedRouterStateSnapshot } from './serializers/full_serializer';\nimport { MinimalRouterStateSerializer } from './serializers/minimal_serializer';\n\nexport type StateKeyOrSelector<\n  T extends BaseRouterStoreState = SerializedRouterStateSnapshot\n> = string | Selector<any, RouterReducerState<T>>;\n\nexport enum NavigationActionTiming {\n  PreActivation = 1,\n  PostActivation = 2,\n}\nexport const DEFAULT_ROUTER_FEATURENAME = 'router';\n\nexport const _ROUTER_CONFIG = new InjectionToken(\n  '@ngrx/router-store Internal Configuration'\n);\nexport const ROUTER_CONFIG = new InjectionToken(\n  '@ngrx/router-store Configuration'\n);\n\n/**\n * Minimal = Serializes the router event with MinimalRouterStateSerializer\n * Full = Serializes the router event with FullRouterStateSerializer\n */\nexport enum RouterState {\n  Full,\n  Minimal,\n}\n\nexport function _createRouterConfig(\n  config: StoreRouterConfig\n): StoreRouterConfig {\n  return {\n    stateKey: DEFAULT_ROUTER_FEATURENAME,\n    serializer: MinimalRouterStateSerializer,\n    navigationActionTiming: NavigationActionTiming.PreActivation,\n    ...config,\n  };\n}\n\nexport interface StoreRouterConfig<\n  T extends BaseRouterStoreState = SerializedRouterStateSnapshot\n> {\n  stateKey?: StateKeyOrSelector<T>;\n  serializer?: new (...args: any[]) => RouterStateSerializer;\n  /**\n   * By default, ROUTER_NAVIGATION is dispatched before guards and resolvers run.\n   * Therefore, the action could run too soon, for example\n   * there may be a navigation cancel due to a guard saying the navigation is not allowed.\n   * To run ROUTER_NAVIGATION after guards and resolvers,\n   * set this property to NavigationActionTiming.PostActivation.\n   */\n  navigationActionTiming?: NavigationActionTiming;\n  /**\n   * Decides which router serializer should be used, if there is none provided, and the metadata on the dispatched @ngrx/router-store action payload.\n   * Set to `Minimal` to use the `MinimalRouterStateSerializer` and to set a minimal router event with the navigation id and url as payload.\n   * Set to `Full` to use the `FullRouterStateSerializer` and to set the angular router events as payload.\n   */\n  routerState?: RouterState;\n}\n","import { ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';\nimport { BaseRouterStoreState, RouterStateSerializer } from './base';\n\nexport interface SerializedRouterStateSnapshot extends BaseRouterStoreState {\n  root: ActivatedRouteSnapshot;\n  url: string;\n}\n\nexport class FullRouterStateSerializer\n  implements RouterStateSerializer<SerializedRouterStateSnapshot>\n{\n  serialize(routerState: RouterStateSnapshot): SerializedRouterStateSnapshot {\n    return {\n      root: this.serializeRoute(routerState.root),\n      url: routerState.url,\n    };\n  }\n\n  private serializeRoute(\n    route: ActivatedRouteSnapshot\n  ): ActivatedRouteSnapshot {\n    const children = route.children.map((c) => this.serializeRoute(c));\n    return {\n      params: route.params,\n      paramMap: route.paramMap,\n      data: route.data,\n      url: route.url,\n      outlet: route.outlet,\n      title: route.title,\n      routeConfig: route.routeConfig\n        ? {\n            component: route.routeConfig.component,\n            path: route.routeConfig.path,\n            pathMatch: route.routeConfig.pathMatch,\n            redirectTo: route.routeConfig.redirectTo,\n            outlet: route.routeConfig.outlet,\n            title: route.routeConfig.title,\n          }\n        : null,\n      queryParams: route.queryParams,\n      queryParamMap: route.queryParamMap,\n      fragment: route.fragment,\n      component: (route.routeConfig\n        ? route.routeConfig.component\n        : undefined) as any,\n      root: undefined as any,\n      parent: undefined as any,\n      firstChild: children[0],\n      pathFromRoot: undefined as any,\n      children,\n    };\n  }\n}\n","import { RouterStateSnapshot } from '@angular/router';\n\n/**\n * Simple router state.\n * All custom router states / state serializers should have at least\n * the properties of this interface.\n */\nexport interface BaseRouterStoreState {\n  url: string;\n}\n\nexport abstract class RouterStateSerializer<\n  T extends BaseRouterStoreState = BaseRouterStoreState\n> {\n  abstract serialize(routerState: RouterStateSnapshot): T;\n}\n","import { ErrorHandler, Inject, Injectable, isDevMode } from '@angular/core';\nimport {\n  Event,\n  NavigationCancel,\n  NavigationEnd,\n  NavigationError,\n  NavigationStart,\n  Router,\n  RouterEvent,\n  RoutesRecognized,\n} from '@angular/router';\nimport {\n  ACTIVE_RUNTIME_CHECKS,\n  isNgrxMockEnvironment,\n  RuntimeChecks,\n  select,\n  Store,\n} from '@ngrx/store';\nimport { withLatestFrom } from 'rxjs/operators';\nimport {\n  ROUTER_CANCEL,\n  ROUTER_ERROR,\n  ROUTER_NAVIGATED,\n  ROUTER_NAVIGATION,\n  ROUTER_REQUEST,\n} from './actions';\nimport {\n  NavigationActionTiming,\n  ROUTER_CONFIG,\n  RouterState,\n  StateKeyOrSelector,\n  StoreRouterConfig,\n} from './router_store_config';\nimport {\n  FullRouterStateSerializer,\n  SerializedRouterStateSnapshot,\n} from './serializers/full_serializer';\nimport { RouterReducerState } from './reducer';\nimport { RouterStateSerializer } from './serializers/base';\n\nenum RouterTrigger {\n  NONE = 1,\n  ROUTER = 2,\n  STORE = 3,\n}\n\ninterface StoreRouterActionPayload {\n  event: RouterEvent;\n  routerState?: SerializedRouterStateSnapshot;\n  storeState?: any;\n}\n\n/**\n * Shared router initialization logic used alongside both the StoreRouterConnectingModule and the provideRouterStore\n * function\n */\n@Injectable()\nexport class StoreRouterConnectingService {\n  private lastEvent: Event | null = null;\n  private routerState: SerializedRouterStateSnapshot | null = null;\n  private storeState: any;\n  private trigger = RouterTrigger.NONE;\n  private readonly stateKey: StateKeyOrSelector;\n\n  constructor(\n    private store: Store<any>,\n    private router: Router,\n    private serializer: RouterStateSerializer<SerializedRouterStateSnapshot>,\n    private errorHandler: ErrorHandler,\n    @Inject(ROUTER_CONFIG) private readonly config: StoreRouterConfig,\n    @Inject(ACTIVE_RUNTIME_CHECKS)\n    private readonly activeRuntimeChecks: RuntimeChecks\n  ) {\n    this.stateKey = this.config.stateKey as StateKeyOrSelector;\n\n    if (\n      !isNgrxMockEnvironment() &&\n      isDevMode() &&\n      (activeRuntimeChecks?.strictActionSerializability ||\n        activeRuntimeChecks?.strictStateSerializability) &&\n      this.serializer instanceof FullRouterStateSerializer\n    ) {\n      console.warn(\n        '@ngrx/router-store: The serializability runtime checks cannot be enabled ' +\n          'with the FullRouterStateSerializer. The FullRouterStateSerializer ' +\n          'has an unserializable router state and actions that are not serializable. ' +\n          'To use the serializability runtime checks either use ' +\n          'the MinimalRouterStateSerializer or implement a custom router state serializer.'\n      );\n    }\n\n    this.setUpStoreStateListener();\n    this.setUpRouterEventsListener();\n  }\n\n  private setUpStoreStateListener(): void {\n    this.store\n      .pipe(select(this.stateKey as any), withLatestFrom(this.store))\n      .subscribe(([routerStoreState, storeState]) => {\n        this.navigateIfNeeded(routerStoreState, storeState);\n      });\n  }\n\n  private navigateIfNeeded(\n    routerStoreState: RouterReducerState,\n    storeState: any\n  ): void {\n    if (!routerStoreState || !routerStoreState.state) {\n      return;\n    }\n    if (this.trigger === RouterTrigger.ROUTER) {\n      return;\n    }\n    if (this.lastEvent instanceof NavigationStart) {\n      return;\n    }\n\n    const url = routerStoreState.state.url;\n    if (!isSameUrl(this.router.url, url)) {\n      this.storeState = storeState;\n      this.trigger = RouterTrigger.STORE;\n      this.router.navigateByUrl(url).catch((error) => {\n        this.errorHandler.handleError(error);\n      });\n    }\n  }\n\n  private setUpRouterEventsListener(): void {\n    const dispatchNavLate =\n      this.config.navigationActionTiming ===\n      NavigationActionTiming.PostActivation;\n    let routesRecognized: RoutesRecognized;\n\n    this.router.events\n      .pipe(withLatestFrom(this.store))\n      .subscribe(([event, storeState]) => {\n        this.lastEvent = event;\n\n        if (event instanceof NavigationStart) {\n          this.routerState = this.serializer.serialize(\n            this.router.routerState.snapshot\n          );\n          if (this.trigger !== RouterTrigger.STORE) {\n            this.storeState = storeState;\n            this.dispatchRouterRequest(event);\n          }\n        } else if (event instanceof RoutesRecognized) {\n          routesRecognized = event;\n\n          if (!dispatchNavLate && this.trigger !== RouterTrigger.STORE) {\n            this.dispatchRouterNavigation(event);\n          }\n        } else if (event instanceof NavigationCancel) {\n          this.dispatchRouterCancel(event);\n          this.reset();\n        } else if (event instanceof NavigationError) {\n          this.dispatchRouterError(event);\n          this.reset();\n        } else if (event instanceof NavigationEnd) {\n          if (this.trigger !== RouterTrigger.STORE) {\n            if (dispatchNavLate) {\n              this.dispatchRouterNavigation(routesRecognized);\n            }\n            this.dispatchRouterNavigated(event);\n          }\n          this.reset();\n        }\n      });\n  }\n\n  private dispatchRouterRequest(event: NavigationStart): void {\n    this.dispatchRouterAction(ROUTER_REQUEST, { event });\n  }\n\n  private dispatchRouterNavigation(\n    lastRoutesRecognized: RoutesRecognized\n  ): void {\n    const nextRouterState = this.serializer.serialize(\n      lastRoutesRecognized.state\n    );\n    this.dispatchRouterAction(ROUTER_NAVIGATION, {\n      routerState: nextRouterState,\n      event: new RoutesRecognized(\n        lastRoutesRecognized.id,\n        lastRoutesRecognized.url,\n        lastRoutesRecognized.urlAfterRedirects,\n        nextRouterState\n      ),\n    });\n  }\n\n  private dispatchRouterCancel(event: NavigationCancel): void {\n    this.dispatchRouterAction(ROUTER_CANCEL, {\n      storeState: this.storeState,\n      event,\n    });\n  }\n\n  private dispatchRouterError(event: NavigationError): void {\n    this.dispatchRouterAction(ROUTER_ERROR, {\n      storeState: this.storeState,\n      event: new NavigationError(event.id, event.url, `${event}`),\n    });\n  }\n\n  private dispatchRouterNavigated(event: NavigationEnd): void {\n    const routerState = this.serializer.serialize(\n      this.router.routerState.snapshot\n    );\n    this.dispatchRouterAction(ROUTER_NAVIGATED, { event, routerState });\n  }\n\n  private dispatchRouterAction(\n    type: string,\n    payload: StoreRouterActionPayload\n  ): void {\n    this.trigger = RouterTrigger.ROUTER;\n    try {\n      this.store.dispatch({\n        type,\n        payload: {\n          routerState: this.routerState,\n          ...payload,\n          event:\n            this.config.routerState === RouterState.Full\n              ? payload.event\n              : {\n                  id: payload.event.id,\n                  url: payload.event.url,\n                  // safe, as it will just be `undefined` for non-NavigationEnd router events\n                  urlAfterRedirects: (payload.event as NavigationEnd)\n                    .urlAfterRedirects,\n                },\n        },\n      });\n    } finally {\n      this.trigger = RouterTrigger.NONE;\n    }\n  }\n\n  private reset() {\n    this.trigger = RouterTrigger.NONE;\n    this.storeState = null;\n    this.routerState = null;\n  }\n}\n\n/**\n * Check if the URLs are matching. Accounts for the possibility of trailing \"/\" in url.\n */\nfunction isSameUrl(first: string, second: string): boolean {\n  return stripTrailingSlash(first) === stripTrailingSlash(second);\n}\n\nfunction stripTrailingSlash(text: string): string {\n  if (text?.length > 0 && text[text.length - 1] === '/') {\n    return text.substring(0, text.length - 1);\n  }\n  return text;\n}\n","import {\n  EnvironmentProviders,\n  inject,\n  makeEnvironmentProviders,\n  provideEnvironmentInitializer,\n} from '@angular/core';\nimport {\n  _createRouterConfig,\n  _ROUTER_CONFIG,\n  ROUTER_CONFIG,\n  RouterState,\n  StoreRouterConfig,\n} from './router_store_config';\nimport {\n  FullRouterStateSerializer,\n  SerializedRouterStateSnapshot,\n} from './serializers/full_serializer';\nimport { MinimalRouterStateSerializer } from './serializers/minimal_serializer';\nimport {\n  BaseRouterStoreState,\n  RouterStateSerializer,\n} from './serializers/base';\nimport { StoreRouterConnectingService } from './store_router_connecting.service';\n\n/**\n * Connects the Angular Router to the Store.\n *\n * @usageNotes\n *\n * ```ts\n * bootstrapApplication(AppComponent, {\n *   providers: [\n *     provideStore({ router: routerReducer }),\n *     provideRouterStore(),\n *   ],\n * });\n * ```\n */\nexport function provideRouterStore<\n  T extends BaseRouterStoreState = SerializedRouterStateSnapshot\n>(config: StoreRouterConfig<T> = {}): EnvironmentProviders {\n  return makeEnvironmentProviders([\n    { provide: _ROUTER_CONFIG, useValue: config },\n    {\n      provide: ROUTER_CONFIG,\n      useFactory: _createRouterConfig,\n      deps: [_ROUTER_CONFIG],\n    },\n    {\n      provide: RouterStateSerializer,\n      useClass: config.serializer\n        ? config.serializer\n        : config.routerState === RouterState.Full\n        ? FullRouterStateSerializer\n        : MinimalRouterStateSerializer,\n    },\n    provideEnvironmentInitializer(() => inject(StoreRouterConnectingService)),\n    StoreRouterConnectingService,\n  ]);\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { BaseRouterStoreState } from './serializers/base';\nimport { SerializedRouterStateSnapshot } from './serializers/full_serializer';\nimport { StoreRouterConfig } from './router_store_config';\nimport { provideRouterStore } from './provide_router_store';\n\n/**\n * Connects RouterModule with StoreModule.\n *\n * During the navigation, before any guards or resolvers run, the router will dispatch\n * a ROUTER_NAVIGATION action, which has the following signature:\n *\n * ```\n * export type RouterNavigationPayload = {\n *   routerState: SerializedRouterStateSnapshot,\n *   event: RoutesRecognized\n * }\n * ```\n *\n * Either a reducer or an effect can be invoked in response to this action.\n * If the invoked reducer throws, the navigation will be canceled.\n *\n * If navigation gets canceled because of a guard, a ROUTER_CANCEL action will be\n * dispatched. If navigation results in an error, a ROUTER_ERROR action will be dispatched.\n *\n * Both ROUTER_CANCEL and ROUTER_ERROR contain the store state before the navigation\n * which can be used to restore the consistency of the store.\n *\n * Usage:\n *\n * ```typescript\n * @NgModule({\n *   declarations: [AppCmp, SimpleCmp],\n *   imports: [\n *     BrowserModule,\n *     StoreModule.forRoot(mapOfReducers),\n *     RouterModule.forRoot([\n *       { path: '', component: SimpleCmp },\n *       { path: 'next', component: SimpleCmp }\n *     ]),\n *     StoreRouterConnectingModule.forRoot()\n *   ],\n *   bootstrap: [AppCmp]\n * })\n * export class AppModule {\n * }\n * ```\n */\n@NgModule({})\nexport class StoreRouterConnectingModule {\n  static forRoot<\n    T extends BaseRouterStoreState = SerializedRouterStateSnapshot\n  >(\n    config: StoreRouterConfig<T> = {}\n  ): ModuleWithProviders<StoreRouterConnectingModule> {\n    return {\n      ngModule: StoreRouterConnectingModule,\n      providers: [provideRouterStore(config)],\n    };\n  }\n}\n","import {\n  createFeatureSelector,\n  createSelector,\n  MemoizedSelector,\n} from '@ngrx/store';\nimport { RouterStateSelectors } from './models';\nimport { RouterReducerState } from './reducer';\nimport { DEFAULT_ROUTER_FEATURENAME } from './router_store_config';\n\nexport function createRouterSelector<\n  State extends Record<string, any>\n>(): MemoizedSelector<State, RouterReducerState> {\n  return createFeatureSelector(DEFAULT_ROUTER_FEATURENAME);\n}\n\nexport function getRouterSelectors<V extends Record<string, any>>(\n  selectState: (state: V) => RouterReducerState<any> = createRouterSelector<V>()\n): RouterStateSelectors<V> {\n  const selectRouterState = createSelector(\n    selectState,\n    (router) => router && router.state\n  );\n  const selectRootRoute = createSelector(\n    selectRouterState,\n    (routerState) => routerState && routerState.root\n  );\n  const selectCurrentRoute = createSelector(selectRootRoute, (rootRoute) => {\n    if (!rootRoute) {\n      return undefined;\n    }\n    let route = rootRoute;\n    while (route.firstChild) {\n      route = route.firstChild;\n    }\n    return route;\n  });\n  const selectFragment = createSelector(\n    selectRootRoute,\n    (route) => route && route.fragment\n  );\n  const selectQueryParams = createSelector(\n    selectRootRoute,\n    (route) => route && route.queryParams\n  );\n  const selectQueryParam = (param: string) =>\n    createSelector(selectQueryParams, (params) => params && params[param]);\n  const selectRouteParams = createSelector(\n    selectCurrentRoute,\n    (route) => route && route.params\n  );\n  const selectRouteParam = (param: string) =>\n    createSelector(selectRouteParams, (params) => params && params[param]);\n  const selectRouteData = createSelector(\n    selectCurrentRoute,\n    (route) => route && route.data\n  );\n  const selectRouteDataParam = (param: string) =>\n    createSelector(selectRouteData, (data) => data && data[param]);\n  const selectUrl = createSelector(\n    selectRouterState,\n    (routerState) => routerState && routerState.url\n  );\n  const selectTitle = createSelector(selectCurrentRoute, (route) => {\n    if (!route?.routeConfig) {\n      return undefined;\n    }\n    return typeof route.routeConfig.title === 'string'\n      ? route.routeConfig.title // static title\n      : route.title; // resolved title\n  });\n\n  return {\n    selectCurrentRoute,\n    selectFragment,\n    selectQueryParams,\n    selectQueryParam,\n    selectRouteParams,\n    selectRouteParam,\n    selectRouteData,\n    selectRouteDataParam,\n    selectUrl,\n    selectTitle,\n  };\n}\n","/**\n * DO NOT EDIT\n *\n * This file is automatically generated at build\n */\n\nexport * from './public_api';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i3.RouterStateSerializer"],"mappings":"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"}