{"version":3,"file":"igo2-core-language.mjs","sources":["../../../packages/core/language/src/language.module.ts","../../../packages/core/language/src/shared/language.interface.ts","../../../packages/core/language/src/shared/language.loader.ts","../../../packages/core/language/src/shared/language.service.ts","../../../packages/core/language/src/shared/missing-translation.guard.ts","../../../packages/core/language/src/shared/language.provider.ts","../../../packages/core/language/src/shared/language-mock.provider.ts","../../../packages/core/language/src/igo2-core-language.ts"],"sourcesContent":["import { NgModule } from '@angular/core';\n\nimport { TranslateModule } from '@ngx-translate/core';\n\n@NgModule({\n  exports: [TranslateModule]\n})\nexport class IgoLanguageModule {}\n","import { TranslateLoader } from '@ngx-translate/core';\nimport { Observable } from 'rxjs';\n\nexport interface LanguageOptions {\n  prefix?: string | string[];\n  ignoreLibsLocale?: boolean;\n}\n\nexport abstract class LanguageLoaderBase implements TranslateLoader {\n  abstract isLoaded$: Observable<boolean>;\n  abstract getTranslation(lang: string): Observable<any>;\n}\n","import { HttpBackend, HttpClient } from '@angular/common/http';\n\nimport { ConfigService } from '@igo2/core/config';\nimport { ObjectUtils } from '@igo2/utils';\n\nimport {\n  BehaviorSubject,\n  Observable,\n  first,\n  forkJoin,\n  map,\n  of,\n  switchMap,\n  tap\n} from 'rxjs';\n\nimport { LanguageLoaderBase, LanguageOptions } from './language.interface';\n\nexport class LanguageLoader implements LanguageLoaderBase {\n  private httpClient: HttpClient;\n\n  private _isLoaded$ = new BehaviorSubject<boolean>(null);\n  isLoaded$ = this._isLoaded$.asObservable();\n\n  suffix = '.json';\n  prefix?: string | string[];\n  options: LanguageOptions;\n\n  constructor(handler: HttpBackend, options: LanguageOptions) {\n    this.httpClient = new HttpClient(handler);\n    this.options = options;\n  }\n\n  public getTranslation(lang: string): Observable<any> {\n    const igoLocale$ = this.httpClient.get(`locale/libs_locale/${lang}.json`);\n    if (!this.prefix) {\n      const prefix = this.options.prefix;\n      this.prefix = !prefix || Array.isArray(prefix) ? prefix : [prefix];\n    }\n\n    if (!this.prefix || this.prefix.length === 0) {\n      this._isLoaded$.next(true);\n      return this.options.ignoreLibsLocale ? of(undefined) : igoLocale$;\n    }\n\n    const appLocale$ = (this.prefix as string[]).map((prefix) =>\n      this.httpClient.get(`${prefix}${lang}${this.suffix}`)\n    );\n\n    const locale$ = [...appLocale$];\n\n    if (!this.options.ignoreLibsLocale) {\n      locale$.unshift(igoLocale$);\n    }\n\n    return forkJoin(locale$).pipe(\n      map((translations) => {\n        return translations.reduce(\n          (acc, current) => ObjectUtils.mergeDeep(acc, current),\n          {}\n        );\n      }),\n      tap(() => {\n        this._isLoaded$.next(true);\n      })\n    );\n  }\n}\n\nexport class LanguageLoaderWithAsyncConfig extends LanguageLoader {\n  constructor(\n    handler: HttpBackend,\n    private configService: ConfigService,\n    prefix?: string | string[],\n    suffix = '.json'\n  ) {\n    super(handler, undefined);\n    this.prefix = prefix;\n    this.suffix = suffix;\n  }\n\n  public getTranslation(lang: string): Observable<any> {\n    return this.configService.isLoaded$.pipe(\n      first((isLoaded) => isLoaded),\n      switchMap(() => {\n        this.options =\n          this.configService.getConfig<LanguageOptions>('language');\n\n        return super.getTranslation(lang);\n      })\n    );\n  }\n}\n","import { Injectable } from '@angular/core';\n\nimport { TranslateService } from '@ngx-translate/core';\nimport { BehaviorSubject, combineLatest } from 'rxjs';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class LanguageService {\n  private language: string;\n  readonly language$ = new BehaviorSubject<string>(undefined);\n\n  constructor(public translate: TranslateService) {\n    if (\n      !this.translate.defaultLang ||\n      !this.matchLanguage(this.translate.defaultLang)\n    ) {\n      this.setBrowserLanguage();\n    }\n  }\n  private setBrowserLanguage() {\n    this.language = this.translate.getBrowserLang();\n    const lang = this.getLanguage();\n    this.translate.setDefaultLang(lang);\n    this.language$.next(lang);\n  }\n\n  public getLanguage(): string {\n    return this.matchLanguage(this.language) ? this.language : 'en';\n  }\n\n  private matchLanguage(lang: string): boolean {\n    return !!lang.match(/en|fr/);\n  }\n\n  public setLanguage(language: string) {\n    this.language = this.matchLanguage(language) ? language : 'en';\n    combineLatest([\n      this.translate.use(this.language),\n      this.translate.reloadLang(this.language)\n    ]).subscribe(() => {\n      this.language$.next(this.language);\n    });\n  }\n}\n","import {\n  MissingTranslationHandler,\n  MissingTranslationHandlerParams\n} from '@ngx-translate/core';\n\nexport class IgoMissingTranslationHandler implements MissingTranslationHandler {\n  handle(params: MissingTranslationHandlerParams) {\n    if (!params.translateService.langs.length) {\n      const error =\n        'Translations are not yet loaded. \\\n         Check that the LanguageService is injected.';\n      throw new Error(error);\n    }\n\n    if (params.key.substr(0, 4) === 'igo.') {\n      throw new Error(`The Key \"${params.key}\" is missing in locale file.`);\n    } else {\n      return params.key;\n    }\n  }\n}\n","import { HttpBackend } from '@angular/common/http';\nimport {\n  APP_INITIALIZER,\n  EnvironmentProviders,\n  Provider,\n  importProvidersFrom,\n  makeEnvironmentProviders\n} from '@angular/core';\n\nimport { ConfigService } from '@igo2/core/config';\n\nimport {\n  MissingTranslationHandler,\n  TranslateLoader,\n  TranslateModule,\n  TranslateModuleConfig\n} from '@ngx-translate/core';\nimport { first } from 'rxjs';\nimport { catchError, timeout } from 'rxjs/operators';\n\nimport { LanguageLoaderBase, LanguageOptions } from './language.interface';\nimport {\n  LanguageLoader,\n  LanguageLoaderWithAsyncConfig\n} from './language.loader';\nimport { LanguageService } from './language.service';\nimport { IgoMissingTranslationHandler } from './missing-translation.guard';\n\n// 5 seconds\nconst TIMEOUT_DURATION = 5000;\n\nexport interface TranslationFeature<KindT extends TranslationFeatureKind> {\n  kind: KindT;\n  providers: (Provider | EnvironmentProviders)[];\n}\n\nexport enum TranslationFeatureKind {\n  Translation = 0\n}\n\n/**\n * Make sure you only call this method in the root module of your application, most of the time called AppModule.\n */\nexport function provideTranslation(\n  featureConfig: TranslationFeature<TranslationFeatureKind.Translation>\n): EnvironmentProviders {\n  return makeEnvironmentProviders([\n    ...featureConfig.providers,\n    {\n      provide: APP_INITIALIZER,\n      useFactory: (languageService: LanguageService) => () => {\n        return (\n          languageService.translate.currentLoader as LanguageLoaderBase\n        ).isLoaded$?.pipe(\n          timeout(TIMEOUT_DURATION),\n          first((isLoaded) => isLoaded === true),\n          catchError((error) => {\n            error.message += ` - Request timed out for language loader after: ${TIMEOUT_DURATION}`;\n            throw error;\n          })\n        );\n      },\n      deps: [LanguageService],\n      multi: true\n    }\n  ]);\n}\n\nexport function withStaticConfig(\n  options: LanguageOptions,\n  defaultLanguage?: string | undefined\n): TranslationFeature<TranslationFeatureKind.Translation> {\n  const loader: Provider = {\n    provide: TranslateLoader,\n    useFactory: (http: HttpBackend) => languageLoaderWithStatic(http, options),\n    deps: [HttpBackend]\n  };\n  return {\n    kind: TranslationFeatureKind.Translation,\n    providers: [\n      importProvidersFrom(\n        TranslateModule.forRoot(setTranslationConfig(loader, defaultLanguage))\n      )\n    ]\n  };\n}\n\nexport function withAsyncConfig(\n  defaultLanguage?: string | undefined\n): TranslationFeature<TranslationFeatureKind.Translation> {\n  const loader: Provider = {\n    provide: TranslateLoader,\n    useFactory: languageLoaderWithAsync,\n    deps: [HttpBackend, ConfigService]\n  };\n  return {\n    kind: TranslationFeatureKind.Translation,\n    providers: [\n      importProvidersFrom(\n        TranslateModule.forRoot(setTranslationConfig(loader, defaultLanguage))\n      )\n    ]\n  };\n}\n\nexport const setTranslationConfig = (\n  loader?: Provider,\n  defaultLanguage?: string\n): TranslateModuleConfig => ({\n  defaultLanguage: defaultLanguage,\n  loader: loader ?? DEFAULT_LANGUAGE_LOADER,\n  missingTranslationHandler: {\n    provide: MissingTranslationHandler,\n    useClass: IgoMissingTranslationHandler\n  }\n});\n\nfunction languageLoaderWithStatic(\n  http: HttpBackend,\n  options?: LanguageOptions\n) {\n  return new LanguageLoader(http, options);\n}\n\nexport const LANGUAGE_LOADER: Provider = {\n  provide: TranslateLoader,\n  useFactory: languageLoaderWithAsync,\n  deps: [HttpBackend, ConfigService]\n};\n\nfunction languageLoaderWithAsync(http: HttpBackend, config?: ConfigService) {\n  return new LanguageLoaderWithAsyncConfig(http, config, undefined, undefined);\n}\n\nexport const DEFAULT_LANGUAGE_LOADER: Provider = {\n  provide: TranslateLoader,\n  useFactory: languageLoaderWithAsync,\n  deps: [HttpBackend, ConfigService]\n};\n","import {\n  EnvironmentProviders,\n  importProvidersFrom,\n  makeEnvironmentProviders\n} from '@angular/core';\n\nimport {\n  TranslateFakeLoader,\n  TranslateLoader,\n  TranslateModule\n} from '@ngx-translate/core';\n\nexport function provideMockTranslation(): EnvironmentProviders {\n  return makeEnvironmentProviders([\n    importProvidersFrom(\n      TranslateModule.forRoot({\n        loader: {\n          provide: TranslateLoader,\n          useClass: TranslateFakeLoader\n        }\n      })\n    )\n  ]);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}