@odx/angular 5.0.0 → 5.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,4 +1,17 @@
1
- ## 4.1.0
1
+ # @odx/angular
2
+
3
+ ## 5.0.2
4
+
5
+ ### Patch Changes
6
+
7
+ - 280c07a: Prevent language loader implementation from splitting the returned language string
8
+ - 92d7075: dynamic content for all error page text inputs
9
+
10
+ ## 5.0.1
11
+
12
+ ### Patch Changes
13
+
14
+ - 305fc0e: fix changelog formatting
2
15
 
3
16
  ## 5.0.0
4
17
 
@@ -16,6 +29,8 @@
16
29
 
17
30
  Add internal `Logger` class to improve debug output
18
31
 
32
+ ## 4.1.0
33
+
19
34
  ### Minor Changes
20
35
 
21
36
  - 909ed1a: new error page component
@@ -4,13 +4,13 @@ import { ConfigDependencies, ConfigProvider } from '@odx/angular/utils';
4
4
  export interface ErrorPageConfig {
5
5
  icon?: string;
6
6
  iconSet?: string;
7
- title: string;
7
+ title: DynamicContent;
8
8
  description?: DynamicContent;
9
9
  actions: {
10
- label: string;
10
+ label: DynamicContent;
11
11
  action: () => void;
12
12
  }[];
13
- errorMessage?: string;
13
+ errorMessage?: DynamicContent;
14
14
  }
15
15
  export declare const ErrorPageConfig: import("@angular/core").InjectionToken<Partial<ErrorPageConfig>>, ErrorPageDefaultConfig: ErrorPageConfig, injectErrorPageConfig: () => ErrorPageConfig, provideErrorPageConfig: <D extends ConfigDependencies<unknown> = ConfigDependencies<Partial<ErrorPageConfig>>>(config: ConfigProvider<Partial<ErrorPageConfig>, D>) => import("@angular/core").FactoryProvider | import("@angular/core").ValueProvider;
16
16
  export declare function configureErrorPage<D extends ConfigDependencies>(config: ConfigProvider<Partial<ErrorPageConfig>, D>): EnvironmentProviders;
@@ -16,13 +16,13 @@ export let ErrorPageComponent = class ErrorPageComponent {
16
16
  this.options = injectErrorPageConfig();
17
17
  }
