@igo2/core 18.0.0-next.4 → 18.0.0-next.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,5 @@
1
1
  export const version = {
2
- lib: '18.0.0-next.4',
3
- releaseDate: 1731447313929
2
+ lib: '18.0.0-next.5',
3
+ releaseDate: 1731449362073
4
4
  };
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvY29uZmlnL3NyYy92ZXJzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU9BLE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBWTtJQUM5QixHQUFHLEVBQUUsZUFBZTtJQUNwQixXQUFXLEVBQUUsYUFBYTtDQUMzQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBWZXJzaW9uIHtcbiAgYXBwPzogc3RyaW5nO1xuICBsaWI/OiBzdHJpbmc7XG4gIHJlbGVhc2VEYXRlQXBwPzogbnVtYmVyO1xuICByZWxlYXNlRGF0ZT86IG51bWJlcjtcbn1cblxuZXhwb3J0IGNvbnN0IHZlcnNpb246IFZlcnNpb24gPSB7XG4gIGxpYjogJzE4LjAuMC1uZXh0LjQnLFxuICByZWxlYXNlRGF0ZTogMTczMTQ0NzMxMzkyOVxufTtcbiJdfQ==
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvY29uZmlnL3NyYy92ZXJzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU9BLE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBWTtJQUM5QixHQUFHLEVBQUUsZUFBZTtJQUNwQixXQUFXLEVBQUUsYUFBYTtDQUMzQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBWZXJzaW9uIHtcbiAgYXBwPzogc3RyaW5nO1xuICBsaWI/OiBzdHJpbmc7XG4gIHJlbGVhc2VEYXRlQXBwPzogbnVtYmVyO1xuICByZWxlYXNlRGF0ZT86IG51bWJlcjtcbn1cblxuZXhwb3J0IGNvbnN0IHZlcnNpb246IFZlcnNpb24gPSB7XG4gIGxpYjogJzE4LjAuMC1uZXh0LjUnLFxuICByZWxlYXNlRGF0ZTogMTczMTQ0OTM2MjA3M1xufTtcbiJdfQ==
@@ -1,3 +1,3 @@
1
1
  export class LanguageLoaderBase {
2
2
  }
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFuZ3VhZ2UuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9sYW5ndWFnZS9zcmMvc2hhcmVkL2xhbmd1YWdlLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFPQSxNQUFNLE9BQWdCLGtCQUFrQjtDQUd2QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRyYW5zbGF0ZUxvYWRlciB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIExhbmd1YWdlT3B0aW9ucyB7XG4gIHByZWZpeD86IHN0cmluZyB8IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgTGFuZ3VhZ2VMb2FkZXJCYXNlIGltcGxlbWVudHMgVHJhbnNsYXRlTG9hZGVyIHtcbiAgYWJzdHJhY3QgaXNMb2FkZWQkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBhYnN0cmFjdCBnZXRUcmFuc2xhdGlvbihsYW5nOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT47XG59XG4iXX0=
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFuZ3VhZ2UuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9sYW5ndWFnZS9zcmMvc2hhcmVkL2xhbmd1YWdlLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFRQSxNQUFNLE9BQWdCLGtCQUFrQjtDQUd2QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRyYW5zbGF0ZUxvYWRlciB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIExhbmd1YWdlT3B0aW9ucyB7XG4gIHByZWZpeD86IHN0cmluZyB8IHN0cmluZ1tdO1xuICBpZ25vcmVMaWJzTG9jYWxlPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIExhbmd1YWdlTG9hZGVyQmFzZSBpbXBsZW1lbnRzIFRyYW5zbGF0ZUxvYWRlciB7XG4gIGFic3RyYWN0IGlzTG9hZGVkJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgYWJzdHJhY3QgZ2V0VHJhbnNsYXRpb24obGFuZzogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+O1xufVxuIl19
@@ -1,38 +1,53 @@
1
1
  import { HttpClient } from '@angular/common/http';
2
2
  import { ObjectUtils } from '@igo2/utils';
3
- import { BehaviorSubject, first, forkJoin, map, switchMap, tap } from 'rxjs';
3
+ import { BehaviorSubject, first, forkJoin, map, of, switchMap, tap } from 'rxjs';
4
4
  export class LanguageLoader {
5
- configService;
6
- prefix;
7
- suffix;
8
5
  httpClient;
9
6
  _isLoaded$ = new BehaviorSubject(null);
10
7
  isLoaded$ = this._isLoaded$.asObservable();
8
+ suffix = '.json';
9
+ prefix;
10
+ options;
11
+ constructor(handler, options) {
12
+ this.httpClient = new HttpClient(handler);
13
+ this.options = options;
14
+ }
15
+ getTranslation(lang) {
16
+ const igoLocale$ = this.httpClient.get(`locale/libs_locale/${lang}.json`);
17
+ if (!this.prefix) {
18
+ const prefix = this.options.prefix;
19
+ this.prefix = !prefix || Array.isArray(prefix) ? prefix : [prefix];
20
+ }
21
+ if (!this.prefix || this.prefix.length === 0) {
22
+ this._isLoaded$.next(true);
23
+ return this.options.ignoreLibsLocale ? of(undefined) : igoLocale$;
24
+ }
25
+ const appLocale$ = this.prefix.map((prefix) => this.httpClient.get(`${prefix}${lang}${this.suffix}`));
26
+ const locale$ = [...appLocale$];
27
+ if (!this.options.ignoreLibsLocale) {
28
+ locale$.unshift(igoLocale$);
29
+ }
30
+ return forkJoin(locale$).pipe(map((translations) => {
31
+ return translations.reduce((acc, current) => ObjectUtils.mergeDeep(acc, current), {});
32
+ }), tap(() => {
33
+ this._isLoaded$.next(true);
34
+ }));
35
+ }
36
+ }
37
+ export class LanguageLoaderWithAsyncConfig extends LanguageLoader {
38
+ configService;
11
39
  constructor(handler, configService, prefix, suffix = '.json') {
40
+ super(handler, undefined);
12
41
  this.configService = configService;
13
42
  this.prefix = prefix;
14
43
  this.suffix = suffix;
15
- this.httpClient = new HttpClient(handler);
16
44
  }
17
45
  getTranslation(lang) {
18
- const igoLocale$ = this.httpClient.get(`locale/libs_locale/${lang}.json`);
19
46
  return this.configService.isLoaded$.pipe(first((isLoaded) => isLoaded), switchMap(() => {
20
- if (this.configService && !this.prefix) {
21
- const prefix = this.configService.getConfig('language.prefix');
22
- this.prefix = !prefix || Array.isArray(prefix) ? prefix : [prefix];
23
- }
24
- if (!this.prefix || this.prefix.length === 0) {
25
- this._isLoaded$.next(true);
26
- return igoLocale$;
27
- }
28
- const appLocale$ = this.prefix.map((prefix) => this.httpClient.get(`${prefix}${lang}${this.suffix}`));
29
- const locale$ = forkJoin([igoLocale$, ...appLocale$]);
30
- return locale$.pipe(map((translations) => {
31
- return translations.reduce((acc, current) => ObjectUtils.mergeDeep(acc, current), {});
32
- }), tap(() => {
33
- this._isLoaded$.next(true);
34
- }));
47
+ this.options =
48
+ this.configService.getConfig('language');
49
+ return super.getTranslation(lang);
35
50
  }));
36
51
  }
37
52
  }
