@rxap/layout 16.0.0-dev.2 → 16.0.0-dev.21

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 (75) hide show
  1. package/CHANGELOG.md +442 -0
  2. package/LICENSE +621 -21
  3. package/LICENSE.md +621 -0
  4. package/README.md +7 -22
  5. package/esm2022/index.mjs +5 -6
  6. package/esm2022/lib/app-url.service.mjs +64 -0
  7. package/esm2022/lib/footer/footer.component.mjs +10 -41
  8. package/esm2022/lib/footer.directive.mjs +21 -22
  9. package/esm2022/lib/header/apps-button/apps-button.component.mjs +40 -120
  10. package/esm2022/lib/header/header.component.mjs +64 -141
  11. package/esm2022/lib/header/language-selector/language-selector.component.mjs +22 -115
  12. package/esm2022/lib/header/navigation-progress-bar/navigation-progress-bar.component.mjs +19 -24
  13. package/esm2022/lib/header/reset-button/reset-button.component.mjs +12 -19
  14. package/esm2022/lib/header/settings-button/settings-button.component.mjs +46 -0
  15. package/esm2022/lib/header/sidenav-toggle-button/sidenav-toggle-button.component.mjs +16 -39
  16. package/esm2022/lib/header/sign-out/sign-out.component.mjs +17 -28
  17. package/esm2022/lib/header/user-profile-icon/user-profile-icon.component.mjs +32 -117
  18. package/esm2022/lib/i18n-check.guard.mjs +30 -0
  19. package/esm2022/lib/i18n.service.mjs +36 -0
  20. package/esm2022/lib/language-selector.service.mjs +34 -0
  21. package/esm2022/lib/layout/layout.component.mjs +61 -91
  22. package/esm2022/lib/layout/layout.component.service.mjs +21 -22
  23. package/esm2022/lib/navigation/navigation-item/navigation-item.component.mjs +116 -264
  24. package/esm2022/lib/navigation/navigation-item.mjs +4 -4
  25. package/esm2022/lib/navigation/navigation.component.mjs +46 -106
  26. package/esm2022/lib/navigation/navigation.service.mjs +28 -27
  27. package/esm2022/lib/navigation/replace-router-paths.service.mjs +9 -10
  28. package/esm2022/lib/sidenav/sidenav-footer.directive.mjs +15 -16
  29. package/esm2022/lib/sidenav/sidenav-header.directive.mjs +15 -16
  30. package/esm2022/lib/sidenav/sidenav.component.mjs +29 -121
  31. package/esm2022/lib/sidenav/sidenav.component.service.mjs +8 -9
  32. package/esm2022/lib/sidenav/version/version.component.mjs +14 -48
  33. package/esm2022/lib/toggle-window-sidenav-button/toggle-window-sidenav-button.component.mjs +15 -38
  34. package/esm2022/lib/tokens.mjs +1 -1
  35. package/esm2022/lib/types.mjs +1 -1
  36. package/esm2022/lib/window-container-sidenav/window-container-sidenav.component.mjs +14 -33
  37. package/esm2022/rxap-layout.mjs +1 -1
  38. package/fesm2022/rxap-layout.mjs +824 -1534
  39. package/fesm2022/rxap-layout.mjs.map +1 -1
  40. package/index.d.ts +4 -3
  41. package/lib/app-url.service.d.ts +26 -0
  42. package/lib/footer.directive.d.ts +1 -1
  43. package/lib/header/apps-button/apps-button.component.d.ts +12 -20
  44. package/lib/header/header.component.d.ts +7 -12
  45. package/lib/header/language-selector/language-selector.component.d.ts +1 -16
  46. package/lib/header/settings-button/settings-button.component.d.ts +19 -0
  47. package/lib/header/sidenav-toggle-button/sidenav-toggle-button.component.d.ts +1 -1
  48. package/lib/header/sign-out/sign-out.component.d.ts +4 -4
  49. package/lib/header/user-profile-icon/user-profile-icon.component.d.ts +11 -7
  50. package/lib/i18n-check.guard.d.ts +11 -0
  51. package/lib/i18n.service.d.ts +12 -0
  52. package/lib/language-selector.service.d.ts +15 -0
  53. package/lib/layout/layout.component.d.ts +9 -4
  54. package/lib/navigation/navigation-item/navigation-item.component.d.ts +11 -18
  55. package/lib/navigation/navigation-item.d.ts +1 -1
  56. package/lib/navigation/navigation.component.d.ts +6 -6
  57. package/lib/navigation/navigation.service.d.ts +1 -1
  58. package/lib/sidenav/version/version.component.d.ts +2 -2
  59. package/lib/toggle-window-sidenav-button/toggle-window-sidenav-button.component.d.ts +2 -4
  60. package/lib/types.d.ts +3 -2
  61. package/lib/window-container-sidenav/window-container-sidenav.component.d.ts +1 -1
  62. package/package.json +101 -66
  63. package/theme.css +1 -0
  64. package/collection.json +0 -10
  65. package/esm2022/lib/layout/layout.component.module.mjs +0 -32
  66. package/esm2022/lib/sidenav-content/sidenav-content.component.mjs +0 -46
  67. package/esm2022/lib/sidenav-content/sidenav-content.component.service.mjs +0 -37
  68. package/lib/layout/layout.component.module.d.ts +0 -10
  69. package/lib/sidenav-content/sidenav-content.component.d.ts +0 -12
  70. package/lib/sidenav-content/sidenav-content.component.service.d.ts +0 -15
  71. package/migration.json +0 -4
  72. package/src/schematics/ng-add/index.d.ts +0 -2
  73. package/src/schematics/ng-add/index.js +0 -8
  74. package/src/schematics/ng-add/index.js.map +0 -1
  75. package/src/schematics/ng-add/schema.json +0 -7