18
18
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ErrorPageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
19
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ErrorPageComponent, isStandalone: true, selector: "odx-error-page", ngImport: i0, template: "<div class=\"odx-error-page__container\">\n <div class=\"odx-error-page__icon-container\">\n <odx-icon *ngIf=\"options.icon as icon; else logo\" size=\"xlarge\" [name]=\"icon\"></odx-icon>\n <ng-template #logo><odx-logo size=\"large\"></odx-logo></ng-template>\n </div>\n <div class=\"odx-error-page__title\">{{ options.title }}</div>\n <div *ngIf=\"options.description as description\" class=\"odx-error-page__description\">\n <ng-template [odxDynamicView]=\"description\"></ng-template>\n </div>\n <div class=\"odx-error-page__actions\">\n <button *ngFor=\"let button of options.actions; let isFirst = first\" [variant]=\"isFirst ? 'primary' : 'secondary'\" odxButton (click)=\"button.action()\">\n {{ button.label }}\n </button>\n </div>\n</div>\n<div *ngIf=\"options.errorMessage as errorMessage\" class=\"odx-error-page__footer\">{{ errorMessage }}</div>\n", dependencies: [{ kind: "directive", type: LogoDirective, selector: "odx-logo", inputs: ["size", "variant"] }, { kind: "component", type: IconComponent, selector: "odx-icon", inputs: ["inline", "size", "name", "iconSet"] }, { kind: "ngmodule", type: CoreModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ButtonComponent, selector: "button[odxButton], a[odxButton]", inputs: ["variant", "size"] }, { kind: "directive", type: DynamicViewDirective, selector: "ng-template[odxDynamicView]", inputs: ["odxDynamicView", "odxDynamicViewInjector", "odxDynamicViewContext"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
19
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ErrorPageComponent, isStandalone: true, selector: "odx-error-page", ngImport: i0, template: "<div class=\"odx-error-page__container\">\n <div class=\"odx-error-page__icon-container\">\n <odx-icon *ngIf=\"options.icon as icon; else logo\" size=\"xlarge\" [name]=\"icon\"></odx-icon>\n <ng-template #logo><odx-logo size=\"large\"></odx-logo></ng-template>\n </div>\n <div class=\"odx-error-page__title\">\n <ng-template [odxDynamicView]=\"options.title\"></ng-template>\n </div>\n <div *ngIf=\"options.description as description\" class=\"odx-error-page__description\">\n <ng-template [odxDynamicView]=\"description\"></ng-template>\n </div>\n <div class=\"odx-error-page__actions\">\n <button *ngFor=\"let button of options.actions; let isFirst = first\" [variant]=\"isFirst ? 'primary' : 'secondary'\" odxButton (click)=\"button.action()\">\n <ng-template [odxDynamicView]=\"button.label\"></ng-template>\n </button>\n </div>\n</div>\n<div *ngIf=\"options.errorMessage as errorMessage\" class=\"odx-error-page__footer\">\n <ng-template [odxDynamicView]=\"errorMessage\"></ng-template>\n</div>\n", dependencies: [{ kind: "directive", type: LogoDirective, selector: "odx-logo", inputs: ["size", "variant"] }, { kind: "component", type: IconComponent, selector: "odx-icon", inputs: ["inline", "size", "name", "iconSet"] }, { kind: "ngmodule", type: CoreModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ButtonComponent, selector: "button[odxButton], a[odxButton]", inputs: ["variant", "size"] }, { kind: "directive", type: DynamicViewDirective, selector: "ng-template[odxDynamicView]", inputs: ["odxDynamicView", "odxDynamicViewInjector", "odxDynamicViewContext"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
20
20
  };
21
21
  ErrorPageComponent = __decorate([
22
22
  CSSComponent('error-page')
23
23
  ], ErrorPageComponent);
24
24
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ErrorPageComponent, decorators: [{
25
25
  type: Component,
26
- args: [{ standalone: true, selector: 'odx-error-page', imports: [LogoDirective, IconComponent, CoreModule, ButtonComponent, DynamicViewDirective], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div class=\"odx-error-page__container\">\n <div class=\"odx-error-page__icon-container\">\n <odx-icon *ngIf=\"options.icon as icon; else logo\" size=\"xlarge\" [name]=\"icon\"></odx-icon>\n <ng-template #logo><odx-logo size=\"large\"></odx-logo></ng-template>\n </div>\n <div class=\"odx-error-page__title\">{{ options.title }}</div>\n <div *ngIf=\"options.description as description\" class=\"odx-error-page__description\">\n <ng-template [odxDynamicView]=\"description\"></ng-template>\n </div>\n <div class=\"odx-error-page__actions\">\n <button *ngFor=\"let button of options.actions; let isFirst = first\" [variant]=\"isFirst ? 'primary' : 'secondary'\" odxButton (click)=\"button.action()\">\n {{ button.label }}\n </button>\n </div>\n</div>\n<div *ngIf=\"options.errorMessage as errorMessage\" class=\"odx-error-page__footer\">{{ errorMessage }}</div>\n" }]
26
+ args: [{ standalone: true, selector: 'odx-error-page', imports: [LogoDirective, IconComponent, CoreModule, ButtonComponent, DynamicViewDirective], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div class=\"odx-error-page__container\">\n <div class=\"odx-error-page__icon-container\">\n <odx-icon *ngIf=\"options.icon as icon; else logo\" size=\"xlarge\" [name]=\"icon\"></odx-icon>\n <ng-template #logo><odx-logo size=\"large\"></odx-logo></ng-template>\n </div>\n <div class=\"odx-error-page__title\">\n <ng-template [odxDynamicView]=\"options.title\"></ng-template>\n </div>\n <div *ngIf=\"options.description as description\" class=\"odx-error-page__description\">\n <ng-template [odxDynamicView]=\"description\"></ng-template>\n </div>\n <div class=\"odx-error-page__actions\">\n <button *ngFor=\"let button of options.actions; let isFirst = first\" [variant]=\"isFirst ? 'primary' : 'secondary'\" odxButton (click)=\"button.action()\">\n <ng-template [odxDynamicView]=\"button.label\"></ng-template>\n </button>\n </div>\n</div>\n<div *ngIf=\"options.errorMessage as errorMessage\" class=\"odx-error-page__footer\">\n <ng-template [odxDynamicView]=\"errorMessage\"></ng-template>\n</div>\n" }]
27
27
  }] });
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3ItcGFnZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvY29tcG9uZW50cy9lcnJvci1wYWdlL3NyYy9saWIvZXJyb3ItcGFnZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvY29tcG9uZW50cy9lcnJvci1wYWdlL3NyYy9saWIvZXJyb3ItcGFnZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0RixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzFDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNqRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzdELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbkQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0scUJBQXFCLENBQUM7OztBQVdyRCxXQUFNLGtCQUFrQixHQUF4QixNQUFNLGtCQUFrQjtJQUF4QjtRQUNXLFlBQU8sR0FBRyxhQUFhLEVBQUUsQ0FBQztRQUNuQyxZQUFPLEdBQUcscUJBQXFCLEVBQUUsQ0FBQztLQUMxQzsrR0FIWSxrQkFBa0I7bUdBQWxCLGtCQUFrQiwwRUNuQi9CLDAzQkFnQkEsNENERFksYUFBYSxrRkFBRSxhQUFhLG1HQUFFLFVBQVUsZ1FBQUUsZUFBZSx5R0FBRSxvQkFBb0I7O0FBSTlFLGtCQUFrQjtJQVQ5QixZQUFZLENBQUMsWUFBWSxDQUFDO0dBU2Qsa0JBQWtCLENBRzlCOzRGQUhZLGtCQUFrQjtrQkFSOUIsU0FBUztpQ0FDSSxJQUFJLFlBQ04sZ0JBQWdCLFdBRWpCLENBQUMsYUFBYSxFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUsZUFBZSxFQUFFLG9CQUFvQixDQUFDLG1CQUN6RSx1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvcmVNb2R1bGUgfSBmcm9tICdAb2R4L2FuZ3VsYXInO1xuaW1wb3J0IHsgRHluYW1pY1ZpZXdEaXJlY3RpdmUgfSBmcm9tICdAb2R4L2FuZ3VsYXIvY2RrL2R5bmFtaWMtdmlldyc7XG5pbXBvcnQgeyBCdXR0b25Db21wb25lbnQgfSBmcm9tICdAb2R4L2FuZ3VsYXIvY29tcG9uZW50cy9idXR0b24nO1xuaW1wb3J0IHsgSWNvbkNvbXBvbmVudCB9IGZyb20gJ0BvZHgvYW5ndWxhci9jb21wb25lbnRzL2ljb24nO1xuaW1wb3J0IHsgTG9nb0RpcmVjdGl2ZSB9IGZyb20gJ0BvZHgvYW5ndWxhci9jb21wb25lbnRzL2xvZ28nO1xuaW1wb3J0IHsgQ1NTQ29tcG9uZW50IH0gZnJvbSAnQG9keC9hbmd1bGFyL2ludGVybmFsJztcbmltcG9ydCB7IGluamVjdEVsZW1lbnQgfSBmcm9tICdAb2R4L2FuZ3VsYXIvdXRpbHMnO1xuaW1wb3J0IHsgaW5qZWN0RXJyb3JQYWdlQ29uZmlnIH0gZnJvbSAnLi9lcnJvci1wYWdlLmNvbmZpZyc7XG5cbkBDU1NDb21wb25lbnQoJ2Vycm9yLXBhZ2UnKVxuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHNlbGVjdG9yOiAnb2R4LWVycm9yLXBhZ2UnLFxuICB0ZW1wbGF0ZVVybDogJy4vZXJyb3ItcGFnZS5jb21wb25lbnQuaHRtbCcsXG4gIGltcG9ydHM6IFtMb2dvRGlyZWN0aXZlLCBJY29uQ29tcG9uZW50LCBDb3JlTW9kdWxlLCBCdXR0b25Db21wb25lbnQsIER5bmFtaWNWaWV3RGlyZWN0aXZlXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIEVycm9yUGFnZUNvbXBvbmVudCB7XG4gIHB1YmxpYyByZWFkb25seSBlbGVtZW50ID0gaW5qZWN0RWxlbWVudCgpO1xuICBwdWJsaWMgb3B0aW9ucyA9IGluamVjdEVycm9yUGFnZUNvbmZpZygpO1xufVxuIiwiPGRpdiBjbGFzcz1cIm9keC1lcnJvci1wYWdlX19jb250YWluZXJcIj5cbiAgPGRpdiBjbGFzcz1cIm9keC1lcnJvci1wYWdlX19pY29uLWNvbnRhaW5lclwiPlxuICAgIDxvZHgtaWNvbiAqbmdJZj1cIm9wdGlvbnMuaWNvbiBhcyBpY29uOyBlbHNlIGxvZ29cIiBzaXplPVwieGxhcmdlXCIgW25hbWVdPVwiaWNvblwiPjwvb2R4LWljb24+XG4gICAgPG5nLXRlbXBsYXRlICNsb2dvPjxvZHgtbG9nbyBzaXplPVwibGFyZ2VcIj48L29keC1sb2dvPjwvbmctdGVtcGxhdGU+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwib2R4LWVycm9yLXBhZ2VfX3RpdGxlXCI+e3sgb3B0aW9ucy50aXRsZSB9fTwvZGl2PlxuICA8ZGl2ICpuZ0lmPVwib3B0aW9ucy5kZXNjcmlwdGlvbiBhcyBkZXNjcmlwdGlvblwiIGNsYXNzPVwib2R4LWVycm9yLXBhZ2VfX2Rlc2NyaXB0aW9uXCI+XG4gICAgPG5nLXRlbXBsYXRlIFtvZHhEeW5hbWljVmlld109XCJkZXNjcmlwdGlvblwiPjwvbmctdGVtcGxhdGU+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwib2R4LWVycm9yLXBhZ2VfX2FjdGlvbnNcIj5cbiAgICA8YnV0dG9uICpuZ0Zvcj1cImxldCBidXR0b24gb2Ygb3B0aW9ucy5hY3Rpb25zOyBsZXQgaXNGaXJzdCA9IGZpcnN0XCIgW3ZhcmlhbnRdPVwiaXNGaXJzdCA/ICdwcmltYXJ5JyA6ICdzZWNvbmRhcnknXCIgb2R4QnV0dG9uIChjbGljayk9XCJidXR0b24uYWN0aW9uKClcIj5cbiAgICAgIHt7IGJ1dHRvbi5sYWJlbCB9fVxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvZGl2PlxuPGRpdiAqbmdJZj1cIm9wdGlvbnMuZXJyb3JNZXNzYWdlIGFzIGVycm9yTWVzc2FnZVwiIGNsYXNzPVwib2R4LWVycm9yLXBhZ2VfX2Zvb3RlclwiPnt7IGVycm9yTWVzc2FnZSB9fTwvZGl2PlxuIl19
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3ItcGFnZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvY29tcG9uZW50cy9lcnJvci1wYWdlL3NyYy9saWIvZXJyb3ItcGFnZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvY29tcG9uZW50cy9lcnJvci1wYWdlL3NyYy9saWIvZXJyb3ItcGFnZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0RixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzFDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNqRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzdELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbkQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0scUJBQXFCLENBQUM7OztBQVdyRCxXQUFNLGtCQUFrQixHQUF4QixNQUFNLGtCQUFrQjtJQUF4QjtRQUNXLFlBQU8sR0FBRyxhQUFhLEVBQUUsQ0FBQztRQUNuQyxZQUFPLEdBQUcscUJBQXFCLEVBQUUsQ0FBQztLQUMxQzsrR0FIWSxrQkFBa0I7bUdBQWxCLGtCQUFrQiwwRUNuQi9CLDJnQ0FvQkEsNENETFksYUFBYSxrRkFBRSxhQUFhLG1HQUFFLFVBQVUsZ1FBQUUsZUFBZSx5R0FBRSxvQkFBb0I7O0FBSTlFLGtCQUFrQjtJQVQ5QixZQUFZLENBQUMsWUFBWSxDQUFDO0dBU2Qsa0JBQWtCLENBRzlCOzRGQUhZLGtCQUFrQjtrQkFSOUIsU0FBUztpQ0FDSSxJQUFJLFlBQ04sZ0JBQWdCLFdBRWpCLENBQUMsYUFBYSxFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUsZUFBZSxFQUFFLG9CQUFvQixDQUFDLG1CQUN6RSx1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvcmVNb2R1bGUgfSBmcm9tICdAb2R4L2FuZ3VsYXInO1xuaW1wb3J0IHsgRHluYW1pY1ZpZXdEaXJlY3RpdmUgfSBmcm9tICdAb2R4L2FuZ3VsYXIvY2RrL2R5bmFtaWMtdmlldyc7XG5pbXBvcnQgeyBCdXR0b25Db21wb25lbnQgfSBmcm9tICdAb2R4L2FuZ3VsYXIvY29tcG9uZW50cy9idXR0b24nO1xuaW1wb3J0IHsgSWNvbkNvbXBvbmVudCB9IGZyb20gJ0BvZHgvYW5ndWxhci9jb21wb25lbnRzL2ljb24nO1xuaW1wb3J0IHsgTG9nb0RpcmVjdGl2ZSB9IGZyb20gJ0BvZHgvYW5ndWxhci9jb21wb25lbnRzL2xvZ28nO1xuaW1wb3J0IHsgQ1NTQ29tcG9uZW50IH0gZnJvbSAnQG9keC9hbmd1bGFyL2ludGVybmFsJztcbmltcG9ydCB7IGluamVjdEVsZW1lbnQgfSBmcm9tICdAb2R4L2FuZ3VsYXIvdXRpbHMnO1xuaW1wb3J0IHsgaW5qZWN0RXJyb3JQYWdlQ29uZmlnIH0gZnJvbSAnLi9lcnJvci1wYWdlLmNvbmZpZyc7XG5cbkBDU1NDb21wb25lbnQoJ2Vycm9yLXBhZ2UnKVxuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHNlbGVjdG9yOiAnb2R4LWVycm9yLXBhZ2UnLFxuICB0ZW1wbGF0ZVVybDogJy4vZXJyb3ItcGFnZS5jb21wb25lbnQuaHRtbCcsXG4gIGltcG9ydHM6IFtMb2dvRGlyZWN0aXZlLCBJY29uQ29tcG9uZW50LCBDb3JlTW9kdWxlLCBCdXR0b25Db21wb25lbnQsIER5bmFtaWNWaWV3RGlyZWN0aXZlXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIEVycm9yUGFnZUNvbXBvbmVudCB7XG4gIHB1YmxpYyByZWFkb25seSBlbGVtZW50ID0gaW5qZWN0RWxlbWVudCgpO1xuICBwdWJsaWMgb3B0aW9ucyA9IGluamVjdEVycm9yUGFnZUNvbmZpZygpO1xufVxuIiwiPGRpdiBjbGFzcz1cIm9keC1lcnJvci1wYWdlX19jb250YWluZXJcIj5cbiAgPGRpdiBjbGFzcz1cIm9keC1lcnJvci1wYWdlX19pY29uLWNvbnRhaW5lclwiPlxuICAgIDxvZHgtaWNvbiAqbmdJZj1cIm9wdGlvbnMuaWNvbiBhcyBpY29uOyBlbHNlIGxvZ29cIiBzaXplPVwieGxhcmdlXCIgW25hbWVdPVwiaWNvblwiPjwvb2R4LWljb24+XG4gICAgPG5nLXRlbXBsYXRlICNsb2dvPjxvZHgtbG9nbyBzaXplPVwibGFyZ2VcIj48L29keC1sb2dvPjwvbmctdGVtcGxhdGU+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwib2R4LWVycm9yLXBhZ2VfX3RpdGxlXCI+XG4gICAgPG5nLXRlbXBsYXRlIFtvZHhEeW5hbWljVmlld109XCJvcHRpb25zLnRpdGxlXCI+PC9uZy10ZW1wbGF0ZT5cbiAgPC9kaXY+XG4gIDxkaXYgKm5nSWY9XCJvcHRpb25zLmRlc2NyaXB0aW9uIGFzIGRlc2NyaXB0aW9uXCIgY2xhc3M9XCJvZHgtZXJyb3ItcGFnZV9fZGVzY3JpcHRpb25cIj5cbiAgICA8bmctdGVtcGxhdGUgW29keER5bmFtaWNWaWV3XT1cImRlc2NyaXB0aW9uXCI+PC9uZy10ZW1wbGF0ZT5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJvZHgtZXJyb3ItcGFnZV9fYWN0aW9uc1wiPlxuICAgIDxidXR0b24gKm5nRm9yPVwibGV0IGJ1dHRvbiBvZiBvcHRpb25zLmFjdGlvbnM7IGxldCBpc0ZpcnN0ID0gZmlyc3RcIiBbdmFyaWFudF09XCJpc0ZpcnN0ID8gJ3ByaW1hcnknIDogJ3NlY29uZGFyeSdcIiBvZHhCdXR0b24gKGNsaWNrKT1cImJ1dHRvbi5hY3Rpb24oKVwiPlxuICAgICAgPG5nLXRlbXBsYXRlIFtvZHhEeW5hbWljVmlld109XCJidXR0b24ubGFiZWxcIj48L25nLXRlbXBsYXRlPlxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvZGl2PlxuPGRpdiAqbmdJZj1cIm9wdGlvbnMuZXJyb3JNZXNzYWdlIGFzIGVycm9yTWVzc2FnZVwiIGNsYXNzPVwib2R4LWVycm9yLXBhZ2VfX2Zvb3RlclwiPlxuICA8bmctdGVtcGxhdGUgW29keER5bmFtaWNWaWV3XT1cImVycm9yTWVzc2FnZVwiPjwvbmctdGVtcGxhdGU+XG48L2Rpdj5cbiJdfQ==
@@ -7,4 +7,4 @@ export const { ErrorPageConfig, ErrorPageDefaultConfig, injectErrorPageConfig, p
7
7
  export function configureErrorPage(config) {
8
8
  return makeEnvironmentProviders([provideErrorPageConfig(config)]);
9
9
  }
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3ItcGFnZS5jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvY29tcG9uZW50cy9lcnJvci1wYWdlL3NyYy9saWIvZXJyb3ItcGFnZS5jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUF3Qix3QkFBd0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUvRSxPQUFPLEVBQXNDLGtCQUFrQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFlNUYsTUFBTSxDQUFDLE1BQU0sRUFBRSxlQUFlLEVBQUUsc0JBQXNCLEVBQUUscUJBQXFCLEVBQUUsc0JBQXNCLEVBQUUsR0FBRyxrQkFBa0IsQ0FDMUgsV0FBVyxFQUNYLDRCQUE0QixFQUM1QjtJQUNFLEtBQUssRUFBRSxFQUFFO0lBQ1QsT0FBTyxFQUFFLEVBQUU7Q0FDTyxDQUNyQixDQUFDO0FBRUYsTUFBTSxVQUFVLGtCQUFrQixDQUErQixNQUFtRDtJQUNsSCxPQUFPLHdCQUF3QixDQUFDLENBQUMsc0JBQXNCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3BFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbnZpcm9ubWVudFByb3ZpZGVycywgbWFrZUVudmlyb25tZW50UHJvdmlkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEeW5hbWljQ29udGVudCB9IGZyb20gJ0BvZHgvYW5ndWxhci9jZGsvZHluYW1pYy12aWV3JztcbmltcG9ydCB7IENvbmZpZ0RlcGVuZGVuY2llcywgQ29uZmlnUHJvdmlkZXIsIGNyZWF0ZUNvbmZpZ1Rva2VucyB9IGZyb20gJ0BvZHgvYW5ndWxhci91dGlscyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXJyb3JQYWdlQ29uZmlnIHtcbiAgaWNvbj86IHN0cmluZztcbiAgaWNvblNldD86IHN0cmluZztcbiAgdGl0bGU6IHN0cmluZztcbiAgZGVzY3JpcHRpb24/OiBEeW5hbWljQ29udGVudDtcbiAgYWN0aW9uczoge1xuICAgIGxhYmVsOiBzdHJpbmc7XG4gICAgYWN0aW9uOiAoKSA9PiB2b2lkO1xuICB9W107XG5cbiAgZXJyb3JNZXNzYWdlPzogc3RyaW5nO1xufVxuXG5leHBvcnQgY29uc3QgeyBFcnJvclBhZ2VDb25maWcsIEVycm9yUGFnZURlZmF1bHRDb25maWcsIGluamVjdEVycm9yUGFnZUNvbmZpZywgcHJvdmlkZUVycm9yUGFnZUNvbmZpZyB9ID0gY3JlYXRlQ29uZmlnVG9rZW5zKFxuICAnRXJyb3JQYWdlJyxcbiAgJ0BvZHgvY29tcG9uZW50cy9lcnJvci1wYWdlJyxcbiAge1xuICAgIHRpdGxlOiAnJyxcbiAgICBhY3Rpb25zOiBbXSxcbiAgfSBhcyBFcnJvclBhZ2VDb25maWcsXG4pO1xuXG5leHBvcnQgZnVuY3Rpb24gY29uZmlndXJlRXJyb3JQYWdlPEQgZXh0ZW5kcyBDb25maWdEZXBlbmRlbmNpZXM+KGNvbmZpZzogQ29uZmlnUHJvdmlkZXI8UGFydGlhbDxFcnJvclBhZ2VDb25maWc+LCBEPik6IEVudmlyb25tZW50UHJvdmlkZXJzIHtcbiAgcmV0dXJuIG1ha2VFbnZpcm9ubWVudFByb3ZpZGVycyhbcHJvdmlkZUVycm9yUGFnZUNvbmZpZyhjb25maWcpXSk7XG59XG4iXX0=
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3ItcGFnZS5jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvY29tcG9uZW50cy9lcnJvci1wYWdlL3NyYy9saWIvZXJyb3ItcGFnZS5jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUF3Qix3QkFBd0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUvRSxPQUFPLEVBQXNDLGtCQUFrQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFlNUYsTUFBTSxDQUFDLE1BQU0sRUFBRSxlQUFlLEVBQUUsc0JBQXNCLEVBQUUscUJBQXFCLEVBQUUsc0JBQXNCLEVBQUUsR0FBRyxrQkFBa0IsQ0FDMUgsV0FBVyxFQUNYLDRCQUE0QixFQUM1QjtJQUNFLEtBQUssRUFBRSxFQUFFO0lBQ1QsT0FBTyxFQUFFLEVBQUU7Q0FDTyxDQUNyQixDQUFDO0FBRUYsTUFBTSxVQUFVLGtCQUFrQixDQUErQixNQUFtRDtJQUNsSCxPQUFPLHdCQUF3QixDQUFDLENBQUMsc0JBQXNCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3BFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbnZpcm9ubWVudFByb3ZpZGVycywgbWFrZUVudmlyb25tZW50UHJvdmlkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEeW5hbWljQ29udGVudCB9IGZyb20gJ0BvZHgvYW5ndWxhci9jZGsvZHluYW1pYy12aWV3JztcbmltcG9ydCB7IENvbmZpZ0RlcGVuZGVuY2llcywgQ29uZmlnUHJvdmlkZXIsIGNyZWF0ZUNvbmZpZ1Rva2VucyB9IGZyb20gJ0BvZHgvYW5ndWxhci91dGlscyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXJyb3JQYWdlQ29uZmlnIHtcbiAgaWNvbj86IHN0cmluZztcbiAgaWNvblNldD86IHN0cmluZztcbiAgdGl0bGU6IER5bmFtaWNDb250ZW50O1xuICBkZXNjcmlwdGlvbj86IER5bmFtaWNDb250ZW50O1xuICBhY3Rpb25zOiB7XG4gICAgbGFiZWw6IER5bmFtaWNDb250ZW50O1xuICAgIGFjdGlvbjogKCkgPT4gdm9pZDtcbiAgfVtdO1xuXG4gIGVycm9yTWVzc2FnZT86IER5bmFtaWNDb250ZW50O1xufVxuXG5leHBvcnQgY29uc3QgeyBFcnJvclBhZ2VDb25maWcsIEVycm9yUGFnZURlZmF1bHRDb25maWcsIGluamVjdEVycm9yUGFnZUNvbmZpZywgcHJvdmlkZUVycm9yUGFnZUNvbmZpZyB9ID0gY3JlYXRlQ29uZmlnVG9rZW5zKFxuICAnRXJyb3JQYWdlJyxcbiAgJ0BvZHgvY29tcG9uZW50cy9lcnJvci1wYWdlJyxcbiAge1xuICAgIHRpdGxlOiAnJyxcbiAgICBhY3Rpb25zOiBbXSxcbiAgfSBhcyBFcnJvclBhZ2VDb25maWcsXG4pO1xuXG5leHBvcnQgZnVuY3Rpb24gY29uZmlndXJlRXJyb3JQYWdlPEQgZXh0ZW5kcyBDb25maWdEZXBlbmRlbmNpZXM+KGNvbmZpZzogQ29uZmlnUHJvdmlkZXI8UGFydGlhbDxFcnJvclBhZ2VDb25maWc+LCBEPik6IEVudmlyb25tZW50UHJvdmlkZXJzIHtcbiAgcmV0dXJuIG1ha2VFbnZpcm9ubWVudFByb3ZpZGVycyhbcHJvdmlkZUVycm9yUGFnZUNvbmZpZyhjb25maWcpXSk7XG59XG4iXX0=
@@ -1,6 +1,6 @@
1
1
  import { Injectable, Injector, inject, runInInjectionContext } from '@angular/core';
2
2
  import { getLanguageCode } from '@odx/angular/utils';
3
- import { BehaviorSubject, distinctUntilChanged, filter, firstValueFrom, from, shareReplay } from 'rxjs';
3
+ import { BehaviorSubject, distinctUntilChanged, filter, firstValueFrom, from, isObservable, of, shareReplay } from 'rxjs';
4
4
  import { injectLocalizationConfig } from './localization.config';
5
5
  import * as i0 from "@angular/core";
6
6
  export class LocalizationService {
@@ -30,11 +30,21 @@ export class LocalizationService {
30
30
  }
31
31
  async loadActiveLanguage() {
32
32
  return runInInjectionContext(this.injector, async () => {
33
- const activeLanguageLoader$ = from(this.localizationConfig.activeLanguageLoader?.() ?? []);
33
+ const activeLanguageLoader$ = this.createActiveLanguageLoader$();
34
34
  const activeLanguage = await firstValueFrom(activeLanguageLoader$).catch(() => null);
35
35
  this.setActiveLanguage(activeLanguage ?? this.defaultLanguage);
36
36
  });
37
37
  }
38
+ createActiveLanguageLoader$() {
39
+ const language = this.localizationConfig.activeLanguageLoader?.();
40
+ if (isObservable(language)) {
41
+ return language;
42
+ }
43
+ if (language instanceof Promise) {
44
+ return from(language);
45
+ }
46
+ return of(language);
47
+ }
38
48
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: LocalizationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
39
49
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: LocalizationService, providedIn: 'root' }); }
40
50
  }
@@ -42,4 +52,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
42
52
  type: Injectable,
43
53
  args: [{ providedIn: 'root' }]
44
54
  }] });