38
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFuZ3VhZ2UubG9hZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9sYW5ndWFnZS9zcmMvc2hhcmVkL2xhbmd1YWdlLmxvYWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFHL0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUUxQyxPQUFPLEVBQUUsZUFBZSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFJN0UsTUFBTSxPQUFPLGNBQWM7SUFRZjtJQUNBO0lBQ0E7SUFURixVQUFVLENBQWE7SUFFdkIsVUFBVSxHQUFHLElBQUksZUFBZSxDQUFVLElBQUksQ0FBQyxDQUFDO0lBQ3hELFNBQVMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBRTNDLFlBQ0UsT0FBb0IsRUFDWixhQUE0QixFQUM1QixNQUEwQixFQUMxQixTQUFTLE9BQU87UUFGaEIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsV0FBTSxHQUFOLE1BQU0sQ0FBb0I7UUFDMUIsV0FBTSxHQUFOLE1BQU0sQ0FBVTtRQUV4QixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFTSxjQUFjLENBQUMsSUFBWTtRQUNoQyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxzQkFBc0IsSUFBSSxPQUFPLENBQUMsQ0FBQztRQUMxRSxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLElBQUksQ0FDdEMsS0FBSyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFDN0IsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNiLElBQUksSUFBSSxDQUFDLGFBQWEsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDdkMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsaUJBQWlCLENBQUMsQ0FBQztnQkFDL0QsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDckUsQ0FBQztZQUVELElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUM3QyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDM0IsT0FBTyxVQUFVLENBQUM7WUFDcEIsQ0FBQztZQUVELE1BQU0sVUFBVSxHQUFJLElBQUksQ0FBQyxNQUFtQixDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQzFELElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEdBQUcsTUFBTSxHQUFHLElBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FDdEQsQ0FBQztZQUVGLE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxDQUFDLFVBQVUsRUFBRSxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUM7WUFFdEQsT0FBTyxPQUFPLENBQUMsSUFBSSxDQUNqQixHQUFHLENBQUMsQ0FBQyxZQUFZLEVBQUUsRUFBRTtnQkFDbkIsT0FBTyxZQUFZLENBQUMsTUFBTSxDQUN4QixDQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxFQUNyRCxFQUFFLENBQ0gsQ0FBQztZQUNKLENBQUMsQ0FBQyxFQUNGLEdBQUcsQ0FBQyxHQUFHLEVBQUU7Z0JBQ1AsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDN0IsQ0FBQyxDQUFDLENBQ0gsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQmFja2VuZCwgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcblxuaW1wb3J0IHsgQ29uZmlnU2VydmljZSB9IGZyb20gJ0BpZ28yL2NvcmUvY29uZmlnJztcbmltcG9ydCB7IE9iamVjdFV0aWxzIH0gZnJvbSAnQGlnbzIvdXRpbHMnO1xuXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGZpcnN0LCBmb3JrSm9pbiwgbWFwLCBzd2l0Y2hNYXAsIHRhcCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBMYW5ndWFnZUxvYWRlckJhc2UgfSBmcm9tICcuL2xhbmd1YWdlLmludGVyZmFjZSc7XG5cbmV4cG9ydCBjbGFzcyBMYW5ndWFnZUxvYWRlciBpbXBsZW1lbnRzIExhbmd1YWdlTG9hZGVyQmFzZSB7XG4gIHByaXZhdGUgaHR0cENsaWVudDogSHR0cENsaWVudDtcblxuICBwcml2YXRlIF9pc0xvYWRlZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KG51bGwpO1xuICBpc0xvYWRlZCQgPSB0aGlzLl9pc0xvYWRlZCQuYXNPYnNlcnZhYmxlKCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgaGFuZGxlcjogSHR0cEJhY2tlbmQsXG4gICAgcHJpdmF0ZSBjb25maWdTZXJ2aWNlOiBDb25maWdTZXJ2aWNlLFxuICAgIHByaXZhdGUgcHJlZml4Pzogc3RyaW5nIHwgc3RyaW5nW10sXG4gICAgcHJpdmF0ZSBzdWZmaXggPSAnLmpzb24nXG4gICkge1xuICAgIHRoaXMuaHR0cENsaWVudCA9IG5ldyBIdHRwQ2xpZW50KGhhbmRsZXIpO1xuICB9XG5cbiAgcHVibGljIGdldFRyYW5zbGF0aW9uKGxhbmc6IHN0cmluZyk6IGFueSB7XG4gICAgY29uc3QgaWdvTG9jYWxlJCA9IHRoaXMuaHR0cENsaWVudC5nZXQoYGxvY2FsZS9saWJzX2xvY2FsZS8ke2xhbmd9Lmpzb25gKTtcbiAgICByZXR1cm4gdGhpcy5jb25maWdTZXJ2aWNlLmlzTG9hZGVkJC5waXBlKFxuICAgICAgZmlyc3QoKGlzTG9hZGVkKSA9PiBpc0xvYWRlZCksXG4gICAgICBzd2l0Y2hNYXAoKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5jb25maWdTZXJ2aWNlICYmICF0aGlzLnByZWZpeCkge1xuICAgICAgICAgIGNvbnN0IHByZWZpeCA9IHRoaXMuY29uZmlnU2VydmljZS5nZXRDb25maWcoJ2xhbmd1YWdlLnByZWZpeCcpO1xuICAgICAgICAgIHRoaXMucHJlZml4ID0gIXByZWZpeCB8fCBBcnJheS5pc0FycmF5KHByZWZpeCkgPyBwcmVmaXggOiBbcHJlZml4XTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5wcmVmaXggfHwgdGhpcy5wcmVmaXgubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgdGhpcy5faXNMb2FkZWQkLm5leHQodHJ1ZSk7XG4gICAgICAgICAgcmV0dXJuIGlnb0xvY2FsZSQ7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBhcHBMb2NhbGUkID0gKHRoaXMucHJlZml4IGFzIHN0cmluZ1tdKS5tYXAoKHByZWZpeCkgPT5cbiAgICAgICAgICB0aGlzLmh0dHBDbGllbnQuZ2V0KGAke3ByZWZpeH0ke2xhbmd9JHt0aGlzLnN1ZmZpeH1gKVxuICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IGxvY2FsZSQgPSBmb3JrSm9pbihbaWdvTG9jYWxlJCwgLi4uYXBwTG9jYWxlJF0pO1xuXG4gICAgICAgIHJldHVybiBsb2NhbGUkLnBpcGUoXG4gICAgICAgICAgbWFwKCh0cmFuc2xhdGlvbnMpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB0cmFuc2xhdGlvbnMucmVkdWNlKFxuICAgICAgICAgICAgICAoYWNjLCBjdXJyZW50KSA9PiBPYmplY3RVdGlscy5tZXJnZURlZXAoYWNjLCBjdXJyZW50KSxcbiAgICAgICAgICAgICAge31cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSksXG4gICAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2lzTG9hZGVkJC5uZXh0KHRydWUpO1xuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cbn1cbiJdfQ==
53
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFuZ3VhZ2UubG9hZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9sYW5ndWFnZS9zcmMvc2hhcmVkL2xhbmd1YWdlLmxvYWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFHL0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUUxQyxPQUFPLEVBQ0wsZUFBZSxFQUVmLEtBQUssRUFDTCxRQUFRLEVBQ1IsR0FBRyxFQUNILEVBQUUsRUFDRixTQUFTLEVBQ1QsR0FBRyxFQUNKLE1BQU0sTUFBTSxDQUFDO0FBSWQsTUFBTSxPQUFPLGNBQWM7SUFDakIsVUFBVSxDQUFhO0lBRXZCLFVBQVUsR0FBRyxJQUFJLGVBQWUsQ0FBVSxJQUFJLENBQUMsQ0FBQztJQUN4RCxTQUFTLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUUzQyxNQUFNLEdBQUcsT0FBTyxDQUFDO0lBQ2pCLE1BQU0sQ0FBcUI7SUFDM0IsT0FBTyxDQUFrQjtJQUV6QixZQUFZLE9BQW9CLEVBQUUsT0FBd0I7UUFDeEQsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMxQyxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztJQUN6QixDQUFDO0lBRU0sY0FBYyxDQUFDLElBQVk7UUFDaEMsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsc0JBQXNCLElBQUksT0FBTyxDQUFDLENBQUM7UUFDMUUsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNqQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztZQUNuQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNyRSxDQUFDO1FBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDN0MsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDM0IsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQztRQUNwRSxDQUFDO1FBRUQsTUFBTSxVQUFVLEdBQUksSUFBSSxDQUFDLE1BQW1CLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FDMUQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsR0FBRyxNQUFNLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUN0RCxDQUFDO1FBRUYsTUFBTSxPQUFPLEdBQUcsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxDQUFDO1FBRWhDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDbkMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM5QixDQUFDO1FBRUQsT0FBTyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUMzQixHQUFHLENBQUMsQ0FBQyxZQUFZLEVBQUUsRUFBRTtZQUNuQixPQUFPLFlBQVksQ0FBQyxNQUFNLENBQ3hCLENBQUMsR0FBRyxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLEVBQ3JELEVBQUUsQ0FDSCxDQUFDO1FBQ0osQ0FBQyxDQUFDLEVBQ0YsR0FBRyxDQUFDLEdBQUcsRUFBRTtZQUNQLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzdCLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQU8sNkJBQThCLFNBQVEsY0FBYztJQUdyRDtJQUZWLFlBQ0UsT0FBb0IsRUFDWixhQUE0QixFQUNwQyxNQUEwQixFQUMxQixNQUFNLEdBQUcsT0FBTztRQUVoQixLQUFLLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBSmxCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBS3BDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7SUFFTSxjQUFjLENBQUMsSUFBWTtRQUNoQyxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLElBQUksQ0FDdEMsS0FBSyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFDN0IsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNiLElBQUksQ0FBQyxPQUFPO2dCQUNWLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFrQixVQUFVLENBQUMsQ0FBQztZQUU1RCxPQUFPLEtBQUssQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDcEMsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBCYWNrZW5kLCBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuXG5pbXBvcnQgeyBDb25maWdTZXJ2aWNlIH0gZnJvbSAnQGlnbzIvY29yZS9jb25maWcnO1xuaW1wb3J0IHsgT2JqZWN0VXRpbHMgfSBmcm9tICdAaWdvMi91dGlscyc7XG5cbmltcG9ydCB7XG4gIEJlaGF2aW9yU3ViamVjdCxcbiAgT2JzZXJ2YWJsZSxcbiAgZmlyc3QsXG4gIGZvcmtKb2luLFxuICBtYXAsXG4gIG9mLFxuICBzd2l0Y2hNYXAsXG4gIHRhcFxufSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgTGFuZ3VhZ2VMb2FkZXJCYXNlLCBMYW5ndWFnZU9wdGlvbnMgfSBmcm9tICcuL2xhbmd1YWdlLmludGVyZmFjZSc7XG5cbmV4cG9ydCBjbGFzcyBMYW5ndWFnZUxvYWRlciBpbXBsZW1lbnRzIExhbmd1YWdlTG9hZGVyQmFzZSB7XG4gIHByaXZhdGUgaHR0cENsaWVudDogSHR0cENsaWVudDtcblxuICBwcml2YXRlIF9pc0xvYWRlZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KG51bGwpO1xuICBpc0xvYWRlZCQgPSB0aGlzLl9pc0xvYWRlZCQuYXNPYnNlcnZhYmxlKCk7XG5cbiAgc3VmZml4ID0gJy5qc29uJztcbiAgcHJlZml4Pzogc3RyaW5nIHwgc3RyaW5nW107XG4gIG9wdGlvbnM6IExhbmd1YWdlT3B0aW9ucztcblxuICBjb25zdHJ1Y3RvcihoYW5kbGVyOiBIdHRwQmFja2VuZCwgb3B0aW9uczogTGFuZ3VhZ2VPcHRpb25zKSB7XG4gICAgdGhpcy5odHRwQ2xpZW50ID0gbmV3IEh0dHBDbGllbnQoaGFuZGxlcik7XG4gICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcbiAgfVxuXG4gIHB1YmxpYyBnZXRUcmFuc2xhdGlvbihsYW5nOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGNvbnN0IGlnb0xvY2FsZSQgPSB0aGlzLmh0dHBDbGllbnQuZ2V0KGBsb2NhbGUvbGlic19sb2NhbGUvJHtsYW5nfS5qc29uYCk7XG4gICAgaWYgKCF0aGlzLnByZWZpeCkge1xuICAgICAgY29uc3QgcHJlZml4ID0gdGhpcy5vcHRpb25zLnByZWZpeDtcbiAgICAgIHRoaXMucHJlZml4ID0gIXByZWZpeCB8fCBBcnJheS5pc0FycmF5KHByZWZpeCkgPyBwcmVmaXggOiBbcHJlZml4XTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMucHJlZml4IHx8IHRoaXMucHJlZml4Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy5faXNMb2FkZWQkLm5leHQodHJ1ZSk7XG4gICAgICByZXR1cm4gdGhpcy5vcHRpb25zLmlnbm9yZUxpYnNMb2NhbGUgPyBvZih1bmRlZmluZWQpIDogaWdvTG9jYWxlJDtcbiAgICB9XG5cbiAgICBjb25zdCBhcHBMb2NhbGUkID0gKHRoaXMucHJlZml4IGFzIHN0cmluZ1tdKS5tYXAoKHByZWZpeCkgPT5cbiAgICAgIHRoaXMuaHR0cENsaWVudC5nZXQoYCR7cHJlZml4fSR7bGFuZ30ke3RoaXMuc3VmZml4fWApXG4gICAgKTtcblxuICAgIGNvbnN0IGxvY2FsZSQgPSBbLi4uYXBwTG9jYWxlJF07XG5cbiAgICBpZiAoIXRoaXMub3B0aW9ucy5pZ25vcmVMaWJzTG9jYWxlKSB7XG4gICAgICBsb2NhbGUkLnVuc2hpZnQoaWdvTG9jYWxlJCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZvcmtKb2luKGxvY2FsZSQpLnBpcGUoXG4gICAgICBtYXAoKHRyYW5zbGF0aW9ucykgPT4ge1xuICAgICAgICByZXR1cm4gdHJhbnNsYXRpb25zLnJlZHVjZShcbiAgICAgICAgICAoYWNjLCBjdXJyZW50KSA9PiBPYmplY3RVdGlscy5tZXJnZURlZXAoYWNjLCBjdXJyZW50KSxcbiAgICAgICAgICB7fVxuICAgICAgICApO1xuICAgICAgfSksXG4gICAgICB0YXAoKCkgPT4ge1xuICAgICAgICB0aGlzLl9pc0xvYWRlZCQubmV4dCh0cnVlKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgTGFuZ3VhZ2VMb2FkZXJXaXRoQXN5bmNDb25maWcgZXh0ZW5kcyBMYW5ndWFnZUxvYWRlciB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIGhhbmRsZXI6IEh0dHBCYWNrZW5kLFxuICAgIHByaXZhdGUgY29uZmlnU2VydmljZTogQ29uZmlnU2VydmljZSxcbiAgICBwcmVmaXg/OiBzdHJpbmcgfCBzdHJpbmdbXSxcbiAgICBzdWZmaXggPSAnLmpzb24nXG4gICkge1xuICAgIHN1cGVyKGhhbmRsZXIsIHVuZGVmaW5lZCk7XG4gICAgdGhpcy5wcmVmaXggPSBwcmVmaXg7XG4gICAgdGhpcy5zdWZmaXggPSBzdWZmaXg7XG4gIH1cblxuICBwdWJsaWMgZ2V0VHJhbnNsYXRpb24obGFuZzogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5jb25maWdTZXJ2aWNlLmlzTG9hZGVkJC5waXBlKFxuICAgICAgZmlyc3QoKGlzTG9hZGVkKSA9PiBpc0xvYWRlZCksXG4gICAgICBzd2l0Y2hNYXAoKCkgPT4ge1xuICAgICAgICB0aGlzLm9wdGlvbnMgPVxuICAgICAgICAgIHRoaXMuY29uZmlnU2VydmljZS5nZXRDb25maWc8TGFuZ3VhZ2VPcHRpb25zPignbGFuZ3VhZ2UnKTtcblxuICAgICAgICByZXR1cm4gc3VwZXIuZ2V0VHJhbnNsYXRpb24obGFuZyk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cbn1cbiJdfQ==
@@ -4,17 +4,21 @@ import { ConfigService } from '@igo2/core/config';
4
4
  import { MissingTranslationHandler, TranslateLoader, TranslateModule } from '@ngx-translate/core';
5
5
  import { first } from 'rxjs';
