@odx/angular 4.1.0 → 5.0.1

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.
Files changed (117) hide show
  1. package/CHANGELOG.md +23 -1
  2. package/breakpoints/lib/breakpoints.config.d.ts +1 -1
  3. package/components/calendar/lib/calendar.config.d.ts +2 -2
  4. package/components/datepicker/lib/datepicker.config.d.ts +2 -2
  5. package/components/error-page/lib/error-page.config.d.ts +1 -1
  6. package/components/form-field/lib/form-field.config.d.ts +1 -1
  7. package/components/icon/lib/icon.config.d.ts +1 -1
  8. package/components/main-menu/lib/main-menu.config.d.ts +1 -1
  9. package/components/main-menu/lib/main-menu.i18n.d.ts +2 -2
  10. package/components/modal/lib/modal.config.d.ts +1 -1
  11. package/components/paginator/lib/paginator.config.d.ts +2 -2
  12. package/components/toast/lib/toast.config.d.ts +1 -1
  13. package/esm2022/components/main-menu/lib/main-menu.i18n.mjs +1 -1
  14. package/esm2022/index.mjs +1 -2
  15. package/esm2022/internal/index.mjs +4 -3
  16. package/esm2022/internal/lib/decorators/css-component.mjs +19 -0
  17. package/esm2022/internal/lib/decorators/css-modifier.mjs +49 -0
  18. package/esm2022/internal/lib/decorators/index.mjs +3 -0
  19. package/esm2022/internal/lib/helpers/camel-to-kebab-case.mjs +12 -0
  20. package/esm2022/internal/lib/helpers/decorator-property-name.mjs +4 -0
  21. package/esm2022/internal/lib/helpers/deepmerge.mjs +6 -0
  22. package/esm2022/internal/lib/helpers/get-css-variables.mjs +22 -0
  23. package/esm2022/internal/lib/helpers/get-enum-values.mjs +6 -0
  24. package/esm2022/internal/lib/helpers/index.mjs +6 -0
  25. package/esm2022/internal/lib/logger.mjs +42 -0
  26. package/esm2022/internal/translate/index.mjs +1 -3
  27. package/esm2022/internal/translate/lib/models/index.mjs +2 -2
  28. package/esm2022/internal/translate/lib/models/translation-object.mjs +2 -0
  29. package/esm2022/internal/translate/lib/translate.config.mjs +1 -8
  30. package/esm2022/internal/translate/lib/translate.service.mjs +19 -12
  31. package/esm2022/lib/services/window-ref.mjs +4 -3
  32. package/esm2022/localization/index.mjs +6 -0
  33. package/esm2022/localization/lib/features/index.mjs +3 -0
  34. package/esm2022/localization/lib/features/with-http-language-header.mjs +23 -0
  35. package/esm2022/localization/lib/features/with-http-language-query-param.mjs +23 -0
  36. package/esm2022/localization/lib/loaders/browser-language-loader.mjs +6 -0
  37. package/esm2022/localization/lib/loaders/index.mjs +2 -0
  38. package/esm2022/localization/lib/localization.config.mjs +21 -0
  39. package/esm2022/localization/lib/localization.service.mjs +45 -0
  40. package/esm2022/localization/lib/models/index.mjs +3 -0
  41. package/esm2022/localization/lib/models/language-loader-fn.mjs +2 -0
  42. package/esm2022/localization/lib/models/localization-feature.mjs +4 -0
  43. package/esm2022/localization/odx-angular-localization.mjs +5 -0
  44. package/esm2022/sdk/lib/application-environment.mjs +4 -2
  45. package/esm2022/utils/lib/helpers/cache-storage-client.mjs +53 -0
  46. package/esm2022/utils/lib/helpers/get-language-code.mjs +5 -0
  47. package/esm2022/utils/lib/helpers/index.mjs +4 -1
  48. package/esm2022/utils/lib/helpers/match-url.mjs +8 -0
  49. package/esm2022/utils/lib/helpers/provide-config.mjs +21 -9
  50. package/fesm2022/odx-angular-components-main-menu.mjs.map +1 -1
  51. package/fesm2022/odx-angular-internal-translate.mjs +27 -44
  52. package/fesm2022/odx-angular-internal-translate.mjs.map +1 -1
  53. package/fesm2022/odx-angular-internal.mjs +43 -1
  54. package/fesm2022/odx-angular-internal.mjs.map +1 -1
  55. package/fesm2022/odx-angular-localization.mjs +113 -0
  56. package/fesm2022/odx-angular-localization.mjs.map +1 -0
  57. package/fesm2022/odx-angular-sdk.mjs +3 -1
  58. package/fesm2022/odx-angular-sdk.mjs.map +1 -1
  59. package/fesm2022/odx-angular-utils.mjs +86 -9
  60. package/fesm2022/odx-angular-utils.mjs.map +1 -1
  61. package/fesm2022/odx-angular.mjs +3 -4
  62. package/fesm2022/odx-angular.mjs.map +1 -1
  63. package/index.d.ts +0 -1
  64. package/internal/index.d.ts +3 -2
  65. package/internal/lib/logger.d.ts +15 -0
  66. package/internal/translate/index.d.ts +0 -2
  67. package/internal/translate/lib/models/index.d.ts +1 -1
  68. package/internal/translate/lib/models/translation-object.d.ts +1 -0
  69. package/internal/translate/lib/translate.config.d.ts +2 -5
  70. package/internal/translate/lib/translate.service.d.ts +5 -6
  71. package/localization/README.md +3 -0
  72. package/localization/index.d.ts +5 -0
  73. package/localization/lib/features/index.d.ts +2 -0
  74. package/localization/lib/features/with-http-language-header.d.ts +9 -0
  75. package/localization/lib/features/with-http-language-query-param.d.ts +9 -0
  76. package/localization/lib/loaders/browser-language-loader.d.ts +2 -0
  77. package/localization/lib/loaders/index.d.ts +1 -0
  78. package/localization/lib/localization.config.d.ts +9 -0
  79. package/localization/lib/localization.service.d.ts +15 -0
  80. package/localization/lib/models/index.d.ts +2 -0
  81. package/localization/lib/models/language-loader-fn.d.ts +2 -0
  82. package/localization/lib/models/localization-feature.d.ts +5 -0
  83. package/package.json +7 -1
  84. package/sdk/lib/application-environment.d.ts +2 -1
  85. package/theming/lib/theming.config.d.ts +1 -1
  86. package/utils/lib/helpers/cache-storage-client.d.ts +14 -0
  87. package/utils/lib/helpers/index.d.ts +3 -0
  88. package/utils/lib/helpers/match-url.d.ts +2 -0
  89. package/utils/lib/helpers/provide-config.d.ts +3 -2
  90. package/esm2022/internal/decorators/css-component.mjs +0 -19
  91. package/esm2022/internal/decorators/css-modifier.mjs +0 -49
  92. package/esm2022/internal/decorators/index.mjs +0 -3
  93. package/esm2022/internal/helpers/camel-to-kebab-case.mjs +0 -12
  94. package/esm2022/internal/helpers/decorator-property-name.mjs +0 -4
  95. package/esm2022/internal/helpers/deepmerge.mjs +0 -6
  96. package/esm2022/internal/helpers/get-css-variables.mjs +0 -22
  97. package/esm2022/internal/helpers/get-enum-values.mjs +0 -6
  98. package/esm2022/internal/helpers/index.mjs +0 -6
  99. package/esm2022/internal/translate/lib/helpers/get-language-code.mjs +0 -6
  100. package/esm2022/internal/translate/lib/helpers/index.mjs +0 -2
  101. package/esm2022/internal/translate/lib/models/translation.mjs +0 -2
  102. package/esm2022/internal/translate/lib/services/index.mjs +0 -2
  103. package/esm2022/internal/translate/lib/services/language.service.mjs +0 -21
  104. package/internal/translate/lib/helpers/index.d.ts +0 -1
  105. package/internal/translate/lib/models/translation.d.ts +0 -2
  106. package/internal/translate/lib/services/index.d.ts +0 -1
  107. package/internal/translate/lib/services/language.service.d.ts +0 -8
  108. /package/internal/{decorators → lib/decorators}/css-component.d.ts +0 -0
  109. /package/internal/{decorators → lib/decorators}/css-modifier.d.ts +0 -0
  110. /package/internal/{decorators → lib/decorators}/index.d.ts +0 -0
  111. /package/internal/{helpers → lib/helpers}/camel-to-kebab-case.d.ts +0 -0
  112. /package/internal/{helpers → lib/helpers}/decorator-property-name.d.ts +0 -0
  113. /package/internal/{helpers → lib/helpers}/deepmerge.d.ts +0 -0
  114. /package/internal/{helpers → lib/helpers}/get-css-variables.d.ts +0 -0
  115. /package/internal/{helpers → lib/helpers}/get-enum-values.d.ts +0 -0
  116. /package/internal/{helpers → lib/helpers}/index.d.ts +0 -0
  117. /package/{internal/translate → utils}/lib/helpers/get-language-code.d.ts +0 -0