45
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxpemF0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvbG9jYWxpemF0aW9uL3NyYy9saWIvbG9jYWxpemF0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZUFBZSxFQUFFLG9CQUFvQixFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN4RyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7QUFHakUsTUFBTSxPQUFPLG1CQUFtQjtJQURoQztRQUVtQixhQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzVCLHVCQUFrQixHQUFHLHdCQUF3QixFQUFFLENBQUM7UUFDaEQseUJBQW9CLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDM0UscUJBQWdCLEdBQUcsSUFBSSxlQUFlLENBQXFCLFNBQVMsQ0FBQyxDQUFDO1FBRXZFLG9CQUFlLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsb0JBQW9CLEVBQUUsRUFBRSxXQUFXLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3ZILHVCQUFrQixHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDM0Qsb0JBQWUsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLENBQUM7S0EwQjlEO0lBeEJRLGlCQUFpQjtRQUN0QixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDO0lBQ2xFLENBQUM7SUFFTSxpQkFBaUIsQ0FBQyxRQUFnQjtRQUN2QyxJQUFJLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDM0MsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNyQyxPQUFPO1NBQ1I7UUFDRCxNQUFNLFlBQVksR0FBRyxlQUFlLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDL0MsSUFBSSxJQUFJLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxFQUFFO1lBQy9DLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDekMsT0FBTztTQUNSO1FBQ0QsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVNLEtBQUssQ0FBQyxrQkFBa0I7UUFDN0IsT0FBTyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEtBQUssSUFBSSxFQUFFO1lBQ3JELE1BQU0scUJBQXFCLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxvQkFBb0IsRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7WUFDM0YsTUFBTSxjQUFjLEdBQUcsTUFBTSxjQUFjLENBQUMscUJBQXFCLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDckYsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDakUsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOytHQWpDVSxtQkFBbUI7bUhBQW5CLG1CQUFtQixjQUROLE1BQU07OzRGQUNuQixtQkFBbUI7a0JBRC9CLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0b3IsIGluamVjdCwgcnVuSW5JbmplY3Rpb25Db250ZXh0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBnZXRMYW5ndWFnZUNvZGUgfSBmcm9tICdAb2R4L2FuZ3VsYXIvdXRpbHMnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZmlsdGVyLCBmaXJzdFZhbHVlRnJvbSwgZnJvbSwgc2hhcmVSZXBsYXkgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGluamVjdExvY2FsaXphdGlvbkNvbmZpZyB9IGZyb20gJy4vbG9jYWxpemF0aW9uLmNvbmZpZyc7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgTG9jYWxpemF0aW9uU2VydmljZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuICBwcml2YXRlIHJlYWRvbmx5IGxvY2FsaXphdGlvbkNvbmZpZyA9IGluamVjdExvY2FsaXphdGlvbkNvbmZpZygpO1xuICBwcml2YXRlIHJlYWRvbmx5IGF2YWlsYWJsZUxhbmd1YWdlU2V0ID0gbmV3IFNldCh0aGlzLmxvY2FsaXphdGlvbkNvbmZpZy5hdmFpbGFibGVMYW5ndWFnZXMpO1xuICBwcml2YXRlIHJlYWRvbmx5IGFjdGl2ZUxhbmd1YWdlJCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgYWN0aXZlTGFuZ3VhZ2UkID0gdGhpcy5hY3RpdmVMYW5ndWFnZSQkLnBpcGUoZmlsdGVyKEJvb2xlYW4pLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLCBzaGFyZVJlcGxheSh7IHJlZkNvdW50OiB0cnVlIH0pKTtcbiAgcHVibGljIHJlYWRvbmx5IGF2YWlsYWJsZUxhbmd1YWdlcyA9IEFycmF5LmZyb20odGhpcy5hdmFpbGFibGVMYW5ndWFnZVNldCk7XG4gIHB1YmxpYyByZWFkb25seSBkZWZhdWx0TGFuZ3VhZ2UgPSB0aGlzLmF2YWlsYWJsZUxhbmd1YWdlc1swXTtcblxuICBwdWJsaWMgZ2V0QWN0aXZlTGFuZ3VhZ2UoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5hY3RpdmVMYW5ndWFnZSQkLmdldFZhbHVlKCkgPz8gdGhpcy5kZWZhdWx0TGFuZ3VhZ2U7XG4gIH1cblxuICBwdWJsaWMgc2V0QWN0aXZlTGFuZ3VhZ2UobGFuZ3VhZ2U6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh0aGlzLmF2YWlsYWJsZUxhbmd1YWdlU2V0LmhhcyhsYW5ndWFnZSkpIHtcbiAgICAgIHRoaXMuYWN0aXZlTGFuZ3VhZ2UkJC5uZXh0KGxhbmd1YWdlKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgbGFuZ3VhZ2VDb2RlID0gZ2V0TGFuZ3VhZ2VDb2RlKGxhbmd1YWdlKTtcbiAgICBpZiAodGhpcy5hdmFpbGFibGVMYW5ndWFnZVNldC5oYXMobGFuZ3VhZ2VDb2RlKSkge1xuICAgICAgdGhpcy5hY3RpdmVMYW5ndWFnZSQkLm5leHQobGFuZ3VhZ2VDb2RlKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5hY3RpdmVMYW5ndWFnZSQkLm5leHQodGhpcy5kZWZhdWx0TGFuZ3VhZ2UpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGxvYWRBY3RpdmVMYW5ndWFnZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gcnVuSW5JbmplY3Rpb25Db250ZXh0KHRoaXMuaW5qZWN0b3IsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGFjdGl2ZUxhbmd1YWdlTG9hZGVyJCA9IGZyb20odGhpcy5sb2NhbGl6YXRpb25Db25maWcuYWN0aXZlTGFuZ3VhZ2VMb2FkZXI/LigpID8/IFtdKTtcbiAgICAgIGNvbnN0IGFjdGl2ZUxhbmd1YWdlID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20oYWN0aXZlTGFuZ3VhZ2VMb2FkZXIkKS5jYXRjaCgoKSA9PiBudWxsKTtcbiAgICAgIHRoaXMuc2V0QWN0aXZlTGFuZ3VhZ2UoYWN0aXZlTGFuZ3VhZ2UgPz8gdGhpcy5kZWZhdWx0TGFuZ3VhZ2UpO1xuICAgIH0pO1xuICB9XG59XG4iXX0=
55
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxpemF0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvbG9jYWxpemF0aW9uL3NyYy9saWIvbG9jYWxpemF0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZUFBZSxFQUFjLG9CQUFvQixFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RJLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDOztBQUdqRSxNQUFNLE9BQU8sbUJBQW1CO0lBRGhDO1FBRW1CLGFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDNUIsdUJBQWtCLEdBQUcsd0JBQXdCLEVBQUUsQ0FBQztRQUNoRCx5QkFBb0IsR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUMzRSxxQkFBZ0IsR0FBRyxJQUFJLGVBQWUsQ0FBcUIsU0FBUyxDQUFDLENBQUM7UUFFdkUsb0JBQWUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxvQkFBb0IsRUFBRSxFQUFFLFdBQVcsQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDdkgsdUJBQWtCLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUMzRCxvQkFBZSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQXFDOUQ7SUFuQ1EsaUJBQWlCO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUM7SUFDbEUsQ0FBQztJQUVNLGlCQUFpQixDQUFDLFFBQWdCO1FBQ3ZDLElBQUksSUFBSSxDQUFDLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUMzQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3JDLE9BQU87U0FDUjtRQUNELE1BQU0sWUFBWSxHQUFHLGVBQWUsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMvQyxJQUFJLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLEVBQUU7WUFDL0MsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUN6QyxPQUFPO1NBQ1I7UUFDRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRU0sS0FBSyxDQUFDLGtCQUFrQjtRQUM3QixPQUFPLHFCQUFxQixDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsS0FBSyxJQUFJLEVBQUU7WUFDckQsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLENBQUMsMkJBQTJCLEVBQUUsQ0FBQztZQUNqRSxNQUFNLGNBQWMsR0FBRyxNQUFNLGNBQWMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNyRixJQUFJLENBQUMsaUJBQWlCLENBQUMsY0FBYyxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUNqRSxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTywyQkFBMkI7UUFDakMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLG9CQUFvQixFQUFFLEVBQUUsQ0FBQztRQUNsRSxJQUFJLFlBQVksQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUMxQixPQUFPLFFBQVEsQ0FBQztTQUNqQjtRQUNELElBQUksUUFBUSxZQUFZLE9BQU8sRUFBRTtZQUMvQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUN2QjtRQUNELE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3RCLENBQUM7K0dBNUNVLG1CQUFtQjttSEFBbkIsbUJBQW1CLGNBRE4sTUFBTTs7NEZBQ25CLG1CQUFtQjtrQkFEL0IsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3RvciwgaW5qZWN0LCBydW5JbkluamVjdGlvbkNvbnRleHQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGdldExhbmd1YWdlQ29kZSB9IGZyb20gJ0BvZHgvYW5ndWxhci91dGlscyc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIsIGZpcnN0VmFsdWVGcm9tLCBmcm9tLCBpc09ic2VydmFibGUsIG9mLCBzaGFyZVJlcGxheSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgaW5qZWN0TG9jYWxpemF0aW9uQ29uZmlnIH0gZnJvbSAnLi9sb2NhbGl6YXRpb24uY29uZmlnJztcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBMb2NhbGl6YXRpb25TZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBpbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XG4gIHByaXZhdGUgcmVhZG9ubHkgbG9jYWxpemF0aW9uQ29uZmlnID0gaW5qZWN0TG9jYWxpemF0aW9uQ29uZmlnKCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgYXZhaWxhYmxlTGFuZ3VhZ2VTZXQgPSBuZXcgU2V0KHRoaXMubG9jYWxpemF0aW9uQ29uZmlnLmF2YWlsYWJsZUxhbmd1YWdlcyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgYWN0aXZlTGFuZ3VhZ2UkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuXG4gIHB1YmxpYyByZWFkb25seSBhY3RpdmVMYW5ndWFnZSQgPSB0aGlzLmFjdGl2ZUxhbmd1YWdlJCQucGlwZShmaWx0ZXIoQm9vbGVhbiksIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksIHNoYXJlUmVwbGF5KHsgcmVmQ291bnQ6IHRydWUgfSkpO1xuICBwdWJsaWMgcmVhZG9ubHkgYXZhaWxhYmxlTGFuZ3VhZ2VzID0gQXJyYXkuZnJvbSh0aGlzLmF2YWlsYWJsZUxhbmd1YWdlU2V0KTtcbiAgcHVibGljIHJlYWRvbmx5IGRlZmF1bHRMYW5ndWFnZSA9IHRoaXMuYXZhaWxhYmxlTGFuZ3VhZ2VzWzBdO1xuXG4gIHB1YmxpYyBnZXRBY3RpdmVMYW5ndWFnZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmFjdGl2ZUxhbmd1YWdlJCQuZ2V0VmFsdWUoKSA/PyB0aGlzLmRlZmF1bHRMYW5ndWFnZTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRBY3RpdmVMYW5ndWFnZShsYW5ndWFnZTogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuYXZhaWxhYmxlTGFuZ3VhZ2VTZXQuaGFzKGxhbmd1YWdlKSkge1xuICAgICAgdGhpcy5hY3RpdmVMYW5ndWFnZSQkLm5leHQobGFuZ3VhZ2UpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBsYW5ndWFnZUNvZGUgPSBnZXRMYW5ndWFnZUNvZGUobGFuZ3VhZ2UpO1xuICAgIGlmICh0aGlzLmF2YWlsYWJsZUxhbmd1YWdlU2V0LmhhcyhsYW5ndWFnZUNvZGUpKSB7XG4gICAgICB0aGlzLmFjdGl2ZUxhbmd1YWdlJCQubmV4dChsYW5ndWFnZUNvZGUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmFjdGl2ZUxhbmd1YWdlJCQubmV4dCh0aGlzLmRlZmF1bHRMYW5ndWFnZSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgbG9hZEFjdGl2ZUxhbmd1YWdlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiBydW5JbkluamVjdGlvbkNvbnRleHQodGhpcy5pbmplY3RvciwgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgYWN0aXZlTGFuZ3VhZ2VMb2FkZXIkID0gdGhpcy5jcmVhdGVBY3RpdmVMYW5ndWFnZUxvYWRlciQoKTtcbiAgICAgIGNvbnN0IGFjdGl2ZUxhbmd1YWdlID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20oYWN0aXZlTGFuZ3VhZ2VMb2FkZXIkKS5jYXRjaCgoKSA9PiBudWxsKTtcbiAgICAgIHRoaXMuc2V0QWN0aXZlTGFuZ3VhZ2UoYWN0aXZlTGFuZ3VhZ2UgPz8gdGhpcy5kZWZhdWx0TGFuZ3VhZ2UpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVBY3RpdmVMYW5ndWFnZUxvYWRlciQoKTogT2JzZXJ2YWJsZTxzdHJpbmcgfCB1bmRlZmluZWQ+IHtcbiAgICBjb25zdCBsYW5ndWFnZSA9IHRoaXMubG9jYWxpemF0aW9uQ29uZmlnLmFjdGl2ZUxhbmd1YWdlTG9hZGVyPy4oKTtcbiAgICBpZiAoaXNPYnNlcnZhYmxlKGxhbmd1YWdlKSkge1xuICAgICAgcmV0dXJuIGxhbmd1YWdlO1xuICAgIH1cbiAgICBpZiAobGFuZ3VhZ2UgaW5zdGFuY2VvZiBQcm9taXNlKSB7XG4gICAgICByZXR1cm4gZnJvbShsYW5ndWFnZSk7XG4gICAgfVxuICAgIHJldHVybiBvZihsYW5ndWFnZSk7XG4gIH1cbn1cbiJdfQ==
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFuZ3VhZ2UtbG9hZGVyLWZuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL2xvY2FsaXphdGlvbi9zcmMvbGliL21vZGVscy9sYW5ndWFnZS1sb2FkZXItZm4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGVJbnB1dCB9IGZyb20gJ3J4anMnO1xuXG5leHBvcnQgdHlwZSBMYW5ndWFnZUxvYWRlckZuID0gKCkgPT4gT2JzZXJ2YWJsZUlucHV0PHN0cmluZyB8IHVuZGVmaW5lZD47XG4iXX0=
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFuZ3VhZ2UtbG9hZGVyLWZuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL2xvY2FsaXphdGlvbi9zcmMvbGliL21vZGVscy9sYW5ndWFnZS1sb2FkZXItZm4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuZXhwb3J0IHR5cGUgTGFuZ3VhZ2VMb2FkZXJGbiA9ICgpID0+IE9ic2VydmFibGU8c3RyaW5nIHwgdW5kZWZpbmVkPiB8IFByb21pc2U8c3RyaW5nIHwgdW5kZWZpbmVkPiB8IHN0cmluZyB8IHVuZGVmaW5lZDtcbiJdfQ==
@@ -24,14 +24,14 @@ let ErrorPageComponent = class ErrorPageComponent {
24
24
  this.options = injectErrorPageConfig();
25
25
  }