@@ -0,0 +1,46 @@
1
+ import { ComponentPortal, PortalModule, } from '@angular/cdk/portal';
2
+ import { CommonModule } from '@angular/common';
3
+ import { Component, Injector, isDevMode, signal, } from '@angular/core';
4
+ import { MatButtonModule } from '@angular/material/button';
5
+ import { MatIconModule } from '@angular/material/icon';
6
+ import { MatMenuModule } from '@angular/material/menu';
7
+ import { ActivatedRoute } from '@angular/router';
8
+ import { ThemeService } from '@rxap/services';
9
+ import { map, tap, } from 'rxjs/operators';
10
+ import { LanguageSelectorComponent } from '../language-selector/language-selector.component';
11
+ import * as i0 from "@angular/core";
12
+ import * as i1 from "@rxap/services";
13
+ import * as i2 from "@angular/router";
14
+ import * as i3 from "@angular/common";
15
+ import * as i4 from "@angular/material/button";
16
+ import * as i5 from "@angular/material/icon";
17
+ import * as i6 from "@angular/material/menu";
18
+ import * as i7 from "@angular/cdk/portal";
19
+ export class SettingsButtonComponent {
20
+ constructor(theme, route, injector) {
21
+ this.theme = theme;
22
+ this.route = route;
23
+ this.injector = injector;
24
+ this.isDevMode = isDevMode();
25
+ this.items = signal([]);
26
+ }
27
+ ngOnDestroy() {
28
+ this._subscription?.unsubscribe();
29
+ }
30
+ ngOnInit() {
31
+ this._subscription = this.route.data.pipe(map(data => this.getCustomMenuItems(data)), map(items => items.map(item => new ComponentPortal(item, undefined, this.injector))), tap(items => this.items.set(items))).subscribe();
32
+ }
33
+ getCustomMenuItems(data) {
34
+ if (data?.layout?.header?.menu?.items?.length) {
35
+ return data.layout.header.menu.items;
36
+ }
37
+ return [];
38
+ }
39
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: SettingsButtonComponent, deps: [{ token: i1.ThemeService }, { token: i2.ActivatedRoute }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
40
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.4", type: SettingsButtonComponent, isStandalone: true, selector: "rxap-settings-button", ngImport: i0, template: "<button [matMenuTriggerFor]=\"menu\" mat-icon-button>\n <mat-icon svgIcon=\"cog\"></mat-icon>\n</button>\n\n<mat-menu #menu=\"matMenu\">\n <button (click)=\"theme.toggleDarkTheme()\" mat-menu-item>\n <mat-icon *ngIf=\"theme.darkMode\" svgIcon=\"brightness-2\"></mat-icon>\n <mat-icon *ngIf=\"!theme.darkMode\" svgIcon=\"brightness-5\"></mat-icon>\n <span i18n>Mode</span>\n </button>\n <rxap-language-selector *ngIf=\"!isDevMode\"></rxap-language-selector>\n <ng-container *ngFor=\"let item of items()\">\n <ng-template [cdkPortalOutlet]=\"item\"></ng-template>\n </ng-container>\n</mat-menu>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: LanguageSelectorComponent, selector: "rxap-language-selector" }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i6.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i6.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i6.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "ngmodule", type: PortalModule }, { kind: "directive", type: i7.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }] }); }
41
+ }
42
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: SettingsButtonComponent, decorators: [{
43
+ type: Component,
44
+ args: [{ selector: 'rxap-settings-button', standalone: true, imports: [CommonModule, MatButtonModule, MatIconModule, LanguageSelectorComponent, MatMenuModule, PortalModule], template: "<button [matMenuTriggerFor]=\"menu\" mat-icon-button>\n <mat-icon svgIcon=\"cog\"></mat-icon>\n</button>\n\n<mat-menu #menu=\"matMenu\">\n <button (click)=\"theme.toggleDarkTheme()\" mat-menu-item>\n <mat-icon *ngIf=\"theme.darkMode\" svgIcon=\"brightness-2\"></mat-icon>\n <mat-icon *ngIf=\"!theme.darkMode\" svgIcon=\"brightness-5\"></mat-icon>\n <span i18n>Mode</span>\n </button>\n <rxap-language-selector *ngIf=\"!isDevMode\"></rxap-language-selector>\n <ng-container *ngFor=\"let item of items()\">\n <ng-template [cdkPortalOutlet]=\"item\"></ng-template>\n </ng-container>\n</mat-menu>\n" }]
45
+ }], ctorParameters: function () { return [{ type: i1.ThemeService }, { type: i2.ActivatedRoute }, { type: i0.Injector }]; } });
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dGluZ3MtYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXIvbGF5b3V0L3NyYy9saWIvaGVhZGVyL3NldHRpbmdzLWJ1dHRvbi9zZXR0aW5ncy1idXR0b24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhci9sYXlvdXQvc3JjL2xpYi9oZWFkZXIvc2V0dGluZ3MtYnV0dG9uL3NldHRpbmdzLWJ1dHRvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsZUFBZSxFQUVmLFlBQVksR0FDYixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQ0wsU0FBUyxFQUNULFFBQVEsRUFDUixTQUFTLEVBR1QsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFOUMsT0FBTyxFQUNMLEdBQUcsRUFDSCxHQUFHLEdBQ0osTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQzs7Ozs7Ozs7O0FBUzdGLE1BQU0sT0FBTyx1QkFBdUI7SUFNbEMsWUFDa0IsS0FBbUIsRUFDbEIsS0FBcUIsRUFDckIsUUFBa0I7UUFGbkIsVUFBSyxHQUFMLEtBQUssQ0FBYztRQUNsQixVQUFLLEdBQUwsS0FBSyxDQUFnQjtRQUNyQixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBUDlCLGNBQVMsR0FBRyxTQUFTLEVBQUUsQ0FBQztRQUMvQixVQUFLLEdBQUcsTUFBTSxDQUFrQyxFQUFFLENBQUMsQ0FBQztJQVNwRCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxhQUFhLEVBQUUsV0FBVyxFQUFFLENBQUM7SUFDcEMsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FDdkMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDLEVBQzFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLGVBQWUsQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQ3BGLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQ3BDLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDaEIsQ0FBQztJQUVPLGtCQUFrQixDQUFDLElBQVM7UUFDbEMsSUFBSSxJQUFJLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRTtZQUM3QyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7U0FDdEM7UUFDRCxPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7OEdBL0JVLHVCQUF1QjtrR0FBdkIsdUJBQXVCLGdGQ2pDcEMsc21CQWVBLHlERGNhLFlBQVksK1BBQUUsZUFBZSwyTEFBRSxhQUFhLG9MQUFFLHlCQUF5QixrRUFBRSxhQUFhLCtZQUFFLFlBQVk7OzJGQUlwRyx1QkFBdUI7a0JBUG5DLFNBQVM7K0JBQ0Usc0JBQXNCLGNBQ3BCLElBQUksV0FDUCxDQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLHlCQUF5QixFQUFFLGFBQWEsRUFBRSxZQUFZLENBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnRQb3J0YWwsXG4gIENvbXBvbmVudFR5cGUsXG4gIFBvcnRhbE1vZHVsZSxcbn0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBJbmplY3RvcixcbiAgaXNEZXZNb2RlLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgc2lnbmFsLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBNYXRNZW51TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbWVudSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBUaGVtZVNlcnZpY2UgfSBmcm9tICdAcnhhcC9zZXJ2aWNlcyc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gIG1hcCxcbiAgdGFwLFxufSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBMYW5ndWFnZVNlbGVjdG9yQ29tcG9uZW50IH0gZnJvbSAnLi4vbGFuZ3VhZ2Utc2VsZWN0b3IvbGFuZ3VhZ2Utc2VsZWN0b3IuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncnhhcC1zZXR0aW5ncy1idXR0b24nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbIENvbW1vbk1vZHVsZSwgTWF0QnV0dG9uTW9kdWxlLCBNYXRJY29uTW9kdWxlLCBMYW5ndWFnZVNlbGVjdG9yQ29tcG9uZW50LCBNYXRNZW51TW9kdWxlLCBQb3J0YWxNb2R1bGUgXSxcbiAgdGVtcGxhdGVVcmw6ICcuL3NldHRpbmdzLWJ1dHRvbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWyAnLi9zZXR0aW5ncy1idXR0b24uY29tcG9uZW50LnNjc3MnIF0sXG59KVxuZXhwb3J0IGNsYXNzIFNldHRpbmdzQnV0dG9uQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG4gIHB1YmxpYyBpc0Rldk1vZGUgPSBpc0Rldk1vZGUoKTtcbiAgaXRlbXMgPSBzaWduYWw8QXJyYXk8Q29tcG9uZW50UG9ydGFsPHVua25vd24+Pj4oW10pO1xuICBwcml2YXRlIF9zdWJzY3JpcHRpb24/OiBTdWJzY3JpcHRpb247XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHJlYWRvbmx5IHRoZW1lOiBUaGVtZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSByZWFkb25seSBpbmplY3RvcjogSW5qZWN0b3IsXG4gICkge1xuXG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb24gPSB0aGlzLnJvdXRlLmRhdGEucGlwZShcbiAgICAgIG1hcChkYXRhID0+IHRoaXMuZ2V0Q3VzdG9tTWVudUl0ZW1zKGRhdGEpKSxcbiAgICAgIG1hcChpdGVtcyA9PiBpdGVtcy5tYXAoaXRlbSA9PiBuZXcgQ29tcG9uZW50UG9ydGFsKGl0ZW0sIHVuZGVmaW5lZCwgdGhpcy5pbmplY3RvcikpKSxcbiAgICAgIHRhcChpdGVtcyA9PiB0aGlzLml0ZW1zLnNldChpdGVtcykpLFxuICAgICkuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwcml2YXRlIGdldEN1c3RvbU1lbnVJdGVtcyhkYXRhOiBhbnkpOiBBcnJheTxDb21wb25lbnRUeXBlPHVua25vd24+PiB7XG4gICAgaWYgKGRhdGE/LmxheW91dD8uaGVhZGVyPy5tZW51Py5pdGVtcz8ubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gZGF0YS5sYXlvdXQuaGVhZGVyLm1lbnUuaXRlbXM7XG4gICAgfVxuICAgIHJldHVybiBbXTtcbiAgfVxuXG59XG4iLCI8YnV0dG9uIFttYXRNZW51VHJpZ2dlckZvcl09XCJtZW51XCIgbWF0LWljb24tYnV0dG9uPlxuICA8bWF0LWljb24gc3ZnSWNvbj1cImNvZ1wiPjwvbWF0LWljb24+XG48L2J1dHRvbj5cblxuPG1hdC1tZW51ICNtZW51PVwibWF0TWVudVwiPlxuICA8YnV0dG9uIChjbGljayk9XCJ0aGVtZS50b2dnbGVEYXJrVGhlbWUoKVwiIG1hdC1tZW51LWl0ZW0+XG4gICAgPG1hdC1pY29uICpuZ0lmPVwidGhlbWUuZGFya01vZGVcIiBzdmdJY29uPVwiYnJpZ2h0bmVzcy0yXCI+PC9tYXQtaWNvbj5cbiAgICA8bWF0LWljb24gKm5nSWY9XCIhdGhlbWUuZGFya01vZGVcIiBzdmdJY29uPVwiYnJpZ2h0bmVzcy01XCI+PC9tYXQtaWNvbj5cbiAgICA8c3BhbiBpMThuPk1vZGU8L3NwYW4+XG4gIDwvYnV0dG9uPlxuICA8cnhhcC1sYW5ndWFnZS1zZWxlY3RvciAqbmdJZj1cIiFpc0Rldk1vZGVcIj48L3J4YXAtbGFuZ3VhZ2Utc2VsZWN0b3I+XG4gIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgaXRlbXMoKVwiPlxuICAgIDxuZy10ZW1wbGF0ZSBbY2RrUG9ydGFsT3V0bGV0XT1cIml0ZW1cIj48L25nLXRlbXBsYXRlPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvbWF0LW1lbnU+XG4iXX0=
@@ -1,47 +1,24 @@
1
- import { __decorate, __metadata } from "tslib";
2
- import { Component, ChangeDetectionStrategy, Input } from '@angular/core';
1
+ import { ChangeDetectionStrategy, Component, Input, } from '@angular/core';
3
2
  import { MatSidenav } from '@angular/material/sidenav';
4
- import { Required } from '@rxap/utilities';
5
3
  import { MatIconModule } from '@angular/material/icon';
6
4
  import { NgIf } from '@angular/common';
7
5
  import { MatButtonModule } from '@angular/material/button';
8
6
  import * as i0 from "@angular/core";
9
7
  import * as i1 from "@angular/material/button";
10
8
  import * as i2 from "@angular/material/icon";
11
- function SidenavToggleButtonComponent_mat_icon_1_Template(rf, ctx) { if (rf & 1) {
12
- i0.ɵɵelementStart(0, "mat-icon");
13
- i0.ɵɵtext(1, "menu");
14
- i0.ɵɵelementEnd();
15
- } }
16
- function SidenavToggleButtonComponent_mat_icon_2_Template(rf, ctx) { if (rf & 1) {
17
- i0.ɵɵelementStart(0, "mat-icon");
18
- i0.ɵɵtext(1, "menu_open");
19
- i0.ɵɵelementEnd();
20
- } }
21
- class SidenavToggleButtonComponent {
22
- static { this.ɵfac = function SidenavToggleButtonComponent_Factory(t) { return new (t || SidenavToggleButtonComponent)(); }; }
23
- static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SidenavToggleButtonComponent, selectors: [["rxap-sidenav-toggle-button"]], hostAttrs: [1, "rxap-sidenav-toggle-button"], inputs: { sidenav: "sidenav" }, standalone: true, features: [i0.ɵɵStandaloneFeature], decls: 3, vars: 2, consts: [["mat-icon-button", "", 3, "click"], [4, "ngIf"]], template: function SidenavToggleButtonComponent_Template(rf, ctx) { if (rf & 1) {
24
- i0.ɵɵelementStart(0, "button", 0);
25
- i0.ɵɵlistener("click", function SidenavToggleButtonComponent_Template_button_click_0_listener() { return ctx.sidenav.toggle(); });
26
- i0.ɵɵtemplate(1, SidenavToggleButtonComponent_mat_icon_1_Template, 2, 0, "mat-icon", 1);
27
- i0.ɵɵtemplate(2, SidenavToggleButtonComponent_mat_icon_2_Template, 2, 0, "mat-icon", 1);
28
- i0.ɵɵelementEnd();
29
- } if (rf & 2) {
30
- i0.ɵɵadvance(1);
31
- i0.ɵɵproperty("ngIf", !ctx.sidenav.opened);
32
- i0.ɵɵadvance(1);
33
- i0.ɵɵproperty("ngIf", ctx.sidenav.opened);
34
- } }, dependencies: [MatButtonModule, i1.MatIconButton, NgIf, MatIconModule, i2.MatIcon], changeDetection: 0 }); }
9
+ export class SidenavToggleButtonComponent {
10
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: SidenavToggleButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
11
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.4", type: SidenavToggleButtonComponent, isStandalone: true, selector: "rxap-sidenav-toggle-button", inputs: { sidenav: "sidenav" }, ngImport: i0, template: "<button (click)=\"sidenav.toggle()\" mat-icon-button>\n <mat-icon *ngIf=\"!sidenav.opened\">menu</mat-icon>\n <mat-icon *ngIf=\"sidenav.opened\">menu_open</mat-icon>\n</button>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
35
12
  }
