{"version":3,"file":"ngxs-router-plugin.mjs","sources":["../../../packages/router-plugin/src/router.actions.ts","../../../packages/router-plugin/src/serializer.ts","../../../packages/router-plugin/src/router.state.ts","../../../packages/router-plugin/src/router.module.ts","../../../packages/router-plugin/index.ts","../../../packages/router-plugin/ngxs-router-plugin.ts"],"sourcesContent":["import {\n  NavigationCancel,\n  NavigationError,\n  NavigationExtras,\n  Params,\n  RouterStateSnapshot,\n  RoutesRecognized,\n  ResolveEnd,\n  NavigationStart,\n  NavigationEnd\n} from '@angular/router';\n\nimport { RouterTrigger } from './router.state';\n\n/**\n * Public event api of the router\n */\nexport class Navigate {\n  static readonly type = '[Router] Navigate';\n\n  constructor(\n    public path: any[],\n    public queryParams?: Params,\n    public extras?: NavigationExtras\n  ) {}\n}\n\n/**\n *\n * Angular Routers internal state events\n *\n */\n\n/**\n * An action dispatched when the router starts the navigation.\n */\nexport class RouterRequest<T = RouterStateSnapshot> {\n  static readonly type = '[Router] RouterRequest';\n\n  constructor(\n    public routerState: T,\n    public event: NavigationStart,\n    public trigger: RouterTrigger = 'none'\n  ) {}\n}\n\n/**\n * An action dispatched when the router navigates.\n */\nexport class RouterNavigation<T = RouterStateSnapshot> {\n  static readonly type = '[Router] RouterNavigation';\n\n  constructor(\n    public routerState: T,\n    public event: RoutesRecognized,\n    public trigger: RouterTrigger = 'none'\n  ) {}\n}\n\n/**\n * An action dispatched when the router cancel navigation.\n */\nexport class RouterCancel<T, V = RouterStateSnapshot> {\n  static readonly type = '[Router] RouterCancel';\n\n  constructor(\n    public routerState: V,\n    public storeState: T,\n    public event: NavigationCancel,\n    public trigger: RouterTrigger = 'none'\n  ) {}\n}\n\n/**\n * An action dispatched when the router errors.\n */\nexport class RouterError<T, V = RouterStateSnapshot> {\n  static readonly type = '[Router] RouterError';\n\n  constructor(\n    public routerState: V,\n    public storeState: T,\n    public event: NavigationError,\n    public trigger: RouterTrigger = 'none'\n  ) {}\n}\n\n/**\n * An action dispatched when the `ResolveEnd` event is triggered.\n */\nexport class RouterDataResolved<T = RouterStateSnapshot> {\n  static readonly type = '[Router] RouterDataResolved';\n\n  constructor(\n    public routerState: T,\n    public event: ResolveEnd,\n    public trigger: RouterTrigger = 'none'\n  ) {}\n}\n\n/**\n * An action dispatched when the router navigation has been finished successfully.\n */\nexport class RouterNavigated<T = RouterStateSnapshot> {\n  static readonly type = '[Router] RouterNavigated';\n\n  constructor(\n    public routerState: T,\n    public event: NavigationEnd,\n    public trigger: RouterTrigger = 'none'\n  ) {}\n}\n\n/**\n * An union type of router actions.\n */\nexport type RouterAction<T, V = RouterStateSnapshot> =\n  | RouterRequest<V>\n  | RouterNavigation<V>\n  | RouterCancel<T, V>\n  | RouterError<T, V>\n  | RouterDataResolved<V>\n  | RouterNavigated<V>;\n","import { ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';\n\nexport abstract class RouterStateSerializer<T> {\n  abstract serialize(routerState: RouterStateSnapshot): T;\n}\n\nexport interface SerializedRouterStateSnapshot {\n  root: ActivatedRouteSnapshot;\n  url: string;\n}\n\nexport class DefaultRouterStateSerializer\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(route: ActivatedRouteSnapshot): ActivatedRouteSnapshot {\n    const children = route.children.map(c => this.serializeRoute(c));\n    return {\n      url: route.url,\n      title: route.title,\n      params: route.params,\n      queryParams: route.queryParams,\n      fragment: route.fragment!,\n      data: route.data,\n      outlet: route.outlet,\n      component: null,\n      routeConfig: null,\n      root: null as any,\n      parent: null,\n      firstChild: children[0],\n      children: children,\n      pathFromRoot: null as any,\n      paramMap: route.paramMap,\n      queryParamMap: route.queryParamMap,\n      toString: route.toString\n    };\n  }\n}\n","import { NgZone, Injectable, OnDestroy, inject } from '@angular/core';\nimport {\n  NavigationCancel,\n  NavigationError,\n  Router,\n  RouterStateSnapshot,\n  RoutesRecognized,\n  ResolveEnd,\n  NavigationStart,\n  NavigationEnd,\n  Event\n} from '@angular/router';\nimport { Action, Selector, State, StateContext, StateToken, Store } from '@ngxs/store';\nimport {\n  NavigationActionTiming,\n  ɵNGXS_ROUTER_PLUGIN_OPTIONS\n} from '@ngxs/router-plugin/internals';\nimport { ReplaySubject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport {\n  Navigate,\n  RouterAction,\n  RouterCancel,\n  RouterError,\n  RouterNavigation,\n  RouterDataResolved,\n  RouterRequest,\n  RouterNavigated\n} from './router.actions';\nimport { RouterStateSerializer } from './serializer';\n\nexport interface RouterStateModel<T = RouterStateSnapshot> {\n  state?: T;\n  navigationId?: number;\n  trigger: RouterTrigger;\n}\n\nexport type RouterTrigger =\n  | 'none'\n  | 'router'\n  | 'store'\n  // The `devtools` trigger means that the state change has been triggered by Redux DevTools (e.g. when the time-traveling is used).\n  | 'devtools';\n\n// NGXS doesn't permit untyped selectors, such as `select(RouterState)`,\n// as the `RouterState` class itself lacks type information. Therefore,\n// the following state token must replace `RouterState`.\nexport const ROUTER_STATE_TOKEN = new StateToken<RouterStateModel>('router');\n\n@State<RouterStateModel>({\n  name: ROUTER_STATE_TOKEN,\n  defaults: {\n    state: undefined,\n    navigationId: undefined,\n    trigger: 'none'\n  }\n})\n@Injectable()\nexport class RouterState implements OnDestroy {\n  private _store = inject(Store);\n  private _router = inject(Router);\n  private _serializer: RouterStateSerializer<RouterStateSnapshot> =\n    inject(RouterStateSerializer);\n  private _ngZone = inject(NgZone);\n\n  /**\n   * Determines how navigation was performed by the `RouterState` itself\n   * or outside via `new Navigate(...)`\n   */\n  private _trigger: RouterTrigger = 'none';\n\n  /**\n   * That's the serialized state from the `Router` class\n   */\n  private _routerState: RouterStateSnapshot | null = null;\n\n  /**\n   * That's the value of the `RouterState` state\n   */\n  private _storeState: RouterStateModel | null = null;\n\n  private _lastEvent: Event | null = null;\n\n  private _options = inject(ɵNGXS_ROUTER_PLUGIN_OPTIONS);\n\n  private _destroy$ = new ReplaySubject<void>(1);\n\n  @Selector()\n  static state<T = RouterStateSnapshot>(state: RouterStateModel<T>) {\n    // The `state` is optional if the selector is invoked before the router\n    // state is registered in NGXS.\n    return state?.state;\n  }\n\n  @Selector()\n  static url(state: RouterStateModel): string | undefined {\n    return state?.state?.url;\n  }\n\n  constructor() {\n    this._setUpStoreListener();\n    this._setUpRouterEventsListener();\n  }\n\n  ngOnDestroy(): void {\n    this._destroy$.next();\n  }\n\n  @Action(Navigate)\n  navigate(_: StateContext<RouterStateModel>, action: Navigate) {\n    return this._ngZone.run(() =>\n      this._router.navigate(action.path, {\n        queryParams: action.queryParams,\n        ...action.extras\n      })\n    );\n  }\n\n  @Action([\n    RouterRequest<RouterStateSnapshot>,\n    RouterNavigation<RouterStateSnapshot>,\n    RouterError<RouterStateModel, RouterStateSnapshot>,\n    RouterCancel<RouterStateModel, RouterStateSnapshot>,\n    RouterDataResolved<RouterStateSnapshot>,\n    RouterNavigated<RouterStateSnapshot>\n  ])\n  angularRouterAction(\n    ctx: StateContext<RouterStateModel>,\n    action: RouterAction<RouterStateModel, RouterStateSnapshot>\n  ): void {\n    ctx.setState({\n      trigger: action.trigger,\n      state: action.routerState,\n      navigationId: action.event.id\n    });\n  }\n\n  private _setUpStoreListener(): void {\n    const routerState$ = this._store\n      .select(ROUTER_STATE_TOKEN)\n      .pipe(takeUntil(this._destroy$));\n    routerState$.subscribe((state: RouterStateModel | undefined) => {\n      this._navigateIfNeeded(state);\n    });\n  }\n\n  private _navigateIfNeeded(routerState: RouterStateModel | undefined): void {\n    if (routerState && routerState.trigger === 'devtools') {\n      this._storeState = this._store.selectSnapshot(ROUTER_STATE_TOKEN);\n    }\n\n    const canSkipNavigation =\n      !this._storeState ||\n      !this._storeState.state ||\n      !routerState ||\n      routerState.trigger === 'router' ||\n      this._router.url === this._storeState.state.url ||\n      this._lastEvent instanceof NavigationStart;\n\n    if (canSkipNavigation) {\n      return;\n    }\n\n    this._storeState = this._store.selectSnapshot(ROUTER_STATE_TOKEN);\n    this._trigger = 'store';\n    this._ngZone.run(() => this._router.navigateByUrl(this._storeState!.state!.url));\n  }\n\n  private _setUpRouterEventsListener(): void {\n    const dispatchRouterNavigationLate =\n      this._options != null &&\n      this._options.navigationActionTiming === NavigationActionTiming.PostActivation;\n\n    let lastRoutesRecognized: RoutesRecognized;\n\n    const events$ = this._router.events.pipe(takeUntil(this._destroy$));\n    events$.subscribe(event => {\n      this._lastEvent = event;\n\n      if (event instanceof NavigationStart) {\n        this._navigationStart(event);\n      } else if (event instanceof RoutesRecognized) {\n        lastRoutesRecognized = event;\n        if (!dispatchRouterNavigationLate && this._trigger !== 'store') {\n          this._dispatchRouterNavigation(lastRoutesRecognized);\n        }\n      } else if (event instanceof ResolveEnd) {\n        this._dispatchRouterDataResolved(event);\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 !== 'store') {\n          if (dispatchRouterNavigationLate) {\n            this._dispatchRouterNavigation(lastRoutesRecognized);\n          }\n          this._dispatchRouterNavigated(event);\n        }\n        this._reset();\n      }\n    });\n  }\n\n  /** Reacts to `NavigationStart`. */\n  private _navigationStart(event: NavigationStart): void {\n    this._routerState = this._serializer.serialize(this._router.routerState.snapshot);\n\n    if (this._trigger !== 'none') {\n      this._storeState = this._store.selectSnapshot(ROUTER_STATE_TOKEN);\n      this._dispatchRouterAction(new RouterRequest(this._routerState, event, this._trigger));\n    }\n  }\n\n  /** Reacts to `ResolveEnd`. */\n  private _dispatchRouterDataResolved(event: ResolveEnd): void {\n    const routerState = this._serializer.serialize(event.state);\n    this._dispatchRouterAction(new RouterDataResolved(routerState, event, this._trigger));\n  }\n\n  /** Reacts to `RoutesRecognized` or `NavigationEnd`, depends on the `navigationActionTiming`. */\n  private _dispatchRouterNavigation(lastRoutesRecognized: RoutesRecognized): void {\n    const nextRouterState = this._serializer.serialize(lastRoutesRecognized.state);\n\n    this._dispatchRouterAction(\n      new RouterNavigation(\n        nextRouterState,\n        new RoutesRecognized(\n          lastRoutesRecognized.id,\n          lastRoutesRecognized.url,\n          lastRoutesRecognized.urlAfterRedirects,\n          nextRouterState\n        ),\n        this._trigger\n      )\n    );\n  }\n\n  /** Reacts to `NavigationCancel`. */\n  private _dispatchRouterCancel(event: NavigationCancel): void {\n    this._dispatchRouterAction(\n      new RouterCancel(this._routerState!, this._storeState, event, this._trigger)\n    );\n  }\n\n  /** Reacts to `NavigationEnd`. */\n  private _dispatchRouterError(event: NavigationError): void {\n    this._dispatchRouterAction(\n      new RouterError(\n        this._routerState!,\n        this._storeState,\n        new NavigationError(event.id, event.url, `${event}`),\n        this._trigger\n      )\n    );\n  }\n\n  /** Reacts to `NavigationEnd`. */\n  private _dispatchRouterNavigated(event: NavigationEnd): void {\n    const routerState = this._serializer.serialize(this._router.routerState.snapshot);\n    this._dispatchRouterAction(new RouterNavigated(routerState, event, this._trigger));\n  }\n\n  private _dispatchRouterAction<T>(action: RouterAction<T>): void {\n    this._trigger = 'router';\n\n    try {\n      this._store.dispatch(action);\n    } finally {\n      this._trigger = 'none';\n    }\n  }\n\n  private _reset(): void {\n    this._trigger = 'none';\n    this._storeState = null;\n    this._routerState = null;\n  }\n}\n","import {\n  EnvironmentProviders,\n  ModuleWithProviders,\n  NgModule,\n  makeEnvironmentProviders\n} from '@angular/core';\nimport { NgxsModule, provideStates } from '@ngxs/store';\nimport {\n  NgxsRouterPluginOptions,\n  ɵcreateRouterPluginOptions,\n  ɵNGXS_ROUTER_PLUGIN_OPTIONS,\n  ɵUSER_OPTIONS\n} from '@ngxs/router-plugin/internals';\n\nimport { RouterState } from './router.state';\nimport { DefaultRouterStateSerializer, RouterStateSerializer } from './serializer';\n\n@NgModule({\n  imports: [NgxsModule.forFeature([RouterState])]\n})\nexport class NgxsRouterPluginModule {\n  static forRoot(\n    options?: NgxsRouterPluginOptions\n  ): ModuleWithProviders<NgxsRouterPluginModule> {\n    return {\n      ngModule: NgxsRouterPluginModule,\n      providers: [\n        { provide: ɵUSER_OPTIONS, useValue: options },\n        {\n          provide: ɵNGXS_ROUTER_PLUGIN_OPTIONS,\n          useFactory: ɵcreateRouterPluginOptions,\n          deps: [ɵUSER_OPTIONS]\n        },\n        { provide: RouterStateSerializer, useClass: DefaultRouterStateSerializer }\n      ]\n    };\n  }\n}\n\nexport function withNgxsRouterPlugin(options?: NgxsRouterPluginOptions): EnvironmentProviders {\n  return makeEnvironmentProviders([\n    provideStates([RouterState]),\n    { provide: ɵUSER_OPTIONS, useValue: options },\n    {\n      provide: ɵNGXS_ROUTER_PLUGIN_OPTIONS,\n      useFactory: ɵcreateRouterPluginOptions,\n      deps: [ɵUSER_OPTIONS]\n    },\n    { provide: RouterStateSerializer, useClass: DefaultRouterStateSerializer }\n  ]);\n}\n","/**\n * The public api for consumers of @ngxs/router-plugin\n */\nexport * from './src/public_api';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["ɵNGXS_ROUTER_PLUGIN_OPTIONS","ɵUSER_OPTIONS","ɵcreateRouterPluginOptions"],"mappings":"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"}