26
26
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ErrorPageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
27
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ErrorPageComponent, isStandalone: true, selector: "odx-error-page", ngImport: i0, template: "<div class=\"odx-error-page__container\">\n <div class=\"odx-error-page__icon-container\">\n <odx-icon *ngIf=\"options.icon as icon; else logo\" size=\"xlarge\" [name]=\"icon\"></odx-icon>\n <ng-template #logo><odx-logo size=\"large\"></odx-logo></ng-template>\n </div>\n <div class=\"odx-error-page__title\">{{ options.title }}</div>\n <div *ngIf=\"options.description as description\" class=\"odx-error-page__description\">\n <ng-template [odxDynamicView]=\"description\"></ng-template>\n </div>\n <div class=\"odx-error-page__actions\">\n <button *ngFor=\"let button of options.actions; let isFirst = first\" [variant]=\"isFirst ? 'primary' : 'secondary'\" odxButton (click)=\"button.action()\">\n {{ button.label }}\n </button>\n </div>\n</div>\n<div *ngIf=\"options.errorMessage as errorMessage\" class=\"odx-error-page__footer\">{{ errorMessage }}</div>\n", dependencies: [{ kind: "directive", type: LogoDirective, selector: "odx-logo", inputs: ["size", "variant"] }, { kind: "component", type: IconComponent, selector: "odx-icon", inputs: ["inline", "size", "name", "iconSet"] }, { kind: "ngmodule", type: CoreModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ButtonComponent, selector: "button[odxButton], a[odxButton]", inputs: ["variant", "size"] }, { kind: "directive", type: DynamicViewDirective, selector: "ng-template[odxDynamicView]", inputs: ["odxDynamicView", "odxDynamicViewInjector", "odxDynamicViewContext"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
27
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ErrorPageComponent, isStandalone: true, selector: "odx-error-page", ngImport: i0, template: "<div class=\"odx-error-page__container\">\n <div class=\"odx-error-page__icon-container\">\n <odx-icon *ngIf=\"options.icon as icon; else logo\" size=\"xlarge\" [name]=\"icon\"></odx-icon>\n <ng-template #logo><odx-logo size=\"large\"></odx-logo></ng-template>\n </div>\n <div class=\"odx-error-page__title\">\n <ng-template [odxDynamicView]=\"options.title\"></ng-template>\n </div>\n <div *ngIf=\"options.description as description\" class=\"odx-error-page__description\">\n <ng-template [odxDynamicView]=\"description\"></ng-template>\n </div>\n <div class=\"odx-error-page__actions\">\n <button *ngFor=\"let button of options.actions; let isFirst = first\" [variant]=\"isFirst ? 'primary' : 'secondary'\" odxButton (click)=\"button.action()\">\n <ng-template [odxDynamicView]=\"button.label\"></ng-template>\n </button>\n </div>\n</div>\n<div *ngIf=\"options.errorMessage as errorMessage\" class=\"odx-error-page__footer\">\n <ng-template [odxDynamicView]=\"errorMessage\"></ng-template>\n</div>\n", dependencies: [{ kind: "directive", type: LogoDirective, selector: "odx-logo", inputs: ["size", "variant"] }, { kind: "component", type: IconComponent, selector: "odx-icon", inputs: ["inline", "size", "name", "iconSet"] }, { kind: "ngmodule", type: CoreModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ButtonComponent, selector: "button[odxButton], a[odxButton]", inputs: ["variant", "size"] }, { kind: "directive", type: DynamicViewDirective, selector: "ng-template[odxDynamicView]", inputs: ["odxDynamicView", "odxDynamicViewInjector", "odxDynamicViewContext"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
28
28
  };
29
29
  ErrorPageComponent = __decorate([
30
30
  CSSComponent('error-page')
31
31
  ], ErrorPageComponent);
32
32
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ErrorPageComponent, decorators: [{
33
33
  type: Component,
34
- args: [{ standalone: true, selector: 'odx-error-page', imports: [LogoDirective, IconComponent, CoreModule, ButtonComponent, DynamicViewDirective], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div class=\"odx-error-page__container\">\n <div class=\"odx-error-page__icon-container\">\n <odx-icon *ngIf=\"options.icon as icon; else logo\" size=\"xlarge\" [name]=\"icon\"></odx-icon>\n <ng-template #logo><odx-logo size=\"large\"></odx-logo></ng-template>\n </div>\n <div class=\"odx-error-page__title\">{{ options.title }}</div>\n <div *ngIf=\"options.description as description\" class=\"odx-error-page__description\">\n <ng-template [odxDynamicView]=\"description\"></ng-template>\n </div>\n <div class=\"odx-error-page__actions\">\n <button *ngFor=\"let button of options.actions; let isFirst = first\" [variant]=\"isFirst ? 'primary' : 'secondary'\" odxButton (click)=\"button.action()\">\n {{ button.label }}\n </button>\n </div>\n</div>\n<div *ngIf=\"options.errorMessage as errorMessage\" class=\"odx-error-page__footer\">{{ errorMessage }}</div>\n" }]
34
+ args: [{ standalone: true, selector: 'odx-error-page', imports: [LogoDirective, IconComponent, CoreModule, ButtonComponent, DynamicViewDirective], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div class=\"odx-error-page__container\">\n <div class=\"odx-error-page__icon-container\">\n <odx-icon *ngIf=\"options.icon as icon; else logo\" size=\"xlarge\" [name]=\"icon\"></odx-icon>\n <ng-template #logo><odx-logo size=\"large\"></odx-logo></ng-template>\n </div>\n <div class=\"odx-error-page__title\">\n <ng-template [odxDynamicView]=\"options.title\"></ng-template>\n </div>\n <div *ngIf=\"options.description as description\" class=\"odx-error-page__description\">\n <ng-template [odxDynamicView]=\"description\"></ng-template>\n </div>\n <div class=\"odx-error-page__actions\">\n <button *ngFor=\"let button of options.actions; let isFirst = first\" [variant]=\"isFirst ? 'primary' : 'secondary'\" odxButton (click)=\"button.action()\">\n <ng-template [odxDynamicView]=\"button.label\"></ng-template>\n </button>\n </div>\n</div>\n<div *ngIf=\"options.errorMessage as errorMessage\" class=\"odx-error-page__footer\">\n <ng-template [odxDynamicView]=\"errorMessage\"></ng-template>\n</div>\n" }]
35
35
  }] });
36
36
 
37
37
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"odx-angular-components-error-page.mjs","sources":["../../../../libs/angular/components/error-page/src/lib/error-page.config.ts","../../../../libs/angular/components/error-page/src/lib/error-page.component.ts","../../../../libs/angular/components/error-page/src/lib/error-page.component.html","../../../../libs/angular/components/error-page/src/odx-angular-components-error-page.ts"],"sourcesContent":["import { EnvironmentProviders, makeEnvironmentProviders } from '@angular/core';\nimport { DynamicContent } from '@odx/angular/cdk/dynamic-view';\nimport { ConfigDependencies, ConfigProvider, createConfigTokens } from '@odx/angular/utils';\n\nexport interface ErrorPageConfig {\n icon?: string;\n iconSet?: string;\n title: string;\n description?: DynamicContent;\n actions: {\n label: string;\n action: () => void;\n }[];\n\n errorMessage?: string;\n}\n\nexport const { ErrorPageConfig, ErrorPageDefaultConfig, injectErrorPageConfig, provideErrorPageConfig } = createConfigTokens(\n 'ErrorPage',\n '@odx/components/error-page',\n {\n title: '',\n actions: [],\n } as ErrorPageConfig,\n);\n\nexport function configureErrorPage<D extends ConfigDependencies>(config: ConfigProvider<Partial<ErrorPageConfig>, D>): EnvironmentProviders {\n return makeEnvironmentProviders([provideErrorPageConfig(config)]);\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\nimport { CoreModule } from '@odx/angular';\nimport { DynamicViewDirective } from '@odx/angular/cdk/dynamic-view';\nimport { ButtonComponent } from '@odx/angular/components/button';\nimport { IconComponent } from '@odx/angular/components/icon';\nimport { LogoDirective } from '@odx/angular/components/logo';\nimport { CSSComponent } from '@odx/angular/internal';\nimport { injectElement } from '@odx/angular/utils';\nimport { injectErrorPageConfig } from './error-page.config';\n\n@CSSComponent('error-page')\n@Component({\n standalone: true,\n selector: 'odx-error-page',\n templateUrl: './error-page.component.html',\n imports: [LogoDirective, IconComponent, CoreModule, ButtonComponent, DynamicViewDirective],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class ErrorPageComponent {\n public readonly element = injectElement();\n public options = injectErrorPageConfig();\n}\n","<div class=\"odx-error-page__container\">\n <div class=\"odx-error-page__icon-container\">\n <odx-icon *ngIf=\"options.icon as icon; else logo\" size=\"xlarge\" [name]=\"icon\"></odx-icon>\n <ng-template #logo><odx-logo size=\"large\"></odx-logo></ng-template>\n </div>\n <div class=\"odx-error-page__title\">{{ options.title }}</div>\n <div *ngIf=\"options.description as description\" class=\"odx-error-page__description\">\n <ng-template [odxDynamicView]=\"description\"></ng-template>\n </div>\n <div class=\"odx-error-page__actions\">\n <button *ngFor=\"let button of options.actions; let isFirst = first\" [variant]=\"isFirst ? 'primary' : 'secondary'\" odxButton (click)=\"button.action()\">\n {{ button.label }}\n </button>\n </div>\n</div>\n<div *ngIf=\"options.errorMessage as errorMessage\" class=\"odx-error-page__footer\">{{ errorMessage }}</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;;AAiBa,MAAA,EAAE,eAAe,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,GAAG,kBAAkB,CAC1H,WAAW,EACX,4BAA4B,EAC5B;AACE,IAAA,KAAK,EAAE,EAAE;AACT,IAAA,OAAO,EAAE,EAAE;AACO,CAAA,EACpB;AAEI,SAAU,kBAAkB,CAA+B,MAAmD,EAAA;IAClH,OAAO,wBAAwB,CAAC,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACpE;;ACTa,IAAA,kBAAkB,GAAxB,MAAM,kBAAkB,CAAA;AAAxB,IAAA,WAAA,GAAA;QACW,IAAO,CAAA,OAAA,GAAG,aAAa,EAAE,CAAC;QACnC,IAAO,CAAA,OAAA,GAAG,qBAAqB,EAAE,CAAC;AAC1C,KAAA;+GAHY,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECnB/B,03BAgBA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDDY,aAAa,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,aAAa,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,MAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,UAAU,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,eAAe,EAAA,QAAA,EAAA,iCAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,oBAAoB,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,wBAAA,EAAA,uBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;AAI9E,kBAAkB,GAAA,UAAA,CAAA;IAT9B,YAAY,CAAC,YAAY,CAAC;AASd,CAAA,EAAA,kBAAkB,CAG9B,CAAA;4FAHY,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAR9B,SAAS;iCACI,IAAI,EAAA,QAAA,EACN,gBAAgB,EAEjB,OAAA,EAAA,CAAC,aAAa,EAAE,aAAa,EAAE,UAAU,EAAE,eAAe,EAAE,oBAAoB,CAAC,EACzE,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,aAAA,EAChC,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,03BAAA,EAAA,CAAA;;;AEjBvC;;AAEG;;;;"}
1
+ {"version":3,"file":"odx-angular-components-error-page.mjs","sources":["../../../../libs/angular/components/error-page/src/lib/error-page.config.ts","../../../../libs/angular/components/error-page/src/lib/error-page.component.ts","../../../../libs/angular/components/error-page/src/lib/error-page.component.html","../../../../libs/angular/components/error-page/src/odx-angular-components-error-page.ts"],"sourcesContent":["import { EnvironmentProviders, makeEnvironmentProviders } from '@angular/core';\nimport { DynamicContent } from '@odx/angular/cdk/dynamic-view';\nimport { ConfigDependencies, ConfigProvider, createConfigTokens } from '@odx/angular/utils';\n\nexport interface ErrorPageConfig {\n icon?: string;\n iconSet?: string;\n title: DynamicContent;\n description?: DynamicContent;\n actions: {\n label: DynamicContent;\n action: () => void;\n }[];\n\n errorMessage?: DynamicContent;\n}\n\nexport const { ErrorPageConfig, ErrorPageDefaultConfig, injectErrorPageConfig, provideErrorPageConfig } = createConfigTokens(\n 'ErrorPage',\n '@odx/components/error-page',\n {\n title: '',\n actions: [],\n } as ErrorPageConfig,\n);\n\nexport function configureErrorPage<D extends ConfigDependencies>(config: ConfigProvider<Partial<ErrorPageConfig>, D>): EnvironmentProviders {\n return makeEnvironmentProviders([provideErrorPageConfig(config)]);\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\nimport { CoreModule } from '@odx/angular';\nimport { DynamicViewDirective } from '@odx/angular/cdk/dynamic-view';\nimport { ButtonComponent } from '@odx/angular/components/button';\nimport { IconComponent } from '@odx/angular/components/icon';\nimport { LogoDirective } from '@odx/angular/components/logo';\nimport { CSSComponent } from '@odx/angular/internal';\nimport { injectElement } from '@odx/angular/utils';\nimport { injectErrorPageConfig } from './error-page.config';\n\n@CSSComponent('error-page')\n@Component({\n standalone: true,\n selector: 'odx-error-page',\n templateUrl: './error-page.component.html',\n imports: [LogoDirective, IconComponent, CoreModule, ButtonComponent, DynamicViewDirective],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class ErrorPageComponent {\n public readonly element = injectElement();\n public options = injectErrorPageConfig();\n}\n","<div class=\"odx-error-page__container\">\n <div class=\"odx-error-page__icon-container\">\n <odx-icon *ngIf=\"options.icon as icon; else logo\" size=\"xlarge\" [name]=\"icon\"></odx-icon>\n <ng-template #logo><odx-logo size=\"large\"></odx-logo></ng-template>\n </div>\n <div class=\"odx-error-page__title\">\n <ng-template [odxDynamicView]=\"options.title\"></ng-template>\n </div>\n <div *ngIf=\"options.description as description\" class=\"odx-error-page__description\">\n <ng-template [odxDynamicView]=\"description\"></ng-template>\n </div>\n <div class=\"odx-error-page__actions\">\n <button *ngFor=\"let button of options.actions; let isFirst = first\" [variant]=\"isFirst ? 'primary' : 'secondary'\" odxButton (click)=\"button.action()\">\n <ng-template [odxDynamicView]=\"button.label\"></ng-template>\n </button>\n </div>\n</div>\n<div *ngIf=\"options.errorMessage as errorMessage\" class=\"odx-error-page__footer\">\n <ng-template [odxDynamicView]=\"errorMessage\"></ng-template>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;;AAiBa,MAAA,EAAE,eAAe,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,GAAG,kBAAkB,CAC1H,WAAW,EACX,4BAA4B,EAC5B;AACE,IAAA,KAAK,EAAE,EAAE;AACT,IAAA,OAAO,EAAE,EAAE;AACO,CAAA,EACpB;AAEI,SAAU,kBAAkB,CAA+B,MAAmD,EAAA;IAClH,OAAO,wBAAwB,CAAC,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACpE;;ACTa,IAAA,kBAAkB,GAAxB,MAAM,kBAAkB,CAAA;AAAxB,IAAA,WAAA,GAAA;QACW,IAAO,CAAA,OAAA,GAAG,aAAa,EAAE,CAAC;QACnC,IAAO,CAAA,OAAA,GAAG,qBAAqB,EAAE,CAAC;AAC1C,KAAA;+GAHY,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECnB/B,2gCAoBA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDLY,aAAa,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,aAAa,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,MAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,UAAU,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,eAAe,EAAA,QAAA,EAAA,iCAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,oBAAoB,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,wBAAA,EAAA,uBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;AAI9E,kBAAkB,GAAA,UAAA,CAAA;IAT9B,YAAY,CAAC,YAAY,CAAC;AASd,CAAA,EAAA,kBAAkB,CAG9B,CAAA;4FAHY,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAR9B,SAAS;iCACI,IAAI,EAAA,QAAA,EACN,gBAAgB,EAEjB,OAAA,EAAA,CAAC,aAAa,EAAE,aAAa,EAAE,UAAU,EAAE,eAAe,EAAE,oBAAoB,CAAC,EACzE,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,aAAA,EAChC,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,2gCAAA,EAAA,CAAA;;;AEjBvC;;AAEG;;;;"}
@@ -2,7 +2,7 @@ import { provideHttpClient, withInterceptors } from '@angular/common/http';
2
2
  import * as i0 from '@angular/core';
3
3
  import { makeEnvironmentProviders, APP_INITIALIZER, inject, Injector, runInInjectionContext, Injectable } from '@angular/core';
4
4
  import { createConfigTokens, getLanguageCode, matchUrl } from '@odx/angular/utils';
5
- import { BehaviorSubject, filter, distinctUntilChanged, shareReplay, from, firstValueFrom, take, switchMap } from 'rxjs';
5
+ import { BehaviorSubject, filter, distinctUntilChanged, shareReplay, firstValueFrom, isObservable, from, of, take, switchMap } from 'rxjs';
6
6
  import { WindowRef } from '@odx/angular';
7
7
 
8
8
  const DEFAULT_AVAILABLE_LANGUAGES = ['en', 'de', 'es', 'fr', 'ja'];
@@ -50,11 +50,21 @@ class LocalizationService {
50
50
  }
51
51
  async loadActiveLanguage() {
52
52
  return runInInjectionContext(this.injector, async () => {
53
- const activeLanguageLoader$ = from(this.localizationConfig.activeLanguageLoader?.() ?? []);
53
+ const activeLanguageLoader$ = this.createActiveLanguageLoader$();
54
54
  const activeLanguage = await firstValueFrom(activeLanguageLoader$).catch(() => null);
55
55
  this.setActiveLanguage(activeLanguage ?? this.defaultLanguage);
56
56
  });
57
57
  }
58
+ createActiveLanguageLoader$() {
59
+ const language = this.localizationConfig.activeLanguageLoader?.();
60
+ if (isObservable(language)) {
61
+ return language;
62
+ }
63
+ if (language instanceof Promise) {
64
+ return from(language);
65
+ }
66
+ return of(language);
67
+ }
58
68
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: LocalizationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
59
69
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: LocalizationService, providedIn: 'root' }); }
60
70
  }