@@ -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
- return (...args) => fetch(...args).then((res) => handler(res));
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbGljYXRpb24tZW52aXJvbm1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvc2RrL3NyYy9saWIvYXBwbGljYXRpb24tZW52aXJvbm1lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFrQixNQUFNLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBSWpFLE1BQU0sVUFBVSxzQ0FBc0MsQ0FDcEQsT0FBeUM7SUFFekMsT0FBTyxDQUFDLEdBQUcsSUFBOEIsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUMzRixDQUFDO0FBRUQsTUFBTSxVQUFVLDRCQUE0QixDQUFpQyxNQUFrRDtJQUM3SCxJQUFJLFdBQWlCLENBQUM7SUFDdEIsTUFBTSx1QkFBdUIsR0FBRyxJQUFJLGNBQWMsQ0FBTywwQ0FBMEMsRUFBRTtRQUNuRyxVQUFVLEVBQUUsTUFBTTtRQUNsQixPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsV0FBbUI7S0FDbkMsQ0FBQyxDQUFDO0lBRUgsU0FBUyw0QkFBNEI7UUFDbkMsT0FBTyxNQUFNLENBQUMsdUJBQXVCLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQsS0FBSyxVQUFVLDBCQUEwQixDQUFDLEdBQUcsSUFBK0I7UUFDMUUsV0FBVyxHQUFHLE1BQU0sTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFDcEMsSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNoQixNQUFNLElBQUksS0FBSyxDQUFDLHdEQUF3RCxDQUFDLENBQUM7U0FDM0U7UUFDRCxPQUFPLFdBQVcsQ0FBQztJQUNyQixDQUFDO0lBRUQsS0FBSyxVQUFVLG1DQUFtQyxDQUNoRCxNQUFpQyxFQUNqQyxHQUFHLElBQTZDO1FBRWhELE1BQU0sMEJBQTBCLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQztRQUU1QyxPQUFPLG9CQUFvQixDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELE9BQU87UUFDTCx1QkFBdUI7UUFDdkIsNEJBQTRCO1FBQzVCLG1DQUFtQztRQUNuQywwQkFBMEI7S0FDM0IsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBcHBsaWNhdGlvblJlZiwgaW5qZWN0LCBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgYm9vdHN0cmFwQXBwbGljYXRpb24gfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcblxuZXhwb3J0IHR5cGUgQXBwbGljYXRpb25FbnZpcm9ubWVudExvYWRlcjxFbnZpcm9ubWVudERhdGEsIFBhcmFtcyBleHRlbmRzIHVua25vd25bXT4gPSAoLi4uYXJnczogUGFyYW1zKSA9PiBQcm9taXNlPEVudmlyb25tZW50RGF0YT47XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVIdHRwQXBwbGljYXRpb25FbnZpcm9ubWVudExvYWRlcjxEYXRhPihcbiAgaGFuZGxlcjogKHJlczogUmVzcG9uc2UpID0+IFByb21pc2U8RGF0YT4sXG4pOiBBcHBsaWNhdGlvbkVudmlyb25tZW50TG9hZGVyPERhdGEsIFBhcmFtZXRlcnM8dHlwZW9mIGZldGNoPj4ge1xuICByZXR1cm4gKC4uLmFyZ3M6IFBhcmFtZXRlcnM8dHlwZW9mIGZldGNoPikgPT4gZmV0Y2goLi4uYXJncykudGhlbigocmVzKSA9PiBoYW5kbGVyKHJlcykpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQXBwbGljYXRpb25FbnZpcm9ubWVudDxEYXRhLCBQYXJhbXMgZXh0ZW5kcyB1bmtub3duW10+KGxvYWRlcjogQXBwbGljYXRpb25FbnZpcm9ubWVudExvYWRlcjxEYXRhLCBQYXJhbXM+KSB7XG4gIGxldCBlbnZpcm9ubWVudDogRGF0YTtcbiAgY29uc3QgQVBQTElDQVRJT05fRU5WSVJPTk1FTlQgPSBuZXcgSW5qZWN0aW9uVG9rZW48RGF0YT4oJ0BvZHgvYW5ndWxhci9zZGs6OkFwcGxpY2F0aW9uRW52aXJvbm1lbnQnLCB7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxuICAgIGZhY3Rvcnk6ICgpID0+IGVudmlyb25tZW50IGFzIERhdGEsXG4gIH0pO1xuXG4gIGZ1bmN0aW9uIGluamVjdEFwcGxpY2F0aW9uRW52aXJvbm1lbnQoKTogRGF0YSB7XG4gICAgcmV0dXJuIGluamVjdChBUFBMSUNBVElPTl9FTlZJUk9OTUVOVCk7XG4gIH1cblxuICBhc3luYyBmdW5jdGlvbiBsb2FkQXBwbGljYXRpb25FbnZpcm9ubWVudCguLi5hcmdzOiBQYXJhbWV0ZXJzPHR5cGVvZiBsb2FkZXI+KTogUHJvbWlzZTxEYXRhPiB7XG4gICAgZW52aXJvbm1lbnQgPSBhd2FpdCBsb2FkZXIoLi4uYXJncyk7XG4gICAgaWYgKCFlbnZpcm9ubWVudCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdbQG9keC9hbmd1bGFyL3Nka10gRmFpbGVkIGxvYWQgYXBwbGljYXRpb24gZW52aXJvbm1lbnQnKTtcbiAgICB9XG4gICAgcmV0dXJuIGVudmlyb25tZW50O1xuICB9XG5cbiAgYXN5bmMgZnVuY3Rpb24gYm9vdHN0cmFwQXBwbGljYXRpb25XaXRoRW52aXJvbm1lbnQoXG4gICAgcGFyYW1zOiBQYXJhbWV0ZXJzPHR5cGVvZiBsb2FkZXI+LFxuICAgIC4uLmFyZ3M6IFBhcmFtZXRlcnM8dHlwZW9mIGJvb3RzdHJhcEFwcGxpY2F0aW9uPlxuICApOiBQcm9taXNlPEFwcGxpY2F0aW9uUmVmPiB7XG4gICAgYXdhaXQgbG9hZEFwcGxpY2F0aW9uRW52aXJvbm1lbnQoLi4ucGFyYW1zKTtcblxuICAgIHJldHVybiBib290c3RyYXBBcHBsaWNhdGlvbiguLi5hcmdzKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgQVBQTElDQVRJT05fRU5WSVJPTk1FTlQsXG4gICAgaW5qZWN0QXBwbGljYXRpb25FbnZpcm9ubWVudCxcbiAgICBib290c3RyYXBBcHBsaWNhdGlvbldpdGhFbnZpcm9ubWVudCxcbiAgICBsb2FkQXBwbGljYXRpb25FbnZpcm9ubWVudCxcbiAgfTtcbn1cbiJdfQ==
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvdXRpbHMvc3JjL2xpYi9oZWxwZXJzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsV0FBVyxDQUFDO0FBQzFCLGNBQWMsU0FBUyxDQUFDO0FBQ3hCLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxZQUFZLENBQUM7QUFDM0IsY0FBYyxZQUFZLENBQUM7QUFDM0IsY0FBYyxZQUFZLENBQUM7QUFDM0IsY0FBYyxPQUFPLENBQUM7QUFDdEIsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLFlBQVksQ0FBQztBQUMzQixjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsWUFBWSxDQUFDO0FBQzNCLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLFNBQVMsQ0FBQztBQUN4QixjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLG1CQUFtQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9hbmd1bGFyJztcbmV4cG9ydCAqIGZyb20gJy4vYXJyYXknO1xuZXhwb3J0ICogZnJvbSAnLi9idWlsZC11cmwnO1xuZXhwb3J0ICogZnJvbSAnLi9idWlsZC13ZWJzaXRlLXVybCc7XG5leHBvcnQgKiBmcm9tICcuL2NvZXJjaW9uJztcbmV4cG9ydCAqIGZyb20gJy4vZGVib3VuY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9kZWZlci1mbic7XG5leHBvcnQgKiBmcm9tICcuL2RvbSc7XG5leHBvcnQgKiBmcm9tICcuL2V2ZW50LW1hbmFnZXInO1xuZXhwb3J0ICogZnJvbSAnLi9nZXQtYXhpcyc7XG5leHBvcnQgKiBmcm9tICcuL2dldC1vcHBvc2l0ZS1zaWRlJztcbmV4cG9ydCAqIGZyb20gJy4vZ2V0LXNpZGUnO1xuZXhwb3J0ICogZnJvbSAnLi9nZXQtdW5pcXVlLWlkJztcbmV4cG9ydCAqIGZyb20gJy4vbmctY2hhbmdlcyc7XG5leHBvcnQgKiBmcm9tICcuL3Byb3ZpZGUtY29uZmlnJztcbmV4cG9ydCAqIGZyb20gJy4vcXVldWUnO1xuZXhwb3J0ICogZnJvbSAnLi90eXBlLWd1YXJkcyc7XG5leHBvcnQgKiBmcm9tICcuL3VudGlsLWRlc3Ryb3llZCc7XG4iXX0=
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 { provide: token, useFactory: config.useFactory, deps: config.deps };
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 { provide: token, useValue: config };
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]: () => deepmerge(defaultValue, inject(token, { skipSelf: true, optional: true }) ?? {}, inject(token)),
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZS1jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvdXRpbHMvc3JjL2xpYi9oZWxwZXJzL3Byb3ZpZGUtY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBbUIsTUFBTSxFQUFFLGNBQWMsRUFBdUIsTUFBTSxlQUFlLENBQUM7QUFFN0YsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBV2xELE1BQU0sVUFBVSxhQUFhLENBQzNCLEtBQWlDLEVBQ2pDLE1BQTRCO0lBRTVCLElBQUksWUFBWSxJQUFJLE1BQU0sRUFBRTtRQUMxQixPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSxDQUFDLFVBQVUsRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO0tBQzdFO0lBQ0QsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxDQUFDO0FBQzlDLENBQUM7QUFFRCxNQUFNLFVBQVUsa0JBQWtCLENBQXNCLElBQU8sRUFBRSxNQUFjLEVBQUUsWUFBZTtJQUc5RixNQUFNLFVBQVUsR0FBRyxHQUFHLElBQUksUUFBaUIsQ0FBQztJQUM1QyxNQUFNLGlCQUFpQixHQUFHLEdBQUcsSUFBSSxlQUF3QixDQUFDO0lBQzFELE1BQU0sZ0JBQWdCLEdBQUcsU0FBUyxJQUFJLFFBQWlCLENBQUM7SUFDeEQsTUFBTSxpQkFBaUIsR0FBRyxVQUFVLElBQUksUUFBaUIsQ0FBQztJQUMxRCxNQUFNLFNBQVMsR0FBRyxHQUFHLE1BQU0sS0FBSyxVQUFVLEVBQUUsQ0FBQztJQUM3QyxNQUFNLEtBQUssR0FBRyxJQUFJLGNBQWMsQ0FBYSxTQUFTLEVBQUUsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDO0lBRTdHLE9BQU87UUFDTCxDQUFDLFVBQVUsQ0FBQyxFQUFFLEtBQUs7UUFDbkIsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLFlBQVk7UUFDakMsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxZQUFZLEVBQUUsTUFBTSxDQUFDLEtBQUssRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6SCxDQUFDLGlCQUFpQixDQUFDLEVBQUUsQ0FBQyxNQUF5QixFQUFFLEVBQUU7WUFDakQsT0FBTyxhQUFhLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ3RDLENBQUM7S0FJaUQsQ0FBQztBQUN2RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmFjdG9yeVByb3ZpZGVyLCBpbmplY3QsIEluamVjdGlvblRva2VuLCBUeXBlLCBWYWx1ZVByb3ZpZGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IGRlZXBtZXJnZSB9IGZyb20gJ0BvZHgvYW5ndWxhci9pbnRlcm5hbCc7XG5cbmludGVyZmFjZSBDb25maWdGYWN0b3J5UHJvdmlkZXI8VCwgRCBleHRlbmRzIENvbmZpZ0RlcGVuZGVuY2llcz4ge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICB1c2VGYWN0b3J5OiAoLi4uYXJnczogeyBbSSBpbiBrZXlvZiBEXTogRFtJXSBleHRlbmRzIFR5cGU8dW5rbm93bj4gPyBJbnN0YW5jZVR5cGU8RFtJXT4gOiBEW0ldIGV4dGVuZHMgSW5qZWN0aW9uVG9rZW48dW5rbm93bj4gPyBhbnkgOiBuZXZlciB9KSA9PiBUO1xuICBkZXBzPzogWy4uLkRdO1xufVxuXG5leHBvcnQgdHlwZSBDb25maWdEZXBlbmRlbmNpZXM8VCA9IHVua25vd24+ID0gUmVhZG9ubHlBcnJheTxUeXBlPFQ+IHwgSW5qZWN0aW9uVG9rZW48VD4+O1xuZXhwb3J0IHR5cGUgQ29uZmlnUHJvdmlkZXI8VCA9IHVua25vd24sIEQgZXh0ZW5kcyBDb25maWdEZXBlbmRlbmNpZXMgPSBbXT4gPSBDb25maWdGYWN0b3J5UHJvdmlkZXI8VCwgRD4gfCBUO1xuXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZUNvbmZpZzxUIGV4dGVuZHMgb2JqZWN0LCBEIGV4dGVuZHMgQ29uZmlnRGVwZW5kZW5jaWVzID0gQ29uZmlnRGVwZW5kZW5jaWVzPihcbiAgdG9rZW46IEluamVjdGlvblRva2VuPFQ+IHwgc3RyaW5nLFxuICBjb25maWc6IENvbmZpZ1Byb3ZpZGVyPFQsIEQ+XG4pOiBGYWN0b3J5UHJvdmlkZXIgfCBWYWx1ZVByb3ZpZGVyIHtcbiAgaWYgKCd1c2VGYWN0b3J5JyBpbiBjb25maWcpIHtcbiAgICByZXR1cm4geyBwcm92aWRlOiB0b2tlbiwgdXNlRmFjdG9yeTogY29uZmlnLnVzZUZhY3RvcnksIGRlcHM6IGNvbmZpZy5kZXBzIH07XG4gIH1cbiAgcmV0dXJuIHsgcHJvdmlkZTogdG9rZW4sIHVzZVZhbHVlOiBjb25maWcgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUNvbmZpZ1Rva2VuczxULCBOIGV4dGVuZHMgc3RyaW5nPihuYW1lOiBOLCBwcmVmaXg6IHN0cmluZywgZGVmYXVsdFZhbHVlOiBUKSB7XG4gIHR5cGUgQ29uZmlnUHJvdmlkZXJGbiA9IDxEIGV4dGVuZHMgQ29uZmlnRGVwZW5kZW5jaWVzID0gQ29uZmlnRGVwZW5kZW5jaWVzPFQ+Pihjb25maWc6IENvbmZpZ1Byb3ZpZGVyPFBhcnRpYWw8VD4sIEQ+KSA9PiBGYWN0b3J5UHJvdmlkZXIgfCBWYWx1ZVByb3ZpZGVyO1xuXG4gIGNvbnN0IGNvbmZpZ05hbWUgPSBgJHtuYW1lfUNvbmZpZ2AgYXMgY29uc3Q7XG4gIGNvbnN0IGRlZmF1bHRDb25maWdOYW1lID0gYCR7bmFtZX1EZWZhdWx0Q29uZmlnYCBhcyBjb25zdDtcbiAgY29uc3QgaW5qZWN0Q29uZmlnTmFtZSA9IGBpbmplY3Qke25hbWV9Q29uZmlnYCBhcyBjb25zdDtcbiAgY29uc3QgcHJvdmlkZUNvbmZpZ05hbWUgPSBgcHJvdmlkZSR7bmFtZX1Db25maWdgIGFzIGNvbnN0O1xuICBjb25zdCB0b2tlbk5hbWUgPSBgJHtwcmVmaXh9Ojoke2NvbmZpZ05hbWV9YDtcbiAgY29uc3QgdG9rZW4gPSBuZXcgSW5qZWN0aW9uVG9rZW48UGFydGlhbDxUPj4odG9rZW5OYW1lLCB7IHByb3ZpZGVkSW46ICdyb290JywgZmFjdG9yeTogKCkgPT4gZGVmYXVsdFZhbHVlIH0pO1xuXG4gIHJldHVybiB7XG4gICAgW2NvbmZpZ05hbWVdOiB0b2tlbixcbiAgICBbZGVmYXVsdENvbmZpZ05hbWVdOiBkZWZhdWx0VmFsdWUsXG4gICAgW2luamVjdENvbmZpZ05hbWVdOiAoKSA9PiBkZWVwbWVyZ2UoZGVmYXVsdFZhbHVlLCBpbmplY3QodG9rZW4sIHsgc2tpcFNlbGY6IHRydWUsIG9wdGlvbmFsOiB0cnVlIH0pID8/IHt9LCBpbmplY3QodG9rZW4pKSxcbiAgICBbcHJvdmlkZUNvbmZpZ05hbWVdOiAoY29uZmlnOiBDb25maWdQcm92aWRlcjxUPikgPT4ge1xuICAgICAgcmV0dXJuIHByb3ZpZGVDb25maWcodG9rZW4sIGNvbmZpZyk7XG4gICAgfSxcbiAgfSBhcyBSZWNvcmQ8dHlwZW9mIGNvbmZpZ05hbWUsIEluamVjdGlvblRva2VuPFBhcnRpYWw8VD4+PiAmXG4gICAgUmVjb3JkPHR5cGVvZiBkZWZhdWx0Q29uZmlnTmFtZSwgVD4gJlxuICAgIFJlY29yZDx0eXBlb2YgaW5qZWN0Q29uZmlnTmFtZSwgKCkgPT4gVD4gJlxuICAgIFJlY29yZDx0eXBlb2YgcHJvdmlkZUNvbmZpZ05hbWUsIENvbmZpZ1Byb3ZpZGVyRm4+O1xufVxuIl19
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
@@ -1 +1 @@
1
- {"version":3,"file":"odx-angular-components-main-menu.mjs","sources":["../../../../libs/angular/components/main-menu/src/lib/main-menu.service.ts","../../../../libs/angular/components/main-menu/src/lib/directives/main-menu-button.directive.ts","../../../../libs/angular/components/main-menu/src/lib/main-menu.config.ts","../../../../libs/angular/components/main-menu/src/lib/helpers/create-main-menu-links.ts","../../../../libs/angular/components/main-menu/src/lib/main-menu.i18n.ts","../../../../libs/angular/components/main-menu/src/lib/main-menu.component.ts","../../../../libs/angular/components/main-menu/src/lib/main-menu.component.html","../../../../libs/angular/components/main-menu/src/lib/directives/main-menu-close.directive.ts","../../../../libs/angular/components/main-menu/src/lib/directives/main-menu-item.directive.ts","../../../../libs/angular/components/main-menu/src/lib/main-menu.module.ts","../../../../libs/angular/components/main-menu/src/odx-angular-components-main-menu.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { BehaviorSubject, distinctUntilChanged, shareReplay } from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class MainMenuService {\n private readonly isOpen$$ = new BehaviorSubject(false);\n\n public readonly isOpen$ = this.isOpen$$.pipe(distinctUntilChanged(), shareReplay({ refCount: true }));\n\n public isOpen(): boolean {\n return this.isOpen$$.getValue();\n }\n\n public open(): void {\n this.toggle(true);\n }\n\n public close(): void {\n this.toggle(false);\n }\n\n public toggle(forceState?: boolean): void {\n this.isOpen$$.next(forceState ?? !this.isOpen());\n }\n}\n","import { Directive, HostListener, inject } from '@angular/core';\nimport { CSSComponent } from '@odx/angular/internal';\nimport { injectElement } from '@odx/angular/utils';\nimport { MainMenuService } from '../main-menu.service';\n\n@CSSComponent('main-menu-button')\n@Directive({\n selector: 'button[odxMainMenuButton]',\n standalone: true,\n})\nexport class MainMenuButtonDirective {\n private readonly mainMenuService = inject(MainMenuService);\n public readonly element = injectElement<HTMLButtonElement>();\n\n @HostListener('click')\n public onClick() {\n this.mainMenuService.toggle();\n }\n}\n","import { buildWebsiteUrl, createConfigTokens } from '@odx/angular/utils';\n\nexport interface MainMenuLinksConfig {\n dataProtectionUrl?: string | null;\n legalNoticeUrl: string | null;\n providerIdentificationUrl: string | null;\n termsAndConditionsUrl?: string | null;\n openSourceUrl?: string | null;\n}\n\nexport const { MainMenuLinksConfig, MainMenuLinksDefaultConfig, injectMainMenuLinksConfig, provideMainMenuLinksConfig } = createConfigTokens(\n 'MainMenuLinks',\n '@odx/angular/components/main-menu',\n {\n providerIdentificationUrl: buildWebsiteUrl('provideridentification'),\n legalNoticeUrl: buildWebsiteUrl('legalnotice'),\n } as MainMenuLinksConfig,\n);\n","import { injectMainMenuLinksConfig } from '../main-menu.config';\nimport { MainMenuLink } from '../models';\n\nexport function createMainMenuLinks(): MainMenuLink[] {\n const { legalNoticeUrl, providerIdentificationUrl, dataProtectionUrl, openSourceUrl, termsAndConditionsUrl } = injectMainMenuLinksConfig();\n const links = [\n { name: 'termsAndConditions', url: termsAndConditionsUrl },\n { name: 'providerIdentification', url: providerIdentificationUrl },\n { name: 'openSource', url: openSourceUrl },\n { name: 'dataProtection', url: dataProtectionUrl },\n { name: 'legalNotice', url: legalNoticeUrl },\n ];\n\n return links.filter((link): link is MainMenuLink => !!link.url);\n}\n","import { Translations } from '@odx/angular/internal/translate';\n\nexport default {\n en: {\n legalNotice: 'Legal notice',\n providerIdentification: 'Provider identification',\n dataProtection: 'Data protection',\n openSource: 'Open-source licenses',\n termsAndConditions: 'Terms and Conditions',\n },\n de: {\n legalNotice: 'Rechtliche Hinweise',\n providerIdentification: 'Impressum',\n dataProtection: 'Datenschutz',\n openSource: 'Open-Source-Lizenzen',\n termsAndConditions: 'Allgemeine Geschäftsbedingungen',\n },\n} as Translations;\n","import { transition, trigger, useAnimation } from '@angular/animations';\nimport { booleanAttribute, ChangeDetectionStrategy, Component, HostListener, inject, Input, Output, ViewEncapsulation } from '@angular/core';\nimport { CoreModule } from '@odx/angular';\nimport { fadeIn, fadeOut, slideInLeft, slideOutLeft } from '@odx/angular/animations';\nimport { A11yModule } from '@odx/angular/cdk/a11y';\nimport { AreaHeaderModule } from '@odx/angular/components/area-header';\nimport { ButtonComponent } from '@odx/angular/components/button';\nimport { IconComponent } from '@odx/angular/components/icon';\nimport { LinkDirective } from '@odx/angular/components/link';\nimport { LogoDirective } from '@odx/angular/components/logo';\nimport { CSSComponent } from '@odx/angular/internal';\nimport { provideTranslations, TranslatePipe } from '@odx/angular/internal/translate';\nimport { injectElement, trackByIndex } from '@odx/angular/utils';\nimport { createMainMenuLinks } from './helpers';\nimport mainMenuTranslations from './main-menu.i18n';\nimport { MainMenuService } from './main-menu.service';\n\n@CSSComponent('main-menu')\n@Component({\n selector: 'odx-main-menu',\n templateUrl: './main-menu.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [A11yModule, CoreModule, AreaHeaderModule, ButtonComponent, IconComponent, LogoDirective, TranslatePipe, LinkDirective],\n providers: [provideTranslations(mainMenuTranslations)],\n standalone: true,\n host: {\n '[class.is-open]': 'isOpen',\n },\n animations: [\n trigger('menuAnimation', [transition(':enter', [useAnimation(slideInLeft)]), transition(':leave', [useAnimation(slideOutLeft)])]),\n trigger('overlayAnimation', [transition(':enter', [useAnimation(fadeIn())]), transition(':leave', [useAnimation(fadeOut())])]),\n ],\n})\nexport class MainMenuComponent {\n protected readonly mainMenuService = inject(MainMenuService);\n protected readonly mainMenuLinks = createMainMenuLinks();\n protected readonly trackByIndex = trackByIndex;\n public readonly element = injectElement();\n\n @Input({ required: true })\n public title!: string;\n\n @Input()\n public subtitle: string | null = null;\n\n @Input()\n public copyright: string | null = null;\n\n @Input({ transform: booleanAttribute })\n public set isOpen(value: boolean) {\n this.mainMenuService.toggle(value);\n }\n\n public get isOpen(): boolean {\n return this.mainMenuService.isOpen();\n }\n\n @Output()\n public menuOpen = this.mainMenuService.isOpen$;\n\n @HostListener('window:keyup.esc')\n public close(): void {\n this.mainMenuService.close();\n }\n}\n","<aside @menuAnimation class=\"odx-main-menu__inner\" cdkTrapFocus cdkTrapFocusAutoCapture *ngIf=\"menuOpen | async\">\n <div class=\"odx-main-menu__actions\">\n <button class=\"odx-main-menu__close\" odxButton disabled=\"false\" (click)=\"close()\">\n <odx-icon name=\"close\" iconSet=\"core\"></odx-icon>\n </button>\n </div>\n <odx-area-header class=\"odx-main-menu__header\" size=\"large\">\n {{ title }}\n <odx-area-header-subtitle *ngIf=\"subtitle\">\n {{ subtitle }}\n </odx-area-header-subtitle>\n </odx-area-header>\n <nav class=\"odx-main-menu__content\">\n <ng-content></ng-content>\n </nav>\n <div class=\"odx-main-menu__info\">\n <ng-content select=\"[odxLink]\"></ng-content>\n <a odxLink [href]=\"link.url\" target=\"_blank\" *ngFor=\"let link of mainMenuLinks; trackBy: trackByIndex\">\n {{ link.name | odxTranslate | async }}\n </a>\n </div>\n <div class=\"odx-main-menu__footer\">\n <odx-logo variant=\"inverse\"></odx-logo>\n <p class=\"odx-text odx-text--small\" *ngIf=\"copyright\">\n {{ copyright }}\n </p>\n </div>\n</aside>\n<div @overlayAnimation class=\"odx-main-menu__overlay\" (click)=\"close()\" *ngIf=\"menuOpen | async\"></div>\n","import { Directive, HostListener, inject } from '@angular/core';\nimport { MainMenuComponent } from '../main-menu.component';\n\n@Directive({\n standalone: true,\n selector: '[odxMainMenuClose]',\n})\nexport class MainMenuCloseDirective {\n private readonly mainMenu = inject(MainMenuComponent, { optional: true });\n\n @HostListener('click')\n protected onClick(): void {\n this.mainMenu?.close();\n }\n}\n","import { booleanAttribute, Directive, inject, Input } from '@angular/core';\nimport { RouterLinkActive } from '@angular/router';\nimport { WithDisabledState, WithTabIndex } from '@odx/angular';\nimport { CSSComponent } from '@odx/angular/internal';\nimport { injectElement } from '@odx/angular/utils';\nimport { MainMenuCloseDirective } from './main-menu-close.directive';\n\n@CSSComponent('main-menu-item')\n@Directive({\n selector: '[odxMainMenuItem]',\n standalone: true,\n hostDirectives: [WithDisabledState, WithTabIndex, MainMenuCloseDirective],\n host: {\n '[class.is-selected]': 'isSelected || routerLinkActive?.isActive',\n '[attr.role]': '\"button\"',\n },\n})\nexport class MainMenuItemDirective {\n protected readonly routerLinkActive = inject(RouterLinkActive, { optional: true });\n\n public readonly element = injectElement();\n\n @Input({ transform: booleanAttribute })\n public isSelected = false;\n}\n","import { NgModule } from '@angular/core';\nimport { CoreModule } from '@odx/angular';\nimport { LinkDirective } from '@odx/angular/components/link';\nimport { MainMenuButtonDirective, MainMenuCloseDirective, MainMenuItemDirective } from './directives';\nimport { MainMenuComponent } from './main-menu.component';\n\nconst modules = [LinkDirective, MainMenuComponent, MainMenuItemDirective, MainMenuButtonDirective, MainMenuCloseDirective];\n\n@NgModule({\n imports: modules,\n exports: [CoreModule, ...modules],\n})\nexport class MainMenuModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2","i1","i2.MainMenuCloseDirective"],"mappings":"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"}
1
+ {"version":3,"file":"odx-angular-components-main-menu.mjs","sources":["../../../../libs/angular/components/main-menu/src/lib/main-menu.service.ts","../../../../libs/angular/components/main-menu/src/lib/directives/main-menu-button.directive.ts","../../../../libs/angular/components/main-menu/src/lib/main-menu.config.ts","../../../../libs/angular/components/main-menu/src/lib/helpers/create-main-menu-links.ts","../../../../libs/angular/components/main-menu/src/lib/main-menu.i18n.ts","../../../../libs/angular/components/main-menu/src/lib/main-menu.component.ts","../../../../libs/angular/components/main-menu/src/lib/main-menu.component.html","../../../../libs/angular/components/main-menu/src/lib/directives/main-menu-close.directive.ts","../../../../libs/angular/components/main-menu/src/lib/directives/main-menu-item.directive.ts","../../../../libs/angular/components/main-menu/src/lib/main-menu.module.ts","../../../../libs/angular/components/main-menu/src/odx-angular-components-main-menu.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { BehaviorSubject, distinctUntilChanged, shareReplay } from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class MainMenuService {\n private readonly isOpen$$ = new BehaviorSubject(false);\n\n public readonly isOpen$ = this.isOpen$$.pipe(distinctUntilChanged(), shareReplay({ refCount: true }));\n\n public isOpen(): boolean {\n return this.isOpen$$.getValue();\n }\n\n public open(): void {\n this.toggle(true);\n }\n\n public close(): void {\n this.toggle(false);\n }\n\n public toggle(forceState?: boolean): void {\n this.isOpen$$.next(forceState ?? !this.isOpen());\n }\n}\n","import { Directive, HostListener, inject } from '@angular/core';\nimport { CSSComponent } from '@odx/angular/internal';\nimport { injectElement } from '@odx/angular/utils';\nimport { MainMenuService } from '../main-menu.service';\n\n@CSSComponent('main-menu-button')\n@Directive({\n selector: 'button[odxMainMenuButton]',\n standalone: true,\n})\nexport class MainMenuButtonDirective {\n private readonly mainMenuService = inject(MainMenuService);\n public readonly element = injectElement<HTMLButtonElement>();\n\n @HostListener('click')\n public onClick() {\n this.mainMenuService.toggle();\n }\n}\n","import { buildWebsiteUrl, createConfigTokens } from '@odx/angular/utils';\n\nexport interface MainMenuLinksConfig {\n dataProtectionUrl?: string | null;\n legalNoticeUrl: string | null;\n providerIdentificationUrl: string | null;\n termsAndConditionsUrl?: string | null;\n openSourceUrl?: string | null;\n}\n\nexport const { MainMenuLinksConfig, MainMenuLinksDefaultConfig, injectMainMenuLinksConfig, provideMainMenuLinksConfig } = createConfigTokens(\n 'MainMenuLinks',\n '@odx/angular/components/main-menu',\n {\n providerIdentificationUrl: buildWebsiteUrl('provideridentification'),\n legalNoticeUrl: buildWebsiteUrl('legalnotice'),\n } as MainMenuLinksConfig,\n);\n","import { injectMainMenuLinksConfig } from '../main-menu.config';\nimport { MainMenuLink } from '../models';\n\nexport function createMainMenuLinks(): MainMenuLink[] {\n const { legalNoticeUrl, providerIdentificationUrl, dataProtectionUrl, openSourceUrl, termsAndConditionsUrl } = injectMainMenuLinksConfig();\n const links = [\n { name: 'termsAndConditions', url: termsAndConditionsUrl },\n { name: 'providerIdentification', url: providerIdentificationUrl },\n { name: 'openSource', url: openSourceUrl },\n { name: 'dataProtection', url: dataProtectionUrl },\n { name: 'legalNotice', url: legalNoticeUrl },\n ];\n\n return links.filter((link): link is MainMenuLink => !!link.url);\n}\n","import { TranslationObject } from '@odx/angular/internal/translate';\n\nexport default {\n en: {\n legalNotice: 'Legal notice',\n providerIdentification: 'Provider identification',\n dataProtection: 'Data protection',\n openSource: 'Open-source licenses',\n termsAndConditions: 'Terms and Conditions',\n },\n de: {\n legalNotice: 'Rechtliche Hinweise',\n providerIdentification: 'Impressum',\n dataProtection: 'Datenschutz',\n openSource: 'Open-Source-Lizenzen',\n termsAndConditions: 'Allgemeine Geschäftsbedingungen',\n },\n} as TranslationObject;\n","import { transition, trigger, useAnimation } from '@angular/animations';\nimport { booleanAttribute, ChangeDetectionStrategy, Component, HostListener, inject, Input, Output, ViewEncapsulation } from '@angular/core';\nimport { CoreModule } from '@odx/angular';\nimport { fadeIn, fadeOut, slideInLeft, slideOutLeft } from '@odx/angular/animations';\nimport { A11yModule } from '@odx/angular/cdk/a11y';\nimport { AreaHeaderModule } from '@odx/angular/components/area-header';\nimport { ButtonComponent } from '@odx/angular/components/button';\nimport { IconComponent } from '@odx/angular/components/icon';\nimport { LinkDirective } from '@odx/angular/components/link';\nimport { LogoDirective } from '@odx/angular/components/logo';\nimport { CSSComponent } from '@odx/angular/internal';\nimport { provideTranslations, TranslatePipe } from '@odx/angular/internal/translate';\nimport { injectElement, trackByIndex } from '@odx/angular/utils';\nimport { createMainMenuLinks } from './helpers';\nimport mainMenuTranslations from './main-menu.i18n';\nimport { MainMenuService } from './main-menu.service';\n\n@CSSComponent('main-menu')\n@Component({\n selector: 'odx-main-menu',\n templateUrl: './main-menu.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [A11yModule, CoreModule, AreaHeaderModule, ButtonComponent, IconComponent, LogoDirective, TranslatePipe, LinkDirective],\n providers: [provideTranslations(mainMenuTranslations)],\n standalone: true,\n host: {\n '[class.is-open]': 'isOpen',\n },\n animations: [\n trigger('menuAnimation', [transition(':enter', [useAnimation(slideInLeft)]), transition(':leave', [useAnimation(slideOutLeft)])]),\n trigger('overlayAnimation', [transition(':enter', [useAnimation(fadeIn())]), transition(':leave', [useAnimation(fadeOut())])]),\n ],\n})\nexport class MainMenuComponent {\n protected readonly mainMenuService = inject(MainMenuService);\n protected readonly mainMenuLinks = createMainMenuLinks();\n protected readonly trackByIndex = trackByIndex;\n public readonly element = injectElement();\n\n @Input({ required: true })\n public title!: string;\n\n @Input()\n public subtitle: string | null = null;\n\n @Input()\n public copyright: string | null = null;\n\n @Input({ transform: booleanAttribute })\n public set isOpen(value: boolean) {\n this.mainMenuService.toggle(value);\n }\n\n public get isOpen(): boolean {\n return this.mainMenuService.isOpen();\n }\n\n @Output()\n public menuOpen = this.mainMenuService.isOpen$;\n\n @HostListener('window:keyup.esc')\n public close(): void {\n this.mainMenuService.close();\n }\n}\n","<aside @menuAnimation class=\"odx-main-menu__inner\" cdkTrapFocus cdkTrapFocusAutoCapture *ngIf=\"menuOpen | async\">\n <div class=\"odx-main-menu__actions\">\n <button class=\"odx-main-menu__close\" odxButton disabled=\"false\" (click)=\"close()\">\n <odx-icon name=\"close\" iconSet=\"core\"></odx-icon>\n </button>\n </div>\n <odx-area-header class=\"odx-main-menu__header\" size=\"large\">\n {{ title }}\n <odx-area-header-subtitle *ngIf=\"subtitle\">\n {{ subtitle }}\n </odx-area-header-subtitle>\n </odx-area-header>\n <nav class=\"odx-main-menu__content\">\n <ng-content></ng-content>\n </nav>\n <div class=\"odx-main-menu__info\">\n <ng-content select=\"[odxLink]\"></ng-content>\n <a odxLink [href]=\"link.url\" target=\"_blank\" *ngFor=\"let link of mainMenuLinks; trackBy: trackByIndex\">\n {{ link.name | odxTranslate | async }}\n </a>\n </div>\n <div class=\"odx-main-menu__footer\">\n <odx-logo variant=\"inverse\"></odx-logo>\n <p class=\"odx-text odx-text--small\" *ngIf=\"copyright\">\n {{ copyright }}\n </p>\n </div>\n</aside>\n<div @overlayAnimation class=\"odx-main-menu__overlay\" (click)=\"close()\" *ngIf=\"menuOpen | async\"></div>\n","import { Directive, HostListener, inject } from '@angular/core';\nimport { MainMenuComponent } from '../main-menu.component';\n\n@Directive({\n standalone: true,\n selector: '[odxMainMenuClose]',\n})\nexport class MainMenuCloseDirective {\n private readonly mainMenu = inject(MainMenuComponent, { optional: true });\n\n @HostListener('click')\n protected onClick(): void {\n this.mainMenu?.close();\n }\n}\n","import { booleanAttribute, Directive, inject, Input } from '@angular/core';\nimport { RouterLinkActive } from '@angular/router';\nimport { WithDisabledState, WithTabIndex } from '@odx/angular';\nimport { CSSComponent } from '@odx/angular/internal';\nimport { injectElement } from '@odx/angular/utils';\nimport { MainMenuCloseDirective } from './main-menu-close.directive';\n\n@CSSComponent('main-menu-item')\n@Directive({\n selector: '[odxMainMenuItem]',\n standalone: true,\n hostDirectives: [WithDisabledState, WithTabIndex, MainMenuCloseDirective],\n host: {\n '[class.is-selected]': 'isSelected || routerLinkActive?.isActive',\n '[attr.role]': '\"button\"',\n },\n})\nexport class MainMenuItemDirective {\n protected readonly routerLinkActive = inject(RouterLinkActive, { optional: true });\n\n public readonly element = injectElement();\n\n @Input({ transform: booleanAttribute })\n public isSelected = false;\n}\n","import { NgModule } from '@angular/core';\nimport { CoreModule } from '@odx/angular';\nimport { LinkDirective } from '@odx/angular/components/link';\nimport { MainMenuButtonDirective, MainMenuCloseDirective, MainMenuItemDirective } from './directives';\nimport { MainMenuComponent } from './main-menu.component';\n\nconst modules = [LinkDirective, MainMenuComponent, MainMenuItemDirective, MainMenuButtonDirective, MainMenuCloseDirective];\n\n@NgModule({\n imports: modules,\n exports: [CoreModule, ...modules],\n})\nexport class MainMenuModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2","i1","i2.MainMenuCloseDirective"],"mappings":"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"}
@@ -1,56 +1,32 @@
1
1
  import * as i0 from '@angular/core';
