{"version":3,"file":"codeqo-cq-ngx-translate-routes.mjs","sources":["../../../projects/ngx-translate-routes/src/lib/ngx-translate-routes.token.ts","../../../projects/ngx-translate-routes/src/lib/ngx-translate-routes-constant.ts","../../../projects/ngx-translate-routes/src/lib/ngx-translate-routes.service.ts","../../../projects/ngx-translate-routes/src/lib/ngx-translate-routes.module.ts","../../../projects/ngx-translate-routes/src/public-api.ts","../../../projects/ngx-translate-routes/src/codeqo-cq-ngx-translate-routes.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\r\nimport { NgxTranslateRoutesConfig } from './ngx-translate-routes-config';\r\n\r\nexport const NGX_TRANSLATE_ROUTES_CONFING = new InjectionToken<NgxTranslateRoutesConfig>('NGX_TRANSLATE_ROUTES_CONFING');\r\n","export const translatePrefixes = {\r\n  title: 'titles',\r\n  route: 'routes',\r\n};\r\n\r\nexport const lastRouteKey = 'lastLocationPath';\r\n\r\nexport interface RoutePath {\r\n  path: string;\r\n  translatedPath: string;\r\n}\r\n","import { Inject, Injectable } from '@angular/core';\r\n\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { Title } from '@angular/platform-browser';\r\nimport { Location } from '@angular/common';\r\nimport {\r\n  Router,\r\n  NavigationEnd,\r\n  ActivatedRoute,\r\n  NavigationStart,\r\n} from '@angular/router';\r\nimport { filter, skip } from 'rxjs/operators';\r\nimport { NgxTranslateRoutesConfig } from './ngx-translate-routes-config';\r\nimport {\r\n  translatePrefixes,\r\n  lastRouteKey,\r\n  RoutePath,\r\n} from './ngx-translate-routes-constant';\r\nimport { NGX_TRANSLATE_ROUTES_CONFING } from './ngx-translate-routes.token';\r\n\r\n@Injectable({\r\n  providedIn: 'root',\r\n})\r\nexport class NgxTranslateRoutesService {\r\n  private config: NgxTranslateRoutesConfig;\r\n\r\n  constructor(\r\n    private translate: TranslateService,\r\n    private location: Location,\r\n    private title: Title,\r\n    private router: Router,\r\n    private activatedRoute: ActivatedRoute,\r\n    @Inject(NGX_TRANSLATE_ROUTES_CONFING)\r\n    config: NgxTranslateRoutesConfig\r\n  ) {\r\n    this.config = config;\r\n    this.translate.onDefaultLangChange\r\n      .pipe(skip(1))\r\n      .subscribe({ next: () => this.checkConfigValueAndMakeTranslations() });\r\n  }\r\n\r\n  init() {\r\n    this.router.events\r\n      .pipe(\r\n        filter(\r\n          (event) =>\r\n            event instanceof NavigationEnd ||\r\n            (event instanceof NavigationStart &&\r\n              event.id === 1 &&\r\n              JSON.parse(localStorage.getItem(lastRouteKey) || '{}')\r\n                ?.translatedPath === event.url)\r\n        )\r\n      )\r\n      .subscribe({\r\n        next: (event) => {\r\n          if (event instanceof NavigationStart) {\r\n            const item = localStorage.getItem(lastRouteKey);\r\n            const lastLocationPath: RoutePath = item && JSON.parse(item);\r\n            localStorage.removeItem(lastRouteKey);\r\n            this.router.navigateByUrl(lastLocationPath.path);\r\n          } else {\r\n            this.checkConfigValueAndMakeTranslations();\r\n          }\r\n        },\r\n      });\r\n  }\r\n\r\n  checkConfigValueAndMakeTranslations() {\r\n    this.config.enableTitleTranslate && this.translateTitle();\r\n    this.config.enableRouteTranslate && this.translateRoute();\r\n  }\r\n\r\n  private translateTitle() {\r\n    let child = this.activatedRoute.firstChild;\r\n    while (child?.firstChild) {\r\n      child = child.firstChild;\r\n    }\r\n    const routeTitle = child?.snapshot.data?.title;\r\n    const appTitle = routeTitle\r\n      ? this.translate.instant(routeTitle)\r\n      : this.title.getTitle();\r\n    this.title.setTitle(appTitle + ' | ' + this.config.applicationTitle);\r\n  }\r\n\r\n  private translateRoute() {\r\n    let routeUrl = '';\r\n    const subPaths = this.router.url.split('/');\r\n    subPaths.forEach((subPath: string) => {\r\n      const translatePath: string = this.translate.instant(`routes.${subPath}`);\r\n      routeUrl =\r\n        subPath.length > 0\r\n          ? this.routeUrlConcat(routeUrl, translatePath, subPath)\r\n          : subPath;\r\n    });\r\n    const lastLocationPath: RoutePath = {\r\n      path: this.location.path(),\r\n      translatedPath: routeUrl,\r\n    };\r\n    localStorage.setItem(lastRouteKey, JSON.stringify(lastLocationPath));\r\n    this.location.replaceState(routeUrl);\r\n  }\r\n\r\n  private routeUrlConcat(\r\n    routeUrl: string,\r\n    translatePath: string,\r\n    subPath: string\r\n  ): string {\r\n    return routeUrl.concat(\r\n      `/${\r\n        !translatePath.startsWith(translatePrefixes.route)\r\n          ? translatePath\r\n          : subPath\r\n      }`\r\n    );\r\n  }\r\n}\r\n","import { NgModule, ModuleWithProviders } from '@angular/core';\r\nimport { CommonModule, TitleCasePipe } from '@angular/common';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { NgxTranslateRoutesConfig } from './ngx-translate-routes-config';\r\nimport { NgxTranslateRoutesService } from './ngx-translate-routes.service';\r\nimport { NGX_TRANSLATE_ROUTES_CONFING } from './ngx-translate-routes.token';\r\n\r\n@NgModule({\r\n  imports: [CommonModule, TranslateModule],\r\n  providers: [TitleCasePipe]\r\n})\r\nexport class NgxTranslateRoutesModule {\r\n  constructor(private translateRoutesService: NgxTranslateRoutesService) {\r\n    this.translateRoutesService.init();\r\n  }\r\n  static forRoot(\r\n    config?: NgxTranslateRoutesConfig\r\n  ): ModuleWithProviders<NgxTranslateRoutesModule> {\r\n    return {\r\n      ngModule: NgxTranslateRoutesModule,\r\n      providers: [{ provide: NGX_TRANSLATE_ROUTES_CONFING, useValue: {\r\n        enableRouteTranslate:\r\n          config?.enableRouteTranslate !== undefined\r\n            ? config.enableRouteTranslate\r\n            : true,\r\n        enableTitleTranslate:\r\n          config?.enableTitleTranslate !== undefined\r\n            ? config.enableTitleTranslate\r\n            : true,\r\n        applicationTitle:\r\n          config?.applicationTitle !== undefined\r\n            ? config.applicationTitle\r\n            : 'DemoApp',\r\n      } }],\r\n    };\r\n  }\r\n}\r\n","/*\r\n * Public API Surface of ngx-translate-routes\r\n */\r\n\r\nexport * from './lib/ngx-translate-routes.module';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}