@odx/angular 4.0.2 → 5.0.0
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.
- package/CHANGELOG.md +21 -1
- package/breakpoints/lib/breakpoints.config.d.ts +1 -1
- package/components/calendar/lib/calendar.config.d.ts +2 -2
- package/components/datepicker/lib/datepicker.config.d.ts +2 -2
- package/components/error-page/README.md +3 -0
- package/components/error-page/index.d.ts +2 -0
- package/components/error-page/lib/error-page.component.d.ts +7 -0
- package/components/error-page/lib/error-page.config.d.ts +16 -0
- package/components/form-field/lib/form-field.config.d.ts +1 -1
- package/components/icon/lib/icon.config.d.ts +1 -1
- package/components/main-menu/lib/main-menu.config.d.ts +1 -1
- package/components/main-menu/lib/main-menu.i18n.d.ts +2 -2
- package/components/modal/lib/modal.config.d.ts +1 -1
- package/components/paginator/lib/paginator.config.d.ts +2 -2
- package/components/toast/lib/toast.config.d.ts +1 -1
- package/esm2022/components/error-page/index.mjs +3 -0
- package/esm2022/components/error-page/lib/error-page.component.mjs +28 -0
- package/esm2022/components/error-page/lib/error-page.config.mjs +10 -0
- package/esm2022/components/error-page/odx-angular-components-error-page.mjs +5 -0
- package/esm2022/components/main-menu/lib/main-menu.i18n.mjs +1 -1
- package/esm2022/index.mjs +1 -2
- package/esm2022/internal/index.mjs +4 -3
- package/esm2022/internal/lib/decorators/css-component.mjs +19 -0
- package/esm2022/internal/lib/decorators/css-modifier.mjs +49 -0
- package/esm2022/internal/lib/decorators/index.mjs +3 -0
- package/esm2022/internal/lib/helpers/camel-to-kebab-case.mjs +12 -0
- package/esm2022/internal/lib/helpers/decorator-property-name.mjs +4 -0
- package/esm2022/internal/lib/helpers/deepmerge.mjs +6 -0
- package/esm2022/internal/lib/helpers/get-css-variables.mjs +22 -0
- package/esm2022/internal/lib/helpers/get-enum-values.mjs +6 -0
- package/esm2022/internal/lib/helpers/index.mjs +6 -0
- package/esm2022/internal/lib/logger.mjs +42 -0
- package/esm2022/internal/translate/index.mjs +1 -3
- package/esm2022/internal/translate/lib/models/index.mjs +2 -2
- package/esm2022/internal/translate/lib/models/translation-object.mjs +2 -0
- package/esm2022/internal/translate/lib/translate.config.mjs +1 -8
- package/esm2022/internal/translate/lib/translate.service.mjs +19 -12
- package/esm2022/lib/services/window-ref.mjs +4 -3
- package/esm2022/localization/index.mjs +6 -0
- package/esm2022/localization/lib/features/index.mjs +3 -0
- package/esm2022/localization/lib/features/with-http-language-header.mjs +23 -0
- package/esm2022/localization/lib/features/with-http-language-query-param.mjs +23 -0
- package/esm2022/localization/lib/loaders/browser-language-loader.mjs +6 -0
- package/esm2022/localization/lib/loaders/index.mjs +2 -0
- package/esm2022/localization/lib/localization.config.mjs +21 -0
- package/esm2022/localization/lib/localization.service.mjs +45 -0
- package/esm2022/localization/lib/models/index.mjs +3 -0
- package/esm2022/localization/lib/models/language-loader-fn.mjs +2 -0
- package/esm2022/localization/lib/models/localization-feature.mjs +4 -0
- package/esm2022/localization/odx-angular-localization.mjs +5 -0
- package/esm2022/sdk/lib/application-environment.mjs +4 -2
- package/esm2022/utils/lib/helpers/cache-storage-client.mjs +53 -0
- package/esm2022/utils/lib/helpers/get-language-code.mjs +5 -0
- package/esm2022/utils/lib/helpers/index.mjs +4 -1
- package/esm2022/utils/lib/helpers/match-url.mjs +8 -0
- package/esm2022/utils/lib/helpers/provide-config.mjs +21 -9
- package/fesm2022/odx-angular-components-error-page.mjs +42 -0
- package/fesm2022/odx-angular-components-error-page.mjs.map +1 -0
- package/fesm2022/odx-angular-components-main-menu.mjs.map +1 -1
- package/fesm2022/odx-angular-internal-translate.mjs +27 -44
- package/fesm2022/odx-angular-internal-translate.mjs.map +1 -1
- package/fesm2022/odx-angular-internal.mjs +43 -1
- package/fesm2022/odx-angular-internal.mjs.map +1 -1
- package/fesm2022/odx-angular-localization.mjs +113 -0
- package/fesm2022/odx-angular-localization.mjs.map +1 -0
- package/fesm2022/odx-angular-sdk.mjs +3 -1
- package/fesm2022/odx-angular-sdk.mjs.map +1 -1
- package/fesm2022/odx-angular-utils.mjs +86 -9
- package/fesm2022/odx-angular-utils.mjs.map +1 -1
- package/fesm2022/odx-angular.mjs +3 -4
- package/fesm2022/odx-angular.mjs.map +1 -1
- package/index.d.ts +0 -1
- package/internal/index.d.ts +3 -2
- package/internal/lib/logger.d.ts +15 -0
- package/internal/translate/index.d.ts +0 -2
- package/internal/translate/lib/models/index.d.ts +1 -1
- package/internal/translate/lib/models/translation-object.d.ts +1 -0
- package/internal/translate/lib/translate.config.d.ts +2 -5
- package/internal/translate/lib/translate.service.d.ts +5 -6
- package/localization/README.md +3 -0
- package/localization/index.d.ts +5 -0
- package/localization/lib/features/index.d.ts +2 -0
- package/localization/lib/features/with-http-language-header.d.ts +9 -0
- package/localization/lib/features/with-http-language-query-param.d.ts +9 -0
- package/localization/lib/loaders/browser-language-loader.d.ts +2 -0
- package/localization/lib/loaders/index.d.ts +1 -0
- package/localization/lib/localization.config.d.ts +9 -0
- package/localization/lib/localization.service.d.ts +15 -0
- package/localization/lib/models/index.d.ts +2 -0
- package/localization/lib/models/language-loader-fn.d.ts +2 -0
- package/localization/lib/models/localization-feature.d.ts +5 -0
- package/package.json +13 -1
- package/sdk/lib/application-environment.d.ts +2 -1
- package/theming/lib/theming.config.d.ts +1 -1
- package/utils/lib/helpers/cache-storage-client.d.ts +14 -0
- package/utils/lib/helpers/index.d.ts +3 -0
- package/utils/lib/helpers/match-url.d.ts +2 -0
- package/utils/lib/helpers/provide-config.d.ts +3 -2
- package/esm2022/internal/decorators/css-component.mjs +0 -19
- package/esm2022/internal/decorators/css-modifier.mjs +0 -49
- package/esm2022/internal/decorators/index.mjs +0 -3
- package/esm2022/internal/helpers/camel-to-kebab-case.mjs +0 -12
- package/esm2022/internal/helpers/decorator-property-name.mjs +0 -4
- package/esm2022/internal/helpers/deepmerge.mjs +0 -6
- package/esm2022/internal/helpers/get-css-variables.mjs +0 -22
- package/esm2022/internal/helpers/get-enum-values.mjs +0 -6
- package/esm2022/internal/helpers/index.mjs +0 -6
- package/esm2022/internal/translate/lib/helpers/get-language-code.mjs +0 -6
- package/esm2022/internal/translate/lib/helpers/index.mjs +0 -2
- package/esm2022/internal/translate/lib/models/translation.mjs +0 -2
- package/esm2022/internal/translate/lib/services/index.mjs +0 -2
- package/esm2022/internal/translate/lib/services/language.service.mjs +0 -21
- package/internal/translate/lib/helpers/index.d.ts +0 -1
- package/internal/translate/lib/models/translation.d.ts +0 -2
- package/internal/translate/lib/services/index.d.ts +0 -1
- package/internal/translate/lib/services/language.service.d.ts +0 -8
- /package/internal/{decorators → lib/decorators}/css-component.d.ts +0 -0
- /package/internal/{decorators → lib/decorators}/css-modifier.d.ts +0 -0
- /package/internal/{decorators → lib/decorators}/index.d.ts +0 -0
- /package/internal/{helpers → lib/helpers}/camel-to-kebab-case.d.ts +0 -0
- /package/internal/{helpers → lib/helpers}/decorator-property-name.d.ts +0 -0
- /package/internal/{helpers → lib/helpers}/deepmerge.d.ts +0 -0
- /package/internal/{helpers → lib/helpers}/get-css-variables.d.ts +0 -0
- /package/internal/{helpers → lib/helpers}/get-enum-values.d.ts +0 -0
- /package/internal/{helpers → lib/helpers}/index.d.ts +0 -0
- /package/{internal/translate → utils}/lib/helpers/get-language-code.d.ts +0 -0
|
@@ -1,20 +1,27 @@
|
|
|
1
1
|
import { inject } from '@angular/core';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
2
|
+
import { LocalizationService } from '@odx/angular/localization';
|
|
3
|
+
import { getLanguageCode } from '@odx/angular/utils';
|
|
4
|
+
import { distinctUntilChanged, map, shareReplay, startWith } from 'rxjs';
|
|
5
5
|
export class TranslateService {
|
|
6
6
|
constructor(translations) {
|
|
7
7
|
this.translations = translations;
|
|
8
|
-
this.
|
|
9
|
-
this.
|
|
10
|
-
|
|
8
|
+
this.localizationService = inject(LocalizationService);
|
|
9
|
+
this.activeTranslation$ = this.localizationService.activeLanguage$.pipe(startWith(this.localizationService.defaultLanguage), distinctUntilChanged(), map((language) => {
|
|
10
|
+
const languageCode = getLanguageCode(language);
|
|
11
|
+
if (this.translations[language]) {
|
|
12
|
+
return this.translations[language];
|
|
13
|
+
}
|
|
14
|
+
if (this.translations[languageCode]) {
|
|
15
|
+
return this.translations[languageCode];
|
|
16
|
+
}
|
|
17
|
+
return this.translations[this.localizationService.defaultLanguage];
|
|
18
|
+
}), shareReplay({ refCount: true }));
|
|
11
19
|
}
|
|
12
|
-
translate(key,
|
|
13
|
-
return this.
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
return acc.replace(re, placeholder[cur]);
|
|
20
|
+
translate(key, data = {}) {
|
|
21
|
+
return this.activeTranslation$.pipe(map((translation) => Object.entries(data).reduce((acc, [variableName, variable]) => {
|
|
22
|
+
const variableRegex = RegExp(`{{\\s*${variableName}\\s*}}`, 'g');
|
|
23
|
+
return acc.replace(variableRegex, variable);
|
|
17
24
|
}, translation[key] ?? '')));
|
|
18
25
|
}
|
|
19
26
|
}
|
|
20
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvaW50ZXJuYWwvdHJhbnNsYXRlL3NyYy9saWIvdHJhbnNsYXRlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDckQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLEdBQUcsRUFBYyxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBR3JGLE1BQU0sT0FBTyxnQkFBZ0I7SUFtQjNCLFlBQTZCLFlBQStCO1FBQS9CLGlCQUFZLEdBQVosWUFBWSxDQUFtQjtRQWxCM0Msd0JBQW1CLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFFbkQsdUJBQWtCLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQ2hGLFNBQVMsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsZUFBZSxDQUFDLEVBQ25ELG9CQUFvQixFQUFFLEVBQ3RCLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQ2YsTUFBTSxZQUFZLEdBQUcsZUFBZSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQy9DLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsRUFBRTtnQkFDL0IsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQ3BDO1lBQ0QsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxFQUFFO2dCQUNuQyxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLENBQUM7YUFDeEM7WUFDRCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ3JFLENBQUMsQ0FBQyxFQUNGLFdBQVcsQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUNoQyxDQUFDO0lBRTZELENBQUM7SUFFekQsU0FBUyxDQUFDLEdBQVcsRUFBRSxPQUErQixFQUFFO1FBQzdELE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FDakMsR0FBRyxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FDbEIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxZQUFZLEVBQUUsUUFBUSxDQUFDLEVBQUUsRUFBRTtZQUM1RCxNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsU0FBUyxZQUFZLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUNqRSxPQUFPLEdBQUcsQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQzlDLENBQUMsRUFBRSxXQUFXLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLENBQzNCLENBQ0YsQ0FBQztJQUNKLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTG9jYWxpemF0aW9uU2VydmljZSB9IGZyb20gJ0BvZHgvYW5ndWxhci9sb2NhbGl6YXRpb24nO1xuaW1wb3J0IHsgZ2V0TGFuZ3VhZ2VDb2RlIH0gZnJvbSAnQG9keC9hbmd1bGFyL3V0aWxzJztcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBtYXAsIE9ic2VydmFibGUsIHNoYXJlUmVwbGF5LCBzdGFydFdpdGggfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFRyYW5zbGF0aW9uT2JqZWN0IH0gZnJvbSAnLi9tb2RlbHMnO1xuXG5leHBvcnQgY2xhc3MgVHJhbnNsYXRlU2VydmljZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgbG9jYWxpemF0aW9uU2VydmljZSA9IGluamVjdChMb2NhbGl6YXRpb25TZXJ2aWNlKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgYWN0aXZlVHJhbnNsYXRpb24kID0gdGhpcy5sb2NhbGl6YXRpb25TZXJ2aWNlLmFjdGl2ZUxhbmd1YWdlJC5waXBlKFxuICAgIHN0YXJ0V2l0aCh0aGlzLmxvY2FsaXphdGlvblNlcnZpY2UuZGVmYXVsdExhbmd1YWdlKSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgIG1hcCgobGFuZ3VhZ2UpID0+IHtcbiAgICAgIGNvbnN0IGxhbmd1YWdlQ29kZSA9IGdldExhbmd1YWdlQ29kZShsYW5ndWFnZSk7XG4gICAgICBpZiAodGhpcy50cmFuc2xhdGlvbnNbbGFuZ3VhZ2VdKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0aW9uc1tsYW5ndWFnZV07XG4gICAgICB9XG4gICAgICBpZiAodGhpcy50cmFuc2xhdGlvbnNbbGFuZ3VhZ2VDb2RlXSkge1xuICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGlvbnNbbGFuZ3VhZ2VDb2RlXTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0aW9uc1t0aGlzLmxvY2FsaXphdGlvblNlcnZpY2UuZGVmYXVsdExhbmd1YWdlXTtcbiAgICB9KSxcbiAgICBzaGFyZVJlcGxheSh7IHJlZkNvdW50OiB0cnVlIH0pLFxuICApO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsYXRpb25zOiBUcmFuc2xhdGlvbk9iamVjdCkge31cblxuICBwdWJsaWMgdHJhbnNsYXRlKGtleTogc3RyaW5nLCBkYXRhOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge30pOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLmFjdGl2ZVRyYW5zbGF0aW9uJC5waXBlKFxuICAgICAgbWFwKCh0cmFuc2xhdGlvbikgPT5cbiAgICAgICAgT2JqZWN0LmVudHJpZXMoZGF0YSkucmVkdWNlKChhY2MsIFt2YXJpYWJsZU5hbWUsIHZhcmlhYmxlXSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHZhcmlhYmxlUmVnZXggPSBSZWdFeHAoYHt7XFxcXHMqJHt2YXJpYWJsZU5hbWV9XFxcXHMqfX1gLCAnZycpO1xuICAgICAgICAgIHJldHVybiBhY2MucmVwbGFjZSh2YXJpYWJsZVJlZ2V4LCB2YXJpYWJsZSk7XG4gICAgICAgIH0sIHRyYW5zbGF0aW9uW2tleV0gPz8gJycpLFxuICAgICAgKSxcbiAgICApO1xuICB9XG59XG4iXX0=
|
|
@@ -2,8 +2,8 @@ import { DOCUMENT } from '@angular/common';
|
|
|
2
2
|
import { inject, Injectable, reflectComponentType } from '@angular/core';
|
|
3
3
|
import { Title } from '@angular/platform-browser';
|
|
4
4
|
import { NavigationEnd, Router } from '@angular/router';
|
|
5
|
-
import { getLanguageCode } from '@odx/angular/internal/translate';
|
|
6
5
|
import { fromEvents } from '@odx/angular/rxjs';
|
|
6
|
+
import { getLanguageCode } from '@odx/angular/utils';
|
|
7
7
|
import { debounceTime, distinctUntilChanged, EMPTY, filter, map, shareReplay, startWith } from 'rxjs';
|
|
8
8
|
import * as i0 from "@angular/core";
|
|
9
9
|
export class WindowRef {
|
|
@@ -21,7 +21,8 @@ export class WindowRef {
|
|
|
21
21
|
return this.nativeWindow.navigator.onLine;
|
|
22
22
|
}
|
|
23
23
|
getLanguage() {
|
|
24
|
-
|
|
24
|
+
const { language, languages, userLanguage } = this.nativeWindow.navigator;
|
|
25
|
+
return languages?.[0] ?? userLanguage ?? language;
|
|
25
26
|
}
|
|
26
27
|
getLanguageCode() {
|
|
27
28
|
return getLanguageCode(this.getLanguage());
|
|
@@ -70,4 +71,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
70
71
|
providedIn: 'root',
|
|
71
72
|
}]
|
|
72
73
|
}] });
|
|
73
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
74
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2luZG93LXJlZi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9zcmMvbGliL3NlcnZpY2VzL3dpbmRvdy1yZWYudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLG9CQUFvQixFQUFRLE1BQU0sZUFBZSxDQUFDO0FBQy9FLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDckQsT0FBTyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQUt0RyxNQUFNLE9BQU8sU0FBUztJQUh0QjtRQUltQixVQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3ZCLGFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDNUIsaUJBQVksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsSUFBSSxNQUFNLENBQUM7UUFDbkQsY0FBUyxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQ2pGLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFDZixHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLEVBQzFCLG9CQUFvQixFQUFFLEVBQ3RCLFdBQVcsQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUNoQyxDQUFDO1FBQ2MsZUFBVSxHQUFHLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQ3JGLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxZQUFZLGFBQWEsQ0FBQyxFQUNqRCxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQ2YsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUNmLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLEVBQ2hDLFdBQVcsQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUNoQyxDQUFDO0tBNkRIO0lBM0RDLElBQVcsUUFBUTtRQUNqQixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDO0lBQ3BDLENBQUM7SUFFTSxRQUFRO1FBQ2IsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUM7SUFDNUMsQ0FBQztJQUVNLFdBQVc7UUFDaEIsTUFBTSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFrRCxDQUFDO1FBRW5ILE9BQU8sU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksWUFBWSxJQUFJLFFBQVEsQ0FBQztJQUNwRCxDQUFDO0lBRU0sZUFBZTtRQUNwQixPQUFPLGVBQWUsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRU0sU0FBUztRQUNkLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUM7SUFDOUIsQ0FBQztJQUVNLFFBQVEsQ0FBQyxHQUFrQixFQUFFLE1BQWUsRUFBRSxRQUFpQjtRQUNwRSxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVNLFVBQVU7UUFDZixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVNLGdCQUFnQixDQUFJLElBQWE7UUFDdEMsTUFBTSxhQUFhLEdBQUcsb0JBQW9CLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFakQsT0FBTyxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNqRyxDQUFDO0lBRU0sY0FBYyxDQUFDLElBQVksRUFBRSxVQUF1QixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUk7UUFDM0UsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDLGdCQUFnQixDQUFDLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMxRixDQUFDO0lBRU0saUJBQWlCLENBQUMsTUFBYyxFQUFFLFFBQVEsR0FBRyxNQUFNO1FBQ3hELE1BQU0sY0FBYyxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksUUFBUSxHQUFHLENBQUMsQ0FBQztRQUNuRCxNQUFNLFVBQVUsR0FBRyxJQUFJLE1BQU0sQ0FBQyxNQUFNLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDOUMsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQzthQUM5QyxNQUFNLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2FBQ2pGLEdBQUcsQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDOUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLFlBQVksWUFBWSxJQUFJLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO2FBQy9GLE1BQU0sQ0FBQyxDQUFDLE1BQThCLEVBQUUsSUFBSSxFQUFFLEVBQUU7WUFDL0MsTUFBTSxDQUFDLE1BQU0sQ0FBRSxJQUFxQixDQUFDLEtBQUssQ0FBQztpQkFDeEMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7aUJBQ3ZDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7aUJBQ3hELE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO2dCQUNoQixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDbkMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDekMsQ0FBQyxDQUFDLENBQUM7WUFDTCxPQUFPLE1BQU0sQ0FBQztRQUNoQixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDVCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7K0dBNUVVLFNBQVM7bUhBQVQsU0FBUyxjQUZSLE1BQU07OzRGQUVQLFNBQVM7a0JBSHJCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlLCByZWZsZWN0Q29tcG9uZW50VHlwZSwgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVGl0bGUgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7IE5hdmlnYXRpb25FbmQsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBmcm9tRXZlbnRzIH0gZnJvbSAnQG9keC9hbmd1bGFyL3J4anMnO1xuaW1wb3J0IHsgZ2V0TGFuZ3VhZ2VDb2RlIH0gZnJvbSAnQG9keC9hbmd1bGFyL3V0aWxzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIEVNUFRZLCBmaWx0ZXIsIG1hcCwgc2hhcmVSZXBsYXksIHN0YXJ0V2l0aCB9IGZyb20gJ3J4anMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgV2luZG93UmVmIHtcbiAgcHJpdmF0ZSByZWFkb25seSB0aXRsZSA9IGluamVjdChUaXRsZSk7XG4gIHB1YmxpYyByZWFkb25seSBkb2N1bWVudCA9IGluamVjdChET0NVTUVOVCk7XG4gIHB1YmxpYyByZWFkb25seSBuYXRpdmVXaW5kb3cgPSB0aGlzLmRvY3VtZW50LmRlZmF1bHRWaWV3ID8/IHdpbmRvdztcbiAgcHVibGljIHJlYWRvbmx5IGlzT25saW5lJCA9IGZyb21FdmVudHModGhpcy5uYXRpdmVXaW5kb3csICdvZmZsaW5lJywgJ29ubGluZScpLnBpcGUoXG4gICAgc3RhcnRXaXRoKG51bGwpLFxuICAgIG1hcCgoKSA9PiB0aGlzLmlzT25saW5lKCkpLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgc2hhcmVSZXBsYXkoeyByZWZDb3VudDogdHJ1ZSB9KSxcbiAgKTtcbiAgcHVibGljIHJlYWRvbmx5IHBhZ2VUaXRsZSQgPSAoaW5qZWN0KFJvdXRlciwgeyBvcHRpb25hbDogdHJ1ZSB9KT8uZXZlbnRzID8/IEVNUFRZKS5waXBlKFxuICAgIGZpbHRlcigoZXZlbnQpID0+IGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCksXG4gICAgc3RhcnRXaXRoKG51bGwpLFxuICAgIGRlYm91bmNlVGltZSgwKSxcbiAgICBtYXAoKCkgPT4gdGhpcy50aXRsZS5nZXRUaXRsZSgpKSxcbiAgICBzaGFyZVJlcGxheSh7IHJlZkNvdW50OiB0cnVlIH0pLFxuICApO1xuXG4gIHB1YmxpYyBnZXQgbG9jYXRpb24oKTogTG9jYXRpb24ge1xuICAgIHJldHVybiB0aGlzLm5hdGl2ZVdpbmRvdy5sb2NhdGlvbjtcbiAgfVxuXG4gIHB1YmxpYyBpc09ubGluZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5uYXRpdmVXaW5kb3cubmF2aWdhdG9yLm9uTGluZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRMYW5ndWFnZSgpOiBzdHJpbmcge1xuICAgIGNvbnN0IHsgbGFuZ3VhZ2UsIGxhbmd1YWdlcywgdXNlckxhbmd1YWdlIH0gPSB0aGlzLm5hdGl2ZVdpbmRvdy5uYXZpZ2F0b3IgYXMgTmF2aWdhdG9yICYgeyB1c2VyTGFuZ3VhZ2U/OiBzdHJpbmcgfTtcblxuICAgIHJldHVybiBsYW5ndWFnZXM/LlswXSA/PyB1c2VyTGFuZ3VhZ2UgPz8gbGFuZ3VhZ2U7XG4gIH1cblxuICBwdWJsaWMgZ2V0TGFuZ3VhZ2VDb2RlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGdldExhbmd1YWdlQ29kZSh0aGlzLmdldExhbmd1YWdlKCkpO1xuICB9XG5cbiAgcHVibGljIGdldE9yaWdpbigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmxvY2F0aW9uLm9yaWdpbjtcbiAgfVxuXG4gIHB1YmxpYyBvcGVuUGFnZSh1cmw/OiBzdHJpbmcgfCBVUkwsIHRhcmdldD86IHN0cmluZywgZmVhdHVyZXM/OiBzdHJpbmcpOiBXaW5kb3dQcm94eSB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLm5hdGl2ZVdpbmRvdy5vcGVuKHVybCwgdGFyZ2V0LCBmZWF0dXJlcyk7XG4gIH1cblxuICBwdWJsaWMgcmVsb2FkUGFnZSgpOiB2b2lkIHtcbiAgICByZXR1cm4gdGhpcy5sb2NhdGlvbi5yZWxvYWQoKTtcbiAgfVxuXG4gIHB1YmxpYyBxdWVyeUJ5Q29tcG9uZW50PFQ+KHR5cGU6IFR5cGU8VD4pOiBIVE1MRWxlbWVudCB8IG51bGwge1xuICAgIGNvbnN0IGNvbXBvbmVudFR5cGUgPSByZWZsZWN0Q29tcG9uZW50VHlwZSh0eXBlKTtcblxuICAgIHJldHVybiBjb21wb25lbnRUeXBlID8gdGhpcy5uYXRpdmVXaW5kb3cuZG9jdW1lbnQucXVlcnlTZWxlY3Rvcihjb21wb25lbnRUeXBlLnNlbGVjdG9yKSA6IG51bGw7XG4gIH1cblxuICBwdWJsaWMgZ2V0Q1NTVmFyaWFibGUobmFtZTogc3RyaW5nLCBlbGVtZW50OiBIVE1MRWxlbWVudCA9IHRoaXMuZG9jdW1lbnQuYm9keSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMubmF0aXZlV2luZG93LmdldENvbXB1dGVkU3R5bGUoZWxlbWVudCkuZ2V0UHJvcGVydHlWYWx1ZShgLS0ke25hbWV9YCkudHJpbSgpO1xuICB9XG5cbiAgcHVibGljIGdldENTU0NvbG9yU3R5bGVzKGZpbHRlcjogc3RyaW5nLCBzZWxlY3RvciA9ICdib2R5Jyk6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4ge1xuICAgIGNvbnN0IHNlbGVjdG9yRmlsdGVyID0gbmV3IFJlZ0V4cChgXiR7c2VsZWN0b3J9JGApO1xuICAgIGNvbnN0IG5hbWVGaWx0ZXIgPSBuZXcgUmVnRXhwKGBeLS0ke2ZpbHRlcn1gKTtcbiAgICBjb25zdCBhcnIgPSBBcnJheS5mcm9tKHRoaXMuZG9jdW1lbnQuc3R5bGVTaGVldHMpXG4gICAgICAuZmlsdGVyKCh7IGhyZWYgfSkgPT4gIWhyZWYgfHwgaHJlZi5zdGFydHNXaXRoKHRoaXMubmF0aXZlV2luZG93LmxvY2F0aW9uLm9yaWdpbikpXG4gICAgICAubWFwKCh7IGNzc1J1bGVzIH0pID0+IEFycmF5LmZyb20oY3NzUnVsZXMpWzBdKVxuICAgICAgLmZpbHRlcigocnVsZSkgPT4gcnVsZSBpbnN0YW5jZW9mIENTU1N0eWxlUnVsZSAmJiBzZWxlY3RvckZpbHRlci50ZXN0KHJ1bGUuc2VsZWN0b3JUZXh0LnRyaW0oKSkpXG4gICAgICAucmVkdWNlKChjb2xvcnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4sIHJ1bGUpID0+IHtcbiAgICAgICAgT2JqZWN0LnZhbHVlcygocnVsZSBhcyBDU1NTdHlsZVJ1bGUpLnN0eWxlKVxuICAgICAgICAgIC5tYXAoKHN0eWxlKSA9PiBzdHlsZS50b1N0cmluZygpLnRyaW0oKSlcbiAgICAgICAgICAuZmlsdGVyKChuYW1lKSA9PiBCb29sZWFuKG5hbWUpICYmIG5hbWVGaWx0ZXIudGVzdChuYW1lKSlcbiAgICAgICAgICAuZm9yRWFjaCgobmFtZSkgPT4ge1xuICAgICAgICAgICAgY29uc3Qga2V5ID0gbmFtZS5yZXBsYWNlKCctLScsICcnKTtcbiAgICAgICAgICAgIGNvbG9yc1trZXldID0gdGhpcy5nZXRDU1NWYXJpYWJsZShrZXkpO1xuICAgICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gY29sb3JzO1xuICAgICAgfSwge30pO1xuICAgIHJldHVybiBhcnI7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export * from './lib/features';
|
|
2
|
+
export * from './lib/loaders';
|
|
3
|
+
export * from './lib/localization.config';
|
|
4
|
+
export * from './lib/localization.service';
|
|
5
|
+
export * from './lib/models';
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvbG9jYWxpemF0aW9uL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbGliL2ZlYXR1cmVzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2xvYWRlcnMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbG9jYWxpemF0aW9uLmNvbmZpZyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9sb2NhbGl6YXRpb24uc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9tb2RlbHMnO1xuIl19
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export * from './with-http-language-header';
|
|
2
|
+
export * from './with-http-language-query-param';
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvbG9jYWxpemF0aW9uL3NyYy9saWIvZmVhdHVyZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLGtDQUFrQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi93aXRoLWh0dHAtbGFuZ3VhZ2UtaGVhZGVyJztcbmV4cG9ydCAqIGZyb20gJy4vd2l0aC1odHRwLWxhbmd1YWdlLXF1ZXJ5LXBhcmFtJztcbiJdfQ==
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { provideHttpClient, withInterceptors } from '@angular/common/http';
|
|
2
|
+
import { inject } from '@angular/core';
|
|
3
|
+
import { matchUrl } from '@odx/angular/utils';
|
|
4
|
+
import { switchMap, take } from 'rxjs';
|
|
5
|
+
import { LocalizationService } from '../localization.service';
|
|
6
|
+
import { makeLocalizationFeature } from '../models';
|
|
7
|
+
export const HTTP_LANGUAGE_HEADER = 'Accept-Language';
|
|
8
|
+
export function httpLanguageHeaderInterceptor({ allowedUrls, headerName }) {
|
|
9
|
+
return (req, next) => {
|
|
10
|
+
const language$ = inject(LocalizationService).activeLanguage$.pipe(take(1));
|
|
11
|
+
for (const allowedUrl of allowedUrls) {
|
|
12
|
+
if (!matchUrl(req.url, allowedUrl))
|
|
13
|
+
continue;
|
|
14
|
+
return language$.pipe(switchMap((language) => next(req.clone({ setHeaders: { [headerName ?? HTTP_LANGUAGE_HEADER]: language } }))));
|
|
15
|
+
}
|
|
16
|
+
return next(req);
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
export function withHttpLanguageHeader(config) {
|
|
20
|
+
const providers = provideHttpClient(withInterceptors([httpLanguageHeaderInterceptor(config)]));
|
|
21
|
+
return makeLocalizationFeature(providers);
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1odHRwLWxhbmd1YWdlLWhlYWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9sb2NhbGl6YXRpb24vc3JjL2xpYi9mZWF0dXJlcy93aXRoLWh0dHAtbGFuZ3VhZ2UtaGVhZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBcUIsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM5RixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLEVBQXVCLHVCQUF1QixFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRXpFLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLGlCQUFpQixDQUFDO0FBT3RELE1BQU0sVUFBVSw2QkFBNkIsQ0FBQyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQXVDO0lBQzVHLE9BQU8sQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUU7UUFDbkIsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM1RSxLQUFLLE1BQU0sVUFBVSxJQUFJLFdBQVcsRUFBRTtZQUNwQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsVUFBVSxDQUFDO2dCQUFFLFNBQVM7WUFDN0MsT0FBTyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxVQUFVLEVBQUUsRUFBRSxDQUFDLFVBQVUsSUFBSSxvQkFBb0IsQ0FBQyxFQUFFLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNySTtRQUNELE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ25CLENBQUMsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLFVBQVUsc0JBQXNCLENBQUMsTUFBMkM7SUFDaEYsTUFBTSxTQUFTLEdBQUcsaUJBQWlCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyw2QkFBNkIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUUvRixPQUFPLHVCQUF1QixDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQzVDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwSW50ZXJjZXB0b3JGbiwgcHJvdmlkZUh0dHBDbGllbnQsIHdpdGhJbnRlcmNlcHRvcnMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IG1hdGNoVXJsIH0gZnJvbSAnQG9keC9hbmd1bGFyL3V0aWxzJztcbmltcG9ydCB7IHN3aXRjaE1hcCwgdGFrZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTG9jYWxpemF0aW9uU2VydmljZSB9IGZyb20gJy4uL2xvY2FsaXphdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IExvY2FsaXphdGlvbkZlYXR1cmUsIG1ha2VMb2NhbGl6YXRpb25GZWF0dXJlIH0gZnJvbSAnLi4vbW9kZWxzJztcblxuZXhwb3J0IGNvbnN0IEhUVFBfTEFOR1VBR0VfSEVBREVSID0gJ0FjY2VwdC1MYW5ndWFnZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSHR0cExhbmd1YWdlSGVhZGVySW50ZXJjZXB0b3JDb25maWcge1xuICBhbGxvd2VkVXJsczogQXJyYXk8c3RyaW5nIHwgUmVnRXhwPjtcbiAgaGVhZGVyTmFtZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGh0dHBMYW5ndWFnZUhlYWRlckludGVyY2VwdG9yKHsgYWxsb3dlZFVybHMsIGhlYWRlck5hbWUgfTogSHR0cExhbmd1YWdlSGVhZGVySW50ZXJjZXB0b3JDb25maWcpOiBIdHRwSW50ZXJjZXB0b3JGbiB7XG4gIHJldHVybiAocmVxLCBuZXh0KSA9PiB7XG4gICAgY29uc3QgbGFuZ3VhZ2UkID0gaW5qZWN0KExvY2FsaXphdGlvblNlcnZpY2UpLmFjdGl2ZUxhbmd1YWdlJC5waXBlKHRha2UoMSkpO1xuICAgIGZvciAoY29uc3QgYWxsb3dlZFVybCBvZiBhbGxvd2VkVXJscykge1xuICAgICAgaWYgKCFtYXRjaFVybChyZXEudXJsLCBhbGxvd2VkVXJsKSkgY29udGludWU7XG4gICAgICByZXR1cm4gbGFuZ3VhZ2UkLnBpcGUoc3dpdGNoTWFwKChsYW5ndWFnZSkgPT4gbmV4dChyZXEuY2xvbmUoeyBzZXRIZWFkZXJzOiB7IFtoZWFkZXJOYW1lID8/IEhUVFBfTEFOR1VBR0VfSEVBREVSXTogbGFuZ3VhZ2UgfSB9KSkpKTtcbiAgICB9XG4gICAgcmV0dXJuIG5leHQocmVxKTtcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdpdGhIdHRwTGFuZ3VhZ2VIZWFkZXIoY29uZmlnOiBIdHRwTGFuZ3VhZ2VIZWFkZXJJbnRlcmNlcHRvckNvbmZpZyk6IExvY2FsaXphdGlvbkZlYXR1cmUge1xuICBjb25zdCBwcm92aWRlcnMgPSBwcm92aWRlSHR0cENsaWVudCh3aXRoSW50ZXJjZXB0b3JzKFtodHRwTGFuZ3VhZ2VIZWFkZXJJbnRlcmNlcHRvcihjb25maWcpXSkpO1xuXG4gIHJldHVybiBtYWtlTG9jYWxpemF0aW9uRmVhdHVyZShwcm92aWRlcnMpO1xufVxuIl19
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { provideHttpClient, withInterceptors } from '@angular/common/http';
|
|
2
|
+
import { inject } from '@angular/core';
|
|
3
|
+
import { matchUrl } from '@odx/angular/utils';
|
|
4
|
+
import { switchMap, take } from 'rxjs';
|
|
5
|
+
import { LocalizationService } from '../localization.service';
|
|
6
|
+
import { makeLocalizationFeature } from '../models';
|
|
7
|
+
export const HTTP_LANGUAGE_QUERY = 'language';
|
|
8
|
+
export function withHttpLanguageQueryParamInterceptor({ allowedUrls, queryParamName }) {
|
|
9
|
+
return (req, next) => {
|
|
10
|
+
const language$ = inject(LocalizationService).activeLanguage$.pipe(take(1));
|
|
11
|
+
for (const allowedUrl of allowedUrls) {
|
|
12
|
+
if (!matchUrl(req.url, allowedUrl))
|
|
13
|
+
continue;
|
|
14
|
+
return language$.pipe(switchMap((language) => next(req.clone({ setParams: { [queryParamName ?? HTTP_LANGUAGE_QUERY]: language } }))));
|
|
15
|
+
}
|
|
16
|
+
return next(req);
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
export function withHttpLanguageQueryParam(config) {
|
|
20
|
+
const providers = provideHttpClient(withInterceptors([withHttpLanguageQueryParamInterceptor(config)]));
|
|
21
|
+
return makeLocalizationFeature(providers);
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1odHRwLWxhbmd1YWdlLXF1ZXJ5LXBhcmFtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL2xvY2FsaXphdGlvbi9zcmMvbGliL2ZlYXR1cmVzL3dpdGgtaHR0cC1sYW5ndWFnZS1xdWVyeS1wYXJhbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLGlCQUFpQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDOUYsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDOUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdkMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDOUQsT0FBTyxFQUF1Qix1QkFBdUIsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUV6RSxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxVQUFVLENBQUM7QUFPOUMsTUFBTSxVQUFVLHFDQUFxQyxDQUFDLEVBQUUsV0FBVyxFQUFFLGNBQWMsRUFBMkM7SUFDNUgsT0FBTyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRTtRQUNuQixNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzVFLEtBQUssTUFBTSxVQUFVLElBQUksV0FBVyxFQUFFO1lBQ3BDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxVQUFVLENBQUM7Z0JBQUUsU0FBUztZQUM3QyxPQUFPLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLFNBQVMsRUFBRSxFQUFFLENBQUMsY0FBYyxJQUFJLG1CQUFtQixDQUFDLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3ZJO1FBQ0QsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbkIsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSwwQkFBMEIsQ0FBQyxNQUErQztJQUN4RixNQUFNLFNBQVMsR0FBRyxpQkFBaUIsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLHFDQUFxQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRXZHLE9BQU8sdUJBQXVCLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDNUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBJbnRlcmNlcHRvckZuLCBwcm92aWRlSHR0cENsaWVudCwgd2l0aEludGVyY2VwdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgbWF0Y2hVcmwgfSBmcm9tICdAb2R4L2FuZ3VsYXIvdXRpbHMnO1xuaW1wb3J0IHsgc3dpdGNoTWFwLCB0YWtlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBMb2NhbGl6YXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vbG9jYWxpemF0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgTG9jYWxpemF0aW9uRmVhdHVyZSwgbWFrZUxvY2FsaXphdGlvbkZlYXR1cmUgfSBmcm9tICcuLi9tb2RlbHMnO1xuXG5leHBvcnQgY29uc3QgSFRUUF9MQU5HVUFHRV9RVUVSWSA9ICdsYW5ndWFnZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSHR0cExhbmd1YWdlUXVlcnlQYXJhbUludGVyY2VwdG9yQ29uZmlnIHtcbiAgYWxsb3dlZFVybHM6IEFycmF5PHN0cmluZyB8IFJlZ0V4cD47XG4gIHF1ZXJ5UGFyYW1OYW1lPzogc3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gd2l0aEh0dHBMYW5ndWFnZVF1ZXJ5UGFyYW1JbnRlcmNlcHRvcih7IGFsbG93ZWRVcmxzLCBxdWVyeVBhcmFtTmFtZSB9OiBIdHRwTGFuZ3VhZ2VRdWVyeVBhcmFtSW50ZXJjZXB0b3JDb25maWcpOiBIdHRwSW50ZXJjZXB0b3JGbiB7XG4gIHJldHVybiAocmVxLCBuZXh0KSA9PiB7XG4gICAgY29uc3QgbGFuZ3VhZ2UkID0gaW5qZWN0KExvY2FsaXphdGlvblNlcnZpY2UpLmFjdGl2ZUxhbmd1YWdlJC5waXBlKHRha2UoMSkpO1xuICAgIGZvciAoY29uc3QgYWxsb3dlZFVybCBvZiBhbGxvd2VkVXJscykge1xuICAgICAgaWYgKCFtYXRjaFVybChyZXEudXJsLCBhbGxvd2VkVXJsKSkgY29udGludWU7XG4gICAgICByZXR1cm4gbGFuZ3VhZ2UkLnBpcGUoc3dpdGNoTWFwKChsYW5ndWFnZSkgPT4gbmV4dChyZXEuY2xvbmUoeyBzZXRQYXJhbXM6IHsgW3F1ZXJ5UGFyYW1OYW1lID8/IEhUVFBfTEFOR1VBR0VfUVVFUlldOiBsYW5ndWFnZSB9IH0pKSkpO1xuICAgIH1cbiAgICByZXR1cm4gbmV4dChyZXEpO1xuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gd2l0aEh0dHBMYW5ndWFnZVF1ZXJ5UGFyYW0oY29uZmlnOiBIdHRwTGFuZ3VhZ2VRdWVyeVBhcmFtSW50ZXJjZXB0b3JDb25maWcpOiBMb2NhbGl6YXRpb25GZWF0dXJlIHtcbiAgY29uc3QgcHJvdmlkZXJzID0gcHJvdmlkZUh0dHBDbGllbnQod2l0aEludGVyY2VwdG9ycyhbd2l0aEh0dHBMYW5ndWFnZVF1ZXJ5UGFyYW1JbnRlcmNlcHRvcihjb25maWcpXSkpO1xuXG4gIHJldHVybiBtYWtlTG9jYWxpemF0aW9uRmVhdHVyZShwcm92aWRlcnMpO1xufVxuIl19
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { inject } from '@angular/core';
|
|
2
|
+
import { WindowRef } from '@odx/angular';
|
|
3
|
+
export const browserLanguageLoader = async () => {
|
|
4
|
+
return inject(WindowRef).getLanguage();
|
|
5
|
+
};
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJvd3Nlci1sYW5ndWFnZS1sb2FkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvbG9jYWxpemF0aW9uL3NyYy9saWIvbG9hZGVycy9icm93c2VyLWxhbmd1YWdlLWxvYWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFHekMsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQXFCLEtBQUssSUFBSSxFQUFFO0lBQ2hFLE9BQU8sTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO0FBQ3pDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgV2luZG93UmVmIH0gZnJvbSAnQG9keC9hbmd1bGFyJztcbmltcG9ydCB7IExhbmd1YWdlTG9hZGVyRm4gfSBmcm9tICcuLi9tb2RlbHMnO1xuXG5leHBvcnQgY29uc3QgYnJvd3Nlckxhbmd1YWdlTG9hZGVyOiBMYW5ndWFnZUxvYWRlckZuID0gYXN5bmMgKCkgPT4ge1xuICByZXR1cm4gaW5qZWN0KFdpbmRvd1JlZikuZ2V0TGFuZ3VhZ2UoKTtcbn07XG4iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export * from './browser-language-loader';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvbG9jYWxpemF0aW9uL3NyYy9saWIvbG9hZGVycy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDJCQUEyQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9icm93c2VyLWxhbmd1YWdlLWxvYWRlcic7XG4iXX0=
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { APP_INITIALIZER, makeEnvironmentProviders } from '@angular/core';
|
|
2
|
+
import { createConfigTokens } from '@odx/angular/utils';
|
|
3
|
+
import { LocalizationService } from './localization.service';
|
|
4
|
+
export const DEFAULT_AVAILABLE_LANGUAGES = ['en', 'de', 'es', 'fr', 'ja'];
|
|
5
|
+
export const { LocalizationConfig, LocalizationDefaultConfig, injectLocalizationConfig, provideLocalizationConfig } = createConfigTokens('Localization', '@odx/angular/internal/translate', {
|
|
6
|
+
availableLanguages: DEFAULT_AVAILABLE_LANGUAGES,
|
|
7
|
+
availableLocales: DEFAULT_AVAILABLE_LANGUAGES,
|
|
8
|
+
});
|
|
9
|
+
export function provideLocalization(config, ...features) {
|
|
10
|
+
return makeEnvironmentProviders([
|
|
11
|
+
provideLocalizationConfig(config),
|
|
12
|
+
{
|
|
13
|
+
provide: APP_INITIALIZER,
|
|
14
|
+
useFactory: (localizationService) => () => localizationService.loadActiveLanguage(),
|
|
15
|
+
deps: [LocalizationService],
|
|
16
|
+
multi: true,
|
|
17
|
+
},
|
|
18
|
+
features,
|
|
19
|
+
]);
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxpemF0aW9uLmNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9sb2NhbGl6YXRpb24vc3JjL2xpYi9sb2NhbGl6YXRpb24uY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQXdCLHdCQUF3QixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRzdELE1BQU0sQ0FBQyxNQUFNLDJCQUEyQixHQUFHLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBTzFFLE1BQU0sQ0FBQyxNQUFNLEVBQUUsa0JBQWtCLEVBQUUseUJBQXlCLEVBQUUsd0JBQXdCLEVBQUUseUJBQXlCLEVBQUUsR0FBRyxrQkFBa0IsQ0FDdEksY0FBYyxFQUNkLGlDQUFpQyxFQUNqQztJQUNFLGtCQUFrQixFQUFFLDJCQUEyQjtJQUMvQyxnQkFBZ0IsRUFBRSwyQkFBMkI7Q0FDeEIsQ0FDeEIsQ0FBQztBQUVGLE1BQU0sVUFBVSxtQkFBbUIsQ0FBQyxNQUFtQyxFQUFFLEdBQUcsUUFBK0I7SUFDekcsT0FBTyx3QkFBd0IsQ0FBQztRQUM5Qix5QkFBeUIsQ0FBQyxNQUFNLENBQUM7UUFDakM7WUFDRSxPQUFPLEVBQUUsZUFBZTtZQUN4QixVQUFVLEVBQUUsQ0FBQyxtQkFBd0MsRUFBRSxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsbUJBQW1CLENBQUMsa0JBQWtCLEVBQUU7WUFDeEcsSUFBSSxFQUFFLENBQUMsbUJBQW1CLENBQUM7WUFDM0IsS0FBSyxFQUFFLElBQUk7U0FDWjtRQUNELFFBQVE7S0FDVCxDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVBQX0lOSVRJQUxJWkVSLCBFbnZpcm9ubWVudFByb3ZpZGVycywgbWFrZUVudmlyb25tZW50UHJvdmlkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBjcmVhdGVDb25maWdUb2tlbnMgfSBmcm9tICdAb2R4L2FuZ3VsYXIvdXRpbHMnO1xuaW1wb3J0IHsgTG9jYWxpemF0aW9uU2VydmljZSB9IGZyb20gJy4vbG9jYWxpemF0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgTGFuZ3VhZ2VMb2FkZXJGbiwgTG9jYWxpemF0aW9uRmVhdHVyZSB9IGZyb20gJy4vbW9kZWxzJztcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfQVZBSUxBQkxFX0xBTkdVQUdFUyA9IFsnZW4nLCAnZGUnLCAnZXMnLCAnZnInLCAnamEnXTtcblxuZXhwb3J0IGludGVyZmFjZSBMb2NhbGl6YXRpb25Db25maWcge1xuICBhY3RpdmVMYW5ndWFnZUxvYWRlcj86IExhbmd1YWdlTG9hZGVyRm47XG4gIGF2YWlsYWJsZUxhbmd1YWdlczogc3RyaW5nW107XG59XG5cbmV4cG9ydCBjb25zdCB7IExvY2FsaXphdGlvbkNvbmZpZywgTG9jYWxpemF0aW9uRGVmYXVsdENvbmZpZywgaW5qZWN0TG9jYWxpemF0aW9uQ29uZmlnLCBwcm92aWRlTG9jYWxpemF0aW9uQ29uZmlnIH0gPSBjcmVhdGVDb25maWdUb2tlbnMoXG4gICdMb2NhbGl6YXRpb24nLFxuICAnQG9keC9hbmd1bGFyL2ludGVybmFsL3RyYW5zbGF0ZScsXG4gIHtcbiAgICBhdmFpbGFibGVMYW5ndWFnZXM6IERFRkFVTFRfQVZBSUxBQkxFX0xBTkdVQUdFUyxcbiAgICBhdmFpbGFibGVMb2NhbGVzOiBERUZBVUxUX0FWQUlMQUJMRV9MQU5HVUFHRVMsXG4gIH0gYXMgTG9jYWxpemF0aW9uQ29uZmlnLFxuKTtcblxuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVMb2NhbGl6YXRpb24oY29uZmlnOiBQYXJ0aWFsPExvY2FsaXphdGlvbkNvbmZpZz4sIC4uLmZlYXR1cmVzOiBMb2NhbGl6YXRpb25GZWF0dXJlW10pOiBFbnZpcm9ubWVudFByb3ZpZGVycyB7XG4gIHJldHVybiBtYWtlRW52aXJvbm1lbnRQcm92aWRlcnMoW1xuICAgIHByb3ZpZGVMb2NhbGl6YXRpb25Db25maWcoY29uZmlnKSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBBUFBfSU5JVElBTElaRVIsXG4gICAgICB1c2VGYWN0b3J5OiAobG9jYWxpemF0aW9uU2VydmljZTogTG9jYWxpemF0aW9uU2VydmljZSkgPT4gKCkgPT4gbG9jYWxpemF0aW9uU2VydmljZS5sb2FkQWN0aXZlTGFuZ3VhZ2UoKSxcbiAgICAgIGRlcHM6IFtMb2NhbGl6YXRpb25TZXJ2aWNlXSxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gICAgZmVhdHVyZXMsXG4gIF0pO1xufVxuIl19
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { Injectable, Injector, inject, runInInjectionContext } from '@angular/core';
|
|
2
|
+
import { getLanguageCode } from '@odx/angular/utils';
|
|
3
|
+
import { BehaviorSubject, distinctUntilChanged, filter, firstValueFrom, from, shareReplay } from 'rxjs';
|
|
4
|
+
import { injectLocalizationConfig } from './localization.config';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export class LocalizationService {
|
|
7
|
+
constructor() {
|
|
8
|
+
this.injector = inject(Injector);
|
|
9
|
+
this.localizationConfig = injectLocalizationConfig();
|
|
10
|
+
this.availableLanguageSet = new Set(this.localizationConfig.availableLanguages);
|
|
11
|
+
this.activeLanguage$$ = new BehaviorSubject(undefined);
|
|
12
|
+
this.activeLanguage$ = this.activeLanguage$$.pipe(filter(Boolean), distinctUntilChanged(), shareReplay({ refCount: true }));
|
|
13
|
+
this.availableLanguages = Array.from(this.availableLanguageSet);
|
|
14
|
+
this.defaultLanguage = this.availableLanguages[0];
|
|
15
|
+
}
|
|
16
|
+
getActiveLanguage() {
|
|
17
|
+
return this.activeLanguage$$.getValue() ?? this.defaultLanguage;
|
|
18
|
+
}
|
|
19
|
+
setActiveLanguage(language) {
|
|
20
|
+
if (this.availableLanguageSet.has(language)) {
|
|
21
|
+
this.activeLanguage$$.next(language);
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
const languageCode = getLanguageCode(language);
|
|
25
|
+
if (this.availableLanguageSet.has(languageCode)) {
|
|
26
|
+
this.activeLanguage$$.next(languageCode);
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
this.activeLanguage$$.next(this.defaultLanguage);
|
|
30
|
+
}
|
|
31
|
+
async loadActiveLanguage() {
|
|
32
|
+
return runInInjectionContext(this.injector, async () => {
|
|
33
|
+
const activeLanguageLoader$ = from(this.localizationConfig.activeLanguageLoader?.() ?? []);
|
|
34
|
+
const activeLanguage = await firstValueFrom(activeLanguageLoader$).catch(() => null);
|
|
35
|
+
this.setActiveLanguage(activeLanguage ?? this.defaultLanguage);
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: LocalizationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
39
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: LocalizationService, providedIn: 'root' }); }
|
|
40
|
+
}
|
|
41
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: LocalizationService, decorators: [{
|
|
42
|
+
type: Injectable,
|
|
43
|
+
args: [{ providedIn: 'root' }]
|
|
44
|
+
}] });
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxpemF0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvbG9jYWxpemF0aW9uL3NyYy9saWIvbG9jYWxpemF0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZUFBZSxFQUFFLG9CQUFvQixFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN4RyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7QUFHakUsTUFBTSxPQUFPLG1CQUFtQjtJQURoQztRQUVtQixhQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzVCLHVCQUFrQixHQUFHLHdCQUF3QixFQUFFLENBQUM7UUFDaEQseUJBQW9CLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDM0UscUJBQWdCLEdBQUcsSUFBSSxlQUFlLENBQXFCLFNBQVMsQ0FBQyxDQUFDO1FBRXZFLG9CQUFlLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsb0JBQW9CLEVBQUUsRUFBRSxXQUFXLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3ZILHVCQUFrQixHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDM0Qsb0JBQWUsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLENBQUM7S0EwQjlEO0lBeEJRLGlCQUFpQjtRQUN0QixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDO0lBQ2xFLENBQUM7SUFFTSxpQkFBaUIsQ0FBQyxRQUFnQjtRQUN2QyxJQUFJLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDM0MsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNyQyxPQUFPO1NBQ1I7UUFDRCxNQUFNLFlBQVksR0FBRyxlQUFlLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDL0MsSUFBSSxJQUFJLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxFQUFFO1lBQy9DLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDekMsT0FBTztTQUNSO1FBQ0QsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVNLEtBQUssQ0FBQyxrQkFBa0I7UUFDN0IsT0FBTyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEtBQUssSUFBSSxFQUFFO1lBQ3JELE1BQU0scUJBQXFCLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxvQkFBb0IsRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7WUFDM0YsTUFBTSxjQUFjLEdBQUcsTUFBTSxjQUFjLENBQUMscUJBQXFCLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDckYsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDakUsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOytHQWpDVSxtQkFBbUI7bUhBQW5CLG1CQUFtQixjQUROLE1BQU07OzRGQUNuQixtQkFBbUI7a0JBRC9CLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0b3IsIGluamVjdCwgcnVuSW5JbmplY3Rpb25Db250ZXh0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBnZXRMYW5ndWFnZUNvZGUgfSBmcm9tICdAb2R4L2FuZ3VsYXIvdXRpbHMnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZmlsdGVyLCBmaXJzdFZhbHVlRnJvbSwgZnJvbSwgc2hhcmVSZXBsYXkgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGluamVjdExvY2FsaXphdGlvbkNvbmZpZyB9IGZyb20gJy4vbG9jYWxpemF0aW9uLmNvbmZpZyc7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgTG9jYWxpemF0aW9uU2VydmljZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuICBwcml2YXRlIHJlYWRvbmx5IGxvY2FsaXphdGlvbkNvbmZpZyA9IGluamVjdExvY2FsaXphdGlvbkNvbmZpZygpO1xuICBwcml2YXRlIHJlYWRvbmx5IGF2YWlsYWJsZUxhbmd1YWdlU2V0ID0gbmV3IFNldCh0aGlzLmxvY2FsaXphdGlvbkNvbmZpZy5hdmFpbGFibGVMYW5ndWFnZXMpO1xuICBwcml2YXRlIHJlYWRvbmx5IGFjdGl2ZUxhbmd1YWdlJCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgYWN0aXZlTGFuZ3VhZ2UkID0gdGhpcy5hY3RpdmVMYW5ndWFnZSQkLnBpcGUoZmlsdGVyKEJvb2xlYW4pLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLCBzaGFyZVJlcGxheSh7IHJlZkNvdW50OiB0cnVlIH0pKTtcbiAgcHVibGljIHJlYWRvbmx5IGF2YWlsYWJsZUxhbmd1YWdlcyA9IEFycmF5LmZyb20odGhpcy5hdmFpbGFibGVMYW5ndWFnZVNldCk7XG4gIHB1YmxpYyByZWFkb25seSBkZWZhdWx0TGFuZ3VhZ2UgPSB0aGlzLmF2YWlsYWJsZUxhbmd1YWdlc1swXTtcblxuICBwdWJsaWMgZ2V0QWN0aXZlTGFuZ3VhZ2UoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5hY3RpdmVMYW5ndWFnZSQkLmdldFZhbHVlKCkgPz8gdGhpcy5kZWZhdWx0TGFuZ3VhZ2U7XG4gIH1cblxuICBwdWJsaWMgc2V0QWN0aXZlTGFuZ3VhZ2UobGFuZ3VhZ2U6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh0aGlzLmF2YWlsYWJsZUxhbmd1YWdlU2V0LmhhcyhsYW5ndWFnZSkpIHtcbiAgICAgIHRoaXMuYWN0aXZlTGFuZ3VhZ2UkJC5uZXh0KGxhbmd1YWdlKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgbGFuZ3VhZ2VDb2RlID0gZ2V0TGFuZ3VhZ2VDb2RlKGxhbmd1YWdlKTtcbiAgICBpZiAodGhpcy5hdmFpbGFibGVMYW5ndWFnZVNldC5oYXMobGFuZ3VhZ2VDb2RlKSkge1xuICAgICAgdGhpcy5hY3RpdmVMYW5ndWFnZSQkLm5leHQobGFuZ3VhZ2VDb2RlKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5hY3RpdmVMYW5ndWFnZSQkLm5leHQodGhpcy5kZWZhdWx0TGFuZ3VhZ2UpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGxvYWRBY3RpdmVMYW5ndWFnZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gcnVuSW5JbmplY3Rpb25Db250ZXh0KHRoaXMuaW5qZWN0b3IsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGFjdGl2ZUxhbmd1YWdlTG9hZGVyJCA9IGZyb20odGhpcy5sb2NhbGl6YXRpb25Db25maWcuYWN0aXZlTGFuZ3VhZ2VMb2FkZXI/LigpID8/IFtdKTtcbiAgICAgIGNvbnN0IGFjdGl2ZUxhbmd1YWdlID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20oYWN0aXZlTGFuZ3VhZ2VMb2FkZXIkKS5jYXRjaCgoKSA9PiBudWxsKTtcbiAgICAgIHRoaXMuc2V0QWN0aXZlTGFuZ3VhZ2UoYWN0aXZlTGFuZ3VhZ2UgPz8gdGhpcy5kZWZhdWx0TGFuZ3VhZ2UpO1xuICAgIH0pO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export * from './language-loader-fn';
|
|
2
|
+
export * from './localization-feature';
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvbG9jYWxpemF0aW9uL3NyYy9saWIvbW9kZWxzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyx3QkFBd0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbGFuZ3VhZ2UtbG9hZGVyLWZuJztcbmV4cG9ydCAqIGZyb20gJy4vbG9jYWxpemF0aW9uLWZlYXR1cmUnO1xuIl19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFuZ3VhZ2UtbG9hZGVyLWZuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL2xvY2FsaXphdGlvbi9zcmMvbGliL21vZGVscy9sYW5ndWFnZS1sb2FkZXItZm4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGVJbnB1dCB9IGZyb20gJ3J4anMnO1xuXG5leHBvcnQgdHlwZSBMYW5ndWFnZUxvYWRlckZuID0gKCkgPT4gT2JzZXJ2YWJsZUlucHV0PHN0cmluZyB8IHVuZGVmaW5lZD47XG4iXX0=
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export function makeLocalizationFeature(provider) {
|
|
2
|
+
return provider;
|
|
3
|
+
}
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxpemF0aW9uLWZlYXR1cmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvbG9jYWxpemF0aW9uL3NyYy9saWIvbW9kZWxzL2xvY2FsaXphdGlvbi1mZWF0dXJlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLE1BQU0sVUFBVSx1QkFBdUIsQ0FBQyxRQUEyQztJQUNqRixPQUFPLFFBQXdDLENBQUM7QUFDbEQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVudmlyb25tZW50UHJvdmlkZXJzLCBQcm92aWRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgdHlwZSBMb2NhbGl6YXRpb25GZWF0dXJlID0gRW52aXJvbm1lbnRQcm92aWRlcnMgJiB7IMm1b2R4QnJhbmQ6ICdAb2R4L2FuZ3VsYXIvbG9jYWxpemF0aW9uOjpMb2NhbGl6YXRpb25GZWF0dXJlJyB9O1xuXG5leHBvcnQgZnVuY3Rpb24gbWFrZUxvY2FsaXphdGlvbkZlYXR1cmUocHJvdmlkZXI6IFByb3ZpZGVyW10gfCBFbnZpcm9ubWVudFByb3ZpZGVycyk6IExvY2FsaXphdGlvbkZlYXR1cmUge1xuICByZXR1cm4gcHJvdmlkZXIgYXMgbmV2ZXIgYXMgTG9jYWxpemF0aW9uRmVhdHVyZTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './index';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2R4LWFuZ3VsYXItbG9jYWxpemF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL2xvY2FsaXphdGlvbi9zcmMvb2R4LWFuZ3VsYXItbG9jYWxpemF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { inject, InjectionToken } from '@angular/core';
|
|
2
2
|
import { bootstrapApplication } from '@angular/platform-browser';
|
|
3
|
+
import { CacheStorageClient } from '@odx/angular/utils';
|
|
3
4
|
export function createHttpApplicationEnvironmentLoader(handler) {
|
|
4
|
-
|
|
5
|
+
const cache = new CacheStorageClient('@odx/angular/sdk::ApplicationEnvironment');
|
|
6
|
+
return (...args) => cache.request(...args).then((dto) => handler(dto));
|
|
5
7
|
}
|
|
6
8
|
export function createApplicationEnvironment(loader) {
|
|
7
9
|
let environment;
|
|
@@ -30,4 +32,4 @@ export function createApplicationEnvironment(loader) {
|
|
|
30
32
|
loadApplicationEnvironment,
|
|
31
33
|
};
|
|
32
34
|
}
|
|
33
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbGljYXRpb24tZW52aXJvbm1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvc2RrL3NyYy9saWIvYXBwbGljYXRpb24tZW52aXJvbm1lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFrQixNQUFNLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBSXhELE1BQU0sVUFBVSxzQ0FBc0MsQ0FDcEQsT0FBd0M7SUFFeEMsTUFBTSxLQUFLLEdBQUcsSUFBSSxrQkFBa0IsQ0FBQywwQ0FBMEMsQ0FBQyxDQUFDO0lBRWpGLE9BQU8sQ0FBQyxHQUFHLElBQStDLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQVUsR0FBRyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFJLENBQUMsQ0FBQyxDQUFDO0FBQzlILENBQUM7QUFFRCxNQUFNLFVBQVUsNEJBQTRCLENBQWlDLE1BQWtEO0lBQzdILElBQUksV0FBaUIsQ0FBQztJQUN0QixNQUFNLHVCQUF1QixHQUFHLElBQUksY0FBYyxDQUFPLDBDQUEwQyxFQUFFO1FBQ25HLFVBQVUsRUFBRSxNQUFNO1FBQ2xCLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxXQUFtQjtLQUNuQyxDQUFDLENBQUM7SUFFSCxTQUFTLDRCQUE0QjtRQUNuQyxPQUFPLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRCxLQUFLLFVBQVUsMEJBQTBCLENBQUMsR0FBRyxJQUErQjtRQUMxRSxXQUFXLEdBQUcsTUFBTSxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUNwQyxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ2hCLE1BQU0sSUFBSSxLQUFLLENBQUMsd0RBQXdELENBQUMsQ0FBQztTQUMzRTtRQUNELE9BQU8sV0FBVyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxLQUFLLFVBQVUsbUNBQW1DLENBQ2hELE1BQWlDLEVBQ2pDLEdBQUcsSUFBNkM7UUFFaEQsTUFBTSwwQkFBMEIsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDO1FBRTVDLE9BQU8sb0JBQW9CLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQsT0FBTztRQUNMLHVCQUF1QjtRQUN2Qiw0QkFBNEI7UUFDNUIsbUNBQW1DO1FBQ25DLDBCQUEwQjtLQUMzQixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFwcGxpY2F0aW9uUmVmLCBpbmplY3QsIEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBib290c3RyYXBBcHBsaWNhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHsgQ2FjaGVTdG9yYWdlQ2xpZW50IH0gZnJvbSAnQG9keC9hbmd1bGFyL3V0aWxzJztcblxuZXhwb3J0IHR5cGUgQXBwbGljYXRpb25FbnZpcm9ubWVudExvYWRlcjxFbnZpcm9ubWVudERhdGEsIFBhcmFtcyBleHRlbmRzIHVua25vd25bXT4gPSAoLi4uYXJnczogUGFyYW1zKSA9PiBQcm9taXNlPEVudmlyb25tZW50RGF0YT47XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVIdHRwQXBwbGljYXRpb25FbnZpcm9ubWVudExvYWRlcjxEYXRhPihcbiAgaGFuZGxlcjogKGR0bzogdW5rbm93bikgPT4gUHJvbWlzZTxEYXRhPixcbik6IEFwcGxpY2F0aW9uRW52aXJvbm1lbnRMb2FkZXI8RGF0YSwgUGFyYW1ldGVyczxDYWNoZVN0b3JhZ2VDbGllbnRbJ3JlcXVlc3QnXT4+IHtcbiAgY29uc3QgY2FjaGUgPSBuZXcgQ2FjaGVTdG9yYWdlQ2xpZW50KCdAb2R4L2FuZ3VsYXIvc2RrOjpBcHBsaWNhdGlvbkVudmlyb25tZW50Jyk7XG5cbiAgcmV0dXJuICguLi5hcmdzOiBQYXJhbWV0ZXJzPENhY2hlU3RvcmFnZUNsaWVudFsncmVxdWVzdCddPikgPT4gY2FjaGUucmVxdWVzdDx1bmtub3duPiguLi5hcmdzKS50aGVuKChkdG8pID0+IGhhbmRsZXIoZHRvISkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQXBwbGljYXRpb25FbnZpcm9ubWVudDxEYXRhLCBQYXJhbXMgZXh0ZW5kcyB1bmtub3duW10+KGxvYWRlcjogQXBwbGljYXRpb25FbnZpcm9ubWVudExvYWRlcjxEYXRhLCBQYXJhbXM+KSB7XG4gIGxldCBlbnZpcm9ubWVudDogRGF0YTtcbiAgY29uc3QgQVBQTElDQVRJT05fRU5WSVJPTk1FTlQgPSBuZXcgSW5qZWN0aW9uVG9rZW48RGF0YT4oJ0BvZHgvYW5ndWxhci9zZGs6OkFwcGxpY2F0aW9uRW52aXJvbm1lbnQnLCB7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxuICAgIGZhY3Rvcnk6ICgpID0+IGVudmlyb25tZW50IGFzIERhdGEsXG4gIH0pO1xuXG4gIGZ1bmN0aW9uIGluamVjdEFwcGxpY2F0aW9uRW52aXJvbm1lbnQoKTogRGF0YSB7XG4gICAgcmV0dXJuIGluamVjdChBUFBMSUNBVElPTl9FTlZJUk9OTUVOVCk7XG4gIH1cblxuICBhc3luYyBmdW5jdGlvbiBsb2FkQXBwbGljYXRpb25FbnZpcm9ubWVudCguLi5hcmdzOiBQYXJhbWV0ZXJzPHR5cGVvZiBsb2FkZXI+KTogUHJvbWlzZTxEYXRhPiB7XG4gICAgZW52aXJvbm1lbnQgPSBhd2FpdCBsb2FkZXIoLi4uYXJncyk7XG4gICAgaWYgKCFlbnZpcm9ubWVudCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdbQG9keC9hbmd1bGFyL3Nka10gRmFpbGVkIGxvYWQgYXBwbGljYXRpb24gZW52aXJvbm1lbnQnKTtcbiAgICB9XG4gICAgcmV0dXJuIGVudmlyb25tZW50O1xuICB9XG5cbiAgYXN5bmMgZnVuY3Rpb24gYm9vdHN0cmFwQXBwbGljYXRpb25XaXRoRW52aXJvbm1lbnQoXG4gICAgcGFyYW1zOiBQYXJhbWV0ZXJzPHR5cGVvZiBsb2FkZXI+LFxuICAgIC4uLmFyZ3M6IFBhcmFtZXRlcnM8dHlwZW9mIGJvb3RzdHJhcEFwcGxpY2F0aW9uPlxuICApOiBQcm9taXNlPEFwcGxpY2F0aW9uUmVmPiB7XG4gICAgYXdhaXQgbG9hZEFwcGxpY2F0aW9uRW52aXJvbm1lbnQoLi4ucGFyYW1zKTtcblxuICAgIHJldHVybiBib290c3RyYXBBcHBsaWNhdGlvbiguLi5hcmdzKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgQVBQTElDQVRJT05fRU5WSVJPTk1FTlQsXG4gICAgaW5qZWN0QXBwbGljYXRpb25FbnZpcm9ubWVudCxcbiAgICBib290c3RyYXBBcHBsaWNhdGlvbldpdGhFbnZpcm9ubWVudCxcbiAgICBsb2FkQXBwbGljYXRpb25FbnZpcm9ubWVudCxcbiAgfTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
export const HTTP_ETAG_HEADER = 'Etag';
|
|
2
|
+
export const HTTP_IF_NONE_MATCH_HEADER = 'If-None-Match';
|
|
3
|
+
export const HTTP_CACHE_CONTROL_HEADER = 'Cache-Control';
|
|
4
|
+
export class CacheStorageClient {
|
|
5
|
+
constructor(cacheKey, cacheStorage = window.caches) {
|
|
6
|
+
this.cacheKey = cacheKey;
|
|
7
|
+
this.cacheStorage = cacheStorage;
|
|
8
|
+
}
|
|
9
|
+
async delete(request) {
|
|
10
|
+
const cache = await this.getCache();
|
|
11
|
+
return cache.delete(request);
|
|
12
|
+
}
|
|
13
|
+
async deleteAll() {
|
|
14
|
+
const cache = await this.getCache();
|
|
15
|
+
for (const key of await cache.keys()) {
|
|
16
|
+
await cache.delete(key);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
async request(requestInfo, shouldDelete = ({ status }) => status >= 400 && status < 500) {
|
|
20
|
+
const cache = await this.getCache();
|
|
21
|
+
const request = await this.prepareRequest(cache, requestInfo);
|
|
22
|
+
const response = await this.sendRequest(cache, request);
|
|
23
|
+
if (response && shouldDelete?.(response)) {
|
|
24
|
+
await cache.delete(request);
|
|
25
|
+
}
|
|
26
|
+
return response?.json() ?? null;
|
|
27
|
+
}
|
|
28
|
+
async getCache() {
|
|
29
|
+
return this.cacheStorage.open(this.cacheKey);
|
|
30
|
+
}
|
|
31
|
+
async prepareRequest(cache, requestInfo) {
|
|
32
|
+
const cachedResponse = await cache.match(requestInfo);
|
|
33
|
+
const etag = cachedResponse?.headers?.get(HTTP_ETAG_HEADER) ?? null;
|
|
34
|
+
const request = new Request(requestInfo);
|
|
35
|
+
if (etag) {
|
|
36
|
+
request.headers.set(HTTP_IF_NONE_MATCH_HEADER, etag);
|
|
37
|
+
}
|
|
38
|
+
return request;
|
|
39
|
+
}
|
|
40
|
+
async sendRequest(cache, request) {
|
|
41
|
+
const response = await fetch(request).catch(() => null);
|
|
42
|
+
const cacheControl = response?.headers?.get(HTTP_CACHE_CONTROL_HEADER);
|
|
43
|
+
if (cacheControl === 'no-cache') {
|
|
44
|
+
await cache.delete(request);
|
|
45
|
+
return response;
|
|
46
|
+
}
|
|
47
|
+
if (response?.ok) {
|
|
48
|
+
await cache.put(request, response).catch(() => null);
|
|
49
|
+
}
|
|
50
|
+
return cache.match(request).then((res) => res ?? null);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGUtc3RvcmFnZS1jbGllbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvdXRpbHMvc3JjL2xpYi9oZWxwZXJzL2NhY2hlLXN0b3JhZ2UtY2xpZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLE1BQU0sQ0FBQztBQUN2QyxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRyxlQUFlLENBQUM7QUFDekQsTUFBTSxDQUFDLE1BQU0seUJBQXlCLEdBQUcsZUFBZSxDQUFDO0FBRXpELE1BQU0sT0FBTyxrQkFBa0I7SUFDN0IsWUFDbUIsUUFBZ0IsRUFDaEIsZUFBZSxNQUFNLENBQUMsTUFBTTtRQUQ1QixhQUFRLEdBQVIsUUFBUSxDQUFRO1FBQ2hCLGlCQUFZLEdBQVosWUFBWSxDQUFnQjtJQUM1QyxDQUFDO0lBRUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUEwQjtRQUM1QyxNQUFNLEtBQUssR0FBRyxNQUFNLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUVwQyxPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVNLEtBQUssQ0FBQyxTQUFTO1FBQ3BCLE1BQU0sS0FBSyxHQUFHLE1BQU0sSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3BDLEtBQUssTUFBTSxHQUFHLElBQUksTUFBTSxLQUFLLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDcEMsTUFBTSxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ3pCO0lBQ0gsQ0FBQztJQUVNLEtBQUssQ0FBQyxPQUFPLENBQUksV0FBOEIsRUFBRSxlQUFlLENBQUMsRUFBRSxNQUFNLEVBQVksRUFBRSxFQUFFLENBQUMsTUFBTSxJQUFJLEdBQUcsSUFBSSxNQUFNLEdBQUcsR0FBRztRQUM1SCxNQUFNLEtBQUssR0FBRyxNQUFNLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNwQyxNQUFNLE9BQU8sR0FBRyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQzlELE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDeEQsSUFBSSxRQUFRLElBQUksWUFBWSxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDeEMsTUFBTSxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQzdCO1FBQ0QsT0FBTyxRQUFRLEVBQUUsSUFBSSxFQUFFLElBQUksSUFBSSxDQUFDO0lBQ2xDLENBQUM7SUFFUyxLQUFLLENBQUMsUUFBUTtRQUN0QixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRVMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxLQUFZLEVBQUUsV0FBOEI7UUFDekUsTUFBTSxjQUFjLEdBQUcsTUFBTSxLQUFLLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3RELE1BQU0sSUFBSSxHQUFHLGNBQWMsRUFBRSxPQUFPLEVBQUUsR0FBRyxDQUFDLGdCQUFnQixDQUFDLElBQUksSUFBSSxDQUFDO1FBQ3BFLE1BQU0sT0FBTyxHQUFHLElBQUksT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3pDLElBQUksSUFBSSxFQUFFO1lBQ1IsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMseUJBQXlCLEVBQUUsSUFBSSxDQUFDLENBQUM7U0FDdEQ7UUFFRCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRVMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxLQUFZLEVBQUUsT0FBZ0I7UUFDeEQsTUFBTSxRQUFRLEdBQUcsTUFBTSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hELE1BQU0sWUFBWSxHQUFHLFFBQVEsRUFBRSxPQUFPLEVBQUUsR0FBRyxDQUFDLHlCQUF5QixDQUFDLENBQUM7UUFDdkUsSUFBSSxZQUFZLEtBQUssVUFBVSxFQUFFO1lBQy9CLE1BQU0sS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUU1QixPQUFPLFFBQVEsQ0FBQztTQUNqQjtRQUNELElBQUksUUFBUSxFQUFFLEVBQUUsRUFBRTtZQUNoQixNQUFNLEtBQUssQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUN0RDtRQUVELE9BQU8sS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsQ0FBQztJQUN6RCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgSFRUUF9FVEFHX0hFQURFUiA9ICdFdGFnJztcbmV4cG9ydCBjb25zdCBIVFRQX0lGX05PTkVfTUFUQ0hfSEVBREVSID0gJ0lmLU5vbmUtTWF0Y2gnO1xuZXhwb3J0IGNvbnN0IEhUVFBfQ0FDSEVfQ09OVFJPTF9IRUFERVIgPSAnQ2FjaGUtQ29udHJvbCc7XG5cbmV4cG9ydCBjbGFzcyBDYWNoZVN0b3JhZ2VDbGllbnQge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNhY2hlS2V5OiBzdHJpbmcsXG4gICAgcHJpdmF0ZSByZWFkb25seSBjYWNoZVN0b3JhZ2UgPSB3aW5kb3cuY2FjaGVzLFxuICApIHt9XG5cbiAgcHVibGljIGFzeW5jIGRlbGV0ZShyZXF1ZXN0OiBSZXF1ZXN0SW5mbyB8IFVSTCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IGNhY2hlID0gYXdhaXQgdGhpcy5nZXRDYWNoZSgpO1xuXG4gICAgcmV0dXJuIGNhY2hlLmRlbGV0ZShyZXF1ZXN0KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBkZWxldGVBbGwoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgY2FjaGUgPSBhd2FpdCB0aGlzLmdldENhY2hlKCk7XG4gICAgZm9yIChjb25zdCBrZXkgb2YgYXdhaXQgY2FjaGUua2V5cygpKSB7XG4gICAgICBhd2FpdCBjYWNoZS5kZWxldGUoa2V5KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcmVxdWVzdDxUPihyZXF1ZXN0SW5mbzogUmVxdWVzdEluZm8gfCBVUkwsIHNob3VsZERlbGV0ZSA9ICh7IHN0YXR1cyB9OiBSZXNwb25zZSkgPT4gc3RhdHVzID49IDQwMCAmJiBzdGF0dXMgPCA1MDApOiBQcm9taXNlPFQgfCBudWxsPiB7XG4gICAgY29uc3QgY2FjaGUgPSBhd2FpdCB0aGlzLmdldENhY2hlKCk7XG4gICAgY29uc3QgcmVxdWVzdCA9IGF3YWl0IHRoaXMucHJlcGFyZVJlcXVlc3QoY2FjaGUsIHJlcXVlc3RJbmZvKTtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuc2VuZFJlcXVlc3QoY2FjaGUsIHJlcXVlc3QpO1xuICAgIGlmIChyZXNwb25zZSAmJiBzaG91bGREZWxldGU/LihyZXNwb25zZSkpIHtcbiAgICAgIGF3YWl0IGNhY2hlLmRlbGV0ZShyZXF1ZXN0KTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3BvbnNlPy5qc29uKCkgPz8gbnVsbDtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBnZXRDYWNoZSgpOiBQcm9taXNlPENhY2hlPiB7XG4gICAgcmV0dXJuIHRoaXMuY2FjaGVTdG9yYWdlLm9wZW4odGhpcy5jYWNoZUtleSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgcHJlcGFyZVJlcXVlc3QoY2FjaGU6IENhY2hlLCByZXF1ZXN0SW5mbzogUmVxdWVzdEluZm8gfCBVUkwpOiBQcm9taXNlPFJlcXVlc3Q+IHtcbiAgICBjb25zdCBjYWNoZWRSZXNwb25zZSA9IGF3YWl0IGNhY2hlLm1hdGNoKHJlcXVlc3RJbmZvKTtcbiAgICBjb25zdCBldGFnID0gY2FjaGVkUmVzcG9uc2U/LmhlYWRlcnM/LmdldChIVFRQX0VUQUdfSEVBREVSKSA/PyBudWxsO1xuICAgIGNvbnN0IHJlcXVlc3QgPSBuZXcgUmVxdWVzdChyZXF1ZXN0SW5mbyk7XG4gICAgaWYgKGV0YWcpIHtcbiAgICAgIHJlcXVlc3QuaGVhZGVycy5zZXQoSFRUUF9JRl9OT05FX01BVENIX0hFQURFUiwgZXRhZyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcXVlc3Q7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgc2VuZFJlcXVlc3QoY2FjaGU6IENhY2hlLCByZXF1ZXN0OiBSZXF1ZXN0KTogUHJvbWlzZTxSZXNwb25zZSB8IG51bGw+IHtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKHJlcXVlc3QpLmNhdGNoKCgpID0+IG51bGwpO1xuICAgIGNvbnN0IGNhY2hlQ29udHJvbCA9IHJlc3BvbnNlPy5oZWFkZXJzPy5nZXQoSFRUUF9DQUNIRV9DT05UUk9MX0hFQURFUik7XG4gICAgaWYgKGNhY2hlQ29udHJvbCA9PT0gJ25vLWNhY2hlJykge1xuICAgICAgYXdhaXQgY2FjaGUuZGVsZXRlKHJlcXVlc3QpO1xuXG4gICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgfVxuICAgIGlmIChyZXNwb25zZT8ub2spIHtcbiAgICAgIGF3YWl0IGNhY2hlLnB1dChyZXF1ZXN0LCByZXNwb25zZSkuY2F0Y2goKCkgPT4gbnVsbCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNhY2hlLm1hdGNoKHJlcXVlc3QpLnRoZW4oKHJlcykgPT4gcmVzID8/IG51bGwpO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export function getLanguageCode(language) {
|
|
2
|
+
const [languageCode] = language.split(/-|_/);
|
|
3
|
+
return languageCode?.toLowerCase();
|
|
4
|
+
}
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LWxhbmd1YWdlLWNvZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvdXRpbHMvc3JjL2xpYi9oZWxwZXJzL2dldC1sYW5ndWFnZS1jb2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sVUFBVSxlQUFlLENBQUMsUUFBZ0I7SUFDOUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7SUFFN0MsT0FBTyxZQUFZLEVBQUUsV0FBVyxFQUFFLENBQUM7QUFDckMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBnZXRMYW5ndWFnZUNvZGUobGFuZ3VhZ2U6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IFtsYW5ndWFnZUNvZGVdID0gbGFuZ3VhZ2Uuc3BsaXQoLy18Xy8pO1xuXG4gIHJldHVybiBsYW5ndWFnZUNvZGU/LnRvTG93ZXJDYXNlKCk7XG59XG4iXX0=
|
|
@@ -2,18 +2,21 @@ export * from './angular';
|
|
|
2
2
|
export * from './array';
|
|
3
3
|
export * from './build-url';
|
|
4
4
|
export * from './build-website-url';
|
|
5
|
+
export * from './cache-storage-client';
|
|
5
6
|
export * from './coercion';
|
|
6
7
|
export * from './debounce';
|
|
7
8
|
export * from './defer-fn';
|
|
8
9
|
export * from './dom';
|
|
9
10
|
export * from './event-manager';
|
|
10
11
|
export * from './get-axis';
|
|
12
|
+
export * from './get-language-code';
|
|
11
13
|
export * from './get-opposite-side';
|
|
12
14
|
export * from './get-side';
|
|
13
15
|
export * from './get-unique-id';
|
|
16
|
+
export * from './match-url';
|
|
14
17
|
export * from './ng-changes';
|
|
15
18
|
export * from './provide-config';
|
|
16
19
|
export * from './queue';
|
|
17
20
|
export * from './type-guards';
|
|
18
21
|
export * from './until-destroyed';
|
|
19
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvdXRpbHMvc3JjL2xpYi9oZWxwZXJzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsV0FBVyxDQUFDO0FBQzFCLGNBQWMsU0FBUyxDQUFDO0FBQ3hCLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLFlBQVksQ0FBQztBQUMzQixjQUFjLFlBQVksQ0FBQztBQUMzQixjQUFjLFlBQVksQ0FBQztBQUMzQixjQUFjLE9BQU8sQ0FBQztBQUN0QixjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsWUFBWSxDQUFDO0FBQzNCLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLFlBQVksQ0FBQztBQUMzQixjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxTQUFTLENBQUM7QUFDeEIsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyxtQkFBbUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYW5ndWxhcic7XG5leHBvcnQgKiBmcm9tICcuL2FycmF5JztcbmV4cG9ydCAqIGZyb20gJy4vYnVpbGQtdXJsJztcbmV4cG9ydCAqIGZyb20gJy4vYnVpbGQtd2Vic2l0ZS11cmwnO1xuZXhwb3J0ICogZnJvbSAnLi9jYWNoZS1zdG9yYWdlLWNsaWVudCc7XG5leHBvcnQgKiBmcm9tICcuL2NvZXJjaW9uJztcbmV4cG9ydCAqIGZyb20gJy4vZGVib3VuY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9kZWZlci1mbic7XG5leHBvcnQgKiBmcm9tICcuL2RvbSc7XG5leHBvcnQgKiBmcm9tICcuL2V2ZW50LW1hbmFnZXInO1xuZXhwb3J0ICogZnJvbSAnLi9nZXQtYXhpcyc7XG5leHBvcnQgKiBmcm9tICcuL2dldC1sYW5ndWFnZS1jb2RlJztcbmV4cG9ydCAqIGZyb20gJy4vZ2V0LW9wcG9zaXRlLXNpZGUnO1xuZXhwb3J0ICogZnJvbSAnLi9nZXQtc2lkZSc7XG5leHBvcnQgKiBmcm9tICcuL2dldC11bmlxdWUtaWQnO1xuZXhwb3J0ICogZnJvbSAnLi9tYXRjaC11cmwnO1xuZXhwb3J0ICogZnJvbSAnLi9uZy1jaGFuZ2VzJztcbmV4cG9ydCAqIGZyb20gJy4vcHJvdmlkZS1jb25maWcnO1xuZXhwb3J0ICogZnJvbSAnLi9xdWV1ZSc7XG5leHBvcnQgKiBmcm9tICcuL3R5cGUtZ3VhcmRzJztcbmV4cG9ydCAqIGZyb20gJy4vdW50aWwtZGVzdHJveWVkJztcbiJdfQ==
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { isString } from './type-guards';
|
|
2
|
+
export function isUrlMatcher(value) {
|
|
3
|
+
return isString(value) || value instanceof RegExp;
|
|
4
|
+
}
|
|
5
|
+
export function matchUrl(url, filter) {
|
|
6
|
+
return isString(filter) ? url.startsWith(filter) : !!url.match(filter);
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0Y2gtdXJsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL3V0aWxzL3NyYy9saWIvaGVscGVycy9tYXRjaC11cmwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6QyxNQUFNLFVBQVUsWUFBWSxDQUFDLEtBQWM7SUFDekMsT0FBTyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxZQUFZLE1BQU0sQ0FBQztBQUNwRCxDQUFDO0FBRUQsTUFBTSxVQUFVLFFBQVEsQ0FBQyxHQUFXLEVBQUUsTUFBdUI7SUFDM0QsT0FBTyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ3pFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc1N0cmluZyB9IGZyb20gJy4vdHlwZS1ndWFyZHMnO1xuXG5leHBvcnQgZnVuY3Rpb24gaXNVcmxNYXRjaGVyKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgc3RyaW5nIHwgUmVnRXhwIHtcbiAgcmV0dXJuIGlzU3RyaW5nKHZhbHVlKSB8fCB2YWx1ZSBpbnN0YW5jZW9mIFJlZ0V4cDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1hdGNoVXJsKHVybDogc3RyaW5nLCBmaWx0ZXI6IHN0cmluZyB8IFJlZ0V4cCk6IGJvb2xlYW4ge1xuICByZXR1cm4gaXNTdHJpbmcoZmlsdGVyKSA/IHVybC5zdGFydHNXaXRoKGZpbHRlcikgOiAhIXVybC5tYXRjaChmaWx0ZXIpO1xufVxuIl19
|
|
@@ -1,12 +1,26 @@
|
|
|
1
1
|
import { inject, InjectionToken } from '@angular/core';
|
|
2
2
|
import { deepmerge } from '@odx/angular/internal';
|
|
3
|
-
export function provideConfig(token, config) {
|
|
3
|
+
export function provideConfig(token, config, transform = () => ({})) {
|
|
4
|
+
const prepareConfig = (value) => deepmerge(value, transform(value));
|
|
4
5
|
if ('useFactory' in config) {
|
|
5
|
-
return {
|
|
6
|
+
return {
|
|
7
|
+
provide: token,
|
|
8
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
9
|
+
useFactory: (...args) => prepareConfig(config.useFactory(...args)),
|
|
10
|
+
deps: config.deps,
|
|
11
|
+
};
|
|
6
12
|
}
|
|
7
|
-
return {
|
|
13
|
+
return {
|
|
14
|
+
provide: token,
|
|
15
|
+
useFactory: () => prepareConfig(config),
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
function mergeConfig(token, defaultValue) {
|
|
19
|
+
const config = inject(token);
|
|
20
|
+
const parentConfig = inject(token, { skipSelf: true, optional: true }) ?? {};
|
|
21
|
+
return deepmerge(defaultValue, parentConfig, config);
|
|
8
22
|
}
|
|
9
|
-
export function createConfigTokens(name, prefix, defaultValue) {
|
|
23
|
+
export function createConfigTokens(name, prefix, defaultValue, transform) {
|
|
10
24
|
const configName = `${name}Config`;
|
|
11
25
|
const defaultConfigName = `${name}DefaultConfig`;
|
|
12
26
|
const injectConfigName = `inject${name}Config`;
|
|
@@ -16,10 +30,8 @@ export function createConfigTokens(name, prefix, defaultValue) {
|
|
|
16
30
|
return {
|
|
17
31
|
[configName]: token,
|
|
18
32
|
[defaultConfigName]: defaultValue,
|
|
19
|
-
[injectConfigName]: () =>
|
|
20
|
-
[provideConfigName]: (config) =>
|
|
21
|
-
return provideConfig(token, config);
|
|
22
|
-
},
|
|
33
|
+
[injectConfigName]: () => mergeConfig(token, defaultValue),
|
|
34
|
+
[provideConfigName]: ((config) => provideConfig(token, config, transform)),
|
|
23
35
|
};
|
|
24
36
|
}
|
|
25
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZS1jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvdXRpbHMvc3JjL2xpYi9oZWxwZXJzL3Byb3ZpZGUtY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBbUIsTUFBTSxFQUFFLGNBQWMsRUFBdUIsTUFBTSxlQUFlLENBQUM7QUFFN0YsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBWWxELE1BQU0sVUFBVSxhQUFhLENBQzNCLEtBQWlDLEVBQ2pDLE1BQTRCLEVBQzVCLFlBQWtDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDO0lBRTVDLE1BQU0sYUFBYSxHQUFHLENBQUMsS0FBaUIsRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNoRixJQUFJLFlBQVksSUFBSSxNQUFNLEVBQUU7UUFDMUIsT0FBTztZQUNMLE9BQU8sRUFBRSxLQUFLO1lBQ2QsOERBQThEO1lBQzlELFVBQVUsRUFBRSxDQUFDLEdBQUcsSUFBZSxFQUFFLEVBQUUsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFJLElBQVksQ0FBQyxDQUFDO1lBQ3RGLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSTtTQUNsQixDQUFDO0tBQ0g7SUFFRCxPQUFPO1FBQ0wsT0FBTyxFQUFFLEtBQUs7UUFDZCxVQUFVLEVBQUUsR0FBRyxFQUFFLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQztLQUN4QyxDQUFDO0FBQ0osQ0FBQztBQUVELFNBQVMsV0FBVyxDQUFJLEtBQWlDLEVBQUUsWUFBZTtJQUN4RSxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0IsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLEtBQUssRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO0lBRTdFLE9BQU8sU0FBUyxDQUFDLFlBQVksRUFBRSxZQUFZLEVBQUUsTUFBTSxDQUFNLENBQUM7QUFDNUQsQ0FBQztBQUVELE1BQU0sVUFBVSxrQkFBa0IsQ0FBc0IsSUFBTyxFQUFFLE1BQWMsRUFBRSxZQUFlLEVBQUUsU0FBZ0M7SUFJaEksTUFBTSxVQUFVLEdBQUcsR0FBRyxJQUFJLFFBQWlCLENBQUM7SUFDNUMsTUFBTSxpQkFBaUIsR0FBRyxHQUFHLElBQUksZUFBd0IsQ0FBQztJQUMxRCxNQUFNLGdCQUFnQixHQUFHLFNBQVMsSUFBSSxRQUFpQixDQUFDO0lBQ3hELE1BQU0saUJBQWlCLEdBQUcsVUFBVSxJQUFJLFFBQWlCLENBQUM7SUFDMUQsTUFBTSxTQUFTLEdBQUcsR0FBRyxNQUFNLEtBQUssVUFBVSxFQUFFLENBQUM7SUFDN0MsTUFBTSxLQUFLLEdBQUcsSUFBSSxjQUFjLENBQWEsU0FBUyxFQUFFLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQztJQUU3RyxPQUFPO1FBQ0wsQ0FBQyxVQUFVLENBQUMsRUFBRSxLQUFLO1FBQ25CLENBQUMsaUJBQWlCLENBQUMsRUFBRSxZQUFZO1FBQ2pDLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLFlBQVksQ0FBQztRQUMxRCxDQUFDLGlCQUFpQixDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsU0FBUyxDQUFDLENBQXFCO0tBSTVDLENBQUM7QUFDdkQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZhY3RvcnlQcm92aWRlciwgaW5qZWN0LCBJbmplY3Rpb25Ub2tlbiwgVHlwZSwgVmFsdWVQcm92aWRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBkZWVwbWVyZ2UgfSBmcm9tICdAb2R4L2FuZ3VsYXIvaW50ZXJuYWwnO1xuXG5pbnRlcmZhY2UgQ29uZmlnRmFjdG9yeVByb3ZpZGVyPFQsIEQgZXh0ZW5kcyBDb25maWdEZXBlbmRlbmNpZXM+IHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgdXNlRmFjdG9yeTogKC4uLmFyZ3M6IHsgW0kgaW4ga2V5b2YgRF06IERbSV0gZXh0ZW5kcyBUeXBlPHVua25vd24+ID8gSW5zdGFuY2VUeXBlPERbSV0+IDogRFtJXSBleHRlbmRzIEluamVjdGlvblRva2VuPHVua25vd24+ID8gYW55IDogbmV2ZXIgfSkgPT4gVDtcbiAgZGVwcz86IFsuLi5EXTtcbn1cblxuZXhwb3J0IHR5cGUgQ29uZmlnRGVwZW5kZW5jaWVzPFQgPSB1bmtub3duPiA9IFJlYWRvbmx5QXJyYXk8VHlwZTxUPiB8IEluamVjdGlvblRva2VuPFQ+PjtcbmV4cG9ydCB0eXBlIENvbmZpZ1Byb3ZpZGVyPFQgPSB1bmtub3duLCBEIGV4dGVuZHMgQ29uZmlnRGVwZW5kZW5jaWVzID0gW10+ID0gQ29uZmlnRmFjdG9yeVByb3ZpZGVyPFQsIEQ+IHwgVDtcbmV4cG9ydCB0eXBlIENvbmZpZ1RyYW5zZm9ybUZuPFQgPSB1bmtub3duPiA9IChjb25maWc6IFBhcnRpYWw8VD4pID0+IFBhcnRpYWw8VD47XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlQ29uZmlnPFQgZXh0ZW5kcyBvYmplY3QsIEQgZXh0ZW5kcyBDb25maWdEZXBlbmRlbmNpZXMgPSBDb25maWdEZXBlbmRlbmNpZXM+KFxuICB0b2tlbjogSW5qZWN0aW9uVG9rZW48VD4gfCBzdHJpbmcsXG4gIGNvbmZpZzogQ29uZmlnUHJvdmlkZXI8VCwgRD4sXG4gIHRyYW5zZm9ybTogQ29uZmlnVHJhbnNmb3JtRm48VD4gPSAoKSA9PiAoe30pLFxuKTogRmFjdG9yeVByb3ZpZGVyIHwgVmFsdWVQcm92aWRlciB7XG4gIGNvbnN0IHByZXBhcmVDb25maWcgPSAodmFsdWU6IFBhcnRpYWw8VD4pID0+IGRlZXBtZXJnZSh2YWx1ZSwgdHJhbnNmb3JtKHZhbHVlKSk7XG4gIGlmICgndXNlRmFjdG9yeScgaW4gY29uZmlnKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHByb3ZpZGU6IHRva2VuLFxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICAgIHVzZUZhY3Rvcnk6ICguLi5hcmdzOiB1bmtub3duW10pID0+IHByZXBhcmVDb25maWcoY29uZmlnLnVzZUZhY3RvcnkoLi4uKGFyZ3MgYXMgYW55KSkpLFxuICAgICAgZGVwczogY29uZmlnLmRlcHMsXG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgcHJvdmlkZTogdG9rZW4sXG4gICAgdXNlRmFjdG9yeTogKCkgPT4gcHJlcGFyZUNvbmZpZyhjb25maWcpLFxuICB9O1xufVxuXG5mdW5jdGlvbiBtZXJnZUNvbmZpZzxUPih0b2tlbjogSW5qZWN0aW9uVG9rZW48UGFydGlhbDxUPj4sIGRlZmF1bHRWYWx1ZTogVCk6IFBhcnRpYWw8VD4ge1xuICBjb25zdCBjb25maWcgPSBpbmplY3QodG9rZW4pO1xuICBjb25zdCBwYXJlbnRDb25maWcgPSBpbmplY3QodG9rZW4sIHsgc2tpcFNlbGY6IHRydWUsIG9wdGlvbmFsOiB0cnVlIH0pID8/IHt9O1xuXG4gIHJldHVybiBkZWVwbWVyZ2UoZGVmYXVsdFZhbHVlLCBwYXJlbnRDb25maWcsIGNvbmZpZykgYXMgVDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUNvbmZpZ1Rva2VuczxULCBOIGV4dGVuZHMgc3RyaW5nPihuYW1lOiBOLCBwcmVmaXg6IHN0cmluZywgZGVmYXVsdFZhbHVlOiBULCB0cmFuc2Zvcm0/OiBDb25maWdUcmFuc2Zvcm1GbjxUPikge1xuICB0eXBlIENvbmZpZ1Byb3ZpZGVyRm4gPSA8RCBleHRlbmRzIENvbmZpZ0RlcGVuZGVuY2llcyA9IENvbmZpZ0RlcGVuZGVuY2llczxQYXJ0aWFsPFQ+Pj4oXG4gICAgY29uZmlnOiBDb25maWdQcm92aWRlcjxQYXJ0aWFsPFQ+LCBEPixcbiAgKSA9PiBGYWN0b3J5UHJvdmlkZXIgfCBWYWx1ZVByb3ZpZGVyO1xuICBjb25zdCBjb25maWdOYW1lID0gYCR7bmFtZX1Db25maWdgIGFzIGNvbnN0O1xuICBjb25zdCBkZWZhdWx0Q29uZmlnTmFtZSA9IGAke25hbWV9RGVmYXVsdENvbmZpZ2AgYXMgY29uc3Q7XG4gIGNvbnN0IGluamVjdENvbmZpZ05hbWUgPSBgaW5qZWN0JHtuYW1lfUNvbmZpZ2AgYXMgY29uc3Q7XG4gIGNvbnN0IHByb3ZpZGVDb25maWdOYW1lID0gYHByb3ZpZGUke25hbWV9Q29uZmlnYCBhcyBjb25zdDtcbiAgY29uc3QgdG9rZW5OYW1lID0gYCR7cHJlZml4fTo6JHtjb25maWdOYW1lfWA7XG4gIGNvbnN0IHRva2VuID0gbmV3IEluamVjdGlvblRva2VuPFBhcnRpYWw8VD4+KHRva2VuTmFtZSwgeyBwcm92aWRlZEluOiAncm9vdCcsIGZhY3Rvcnk6ICgpID0+IGRlZmF1bHRWYWx1ZSB9KTtcblxuICByZXR1cm4ge1xuICAgIFtjb25maWdOYW1lXTogdG9rZW4sXG4gICAgW2RlZmF1bHRDb25maWdOYW1lXTogZGVmYXVsdFZhbHVlLFxuICAgIFtpbmplY3RDb25maWdOYW1lXTogKCkgPT4gbWVyZ2VDb25maWcodG9rZW4sIGRlZmF1bHRWYWx1ZSksXG4gICAgW3Byb3ZpZGVDb25maWdOYW1lXTogKChjb25maWcpID0+IHByb3ZpZGVDb25maWcodG9rZW4sIGNvbmZpZywgdHJhbnNmb3JtKSkgYXMgQ29uZmlnUHJvdmlkZXJGbixcbiAgfSBhcyBSZWNvcmQ8dHlwZW9mIGNvbmZpZ05hbWUsIEluamVjdGlvblRva2VuPFBhcnRpYWw8VD4+PiAmXG4gICAgUmVjb3JkPHR5cGVvZiBkZWZhdWx0Q29uZmlnTmFtZSwgVD4gJlxuICAgIFJlY29yZDx0eXBlb2YgaW5qZWN0Q29uZmlnTmFtZSwgKCkgPT4gVD4gJlxuICAgIFJlY29yZDx0eXBlb2YgcHJvdmlkZUNvbmZpZ05hbWUsIENvbmZpZ1Byb3ZpZGVyRm4+O1xufVxuIl19
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { __decorate } from 'tslib';
|
|
2
|
+
import * as i0 from '@angular/core';
|
|
3
|
+
import { makeEnvironmentProviders, Component, ChangeDetectionStrategy, ViewEncapsulation } from '@angular/core';
|
|
4
|
+
import { CoreModule } from '@odx/angular';
|
|
5
|
+
import { DynamicViewDirective } from '@odx/angular/cdk/dynamic-view';
|
|
6
|
+
import { ButtonComponent } from '@odx/angular/components/button';
|
|
7
|
+
import { IconComponent } from '@odx/angular/components/icon';
|
|
8
|
+
import { LogoDirective } from '@odx/angular/components/logo';
|
|
9
|
+
import { CSSComponent } from '@odx/angular/internal';
|
|
10
|
+
import { createConfigTokens, injectElement } from '@odx/angular/utils';
|
|
11
|
+
import * as i1 from '@angular/common';
|
|
12
|
+
|
|
13
|
+
const { ErrorPageConfig, ErrorPageDefaultConfig, injectErrorPageConfig, provideErrorPageConfig } = createConfigTokens('ErrorPage', '@odx/components/error-page', {
|
|
14
|
+
title: '',
|
|
15
|
+
actions: [],
|
|
16
|
+
});
|
|
17
|
+
function configureErrorPage(config) {
|
|
18
|
+
return makeEnvironmentProviders([provideErrorPageConfig(config)]);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
let ErrorPageComponent = class ErrorPageComponent {
|
|
22
|
+
constructor() {
|
|
23
|
+
this.element = injectElement();
|
|
24
|
+
this.options = injectErrorPageConfig();
|
|
25
|
+
}
|
|
26
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ErrorPageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
27
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ErrorPageComponent, isStandalone: true, selector: "odx-error-page", ngImport: i0, template: "<div class=\"odx-error-page__container\">\n <div class=\"odx-error-page__icon-container\">\n <odx-icon *ngIf=\"options.icon as icon; else logo\" size=\"xlarge\" [name]=\"icon\"></odx-icon>\n <ng-template #logo><odx-logo size=\"large\"></odx-logo></ng-template>\n </div>\n <div class=\"odx-error-page__title\">{{ options.title }}</div>\n <div *ngIf=\"options.description as description\" class=\"odx-error-page__description\">\n <ng-template [odxDynamicView]=\"description\"></ng-template>\n </div>\n <div class=\"odx-error-page__actions\">\n <button *ngFor=\"let button of options.actions; let isFirst = first\" [variant]=\"isFirst ? 'primary' : 'secondary'\" odxButton (click)=\"button.action()\">\n {{ button.label }}\n </button>\n </div>\n</div>\n<div *ngIf=\"options.errorMessage as errorMessage\" class=\"odx-error-page__footer\">{{ errorMessage }}</div>\n", dependencies: [{ kind: "directive", type: LogoDirective, selector: "odx-logo", inputs: ["size", "variant"] }, { kind: "component", type: IconComponent, selector: "odx-icon", inputs: ["inline", "size", "name", "iconSet"] }, { kind: "ngmodule", type: CoreModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ButtonComponent, selector: "button[odxButton], a[odxButton]", inputs: ["variant", "size"] }, { kind: "directive", type: DynamicViewDirective, selector: "ng-template[odxDynamicView]", inputs: ["odxDynamicView", "odxDynamicViewInjector", "odxDynamicViewContext"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
28
|
+
};
|
|
29
|
+
ErrorPageComponent = __decorate([
|
|
30
|
+
CSSComponent('error-page')
|
|
31
|
+
], ErrorPageComponent);
|
|
32
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ErrorPageComponent, decorators: [{
|
|
33
|
+
type: Component,
|
|
34
|
+
args: [{ standalone: true, selector: 'odx-error-page', imports: [LogoDirective, IconComponent, CoreModule, ButtonComponent, DynamicViewDirective], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div class=\"odx-error-page__container\">\n <div class=\"odx-error-page__icon-container\">\n <odx-icon *ngIf=\"options.icon as icon; else logo\" size=\"xlarge\" [name]=\"icon\"></odx-icon>\n <ng-template #logo><odx-logo size=\"large\"></odx-logo></ng-template>\n </div>\n <div class=\"odx-error-page__title\">{{ options.title }}</div>\n <div *ngIf=\"options.description as description\" class=\"odx-error-page__description\">\n <ng-template [odxDynamicView]=\"description\"></ng-template>\n </div>\n <div class=\"odx-error-page__actions\">\n <button *ngFor=\"let button of options.actions; let isFirst = first\" [variant]=\"isFirst ? 'primary' : 'secondary'\" odxButton (click)=\"button.action()\">\n {{ button.label }}\n </button>\n </div>\n</div>\n<div *ngIf=\"options.errorMessage as errorMessage\" class=\"odx-error-page__footer\">{{ errorMessage }}</div>\n" }]
|
|
35
|
+
}] });
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Generated bundle index. Do not edit.
|
|
39
|
+
*/
|
|
40
|
+
|
|
41
|
+
export { ErrorPageComponent, ErrorPageConfig, ErrorPageDefaultConfig, configureErrorPage, injectErrorPageConfig, provideErrorPageConfig };
|
|
42
|
+
//# sourceMappingURL=odx-angular-components-error-page.mjs.map
|