36
- __decorate([
37
- Required,
38
- __metadata("design:type", MatSidenav)
39
- ], SidenavToggleButtonComponent.prototype, "sidenav", void 0);
40
- export { SidenavToggleButtonComponent };
41
- (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SidenavToggleButtonComponent, [{
42
- type: Component,
43
- args: [{ selector: 'rxap-sidenav-toggle-button', changeDetection: ChangeDetectionStrategy.OnPush, host: { class: 'rxap-sidenav-toggle-button' }, standalone: true, imports: [MatButtonModule, NgIf, MatIconModule], template: "<button (click)=\"sidenav.toggle()\" mat-icon-button>\n <mat-icon *ngIf=\"!sidenav.opened\">menu</mat-icon>\n <mat-icon *ngIf=\"sidenav.opened\">menu_open</mat-icon>\n</button>\n" }]
44
- }], null, { sidenav: [{
45
- type: Input
46
- }] }); })();
47
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZW5hdi10b2dnbGUtYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbGF5b3V0L3NyYy9saWIvaGVhZGVyL3NpZGVuYXYtdG9nZ2xlLWJ1dHRvbi9zaWRlbmF2LXRvZ2dsZS1idXR0b24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9sYXlvdXQvc3JjL2xpYi9oZWFkZXIvc2lkZW5hdi10b2dnbGUtYnV0dG9uL3NpZGVuYXYtdG9nZ2xlLWJ1dHRvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCx1QkFBdUIsRUFDdkIsS0FBSyxFQUNOLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7Ozs7O0lDUnpELGdDQUFrQztJQUFBLG9CQUFJO0lBQUEsaUJBQVc7OztJQUNqRCxnQ0FBaUM7SUFBQSx5QkFBUztJQUFBLGlCQUFXOztBRFN2RCxNQVNhLDRCQUE0Qjs2RkFBNUIsNEJBQTRCO29FQUE1Qiw0QkFBNEI7WUNwQnpDLGlDQUFtRDtZQUEzQyx5R0FBUyxvQkFBZ0IsSUFBQztZQUNoQyx1RkFBaUQ7WUFDakQsdUZBQXFEO1lBQ3ZELGlCQUFTOztZQUZJLGVBQXFCO1lBQXJCLDBDQUFxQjtZQUNyQixlQUFvQjtZQUFwQix5Q0FBb0I7NEJEZ0JaLGVBQWUsb0JBQUUsSUFBSSxFQUFFLGFBQWE7O0FBTWhEO0lBRE4sUUFBUTs4QkFDUSxVQUFVOzZEQUFDO1NBSmpCLDRCQUE0Qjt1RkFBNUIsNEJBQTRCO2NBVHhDLFNBQVM7MkJBQ1MsNEJBQTRCLG1CQUc1Qix1QkFBdUIsQ0FBQyxNQUFNLFFBQzlCLEVBQUUsS0FBSyxFQUFFLDRCQUE0QixFQUFFLGNBQ3ZDLElBQUksV0FDSixDQUFFLGVBQWUsRUFBRSxJQUFJLEVBQUUsYUFBYSxDQUFFO2dCQU1sRCxPQUFPO2tCQUZiLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBJbnB1dFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdFNpZGVuYXYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zaWRlbmF2JztcbmltcG9ydCB7IFJlcXVpcmVkIH0gZnJvbSAnQHJ4YXAvdXRpbGl0aWVzJztcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IE5nSWYgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAgICAgICAgJ3J4YXAtc2lkZW5hdi10b2dnbGUtYnV0dG9uJyxcbiAgdGVtcGxhdGVVcmw6ICAgICAnLi9zaWRlbmF2LXRvZ2dsZS1idXR0b24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6ICAgICAgIFsgJy4vc2lkZW5hdi10b2dnbGUtYnV0dG9uLmNvbXBvbmVudC5zY3NzJyBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaG9zdDogICAgICAgICAgICB7IGNsYXNzOiAncnhhcC1zaWRlbmF2LXRvZ2dsZS1idXR0b24nIH0sXG4gIHN0YW5kYWxvbmU6ICAgICAgdHJ1ZSxcbiAgaW1wb3J0czogICAgICAgICBbIE1hdEJ1dHRvbk1vZHVsZSwgTmdJZiwgTWF0SWNvbk1vZHVsZSBdXG59KVxuZXhwb3J0IGNsYXNzIFNpZGVuYXZUb2dnbGVCdXR0b25Db21wb25lbnQge1xuXG4gIEBJbnB1dCgpXG4gIEBSZXF1aXJlZFxuICBwdWJsaWMgc2lkZW5hdiE6IE1hdFNpZGVuYXY7XG5cbn1cbiIsIjxidXR0b24gKGNsaWNrKT1cInNpZGVuYXYudG9nZ2xlKClcIiBtYXQtaWNvbi1idXR0b24+XG4gIDxtYXQtaWNvbiAqbmdJZj1cIiFzaWRlbmF2Lm9wZW5lZFwiPm1lbnU8L21hdC1pY29uPlxuICA8bWF0LWljb24gKm5nSWY9XCJzaWRlbmF2Lm9wZW5lZFwiPm1lbnVfb3BlbjwvbWF0LWljb24+XG48L2J1dHRvbj5cbiJdfQ==
13
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: SidenavToggleButtonComponent, decorators: [{
14
+ type: Component,
15
+ args: [{ selector: 'rxap-sidenav-toggle-button', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
16
+ MatButtonModule,
17
+ NgIf,
18
+ MatIconModule,
19
+ ], template: "<button (click)=\"sidenav.toggle()\" mat-icon-button>\n <mat-icon *ngIf=\"!sidenav.opened\">menu</mat-icon>\n <mat-icon *ngIf=\"sidenav.opened\">menu_open</mat-icon>\n</button>\n" }]
20
+ }], propDecorators: { sidenav: [{
21
+ type: Input,
22
+ args: [{ required: true }]
23
+ }] } });
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZW5hdi10b2dnbGUtYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXIvbGF5b3V0L3NyYy9saWIvaGVhZGVyL3NpZGVuYXYtdG9nZ2xlLWJ1dHRvbi9zaWRlbmF2LXRvZ2dsZS1idXR0b24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhci9sYXlvdXQvc3JjL2xpYi9oZWFkZXIvc2lkZW5hdi10b2dnbGUtYnV0dG9uL3NpZGVuYXYtdG9nZ2xlLWJ1dHRvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxLQUFLLEdBQ04sTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRXZELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdkMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDOzs7O0FBYzNELE1BQU0sT0FBTyw0QkFBNEI7OEdBQTVCLDRCQUE0QjtrR0FBNUIsNEJBQTRCLHNIQ3ZCekMsc0xBSUEseUREY0ksZUFBZSw0TEFDZixJQUFJLDRGQUNKLGFBQWE7OzJGQUdKLDRCQUE0QjtrQkFaeEMsU0FBUzsrQkFDRSw0QkFBNEIsbUJBR3JCLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsSUFBSSxXQUNQO3dCQUNQLGVBQWU7d0JBQ2YsSUFBSTt3QkFDSixhQUFhO3FCQUNkOzhCQUtNLE9BQU87c0JBRGIsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXRTaWRlbmF2IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2lkZW5hdic7XG5pbXBvcnQgeyBSZXF1aXJlZCB9IGZyb20gJ0ByeGFwL3V0aWxpdGllcyc7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3J4YXAtc2lkZW5hdi10b2dnbGUtYnV0dG9uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NpZGVuYXYtdG9nZ2xlLWJ1dHRvbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWyAnLi9zaWRlbmF2LXRvZ2dsZS1idXR0b24uY29tcG9uZW50LnNjc3MnIF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxuICAgIE5nSWYsXG4gICAgTWF0SWNvbk1vZHVsZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgU2lkZW5hdlRvZ2dsZUJ1dHRvbkNvbXBvbmVudCB7XG5cbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSlcbiAgcHVibGljIHNpZGVuYXYhOiBNYXRTaWRlbmF2O1xuXG59XG4iLCI8YnV0dG9uIChjbGljayk9XCJzaWRlbmF2LnRvZ2dsZSgpXCIgbWF0LWljb24tYnV0dG9uPlxuICA8bWF0LWljb24gKm5nSWY9XCIhc2lkZW5hdi5vcGVuZWRcIj5tZW51PC9tYXQtaWNvbj5cbiAgPG1hdC1pY29uICpuZ0lmPVwic2lkZW5hdi5vcGVuZWRcIj5tZW51X29wZW48L21hdC1pY29uPlxuPC9idXR0b24+XG4iXX0=
@@ -1,34 +1,23 @@
1
- import { Component, ChangeDetectionStrategy, Inject } from '@angular/core';
2
- import { Router } from '@angular/router';
1
+ import { ChangeDetectionStrategy, Component, } from '@angular/core';
2
+ import { RxapAuthenticationService } from '@rxap/authentication';
3
3
  import { MatIconModule } from '@angular/material/icon';
4
- import { SignOutDirective } from '@rxap/authentication';
5
4
  import { MatButtonModule } from '@angular/material/button';
6
5
  import * as i0 from "@angular/core";
7
- import * as i1 from "@angular/material/button";
8
- import * as i2 from "@angular/material/icon";
9
- import * as i3 from "@angular/router";
10
- class SignOutComponent {
11
- constructor(router) {
12
- this.router = router;
6
+ import * as i1 from "@rxap/authentication";
7
+ import * as i2 from "@angular/material/button";
8
+ import * as i3 from "@angular/material/icon";
9
+ export class SignOutComponent {
10
+ constructor(authenticationService) {
11
+ this.authenticationService = authenticationService;
13
12
  }
14
- redirectToRoot() {
15
- this.router.navigate(['/']);
13
+ async logout() {
14
+ await this.authenticationService.signOut();
16
15
  }
17
- static { this.ɵfac = function SignOutComponent_Factory(t) { return new (t || SignOutComponent)(i0.ɵɵdirectiveInject(Router)); }; }
18
- static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SignOutComponent, selectors: [["rxap-sign-out"]], hostAttrs: [1, "rxap-sign-out"], standalone: true, features: [i0.ɵɵStandaloneFeature], decls: 3, vars: 0, consts: [["rxapSignOut", "", "mat-icon-button", "", 3, "successful"]], template: function SignOutComponent_Template(rf, ctx) { if (rf & 1) {
19
- i0.ɵɵelementStart(0, "button", 0);
20
- i0.ɵɵlistener("successful", function SignOutComponent_Template_button_successful_0_listener() { return ctx.redirectToRoot(); });
21
- i0.ɵɵelementStart(1, "mat-icon");
22
- i0.ɵɵtext(2, "login");
23
- i0.ɵɵelementEnd()();
24
- } }, dependencies: [MatButtonModule, i1.MatIconButton, SignOutDirective, MatIconModule, i2.MatIcon], changeDetection: 0 }); }
16
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: SignOutComponent, deps: [{ token: i1.RxapAuthenticationService }], target: i0.ɵɵFactoryTarget.Component }); }
17
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.4", type: SignOutComponent, isStandalone: true, selector: "rxap-sign-out", ngImport: i0, template: "<button\n mat-icon-button\n (click)=\"logout()\"\n>\n <mat-icon svgIcon=\"logout\"></mat-icon>\n</button>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
25
18
  }