2
- import { inject, Injectable, InjectionToken, Pipe } from '@angular/core';
3
- import { BehaviorSubject, distinctUntilChanged, shareReplay, map, filter } from 'rxjs';
4
-
5
- class LanguageService {
6
- constructor() {
7
- this.currentLanguageCode$$ = new BehaviorSubject(inject(ODX_TRANSLATE_DEFAULT_LANGUAGE_CODE));
8
- this.currentLanguageCode$ = this.currentLanguageCode$$.pipe(distinctUntilChanged(), shareReplay({ refCount: true }));
9
- }
10
- setLanguage(language) {
11
- this.currentLanguageCode$$.next(getLanguageCode(language));
12
- }
13
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: LanguageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
14
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: LanguageService, providedIn: 'root' }); }
15
- }
16
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: LanguageService, decorators: [{
17
- type: Injectable,
18
- args: [{ providedIn: 'root' }]
19
- }] });
2
+ import { inject, Pipe } from '@angular/core';
3
+ import { LocalizationService } from '@odx/angular/localization';
4
+ import { getLanguageCode } from '@odx/angular/utils';
5
+ import { startWith, distinctUntilChanged, map, shareReplay } from 'rxjs';
20
6
 
21
7
  class TranslateService {
22
8
  constructor(translations) {
23
9
  this.translations = translations;
24
- this.defaultLanguageCode = inject(ODX_TRANSLATE_DEFAULT_LANGUAGE_CODE);
25
- this.languageService = inject(LanguageService);
26
- this.currentTranslation$ = this.languageService.currentLanguageCode$.pipe(map((languageCode) => this.translations[languageCode] ?? this.translations[this.defaultLanguageCode]), filter(Boolean), shareReplay({ refCount: true }));
10
+ this.localizationService = inject(LocalizationService);
11
+ this.activeTranslation$ = this.localizationService.activeLanguage$.pipe(startWith(this.localizationService.defaultLanguage), distinctUntilChanged(), map((language) => {
12
+ const languageCode = getLanguageCode(language);
13
+ if (this.translations[language]) {
14
+ return this.translations[language];
15
+ }
16
+ if (this.translations[languageCode]) {
17
+ return this.translations[languageCode];
18
+ }
19
+ return this.translations[this.localizationService.defaultLanguage];
20
+ }), shareReplay({ refCount: true }));
27
21
  }
28
- translate(key, placeholder = {}) {
29
- return this.currentTranslation$.pipe(map((translation) => Object.keys(placeholder)
30
- .reduce((acc, cur) => {
31
- const re = RegExp(`{{\\s*${cur}\\s*}}`, 'g');
32
- return acc.replace(re, placeholder[cur]);
22
+ translate(key, data = {}) {
23
+ return this.activeTranslation$.pipe(map((translation) => Object.entries(data).reduce((acc, [variableName, variable]) => {
24
+ const variableRegex = RegExp(`{{\\s*${variableName}\\s*}}`, 'g');
25
+ return acc.replace(variableRegex, variable);
33
26
  }, translation[key] ?? '')));
34
27
  }
35
28
  }
36
29
 
37
- const ODX_TRANSLATE_DEFAULT_LANGUAGE = 'en';
38
- const ODX_TRANSLATE_DEFAULT_LANGUAGE_CODE = new InjectionToken('@odx/angular/internal/translate::DefaultLanguageCode', {
39
- providedIn: 'root',
40
- factory: () => getLanguageCode(ODX_TRANSLATE_DEFAULT_LANGUAGE),
41
- });
42
- function provideTranslations(translations) {
43
- return {
44
- provide: TranslateService,
45
- useFactory: () => new TranslateService(translations),
46
- };
47
- }
48
-
49
- function getLanguageCode(language) {
50
- const [languageCode] = language.split(/-|_/);
51
- return languageCode?.toLowerCase() ?? ODX_TRANSLATE_DEFAULT_LANGUAGE;
52
- }
53
-
54
30
  class TranslatePipe {
55
31
  constructor() {
56
32
  this.translateService = inject(TranslateService);
@@ -70,9 +46,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
70
46
  }]
71
47
  }] });
72
48
 
49
+ function provideTranslations(translations) {
50
+ return {
51
+ provide: TranslateService,
52
+ useFactory: () => new TranslateService(translations),
53
+ };
54
+ }
55
+
73
56
  /**
74
57
  * Generated bundle index. Do not edit.
75
58
  */
76
59
 
77
- export { LanguageService, ODX_TRANSLATE_DEFAULT_LANGUAGE, ODX_TRANSLATE_DEFAULT_LANGUAGE_CODE, TranslatePipe, TranslateService, getLanguageCode, provideTranslations };
60
+ export { TranslatePipe, TranslateService, provideTranslations };
78
61
  //# sourceMappingURL=odx-angular-internal-translate.mjs.map