6
6
  import { catchError, timeout } from 'rxjs/operators';
7
- import { LanguageLoader } from './language.loader';
7
+ import { LanguageLoader, LanguageLoaderWithAsyncConfig } from './language.loader';
8
8
  import { LanguageService } from './language.service';
9
9
  import { IgoMissingTranslationHandler } from './missing-translation.guard';
10
10
  // 5 seconds
11
11
  const TIMEOUT_DURATION = 5000;
12
+ export var TranslationFeatureKind;
13
+ (function (TranslationFeatureKind) {
14
+ TranslationFeatureKind[TranslationFeatureKind["Translation"] = 0] = "Translation";
15
+ })(TranslationFeatureKind || (TranslationFeatureKind = {}));
12
16
  /**
13
17
  * Make sure you only call this method in the root module of your application, most of the time called AppModule.
14
18
  */
15
- export function provideTranslation(defaultLanguage, loader) {
19
+ export function provideTranslation(featureConfig) {
16
20
  return makeEnvironmentProviders([
17
- importProvidersFrom(TranslateModule.forRoot(setTranslationConfig(loader, defaultLanguage))),
21
+ ...featureConfig.providers,
18
22
  {
19
23
  provide: APP_INITIALIZER,
20
24
  useFactory: (languageService) => () => {
@@ -28,6 +32,32 @@ export function provideTranslation(defaultLanguage, loader) {
28
32
  }
29
33
  ]);
30
34
  }
35
+ export function withStaticConfig(options, defaultLanguage) {
36
+ const loader = {
37
+ provide: TranslateLoader,
38
+ useFactory: (http) => languageLoaderWithStatic(http, options),
39
+ deps: [HttpBackend]
40
+ };
41
+ return {
42
+ kind: TranslationFeatureKind.Translation,
43
+ providers: [
44
+ importProvidersFrom(TranslateModule.forRoot(setTranslationConfig(loader, defaultLanguage)))
45
+ ]
46
+ };
47
+ }
48
+ export function withAsyncConfig(defaultLanguage) {
49
+ const loader = {
50
+ provide: TranslateLoader,
51
+ useFactory: languageLoaderWithAsync,
52
+ deps: [HttpBackend, ConfigService]
53
+ };
54
+ return {
55
+ kind: TranslationFeatureKind.Translation,
56
+ providers: [
57
+ importProvidersFrom(TranslateModule.forRoot(setTranslationConfig(loader, defaultLanguage)))
58
+ ]
59
+ };
60
+ }
31
61
  export const setTranslationConfig = (loader, defaultLanguage) => ({
32
62
  defaultLanguage: defaultLanguage,
33
63
  loader: loader ?? DEFAULT_LANGUAGE_LOADER,
@@ -36,12 +66,20 @@ export const setTranslationConfig = (loader, defaultLanguage) => ({
36
66
  useClass: IgoMissingTranslationHandler
37
67
  }
38
68
  });
39
- export const DEFAULT_LANGUAGE_LOADER = {
69
+ function languageLoaderWithStatic(http, options) {
70
+ return new LanguageLoader(http, options);
71
+ }
72
+ export const LANGUAGE_LOADER = {
40
73
  provide: TranslateLoader,
41
- useFactory: defaultLanguageLoader,
74
+ useFactory: languageLoaderWithAsync,
42
75
  deps: [HttpBackend, ConfigService]
43
76
  };
44
- function defaultLanguageLoader(http, config) {
45
- return new LanguageLoader(http, config, undefined, undefined);
77
+ function languageLoaderWithAsync(http, config) {
78
+ return new LanguageLoaderWithAsyncConfig(http, config, undefined, undefined);
46
79
  }
47
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFuZ3VhZ2UucHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL2xhbmd1YWdlL3NyYy9zaGFyZWQvbGFuZ3VhZ2UucHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ25ELE9BQU8sRUFDTCxlQUFlLEVBR2YsbUJBQW1CLEVBQ25CLHdCQUF3QixFQUN6QixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFbEQsT0FBTyxFQUNMLHlCQUF5QixFQUN6QixlQUFlLEVBQ2YsZUFBZSxFQUVoQixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDN0IsT0FBTyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUdyRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3JELE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRTNFLFlBQVk7QUFDWixNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQztBQUU5Qjs7R0FFRztBQUNILE1BQU0sVUFBVSxrQkFBa0IsQ0FDaEMsZUFBb0MsRUFDcEMsTUFBaUI7SUFFakIsT0FBTyx3QkFBd0IsQ0FBQztRQUM5QixtQkFBbUIsQ0FDakIsZUFBZSxDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLEVBQUUsZUFBZSxDQUFDLENBQUMsQ0FDdkU7UUFDRDtZQUNFLE9BQU8sRUFBRSxlQUFlO1lBQ3hCLFVBQVUsRUFBRSxDQUFDLGVBQWdDLEVBQUUsRUFBRSxDQUFDLEdBQUcsRUFBRTtnQkFDckQsT0FDRSxlQUFlLENBQUMsU0FBUyxDQUFDLGFBQzNCLENBQUMsU0FBUyxFQUFFLElBQUksQ0FDZixPQUFPLENBQUMsZ0JBQWdCLENBQUMsRUFDekIsS0FBSyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxRQUFRLEtBQUssSUFBSSxDQUFDLEVBQ3RDLFVBQVUsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO29CQUNuQixLQUFLLENBQUMsT0FBTyxJQUFJLG1EQUFtRCxnQkFBZ0IsRUFBRSxDQUFDO29CQUN2RixNQUFNLEtBQUssQ0FBQztnQkFDZCxDQUFDLENBQUMsQ0FDSCxDQUFDO1lBQ0osQ0FBQztZQUNELElBQUksRUFBRSxDQUFDLGVBQWUsQ0FBQztZQUN2QixLQUFLLEVBQUUsSUFBSTtTQUNaO0tBQ0YsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVELE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLENBQ2xDLE1BQWlCLEVBQ2pCLGVBQXdCLEVBQ0QsRUFBRSxDQUFDLENBQUM7SUFDM0IsZUFBZSxFQUFFLGVBQWU7SUFDaEMsTUFBTSxFQUFFLE1BQU0sSUFBSSx1QkFBdUI7SUFDekMseUJBQXlCLEVBQUU7UUFDekIsT0FBTyxFQUFFLHlCQUF5QjtRQUNsQyxRQUFRLEVBQUUsNEJBQTRCO0tBQ3ZDO0NBQ0YsQ0FBQyxDQUFDO0FBRUgsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQWE7SUFDL0MsT0FBTyxFQUFFLGVBQWU7SUFDeEIsVUFBVSxFQUFFLHFCQUFxQjtJQUNqQyxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsYUFBYSxDQUFDO0NBQ25DLENBQUM7QUFFRixTQUFTLHFCQUFxQixDQUFDLElBQWlCLEVBQUUsTUFBc0I7SUFDdEUsT0FBTyxJQUFJLGNBQWMsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQztBQUNoRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cEJhY2tlbmQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQge1xuICBBUFBfSU5JVElBTElaRVIsXG4gIEVudmlyb25tZW50UHJvdmlkZXJzLFxuICBQcm92aWRlcixcbiAgaW1wb3J0UHJvdmlkZXJzRnJvbSxcbiAgbWFrZUVudmlyb25tZW50UHJvdmlkZXJzXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBDb25maWdTZXJ2aWNlIH0gZnJvbSAnQGlnbzIvY29yZS9jb25maWcnO1xuXG5pbXBvcnQge1xuICBNaXNzaW5nVHJhbnNsYXRpb25IYW5kbGVyLFxuICBUcmFuc2xhdGVMb2FkZXIsXG4gIFRyYW5zbGF0ZU1vZHVsZSxcbiAgVHJhbnNsYXRlTW9kdWxlQ29uZmlnXG59IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgZmlyc3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIHRpbWVvdXQgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IExhbmd1YWdlTG9hZGVyQmFzZSB9IGZyb20gJy4vbGFuZ3VhZ2UuaW50ZXJmYWNlJztcbmltcG9ydCB7IExhbmd1YWdlTG9hZGVyIH0gZnJvbSAnLi9sYW5ndWFnZS5sb2FkZXInO1xuaW1wb3J0IHsgTGFuZ3VhZ2VTZXJ2aWNlIH0gZnJvbSAnLi9sYW5ndWFnZS5zZXJ2aWNlJztcbmltcG9ydCB7IElnb01pc3NpbmdUcmFuc2xhdGlvbkhhbmRsZXIgfSBmcm9tICcuL21pc3NpbmctdHJhbnNsYXRpb24uZ3VhcmQnO1xuXG4vLyA1IHNlY29uZHNcbmNvbnN0IFRJTUVPVVRfRFVSQVRJT04gPSA1MDAwO1xuXG4vKipcbiAqIE1ha2Ugc3VyZSB5b3Ugb25seSBjYWxsIHRoaXMgbWV0aG9kIGluIHRoZSByb290IG1vZHVsZSBvZiB5b3VyIGFwcGxpY2F0aW9uLCBtb3N0IG9mIHRoZSB0aW1lIGNhbGxlZCBBcHBNb2R1bGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlVHJhbnNsYXRpb24oXG4gIGRlZmF1bHRMYW5ndWFnZT86IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgbG9hZGVyPzogUHJvdmlkZXJcbik6IEVudmlyb25tZW50UHJvdmlkZXJzIHtcbiAgcmV0dXJuIG1ha2VFbnZpcm9ubWVudFByb3ZpZGVycyhbXG4gICAgaW1wb3J0UHJvdmlkZXJzRnJvbShcbiAgICAgIFRyYW5zbGF0ZU1vZHVsZS5mb3JSb290KHNldFRyYW5zbGF0aW9uQ29uZmlnKGxvYWRlciwgZGVmYXVsdExhbmd1YWdlKSlcbiAgICApLFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IEFQUF9JTklUSUFMSVpFUixcbiAgICAgIHVzZUZhY3Rvcnk6IChsYW5ndWFnZVNlcnZpY2U6IExhbmd1YWdlU2VydmljZSkgPT4gKCkgPT4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIGxhbmd1YWdlU2VydmljZS50cmFuc2xhdGUuY3VycmVudExvYWRlciBhcyBMYW5ndWFnZUxvYWRlckJhc2VcbiAgICAgICAgKS5pc0xvYWRlZCQ/LnBpcGUoXG4gICAgICAgICAgdGltZW91dChUSU1FT1VUX0RVUkFUSU9OKSxcbiAgICAgICAgICBmaXJzdCgoaXNMb2FkZWQpID0+IGlzTG9hZGVkID09PSB0cnVlKSxcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgZXJyb3IubWVzc2FnZSArPSBgIC0gUmVxdWVzdCB0aW1lZCBvdXQgZm9yIGxhbmd1YWdlIGxvYWRlciBhZnRlcjogJHtUSU1FT1VUX0RVUkFUSU9OfWA7XG4gICAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgfSxcbiAgICAgIGRlcHM6IFtMYW5ndWFnZVNlcnZpY2VdLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9XG4gIF0pO1xufVxuXG5leHBvcnQgY29uc3Qgc2V0VHJhbnNsYXRpb25Db25maWcgPSAoXG4gIGxvYWRlcj86IFByb3ZpZGVyLFxuICBkZWZhdWx0TGFuZ3VhZ2U/OiBzdHJpbmdcbik6IFRyYW5zbGF0ZU1vZHVsZUNvbmZpZyA9PiAoe1xuICBkZWZhdWx0TGFuZ3VhZ2U6IGRlZmF1bHRMYW5ndWFnZSxcbiAgbG9hZGVyOiBsb2FkZXIgPz8gREVGQVVMVF9MQU5HVUFHRV9MT0FERVIsXG4gIG1pc3NpbmdUcmFuc2xhdGlvbkhhbmRsZXI6IHtcbiAgICBwcm92aWRlOiBNaXNzaW5nVHJhbnNsYXRpb25IYW5kbGVyLFxuICAgIHVzZUNsYXNzOiBJZ29NaXNzaW5nVHJhbnNsYXRpb25IYW5kbGVyXG4gIH1cbn0pO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9MQU5HVUFHRV9MT0FERVI6IFByb3ZpZGVyID0ge1xuICBwcm92aWRlOiBUcmFuc2xhdGVMb2FkZXIsXG4gIHVzZUZhY3Rvcnk6IGRlZmF1bHRMYW5ndWFnZUxvYWRlcixcbiAgZGVwczogW0h0dHBCYWNrZW5kLCBDb25maWdTZXJ2aWNlXVxufTtcblxuZnVuY3Rpb24gZGVmYXVsdExhbmd1YWdlTG9hZGVyKGh0dHA6IEh0dHBCYWNrZW5kLCBjb25maWc/OiBDb25maWdTZXJ2aWNlKSB7XG4gIHJldHVybiBuZXcgTGFuZ3VhZ2VMb2FkZXIoaHR0cCwgY29uZmlnLCB1bmRlZmluZWQsIHVuZGVmaW5lZCk7XG59XG4iXX0=
80
+ export const DEFAULT_LANGUAGE_LOADER = {
81
+ provide: TranslateLoader,
82
+ useFactory: languageLoaderWithAsync,
83
+ deps: [HttpBackend, ConfigService]
84
+ };
85
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFuZ3VhZ2UucHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL2xhbmd1YWdlL3NyYy9zaGFyZWQvbGFuZ3VhZ2UucHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ25ELE9BQU8sRUFDTCxlQUFlLEVBR2YsbUJBQW1CLEVBQ25CLHdCQUF3QixFQUN6QixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFbEQsT0FBTyxFQUNMLHlCQUF5QixFQUN6QixlQUFlLEVBQ2YsZUFBZSxFQUVoQixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDN0IsT0FBTyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUdyRCxPQUFPLEVBQ0wsY0FBYyxFQUNkLDZCQUE2QixFQUM5QixNQUFNLG1CQUFtQixDQUFDO0FBQzNCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUUzRSxZQUFZO0FBQ1osTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7QUFPOUIsTUFBTSxDQUFOLElBQVksc0JBRVg7QUFGRCxXQUFZLHNCQUFzQjtJQUNoQyxpRkFBZSxDQUFBO0FBQ2pCLENBQUMsRUFGVyxzQkFBc0IsS0FBdEIsc0JBQXNCLFFBRWpDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsa0JBQWtCLENBQ2hDLGFBQXFFO0lBRXJFLE9BQU8sd0JBQXdCLENBQUM7UUFDOUIsR0FBRyxhQUFhLENBQUMsU0FBUztRQUMxQjtZQUNFLE9BQU8sRUFBRSxlQUFlO1lBQ3hCLFVBQVUs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bnRlbnQiOlsiaW1wb3J0IHsgSHR0cEJhY2tlbmQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQge1xuICBBUFBfSU5JVElBTElaRVIsXG4gIEVudmlyb25tZW50UHJvdmlkZXJzLFxuICBQcm92aWRlcixcbiAgaW1wb3J0UHJvdmlkZXJzRnJvbSxcbiAgbWFrZUVudmlyb25tZW50UHJvdmlkZXJzXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBDb25maWdTZXJ2aWNlIH0gZnJvbSAnQGlnbzIvY29yZS9jb25maWcnO1xuXG5pbXBvcnQge1xuICBNaXNzaW5nVHJhbnNsYXRpb25IYW5kbGVyLFxuICBUcmFuc2xhdGVMb2FkZXIsXG4gIFRyYW5zbGF0ZU1vZHVsZSxcbiAgVHJhbnNsYXRlTW9kdWxlQ29uZmlnXG59IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgZmlyc3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIHRpbWVvdXQgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IExhbmd1YWdlTG9hZGVyQmFzZSwgTGFuZ3VhZ2VPcHRpb25zIH0gZnJvbSAnLi9sYW5ndWFnZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHtcbiAgTGFuZ3VhZ2VMb2FkZXIsXG4gIExhbmd1YWdlTG9hZGVyV2l0aEFzeW5jQ29uZmlnXG59IGZyb20gJy4vbGFuZ3VhZ2UubG9hZGVyJztcbmltcG9ydCB7IExhbmd1YWdlU2VydmljZSB9IGZyb20gJy4vbGFuZ3VhZ2Uuc2VydmljZSc7XG5pbXBvcnQgeyBJZ29NaXNzaW5nVHJhbnNsYXRpb25IYW5kbGVyIH0gZnJvbSAnLi9taXNzaW5nLXRyYW5zbGF0aW9uLmd1YXJkJztcblxuLy8gNSBzZWNvbmRzXG5jb25zdCBUSU1FT1VUX0RVUkFUSU9OID0gNTAwMDtcblxuZXhwb3J0IGludGVyZmFjZSBUcmFuc2xhdGlvbkZlYXR1cmU8S2luZFQgZXh0ZW5kcyBUcmFuc2xhdGlvbkZlYXR1cmVLaW5kPiB7XG4gIGtpbmQ6IEtpbmRUO1xuICBwcm92aWRlcnM6IChQcm92aWRlciB8IEVudmlyb25tZW50UHJvdmlkZXJzKVtdO1xufVxuXG5leHBvcnQgZW51bSBUcmFuc2xhdGlvbkZlYXR1cmVLaW5kIHtcbiAgVHJhbnNsYXRpb24gPSAwXG59XG5cbi8qKlxuICogTWFrZSBzdXJlIHlvdSBvbmx5IGNhbGwgdGhpcyBtZXRob2QgaW4gdGhlIHJvb3QgbW9kdWxlIG9mIHlvdXIgYXBwbGljYXRpb24sIG1vc3Qgb2YgdGhlIHRpbWUgY2FsbGVkIEFwcE1vZHVsZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVUcmFuc2xhdGlvbihcbiAgZmVhdHVyZUNvbmZpZzogVHJhbnNsYXRpb25GZWF0dXJlPFRyYW5zbGF0aW9uRmVhdHVyZUtpbmQuVHJhbnNsYXRpb24+XG4pOiBFbnZpcm9ubWVudFByb3ZpZGVycyB7XG4gIHJldHVybiBtYWtlRW52aXJvbm1lbnRQcm92aWRlcnMoW1xuICAgIC4uLmZlYXR1cmVDb25maWcucHJvdmlkZXJzLFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IEFQUF9JTklUSUFMSVpFUixcbiAgICAgIHVzZUZhY3Rvcnk6IChsYW5ndWFnZVNlcnZpY2U6IExhbmd1YWdlU2VydmljZSkgPT4gKCkgPT4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIGxhbmd1YWdlU2VydmljZS50cmFuc2xhdGUuY3VycmVudExvYWRlciBhcyBMYW5ndWFnZUxvYWRlckJhc2VcbiAgICAgICAgKS5pc0xvYWRlZCQ/LnBpcGUoXG4gICAgICAgICAgdGltZW91dChUSU1FT1VUX0RVUkFUSU9OKSxcbiAgICAgICAgICBmaXJzdCgoaXNMb2FkZWQpID0+IGlzTG9hZGVkID09PSB0cnVlKSxcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgZXJyb3IubWVzc2FnZSArPSBgIC0gUmVxdWVzdCB0aW1lZCBvdXQgZm9yIGxhbmd1YWdlIGxvYWRlciBhZnRlcjogJHtUSU1FT1VUX0RVUkFUSU9OfWA7XG4gICAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgfSxcbiAgICAgIGRlcHM6IFtMYW5ndWFnZVNlcnZpY2VdLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9XG4gIF0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gd2l0aFN0YXRpY0NvbmZpZyhcbiAgb3B0aW9uczogTGFuZ3VhZ2VPcHRpb25zLFxuICBkZWZhdWx0TGFuZ3VhZ2U/OiBzdHJpbmcgfCB1bmRlZmluZWRcbik6IFRyYW5zbGF0aW9uRmVhdHVyZTxUcmFuc2xhdGlvbkZlYXR1cmVLaW5kLlRyYW5zbGF0aW9uPiB7XG4gIGNvbnN0IGxvYWRlcjogUHJvdmlkZXIgPSB7XG4gICAgcHJvdmlkZTogVHJhbnNsYXRlTG9hZGVyLFxuICAgIHVzZUZhY3Rvcnk6IChodHRwOiBIdHRwQmFja2VuZCkgPT4gbGFuZ3VhZ2VMb2FkZXJXaXRoU3RhdGljKGh0dHAsIG9wdGlvbnMpLFxuICAgIGRlcHM6IFtIdHRwQmFja2VuZF1cbiAgfTtcbiAgcmV0dXJuIHtcbiAgICBraW5kOiBUcmFuc2xhdGlvbkZlYXR1cmVLaW5kLlRyYW5zbGF0aW9uLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgaW1wb3J0UHJvdmlkZXJzRnJvbShcbiAgICAgICAgVHJhbnNsYXRlTW9kdWxlLmZvclJvb3Qoc2V0VHJhbnNsYXRpb25Db25maWcobG9hZGVyLCBkZWZhdWx0TGFuZ3VhZ2UpKVxuICAgICAgKVxuICAgIF1cbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdpdGhBc3luY0NvbmZpZyhcbiAgZGVmYXVsdExhbmd1YWdlPzogc3RyaW5nIHwgdW5kZWZpbmVkXG4pOiBUcmFuc2xhdGlvbkZlYXR1cmU8VHJhbnNsYXRpb25GZWF0dXJlS2luZC5UcmFuc2xhdGlvbj4ge1xuICBjb25zdCBsb2FkZXI6IFByb3ZpZGVyID0ge1xuICAgIHByb3ZpZGU6IFRyYW5zbGF0ZUxvYWRlcixcbiAgICB1c2VGYWN0b3J5OiBsYW5ndWFnZUxvYWRlcldpdGhBc3luYyxcbiAgICBkZXBzOiBbSHR0cEJhY2tlbmQsIENvbmZpZ1NlcnZpY2VdXG4gIH07XG4gIHJldHVybiB7XG4gICAga2luZDogVHJhbnNsYXRpb25GZWF0dXJlS2luZC5UcmFuc2xhdGlvbixcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgIGltcG9ydFByb3ZpZGVyc0Zyb20oXG4gICAgICAgIFRyYW5zbGF0ZU1vZHVsZS5mb3JSb290KHNldFRyYW5zbGF0aW9uQ29uZmlnKGxvYWRlciwgZGVmYXVsdExhbmd1YWdlKSlcbiAgICAgIClcbiAgICBdXG4gIH07XG59XG5cbmV4cG9ydCBjb25zdCBzZXRUcmFuc2xhdGlvbkNvbmZpZyA9IChcbiAgbG9hZGVyPzogUHJvdmlkZXIsXG4gIGRlZmF1bHRMYW5ndWFnZT86IHN0cmluZ1xuKTogVHJhbnNsYXRlTW9kdWxlQ29uZmlnID0+ICh7XG4gIGRlZmF1bHRMYW5ndWFnZTogZGVmYXVsdExhbmd1YWdlLFxuICBsb2FkZXI6IGxvYWRlciA/PyBERUZBVUxUX0xBTkdVQUdFX0xPQURFUixcbiAgbWlzc2luZ1RyYW5zbGF0aW9uSGFuZGxlcjoge1xuICAgIHByb3ZpZGU6IE1pc3NpbmdUcmFuc2xhdGlvbkhhbmRsZXIsXG4gICAgdXNlQ2xhc3M6IElnb01pc3NpbmdUcmFuc2xhdGlvbkhhbmRsZXJcbiAgfVxufSk7XG5cbmZ1bmN0aW9uIGxhbmd1YWdlTG9hZGVyV2l0aFN0YXRpYyhcbiAgaHR0cDogSHR0cEJhY2tlbmQsXG4gIG9wdGlvbnM/OiBMYW5ndWFnZU9wdGlvbnNcbikge1xuICByZXR1cm4gbmV3IExhbmd1YWdlTG9hZGVyKGh0dHAsIG9wdGlvbnMpO1xufVxuXG5leHBvcnQgY29uc3QgTEFOR1VBR0VfTE9BREVSOiBQcm92aWRlciA9IHtcbiAgcHJvdmlkZTogVHJhbnNsYXRlTG9hZGVyLFxuICB1c2VGYWN0b3J5OiBsYW5ndWFnZUxvYWRlcldpdGhBc3luYyxcbiAgZGVwczogW0h0dHBCYWNrZW5kLCBDb25maWdTZXJ2aWNlXVxufTtcblxuZnVuY3Rpb24gbGFuZ3VhZ2VMb2FkZXJXaXRoQXN5bmMoaHR0cDogSHR0cEJhY2tlbmQsIGNvbmZpZz86IENvbmZpZ1NlcnZpY2UpIHtcbiAgcmV0dXJuIG5ldyBMYW5ndWFnZUxvYWRlcldpdGhBc3luY0NvbmZpZyhodHRwLCBjb25maWcsIHVuZGVmaW5lZCwgdW5kZWZpbmVkKTtcbn1cblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfTEFOR1VBR0VfTE9BREVSOiBQcm92aWRlciA9IHtcbiAgcHJvdmlkZTogVHJhbnNsYXRlTG9hZGVyLFxuICB1c2VGYWN0b3J5OiBsYW5ndWFnZUxvYWRlcldpdGhBc3luYyxcbiAgZGVwczogW0h0dHBCYWNrZW5kLCBDb25maWdTZXJ2aWNlXVxufTtcbiJdfQ==
@@ -3,7 +3,7 @@ import { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http'
3
3
  import { NgModule } from '@angular/core';
4
4
  import { IgoActivityModule } from '@igo2/core/activity';
5
5
  import { provideConfig } from '@igo2/core/config';
6
- import { IgoLanguageModule, provideTranslation } from '@igo2/core/language';
6
+ import { IgoLanguageModule, provideTranslation, withAsyncConfig } from '@igo2/core/language';
7
7
  import { provideMessage } from '@igo2/core/message';
8
8
  import { IgoErrorModule } from '@igo2/core/request';
9
9
  import * as i0 from "@angular/core";
@@ -13,7 +13,7 @@ export class IgoCoreModule {
13
13
  static forRoot(options = {}) {
14
14
  return {
15
15
  ngModule: IgoCoreModule,
16
- providers: [provideConfig(options), provideTranslation()]
16
+ providers: [provideConfig(options), provideTranslation(withAsyncConfig())]
17
17
  };
18
18
  }
19
19
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: IgoCoreModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
@@ -35,4 +35,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImpo
35
35
  providers: [provideMessage(), provideHttpClient(withInterceptorsFromDi())]
36
36
  }]
37
37
  }] });
38
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9saWIvY29yZS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsc0JBQXNCLEVBQ3ZCLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUF1QixRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFOUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDeEQsT0FBTyxFQUFpQixhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM1RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7O0FBWXBELE1BQU0sT0FBTyxhQUFhO0lBQ3hCLE1BQU0sQ0FBQyxPQUFPLENBQ1osVUFBeUIsRUFBRTtRQUUzQixPQUFPO1lBQ0wsUUFBUSxFQUFFLGFBQWE7WUFDdkIsU0FBUyxFQUFFLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxFQUFFLGtCQUFrQixFQUFFLENBQUM7U0FDMUQsQ0FBQztJQUNKLENBQUM7d0dBUlUsYUFBYTt5R0FBYixhQUFhLFlBTnRCLFlBQVksc0RBRkosaUJBQWlCLEVBQUUsY0FBYyxFQUFFLGlCQUFpQjt5R0FRbkQsYUFBYSxhQUZiLENBQUMsY0FBYyxFQUFFLEVBQUUsaUJBQWlCLENBQUMsc0JBQXNCLEVBQUUsQ0FBQyxDQUFDLFlBSnhFLFlBQVk7WUFDWixpQkFBaUIsQ0FBQyxPQUFPLEVBQUU7WUFDM0IsY0FBYyxDQUFDLE9BQU8sRUFBRSxFQUpoQixpQkFBaUIsRUFBRSxjQUFjLEVBQUUsaUJBQWlCOzs0RkFRbkQsYUFBYTtrQkFWekIsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsRUFBRTtvQkFDaEIsT0FBTyxFQUFFLENBQUMsaUJBQWlCLEVBQUUsY0FBYyxFQUFFLGlCQUFpQixDQUFDO29CQUMvRCxPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWixpQkFBaUIsQ0FBQyxPQUFPLEVBQUU7d0JBQzNCLGNBQWMsQ0FBQyxPQUFPLEVBQUU7cUJBQ3pCO29CQUNELFNBQVMsRUFBRSxDQUFDLGNBQWMsRUFBRSxFQUFFLGlCQUFpQixDQUFDLHNCQUFzQixFQUFFLENBQUMsQ0FBQztpQkFDM0UiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgcHJvdmlkZUh0dHBDbGllbnQsXG4gIHdpdGhJbnRlcmNlcHRvcnNGcm9tRGlcbn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgTW9kdWxlV2l0aFByb3ZpZGVycywgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgSWdvQWN0aXZpdHlNb2R1bGUgfSBmcm9tICdAaWdvMi9jb3JlL2FjdGl2aXR5JztcbmltcG9ydCB7IENvbmZpZ09wdGlvbnMsIHByb3ZpZGVDb25maWcgfSBmcm9tICdAaWdvMi9jb3JlL2NvbmZpZyc7XG5pbXBvcnQgeyBJZ29MYW5ndWFnZU1vZHVsZSwgcHJvdmlkZVRyYW5zbGF0aW9uIH0gZnJvbSAnQGlnbzIvY29yZS9sYW5ndWFnZSc7XG5pbXBvcnQgeyBwcm92aWRlTWVzc2FnZSB9IGZyb20gJ0BpZ28yL2NvcmUvbWVzc2FnZSc7XG5pbXBvcnQgeyBJZ29FcnJvck1vZHVsZSB9IGZyb20gJ0BpZ28yL2NvcmUvcmVxdWVzdCc7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW10sXG4gIGV4cG9ydHM6IFtJZ29BY3Rpdml0eU1vZHVsZSwgSWdvRXJyb3JNb2R1bGUsIElnb0xhbmd1YWdlTW9kdWxlXSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBJZ29BY3Rpdml0eU1vZHVsZS5mb3JSb290KCksXG4gICAgSWdvRXJyb3JNb2R1bGUuZm9yUm9vdCgpXG4gIF0sXG4gIHByb3ZpZGVyczogW3Byb3ZpZGVNZXNzYWdlKCksIHByb3ZpZGVIdHRwQ2xpZW50KHdpdGhJbnRlcmNlcHRvcnNGcm9tRGkoKSldXG59KVxuZXhwb3J0IGNsYXNzIElnb0NvcmVNb2R1bGUge1xuICBzdGF0aWMgZm9yUm9vdChcbiAgICBvcHRpb25zOiBDb25maWdPcHRpb25zID0ge31cbiAgKTogTW9kdWxlV2l0aFByb3ZpZGVyczxJZ29Db3JlTW9kdWxlPiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5nTW9kdWxlOiBJZ29Db3JlTW9kdWxlLFxuICAgICAgcHJvdmlkZXJzOiBbcHJvdmlkZUNvbmZpZyhvcHRpb25zKSwgcHJvdmlkZVRyYW5zbGF0aW9uKCldXG4gICAgfTtcbiAgfVxufVxuIl19
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9saWIvY29yZS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsc0JBQXNCLEVBQ3ZCLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUF1QixRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFOUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDeEQsT0FBTyxFQUFpQixhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRSxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLGtCQUFrQixFQUNsQixlQUFlLEVBQ2hCLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7OztBQVlwRCxNQUFNLE9BQU8sYUFBYTtJQUN4QixNQUFNLENBQUMsT0FBTyxDQUNaLFVBQXlCLEVBQUU7UUFFM0IsT0FBTztZQUNMLFFBQVEsRUFBRSxhQUFhO1lBQ3ZCLFNBQVMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsRUFBRSxrQkFBa0IsQ0FBQyxlQUFlLEVBQUUsQ0FBQyxDQUFDO1NBQzNFLENBQUM7SUFDSixDQUFDO3dHQVJVLGFBQWE7eUdBQWIsYUFBYSxZQU50QixZQUFZLHNEQUZKLGlCQUFpQixFQUFFLGNBQWMsRUFBRSxpQkFBaUI7eUdBUW5ELGFBQWEsYUFGYixDQUFDLGNBQWMsRUFBRSxFQUFFLGlCQUFpQixDQUFDLHNCQUFzQixFQUFFLENBQUMsQ0FBQyxZQUp4RSxZQUFZO1lBQ1osaUJBQWlCLENBQUMsT0FBTyxFQUFFO1lBQzNCLGNBQWMsQ0FBQyxPQUFPLEVBQUUsRUFKaEIsaUJBQWlCLEVBQUUsY0FBYyxFQUFFLGlCQUFpQjs7NEZBUW5ELGFBQWE7a0JBVnpCLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLEVBQUU7b0JBQ2hCLE9BQU8sRUFBRSxDQUFDLGlCQUFpQixFQUFFLGNBQWMsRUFBRSxpQkFBaUIsQ0FBQztvQkFDL0QsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osaUJBQWlCLENBQUMsT0FBTyxFQUFFO3dCQUMzQixjQUFjLENBQUMsT0FBTyxFQUFFO3FCQUN6QjtvQkFDRCxTQUFTLEVBQUUsQ0FBQyxjQUFjLEVBQUUsRUFBRSxpQkFBaUIsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDLENBQUM7aUJBQzNFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIHByb3ZpZGVIdHRwQ2xpZW50LFxuICB3aXRoSW50ZXJjZXB0b3JzRnJvbURpXG59IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IE1vZHVsZVdpdGhQcm92aWRlcnMsIE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IElnb0FjdGl2aXR5TW9kdWxlIH0gZnJvbSAnQGlnbzIvY29yZS9hY3Rpdml0eSc7XG5pbXBvcnQgeyBDb25maWdPcHRpb25zLCBwcm92aWRlQ29uZmlnIH0gZnJvbSAnQGlnbzIvY29yZS9jb25maWcnO1xuaW1wb3J0IHtcbiAgSWdvTGFuZ3VhZ2VNb2R1bGUsXG4gIHByb3ZpZGVUcmFuc2xhdGlvbixcbiAgd2l0aEFzeW5jQ29uZmlnXG59IGZyb20gJ0BpZ28yL2NvcmUvbGFuZ3VhZ2UnO1xuaW1wb3J0IHsgcHJvdmlkZU1lc3NhZ2UgfSBmcm9tICdAaWdvMi9jb3JlL21lc3NhZ2UnO1xuaW1wb3J0IHsgSWdvRXJyb3JNb2R1bGUgfSBmcm9tICdAaWdvMi9jb3JlL3JlcXVlc3QnO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtdLFxuICBleHBvcnRzOiBbSWdvQWN0aXZpdHlNb2R1bGUsIElnb0Vycm9yTW9kdWxlLCBJZ29MYW5ndWFnZU1vZHVsZV0sXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgSWdvQWN0aXZpdHlNb2R1bGUuZm9yUm9vdCgpLFxuICAgIElnb0Vycm9yTW9kdWxlLmZvclJvb3QoKVxuICBdLFxuICBwcm92aWRlcnM6IFtwcm92aWRlTWVzc2FnZSgpLCBwcm92aWRlSHR0cENsaWVudCh3aXRoSW50ZXJjZXB0b3JzRnJvbURpKCkpXVxufSlcbmV4cG9ydCBjbGFzcyBJZ29Db3JlTW9kdWxlIHtcbiAgc3RhdGljIGZvclJvb3QoXG4gICAgb3B0aW9uczogQ29uZmlnT3B0aW9ucyA9IHt9XG4gICk6IE1vZHVsZVdpdGhQcm92aWRlcnM8SWdvQ29yZU1vZHVsZT4ge1xuICAgIHJldHVybiB7XG4gICAgICBuZ01vZHVsZTogSWdvQ29yZU1vZHVsZSxcbiAgICAgIHByb3ZpZGVyczogW3Byb3ZpZGVDb25maWcob3B0aW9ucyksIHByb3ZpZGVUcmFuc2xhdGlvbih3aXRoQXN5bmNDb25maWcoKSldXG4gICAgfTtcbiAgfVxufVxuIl19
@@ -34,8 +34,8 @@ const ALTERNATE_CONFIG_FROM_DEPRECATION = new Map(Object.entries(CONFIG_DEPRECAT
34
34
  ]));
35
35
 
36
36
  const version = {
37
- lib: '18.0.0-next.4',
38
- releaseDate: 1731447313929
37
+ lib: '18.0.0-next.5',
38
+ releaseDate: 1731449362073
39
39
  };
40
40
 
41
41
  class ConfigService {
@@ -1 +1 @@
1
- {"version":3,"file":"igo2-core-config.mjs","sources":["../../../packages/core/config/src/config-deprecated.ts","../../../packages/core/config/src/version.ts","../../../packages/core/config/src/config.service.ts","../../../packages/core/config/src/config.provider.ts","../../../packages/core/config/src/config.module.ts","../../../packages/core/config/src/igo2-core-config.ts"],"sourcesContent":["import { AlternateConfigOptions, DeprecatedOptions } from './config.interface';\n\nexport const CONFIG_DEPRECATED: Record<string, DeprecatedOptions> = {\n showMenuButton: {\n alternativeKey: 'menu.button.visible',\n mayBeRemoveIn: new Date('2024-06-06')\n },\n menuButtonReverseColor: {\n alternativeKey: 'menu.button.useThemeColor',\n mayBeRemoveIn: new Date('2024-06-06')\n },\n importWithStyle: {\n alternativeKey: 'importExport.importWithStyle',\n mayBeRemoveIn: new Date('2024-06-06')\n },\n hasGeolocateButton: {\n alternativeKey: 'geolocate.button.visible',\n mayBeRemoveIn: new Date('2024-06-06')\n }\n};\n\nexport const ALTERNATE_CONFIG_FROM_DEPRECATION = new Map<\n string,\n AlternateConfigOptions\n>(\n Object.entries(CONFIG_DEPRECATED)\n .filter(([_, options]) => options.alternativeKey)\n .map(([key, options]) => [\n options.alternativeKey,\n {\n deprecatedKey: key\n } satisfies AlternateConfigOptions\n ])\n);\n","export interface Version {\n app?: string;\n lib?: string;\n releaseDateApp?: number;\n releaseDate?: number;\n}\n\nexport const version: Version = {\n lib: '18.0.0-next.4',\n releaseDate: 1731447313929\n};\n","import { HttpBackend, HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\n\nimport { ObjectUtils } from '@igo2/utils';\n\nimport { BehaviorSubject, throwError } from 'rxjs';\nimport { catchError } from 'rxjs/operators';\n\nimport {\n ALTERNATE_CONFIG_FROM_DEPRECATION,\n CONFIG_DEPRECATED\n} from './config-deprecated';\nimport { ConfigOptions } from './config.interface';\nimport { version } from './version';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ConfigService<T extends object = Record<string, any>> {\n private config: T | null;\n private httpClient: HttpClient;\n private configDeprecated = new Map(Object.entries(CONFIG_DEPRECATED));\n\n private _isLoaded$ = new BehaviorSubject<boolean>(null);\n isLoaded$ = this._isLoaded$.asObservable();\n\n constructor(handler: HttpBackend) {\n this.httpClient = new HttpClient(handler);\n }\n\n /**\n * Use to get the all config file (merge from environnement.ts and config.json)\n */\n public getConfigs(): any {\n Array.from(this.configDeprecated.keys()).map((deprecatedKey) => {\n const deprecatedValue = ObjectUtils.resolve(this.config, deprecatedKey);\n if (deprecatedValue !== undefined) {\n this.handleDeprecatedConfig(deprecatedKey);\n }\n });\n return this.config;\n }\n\n /**\n * Use to get the data found in config file\n */\n public getConfig<T = any>(key: string, defaultValue?: unknown): T {\n let value = ObjectUtils.resolve(this.config, key);\n\n const isDeprecated = this.configDeprecated.get(key);\n if (isDeprecated && value !== undefined) {\n this.handleDeprecatedConfig(key);\n } else if (value === undefined) {\n value = this.handleDeprecationPossibility(key);\n }\n\n return value ?? defaultValue;\n }\n\n private handleDeprecatedConfig(key: string): void {\n const options = this.configDeprecated.get(key);\n\n let message = `This config (${key}) is deprecated and will be removed shortly`;\n if (options.alternativeKey) {\n message += ` You should use this key (${options.alternativeKey}) as an alternate solution`;\n }\n\n const currentDate = new Date();\n currentDate >= options.mayBeRemoveIn\n ? console.error(message)\n : console.warn(message);\n }\n\n private handleDeprecationPossibility(key: string): any {\n const options = ALTERNATE_CONFIG_FROM_DEPRECATION.get(key);\n if (!options) {\n return;\n }\n\n return this.getConfig(options.deprecatedKey);\n }\n\n /**\n * This method loads \"[path]\" to get all config's variables\n */\n public load(options: ConfigOptions<T>) {\n const baseConfig = options.default;\n if (!options.path) {\n this.config = baseConfig;\n this._isLoaded$.next(true);\n return true;\n }\n\n return new Promise((resolve) => {\n this.httpClient\n .get(options.path)\n .pipe(\n catchError((error: any): any => {\n console.log(`Configuration file ${options.path} could not be read`);\n this._isLoaded$.next(false);\n resolve(true);\n return throwError(error.error || 'Server error');\n })\n )\n .subscribe((configResponse: object) => {\n this.config = ObjectUtils.mergeDeep(\n ObjectUtils.mergeDeep({ version }, baseConfig),\n configResponse\n );\n this._isLoaded$.next(true);\n resolve(true);\n });\n });\n }\n}\n","import {\n APP_INITIALIZER,\n EnvironmentProviders,\n InjectionToken,\n makeEnvironmentProviders\n} from '@angular/core';\n\nimport { ConfigOptions } from './config.interface';\nimport { ConfigService } from './config.service';\n\nexport const CONFIG_OPTIONS = new InjectionToken<ConfigOptions>(\n 'configOptions'\n);\n\nexport function provideConfig(options: ConfigOptions): EnvironmentProviders {\n return makeEnvironmentProviders([\n {\n provide: CONFIG_OPTIONS,\n useValue: options\n },\n {\n provide: APP_INITIALIZER,\n useFactory: configFactory,\n multi: true,\n deps: [ConfigService, CONFIG_OPTIONS]\n }\n ]);\n}\n\nfunction configFactory(configService: ConfigService, options: ConfigOptions) {\n return () => configService.load(options);\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\n\nimport { provideConfig } from './config.provider';\n\n/**\n * @deprecated import the provideConfig directly\n */\n@NgModule({\n imports: [],\n declarations: [],\n exports: []\n})\nexport class IgoConfigModule {\n static forRoot(): ModuleWithProviders<IgoConfigModule> {\n return {\n ngModule: IgoConfigModule,\n providers: [provideConfig({})]\n };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"igo2-core-config.mjs","sources":["../../../packages/core/config/src/config-deprecated.ts","../../../packages/core/config/src/version.ts","../../../packages/core/config/src/config.service.ts","../../../packages/core/config/src/config.provider.ts","../../../packages/core/config/src/config.module.ts","../../../packages/core/config/src/igo2-core-config.ts"],"sourcesContent":["import { AlternateConfigOptions, DeprecatedOptions } from './config.interface';\n\nexport const CONFIG_DEPRECATED: Record<string, DeprecatedOptions> = {\n showMenuButton: {\n alternativeKey: 'menu.button.visible',\n mayBeRemoveIn: new Date('2024-06-06')\n },\n menuButtonReverseColor: {\n alternativeKey: 'menu.button.useThemeColor',\n mayBeRemoveIn: new Date('2024-06-06')\n },\n importWithStyle: {\n alternativeKey: 'importExport.importWithStyle',\n mayBeRemoveIn: new Date('2024-06-06')\n },\n hasGeolocateButton: {\n alternativeKey: 'geolocate.button.visible',\n mayBeRemoveIn: new Date('2024-06-06')\n }\n};\n\nexport const ALTERNATE_CONFIG_FROM_DEPRECATION = new Map<\n string,\n AlternateConfigOptions\n>(\n Object.entries(CONFIG_DEPRECATED)\n .filter(([_, options]) => options.alternativeKey)\n .map(([key, options]) => [\n options.alternativeKey,\n {\n deprecatedKey: key\n } satisfies AlternateConfigOptions\n ])\n);\n","export interface Version {\n app?: string;\n lib?: string;\n releaseDateApp?: number;\n releaseDate?: number;\n}\n\nexport const version: Version = {\n lib: '18.0.0-next.5',\n releaseDate: 1731449362073\n};\n","import { HttpBackend, HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\n\nimport { ObjectUtils } from '@igo2/utils';\n\nimport { BehaviorSubject, throwError } from 'rxjs';\nimport { catchError } from 'rxjs/operators';\n\nimport {\n ALTERNATE_CONFIG_FROM_DEPRECATION,\n CONFIG_DEPRECATED\n} from './config-deprecated';\nimport { ConfigOptions } from './config.interface';\nimport { version } from './version';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ConfigService<T extends object = Record<string, any>> {\n private config: T | null;\n private httpClient: HttpClient;\n private configDeprecated = new Map(Object.entries(CONFIG_DEPRECATED));\n\n private _isLoaded$ = new BehaviorSubject<boolean>(null);\n isLoaded$ = this._isLoaded$.asObservable();\n\n constructor(handler: HttpBackend) {\n this.httpClient = new HttpClient(handler);\n }\n\n /**\n * Use to get the all config file (merge from environnement.ts and config.json)\n */\n public getConfigs(): any {\n Array.from(this.configDeprecated.keys()).map((deprecatedKey) => {\n const deprecatedValue = ObjectUtils.resolve(this.config, deprecatedKey);\n if (deprecatedValue !== undefined) {\n this.handleDeprecatedConfig(deprecatedKey);\n }\n });\n return this.config;\n }\n\n /**\n * Use to get the data found in config file\n */\n public getConfig<T = any>(key: string, defaultValue?: unknown): T {\n let value = ObjectUtils.resolve(this.config, key);\n\n const isDeprecated = this.configDeprecated.get(key);\n if (isDeprecated && value !== undefined) {\n this.handleDeprecatedConfig(key);\n } else if (value === undefined) {\n value = this.handleDeprecationPossibility(key);\n }\n\n return value ?? defaultValue;\n }\n\n private handleDeprecatedConfig(key: string): void {\n const options = this.configDeprecated.get(key);\n\n let message = `This config (${key}) is deprecated and will be removed shortly`;\n if (options.alternativeKey) {\n message += ` You should use this key (${options.alternativeKey}) as an alternate solution`;\n }\n\n const currentDate = new Date();\n currentDate >= options.mayBeRemoveIn\n ? console.error(message)\n : console.warn(message);\n }\n\n private handleDeprecationPossibility(key: string): any {\n const options = ALTERNATE_CONFIG_FROM_DEPRECATION.get(key);\n if (!options) {\n return;\n }\n\n return this.getConfig(options.deprecatedKey);\n }\n\n /**\n * This method loads \"[path]\" to get all config's variables\n */\n public load(options: ConfigOptions<T>) {\n const baseConfig = options.default;\n if (!options.path) {\n this.config = baseConfig;\n this._isLoaded$.next(true);\n return true;\n }\n\n return new Promise((resolve) => {\n this.httpClient\n .get(options.path)\n .pipe(\n catchError((error: any): any => {\n console.log(`Configuration file ${options.path} could not be read`);\n this._isLoaded$.next(false);\n resolve(true);\n return throwError(error.error || 'Server error');\n })\n )\n .subscribe((configResponse: object) => {\n this.config = ObjectUtils.mergeDeep(\n ObjectUtils.mergeDeep({ version }, baseConfig),\n configResponse\n );\n this._isLoaded$.next(true);\n resolve(true);\n });\n });\n }\n}\n","import {\n APP_INITIALIZER,\n EnvironmentProviders,\n InjectionToken,\n makeEnvironmentProviders\n} from '@angular/core';\n\nimport { ConfigOptions } from './config.interface';\nimport { ConfigService } from './config.service';\n\nexport const CONFIG_OPTIONS = new InjectionToken<ConfigOptions>(\n 'configOptions'\n);\n\nexport function provideConfig(options: ConfigOptions): EnvironmentProviders {\n return makeEnvironmentProviders([\n {\n provide: CONFIG_OPTIONS,\n useValue: options\n },\n {\n provide: APP_INITIALIZER,\n useFactory: configFactory,\n multi: true,\n deps: [ConfigService, CONFIG_OPTIONS]\n }\n ]);\n}\n\nfunction configFactory(configService: ConfigService, options: ConfigOptions) {\n return () => configService.load(options);\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\n\nimport { provideConfig } from './config.provider';\n\n/**\n * @deprecated import the provideConfig directly\n */\n@NgModule({\n imports: [],\n declarations: [],\n exports: []\n})\nexport class IgoConfigModule {\n static forRoot(): ModuleWithProviders<IgoConfigModule> {\n return {\n ngModule: IgoConfigModule,\n providers: [provideConfig({})]\n };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
@@ -1,10 +1,10 @@
1
1
  import * as i0 from '@angular/core';
2
- import { NgModule, Injectable, makeEnvironmentProviders, importProvidersFrom, APP_INITIALIZER } from '@angular/core';
2
+ import { NgModule, Injectable, makeEnvironmentProviders, APP_INITIALIZER, importProvidersFrom } from '@angular/core';
3
3
  import * as i1 from '@ngx-translate/core';
4
- import { TranslateModule, MissingTranslationHandler, TranslateLoader, TranslateFakeLoader } from '@ngx-translate/core';
4
+ import { TranslateModule, TranslateLoader, MissingTranslationHandler, TranslateFakeLoader } from '@ngx-translate/core';
5
5
  import { HttpClient, HttpBackend } from '@angular/common/http';
6
6
  import { ObjectUtils } from '@igo2/utils';
7
- import { BehaviorSubject, first, switchMap, forkJoin, map, tap, combineLatest } from 'rxjs';
7
+ import { BehaviorSubject, of, forkJoin, map, tap, first, switchMap, combineLatest } from 'rxjs';
8
8
  import { ConfigService } from '@igo2/core/config';
9
9
  import { timeout, catchError } from 'rxjs/operators';
10
10
 
@@ -24,36 +24,51 @@ class LanguageLoaderBase {
24
24
  }
25
25
 
26
26
  class LanguageLoader {
27
- configService;
28
- prefix;
29
- suffix;
30
27
  httpClient;
31
28
  _isLoaded$ = new BehaviorSubject(null);
32
29
  isLoaded$ = this._isLoaded$.asObservable();
30
+ suffix = '.json';
31
+ prefix;
32
+ options;
33
+ constructor(handler, options) {
34
+ this.httpClient = new HttpClient(handler);
35
+ this.options = options;
36
+ }
37
+ getTranslation(lang) {
38
+ const igoLocale$ = this.httpClient.get(`locale/libs_locale/${lang}.json`);
39
+ if (!this.prefix) {
40
+ const prefix = this.options.prefix;
41
+ this.prefix = !prefix || Array.isArray(prefix) ? prefix : [prefix];
42
+ }
43
+ if (!this.prefix || this.prefix.length === 0) {
44
+ this._isLoaded$.next(true);
45
+ return this.options.ignoreLibsLocale ? of(undefined) : igoLocale$;
46
+ }
47
+ const appLocale$ = this.prefix.map((prefix) => this.httpClient.get(`${prefix}${lang}${this.suffix}`));
48
+ const locale$ = [...appLocale$];
49
+ if (!this.options.ignoreLibsLocale) {
50
+ locale$.unshift(igoLocale$);
51
+ }
52
+ return forkJoin(locale$).pipe(map((translations) => {
53
+ return translations.reduce((acc, current) => ObjectUtils.mergeDeep(acc, current), {});
54
+ }), tap(() => {
55
+ this._isLoaded$.next(true);
56
+ }));
57
+ }
58
+ }
59
+ class LanguageLoaderWithAsyncConfig extends LanguageLoader {
60
+ configService;
33
61
  constructor(handler, configService, prefix, suffix = '.json') {
62
+ super(handler, undefined);
34
63
  this.configService = configService;
35
64
  this.prefix = prefix;
36
65
  this.suffix = suffix;
37
- this.httpClient = new HttpClient(handler);
38
66
  }
39
67
  getTranslation(lang) {
40
- const igoLocale$ = this.httpClient.get(`locale/libs_locale/${lang}.json`);
41
68
  return this.configService.isLoaded$.pipe(first((isLoaded) => isLoaded), switchMap(() => {
42
- if (this.configService && !this.prefix) {
43
- const prefix = this.configService.getConfig('language.prefix');
44
- this.prefix = !prefix || Array.isArray(prefix) ? prefix : [prefix];
45
- }
46
- if (!this.prefix || this.prefix.length === 0) {
47
- this._isLoaded$.next(true);
48
- return igoLocale$;
49
- }
50
- const appLocale$ = this.prefix.map((prefix) => this.httpClient.get(`${prefix}${lang}${this.suffix}`));
51
- const locale$ = forkJoin([igoLocale$, ...appLocale$]);
52
- return locale$.pipe(map((translations) => {
53
- return translations.reduce((acc, current) => ObjectUtils.mergeDeep(acc, current), {});
54
- }), tap(() => {
55
- this._isLoaded$.next(true);
56
- }));
69
+ this.options =
70
+ this.configService.getConfig('language');
71
+ return super.getTranslation(lang);
57
72
  }));
58
73
  }
59
74
  }
@@ -118,12 +133,16 @@ class IgoMissingTranslationHandler {
118
133
 
119
134
  // 5 seconds
120
135
  const TIMEOUT_DURATION = 5000;
136
+ var TranslationFeatureKind;
137
+ (function (TranslationFeatureKind) {
138
+ TranslationFeatureKind[TranslationFeatureKind["Translation"] = 0] = "Translation";
139
+ })(TranslationFeatureKind || (TranslationFeatureKind = {}));
121
140
  /**
122
141
  * Make sure you only call this method in the root module of your application, most of the time called AppModule.
123
142
  */
124
- function provideTranslation(defaultLanguage, loader) {
143
+ function provideTranslation(featureConfig) {
125
144
  return makeEnvironmentProviders([
126
- importProvidersFrom(TranslateModule.forRoot(setTranslationConfig(loader, defaultLanguage))),
145
+ ...featureConfig.providers,
127
146
  {
128
147
  provide: APP_INITIALIZER,
129
148
  useFactory: (languageService) => () => {
@@ -137,6 +156,32 @@ function provideTranslation(defaultLanguage, loader) {
137
156
  }
138
157
  ]);
139
158
  }
159
+ function withStaticConfig(options, defaultLanguage) {
160
+ const loader = {
161
+ provide: TranslateLoader,
162
+ useFactory: (http) => languageLoaderWithStatic(http, options),
163
+ deps: [HttpBackend]
164
+ };
165
+ return {
166
+ kind: TranslationFeatureKind.Translation,
167
+ providers: [
168
+ importProvidersFrom(TranslateModule.forRoot(setTranslationConfig(loader, defaultLanguage)))
169
+ ]
170
+ };
171
+ }
172
+ function withAsyncConfig(defaultLanguage) {
173
+ const loader = {
174
+ provide: TranslateLoader,
175
+ useFactory: languageLoaderWithAsync,
176
+ deps: [HttpBackend, ConfigService]
177
+ };
178
+ return {
179
+ kind: TranslationFeatureKind.Translation,
180
+ providers: [
181
+ importProvidersFrom(TranslateModule.forRoot(setTranslationConfig(loader, defaultLanguage)))
182
+ ]
183
+ };
184
+ }
140
185
  const setTranslationConfig = (loader, defaultLanguage) => ({
141
186
  defaultLanguage: defaultLanguage,
142
187
  loader: loader ?? DEFAULT_LANGUAGE_LOADER,
@@ -145,14 +190,22 @@ const setTranslationConfig = (loader, defaultLanguage) => ({
145
190
  useClass: IgoMissingTranslationHandler
146
191
  }
147
192
  });
148
- const DEFAULT_LANGUAGE_LOADER = {
193
+ function languageLoaderWithStatic(http, options) {
194
+ return new LanguageLoader(http, options);
195
+ }
196
+ const LANGUAGE_LOADER = {
149
197
  provide: TranslateLoader,
150
- useFactory: defaultLanguageLoader,
198
+ useFactory: languageLoaderWithAsync,
151
199
  deps: [HttpBackend, ConfigService]
152
200
  };
153
- function defaultLanguageLoader(http, config) {
154
- return new LanguageLoader(http, config, undefined, undefined);
201
+ function languageLoaderWithAsync(http, config) {
202
+ return new LanguageLoaderWithAsyncConfig(http, config, undefined, undefined);
155
203
  }
204
+ const DEFAULT_LANGUAGE_LOADER = {
205
+ provide: TranslateLoader,
206
+ useFactory: languageLoaderWithAsync,
207
+ deps: [HttpBackend, ConfigService]
208
+ };
156
209
 
157
210
  function provideMockTranslation() {
158
211
  return makeEnvironmentProviders([
@@ -169,5 +222,5 @@ function provideMockTranslation() {
169
222
  * Generated bundle index. Do not edit.
170
223
  */
171
224
 
172
- export { DEFAULT_LANGUAGE_LOADER, IgoLanguageModule, IgoMissingTranslationHandler, LanguageLoader, LanguageLoaderBase, LanguageService, provideMockTranslation, provideTranslation, setTranslationConfig };
225
+ export { DEFAULT_LANGUAGE_LOADER, IgoLanguageModule, IgoMissingTranslationHandler, LANGUAGE_LOADER, LanguageLoader, LanguageLoaderBase, LanguageLoaderWithAsyncConfig, LanguageService, TranslationFeatureKind, provideMockTranslation, provideTranslation, setTranslationConfig, withAsyncConfig, withStaticConfig };
173
226
  //# sourceMappingURL=igo2-core-language.mjs.map
@@ -1 +1 @@
1
- {"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}\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 { BehaviorSubject, first, forkJoin, map, switchMap, tap } from 'rxjs';\n\nimport { LanguageLoaderBase } 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 constructor(\n handler: HttpBackend,\n private configService: ConfigService,\n private prefix?: string | string[],\n private suffix = '.json'\n ) {\n this.httpClient = new HttpClient(handler);\n }\n\n public getTranslation(lang: string): any {\n const igoLocale$ = this.httpClient.get(`locale/libs_locale/${lang}.json`);\n return this.configService.isLoaded$.pipe(\n first((isLoaded) => isLoaded),\n switchMap(() => {\n if (this.configService && !this.prefix) {\n const prefix = this.configService.getConfig('language.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 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$ = forkJoin([igoLocale$, ...appLocale$]);\n\n return 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 }\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 } from './language.interface';\nimport { LanguageLoader } from './language.loader';\nimport { LanguageService } from './language.service';\nimport { IgoMissingTranslationHandler } from './missing-translation.guard';\n\n// 5 seconds\nconst TIMEOUT_DURATION = 5000;\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 defaultLanguage?: string | undefined,\n loader?: Provider\n): EnvironmentProviders {\n return makeEnvironmentProviders([\n importProvidersFrom(\n TranslateModule.forRoot(setTranslationConfig(loader, defaultLanguage))\n ),\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 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\nexport const DEFAULT_LANGUAGE_LOADER: Provider = {\n provide: TranslateLoader,\n useFactory: defaultLanguageLoader,\n deps: [HttpBackend, ConfigService]\n};\n\nfunction defaultLanguageLoader(http: HttpBackend, config?: ConfigService) {\n return new LanguageLoader(http, config, undefined, undefined);\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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"}
1
+ {"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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"}
@@ -5,7 +5,7 @@ import { NgModule } from '@angular/core';
5
5
  import * as i1 from '@igo2/core/activity';
6
6
  import { IgoActivityModule } from '@igo2/core/activity';
7
7
  import { provideConfig } from '@igo2/core/config';
8
- import { provideTranslation, IgoLanguageModule } from '@igo2/core/language';
8
+ import { provideTranslation, withAsyncConfig, IgoLanguageModule } from '@igo2/core/language';
9
9
  import { provideMessage } from '@igo2/core/message';
10
10
  import * as i2 from '@igo2/core/request';
11
11
  import { IgoErrorModule } from '@igo2/core/request';
@@ -14,7 +14,7 @@ class IgoCoreModule {
14
14
  static forRoot(options = {}) {
15
15
  return {
16
16
  ngModule: IgoCoreModule,
17
- providers: [provideConfig(options), provideTranslation()]
17
+ providers: [provideConfig(options), provideTranslation(withAsyncConfig())]
18
18
  };
19
19
  }
20
20
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: IgoCoreModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
@@ -1 +1 @@
1
- {"version":3,"file":"igo2-core.mjs","sources":["../../../packages/core/src/lib/core.module.ts","../../../packages/core/src/public_api.ts","../../../packages/core/src/igo2-core.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\nimport {\n provideHttpClient,\n withInterceptorsFromDi\n} from '@angular/common/http';\nimport { ModuleWithProviders, NgModule } from '@angular/core';\n\nimport { IgoActivityModule } from '@igo2/core/activity';\nimport { ConfigOptions, provideConfig } from '@igo2/core/config';\nimport { IgoLanguageModule, provideTranslation } from '@igo2/core/language';\nimport { provideMessage } from '@igo2/core/message';\nimport { IgoErrorModule } from '@igo2/core/request';\n\n@NgModule({\n declarations: [],\n exports: [IgoActivityModule, IgoErrorModule, IgoLanguageModule],\n imports: [\n CommonModule,\n IgoActivityModule.forRoot(),\n IgoErrorModule.forRoot()\n ],\n providers: [provideMessage(), provideHttpClient(withInterceptorsFromDi())]\n})\nexport class IgoCoreModule {\n static forRoot(\n options: ConfigOptions = {}\n ): ModuleWithProviders<IgoCoreModule> {\n return {\n ngModule: IgoCoreModule,\n providers: [provideConfig(options), provideTranslation()]\n };\n }\n}\n","/*\n * Public API Surface of core\n */\n\nexport * from './lib/core.module';\n\n/** @deprecated */\n// export * from '@igo2/core/language';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;;;;;;;;;MAuBa,aAAa,CAAA;AACxB,IAAA,OAAO,OAAO,CACZ,OAAA,GAAyB,EAAE,EAAA;QAE3B,OAAO;AACL,YAAA,QAAQ,EAAE,aAAa;YACvB,SAAS,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,kBAAkB,EAAE,CAAC;SAC1D,CAAC;KACH;wGARU,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAb,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,YANtB,YAAY,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,CAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAFJ,iBAAiB,EAAE,cAAc,EAAE,iBAAiB,CAAA,EAAA,CAAA,CAAA;AAQnD,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,EAFb,SAAA,EAAA,CAAC,cAAc,EAAE,EAAE,iBAAiB,CAAC,sBAAsB,EAAE,CAAC,CAAC,EAAA,OAAA,EAAA,CAJxE,YAAY;YACZ,iBAAiB,CAAC,OAAO,EAAE;YAC3B,cAAc,CAAC,OAAO,EAAE,EAJhB,iBAAiB,EAAE,cAAc,EAAE,iBAAiB,CAAA,EAAA,CAAA,CAAA;;4FAQnD,aAAa,EAAA,UAAA,EAAA,CAAA;kBAVzB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE,EAAE;AAChB,oBAAA,OAAO,EAAE,CAAC,iBAAiB,EAAE,cAAc,EAAE,iBAAiB,CAAC;AAC/D,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,iBAAiB,CAAC,OAAO,EAAE;wBAC3B,cAAc,CAAC,OAAO,EAAE;AACzB,qBAAA;oBACD,SAAS,EAAE,CAAC,cAAc,EAAE,EAAE,iBAAiB,CAAC,sBAAsB,EAAE,CAAC,CAAC;AAC3E,iBAAA,CAAA;;;ACtBD;;AAEG;AAIH;AACA;;ACPA;;AAEG;;;;"}
1
+ {"version":3,"file":"igo2-core.mjs","sources":["../../../packages/core/src/lib/core.module.ts","../../../packages/core/src/public_api.ts","../../../packages/core/src/igo2-core.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\nimport {\n provideHttpClient,\n withInterceptorsFromDi\n} from '@angular/common/http';\nimport { ModuleWithProviders, NgModule } from '@angular/core';\n\nimport { IgoActivityModule } from '@igo2/core/activity';\nimport { ConfigOptions, provideConfig } from '@igo2/core/config';\nimport {\n IgoLanguageModule,\n provideTranslation,\n withAsyncConfig\n} from '@igo2/core/language';\nimport { provideMessage } from '@igo2/core/message';\nimport { IgoErrorModule } from '@igo2/core/request';\n\n@NgModule({\n declarations: [],\n exports: [IgoActivityModule, IgoErrorModule, IgoLanguageModule],\n imports: [\n CommonModule,\n IgoActivityModule.forRoot(),\n IgoErrorModule.forRoot()\n ],\n providers: [provideMessage(), provideHttpClient(withInterceptorsFromDi())]\n})\nexport class IgoCoreModule {\n static forRoot(\n options: ConfigOptions = {}\n ): ModuleWithProviders<IgoCoreModule> {\n return {\n ngModule: IgoCoreModule,\n providers: [provideConfig(options), provideTranslation(withAsyncConfig())]\n };\n }\n}\n","/*\n * Public API Surface of core\n */\n\nexport * from './lib/core.module';\n\n/** @deprecated */\n// export * from '@igo2/core/language';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;;;;;;;;;MA2Ba,aAAa,CAAA;AACxB,IAAA,OAAO,OAAO,CACZ,OAAA,GAAyB,EAAE,EAAA;QAE3B,OAAO;AACL,YAAA,QAAQ,EAAE,aAAa;AACvB,YAAA,SAAS,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,kBAAkB,CAAC,eAAe,EAAE,CAAC,CAAC;SAC3E,CAAC;KACH;wGARU,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAb,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,YANtB,YAAY,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,CAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAFJ,iBAAiB,EAAE,cAAc,EAAE,iBAAiB,CAAA,EAAA,CAAA,CAAA;AAQnD,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,EAFb,SAAA,EAAA,CAAC,cAAc,EAAE,EAAE,iBAAiB,CAAC,sBAAsB,EAAE,CAAC,CAAC,EAAA,OAAA,EAAA,CAJxE,YAAY;YACZ,iBAAiB,CAAC,OAAO,EAAE;YAC3B,cAAc,CAAC,OAAO,EAAE,EAJhB,iBAAiB,EAAE,cAAc,EAAE,iBAAiB,CAAA,EAAA,CAAA,CAAA;;4FAQnD,aAAa,EAAA,UAAA,EAAA,CAAA;kBAVzB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE,EAAE;AAChB,oBAAA,OAAO,EAAE,CAAC,iBAAiB,EAAE,cAAc,EAAE,iBAAiB,CAAC;AAC/D,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,iBAAiB,CAAC,OAAO,EAAE;wBAC3B,cAAc,CAAC,OAAO,EAAE;AACzB,qBAAA;oBACD,SAAS,EAAE,CAAC,cAAc,EAAE,EAAE,iBAAiB,CAAC,sBAAsB,EAAE,CAAC,CAAC;AAC3E,iBAAA,CAAA;;;AC1BD;;AAEG;AAIH;AACA;;ACPA;;AAEG;;;;"}
@@ -2,6 +2,7 @@ import { TranslateLoader } from '@ngx-translate/core';
2
2
  import { Observable } from 'rxjs';
3
3
  export interface LanguageOptions {
4
4
  prefix?: string | string[];
5
+ ignoreLibsLocale?: boolean;
5
6
  }
6
7
  export declare abstract class LanguageLoaderBase implements TranslateLoader {
7
8
  abstract isLoaded$: Observable<boolean>;
@@ -1,13 +1,19 @@
1
1
  import { HttpBackend } from '@angular/common/http';
2
2
  import { ConfigService } from '@igo2/core/config';
3
- import { LanguageLoaderBase } from './language.interface';
3
+ import { Observable } from 'rxjs';
4
+ import { LanguageLoaderBase, LanguageOptions } from './language.interface';
4
5
  export declare class LanguageLoader implements LanguageLoaderBase {
5
- private configService;
6
- private prefix?;
7
- private suffix;
8
6
  private httpClient;
9
7
  private _isLoaded$;
10
- isLoaded$: import("rxjs").Observable<boolean>;
8
+ isLoaded$: Observable<boolean>;
9
+ suffix: string;
10
+ prefix?: string | string[];
11
+ options: LanguageOptions;
12
+ constructor(handler: HttpBackend, options: LanguageOptions);
13
+ getTranslation(lang: string): Observable<any>;
14
+ }
15
+ export declare class LanguageLoaderWithAsyncConfig extends LanguageLoader {
16
+ private configService;
11
17
  constructor(handler: HttpBackend, configService: ConfigService, prefix?: string | string[], suffix?: string);
12
- getTranslation(lang: string): any;
18
+ getTranslation(lang: string): Observable<any>;
13
19
  }
@@ -1,8 +1,19 @@
1
1
  import { EnvironmentProviders, Provider } from '@angular/core';
2
2
  import { TranslateModuleConfig } from '@ngx-translate/core';
3
+ import { LanguageOptions } from './language.interface';
4
+ export interface TranslationFeature<KindT extends TranslationFeatureKind> {
5
+ kind: KindT;
6
+ providers: (Provider | EnvironmentProviders)[];
7
+ }
8
+ export declare enum TranslationFeatureKind {
9
+ Translation = 0
10
+ }
3
11
  /**
4
12
  * Make sure you only call this method in the root module of your application, most of the time called AppModule.
5
13
  */
6
- export declare function provideTranslation(defaultLanguage?: string | undefined, loader?: Provider): EnvironmentProviders;
14
+ export declare function provideTranslation(featureConfig: TranslationFeature<TranslationFeatureKind.Translation>): EnvironmentProviders;
15
+ export declare function withStaticConfig(options: LanguageOptions, defaultLanguage?: string | undefined): TranslationFeature<TranslationFeatureKind.Translation>;
16
+ export declare function withAsyncConfig(defaultLanguage?: string | undefined): TranslationFeature<TranslationFeatureKind.Translation>;
7
17
  export declare const setTranslationConfig: (loader?: Provider, defaultLanguage?: string) => TranslateModuleConfig;
18
+ export declare const LANGUAGE_LOADER: Provider;
8
19
  export declare const DEFAULT_LANGUAGE_LOADER: Provider;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@igo2/core",
3
- "version": "18.0.0-next.4",
3
+ "version": "18.0.0-next.5",
4
4
  "description": "IGO Library",
5
5
  "author": "IGO Community",
6
6
  "keywords": [
@@ -145,7 +145,7 @@
145
145
  "@angular/core": "^18.0.0",
146
146
  "@angular/platform-browser": "^18.0.0",
147
147
  "@angular/router": "^18.0.0",
148
- "@igo2/utils": "^18.0.0-next.4",
148
+ "@igo2/utils": "^18.0.0-next.5",
149
149
  "@sentry/angular": "^8.26.0",
150
150
  "ngx-toastr": "^19.0.0",
151
151
  "@ngx-translate/core": "^15.0.0",