26
- export { SignOutComponent };
27
- (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SignOutComponent, [{
28
- type: Component,
29
- args: [{ selector: 'rxap-sign-out', changeDetection: ChangeDetectionStrategy.OnPush, host: { class: 'rxap-sign-out' }, standalone: true, imports: [MatButtonModule, SignOutDirective, MatIconModule], template: "<button\n rxapSignOut\n (successful)=\"redirectToRoot()\"\n mat-icon-button\n>\n <mat-icon>login</mat-icon>\n</button>\n" }]
30
- }], function () { return [{ type: i3.Router, decorators: [{
31
- type: Inject,
32
- args: [Router]
33
- }] }]; }, null); })();
34
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbi1vdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9sYXlvdXQvc3JjL2xpYi9oZWFkZXIvc2lnbi1vdXQvc2lnbi1vdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9sYXlvdXQvc3JjL2xpYi9oZWFkZXIvc2lnbi1vdXQvc2lnbi1vdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCx1QkFBdUIsRUFDdkIsTUFBTSxFQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDOzs7OztBQUUzRCxNQVNhLGdCQUFnQjtJQUUzQixZQUVtQixNQUFjO1FBQWQsV0FBTSxHQUFOLE1BQU0sQ0FBUTtJQUM5QixDQUFDO0lBRUcsY0FBYztRQUNuQixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFFLEdBQUcsQ0FBRSxDQUFDLENBQUM7SUFDaEMsQ0FBQztpRkFUVSxnQkFBZ0IsdUJBR2pCLE1BQU07b0VBSEwsZ0JBQWdCO1lDbkI3QixpQ0FJQztZQUZDLHVHQUFjLG9CQUFnQixJQUFDO1lBRy9CLGdDQUFVO1lBQUEscUJBQUs7WUFBQSxpQkFBVyxFQUFBOzRCRFlQLGVBQWUsb0JBQUUsZ0JBQWdCLEVBQUUsYUFBYTs7U0FFeEQsZ0JBQWdCO3VGQUFoQixnQkFBZ0I7Y0FUNUIsU0FBUzsyQkFDUyxlQUFlLG1CQUdmLHVCQUF1QixDQUFDLE1BQU0sUUFDOUIsRUFBRSxLQUFLLEVBQUUsZUFBZSxFQUFFLGNBQzFCLElBQUksV0FDSixDQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxhQUFhLENBQUU7O3NCQUtsRSxNQUFNO3VCQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBJbmplY3Rcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgU2lnbk91dERpcmVjdGl2ZSB9IGZyb20gJ0ByeGFwL2F1dGhlbnRpY2F0aW9uJztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogICAgICAgICdyeGFwLXNpZ24tb3V0JyxcbiAgdGVtcGxhdGVVcmw6ICAgICAnLi9zaWduLW91dC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogICAgICAgWyAnLi9zaWduLW91dC5jb21wb25lbnQuc2NzcycgXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGhvc3Q6ICAgICAgICAgICAgeyBjbGFzczogJ3J4YXAtc2lnbi1vdXQnIH0sXG4gIHN0YW5kYWxvbmU6ICAgICAgdHJ1ZSxcbiAgaW1wb3J0czogICAgICAgICBbIE1hdEJ1dHRvbk1vZHVsZSwgU2lnbk91dERpcmVjdGl2ZSwgTWF0SWNvbk1vZHVsZSBdXG59KVxuZXhwb3J0IGNsYXNzIFNpZ25PdXRDb21wb25lbnQge1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoUm91dGVyKVxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyOiBSb3V0ZXJcbiAgKSB7fVxuXG4gIHB1YmxpYyByZWRpcmVjdFRvUm9vdCgpIHtcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbICcvJyBdKTtcbiAgfVxuXG59XG4iLCI8YnV0dG9uXG4gIHJ4YXBTaWduT3V0XG4gIChzdWNjZXNzZnVsKT1cInJlZGlyZWN0VG9Sb290KClcIlxuICBtYXQtaWNvbi1idXR0b25cbj5cbiAgPG1hdC1pY29uPmxvZ2luPC9tYXQtaWNvbj5cbjwvYnV0dG9uPlxuIl19
19
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: SignOutComponent, decorators: [{
20
+ type: Component,
21
+ args: [{ selector: 'rxap-sign-out', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [MatButtonModule, MatIconModule], template: "<button\n mat-icon-button\n (click)=\"logout()\"\n>\n <mat-icon svgIcon=\"logout\"></mat-icon>\n</button>\n" }]
22
+ }], ctorParameters: function () { return [{ type: i1.RxapAuthenticationService }]; } });
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbi1vdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhci9sYXlvdXQvc3JjL2xpYi9oZWFkZXIvc2lnbi1vdXQvc2lnbi1vdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhci9sYXlvdXQvc3JjL2xpYi9oZWFkZXIvc2lnbi1vdXQvc2lnbi1vdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDakUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7QUFVM0QsTUFBTSxPQUFPLGdCQUFnQjtJQUUzQixZQUNtQixxQkFBZ0Q7UUFBaEQsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUEyQjtJQUVuRSxDQUFDO0lBRU0sS0FBSyxDQUFDLE1BQU07UUFDakIsTUFBTSxJQUFJLENBQUMscUJBQXFCLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDN0MsQ0FBQzs4R0FUVSxnQkFBZ0I7a0dBQWhCLGdCQUFnQix5RUNoQjdCLGdIQU1BLHlERFFhLGVBQWUsMkxBQUUsYUFBYTs7MkZBRTlCLGdCQUFnQjtrQkFSNUIsU0FBUzsrQkFDRSxlQUFlLG1CQUdSLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsSUFBSSxXQUNQLENBQUUsZUFBZSxFQUFFLGFBQWEsQ0FBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUnhhcEF1dGhlbnRpY2F0aW9uU2VydmljZSB9IGZyb20gJ0ByeGFwL2F1dGhlbnRpY2F0aW9uJztcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3J4YXAtc2lnbi1vdXQnLFxuICB0ZW1wbGF0ZVVybDogJy4vc2lnbi1vdXQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsgJy4vc2lnbi1vdXQuY29tcG9uZW50LnNjc3MnIF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbIE1hdEJ1dHRvbk1vZHVsZSwgTWF0SWNvbk1vZHVsZSBdLFxufSlcbmV4cG9ydCBjbGFzcyBTaWduT3V0Q29tcG9uZW50IHtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGF1dGhlbnRpY2F0aW9uU2VydmljZTogUnhhcEF1dGhlbnRpY2F0aW9uU2VydmljZSxcbiAgKSB7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgbG9nb3V0KCkge1xuICAgIGF3YWl0IHRoaXMuYXV0aGVudGljYXRpb25TZXJ2aWNlLnNpZ25PdXQoKTtcbiAgfVxuXG59XG4iLCI8YnV0dG9uXG4gIG1hdC1pY29uLWJ1dHRvblxuICAoY2xpY2spPVwibG9nb3V0KClcIlxuPlxuICA8bWF0LWljb24gc3ZnSWNvbj1cImxvZ291dFwiPjwvbWF0LWljb24+XG48L2J1dHRvbj5cbiJdfQ==
@@ -1,124 +1,39 @@
1
- import { Component, ChangeDetectionStrategy, Inject } from '@angular/core';
2
- import { UserService } from '@rxap/authentication';
3
- import { map } from 'rxjs/operators';
4
- import { isDefined } from '@rxap/utilities/rxjs';
1
+ import { AsyncPipe, NgIf, } from '@angular/common';
2
+ import { ChangeDetectionStrategy, Component, signal, } from '@angular/core';
5
3
  import { MatIconModule } from '@angular/material/icon';
6
- import { NgIf, AsyncPipe } from '@angular/common';
7
- import { AvatarBackgroundImageDirective } from '@rxap/directives';
8
4
  import { MatMenuModule } from '@angular/material/menu';
9
- import { FlexModule } from '@angular/flex-layout/flex';
5
+ import { RxapAuthenticationService, RxapUserProfileService, } from '@rxap/authentication';
6
+ import { filter, } from 'rxjs';
7
+ import { switchMap, tap, } from 'rxjs/operators';
10
8
  import * as i0 from "@angular/core";
11
- import * as i1 from "@angular/flex-layout/flex";
9
+ import * as i1 from "@rxap/authentication";
12
10
  import * as i2 from "@angular/material/menu";
13
11
  import * as i3 from "@angular/material/icon";