@@ -1 +1 @@
1
- {"version":3,"file":"odx-angular-localization.mjs","sources":["../../../../libs/angular/localization/src/lib/localization.config.ts","../../../../libs/angular/localization/src/lib/localization.service.ts","../../../../libs/angular/localization/src/lib/models/localization-feature.ts","../../../../libs/angular/localization/src/lib/features/with-http-language-header.ts","../../../../libs/angular/localization/src/lib/features/with-http-language-query-param.ts","../../../../libs/angular/localization/src/lib/loaders/browser-language-loader.ts","../../../../libs/angular/localization/src/odx-angular-localization.ts"],"sourcesContent":["import { APP_INITIALIZER, EnvironmentProviders, makeEnvironmentProviders } from '@angular/core';\nimport { createConfigTokens } from '@odx/angular/utils';\nimport { LocalizationService } from './localization.service';\nimport { LanguageLoaderFn, LocalizationFeature } from './models';\n\nexport const DEFAULT_AVAILABLE_LANGUAGES = ['en', 'de', 'es', 'fr', 'ja'];\n\nexport interface LocalizationConfig {\n activeLanguageLoader?: LanguageLoaderFn;\n availableLanguages: string[];\n}\n\nexport const { LocalizationConfig, LocalizationDefaultConfig, injectLocalizationConfig, provideLocalizationConfig } = createConfigTokens(\n 'Localization',\n '@odx/angular/internal/translate',\n {\n availableLanguages: DEFAULT_AVAILABLE_LANGUAGES,\n availableLocales: DEFAULT_AVAILABLE_LANGUAGES,\n } as LocalizationConfig,\n);\n\nexport function provideLocalization(config: Partial<LocalizationConfig>, ...features: LocalizationFeature[]): EnvironmentProviders {\n return makeEnvironmentProviders([\n provideLocalizationConfig(config),\n {\n provide: APP_INITIALIZER,\n useFactory: (localizationService: LocalizationService) => () => localizationService.loadActiveLanguage(),\n deps: [LocalizationService],\n multi: true,\n },\n features,\n ]);\n}\n","import { Injectable, Injector, inject, runInInjectionContext } from '@angular/core';\nimport { getLanguageCode } from '@odx/angular/utils';\nimport { BehaviorSubject, distinctUntilChanged, filter, firstValueFrom, from, shareReplay } from 'rxjs';\nimport { injectLocalizationConfig } from './localization.config';\n\n@Injectable({ providedIn: 'root' })\nexport class LocalizationService {\n private readonly injector = inject(Injector);\n private readonly localizationConfig = injectLocalizationConfig();\n private readonly availableLanguageSet = new Set(this.localizationConfig.availableLanguages);\n private readonly activeLanguage$$ = new BehaviorSubject<string | undefined>(undefined);\n\n public readonly activeLanguage$ = this.activeLanguage$$.pipe(filter(Boolean), distinctUntilChanged(), shareReplay({ refCount: true }));\n public readonly availableLanguages = Array.from(this.availableLanguageSet);\n public readonly defaultLanguage = this.availableLanguages[0];\n\n public getActiveLanguage(): string {\n return this.activeLanguage$$.getValue() ?? this.defaultLanguage;\n }\n\n public setActiveLanguage(language: string): void {\n if (this.availableLanguageSet.has(language)) {\n this.activeLanguage$$.next(language);\n return;\n }\n const languageCode = getLanguageCode(language);\n if (this.availableLanguageSet.has(languageCode)) {\n this.activeLanguage$$.next(languageCode);\n return;\n }\n this.activeLanguage$$.next(this.defaultLanguage);\n }\n\n public async loadActiveLanguage(): Promise<void> {\n return runInInjectionContext(this.injector, async () => {\n const activeLanguageLoader$ = from(this.localizationConfig.activeLanguageLoader?.() ?? []);\n const activeLanguage = await firstValueFrom(activeLanguageLoader$).catch(() => null);\n this.setActiveLanguage(activeLanguage ?? this.defaultLanguage);\n });\n }\n}\n","import { EnvironmentProviders, Provider } from '@angular/core';\n\nexport type LocalizationFeature = EnvironmentProviders & { ɵodxBrand: '@odx/angular/localization::LocalizationFeature' };\n\nexport function makeLocalizationFeature(provider: Provider[] | EnvironmentProviders): LocalizationFeature {\n return provider as never as LocalizationFeature;\n}\n","import { HttpInterceptorFn, provideHttpClient, withInterceptors } from '@angular/common/http';\nimport { inject } from '@angular/core';\nimport { matchUrl } from '@odx/angular/utils';\nimport { switchMap, take } from 'rxjs';\nimport { LocalizationService } from '../localization.service';\nimport { LocalizationFeature, makeLocalizationFeature } from '../models';\n\nexport const HTTP_LANGUAGE_HEADER = 'Accept-Language';\n\nexport interface HttpLanguageHeaderInterceptorConfig {\n allowedUrls: Array<string | RegExp>;\n headerName?: string;\n}\n\nexport function httpLanguageHeaderInterceptor({ allowedUrls, headerName }: HttpLanguageHeaderInterceptorConfig): HttpInterceptorFn {\n return (req, next) => {\n const language$ = inject(LocalizationService).activeLanguage$.pipe(take(1));\n for (const allowedUrl of allowedUrls) {\n if (!matchUrl(req.url, allowedUrl)) continue;\n return language$.pipe(switchMap((language) => next(req.clone({ setHeaders: { [headerName ?? HTTP_LANGUAGE_HEADER]: language } }))));\n }\n return next(req);\n };\n}\n\nexport function withHttpLanguageHeader(config: HttpLanguageHeaderInterceptorConfig): LocalizationFeature {\n const providers = provideHttpClient(withInterceptors([httpLanguageHeaderInterceptor(config)]));\n\n return makeLocalizationFeature(providers);\n}\n","import { HttpInterceptorFn, provideHttpClient, withInterceptors } from '@angular/common/http';\nimport { inject } from '@angular/core';\nimport { matchUrl } from '@odx/angular/utils';\nimport { switchMap, take } from 'rxjs';\nimport { LocalizationService } from '../localization.service';\nimport { LocalizationFeature, makeLocalizationFeature } from '../models';\n\nexport const HTTP_LANGUAGE_QUERY = 'language';\n\nexport interface HttpLanguageQueryParamInterceptorConfig {\n allowedUrls: Array<string | RegExp>;\n queryParamName?: string;\n}\n\nexport function withHttpLanguageQueryParamInterceptor({ allowedUrls, queryParamName }: HttpLanguageQueryParamInterceptorConfig): HttpInterceptorFn {\n return (req, next) => {\n const language$ = inject(LocalizationService).activeLanguage$.pipe(take(1));\n for (const allowedUrl of allowedUrls) {\n if (!matchUrl(req.url, allowedUrl)) continue;\n return language$.pipe(switchMap((language) => next(req.clone({ setParams: { [queryParamName ?? HTTP_LANGUAGE_QUERY]: language } }))));\n }\n return next(req);\n };\n}\n\nexport function withHttpLanguageQueryParam(config: HttpLanguageQueryParamInterceptorConfig): LocalizationFeature {\n const providers = provideHttpClient(withInterceptors([withHttpLanguageQueryParamInterceptor(config)]));\n\n return makeLocalizationFeature(providers);\n}\n","import { inject } from '@angular/core';\nimport { WindowRef } from '@odx/angular';\nimport { LanguageLoaderFn } from '../models';\n\nexport const browserLanguageLoader: LanguageLoaderFn = async () => {\n return inject(WindowRef).getLanguage();\n};\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"odx-angular-localization.mjs","sources":["../../../../libs/angular/localization/src/lib/localization.config.ts","../../../../libs/angular/localization/src/lib/localization.service.ts","../../../../libs/angular/localization/src/lib/models/localization-feature.ts","../../../../libs/angular/localization/src/lib/features/with-http-language-header.ts","../../../../libs/angular/localization/src/lib/features/with-http-language-query-param.ts","../../../../libs/angular/localization/src/lib/loaders/browser-language-loader.ts","../../../../libs/angular/localization/src/odx-angular-localization.ts"],"sourcesContent":["import { APP_INITIALIZER, EnvironmentProviders, makeEnvironmentProviders } from '@angular/core';\nimport { createConfigTokens } from '@odx/angular/utils';\nimport { LocalizationService } from './localization.service';\nimport { LanguageLoaderFn, LocalizationFeature } from './models';\n\nexport const DEFAULT_AVAILABLE_LANGUAGES = ['en', 'de', 'es', 'fr', 'ja'];\n\nexport interface LocalizationConfig {\n activeLanguageLoader?: LanguageLoaderFn;\n availableLanguages: string[];\n}\n\nexport const { LocalizationConfig, LocalizationDefaultConfig, injectLocalizationConfig, provideLocalizationConfig } = createConfigTokens(\n 'Localization',\n '@odx/angular/internal/translate',\n {\n availableLanguages: DEFAULT_AVAILABLE_LANGUAGES,\n availableLocales: DEFAULT_AVAILABLE_LANGUAGES,\n } as LocalizationConfig,\n);\n\nexport function provideLocalization(config: Partial<LocalizationConfig>, ...features: LocalizationFeature[]): EnvironmentProviders {\n return makeEnvironmentProviders([\n provideLocalizationConfig(config),\n {\n provide: APP_INITIALIZER,\n useFactory: (localizationService: LocalizationService) => () => localizationService.loadActiveLanguage(),\n deps: [LocalizationService],\n multi: true,\n },\n features,\n ]);\n}\n","import { Injectable, Injector, inject, runInInjectionContext } from '@angular/core';\nimport { getLanguageCode } from '@odx/angular/utils';\nimport { BehaviorSubject, Observable, distinctUntilChanged, filter, firstValueFrom, from, isObservable, of, shareReplay } from 'rxjs';\nimport { injectLocalizationConfig } from './localization.config';\n\n@Injectable({ providedIn: 'root' })\nexport class LocalizationService {\n private readonly injector = inject(Injector);\n private readonly localizationConfig = injectLocalizationConfig();\n private readonly availableLanguageSet = new Set(this.localizationConfig.availableLanguages);\n private readonly activeLanguage$$ = new BehaviorSubject<string | undefined>(undefined);\n\n public readonly activeLanguage$ = this.activeLanguage$$.pipe(filter(Boolean), distinctUntilChanged(), shareReplay({ refCount: true }));\n public readonly availableLanguages = Array.from(this.availableLanguageSet);\n public readonly defaultLanguage = this.availableLanguages[0];\n\n public getActiveLanguage(): string {\n return this.activeLanguage$$.getValue() ?? this.defaultLanguage;\n }\n\n public setActiveLanguage(language: string): void {\n if (this.availableLanguageSet.has(language)) {\n this.activeLanguage$$.next(language);\n return;\n }\n const languageCode = getLanguageCode(language);\n if (this.availableLanguageSet.has(languageCode)) {\n this.activeLanguage$$.next(languageCode);\n return;\n }\n this.activeLanguage$$.next(this.defaultLanguage);\n }\n\n public async loadActiveLanguage(): Promise<void> {\n return runInInjectionContext(this.injector, async () => {\n const activeLanguageLoader$ = this.createActiveLanguageLoader$();\n const activeLanguage = await firstValueFrom(activeLanguageLoader$).catch(() => null);\n this.setActiveLanguage(activeLanguage ?? this.defaultLanguage);\n });\n }\n\n private createActiveLanguageLoader$(): Observable<string | undefined> {\n const language = this.localizationConfig.activeLanguageLoader?.();\n if (isObservable(language)) {\n return language;\n }\n if (language instanceof Promise) {\n return from(language);\n }\n return of(language);\n }\n}\n","import { EnvironmentProviders, Provider } from '@angular/core';\n\nexport type LocalizationFeature = EnvironmentProviders & { ɵodxBrand: '@odx/angular/localization::LocalizationFeature' };\n\nexport function makeLocalizationFeature(provider: Provider[] | EnvironmentProviders): LocalizationFeature {\n return provider as never as LocalizationFeature;\n}\n","import { HttpInterceptorFn, provideHttpClient, withInterceptors } from '@angular/common/http';\nimport { inject } from '@angular/core';\nimport { matchUrl } from '@odx/angular/utils';\nimport { switchMap, take } from 'rxjs';\nimport { LocalizationService } from '../localization.service';\nimport { LocalizationFeature, makeLocalizationFeature } from '../models';\n\nexport const HTTP_LANGUAGE_HEADER = 'Accept-Language';\n\nexport interface HttpLanguageHeaderInterceptorConfig {\n allowedUrls: Array<string | RegExp>;\n headerName?: string;\n}\n\nexport function httpLanguageHeaderInterceptor({ allowedUrls, headerName }: HttpLanguageHeaderInterceptorConfig): HttpInterceptorFn {\n return (req, next) => {\n const language$ = inject(LocalizationService).activeLanguage$.pipe(take(1));\n for (const allowedUrl of allowedUrls) {\n if (!matchUrl(req.url, allowedUrl)) continue;\n return language$.pipe(switchMap((language) => next(req.clone({ setHeaders: { [headerName ?? HTTP_LANGUAGE_HEADER]: language } }))));\n }\n return next(req);\n };\n}\n\nexport function withHttpLanguageHeader(config: HttpLanguageHeaderInterceptorConfig): LocalizationFeature {\n const providers = provideHttpClient(withInterceptors([httpLanguageHeaderInterceptor(config)]));\n\n return makeLocalizationFeature(providers);\n}\n","import { HttpInterceptorFn, provideHttpClient, withInterceptors } from '@angular/common/http';\nimport { inject } from '@angular/core';\nimport { matchUrl } from '@odx/angular/utils';\nimport { switchMap, take } from 'rxjs';\nimport { LocalizationService } from '../localization.service';\nimport { LocalizationFeature, makeLocalizationFeature } from '../models';\n\nexport const HTTP_LANGUAGE_QUERY = 'language';\n\nexport interface HttpLanguageQueryParamInterceptorConfig {\n allowedUrls: Array<string | RegExp>;\n queryParamName?: string;\n}\n\nexport function withHttpLanguageQueryParamInterceptor({ allowedUrls, queryParamName }: HttpLanguageQueryParamInterceptorConfig): HttpInterceptorFn {\n return (req, next) => {\n const language$ = inject(LocalizationService).activeLanguage$.pipe(take(1));\n for (const allowedUrl of allowedUrls) {\n if (!matchUrl(req.url, allowedUrl)) continue;\n return language$.pipe(switchMap((language) => next(req.clone({ setParams: { [queryParamName ?? HTTP_LANGUAGE_QUERY]: language } }))));\n }\n return next(req);\n };\n}\n\nexport function withHttpLanguageQueryParam(config: HttpLanguageQueryParamInterceptorConfig): LocalizationFeature {\n const providers = provideHttpClient(withInterceptors([withHttpLanguageQueryParamInterceptor(config)]));\n\n return makeLocalizationFeature(providers);\n}\n","import { inject } from '@angular/core';\nimport { WindowRef } from '@odx/angular';\nimport { LanguageLoaderFn } from '../models';\n\nexport const browserLanguageLoader: LanguageLoaderFn = async () => {\n return inject(WindowRef).getLanguage();\n};\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,15 +1,17 @@
1
+ import { Observable } from 'rxjs';
1
2
  import * as i0 from "@angular/core";
2
3
  export declare class LocalizationService {
3
4
  private readonly injector;
4
5
  private readonly localizationConfig;
5
6
  private readonly availableLanguageSet;
6
7
  private readonly activeLanguage$$;
7
- readonly activeLanguage$: import("rxjs").Observable<string>;
8
+ readonly activeLanguage$: Observable<string>;
8
9
  readonly availableLanguages: string[];
9
10
  readonly defaultLanguage: string;
10
11
  getActiveLanguage(): string;
11
12
  setActiveLanguage(language: string): void;
12
13
  loadActiveLanguage(): Promise<void>;
14
+ private createActiveLanguageLoader$;
13
15
  static ɵfac: i0.ɵɵFactoryDeclaration<LocalizationService, never>;
14
16
  static ɵprov: i0.ɵɵInjectableDeclaration<LocalizationService>;
15
17
  }
@@ -1,2 +1,2 @@
1
- import { ObservableInput } from 'rxjs';
2
- export type LanguageLoaderFn = () => ObservableInput<string | undefined>;
1
+ import { Observable } from 'rxjs';
2
+ export type LanguageLoaderFn = () => Observable<string | undefined> | Promise<string | undefined> | string | undefined;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@odx/angular",
3
- "version": "5.0.0",
3
+ "version": "5.0.2",
4
4
  "author": "Drägerwerk AG & Co.KGaA",
5
5
  "license": "SEE LICENSE IN LICENSE",
6
6
  "peerDependencies": {