14
- import * as i4 from "@rxap/authentication";
15
- function UserProfileIconComponent_ng_template_5_button_0_Template(rf, ctx) { if (rf & 1) {
16
- i0.ɵɵelementStart(0, "button", 5)(1, "mat-icon");
17
- i0.ɵɵtext(2, "person");
18
- i0.ɵɵelementEnd();
19
- i0.ɵɵelementStart(3, "span");
20
- i0.ɵɵtext(4);
21
- i0.ɵɵelementEnd()();
22
- } if (rf & 2) {
23
- const user_r2 = i0.ɵɵnextContext().$implicit;
24
- i0.ɵɵadvance(4);
25
- i0.ɵɵtextInterpolate2("", user_r2.firstname, " ", user_r2.lastname, "");
26
- } }
27
- function UserProfileIconComponent_ng_template_5_button_1_Template(rf, ctx) { if (rf & 1) {
28
- i0.ɵɵelementStart(0, "button", 5)(1, "mat-icon");
29
- i0.ɵɵtext(2, "person");
30
- i0.ɵɵelementEnd();
31
- i0.ɵɵelementStart(3, "span");
32
- i0.ɵɵtext(4);
33
- i0.ɵɵelementEnd()();
34
- } if (rf & 2) {
35
- const user_r2 = i0.ɵɵnextContext().$implicit;
36
- i0.ɵɵadvance(4);
37
- i0.ɵɵtextInterpolate(user_r2.name);
38
- } }
39
- function UserProfileIconComponent_ng_template_5_button_2_Template(rf, ctx) { if (rf & 1) {
40
- i0.ɵɵelementStart(0, "button", 5)(1, "mat-icon");
41
- i0.ɵɵtext(2, "account_circle");
42
- i0.ɵɵelementEnd();
43
- i0.ɵɵelementStart(3, "span");
44
- i0.ɵɵtext(4);
45
- i0.ɵɵelementEnd()();
46
- } if (rf & 2) {
47
- const user_r2 = i0.ɵɵnextContext().$implicit;
48
- i0.ɵɵadvance(4);
49
- i0.ɵɵtextInterpolate(user_r2.username);
50
- } }
51
- function UserProfileIconComponent_ng_template_5_button_3_Template(rf, ctx) { if (rf & 1) {
52
- i0.ɵɵelementStart(0, "button", 5)(1, "mat-icon");
53
- i0.ɵɵtext(2, "email");
54
- i0.ɵɵelementEnd();
55
- i0.ɵɵelementStart(3, "span");
56
- i0.ɵɵtext(4);
57
- i0.ɵɵelementEnd()();
58
- } if (rf & 2) {
59
- const user_r2 = i0.ɵɵnextContext().$implicit;
60
- i0.ɵɵadvance(4);
61
- i0.ɵɵtextInterpolate(user_r2.email);
62
- } }
63
- function UserProfileIconComponent_ng_template_5_Template(rf, ctx) { if (rf & 1) {
64
- i0.ɵɵtemplate(0, UserProfileIconComponent_ng_template_5_button_0_Template, 5, 2, "button", 4);
65
- i0.ɵɵtemplate(1, UserProfileIconComponent_ng_template_5_button_1_Template, 5, 1, "button", 4);
66
- i0.ɵɵtemplate(2, UserProfileIconComponent_ng_template_5_button_2_Template, 5, 1, "button", 4);
67
- i0.ɵɵtemplate(3, UserProfileIconComponent_ng_template_5_button_3_Template, 5, 1, "button", 4);
68
- } if (rf & 2) {
69
- const user_r2 = ctx.$implicit;
70
- i0.ɵɵproperty("ngIf", user_r2.firstname && user_r2.lastname);
71
- i0.ɵɵadvance(1);
72
- i0.ɵɵproperty("ngIf", user_r2.name);
73
- i0.ɵɵadvance(1);
74
- i0.ɵɵproperty("ngIf", user_r2.username);
75
- i0.ɵɵadvance(1);
76
- i0.ɵɵproperty("ngIf", user_r2.email);
77
- } }
78
- class UserProfileIconComponent {
79
- constructor(userService) {
80
- this.userService = userService;
81
- this.userProfileUrl$ = this.userService.user$.pipe(isDefined(), map((user) => user.photoURL ?? user.avatarUrl));
82
- this.userName$ = this.userService.user$.pipe(isDefined(), map((user) => user.name ??
83
- (user.firstname || user.lastname
84
- ? [user.firstname, user.lastname].join(' ').trim()
85
- : null) ??
86
- user.username));
12
+ export class UserProfileIconComponent {
13
+ constructor(userProfileService, authenticationService) {
14
+ this.userProfileService = userProfileService;
15
+ this.authenticationService = authenticationService;
16
+ this.username = signal(null);
87
17
  }
88
- static { this.ɵfac = function UserProfileIconComponent_Factory(t) { return new (t || UserProfileIconComponent)(i0.ɵɵdirectiveInject(UserService)); }; }
89
- static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: UserProfileIconComponent, selectors: [["rxap-user-profile-icon"]], hostAttrs: [1, "rxap-user-profile-icon"], standalone: true, features: [i0.ɵɵStandaloneFeature], decls: 7, vars: 11, consts: [["fxLayout", "row", "fxLayoutAlign", "center center", 1, "profile-icon", 3, "matMenuTriggerFor", "rxapAvatarBackgroundImage", "name"], [3, "yPosition"], ["menu", "matMenu"], [3, "ngIf"], ["mat-menu-item", "", 4, "ngIf"], ["mat-menu-item", ""]], template: function UserProfileIconComponent_Template(rf, ctx) { if (rf & 1) {
90
- i0.ɵɵelement(0, "button", 0);
91
- i0.ɵɵpipe(1, "async");
92
- i0.ɵɵpipe(2, "async");
93
- i0.ɵɵelementStart(3, "mat-menu", 1, 2);
94
- i0.ɵɵtemplate(5, UserProfileIconComponent_ng_template_5_Template, 4, 4, "ng-template", 3);
95
- i0.ɵɵpipe(6, "async");
96
- i0.ɵɵelementEnd();
97
- } if (rf & 2) {
98
- const _r0 = i0.ɵɵreference(4);
99
- let tmp_2_0;
100
- i0.ɵɵproperty("matMenuTriggerFor", _r0)("rxapAvatarBackgroundImage", i0.ɵɵpipeBind1(1, 5, ctx.userProfileUrl$))("name", (tmp_2_0 = i0.ɵɵpipeBind1(2, 7, ctx.userName$)) !== null && tmp_2_0 !== undefined ? tmp_2_0 : "");
101
- i0.ɵɵadvance(3);
102
- i0.ɵɵproperty("yPosition", "below");
103
- i0.ɵɵadvance(2);
104
- i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind1(6, 9, ctx.userService.user$));
105
- } }, dependencies: [FlexModule, i1.DefaultLayoutDirective, i1.DefaultLayoutAlignDirective, MatMenuModule, i2.MatMenu, i2.MatMenuItem, i2.MatMenuTrigger, AvatarBackgroundImageDirective,
106
- NgIf,
107
- MatIconModule, i3.MatIcon, AsyncPipe], styles: [".profile-icon[_ngcontent-%COMP%]{border-radius:100%;border:none;height:32px;width:32px;overflow:hidden;background-position:center center;background-repeat:no-repeat;background-size:cover}.profile-icon[_ngcontent-%COMP%]:hover{cursor:pointer}.profile-icon[_ngcontent-%COMP%]:focus{outline:none}"], changeDetection: 0 }); }
18
+ ngOnInit() {
19
+ this._subscription = this.authenticationService.isAuthenticated$.pipe(filter(Boolean), switchMap(() => this.userProfileService.getProfile()), filter(Boolean), tap((user) => this.username.set(user.username ?? null))).subscribe();
20
+ }
21
+ ngOnDestroy() {
22
+ this._subscription?.unsubscribe();
23
+ }
24
+ async logout() {
25
+ await this.authenticationService.signOut();
26
+ }
27
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: UserProfileIconComponent, deps: [{ token: i1.RxapUserProfileService }, { token: i1.RxapAuthenticationService }], target: i0.ɵɵFactoryTarget.Component }); }
28
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.4", type: UserProfileIconComponent, isStandalone: true, selector: "rxap-user-profile-icon", ngImport: i0, template: "<button [matMenuTriggerFor]=\"menu\"\n [disabled]=\"!username()\"\n class=\"profile-icon flex flex-row justify-center items-center\">\n <mat-icon class=\"avatar-icon\" svgIcon=\"account-circle\"></mat-icon>\n</button>\n\n<mat-menu #menu=\"matMenu\" [yPosition]=\"'below'\" class=\"!max-w-none\">\n <button mat-menu-item>\n <span class=\"flex flex-row gap-2\">\n <mat-icon svgIcon=\"account\"></mat-icon>\n <span>{{username()}}</span>\n </span>\n </button>\n <button (click)=\"logout()\" mat-menu-item>\n <span class=\"flex flex-row gap-2\">\n <mat-icon svgIcon=\"logout\"></mat-icon>\n <span i18n>Logout</span>\n </span>\n </button>\n</mat-menu>\n", styles: [".profile-icon{border-radius:100%;border:none;height:32px;width:32px;overflow:hidden;background-position:center center;background-repeat:no-repeat;background-size:cover}.profile-icon .avatar-icon{width:32px;height:32px;font-size:32px}.profile-icon:hover{cursor:pointer}.profile-icon:focus{outline:none}\n"], dependencies: [{ kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i2.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i2.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i2.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
108
29
  }
109
- export { UserProfileIconComponent };
110
- (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(UserProfileIconComponent, [{
111
- type: Component,
112
- args: [{ selector: 'rxap-user-profile-icon', changeDetection: ChangeDetectionStrategy.OnPush, host: { class: 'rxap-user-profile-icon' }, standalone: true, imports: [
113
- FlexModule,
114
- MatMenuModule,
115
- AvatarBackgroundImageDirective,
116
- NgIf,
117
- MatIconModule,
118
- AsyncPipe
119
- ], template: "<button [matMenuTriggerFor]=\"menu\"\n [rxapAvatarBackgroundImage]=\"userProfileUrl$ | async\"\n [name]=\"(userName$ | async) ?? ''\"\n class=\"profile-icon\"\n fxLayout=\"row\"\n fxLayoutAlign=\"center center\">\n</button>\n\n<mat-menu #menu=\"matMenu\" [yPosition]=\"'below'\">\n <ng-template [ngIf]=\"userService.user$ | async\" let-user>\n <button *ngIf=\"user.firstname && user.lastname\" mat-menu-item>\n <mat-icon>person</mat-icon>\n <span>{{user.firstname}} {{user.lastname}}</span>\n </button>\n <button *ngIf=\"user.name\" mat-menu-item>\n <mat-icon>person</mat-icon>\n <span>{{user.name}}</span>\n </button>\n <button *ngIf=\"user.username\" mat-menu-item>\n <mat-icon>account_circle</mat-icon>\n <span>{{user.username}}</span>\n </button>\n <button *ngIf=\"user.email\" mat-menu-item>\n <mat-icon>email</mat-icon>\n <span>{{user.email}}</span>\n </button>\n </ng-template>\n</mat-menu>\n", styles: [".profile-icon{border-radius:100%;border:none;height:32px;width:32px;overflow:hidden;background-position:center center;background-repeat:no-repeat;background-size:cover}.profile-icon:hover{cursor:pointer}.profile-icon:focus{outline:none}\n"] }]
120
- }], function () { return [{ type: i4.UserService, decorators: [{
121
- type: Inject,
122
- args: [UserService]
123
- }] }]; }, null); })();
124
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1wcm9maWxlLWljb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9sYXlvdXQvc3JjL2xpYi9oZWFkZXIvdXNlci1wcm9maWxlLWljb24vdXNlci1wcm9maWxlLWljb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9sYXlvdXQvc3JjL2xpYi9oZWFkZXIvdXNlci1wcm9maWxlLWljb24vdXNlci1wcm9maWxlLWljb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCx1QkFBdUIsRUFDdkIsTUFBTSxFQUNQLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQ0wsSUFBSSxFQUNKLFNBQVMsRUFDVixNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7Ozs7Ozs7SUNObkQsaUNBQThELGVBQUE7SUFDbEQsc0JBQU07SUFBQSxpQkFBVztJQUMzQiw0QkFBTTtJQUFBLFlBQW9DO0lBQUEsaUJBQU8sRUFBQTs7O0lBQTNDLGVBQW9DO0lBQXBDLHVFQUFvQzs7O0lBRTVDLGlDQUF3QyxlQUFBO0lBQzVCLHNCQUFNO0lBQUEsaUJBQVc7SUFDM0IsNEJBQU07SUFBQSxZQUFhO0lBQUEsaUJBQU8sRUFBQTs7O0lBQXBCLGVBQWE7SUFBYixrQ0FBYTs7O0lBRXJCLGlDQUE0QyxlQUFBO0lBQ2hDLDhCQUFjO0lBQUEsaUJBQVc7SUFDbkMsNEJBQU07SUFBQSxZQUFpQjtJQUFBLGlCQUFPLEVBQUE7OztJQUF4QixlQUFpQjtJQUFqQixzQ0FBaUI7OztJQUV6QixpQ0FBeUMsZUFBQTtJQUM3QixxQkFBSztJQUFBLGlCQUFXO0lBQzFCLDRCQUFNO0lBQUEsWUFBYztJQUFBLGlCQUFPLEVBQUE7OztJQUFyQixlQUFjO0lBQWQsbUNBQWM7OztJQWR0Qiw2RkFHUztJQUNULDZGQUdTO0lBQ1QsNkZBR1M7SUFDVCw2RkFHUzs7O0lBZkEsNERBQXFDO0lBSXJDLGVBQWU7SUFBZixtQ0FBZTtJQUlmLGVBQW1CO0lBQW5CLHVDQUFtQjtJQUluQixlQUFnQjtJQUFoQixvQ0FBZ0I7O0FESjdCLE1BZ0JhLHdCQUF3QjtJQUluQyxZQUVTLFdBQXdCO1FBQXhCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBRS9CLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUNoRCxTQUFTLEVBQUUsRUFDWCxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUMvQyxDQUFDO1FBQ0YsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQzFDLFNBQVMsRUFBRSxFQUNYLEdBQUcsQ0FDRCxDQUFDLElBQUksRUFBRSxFQUFFLENBQ1AsSUFBSSxDQUFDLElBQUk7WUFDVCxDQUFDLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLFFBQVE7Z0JBQzlCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUU7Z0JBQ2xELENBQUMsQ0FBQyxJQUFJLENBQUM7WUFDVCxJQUFJLENBQUMsUUFBUSxDQUNoQixDQUNGLENBQUM7SUFDSixDQUFDO3lGQXZCVSx3QkFBd0IsdUJBS3pCLFdBQVc7b0VBTFYsd0JBQXdCO1lDbENyQyw0QkFNUzs7O1lBRVQsc0NBQWdEO1lBQzlDLHlGQWlCYzs7WUFDaEIsaUJBQVc7Ozs7WUEzQkgsdUNBQTBCLHdFQUFBLDBHQUFBO1lBUVIsZUFBcUI7WUFBckIsbUNBQXFCO1lBQ2hDLGVBQWtDO1lBQWxDLGtFQUFrQzs0QkRpQjdDLFVBQVUsNkRBQ1YsYUFBYSxpREFDYiw4QkFBOEI7WUFDOUIsSUFBSTtZQUNKLGFBQWEsY0FDYixTQUFTOztTQUdBLHdCQUF3Qjt1RkFBeEIsd0JBQXdCO2NBaEJwQyxTQUFTOzJCQUNTLHdCQUF3QixtQkFHeEIsdUJBQXVCLENBQUMsTUFBTSxRQUM5QixFQUFFLEtBQUssRUFBRSx3QkFBd0IsRUFBRSxjQUNuQyxJQUFJLFdBQ0o7b0JBQ2YsVUFBVTtvQkFDVixhQUFhO29CQUNiLDhCQUE4QjtvQkFDOUIsSUFBSTtvQkFDSixhQUFhO29CQUNiLFNBQVM7aUJBQ1Y7O3NCQU9FLE1BQU07dUJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIEluamVjdFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFVzZXJTZXJ2aWNlIH0gZnJvbSAnQHJ4YXAvYXV0aGVudGljYXRpb24nO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgaXNEZWZpbmVkIH0gZnJvbSAnQHJ4YXAvdXRpbGl0aWVzL3J4anMnO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHtcbiAgTmdJZixcbiAgQXN5bmNQaXBlXG59IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBBdmF0YXJCYWNrZ3JvdW5kSW1hZ2VEaXJlY3RpdmUgfSBmcm9tICdAcnhhcC9kaXJlY3RpdmVzJztcbmltcG9ydCB7IE1hdE1lbnVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9tZW51JztcbmltcG9ydCB7IEZsZXhNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mbGV4LWxheW91dC9mbGV4JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAgICAgICAgJ3J4YXAtdXNlci1wcm9maWxlLWljb24nLFxuICB0ZW1wbGF0ZVVybDogICAgICcuL3VzZXItcHJvZmlsZS1pY29uLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiAgICAgICBbICcuL3VzZXItcHJvZmlsZS1pY29uLmNvbXBvbmVudC5zY3NzJyBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaG9zdDogICAgICAgICAgICB7IGNsYXNzOiAncnhhcC11c2VyLXByb2ZpbGUtaWNvbicgfSxcbiAgc3RhbmRhbG9uZTogICAgICB0cnVlLFxuICBpbXBvcnRzOiAgICAgICAgIFtcbiAgICBGbGV4TW9kdWxlLFxuICAgIE1hdE1lbnVNb2R1bGUsXG4gICAgQXZhdGFyQmFja2dyb3VuZEltYWdlRGlyZWN0aXZlLFxuICAgIE5nSWYsXG4gICAgTWF0SWNvbk1vZHVsZSxcbiAgICBBc3luY1BpcGVcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBVc2VyUHJvZmlsZUljb25Db21wb25lbnQge1xuICBwdWJsaWMgdXNlclByb2ZpbGVVcmwkOiBPYnNlcnZhYmxlPHN0cmluZyB8IHVuZGVmaW5lZD47XG4gIHB1YmxpYyB1c2VyTmFtZSQ6IE9ic2VydmFibGU8c3RyaW5nPjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KFVzZXJTZXJ2aWNlKVxuICAgIHB1YmxpYyB1c2VyU2VydmljZTogVXNlclNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy51c2VyUHJvZmlsZVVybCQgPSB0aGlzLnVzZXJTZXJ2aWNlLnVzZXIkLnBpcGUoXG4gICAgICBpc0RlZmluZWQoKSxcbiAgICAgIG1hcCgodXNlcikgPT4gdXNlci5waG90b1VSTCA/PyB1c2VyLmF2YXRhclVybClcbiAgICApO1xuICAgIHRoaXMudXNlck5hbWUkID0gdGhpcy51c2VyU2VydmljZS51c2VyJC5waXBlKFxuICAgICAgaXNEZWZpbmVkKCksXG4gICAgICBtYXAoXG4gICAgICAgICh1c2VyKSA9PlxuICAgICAgICAgIHVzZXIubmFtZSA/P1xuICAgICAgICAgICh1c2VyLmZpcnN0bmFtZSB8fCB1c2VyLmxhc3RuYW1lXG4gICAgICAgICAgICA/IFt1c2VyLmZpcnN0bmFtZSwgdXNlci5sYXN0bmFtZV0uam9pbignICcpLnRyaW0oKVxuICAgICAgICAgICAgOiBudWxsKSA/P1xuICAgICAgICAgIHVzZXIudXNlcm5hbWVcbiAgICAgIClcbiAgICApO1xuICB9XG59XG4iLCI8YnV0dG9uIFttYXRNZW51VHJpZ2dlckZvcl09XCJtZW51XCJcbiAgICAgICAgW3J4YXBBdmF0YXJCYWNrZ3JvdW5kSW1hZ2VdPVwidXNlclByb2ZpbGVVcmwkIHwgYXN5bmNcIlxuICAgICAgICBbbmFtZV09XCIodXNlck5hbWUkIHwgYXN5bmMpID8/ICcnXCJcbiAgICAgICAgY2xhc3M9XCJwcm9maWxlLWljb25cIlxuICAgICAgICBmeExheW91dD1cInJvd1wiXG4gICAgICAgIGZ4TGF5b3V0QWxpZ249XCJjZW50ZXIgY2VudGVyXCI+XG48L2J1dHRvbj5cblxuPG1hdC1tZW51ICNtZW51PVwibWF0TWVudVwiIFt5UG9zaXRpb25dPVwiJ2JlbG93J1wiPlxuICA8bmctdGVtcGxhdGUgW25nSWZdPVwidXNlclNlcnZpY2UudXNlciQgfCBhc3luY1wiIGxldC11c2VyPlxuICAgIDxidXR0b24gKm5nSWY9XCJ1c2VyLmZpcnN0bmFtZSAmJiB1c2VyLmxhc3RuYW1lXCIgbWF0LW1lbnUtaXRlbT5cbiAgICAgIDxtYXQtaWNvbj5wZXJzb248L21hdC1pY29uPlxuICAgICAgPHNwYW4+e3t1c2VyLmZpcnN0bmFtZX19IHt7dXNlci5sYXN0bmFtZX19PC9zcGFuPlxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b24gKm5nSWY9XCJ1c2VyLm5hbWVcIiBtYXQtbWVudS1pdGVtPlxuICAgICAgPG1hdC1pY29uPnBlcnNvbjwvbWF0LWljb24+XG4gICAgICA8c3Bhbj57e3VzZXIubmFtZX19PC9zcGFuPlxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b24gKm5nSWY9XCJ1c2VyLnVzZXJuYW1lXCIgbWF0LW1lbnUtaXRlbT5cbiAgICAgIDxtYXQtaWNvbj5hY2NvdW50X2NpcmNsZTwvbWF0LWljb24+XG4gICAgICA8c3Bhbj57e3VzZXIudXNlcm5hbWV9fTwvc3Bhbj5cbiAgICA8L2J1dHRvbj5cbiAgICA8YnV0dG9uICpuZ0lmPVwidXNlci5lbWFpbFwiIG1hdC1tZW51LWl0ZW0+XG4gICAgICA8bWF0LWljb24+ZW1haWw8L21hdC1pY29uPlxuICAgICAgPHNwYW4+e3t1c2VyLmVtYWlsfX08L3NwYW4+XG4gICAgPC9idXR0b24+XG4gIDwvbmctdGVtcGxhdGU+XG48L21hdC1tZW51PlxuIl19
30
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: UserProfileIconComponent, decorators: [{
31
+ type: Component,
32
+ args: [{ selector: 'rxap-user-profile-icon', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
33
+ MatMenuModule,
34
+ MatIconModule,
35
+ NgIf,
36
+ AsyncPipe,
37
+ ], template: "<button [matMenuTriggerFor]=\"menu\"\n [disabled]=\"!username()\"\n class=\"profile-icon flex flex-row justify-center items-center\">\n <mat-icon class=\"avatar-icon\" svgIcon=\"account-circle\"></mat-icon>\n</button>\n\n<mat-menu #menu=\"matMenu\" [yPosition]=\"'below'\" class=\"!max-w-none\">\n <button mat-menu-item>\n <span class=\"flex flex-row gap-2\">\n <mat-icon svgIcon=\"account\"></mat-icon>\n <span>{{username()}}</span>\n </span>\n </button>\n <button (click)=\"logout()\" mat-menu-item>\n <span class=\"flex flex-row gap-2\">\n <mat-icon svgIcon=\"logout\"></mat-icon>\n <span i18n>Logout</span>\n </span>\n </button>\n</mat-menu>\n", styles: [".profile-icon{border-radius:100%;border:none;height:32px;width:32px;overflow:hidden;background-position:center center;background-repeat:no-repeat;background-size:cover}.profile-icon .avatar-icon{width:32px;height:32px;font-size:32px}.profile-icon:hover{cursor:pointer}.profile-icon:focus{outline:none}\n"] }]
38
+ }], ctorParameters: function () { return [{ type: i1.RxapUserProfileService }, { type: i1.RxapAuthenticationService }]; } });
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1wcm9maWxlLWljb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhci9sYXlvdXQvc3JjL2xpYi9oZWFkZXIvdXNlci1wcm9maWxlLWljb24vdXNlci1wcm9maWxlLWljb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhci9sYXlvdXQvc3JjL2xpYi9oZWFkZXIvdXNlci1wcm9maWxlLWljb24vdXNlci1wcm9maWxlLWljb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxJQUFJLEdBQ0wsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFHVCxNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQ0wseUJBQXlCLEVBQ3pCLHNCQUFzQixHQUN2QixNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFDTCxNQUFNLEdBRVAsTUFBTSxNQUFNLENBQUM7QUFDZCxPQUFPLEVBQ0wsU0FBUyxFQUNULEdBQUcsR0FDSixNQUFNLGdCQUFnQixDQUFDOzs7OztBQWV4QixNQUFNLE9BQU8sd0JBQXdCO0lBTW5DLFlBQ21CLGtCQUEwQyxFQUMxQyxxQkFBZ0Q7UUFEaEQsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUF3QjtRQUMxQywwQkFBcUIsR0FBckIscUJBQXFCLENBQTJCO1FBTjVELGFBQVEsR0FBRyxNQUFNLENBQWdCLElBQUksQ0FBQyxDQUFDO0lBTzNDLENBQUM7SUFFSixRQUFRO1FBQ04sSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUNuRSxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQ2YsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxFQUNyRCxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQ2YsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQ3hELENBQUMsU0FBUyxFQUFFLENBQUM7SUFDaEIsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsYUFBYSxFQUFFLFdBQVcsRUFBRSxDQUFDO0lBQ3BDLENBQUM7SUFFTSxLQUFLLENBQUMsTUFBTTtRQUNqQixNQUFNLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUM3QyxDQUFDOzhHQTFCVSx3QkFBd0I7a0dBQXhCLHdCQUF3QixrRkN2Q3JDLDRyQkFvQkEsd1dEYUksYUFBYSwrWUFDYixhQUFhOzsyRkFLSix3QkFBd0I7a0JBYnBDLFNBQVM7K0JBQ0Usd0JBQXdCLG1CQUdqQix1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLElBQUksV0FDUDt3QkFDUCxhQUFhO3dCQUNiLGFBQWE7d0JBQ2IsSUFBSTt3QkFDSixTQUFTO3FCQUNWIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQXN5bmNQaXBlLFxuICBOZ0lmLFxufSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIHNpZ25hbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBNYXRNZW51TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbWVudSc7XG5pbXBvcnQge1xuICBSeGFwQXV0aGVudGljYXRpb25TZXJ2aWNlLFxuICBSeGFwVXNlclByb2ZpbGVTZXJ2aWNlLFxufSBmcm9tICdAcnhhcC9hdXRoZW50aWNhdGlvbic7XG5pbXBvcnQge1xuICBmaWx0ZXIsXG4gIFN1YnNjcmlwdGlvbixcbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBzd2l0Y2hNYXAsXG4gIHRhcCxcbn0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdyeGFwLXVzZXItcHJvZmlsZS1pY29uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3VzZXItcHJvZmlsZS1pY29uLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbICcuL3VzZXItcHJvZmlsZS1pY29uLmNvbXBvbmVudC5zY3NzJyBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIE1hdE1lbnVNb2R1bGUsXG4gICAgTWF0SWNvbk1vZHVsZSxcbiAgICBOZ0lmLFxuICAgIEFzeW5jUGlwZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgVXNlclByb2ZpbGVJY29uQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG4gIHB1YmxpYyB1c2VybmFtZSA9IHNpZ25hbDxudWxsIHwgc3RyaW5nPihudWxsKTtcblxuICBwcml2YXRlIF9zdWJzY3JpcHRpb24/OiBTdWJzY3JpcHRpb247XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSB1c2VyUHJvZmlsZVNlcnZpY2U6IFJ4YXBVc2VyUHJvZmlsZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBhdXRoZW50aWNhdGlvblNlcnZpY2U6IFJ4YXBBdXRoZW50aWNhdGlvblNlcnZpY2UsXG4gICkge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb24gPSB0aGlzLmF1dGhlbnRpY2F0aW9uU2VydmljZS5pc0F1dGhlbnRpY2F0ZWQkLnBpcGUoXG4gICAgICBmaWx0ZXIoQm9vbGVhbiksXG4gICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy51c2VyUHJvZmlsZVNlcnZpY2UuZ2V0UHJvZmlsZSgpKSxcbiAgICAgIGZpbHRlcihCb29sZWFuKSxcbiAgICAgIHRhcCgodXNlcikgPT4gdGhpcy51c2VybmFtZS5zZXQodXNlci51c2VybmFtZSA/PyBudWxsKSksXG4gICAgKS5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuX3N1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBsb2dvdXQoKSB7XG4gICAgYXdhaXQgdGhpcy5hdXRoZW50aWNhdGlvblNlcnZpY2Uuc2lnbk91dCgpO1xuICB9XG5cblxufVxuIiwiPGJ1dHRvbiBbbWF0TWVudVRyaWdnZXJGb3JdPVwibWVudVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCIhdXNlcm5hbWUoKVwiXG4gICAgICAgIGNsYXNzPVwicHJvZmlsZS1pY29uIGZsZXggZmxleC1yb3cganVzdGlmeS1jZW50ZXIgaXRlbXMtY2VudGVyXCI+XG4gIDxtYXQtaWNvbiBjbGFzcz1cImF2YXRhci1pY29uXCIgc3ZnSWNvbj1cImFjY291bnQtY2lyY2xlXCI+PC9tYXQtaWNvbj5cbjwvYnV0dG9uPlxuXG48bWF0LW1lbnUgI21lbnU9XCJtYXRNZW51XCIgW3lQb3NpdGlvbl09XCInYmVsb3cnXCIgY2xhc3M9XCIhbWF4LXctbm9uZVwiPlxuICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0+XG4gICAgPHNwYW4gY2xhc3M9XCJmbGV4IGZsZXgtcm93IGdhcC0yXCI+XG4gICAgICA8bWF0LWljb24gc3ZnSWNvbj1cImFjY291bnRcIj48L21hdC1pY29uPlxuICAgICAgPHNwYW4+e3t1c2VybmFtZSgpfX08L3NwYW4+XG4gICAgPC9zcGFuPlxuICA8L2J1dHRvbj5cbiAgPGJ1dHRvbiAoY2xpY2spPVwibG9nb3V0KClcIiBtYXQtbWVudS1pdGVtPlxuICAgIDxzcGFuIGNsYXNzPVwiZmxleCBmbGV4LXJvdyBnYXAtMlwiPlxuICAgICAgPG1hdC1pY29uIHN2Z0ljb249XCJsb2dvdXRcIj48L21hdC1pY29uPlxuICAgICAgPHNwYW4gaTE4bj5Mb2dvdXQ8L3NwYW4+XG4gICAgPC9zcGFuPlxuICA8L2J1dHRvbj5cbjwvbWF0LW1lbnU+XG4iXX0=
@@ -0,0 +1,30 @@
1
+ import { Injectable, isDevMode, } from '@angular/core';
2
+ import { RxapUserProfileService } from '@rxap/authentication';
3
+ import { I18nService } from './i18n.service';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "./i18n.service";
6
+ import * as i2 from "@rxap/authentication";
7
+ export class I18nCheckGuard {
8
+ constructor(i18nService, userProfileService) {
9
+ this.i18nService = i18nService;
10
+ this.userProfileService = userProfileService;
11
+ }
12
+ async canActivate() {
13
+ if (isDevMode()) {
14
+ return true;
15
+ }
16
+ const selectedLanguage = (await this.userProfileService.getLanguage()) ?? 'en';
17
+ if (this.i18nService.currentLanguage !== selectedLanguage) {
18
+ this.i18nService.redirect(selectedLanguage);
19
+ return false;
20
+ }
21
+ return true;
22
+ }
23
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: I18nCheckGuard, deps: [{ token: i1.I18nService }, { token: i2.RxapUserProfileService }], target: i0.ɵɵFactoryTarget.Injectable }); }
24
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: I18nCheckGuard, providedIn: 'root' }); }
25
+ }
26
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: I18nCheckGuard, decorators: [{
27
+ type: Injectable,
28
+ args: [{ providedIn: 'root' }]
29
+ }], ctorParameters: function () { return [{ type: i1.I18nService }, { type: i2.RxapUserProfileService }]; } });
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaTE4bi1jaGVjay5ndWFyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXIvbGF5b3V0L3NyYy9saWIvaTE4bi1jaGVjay5ndWFyZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsVUFBVSxFQUNWLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7QUFHN0MsTUFBTSxPQUFPLGNBQWM7SUFFekIsWUFDbUIsV0FBd0IsRUFDeEIsa0JBQTBDO1FBRDFDLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBd0I7SUFFN0QsQ0FBQztJQUVELEtBQUssQ0FBQyxXQUFXO1FBQ2YsSUFBSSxTQUFTLEVBQUUsRUFBRTtZQUNmLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFDRCxNQUFNLGdCQUFnQixHQUFHLENBQUMsTUFBTSxJQUFJLENBQUMsa0JBQWtCLENBQUMsV0FBVyxFQUFFLENBQUMsSUFBSSxJQUFJLENBQUM7UUFDL0UsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLGVBQWUsS0FBSyxnQkFBZ0IsRUFBRTtZQUN6RCxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1lBQzVDLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7OEdBbEJVLGNBQWM7a0hBQWQsY0FBYyxjQURELE1BQU07OzJGQUNuQixjQUFjO2tCQUQxQixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEluamVjdGFibGUsXG4gIGlzRGV2TW9kZSxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSeGFwVXNlclByb2ZpbGVTZXJ2aWNlIH0gZnJvbSAnQHJ4YXAvYXV0aGVudGljYXRpb24nO1xuaW1wb3J0IHsgSTE4blNlcnZpY2UgfSBmcm9tICcuL2kxOG4uc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgSTE4bkNoZWNrR3VhcmQge1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgaTE4blNlcnZpY2U6IEkxOG5TZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdXNlclByb2ZpbGVTZXJ2aWNlOiBSeGFwVXNlclByb2ZpbGVTZXJ2aWNlLFxuICApIHtcbiAgfVxuXG4gIGFzeW5jIGNhbkFjdGl2YXRlKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGlmIChpc0Rldk1vZGUoKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGNvbnN0IHNlbGVjdGVkTGFuZ3VhZ2UgPSAoYXdhaXQgdGhpcy51c2VyUHJvZmlsZVNlcnZpY2UuZ2V0TGFuZ3VhZ2UoKSkgPz8gJ2VuJztcbiAgICBpZiAodGhpcy5pMThuU2VydmljZS5jdXJyZW50TGFuZ3VhZ2UgIT09IHNlbGVjdGVkTGFuZ3VhZ2UpIHtcbiAgICAgIHRoaXMuaTE4blNlcnZpY2UucmVkaXJlY3Qoc2VsZWN0ZWRMYW5ndWFnZSk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbn1cbiJdfQ==
@@ -0,0 +1,36 @@
1
+ import { Inject, Injectable, LOCALE_ID, } from '@angular/core';
2
+ import { RxapUserProfileService } from '@rxap/authentication';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@rxap/authentication";
5
+ export class I18nService {
6
+ constructor(localId, userProfileService) {
7
+ this.localId = localId;
8
+ this.userProfileService = userProfileService;
9
+ this.currentLanguage = this.localId.replace(/-[A-Z]+$/, '');
10
+ }
11
+ async setLanguage(language) {
12
+ await this.userProfileService.setLanguage(language);
13
+ this.redirect(language);
14
+ }
15
+ redirect(next, current = this.currentLanguage) {
16
+ if (current === next) {
17
+ console.warn('[I18nService] redirect not required - language unchanged');
18
+ return;
19
+ }
20
+ const redirectUrl = location.origin +
21
+ location.pathname.replace(new RegExp(`^/${current}`), `/${next}`) +
22
+ location.search;
23
+ console.log('[I18nService] redirect to: ' + redirectUrl);
24
+ location.replace(redirectUrl);
25
+ }
26
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: I18nService, deps: [{ token: LOCALE_ID }, { token: i1.RxapUserProfileService }], target: i0.ɵɵFactoryTarget.Injectable }); }
27
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: I18nService, providedIn: 'root' }); }
28
+ }
29
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: I18nService, decorators: [{
30
+ type: Injectable,
31
+ args: [{ providedIn: 'root' }]
32
+ }], ctorParameters: function () { return [{ type: undefined, decorators: [{
33
+ type: Inject,
34
+ args: [LOCALE_ID]
35
+ }] }, { type: i1.RxapUserProfileService }]; } });
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaTE4bi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhci9sYXlvdXQvc3JjL2xpYi9pMThuLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLE1BQU0sRUFDTixVQUFVLEVBQ1YsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7QUFHOUQsTUFBTSxPQUFPLFdBQVc7SUFJdEIsWUFFbUIsT0FBZSxFQUNmLGtCQUEwQztRQUQxQyxZQUFPLEdBQVAsT0FBTyxDQUFRO1FBQ2YsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUF3QjtRQUUzRCxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRU0sS0FBSyxDQUFDLFdBQVcsQ0FBQyxRQUFnQjtRQUN2QyxNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDcEQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBRU0sUUFBUSxDQUFDLElBQVksRUFBRSxVQUFrQixJQUFJLENBQUMsZUFBZTtRQUNsRSxJQUFJLE9BQU8sS0FBSyxJQUFJLEVBQUU7WUFDcEIsT0FBTyxDQUFDLElBQUksQ0FBQywwREFBMEQsQ0FBQyxDQUFDO1lBQ3pFLE9BQU87U0FDUjtRQUNELE1BQU0sV0FBVyxHQUNmLFFBQVEsQ0FBQyxNQUFNO1lBQ2YsUUFBUSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxNQUFNLENBQUMsS0FBTSxPQUFRLEVBQUUsQ0FBQyxFQUFFLElBQUssSUFBSyxFQUFFLENBQUM7WUFDckUsUUFBUSxDQUFDLE1BQU0sQ0FBQztRQUNsQixPQUFPLENBQUMsR0FBRyxDQUFDLDZCQUE2QixHQUFHLFdBQVcsQ0FBQyxDQUFDO1FBQ3pELFFBQVEsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDaEMsQ0FBQzs4R0E1QlUsV0FBVyxrQkFLWixTQUFTO2tIQUxSLFdBQVcsY0FERSxNQUFNOzsyRkFDbkIsV0FBVztrQkFEdkIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUU7OzBCQU03QixNQUFNOzJCQUFDLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBJbmplY3QsXG4gIEluamVjdGFibGUsXG4gIExPQ0FMRV9JRCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSeGFwVXNlclByb2ZpbGVTZXJ2aWNlIH0gZnJvbSAnQHJ4YXAvYXV0aGVudGljYXRpb24nO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIEkxOG5TZXJ2aWNlIHtcblxuICBwdWJsaWMgcmVhZG9ubHkgY3VycmVudExhbmd1YWdlOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChMT0NBTEVfSUQpXG4gICAgcHJpdmF0ZSByZWFkb25seSBsb2NhbElkOiBzdHJpbmcsXG4gICAgcHJpdmF0ZSByZWFkb25seSB1c2VyUHJvZmlsZVNlcnZpY2U6IFJ4YXBVc2VyUHJvZmlsZVNlcnZpY2UsXG4gICkge1xuICAgIHRoaXMuY3VycmVudExhbmd1YWdlID0gdGhpcy5sb2NhbElkLnJlcGxhY2UoLy1bQS1aXSskLywgJycpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHNldExhbmd1YWdlKGxhbmd1YWdlOiBzdHJpbmcpIHtcbiAgICBhd2FpdCB0aGlzLnVzZXJQcm9maWxlU2VydmljZS5zZXRMYW5ndWFnZShsYW5ndWFnZSk7XG4gICAgdGhpcy5yZWRpcmVjdChsYW5ndWFnZSk7XG4gIH1cblxuICBwdWJsaWMgcmVkaXJlY3QobmV4dDogc3RyaW5nLCBjdXJyZW50OiBzdHJpbmcgPSB0aGlzLmN1cnJlbnRMYW5ndWFnZSkge1xuICAgIGlmIChjdXJyZW50ID09PSBuZXh0KSB7XG4gICAgICBjb25zb2xlLndhcm4oJ1tJMThuU2VydmljZV0gcmVkaXJlY3Qgbm90IHJlcXVpcmVkIC0gbGFuZ3VhZ2UgdW5jaGFuZ2VkJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHJlZGlyZWN0VXJsID1cbiAgICAgIGxvY2F0aW9uLm9yaWdpbiArXG4gICAgICBsb2NhdGlvbi5wYXRobmFtZS5yZXBsYWNlKG5ldyBSZWdFeHAoYF4vJHsgY3VycmVudCB9YCksIGAvJHsgbmV4dCB9YCkgK1xuICAgICAgbG9jYXRpb24uc2VhcmNoO1xuICAgIGNvbnNvbGUubG9nKCdbSTE4blNlcnZpY2VdIHJlZGlyZWN0IHRvOiAnICsgcmVkaXJlY3RVcmwpO1xuICAgIGxvY2F0aW9uLnJlcGxhY2UocmVkaXJlY3RVcmwpO1xuICB9XG5cbn1cbiJdfQ==
@@ -0,0 +1,34 @@
1
+ import { Inject, Injectable, LOCALE_ID, } from '@angular/core';
2
+ import { ConfigService } from '@rxap/config';
3
+ import { I18nService } from './i18n.service';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@rxap/config";
6
+ import * as i2 from "./i18n.service";
7
+ export class LanguageSelectorService {
8
+ constructor(config, localId, i18nService) {
9
+ this.config = config;
10
+ this.localId = localId;
11
+ this.i18nService = i18nService;
12
+ this.languages = this.config.get('i18n.languages') ?? {};
13
+ this.defaultLanguage =
14
+ this.config.get('i18n.defaultLanguage') ??
15
+ Object.keys(this.languages)[0] ??
16
+ 'en';
17
+ this.selectedLanguage = this.i18nService.currentLanguage;
18
+ }
19
+ async setLanguage(language) {
20
+ if (language !== this.i18nService.currentLanguage) {
21
+ await this.i18nService.setLanguage(language);
22
+ }
23
+ }
24
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: LanguageSelectorService, deps: [{ token: i1.ConfigService }, { token: LOCALE_ID }, { token: i2.I18nService }], target: i0.ɵɵFactoryTarget.Injectable }); }
25
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: LanguageSelectorService, providedIn: 'root' }); }
26
+ }
27
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: LanguageSelectorService, decorators: [{
28
+ type: Injectable,
29
+ args: [{ providedIn: 'root' }]
30
+ }], ctorParameters: function () { return [{ type: i1.ConfigService }, { type: undefined, decorators: [{
31
+ type: Inject,
32
+ args: [LOCALE_ID]
33
+ }] }, { type: i2.I18nService }]; } });
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFuZ3VhZ2Utc2VsZWN0b3Iuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXIvbGF5b3V0L3NyYy9saWIvbGFuZ3VhZ2Utc2VsZWN0b3Iuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsTUFBTSxFQUNOLFVBQVUsRUFDVixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUM3QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7QUFHN0MsTUFBTSxPQUFPLHVCQUF1QjtJQUtsQyxZQUNtQixNQUFxQixFQUVyQixPQUFlLEVBQ2YsV0FBd0I7UUFIeEIsV0FBTSxHQUFOLE1BQU0sQ0FBZTtRQUVyQixZQUFPLEdBQVAsT0FBTyxDQUFRO1FBQ2YsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFFekMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBTSxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUM5RCxJQUFJLENBQUMsZUFBZTtZQUNsQixJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxzQkFBc0IsQ0FBQztnQkFDdkMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUM5QixJQUFJLENBQUM7UUFDUCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxlQUFlLENBQUM7SUFDM0QsQ0FBQztJQUVNLEtBQUssQ0FBQyxXQUFXLENBQUMsUUFBZ0I7UUFDdkMsSUFBSSxRQUFRLEtBQUssSUFBSSxDQUFDLFdBQVcsQ0FBQyxlQUFlLEVBQUU7WUFDakQsTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUM5QztJQUNILENBQUM7OEdBdkJVLHVCQUF1QiwrQ0FPeEIsU0FBUztrSEFQUix1QkFBdUIsY0FEVixNQUFNOzsyRkFDbkIsdUJBQXVCO2tCQURuQyxVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRTs7MEJBUTdCLE1BQU07MkJBQUMsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEluamVjdCxcbiAgSW5qZWN0YWJsZSxcbiAgTE9DQUxFX0lELFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbmZpZ1NlcnZpY2UgfSBmcm9tICdAcnhhcC9jb25maWcnO1xuaW1wb3J0IHsgSTE4blNlcnZpY2UgfSBmcm9tICcuL2kxOG4uc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgTGFuZ3VhZ2VTZWxlY3RvclNlcnZpY2Uge1xuICBwdWJsaWMgcmVhZG9ubHkgbGFuZ3VhZ2VzOiBhbnk7XG4gIHB1YmxpYyByZWFkb25seSBkZWZhdWx0TGFuZ3VhZ2U6IHN0cmluZztcbiAgcHVibGljIHNlbGVjdGVkTGFuZ3VhZ2U6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZzogQ29uZmlnU2VydmljZSxcbiAgICBASW5qZWN0KExPQ0FMRV9JRClcbiAgICBwcml2YXRlIHJlYWRvbmx5IGxvY2FsSWQ6IHN0cmluZyxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGkxOG5TZXJ2aWNlOiBJMThuU2VydmljZSxcbiAgKSB7XG4gICAgdGhpcy5sYW5ndWFnZXMgPSB0aGlzLmNvbmZpZy5nZXQ8YW55PignaTE4bi5sYW5ndWFnZXMnKSA/PyB7fTtcbiAgICB0aGlzLmRlZmF1bHRMYW5ndWFnZSA9XG4gICAgICB0aGlzLmNvbmZpZy5nZXQoJ2kxOG4uZGVmYXVsdExhbmd1YWdlJykgPz9cbiAgICAgIE9iamVjdC5rZXlzKHRoaXMubGFuZ3VhZ2VzKVswXSA/P1xuICAgICAgJ2VuJztcbiAgICB0aGlzLnNlbGVjdGVkTGFuZ3VhZ2UgPSB0aGlzLmkxOG5TZXJ2aWNlLmN1cnJlbnRMYW5ndWFnZTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBzZXRMYW5ndWFnZShsYW5ndWFnZTogc3RyaW5nKSB7XG4gICAgaWYgKGxhbmd1YWdlICE9PSB0aGlzLmkxOG5TZXJ2aWNlLmN1cnJlbnRMYW5ndWFnZSkge1xuICAgICAgYXdhaXQgdGhpcy5pMThuU2VydmljZS5zZXRMYW5ndWFnZShsYW5ndWFnZSk7XG4gICAgfVxuICB9XG5cbn1cbiJdfQ==