@rxap/layout 16.0.0-dev.3 → 16.0.0-dev.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,18 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [16.0.0-dev.5](https://gitlab.com/rxap/packages/compare/@rxap/layout@16.0.0-dev.4...@rxap/layout@16.0.0-dev.5) (2023-07-20)
7
+
8
+ ### Bug Fixes
9
+
10
+ - resolve circular dependency between NavigationItemComponent and NavigationComponent ([3e97a5d](https://gitlab.com/rxap/packages/commit/3e97a5d18c34286198fedb9024d6e91fa1910da3))
11
+
12
+ # [16.0.0-dev.4](https://gitlab.com/rxap/packages/compare/@rxap/layout@16.0.0-dev.3...@rxap/layout@16.0.0-dev.4) (2023-07-10)
13
+
14
+ ### Bug Fixes
15
+
16
+ - update package dependency versions ([8479f5c](https://gitlab.com/rxap/packages/commit/8479f5c405a885cc0f300cec6156584e4c65d59c))
17
+
6
18
  # [16.0.0-dev.3](https://gitlab.com/rxap/packages/compare/@rxap/layout@16.0.0-dev.2...@rxap/layout@16.0.0-dev.3) (2023-07-10)
7
19
 
8
20
  ### Bug Fixes
@@ -1,5 +1,5 @@
1
1
  import { __decorate, __metadata } from "tslib";
2
- import { ChangeDetectionStrategy, Component, ElementRef, HostBinding, HostListener, Inject, Input, Renderer2, TemplateRef, ViewChild, ViewContainerRef, ViewEncapsulation, } from '@angular/core';
2
+ import { ChangeDetectionStrategy, Component, ElementRef, forwardRef, HostBinding, HostListener, Inject, Input, Renderer2, TemplateRef, ViewChild, ViewContainerRef, ViewEncapsulation, } from '@angular/core';
3
3
  import { DebounceCall, Required, } from '@rxap/utilities';
4
4
  import { animate, style, transition, trigger, } from '@angular/animations';
5
5
  import { NavigationEnd, Router, RouterLink, RouterLinkActive, } from '@angular/router';
@@ -118,7 +118,7 @@ export class NavigationItemComponent {
118
118
  return item;
119
119
  }
120
120
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: NavigationItemComponent, deps: [{ token: Router }, { token: SidenavComponentService }, { token: ElementRef }, { token: Renderer2 }, { token: Overlay }, { token: ViewContainerRef }], target: i0.ɵɵFactoryTarget.Component }); }
121
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.4", type: NavigationItemComponent, isStandalone: true, selector: "li[rxap-navigation-item]", inputs: { item: "item", level: "level" }, host: { listeners: { "mouseenter": "onMouseenter()", "mouseleave": "onMouseleave()" }, properties: { "class.active": "this.isActive" }, classAttribute: "rxap-navigation-item" }, viewQueries: [{ propertyName: "routerLinkActive", first: true, predicate: RouterLinkActive, descendants: true, static: true }, { propertyName: "_navigationOverlay", first: true, predicate: ["navigationOverlay"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<a [matTooltipDisabled]=\"(sidenav.collapsed$ | async) === false\"\n [matTooltip]=\"item.label\"\n [routerLink]=\"item.routerLink\"\n class=\"navigation-link mat-body-2 mat-body-strong navigation-level-{{level}}\"\n matRipple routerLinkActive=\"link-active\">\n <mat-icon *ngIf=\"item.icon\" [rxapIcon]=\"item.icon\" class=\"icon\"></mat-icon>\n <ng-template [ngIf]=\"(sidenav.collapsed$ | async) === false\">\n <span class=\"label\">{{ item.label }}</span>\n </ng-template>\n</a>\n\n<ul *ngIf=\"routerLinkActive.isActive && (sidenav.collapsed$ | async) === false && children\"\n [@sub-nav]\n [items]=\"children\"\n [level]=\"level + 1\"\n class=\"sub-items\"\n fxFlex=\"nogrow\"\n rxap-navigation\n>\n</ul>\n\n<ng-template #navigationOverlay>\n <div (mouseenter)=\"lockeOverlay = true\"\n (mouseleave)=\"lockeOverlay = false; onMouseleave()\" class=\"navigation-overlay-container mat-elevation-z1\">\n <ul>\n <li *ngFor=\"let child of children\">\n <a *ngIf=\"isNavigationItem(child)\" [routerLink]=\"asNavigationItem(child).routerLink\"\n class=\"navigation-link mat-subtitle-2 mat-body-strong\" matRipple>\n <mat-icon *ngIf=\"asNavigationItem(child).icon\" [rxapIcon]=\"asNavigationItem(child).icon\"\n class=\"icon\"></mat-icon>\n <span class=\"label\">{{ asNavigationItem(child).label }}</span>\n </a>\n </li>\n </ul>\n </div>\n</ng-template>\n", styles: [".rxap-navigation-item,.navigation-overlay-container{display:flex;flex-direction:column;min-height:48px}.rxap-navigation-item .navigation-link,.navigation-overlay-container .navigation-link{display:flex;flex-direction:row;align-items:center;text-decoration:none;height:48px}.rxap-navigation-item .navigation-link .icon,.navigation-overlay-container .navigation-link .icon{margin:0 16px}.rxap-navigation-item .navigation-link .label,.navigation-overlay-container .navigation-link .label{padding-right:12px}.rxap-navigation-item .navigation-link.navigation-level-1,.navigation-overlay-container .navigation-link.navigation-level-1{padding-left:52px}.rxap-navigation-item .navigation-link.navigation-level-1 .icon,.navigation-overlay-container .navigation-link.navigation-level-1 .icon{padding-left:0}.rxap-navigation-item .navigation-link.navigation-level-2,.navigation-overlay-container .navigation-link.navigation-level-2{padding-left:88px}.rxap-navigation-item .navigation-link.navigation-level-2 .icon,.navigation-overlay-container .navigation-link.navigation-level-2 .icon{padding-left:0}.navigation-overlay-container{padding:0 16px}.navigation-overlay-container ul{list-style-type:none;margin:0;padding:0}.navigation-overlay-container ul .navigation-link .label{padding-right:0}.navigation-overlay-container ul .navigation-link .icon{margin-left:0}\n"], dependencies: [{ kind: "directive", type: RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "ngmodule", type: MatRippleModule }, { kind: "directive", type: i1.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i2.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: IconDirective, selector: "mat-icon[rxapIcon]", inputs: ["rxapIcon"] }, { kind: "component", type: NavigationComponent, selector: "ul[rxap-navigation]", inputs: ["root", "items", "level"] }, { kind: "ngmodule", type: FlexModule }, { kind: "directive", type: i4.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], animations: [
121
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.4", type: NavigationItemComponent, isStandalone: true, selector: "li[rxap-navigation-item]", inputs: { item: "item", level: "level" }, host: { listeners: { "mouseenter": "onMouseenter()", "mouseleave": "onMouseleave()" }, properties: { "class.active": "this.isActive" }, classAttribute: "rxap-navigation-item" }, viewQueries: [{ propertyName: "routerLinkActive", first: true, predicate: RouterLinkActive, descendants: true, static: true }, { propertyName: "_navigationOverlay", first: true, predicate: ["navigationOverlay"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<a [matTooltipDisabled]=\"(sidenav.collapsed$ | async) === false\"\n [matTooltip]=\"item.label\"\n [routerLink]=\"item.routerLink\"\n class=\"navigation-link mat-body-2 mat-body-strong navigation-level-{{level}}\"\n matRipple routerLinkActive=\"link-active\">\n <mat-icon *ngIf=\"item.icon\" [rxapIcon]=\"item.icon\" class=\"icon\"></mat-icon>\n <ng-template [ngIf]=\"(sidenav.collapsed$ | async) === false\">\n <span class=\"label\">{{ item.label }}</span>\n </ng-template>\n</a>\n\n<ul *ngIf=\"routerLinkActive.isActive && (sidenav.collapsed$ | async) === false && children\"\n [@sub-nav]\n [items]=\"children\"\n [level]=\"level + 1\"\n class=\"sub-items\"\n fxFlex=\"nogrow\"\n rxap-navigation\n>\n</ul>\n\n<ng-template #navigationOverlay>\n <div (mouseenter)=\"lockeOverlay = true\"\n (mouseleave)=\"lockeOverlay = false; onMouseleave()\" class=\"navigation-overlay-container mat-elevation-z1\">\n <ul>\n <li *ngFor=\"let child of children\">\n <a *ngIf=\"isNavigationItem(child)\" [routerLink]=\"asNavigationItem(child).routerLink\"\n class=\"navigation-link mat-subtitle-2 mat-body-strong\" matRipple>\n <mat-icon *ngIf=\"asNavigationItem(child).icon\" [rxapIcon]=\"asNavigationItem(child).icon\"\n class=\"icon\"></mat-icon>\n <span class=\"label\">{{ asNavigationItem(child).label }}</span>\n </a>\n </li>\n </ul>\n </div>\n</ng-template>\n", styles: [".rxap-navigation-item,.navigation-overlay-container{display:flex;flex-direction:column;min-height:48px}.rxap-navigation-item .navigation-link,.navigation-overlay-container .navigation-link{display:flex;flex-direction:row;align-items:center;text-decoration:none;height:48px}.rxap-navigation-item .navigation-link .icon,.navigation-overlay-container .navigation-link .icon{margin:0 16px}.rxap-navigation-item .navigation-link .label,.navigation-overlay-container .navigation-link .label{padding-right:12px}.rxap-navigation-item .navigation-link.navigation-level-1,.navigation-overlay-container .navigation-link.navigation-level-1{padding-left:52px}.rxap-navigation-item .navigation-link.navigation-level-1 .icon,.navigation-overlay-container .navigation-link.navigation-level-1 .icon{padding-left:0}.rxap-navigation-item .navigation-link.navigation-level-2,.navigation-overlay-container .navigation-link.navigation-level-2{padding-left:88px}.rxap-navigation-item .navigation-link.navigation-level-2 .icon,.navigation-overlay-container .navigation-link.navigation-level-2 .icon{padding-left:0}.navigation-overlay-container{padding:0 16px}.navigation-overlay-container ul{list-style-type:none;margin:0;padding:0}.navigation-overlay-container ul .navigation-link .label{padding-right:0}.navigation-overlay-container ul .navigation-link .icon{margin-left:0}\n"], dependencies: [{ kind: "directive", type: i0.forwardRef(function () { return RouterLinkActive; }), selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "ngmodule", type: i0.forwardRef(function () { return MatRippleModule; }) }, { kind: "directive", type: i0.forwardRef(function () { return i1.MatRipple; }), selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { kind: "directive", type: i0.forwardRef(function () { return RouterLink; }), selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: i0.forwardRef(function () { return MatTooltipModule; }) }, { kind: "directive", type: i0.forwardRef(function () { return i2.MatTooltip; }), selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "directive", type: i0.forwardRef(function () { return NgIf; }), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: i0.forwardRef(function () { return MatIconModule; }) }, { kind: "component", type: i0.forwardRef(function () { return i3.MatIcon; }), selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i0.forwardRef(function () { return IconDirective; }), selector: "mat-icon[rxapIcon]", inputs: ["rxapIcon"] }, { kind: "component", type: i0.forwardRef(function () { return NavigationComponent; }), selector: "ul[rxap-navigation]", inputs: ["root", "items", "level"] }, { kind: "ngmodule", type: i0.forwardRef(function () { return FlexModule; }) }, { kind: "directive", type: i0.forwardRef(function () { return i4.DefaultFlexDirective; }), selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "directive", type: i0.forwardRef(function () { return NgFor; }), selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: i0.forwardRef(function () { return AsyncPipe; }), name: "async" }], animations: [
122
122
  trigger('sub-nav', [
123
123
  transition(':enter', [
124
124
  style({
@@ -174,7 +174,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.4", ngImpor
174
174
  NgIf,
175
175
  MatIconModule,
176
176
  IconDirective,
177
- NavigationComponent,
177
+ forwardRef(() => NavigationComponent),
178
178
  FlexModule,
179
179
  NgFor,
180
180
  AsyncPipe,
@@ -217,4 +217,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.4", ngImpor
217
217
  type: HostListener,
218
218
  args: ['mouseleave']
219
219
  }] } });
220
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdGlvbi1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXIvbGF5b3V0L3NyYy9saWIvbmF2aWdhdGlvbi9uYXZpZ2F0aW9uLWl0ZW0vbmF2aWdhdGlvbi1pdGVtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXIvbGF5b3V0L3NyYy9saWIvbmF2aWdhdGlvbi9uYXZpZ2F0aW9uLWl0ZW0vbmF2aWdhdGlvbi1pdGVtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxVQUFVLEVBRVYsV0FBVyxFQUNYLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUlMLFNBQVMsRUFFVCxXQUFXLEVBQ1gsU0FBUyxFQUNULGdCQUFnQixFQUNoQixpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNMLFlBQVksRUFDWixRQUFRLEdBQ1QsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLEVBQ0wsT0FBTyxFQUNQLEtBQUssRUFDTCxVQUFVLEVBQ1YsT0FBTyxHQUNSLE1BQU0scUJBQXFCLENBQUM7QUFNN0IsT0FBTyxFQUNMLGFBQWEsRUFDYixNQUFNLEVBQ04sVUFBVSxFQUNWLGdCQUFnQixHQUNqQixNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUNMLEtBQUssRUFDTCxvQkFBb0IsRUFDcEIsTUFBTSxFQUNOLElBQUksRUFDSixTQUFTLEVBQ1QsR0FBRyxHQUNKLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDbEYsT0FBTyxFQUNMLE9BQU8sR0FF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QkFDM0IsQ0FBQzt5QkFDSCxDQUFDO3FCQUNILGNBQ1csSUFBSSxXQUNQO3dCQUNQLGdCQUFnQjt3QkFDaEIsZUFBZTt3QkFDZixVQUFVO3dCQUNWLGdCQUFnQjt3QkFDaEIsSUFBSTt3QkFDSixhQUFhO3dCQUNiLGFBQWE7d0JBQ2IsbUJBQW1CO3dCQUNuQixVQUFVO3dCQUNWLEtBQUs7d0JBQ0wsU0FBUztxQkFDVjs7MEJBaUNFLE1BQU07MkJBQUMsTUFBTTs7MEJBRWIsTUFBTTsyQkFBQyx1QkFBdUI7OzBCQUU5QixNQUFNOzJCQUFDLFVBQVU7OzBCQUVqQixNQUFNOzJCQUFDLFNBQVM7OzBCQUVoQixNQUFNOzJCQUFDLE9BQU87OzBCQUVkLE1BQU07MkJBQUMsZ0JBQWdCOzRDQXBDbkIsZ0JBQWdCO3NCQUR0QixTQUFTO3VCQUFDLGdCQUFnQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFLdEMsSUFBSTtzQkFGVixLQUFLO2dCQUtDLEtBQUs7c0JBRFgsS0FBSztnQkFJQyxRQUFRO3NCQURkLFdBQVc7dUJBQUMsY0FBYztnQkFJbkIsa0JBQWtCO3NCQUR6QixTQUFTO3VCQUFDLG1CQUFtQjtnQkFtRnZCLFlBQVk7c0JBRGxCLFlBQVk7dUJBQUMsWUFBWTtnQkE4Qm5CLFlBQVk7c0JBRmxCLFlBQVk7dUJBQUMsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEVtYmVkZGVkVmlld1JlZixcbiAgSG9zdEJpbmRpbmcsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5qZWN0LFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgUmVuZGVyZXIyLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxuICBWaWV3Q29udGFpbmVyUmVmLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBEZWJvdW5jZUNhbGwsXG4gIFJlcXVpcmVkLFxufSBmcm9tICdAcnhhcC91dGlsaXRpZXMnO1xuaW1wb3J0IHtcbiAgYW5pbWF0ZSxcbiAgc3R5bGUsXG4gIHRyYW5zaXRpb24sXG4gIHRyaWdnZXIsXG59IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHtcbiAgTmF2aWdhdGlvbixcbiAgTmF2aWdhdGlvbkRpdmlkZXJJdGVtLFxuICBOYXZpZ2F0aW9uSXRlbSxcbn0gZnJvbSAnLi4vbmF2aWdhdGlvbi1pdGVtJztcbmltcG9ydCB7XG4gIE5hdmlnYXRpb25FbmQsXG4gIFJvdXRlcixcbiAgUm91dGVyTGluayxcbiAgUm91dGVyTGlua0FjdGl2ZSxcbn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgZGVsYXksXG4gIGRpc3RpbmN0VW50aWxDaGFuZ2VkLFxuICBmaWx0ZXIsXG4gIHNraXAsXG4gIHN0YXJ0V2l0aCxcbiAgdGFwLFxufSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBTaWRlbmF2Q29tcG9uZW50U2VydmljZSB9IGZyb20gJy4uLy4uL3NpZGVuYXYvc2lkZW5hdi5jb21wb25lbnQuc2VydmljZSc7XG5pbXBvcnQge1xuICBPdmVybGF5LFxuICBPdmVybGF5UmVmLFxufSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBUZW1wbGF0ZVBvcnRhbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHsgRmxleE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2ZsZXgtbGF5b3V0L2ZsZXgnO1xuaW1wb3J0IHsgTmF2aWdhdGlvbkNvbXBvbmVudCB9IGZyb20gJy4uL25hdmlnYXRpb24uY29tcG9uZW50JztcbmltcG9ydCB7IEljb25EaXJlY3RpdmUgfSBmcm9tICdAcnhhcC9tYXRlcmlhbC1kaXJlY3RpdmVzL2ljb24nO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHtcbiAgQXN5bmNQaXBlLFxuICBOZ0ZvcixcbiAgTmdJZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE1hdFRvb2x0aXBNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJztcbmltcG9ydCB7IE1hdFJpcHBsZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3JcbiAgc2VsZWN0b3I6ICdsaVtyeGFwLW5hdmlnYXRpb24taXRlbV0nLFxuICB0ZW1wbGF0ZVVybDogJy4vbmF2aWdhdGlvbi1pdGVtLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbICcuL25hdmlnYXRpb24taXRlbS5jb21wb25lbnQuc2NzcycgXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taG9zdC1tZXRhZGF0YS1wcm9wZXJ0eVxuICBob3N0OiB7XG4gICAgY2xhc3M6ICdyeGFwLW5hdmlnYXRpb24taXRlbScsXG4gIH0sXG4gIGFuaW1hdGlvbnM6IFtcbiAgICB0cmlnZ2VyKCdzdWItbmF2JywgW1xuICAgICAgdHJhbnNpdGlvbignOmVudGVyJywgW1xuICAgICAgICBzdHlsZSh7XG4gICAgICAgICAgZGlzcGxheTogJ2Jsb2NrJyxcbiAgICAgICAgICBoZWlnaHQ6ICcwJyxcbiAgICAgICAgICBvdmVyZmxvdzogJ2hpZGRlbicsXG4gICAgICAgIH0pLFxuICAgICAgICBhbmltYXRlKDE1MCwgc3R5bGUoeyBoZWlnaHQ6ICcqJyB9KSksXG4gICAgICBdKSxcbiAgICAgIHRyYW5zaXRpb24oJzpsZWF2ZScsIFtcbiAgICAgICAgc3R5bGUoeyBvdmVyZmxvdzogJ2hpZGRlbicgfSksXG4gICAgICAgIGFuaW1hdGUoMzAwLCBzdHlsZSh7IGhlaWdodDogJzAnIH0pKSxcbiAgICAgICAgc3R5bGUoeyBkaXNwbGF5OiAnbm9uZScgfSksXG4gICAgICBdKSxcbiAgICBdKSxcbiAgXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIFJvdXRlckxpbmtBY3RpdmUsXG4gICAgTWF0UmlwcGxlTW9kdWxlLFxuICAgIFJvdXRlckxpbmssXG4gICAgTWF0VG9vbHRpcE1vZHVsZSxcbiAgICBOZ0lmLFxuICAgIE1hdEljb25Nb2R1bGUsXG4gICAgSWNvbkRpcmVjdGl2ZSxcbiAgICBOYXZpZ2F0aW9uQ29tcG9uZW50LFxuICAgIEZsZXhNb2R1bGUsXG4gICAgTmdGb3IsXG4gICAgQXN5bmNQaXBlLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBOYXZpZ2F0aW9uSXRlbUNvbXBvbmVudFxuICBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95LCBPbkluaXQge1xuICBwdWJsaWMgY2hpbGRyZW46IE5hdmlnYXRpb24gfCBudWxsID0gbnVsbDtcblxuICBAVmlld0NoaWxkKFJvdXRlckxpbmtBY3RpdmUsIHsgc3RhdGljOiB0cnVlIH0pXG4gIHB1YmxpYyByb3V0ZXJMaW5rQWN0aXZlITogUm91dGVyTGlua0FjdGl2ZTtcblxuICBASW5wdXQoKVxuICBAUmVxdWlyZWRcbiAgcHVibGljIGl0ZW0hOiBOYXZpZ2F0aW9uSXRlbTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgbGV2ZWwgPSAwO1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MuYWN0aXZlJylcbiAgcHVibGljIGlzQWN0aXZlID0gZmFsc2U7XG5cbiAgQFZpZXdDaGlsZCgnbmF2aWdhdGlvbk92ZXJsYXknKVxuICBwcml2YXRlIF9uYXZpZ2F0aW9uT3ZlcmxheSE6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfc3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gIHByaXZhdGUgX292ZXJsYXlSZWY/OiBPdmVybGF5UmVmO1xuICBwcml2YXRlIF9lbWJlZGRlZFZpZXdSZWY/OiBFbWJlZGRlZFZpZXdSZWY8YW55PjtcblxuICAvKipcbiAgICogaW5kaWNhdGVzIHRoZSBtb3VzZSBpcyBvdmVyIHRoZVxuICAgKi9cbiAgcHVibGljIGxvY2tlT3ZlcmxheSA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoUm91dGVyKVxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyOiBSb3V0ZXIsXG4gICAgQEluamVjdChTaWRlbmF2Q29tcG9uZW50U2VydmljZSlcbiAgICBwdWJsaWMgcmVhZG9ubHkgc2lkZW5hdjogU2lkZW5hdkNvbXBvbmVudFNlcnZpY2UsXG4gICAgQEluamVjdChFbGVtZW50UmVmKVxuICAgIHByaXZhdGUgcmVhZG9ubHkgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICBASW5qZWN0KFJlbmRlcmVyMilcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgQEluamVjdChPdmVybGF5KVxuICAgIHByaXZhdGUgcmVhZG9ubHkgb3ZlcmxheTogT3ZlcmxheSxcbiAgICBASW5qZWN0KFZpZXdDb250YWluZXJSZWYpXG4gICAgcHJpdmF0ZSByZWFkb25seSB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLFxuICApIHtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKGNoYW5nZXNbJ2l0ZW0nXSkge1xuICAgICAgY29uc3QgaXRlbTogTmF2aWdhdGlvbkl0ZW0gPSBjaGFuZ2VzWydpdGVtJ10uY3VycmVudFZhbHVlO1xuICAgICAgdGhpcy5jaGlsZHJlbiA9XG4gICAgICAgIGl0ZW0uY2hpbGRyZW4gJiYgaXRlbS5jaGlsZHJlbi5sZW5ndGggPyBpdGVtLmNoaWxkcmVuIDogbnVsbDtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMuX3N1YnNjcmlwdGlvbi5hZGQoXG4gICAgICB0aGlzLnJvdXRlci5ldmVudHNcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIGZpbHRlcigoZXZlbnQpID0+IGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCksXG4gICAgICAgICAgICBzdGFydFdpdGgodHJ1ZSksXG4gICAgICAgICAgICBkZWxheSgxMDApLFxuICAgICAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICAgICAgaWYgKHRoaXMucm91dGVyTGlua0FjdGl2ZS5pc0FjdGl2ZSkge1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy5zaWRlbmF2LmNvbGxhcHNlZCQudmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgIC8vIG9ubHkgY2xvc2UgdGhlIG92ZXJsYXkgaWYgc2lkZW5hdiBjb2xsYXBzZWRcbiAgICAgICAgICAgICAgICAgIHRoaXMuX292ZXJsYXlSZWY/LmRldGFjaCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnYWN0aXZlJyk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyhcbiAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICAgICAgICAgICAgJ2FjdGl2ZScsXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgKVxuICAgICAgICAgIC5zdWJzY3JpYmUoKSxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCkge1xuICAgIC8vIGRldGFjaCB0aGUgbmF2aWdhdGlvbiBvdmVybGF5IGlmIHRoZSBzaWRlbmF2IGNvbGxhcHNlZFxuICAgIC8vIHN0YXRlIGlzIGNoYW5nZWRcbiAgICB0aGlzLl9zdWJzY3JpcHRpb24uYWRkKFxuICAgICAgdGhpcy5zaWRlbmF2LmNvbGxhcHNlZCRcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIHNraXAoMSksXG4gICAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgICAgICAgdGFwKCgpID0+IHRoaXMuX292ZXJsYXlSZWY/LmRldGFjaCgpKSxcbiAgICAgICAgICApXG4gICAgICAgICAgLnN1YnNjcmliZSgpLFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuX292ZXJsYXlSZWY/LmRpc3Bvc2UoKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ21vdXNlZW50ZXInKVxuICBwdWJsaWMgb25Nb3VzZWVudGVyKCkge1xuICAgIGlmICh0aGlzLmNoaWxkcmVuKSB7XG4gICAgICBpZiAoIXRoaXMucm91dGVyTGlua0FjdGl2ZS5pc0FjdGl2ZSB8fCB0aGlzLnNpZGVuYXYuY29sbGFwc2VkJC52YWx1ZSkge1xuICAgICAgICBpZiAoIXRoaXMuX292ZXJsYXlSZWYpIHtcbiAgICAgICAgICB0aGlzLl9vdmVybGF5UmVmID0gdGhpcy5vdmVybGF5LmNyZWF0ZSh7XG4gICAgICAgICAgICBwb3NpdGlvblN0cmF0ZWd5OiB0aGlzLm92ZXJsYXlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAucG9zaXRpb24oKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5mbGV4aWJsZUNvbm5lY3RlZFRvKHRoaXMuZWxlbWVudFJlZilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAud2l0aFBvc2l0aW9ucyhbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpblk6ICd0b3AnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5YOiAnZW5kJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcmxheVk6ICd0b3AnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdmVybGF5WDogJ3N0YXJ0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSksXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLl9vdmVybGF5UmVmLmhhc0F0dGFjaGVkKCkpIHtcbiAgICAgICAgICB0aGlzLl9lbWJlZGRlZFZpZXdSZWYgPSB0aGlzLl9vdmVybGF5UmVmLmF0dGFjaChcbiAgICAgICAgICAgIG5ldyBUZW1wbGF0ZVBvcnRhbCh0aGlzLl9uYXZpZ2F0aW9uT3ZlcmxheSwgdGhpcy52aWV3Q29udGFpbmVyUmVmKSxcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignbW91c2VsZWF2ZScpXG4gIEBEZWJvdW5jZUNhbGwoMTAwKVxuICBwdWJsaWMgb25Nb3VzZWxlYXZlKCkge1xuICAgIGlmICghdGhpcy5sb2NrZU92ZXJsYXkpIHtcbiAgICAgIHRoaXMuX292ZXJsYXlSZWY/LmRldGFjaCgpO1xuICAgIH1cbiAgfVxuXG4gIC8vIHJlZ2lvbiB0eXBlIHNhdmUgaXRlbSBwcm9wZXJ0eVxuXG4gIC8vIHJlcXVpcmVkIHRvIGNoZWNrIHRoZSB0eXBlIG9mIHRoZSBpdGVtIHByb3BlcnR5IGluIHRoZSBuZ0ZvciBsb29wXG5cbiAgcHVibGljIGlzTmF2aWdhdGlvbkRpdmlkZXJJdGVtKFxuICAgIGl0ZW06IE5hdmlnYXRpb25JdGVtIHwgTmF2aWdhdGlvbkRpdmlkZXJJdGVtLFxuICApOiBpdGVtIGlzIE5hdmlnYXRpb25EaXZpZGVySXRlbSB7XG4gICAgcmV0dXJuIChpdGVtIGFzIGFueSlbJ2RpdmlkZXInXTtcbiAgfVxuXG4gIHB1YmxpYyBpc05hdmlnYXRpb25JdGVtKFxuICAgIGl0ZW06IE5hdmlnYXRpb25JdGVtIHwgTmF2aWdhdGlvbkRpdmlkZXJJdGVtLFxuICApOiBpdGVtIGlzIE5hdmlnYXRpb25JdGVtIHtcbiAgICByZXR1cm4gIXRoaXMuaXNOYXZpZ2F0aW9uRGl2aWRlckl0ZW0oaXRlbSk7XG4gIH1cblxuICBwdWJsaWMgYXNOYXZpZ2F0aW9uSXRlbShcbiAgICBpdGVtOiBOYXZpZ2F0aW9uSXRlbSB8IE5hdmlnYXRpb25EaXZpZGVySXRlbSxcbiAgKTogTmF2aWdhdGlvbkl0ZW0ge1xuICAgIGlmICghdGhpcy5pc05hdmlnYXRpb25JdGVtKGl0ZW0pKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBpdGVtIGlzIG5vdCBhIE5hdmlnYXRpb25JdGVtJyk7XG4gICAgfVxuICAgIHJldHVybiBpdGVtO1xuICB9XG5cbiAgLy8gZW5kcmVnaW9uXG59XG4iLCI8YSBbbWF0VG9vbHRpcERpc2FibGVkXT1cIihzaWRlbmF2LmNvbGxhcHNlZCQgfCBhc3luYykgPT09IGZhbHNlXCJcbiAgIFttYXRUb29sdGlwXT1cIml0ZW0ubGFiZWxcIlxuICAgW3JvdXRlckxpbmtdPVwiaXRlbS5yb3V0ZXJMaW5rXCJcbiAgIGNsYXNzPVwibmF2aWdhdGlvbi1saW5rIG1hdC1ib2R5LTIgbWF0LWJvZHktc3Ryb25nIG5hdmlnYXRpb24tbGV2ZWwte3tsZXZlbH19XCJcbiAgIG1hdFJpcHBsZSByb3V0ZXJMaW5rQWN0aXZlPVwibGluay1hY3RpdmVcIj5cbiAgPG1hdC1pY29uICpuZ0lmPVwiaXRlbS5pY29uXCIgW3J4YXBJY29uXT1cIml0ZW0uaWNvblwiIGNsYXNzPVwiaWNvblwiPjwvbWF0LWljb24+XG4gIDxuZy10ZW1wbGF0ZSBbbmdJZl09XCIoc2lkZW5hdi5jb2xsYXBzZWQkIHwgYXN5bmMpID09PSBmYWxzZVwiPlxuICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj57eyBpdGVtLmxhYmVsIH19PC9zcGFuPlxuICA8L25nLXRlbXBsYXRlPlxuPC9hPlxuXG48dWwgKm5nSWY9XCJyb3V0ZXJMaW5rQWN0aXZlLmlzQWN0aXZlICYmIChzaWRlbmF2LmNvbGxhcHNlZCQgfCBhc3luYykgPT09IGZhbHNlICYmIGNoaWxkcmVuXCJcbiAgICBbQHN1Yi1uYXZdXG4gICAgW2l0ZW1zXT1cImNoaWxkcmVuXCJcbiAgICBbbGV2ZWxdPVwibGV2ZWwgKyAxXCJcbiAgICBjbGFzcz1cInN1Yi1pdGVtc1wiXG4gICAgZnhGbGV4PVwibm9ncm93XCJcbiAgICByeGFwLW5hdmlnYXRpb25cbj5cbjwvdWw+XG5cbjxuZy10ZW1wbGF0ZSAjbmF2aWdhdGlvbk92ZXJsYXk+XG4gIDxkaXYgKG1vdXNlZW50ZXIpPVwibG9ja2VPdmVybGF5ID0gdHJ1ZVwiXG4gICAgICAgKG1vdXNlbGVhdmUpPVwibG9ja2VPdmVybGF5ID0gZmFsc2U7IG9uTW91c2VsZWF2ZSgpXCIgY2xhc3M9XCJuYXZpZ2F0aW9uLW92ZXJsYXktY29udGFpbmVyIG1hdC1lbGV2YXRpb24tejFcIj5cbiAgICA8dWw+XG4gICAgICA8bGkgKm5nRm9yPVwibGV0IGNoaWxkIG9mIGNoaWxkcmVuXCI+XG4gICAgICAgIDxhICpuZ0lmPVwiaXNOYXZpZ2F0aW9uSXRlbShjaGlsZClcIiBbcm91dGVyTGlua109XCJhc05hdmlnYXRpb25JdGVtKGNoaWxkKS5yb3V0ZXJMaW5rXCJcbiAgICAgICAgICAgY2xhc3M9XCJuYXZpZ2F0aW9uLWxpbmsgbWF0LXN1YnRpdGxlLTIgbWF0LWJvZHktc3Ryb25nXCIgbWF0UmlwcGxlPlxuICAgICAgICAgIDxtYXQtaWNvbiAqbmdJZj1cImFzTmF2aWdhdGlvbkl0ZW0oY2hpbGQpLmljb25cIiBbcnhhcEljb25dPVwiYXNOYXZpZ2F0aW9uSXRlbShjaGlsZCkuaWNvblwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvblwiPjwvbWF0LWljb24+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPnt7IGFzTmF2aWdhdGlvbkl0ZW0oY2hpbGQpLmxhYmVsIH19PC9zcGFuPlxuICAgICAgICA8L2E+XG4gICAgICA8L2xpPlxuICAgIDwvdWw+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
220
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdGlvbi1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXIvbGF5b3V0L3NyYy9saWIvbmF2aWdhdGlvbi9uYXZpZ2F0aW9uLWl0ZW0vbmF2aWdhdGlvbi1pdGVtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXIvbGF5b3V0L3NyYy9saWIvbmF2aWdhdGlvbi9uYXZpZ2F0aW9uLWl0ZW0vbmF2aWdhdGlvbi1pdGVtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxVQUFVLEVBRVYsVUFBVSxFQUNWLFdBQVcsRUFDWCxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFJTCxTQUFTLEVBRVQsV0FBVyxFQUNYLFNBQVMsRUFDVCxnQkFBZ0IsRUFDaEIsaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTCxZQUFZLEVBQ1osUUFBUSxHQUNULE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUNMLE9BQU8sRUFDUCxLQUFLLEVBQ0wsVUFBVSxFQUNWLE9BQU8sR0FDUixNQUFNLHFCQUFxQixDQUFDO0FBTTdCLE9BQU8sRUFDTCxhQUFhLEVBQ2IsTUFBTSxFQUNOLFVBQVUsRUFDVixnQkFBZ0IsR0FDakIsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3BDLE9BQU8sRUFDTCxLQUFLLEVBQ0wsb0JBQW9CLEVBQ3BCLE1BQU0sRUFDTixJQUFJLEVBQ0osU0FBUyxFQUNULEdBQUcsR0FDSixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ2xGLE9BQU8sRUFD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QUFFLENBQUM7NkJBQzNCLENBQUM7eUJBQ0gsQ0FBQztxQkFDSCxjQUNXLElBQUksV0FDUDt3QkFDUCxnQkFBZ0I7d0JBQ2hCLGVBQWU7d0JBQ2YsVUFBVTt3QkFDVixnQkFBZ0I7d0JBQ2hCLElBQUk7d0JBQ0osYUFBYTt3QkFDYixhQUFhO3dCQUNiLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQzt3QkFDckMsVUFBVTt3QkFDVixLQUFLO3dCQUNMLFNBQVM7cUJBQ1Y7OzBCQWlDRSxNQUFNOzJCQUFDLE1BQU07OzBCQUViLE1BQU07MkJBQUMsdUJBQXVCOzswQkFFOUIsTUFBTTsyQkFBQyxVQUFVOzswQkFFakIsTUFBTTsyQkFBQyxTQUFTOzswQkFFaEIsTUFBTTsyQkFBQyxPQUFPOzswQkFFZCxNQUFNOzJCQUFDLGdCQUFnQjs0Q0FwQ25CLGdCQUFnQjtzQkFEdEIsU0FBUzt1QkFBQyxnQkFBZ0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBS3RDLElBQUk7c0JBRlYsS0FBSztnQkFLQyxLQUFLO3NCQURYLEtBQUs7Z0JBSUMsUUFBUTtzQkFEZCxXQUFXO3VCQUFDLGNBQWM7Z0JBSW5CLGtCQUFrQjtzQkFEekIsU0FBUzt1QkFBQyxtQkFBbUI7Z0JBbUZ2QixZQUFZO3NCQURsQixZQUFZO3VCQUFDLFlBQVk7Z0JBOEJuQixZQUFZO3NCQUZsQixZQUFZO3VCQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFbWJlZGRlZFZpZXdSZWYsXG4gIGZvcndhcmRSZWYsXG4gIEhvc3RCaW5kaW5nLFxuICBIb3N0TGlzdGVuZXIsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIFJlbmRlcmVyMixcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0NvbnRhaW5lclJlZixcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgRGVib3VuY2VDYWxsLFxuICBSZXF1aXJlZCxcbn0gZnJvbSAnQHJ4YXAvdXRpbGl0aWVzJztcbmltcG9ydCB7XG4gIGFuaW1hdGUsXG4gIHN0eWxlLFxuICB0cmFuc2l0aW9uLFxuICB0cmlnZ2VyLFxufSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcbmltcG9ydCB7XG4gIE5hdmlnYXRpb24sXG4gIE5hdmlnYXRpb25EaXZpZGVySXRlbSxcbiAgTmF2aWdhdGlvbkl0ZW0sXG59IGZyb20gJy4uL25hdmlnYXRpb24taXRlbSc7XG5pbXBvcnQge1xuICBOYXZpZ2F0aW9uRW5kLFxuICBSb3V0ZXIsXG4gIFJvdXRlckxpbmssXG4gIFJvdXRlckxpbmtBY3RpdmUsXG59IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gIGRlbGF5LFxuICBkaXN0aW5jdFVudGlsQ2hhbmdlZCxcbiAgZmlsdGVyLFxuICBza2lwLFxuICBzdGFydFdpdGgsXG4gIHRhcCxcbn0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgU2lkZW5hdkNvbXBvbmVudFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zaWRlbmF2L3NpZGVuYXYuY29tcG9uZW50LnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgT3ZlcmxheSxcbiAgT3ZlcmxheVJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgVGVtcGxhdGVQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7IEZsZXhNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mbGV4LWxheW91dC9mbGV4JztcbmltcG9ydCB7IE5hdmlnYXRpb25Db21wb25lbnQgfSBmcm9tICcuLi9uYXZpZ2F0aW9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJY29uRGlyZWN0aXZlIH0gZnJvbSAnQHJ4YXAvbWF0ZXJpYWwtZGlyZWN0aXZlcy9pY29uJztcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7XG4gIEFzeW5jUGlwZSxcbiAgTmdGb3IsXG4gIE5nSWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBNYXRUb29sdGlwTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7XG5pbXBvcnQgeyBNYXRSaXBwbGVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yXG4gIHNlbGVjdG9yOiAnbGlbcnhhcC1uYXZpZ2F0aW9uLWl0ZW1dJyxcbiAgdGVtcGxhdGVVcmw6ICcuL25hdmlnYXRpb24taXRlbS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWyAnLi9uYXZpZ2F0aW9uLWl0ZW0uY29tcG9uZW50LnNjc3MnIF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWhvc3QtbWV0YWRhdGEtcHJvcGVydHlcbiAgaG9zdDoge1xuICAgIGNsYXNzOiAncnhhcC1uYXZpZ2F0aW9uLWl0ZW0nLFxuICB9LFxuICBhbmltYXRpb25zOiBbXG4gICAgdHJpZ2dlcignc3ViLW5hdicsIFtcbiAgICAgIHRyYW5zaXRpb24oJzplbnRlcicsIFtcbiAgICAgICAgc3R5bGUoe1xuICAgICAgICAgIGRpc3BsYXk6ICdibG9jaycsXG4gICAgICAgICAgaGVpZ2h0OiAnMCcsXG4gICAgICAgICAgb3ZlcmZsb3c6ICdoaWRkZW4nLFxuICAgICAgICB9KSxcbiAgICAgICAgYW5pbWF0ZSgxNTAsIHN0eWxlKHsgaGVpZ2h0OiAnKicgfSkpLFxuICAgICAgXSksXG4gICAgICB0cmFuc2l0aW9uKCc6bGVhdmUnLCBbXG4gICAgICAgIHN0eWxlKHsgb3ZlcmZsb3c6ICdoaWRkZW4nIH0pLFxuICAgICAgICBhbmltYXRlKDMwMCwgc3R5bGUoeyBoZWlnaHQ6ICcwJyB9KSksXG4gICAgICAgIHN0eWxlKHsgZGlzcGxheTogJ25vbmUnIH0pLFxuICAgICAgXSksXG4gICAgXSksXG4gIF0sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBSb3V0ZXJMaW5rQWN0aXZlLFxuICAgIE1hdFJpcHBsZU1vZHVsZSxcbiAgICBSb3V0ZXJMaW5rLFxuICAgIE1hdFRvb2x0aXBNb2R1bGUsXG4gICAgTmdJZixcbiAgICBNYXRJY29uTW9kdWxlLFxuICAgIEljb25EaXJlY3RpdmUsXG4gICAgZm9yd2FyZFJlZigoKSA9PiBOYXZpZ2F0aW9uQ29tcG9uZW50KSxcbiAgICBGbGV4TW9kdWxlLFxuICAgIE5nRm9yLFxuICAgIEFzeW5jUGlwZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgTmF2aWdhdGlvbkl0ZW1Db21wb25lbnRcbiAgaW1wbGVtZW50cyBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSwgT25Jbml0IHtcbiAgcHVibGljIGNoaWxkcmVuOiBOYXZpZ2F0aW9uIHwgbnVsbCA9IG51bGw7XG5cbiAgQFZpZXdDaGlsZChSb3V0ZXJMaW5rQWN0aXZlLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICBwdWJsaWMgcm91dGVyTGlua0FjdGl2ZSE6IFJvdXRlckxpbmtBY3RpdmU7XG5cbiAgQElucHV0KClcbiAgQFJlcXVpcmVkXG4gIHB1YmxpYyBpdGVtITogTmF2aWdhdGlvbkl0ZW07XG5cbiAgQElucHV0KClcbiAgcHVibGljIGxldmVsID0gMDtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmFjdGl2ZScpXG4gIHB1YmxpYyBpc0FjdGl2ZSA9IGZhbHNlO1xuXG4gIEBWaWV3Q2hpbGQoJ25hdmlnYXRpb25PdmVybGF5JylcbiAgcHJpdmF0ZSBfbmF2aWdhdGlvbk92ZXJsYXkhOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3N1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICBwcml2YXRlIF9vdmVybGF5UmVmPzogT3ZlcmxheVJlZjtcbiAgcHJpdmF0ZSBfZW1iZWRkZWRWaWV3UmVmPzogRW1iZWRkZWRWaWV3UmVmPGFueT47XG5cbiAgLyoqXG4gICAqIGluZGljYXRlcyB0aGUgbW91c2UgaXMgb3ZlciB0aGVcbiAgICovXG4gIHB1YmxpYyBsb2NrZU92ZXJsYXkgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KFJvdXRlcilcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlcjogUm91dGVyLFxuICAgIEBJbmplY3QoU2lkZW5hdkNvbXBvbmVudFNlcnZpY2UpXG4gICAgcHVibGljIHJlYWRvbmx5IHNpZGVuYXY6IFNpZGVuYXZDb21wb25lbnRTZXJ2aWNlLFxuICAgIEBJbmplY3QoRWxlbWVudFJlZilcbiAgICBwcml2YXRlIHJlYWRvbmx5IGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgQEluamVjdChSZW5kZXJlcjIpXG4gICAgcHJpdmF0ZSByZWFkb25seSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIEBJbmplY3QoT3ZlcmxheSlcbiAgICBwcml2YXRlIHJlYWRvbmx5IG92ZXJsYXk6IE92ZXJsYXksXG4gICAgQEluamVjdChWaWV3Q29udGFpbmVyUmVmKVxuICAgIHByaXZhdGUgcmVhZG9ubHkgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZixcbiAgKSB7XG4gIH1cblxuICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmIChjaGFuZ2VzWydpdGVtJ10pIHtcbiAgICAgIGNvbnN0IGl0ZW06IE5hdmlnYXRpb25JdGVtID0gY2hhbmdlc1snaXRlbSddLmN1cnJlbnRWYWx1ZTtcbiAgICAgIHRoaXMuY2hpbGRyZW4gPVxuICAgICAgICBpdGVtLmNoaWxkcmVuICYmIGl0ZW0uY2hpbGRyZW4ubGVuZ3RoID8gaXRlbS5jaGlsZHJlbiA6IG51bGw7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb24uYWRkKFxuICAgICAgdGhpcy5yb3V0ZXIuZXZlbnRzXG4gICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICBmaWx0ZXIoKGV2ZW50KSA9PiBldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpLFxuICAgICAgICAgICAgc3RhcnRXaXRoKHRydWUpLFxuICAgICAgICAgICAgZGVsYXkoMTAwKSxcbiAgICAgICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgICAgIGlmICh0aGlzLnJvdXRlckxpbmtBY3RpdmUuaXNBY3RpdmUpIHtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuc2lkZW5hdi5jb2xsYXBzZWQkLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAvLyBvbmx5IGNsb3NlIHRoZSBvdmVybGF5IGlmIHNpZGVuYXYgY29sbGFwc2VkXG4gICAgICAgICAgICAgICAgICB0aGlzLl9vdmVybGF5UmVmPy5kZXRhY2goKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2FjdGl2ZScpO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3MoXG4gICAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICAgICAgICAgICAgICdhY3RpdmUnLFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIClcbiAgICAgICAgICAuc3Vic2NyaWJlKCksXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpIHtcbiAgICAvLyBkZXRhY2ggdGhlIG5hdmlnYXRpb24gb3ZlcmxheSBpZiB0aGUgc2lkZW5hdiBjb2xsYXBzZWRcbiAgICAvLyBzdGF0ZSBpcyBjaGFuZ2VkXG4gICAgdGhpcy5fc3Vic2NyaXB0aW9uLmFkZChcbiAgICAgIHRoaXMuc2lkZW5hdi5jb2xsYXBzZWQkXG4gICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICBza2lwKDEpLFxuICAgICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgICAgICAgIHRhcCgoKSA9PiB0aGlzLl9vdmVybGF5UmVmPy5kZXRhY2goKSksXG4gICAgICAgICAgKVxuICAgICAgICAgIC5zdWJzY3JpYmUoKSxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuX3N1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLl9vdmVybGF5UmVmPy5kaXNwb3NlKCk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdtb3VzZWVudGVyJylcbiAgcHVibGljIG9uTW91c2VlbnRlcigpIHtcbiAgICBpZiAodGhpcy5jaGlsZHJlbikge1xuICAgICAgaWYgKCF0aGlzLnJvdXRlckxpbmtBY3RpdmUuaXNBY3RpdmUgfHwgdGhpcy5zaWRlbmF2LmNvbGxhcHNlZCQudmFsdWUpIHtcbiAgICAgICAgaWYgKCF0aGlzLl9vdmVybGF5UmVmKSB7XG4gICAgICAgICAgdGhpcy5fb3ZlcmxheVJlZiA9IHRoaXMub3ZlcmxheS5jcmVhdGUoe1xuICAgICAgICAgICAgcG9zaXRpb25TdHJhdGVneTogdGhpcy5vdmVybGF5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnBvc2l0aW9uKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZmxleGlibGVDb25uZWN0ZWRUbyh0aGlzLmVsZW1lbnRSZWYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLndpdGhQb3NpdGlvbnMoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5ZOiAndG9wJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luWDogJ2VuZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJsYXlZOiAndG9wJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcmxheVg6ICdzdGFydCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy5fb3ZlcmxheVJlZi5oYXNBdHRhY2hlZCgpKSB7XG4gICAgICAgICAgdGhpcy5fZW1iZWRkZWRWaWV3UmVmID0gdGhpcy5fb3ZlcmxheVJlZi5hdHRhY2goXG4gICAgICAgICAgICBuZXcgVGVtcGxhdGVQb3J0YWwodGhpcy5fbmF2aWdhdGlvbk92ZXJsYXksIHRoaXMudmlld0NvbnRhaW5lclJlZiksXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ21vdXNlbGVhdmUnKVxuICBARGVib3VuY2VDYWxsKDEwMClcbiAgcHVibGljIG9uTW91c2VsZWF2ZSgpIHtcbiAgICBpZiAoIXRoaXMubG9ja2VPdmVybGF5KSB7XG4gICAgICB0aGlzLl9vdmVybGF5UmVmPy5kZXRhY2goKTtcbiAgICB9XG4gIH1cblxuICAvLyByZWdpb24gdHlwZSBzYXZlIGl0ZW0gcHJvcGVydHlcblxuICAvLyByZXF1aXJlZCB0byBjaGVjayB0aGUgdHlwZSBvZiB0aGUgaXRlbSBwcm9wZXJ0eSBpbiB0aGUgbmdGb3IgbG9vcFxuXG4gIHB1YmxpYyBpc05hdmlnYXRpb25EaXZpZGVySXRlbShcbiAgICBpdGVtOiBOYXZpZ2F0aW9uSXRlbSB8IE5hdmlnYXRpb25EaXZpZGVySXRlbSxcbiAgKTogaXRlbSBpcyBOYXZpZ2F0aW9uRGl2aWRlckl0ZW0ge1xuICAgIHJldHVybiAoaXRlbSBhcyBhbnkpWydkaXZpZGVyJ107XG4gIH1cblxuICBwdWJsaWMgaXNOYXZpZ2F0aW9uSXRlbShcbiAgICBpdGVtOiBOYXZpZ2F0aW9uSXRlbSB8IE5hdmlnYXRpb25EaXZpZGVySXRlbSxcbiAgKTogaXRlbSBpcyBOYXZpZ2F0aW9uSXRlbSB7XG4gICAgcmV0dXJuICF0aGlzLmlzTmF2aWdhdGlvbkRpdmlkZXJJdGVtKGl0ZW0pO1xuICB9XG5cbiAgcHVibGljIGFzTmF2aWdhdGlvbkl0ZW0oXG4gICAgaXRlbTogTmF2aWdhdGlvbkl0ZW0gfCBOYXZpZ2F0aW9uRGl2aWRlckl0ZW0sXG4gICk6IE5hdmlnYXRpb25JdGVtIHtcbiAgICBpZiAoIXRoaXMuaXNOYXZpZ2F0aW9uSXRlbShpdGVtKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdUaGUgaXRlbSBpcyBub3QgYSBOYXZpZ2F0aW9uSXRlbScpO1xuICAgIH1cbiAgICByZXR1cm4gaXRlbTtcbiAgfVxuXG4gIC8vIGVuZHJlZ2lvblxufVxuIiwiPGEgW21hdFRvb2x0aXBEaXNhYmxlZF09XCIoc2lkZW5hdi5jb2xsYXBzZWQkIHwgYXN5bmMpID09PSBmYWxzZVwiXG4gICBbbWF0VG9vbHRpcF09XCJpdGVtLmxhYmVsXCJcbiAgIFtyb3V0ZXJMaW5rXT1cIml0ZW0ucm91dGVyTGlua1wiXG4gICBjbGFzcz1cIm5hdmlnYXRpb24tbGluayBtYXQtYm9keS0yIG1hdC1ib2R5LXN0cm9uZyBuYXZpZ2F0aW9uLWxldmVsLXt7bGV2ZWx9fVwiXG4gICBtYXRSaXBwbGUgcm91dGVyTGlua0FjdGl2ZT1cImxpbmstYWN0aXZlXCI+XG4gIDxtYXQtaWNvbiAqbmdJZj1cIml0ZW0uaWNvblwiIFtyeGFwSWNvbl09XCJpdGVtLmljb25cIiBjbGFzcz1cImljb25cIj48L21hdC1pY29uPlxuICA8bmctdGVtcGxhdGUgW25nSWZdPVwiKHNpZGVuYXYuY29sbGFwc2VkJCB8IGFzeW5jKSA9PT0gZmFsc2VcIj5cbiAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+e3sgaXRlbS5sYWJlbCB9fTwvc3Bhbj5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvYT5cblxuPHVsICpuZ0lmPVwicm91dGVyTGlua0FjdGl2ZS5pc0FjdGl2ZSAmJiAoc2lkZW5hdi5jb2xsYXBzZWQkIHwgYXN5bmMpID09PSBmYWxzZSAmJiBjaGlsZHJlblwiXG4gICAgW0BzdWItbmF2XVxuICAgIFtpdGVtc109XCJjaGlsZHJlblwiXG4gICAgW2xldmVsXT1cImxldmVsICsgMVwiXG4gICAgY2xhc3M9XCJzdWItaXRlbXNcIlxuICAgIGZ4RmxleD1cIm5vZ3Jvd1wiXG4gICAgcnhhcC1uYXZpZ2F0aW9uXG4+XG48L3VsPlxuXG48bmctdGVtcGxhdGUgI25hdmlnYXRpb25PdmVybGF5PlxuICA8ZGl2IChtb3VzZWVudGVyKT1cImxvY2tlT3ZlcmxheSA9IHRydWVcIlxuICAgICAgIChtb3VzZWxlYXZlKT1cImxvY2tlT3ZlcmxheSA9IGZhbHNlOyBvbk1vdXNlbGVhdmUoKVwiIGNsYXNzPVwibmF2aWdhdGlvbi1vdmVybGF5LWNvbnRhaW5lciBtYXQtZWxldmF0aW9uLXoxXCI+XG4gICAgPHVsPlxuICAgICAgPGxpICpuZ0Zvcj1cImxldCBjaGlsZCBvZiBjaGlsZHJlblwiPlxuICAgICAgICA8YSAqbmdJZj1cImlzTmF2aWdhdGlvbkl0ZW0oY2hpbGQpXCIgW3JvdXRlckxpbmtdPVwiYXNOYXZpZ2F0aW9uSXRlbShjaGlsZCkucm91dGVyTGlua1wiXG4gICAgICAgICAgIGNsYXNzPVwibmF2aWdhdGlvbi1saW5rIG1hdC1zdWJ0aXRsZS0yIG1hdC1ib2R5LXN0cm9uZ1wiIG1hdFJpcHBsZT5cbiAgICAgICAgICA8bWF0LWljb24gKm5nSWY9XCJhc05hdmlnYXRpb25JdGVtKGNoaWxkKS5pY29uXCIgW3J4YXBJY29uXT1cImFzTmF2aWdhdGlvbkl0ZW0oY2hpbGQpLmljb25cIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImljb25cIj48L21hdC1pY29uPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj57eyBhc05hdmlnYXRpb25JdGVtKGNoaWxkKS5sYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgPC9hPlxuICAgICAgPC9saT5cbiAgICA8L3VsPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { InjectionToken, Component, ChangeDetectionStrategy, Inject, Optional, Injectable, Input, EventEmitter, Output, TemplateRef, Directive, INJECTOR, ElementRef, Renderer2, ViewContainerRef, ViewEncapsulation, ViewChild, HostBinding, HostListener, ChangeDetectorRef, ContentChild, NgModule } from '@angular/core';
2
+ import { InjectionToken, Component, ChangeDetectionStrategy, Inject, Optional, Injectable, Input, EventEmitter, Output, TemplateRef, Directive, INJECTOR, ElementRef, Renderer2, ViewContainerRef, ViewEncapsulation, forwardRef, ViewChild, HostBinding, HostListener, ChangeDetectorRef, ContentChild, NgModule } from '@angular/core';
3
3
  import * as i1 from '@rxap/services';
4
4
  import { HeaderService, ResetService, WindowContainerSidenavService, FooterService, VersionService } from '@rxap/services';
5
5
  import * as i3 from '@angular/cdk/portal';
@@ -806,7 +806,7 @@ class NavigationItemComponent {
806
806
  return item;
807
807
  }
808
808
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: NavigationItemComponent, deps: [{ token: Router }, { token: SidenavComponentService }, { token: ElementRef }, { token: Renderer2 }, { token: Overlay }, { token: ViewContainerRef }], target: i0.ɵɵFactoryTarget.Component }); }
809
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.4", type: NavigationItemComponent, isStandalone: true, selector: "li[rxap-navigation-item]", inputs: { item: "item", level: "level" }, host: { listeners: { "mouseenter": "onMouseenter()", "mouseleave": "onMouseleave()" }, properties: { "class.active": "this.isActive" }, classAttribute: "rxap-navigation-item" }, viewQueries: [{ propertyName: "routerLinkActive", first: true, predicate: RouterLinkActive, descendants: true, static: true }, { propertyName: "_navigationOverlay", first: true, predicate: ["navigationOverlay"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<a [matTooltipDisabled]=\"(sidenav.collapsed$ | async) === false\"\n [matTooltip]=\"item.label\"\n [routerLink]=\"item.routerLink\"\n class=\"navigation-link mat-body-2 mat-body-strong navigation-level-{{level}}\"\n matRipple routerLinkActive=\"link-active\">\n <mat-icon *ngIf=\"item.icon\" [rxapIcon]=\"item.icon\" class=\"icon\"></mat-icon>\n <ng-template [ngIf]=\"(sidenav.collapsed$ | async) === false\">\n <span class=\"label\">{{ item.label }}</span>\n </ng-template>\n</a>\n\n<ul *ngIf=\"routerLinkActive.isActive && (sidenav.collapsed$ | async) === false && children\"\n [@sub-nav]\n [items]=\"children\"\n [level]=\"level + 1\"\n class=\"sub-items\"\n fxFlex=\"nogrow\"\n rxap-navigation\n>\n</ul>\n\n<ng-template #navigationOverlay>\n <div (mouseenter)=\"lockeOverlay = true\"\n (mouseleave)=\"lockeOverlay = false; onMouseleave()\" class=\"navigation-overlay-container mat-elevation-z1\">\n <ul>\n <li *ngFor=\"let child of children\">\n <a *ngIf=\"isNavigationItem(child)\" [routerLink]=\"asNavigationItem(child).routerLink\"\n class=\"navigation-link mat-subtitle-2 mat-body-strong\" matRipple>\n <mat-icon *ngIf=\"asNavigationItem(child).icon\" [rxapIcon]=\"asNavigationItem(child).icon\"\n class=\"icon\"></mat-icon>\n <span class=\"label\">{{ asNavigationItem(child).label }}</span>\n </a>\n </li>\n </ul>\n </div>\n</ng-template>\n", styles: [".rxap-navigation-item,.navigation-overlay-container{display:flex;flex-direction:column;min-height:48px}.rxap-navigation-item .navigation-link,.navigation-overlay-container .navigation-link{display:flex;flex-direction:row;align-items:center;text-decoration:none;height:48px}.rxap-navigation-item .navigation-link .icon,.navigation-overlay-container .navigation-link .icon{margin:0 16px}.rxap-navigation-item .navigation-link .label,.navigation-overlay-container .navigation-link .label{padding-right:12px}.rxap-navigation-item .navigation-link.navigation-level-1,.navigation-overlay-container .navigation-link.navigation-level-1{padding-left:52px}.rxap-navigation-item .navigation-link.navigation-level-1 .icon,.navigation-overlay-container .navigation-link.navigation-level-1 .icon{padding-left:0}.rxap-navigation-item .navigation-link.navigation-level-2,.navigation-overlay-container .navigation-link.navigation-level-2{padding-left:88px}.rxap-navigation-item .navigation-link.navigation-level-2 .icon,.navigation-overlay-container .navigation-link.navigation-level-2 .icon{padding-left:0}.navigation-overlay-container{padding:0 16px}.navigation-overlay-container ul{list-style-type:none;margin:0;padding:0}.navigation-overlay-container ul .navigation-link .label{padding-right:0}.navigation-overlay-container ul .navigation-link .icon{margin-left:0}\n"], dependencies: [{ kind: "directive", type: RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "ngmodule", type: MatRippleModule }, { kind: "directive", type: i4$1.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i2$6.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: IconDirective, selector: "mat-icon[rxapIcon]", inputs: ["rxapIcon"] }, { kind: "component", type: NavigationComponent, selector: "ul[rxap-navigation]", inputs: ["root", "items", "level"] }, { kind: "ngmodule", type: FlexModule }, { kind: "directive", type: i1$3.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], animations: [
809
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.4", type: NavigationItemComponent, isStandalone: true, selector: "li[rxap-navigation-item]", inputs: { item: "item", level: "level" }, host: { listeners: { "mouseenter": "onMouseenter()", "mouseleave": "onMouseleave()" }, properties: { "class.active": "this.isActive" }, classAttribute: "rxap-navigation-item" }, viewQueries: [{ propertyName: "routerLinkActive", first: true, predicate: RouterLinkActive, descendants: true, static: true }, { propertyName: "_navigationOverlay", first: true, predicate: ["navigationOverlay"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<a [matTooltipDisabled]=\"(sidenav.collapsed$ | async) === false\"\n [matTooltip]=\"item.label\"\n [routerLink]=\"item.routerLink\"\n class=\"navigation-link mat-body-2 mat-body-strong navigation-level-{{level}}\"\n matRipple routerLinkActive=\"link-active\">\n <mat-icon *ngIf=\"item.icon\" [rxapIcon]=\"item.icon\" class=\"icon\"></mat-icon>\n <ng-template [ngIf]=\"(sidenav.collapsed$ | async) === false\">\n <span class=\"label\">{{ item.label }}</span>\n </ng-template>\n</a>\n\n<ul *ngIf=\"routerLinkActive.isActive && (sidenav.collapsed$ | async) === false && children\"\n [@sub-nav]\n [items]=\"children\"\n [level]=\"level + 1\"\n class=\"sub-items\"\n fxFlex=\"nogrow\"\n rxap-navigation\n>\n</ul>\n\n<ng-template #navigationOverlay>\n <div (mouseenter)=\"lockeOverlay = true\"\n (mouseleave)=\"lockeOverlay = false; onMouseleave()\" class=\"navigation-overlay-container mat-elevation-z1\">\n <ul>\n <li *ngFor=\"let child of children\">\n <a *ngIf=\"isNavigationItem(child)\" [routerLink]=\"asNavigationItem(child).routerLink\"\n class=\"navigation-link mat-subtitle-2 mat-body-strong\" matRipple>\n <mat-icon *ngIf=\"asNavigationItem(child).icon\" [rxapIcon]=\"asNavigationItem(child).icon\"\n class=\"icon\"></mat-icon>\n <span class=\"label\">{{ asNavigationItem(child).label }}</span>\n </a>\n </li>\n </ul>\n </div>\n</ng-template>\n", styles: [".rxap-navigation-item,.navigation-overlay-container{display:flex;flex-direction:column;min-height:48px}.rxap-navigation-item .navigation-link,.navigation-overlay-container .navigation-link{display:flex;flex-direction:row;align-items:center;text-decoration:none;height:48px}.rxap-navigation-item .navigation-link .icon,.navigation-overlay-container .navigation-link .icon{margin:0 16px}.rxap-navigation-item .navigation-link .label,.navigation-overlay-container .navigation-link .label{padding-right:12px}.rxap-navigation-item .navigation-link.navigation-level-1,.navigation-overlay-container .navigation-link.navigation-level-1{padding-left:52px}.rxap-navigation-item .navigation-link.navigation-level-1 .icon,.navigation-overlay-container .navigation-link.navigation-level-1 .icon{padding-left:0}.rxap-navigation-item .navigation-link.navigation-level-2,.navigation-overlay-container .navigation-link.navigation-level-2{padding-left:88px}.rxap-navigation-item .navigation-link.navigation-level-2 .icon,.navigation-overlay-container .navigation-link.navigation-level-2 .icon{padding-left:0}.navigation-overlay-container{padding:0 16px}.navigation-overlay-container ul{list-style-type:none;margin:0;padding:0}.navigation-overlay-container ul .navigation-link .label{padding-right:0}.navigation-overlay-container ul .navigation-link .icon{margin-left:0}\n"], dependencies: [{ kind: "directive", type: i0.forwardRef(function () { return RouterLinkActive; }), selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "ngmodule", type: i0.forwardRef(function () { return MatRippleModule; }) }, { kind: "directive", type: i0.forwardRef(function () { return i4$1.MatRipple; }), selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { kind: "directive", type: i0.forwardRef(function () { return RouterLink; }), selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: i0.forwardRef(function () { return MatTooltipModule; }) }, { kind: "directive", type: i0.forwardRef(function () { return i2$6.MatTooltip; }), selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "directive", type: i0.forwardRef(function () { return NgIf; }), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: i0.forwardRef(function () { return MatIconModule; }) }, { kind: "component", type: i0.forwardRef(function () { return i2$2.MatIcon; }), selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i0.forwardRef(function () { return IconDirective; }), selector: "mat-icon[rxapIcon]", inputs: ["rxapIcon"] }, { kind: "component", type: i0.forwardRef(function () { return NavigationComponent; }), selector: "ul[rxap-navigation]", inputs: ["root", "items", "level"] }, { kind: "ngmodule", type: i0.forwardRef(function () { return FlexModule; }) }, { kind: "directive", type: i0.forwardRef(function () { return i1$3.DefaultFlexDirective; }), selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "directive", type: i0.forwardRef(function () { return NgFor; }), selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: i0.forwardRef(function () { return AsyncPipe; }), name: "async" }], animations: [
810
810
  trigger('sub-nav', [
811
811
  transition(':enter', [
812
812
  style({
@@ -862,7 +862,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.4", ngImpor
862
862
  NgIf,
863
863
  MatIconModule,
864
864
  IconDirective,
865
- NavigationComponent,
865
+ forwardRef(() => NavigationComponent),
866
866
  FlexModule,
867
867
  NgFor,
868
868
  AsyncPipe,
@@ -1 +1 @@
1
- {"version":3,"file":"rxap-layout.mjs","sources":["../../../../../packages/angular/layout/src/lib/tokens.ts","../../../../../packages/angular/layout/src/lib/footer/footer.component.ts","../../../../../packages/angular/layout/src/lib/footer/footer.component.html","../../../../../packages/angular/layout/src/lib/header/navigation-progress-bar/navigation-progress-bar.component.ts","../../../../../packages/angular/layout/src/lib/header/navigation-progress-bar/navigation-progress-bar.component.html","../../../../../packages/angular/layout/src/lib/header/sign-out/sign-out.component.ts","../../../../../packages/angular/layout/src/lib/header/sign-out/sign-out.component.html","../../../../../packages/angular/layout/src/lib/header/user-profile-icon/user-profile-icon.component.ts","../../../../../packages/angular/layout/src/lib/header/user-profile-icon/user-profile-icon.component.html","../../../../../packages/angular/layout/src/lib/header/apps-button/apps-button.component.ts","../../../../../packages/angular/layout/src/lib/header/apps-button/apps-button.component.html","../../../../../packages/angular/layout/src/lib/header/language-selector/language-selector.component.ts","../../../../../packages/angular/layout/src/lib/header/language-selector/language-selector.component.html","../../../../../packages/angular/layout/src/lib/header/sidenav-toggle-button/sidenav-toggle-button.component.ts","../../../../../packages/angular/layout/src/lib/header/sidenav-toggle-button/sidenav-toggle-button.component.html","../../../../../packages/angular/layout/src/lib/header/header.component.ts","../../../../../packages/angular/layout/src/lib/header/header.component.html","../../../../../packages/angular/layout/src/lib/header/reset-button/reset-button.component.ts","../../../../../packages/angular/layout/src/lib/header/reset-button/reset-button.component.html","../../../../../packages/angular/layout/src/lib/layout/layout.component.service.ts","../../../../../packages/angular/layout/src/lib/window-container-sidenav/window-container-sidenav.component.ts","../../../../../packages/angular/layout/src/lib/window-container-sidenav/window-container-sidenav.component.html","../../../../../packages/angular/layout/src/lib/toggle-window-sidenav-button/toggle-window-sidenav-button.component.ts","../../../../../packages/angular/layout/src/lib/toggle-window-sidenav-button/toggle-window-sidenav-button.component.html","../../../../../packages/angular/layout/src/lib/sidenav-content/sidenav-content.component.service.ts","../../../../../packages/angular/layout/src/lib/sidenav-content/sidenav-content.component.ts","../../../../../packages/angular/layout/src/lib/sidenav-content/sidenav-content.component.html","../../../../../packages/angular/layout/src/lib/sidenav/sidenav-header.directive.ts","../../../../../packages/angular/layout/src/lib/sidenav/sidenav-footer.directive.ts","../../../../../packages/angular/layout/src/lib/sidenav/sidenav.component.service.ts","../../../../../packages/angular/layout/src/lib/navigation/navigation-item.ts","../../../../../packages/angular/layout/src/lib/navigation/navigation.service.ts","../../../../../packages/angular/layout/src/lib/navigation/navigation-item/navigation-item.component.ts","../../../../../packages/angular/layout/src/lib/navigation/navigation-item/navigation-item.component.html","../../../../../packages/angular/layout/src/lib/navigation/navigation.component.ts","../../../../../packages/angular/layout/src/lib/navigation/navigation.component.html","../../../../../packages/angular/layout/src/lib/sidenav/sidenav.component.ts","../../../../../packages/angular/layout/src/lib/sidenav/sidenav.component.html","../../../../../packages/angular/layout/src/lib/layout/layout.component.ts","../../../../../packages/angular/layout/src/lib/layout/layout.component.html","../../../../../packages/angular/layout/src/lib/layout/layout.component.module.ts","../../../../../packages/angular/layout/src/lib/navigation/replace-router-paths.service.ts","../../../../../packages/angular/layout/src/lib/sidenav/version/version.component.ts","../../../../../packages/angular/layout/src/lib/sidenav/version/version.component.html","../../../../../packages/angular/layout/src/lib/footer.directive.ts","../../../../../packages/angular/layout/src/rxap-layout.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { LogoConfig } from './types';\nimport { NavigationWithInserts } from './navigation/navigation-item';\n\nexport const RXAP_NAVIGATION_CONFIG = new InjectionToken<NavigationWithInserts | (() => NavigationWithInserts)>(\n 'rxap/layout/navigation-config');\nexport const RXAP_NAVIGATION_CONFIG_INSERTS = new InjectionToken<Record<string, NavigationWithInserts>>(\n 'rxap/layout/navigation-config-inserts');\n\nexport const RXAP_FOOTER_COMPONENT = new InjectionToken('rxap/layout/footer-component');\nexport const RXAP_HEADER_COMPONENT = new InjectionToken('rxap/layout/header-component');\nexport const RXAP_LOGO_CONFIG = new InjectionToken<LogoConfig>('rxap/layout/logo-config');\nexport const RXAP_LAYOUT_APPS_GRID = new InjectionToken('rxap/layout/apps-grid');\n","import {\n ChangeDetectionStrategy,\n Component,\n} from '@angular/core';\nimport { FooterService } from '@rxap/services';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport {\n AsyncPipe,\n NgFor,\n NgIf,\n} from '@angular/common';\n\n@Component({\n selector: 'rxap-footer',\n templateUrl: './footer.component.html',\n styleUrls: [ './footer.component.scss' ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [ NgIf, MatToolbarModule, NgFor, PortalModule, AsyncPipe ],\n})\nexport class FooterComponent {\n\n constructor(\n public readonly footerService: FooterService,\n ) {\n }\n\n}\n","<ng-template [ngIf]=\"footerService.portals$ | async\" let-portals>\n <mat-toolbar *ngIf=\"portals.length\" class=\"footer mat-elevation-z1\">\n <mat-toolbar-row *ngFor=\"let portal of portals\">\n <ng-template [cdkPortalOutlet]=\"portal\"></ng-template>\n </mat-toolbar-row>\n </mat-toolbar>\n</ng-template>\n","import {\n ChangeDetectionStrategy,\n Component,\n Inject,\n} from '@angular/core';\nimport { Observable } from 'rxjs';\nimport {\n NavigationCancel,\n NavigationEnd,\n NavigationStart,\n Router,\n} from '@angular/router';\nimport {\n filter,\n map,\n} from 'rxjs/operators';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport {\n AsyncPipe,\n NgIf,\n} from '@angular/common';\n\n@Component({\n selector: 'rxap-navigation-progress-bar',\n templateUrl: './navigation-progress-bar.component.html',\n styleUrls: [ './navigation-progress-bar.component.scss' ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [ NgIf, MatProgressBarModule, AsyncPipe ],\n})\nexport class NavigationProgressBarComponent {\n\n public navigating$: Observable<boolean>;\n\n public constructor(\n @Inject(Router) public readonly router: Router,\n ) {\n this.navigating$ = this.router.events.pipe(\n filter(\n event =>\n event instanceof NavigationStart ||\n event instanceof NavigationEnd ||\n event instanceof NavigationCancel,\n ),\n map(event => event instanceof NavigationStart),\n );\n }\n\n}\n","<mat-progress-bar\n *ngIf=\"navigating$ | async\"\n color=\"accent\"\n mode=\"indeterminate\"\n></mat-progress-bar>\n","import {\n ChangeDetectionStrategy,\n Component,\n Inject,\n} from '@angular/core';\nimport { Router } from '@angular/router';\nimport { MatIconModule } from '@angular/material/icon';\nimport { SignOutDirective } from '@rxap/authentication';\nimport { MatButtonModule } from '@angular/material/button';\n\n@Component({\n selector: 'rxap-sign-out',\n templateUrl: './sign-out.component.html',\n styleUrls: [ './sign-out.component.scss' ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [ MatButtonModule, SignOutDirective, MatIconModule ],\n})\nexport class SignOutComponent {\n\n constructor(\n @Inject(Router)\n private readonly router: Router,\n ) {\n }\n\n public redirectToRoot() {\n this.router.navigate([ '/' ]);\n }\n\n}\n","<button\n (successful)=\"redirectToRoot()\"\n mat-icon-button\n rxapSignOut\n>\n <mat-icon>login</mat-icon>\n</button>\n","import {\n ChangeDetectionStrategy,\n Component,\n Inject,\n} from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { UserService } from '@rxap/authentication';\nimport { map } from 'rxjs/operators';\nimport { isDefined } from '@rxap/rxjs';\nimport { MatIconModule } from '@angular/material/icon';\nimport {\n AsyncPipe,\n NgIf,\n} from '@angular/common';\nimport { AvatarBackgroundImageDirective } from '@rxap/directives';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { FlexModule } from '@angular/flex-layout/flex';\n\n@Component({\n selector: 'rxap-user-profile-icon',\n templateUrl: './user-profile-icon.component.html',\n styleUrls: [ './user-profile-icon.component.scss' ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n FlexModule,\n MatMenuModule,\n AvatarBackgroundImageDirective,\n NgIf,\n MatIconModule,\n AsyncPipe,\n ],\n})\nexport class UserProfileIconComponent {\n public userProfileUrl$: Observable<string | undefined>;\n public userName$: Observable<string>;\n\n constructor(\n @Inject(UserService)\n public userService: UserService,\n ) {\n this.userProfileUrl$ = this.userService.user$.pipe(\n isDefined(),\n map((user) => user.photoURL ?? user.avatarUrl),\n );\n this.userName$ = this.userService.user$.pipe(\n isDefined(),\n map(\n (user) =>\n user.name ??\n (user.firstname || user.lastname\n ? [ user.firstname, user.lastname ].join(' ').trim()\n : null) ??\n user.username,\n ),\n );\n }\n}\n","<button [matMenuTriggerFor]=\"menu\"\n [name]=\"(userName$ | async) ?? ''\"\n [rxapAvatarBackgroundImage]=\"userProfileUrl$ | 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","import {\n ChangeDetectionStrategy,\n Component,\n Inject,\n Optional,\n} from '@angular/core';\nimport { RXAP_LAYOUT_APPS_GRID } from '../../tokens';\nimport { ConfigService } from '@rxap/config';\nimport { FlexModule } from '@angular/flex-layout/flex';\nimport { ExtendedModule } from '@angular/flex-layout/extended';\nimport { MatIconModule } from '@angular/material/icon';\nimport {\n CdkConnectedOverlay,\n CdkOverlayOrigin,\n} from '@angular/cdk/overlay';\nimport { MatButtonModule } from '@angular/material/button';\nimport {\n NgClass,\n NgFor,\n NgIf,\n NgStyle,\n} from '@angular/common';\n\nexport interface AppsButtonGridItem {\n image: string;\n label: string;\n href: string;\n empty?: false;\n}\n\nexport interface EmptyAppsButtonGridItem {\n empty: true;\n href?: undefined;\n label?: undefined;\n image?: undefined;\n}\n\n@Component({\n selector: 'rxap-apps-button',\n templateUrl: './apps-button.component.html',\n styleUrls: [ './apps-button.component.scss' ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n host: { class: 'rxap-apps-button' },\n standalone: true,\n imports: [\n NgIf,\n MatButtonModule,\n CdkOverlayOrigin,\n MatIconModule,\n CdkConnectedOverlay,\n ExtendedModule,\n NgStyle,\n NgFor,\n NgClass,\n FlexModule,\n ],\n})\nexport class AppsButtonComponent {\n public get gridWithPadding(): Array<\n AppsButtonGridItem | EmptyAppsButtonGridItem\n > {\n const gridWithPadding: Array<AppsButtonGridItem | EmptyAppsButtonGridItem> =\n this.grid.slice();\n while (gridWithPadding.length % this.columns !== 0) {\n gridWithPadding.push({ empty: true });\n }\n return gridWithPadding;\n }\n\n public get columns() {\n if (this.grid.length < 4) {\n return 1;\n }\n if (this.grid.length < 6) {\n return 2;\n }\n return 3;\n }\n\n public isOpen = false;\n public grid: Array<AppsButtonGridItem> = [];\n\n constructor(\n @Optional()\n @Inject(RXAP_LAYOUT_APPS_GRID)\n grid: any,\n @Inject(ConfigService)\n private readonly config: ConfigService,\n ) {\n this.grid = grid ?? this.config.get('navigation.apps') ?? [];\n }\n}\n","<ng-template [ngIf]=\"grid && grid.length\">\n <button #trigger=\"cdkOverlayOrigin\" (click)=\"isOpen = !isOpen\" cdkOverlayOrigin mat-icon-button>\n <mat-icon>apps</mat-icon>\n </button>\n\n <ng-template (overlayOutsideClick)=\"isOpen = false\"\n [cdkConnectedOverlayOpen]=\"isOpen\"\n [cdkConnectedOverlayOrigin]=\"trigger\"\n cdkConnectedOverlay>\n\n <div class=\"grid-container\">\n\n <ul [ngStyle]=\"{ columns: columns }\" class=\"grid\">\n <li *ngFor=\"let item of gridWithPadding\" [ngClass]=\"{ empty: item.empty }\">\n <a *ngIf=\"!item.empty\" [href]=\"item.href\">\n\n <span fxLayout=\"column\" fxLayoutAlign=\"start center\" fxLayoutGap=\"12px\">\n <img [src]=\"item.image\" width=\"53px\">\n <span>{{item.label}}</span>\n </span>\n\n </a>\n </li>\n </ul>\n\n </div>\n\n </ng-template>\n</ng-template>\n","import {\n ChangeDetectionStrategy,\n Component,\n Inject,\n Injectable,\n} from '@angular/core';\nimport { ConfigService } from '@rxap/config';\nimport { MatOptionModule } from '@angular/material/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport {\n KeyValuePipe,\n NgFor,\n NgIf,\n} from '@angular/common';\n\nexport const RXAP_SELECTED_LANGUAGE_LOCAL_STORAGE_KEY =\n 'rxap__selected_language';\nexport const RXAP_SELECTED_LANGUAGE_CHANGE_LOCAL_STORAGE_KEY =\n 'rxap__selected_language_last_change';\n\n@Injectable({ providedIn: 'root' })\nexport class LanguageSelectorService {\n public readonly languages: any;\n public readonly defaultLanguage: string;\n public selectedLanguage: string;\n\n constructor(\n @Inject(ConfigService)\n private readonly config: ConfigService,\n ) {\n this.languages = this.config.get<any>('i18n.languages') ?? {};\n this.defaultLanguage =\n this.config.get('i18n.defaultLanguage') ??\n Object.keys(this.languages)[0] ??\n 'en';\n this.selectedLanguage =\n localStorage.getItem(RXAP_SELECTED_LANGUAGE_LOCAL_STORAGE_KEY) ??\n this.defaultLanguage;\n }\n\n public setLanguage(language: string) {\n if (language !== this.selectedLanguage) {\n this.redirect(language);\n }\n }\n\n public autoRedirect() {\n if (localStorage.getItem(RXAP_SELECTED_LANGUAGE_LOCAL_STORAGE_KEY)) {\n this.redirect(\n localStorage.getItem(RXAP_SELECTED_LANGUAGE_LOCAL_STORAGE_KEY)!,\n );\n }\n }\n\n private redirect(language: string) {\n const currentUrl = location.origin + location.pathname + location.search;\n const redirectUrl =\n location.origin +\n `/${ language }` +\n location.pathname.replace(new RegExp(`^/${ this.selectedLanguage }`), '') +\n location.search;\n this.selectedLanguage = language;\n localStorage.setItem(RXAP_SELECTED_LANGUAGE_LOCAL_STORAGE_KEY, language);\n if (currentUrl !== redirectUrl) {\n if (this.checkLastChange()) {\n location.replace(redirectUrl);\n }\n } else {\n console.log('Redirect not required');\n }\n }\n\n private checkLastChange(): boolean {\n const lastChangeString = localStorage.getItem(\n RXAP_SELECTED_LANGUAGE_CHANGE_LOCAL_STORAGE_KEY,\n );\n if (lastChangeString) {\n if (Date.now() - parseInt(lastChangeString, 10) < 1000) {\n return false;\n }\n }\n localStorage.setItem(\n RXAP_SELECTED_LANGUAGE_CHANGE_LOCAL_STORAGE_KEY,\n Date.now().toFixed(0),\n );\n return true;\n }\n}\n\n@Component({\n selector: 'rxap-language-selector',\n templateUrl: './language-selector.component.html',\n styleUrls: [ './language-selector.component.scss' ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n NgIf,\n MatFormFieldModule,\n MatSelectModule,\n FormsModule,\n NgFor,\n MatOptionModule,\n KeyValuePipe,\n ],\n})\nexport class LanguageSelectorComponent {\n constructor(public readonly language: LanguageSelectorService) {\n }\n}\n","<ng-template [ngIf]=\"(language.languages | keyvalue).length\">\n <div>\n <mat-form-field appearance=\"outline\" class=\"language-selector\">\n <mat-select (ngModelChange)=\"language.setLanguage($event)\" [ngModel]=\"language.selectedLanguage\">\n <mat-option *ngFor=\"let item of language.languages | keyvalue\"\n [value]=\"item.key\">{{item.value}}</mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n</ng-template>\n","import {\n ChangeDetectionStrategy,\n Component,\n Input,\n} from '@angular/core';\nimport { MatSidenav } from '@angular/material/sidenav';\nimport { Required } from '@rxap/utilities';\nimport { MatIconModule } from '@angular/material/icon';\nimport { NgIf } from '@angular/common';\nimport { MatButtonModule } from '@angular/material/button';\n\n@Component({\n selector: 'rxap-sidenav-toggle-button',\n templateUrl: './sidenav-toggle-button.component.html',\n styleUrls: [ './sidenav-toggle-button.component.scss' ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [ MatButtonModule, NgIf, MatIconModule ],\n})\nexport class SidenavToggleButtonComponent {\n\n @Input()\n @Required\n public sidenav!: MatSidenav;\n\n}\n","<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","import {\n ChangeDetectionStrategy,\n Component,\n Inject,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n} from '@angular/core';\nimport { Constructor } from '@rxap/utilities';\nimport {\n Observable,\n Subscription,\n} from 'rxjs';\nimport {\n map,\n tap,\n} from 'rxjs/operators';\nimport { MatSidenav } from '@angular/material/sidenav';\nimport { UserService } from '@rxap/authentication';\nimport { RXAP_HEADER_COMPONENT } from '../tokens';\nimport { HeaderService } from '@rxap/services';\nimport {\n MatMenuModule,\n MatMenuPanel,\n} from '@angular/material/menu';\nimport { ThemePalette } from '@angular/material/core';\nimport { NavigationProgressBarComponent } from './navigation-progress-bar/navigation-progress-bar.component';\nimport { SignOutComponent } from './sign-out/sign-out.component';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { UserProfileIconComponent } from './user-profile-icon/user-profile-icon.component';\nimport { AppsButtonComponent } from './apps-button/apps-button.component';\nimport { LanguageSelectorComponent } from './language-selector/language-selector.component';\nimport { SidenavToggleButtonComponent } from './sidenav-toggle-button/sidenav-toggle-button.component';\nimport { FlexModule } from '@angular/flex-layout/flex';\nimport {\n AsyncPipe,\n NgClass,\n NgComponentOutlet,\n NgFor,\n NgIf,\n} from '@angular/common';\nimport { ExtendedModule } from '@angular/flex-layout/extended';\nimport { MatToolbarModule } from '@angular/material/toolbar';\n\n@Component({\n selector: 'rxap-header',\n templateUrl: './header.component.html',\n styleUrls: [ './header.component.scss' ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n MatToolbarModule,\n ExtendedModule,\n NgClass,\n NgFor,\n NgComponentOutlet,\n FlexModule,\n NgIf,\n SidenavToggleButtonComponent,\n LanguageSelectorComponent,\n AppsButtonComponent,\n UserProfileIconComponent,\n MatButtonModule,\n MatMenuModule,\n MatIconModule,\n SignOutComponent,\n NavigationProgressBarComponent,\n AsyncPipe,\n ],\n})\nexport class HeaderComponent implements OnInit, OnDestroy {\n @Input()\n public sidenav?: MatSidenav;\n\n public components: Array<Constructor<any>> = [];\n\n public subscriptions = new Subscription();\n\n public hasUser$: Observable<boolean>;\n\n @Input()\n public color: ThemePalette = 'primary';\n\n @Input()\n public settingsMenuPanel?: MatMenuPanel;\n\n constructor(\n @Inject(HeaderService)\n public readonly headerComponentService: HeaderService,\n @Inject(UserService)\n private readonly userService: UserService<any>,\n @Optional() @Inject(RXAP_HEADER_COMPONENT) public headerComponent: any,\n ) {\n this.hasUser$ = this.userService.user$.pipe(map(Boolean));\n }\n\n public ngOnInit() {\n this.updateComponents();\n this.subscriptions.add(\n this.headerComponentService.update$\n .pipe(tap(() => this.updateComponents()))\n .subscribe(),\n );\n }\n\n public updateComponents(): void {\n this.components = this.headerComponentService.getComponents();\n }\n\n public ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n}\n","<mat-toolbar [color]=\"color\" [ngClass]=\"{ open: sidenav?.opened }\" class=\"mat-elevation-z3\">\n <mat-toolbar-row *ngFor=\"let headerComponent of components\">\n <ng-container *ngComponentOutlet=\"headerComponent\"></ng-container>\n </mat-toolbar-row>\n <mat-toolbar-row>\n <div\n class=\"content\"\n fxLayout=\"row\"\n fxLayoutAlign=\"space-between center\"\n fxLayoutGap=\"16px\"\n >\n <rxap-sidenav-toggle-button *ngIf=\"sidenav\" [sidenav]=\"sidenav\"\n fxFlex=\"nogrow\"></rxap-sidenav-toggle-button>\n <div fxFlex=\"grow\">\n <ng-content></ng-content>\n </div>\n <rxap-language-selector fxFlex=\"nogrow\"></rxap-language-selector>\n <rxap-apps-button fxFlex=\"nogrow\"></rxap-apps-button>\n <rxap-user-profile-icon *ngIf=\"hasUser$ | async\" fxFlex=\"nogrow\"></rxap-user-profile-icon>\n <div *ngIf=\"settingsMenuPanel\" fxFlex=\"nogrow\">\n <button [matMenuTriggerFor]=\"settingsMenuPanel\" mat-icon-button>\n <mat-icon>settings</mat-icon>\n </button>\n </div>\n <rxap-sign-out fxFlex=\"nogrow\"></rxap-sign-out>\n </div>\n </mat-toolbar-row>\n</mat-toolbar>\n<rxap-navigation-progress-bar></rxap-navigation-progress-bar>\n","import {\n ChangeDetectionStrategy,\n Component,\n Inject,\n} from '@angular/core';\nimport { ResetService } from '@rxap/services';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\n\n@Component({\n selector: 'rxap-reset-button',\n templateUrl: './reset-button.component.html',\n styleUrls: [ './reset-button.component.scss' ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [ MatButtonModule, MatIconModule ],\n})\nexport class ResetButtonComponent {\n constructor(\n @Inject(ResetService)\n public readonly resetService: ResetService,\n ) {\n }\n}\n","<button (click)=\"resetService.resetAll()\" mat-icon-button>\n <mat-icon>refresh</mat-icon>\n</button>\n","import {\n Inject,\n Injectable,\n Optional,\n} from '@angular/core';\nimport {\n BehaviorSubject,\n Observable,\n} from 'rxjs';\nimport {\n map,\n tap,\n} from 'rxjs/operators';\nimport {\n FooterService,\n HeaderService,\n} from '@rxap/services';\nimport { RXAP_LOGO_CONFIG } from '../tokens';\nimport { LogoConfig } from '../types';\nimport { ConfigService } from '@rxap/config';\nimport { MatDrawerMode } from '@angular/material/sidenav';\n\n@Injectable({ providedIn: 'root' })\nexport class LayoutComponentService {\n\n public opened$ = new BehaviorSubject<boolean>(true);\n public mode$ = new BehaviorSubject<MatDrawerMode>('side');\n public fixedBottomGap$: Observable<number>;\n public fixedTopGap$ = new BehaviorSubject<number>(64);\n public logo: LogoConfig;\n\n public constructor(\n public readonly footerComponentService: FooterService,\n public readonly headerComponentService: HeaderService,\n @Optional() @Inject(RXAP_LOGO_CONFIG) logoConfig: LogoConfig | null = null,\n @Inject(ConfigService)\n private readonly config: ConfigService,\n ) {\n this.mode$.next(this.config.get('navigation.mode', this.mode$.value));\n this.opened$.next(this.config.get('navigation.open', this.opened$.value));\n this.fixedBottomGap$ = this.footerComponentService.portalCount$.pipe(map(count => count * 64));\n this.fixedTopGap$.next(this.headerComponentService.countComponent * 64);\n this.headerComponentService.update$.pipe(\n tap(() => this.fixedTopGap$.next(this.headerComponentService.countComponent * 64)),\n ).subscribe();\n this.logo = logoConfig ?? {\n src: '/assets/logo.png',\n width: '192',\n };\n }\n\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n Inject,\n OnDestroy,\n OnInit,\n} from '@angular/core';\nimport {\n ContainerComponent,\n WindowContainerSidenavService,\n} from '@rxap/services';\nimport {\n ComponentPortal,\n PortalModule,\n} from '@angular/cdk/portal';\nimport { tap } from 'rxjs/operators';\nimport { Subscription } from 'rxjs';\nimport { NgFor } from '@angular/common';\nimport { FlexModule } from '@angular/flex-layout/flex';\n\n@Component({\n selector: 'rxap-window-container-sidenav',\n templateUrl: './window-container-sidenav.component.html',\n styleUrls: [ './window-container-sidenav.component.scss' ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [ FlexModule, NgFor, PortalModule ],\n})\nexport class WindowContainerSidenavComponent implements OnInit, OnDestroy {\n\n public portals = new Map<string, ComponentPortal<any>>();\n\n private subscription = new Subscription();\n\n constructor(\n @Inject(WindowContainerSidenavService)\n public readonly service: WindowContainerSidenavService,\n ) {\n }\n\n public ngOnInit(): void {\n const components = this.service.getAll();\n for (const component of components) {\n this.add(component);\n }\n this.subscription.add(this.service.add$.pipe(\n tap(component => this.add(component)),\n ).subscribe());\n this.subscription.add(this.service.remove$.pipe(\n tap(component => this.remove(component)),\n ).subscribe());\n }\n\n public ngOnDestroy() {\n this.subscription.unsubscribe();\n }\n\n public trackBy(index: number, id: string) {\n return id;\n }\n\n private add(component: ContainerComponent) {\n if (this.portals.has(component.id)) {\n throw new Error(`Component portal with id ${ component.id } already exists`);\n }\n const portal = new ComponentPortal(\n component.component,\n component.viewContainerRef,\n component.injector,\n component.componentFactoryResolver,\n );\n this.portals.set(component.id, portal);\n }\n\n private remove(component: ContainerComponent) {\n if (this.portals.has(component.id)) {\n const portal = this.portals.get(component.id)!;\n this.portals.delete(component.id);\n portal.detach();\n }\n }\n\n}\n","<div class=\"container\" fxLayout=\"column\" fxLayoutGap=\"16px\">\n\n <div *ngFor=\"let portalId of portals.keys(); trackBy: trackBy\" fxFlex=\"nogrow\">\n <ng-template [cdkPortalOutlet]=\"portals.get(portalId)\"></ng-template>\n </div>\n\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n} from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { NgIf } from '@angular/common';\nimport { MatButtonModule } from '@angular/material/button';\n\n@Component({\n selector: 'rxap-toggle-window-sidenav-button',\n templateUrl: './toggle-window-sidenav-button.component.html',\n styleUrls: [ './toggle-window-sidenav-button.component.scss' ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n host: {\n class: 'rxap-toggle-window-sidenav-button',\n },\n standalone: true,\n imports: [ MatButtonModule, NgIf, MatIconModule ],\n})\nexport class ToggleWindowSidenavButtonComponent {\n\n @Input()\n public openWindowSidenav = false;\n\n @Output()\n public openWindowSidenavChange = new EventEmitter<boolean>();\n\n public toggle() {\n this.openWindowSidenav = !this.openWindowSidenav;\n this.openWindowSidenavChange.emit(this.openWindowSidenav);\n }\n\n}\n","<div class=\"toggle-button\">\n <button (click)=\"toggle()\" mat-icon-button>\n <ng-template [ngIfElse]=\"hide\" [ngIf]=\"!openWindowSidenav\">\n <mat-icon>keyboard_arrow_left</mat-icon>\n </ng-template>\n <ng-template #hide>\n <mat-icon>keyboard_arrow_right</mat-icon>\n </ng-template>\n </button>\n</div>\n","import {\n Inject,\n Injectable,\n} from '@angular/core';\nimport {\n FooterService,\n HeaderService,\n} from '@rxap/services';\nimport {\n BehaviorSubject,\n combineLatest,\n Observable,\n} from 'rxjs';\nimport {\n map,\n tap,\n} from 'rxjs/operators';\n\n@Injectable({ providedIn: 'root' })\nexport class SidenavContentComponentService {\n\n public headerRows$ = new BehaviorSubject<number>(1);\n public footerRows$: Observable<number>;\n public innerHeight$: Observable<string>;\n public marginTop$: Observable<string>;\n public marginBottom$: Observable<string>;\n\n constructor(\n @Inject(FooterService) public readonly footerComponentService: FooterService,\n @Inject(HeaderService) public readonly headerComponentService: HeaderService,\n ) {\n this.headerRows$.next(this.headerComponentService.countComponent);\n\n this.footerComponentService.portalCount$.pipe().subscribe();\n\n this.footerRows$ = this.footerComponentService.portalCount$;\n\n this.headerComponentService.update$.pipe(\n tap(() => this.headerRows$.next(this.headerComponentService.countComponent)),\n ).subscribe();\n\n this.innerHeight$ = combineLatest([\n this.headerRows$,\n this.footerRows$,\n ]).pipe(\n map(([ headerRows, footerRows ]) => `calc(100% - ${ 64 * (headerRows + footerRows) }px)`),\n );\n\n this.marginTop$ = this.headerRows$.pipe(\n map(headerRows => `${ headerRows * 64 }px`),\n );\n\n this.marginBottom$ = this.footerRows$.pipe(\n map(footerRows => `${ footerRows * 64 }px`),\n );\n\n }\n\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n Input,\n} from '@angular/core';\nimport { Required } from '@rxap/utilities';\nimport { MatSidenav } from '@angular/material/sidenav';\nimport { SidenavContentComponentService } from './sidenav-content.component.service';\nimport { RouterOutlet } from '@angular/router';\nimport {\n AsyncPipe,\n NgClass,\n NgStyle,\n} from '@angular/common';\n\n@Component({\n selector: 'rxap-sidenav-content',\n templateUrl: './sidenav-content.component.html',\n styleUrls: [ './sidenav-content.component.scss' ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [ NgClass, NgStyle, RouterOutlet, AsyncPipe ],\n})\nexport class SidenavContentComponent {\n\n @Input() @Required public sidenav!: MatSidenav;\n\n constructor(public readonly sccs: SidenavContentComponentService) {\n }\n}\n","<div [ngClass]=\"{ 'open': (sidenav.openedChange | async) }\" [ngStyle]=\"{\n height: sccs.innerHeight$ | async,\n marginTop: sccs.marginTop$ | async,\n marginBottom: sccs.marginBottom$ | async\n}\" class=\"container\">\n <!-- <dx-breadcrumb></dx-breadcrumb>-->\n <div class=\"inner\">\n <router-outlet></router-outlet>\n <ng-content></ng-content>\n </div>\n</div>\n","import {\n Directive,\n Inject,\n TemplateRef,\n} from '@angular/core';\n\n@Directive({\n selector: '[rxapSidenavHeader]',\n standalone: true,\n})\nexport class SidenavHeaderDirective {\n constructor(\n @Inject(TemplateRef)\n public readonly template: TemplateRef<void>,\n ) {\n }\n}\n","import {\n Directive,\n Inject,\n TemplateRef,\n} from '@angular/core';\n\n@Directive({\n selector: '[rxapSidenavFooter]',\n standalone: true,\n})\nexport class SidenavFooterDirective {\n constructor(\n @Inject(TemplateRef)\n public readonly template: TemplateRef<void>,\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { ConfigService } from '@rxap/config';\n\n@Injectable({ providedIn: 'root' })\nexport class SidenavComponentService {\n\n public readonly collapsed$ = new BehaviorSubject(true);\n\n constructor(private readonly config: ConfigService) {\n this.collapsed$.next(this.config.get('navigation.collapsed', this.collapsed$.value));\n }\n\n public toggleNavigationCollapse(): void {\n this.collapsed$.next(!this.collapsed$.value);\n }\n\n}\n","import { IconConfig } from '@rxap/utilities';\nimport {\n AbstractType,\n InjectionToken,\n Type,\n} from '@angular/core';\nimport { Observable } from 'rxjs';\n\nexport type Navigation = Array<NavigationItem | NavigationDividerItem>;\n\nexport type NavigationWithInserts = Array<\n | NavigationItem<NavigationWithInserts>\n | NavigationDividerItem\n | NavigationInsertItem\n>;\n\nexport interface NavigationDividerItem {\n divider: boolean;\n title?: string;\n}\n\nexport function IsNavigationDividerItem(\n item: any,\n): item is NavigationDividerItem {\n return !!item && !!item['divider'];\n}\n\nexport interface NavigationInsertItem {\n insert: string;\n}\n\nexport function IsNavigationInsertItem(\n item: any,\n): item is NavigationInsertItem {\n return !!item && !!item['insert'];\n}\n\nexport interface NavigationStatus {\n isVisible(\n navigationItem: NavigationItem,\n ): Observable<boolean> | Promise<boolean> | boolean;\n}\n\nexport interface NavigationItem<Children = Navigation> extends Record<string, unknown> {\n routerLink: string[];\n label: string;\n children?: Children;\n icon?: IconConfig;\n status?: Array<\n | Type<NavigationStatus>\n | InjectionToken<NavigationStatus>\n | AbstractType<NavigationStatus>\n >;\n}\n\nexport function IsNavigationItem(item: any): item is NavigationItem {\n return (\n !!item && !!item['routerLink'] && !!item['label']\n );\n}\n","import type { Injector } from '@angular/core';\nimport {\n Inject,\n Injectable,\n INJECTOR,\n Optional,\n} from '@angular/core';\nimport {\n combineLatest,\n from,\n Observable,\n of,\n ReplaySubject,\n} from 'rxjs';\nimport {\n IsNavigationDividerItem,\n IsNavigationInsertItem,\n IsNavigationItem,\n Navigation,\n NavigationDividerItem,\n NavigationItem,\n NavigationWithInserts,\n} from './navigation-item';\nimport {\n RXAP_NAVIGATION_CONFIG,\n RXAP_NAVIGATION_CONFIG_INSERTS,\n} from '../tokens';\nimport {\n catchError,\n map,\n switchMap,\n} from 'rxjs/operators';\n\n@Injectable({ providedIn: 'root' })\nexport class NavigationService {\n public readonly config$: Observable<Navigation>;\n\n private inserts = new Map<string, NavigationWithInserts>();\n\n private readonly navigation: NavigationWithInserts;\n\n private readonly navigation$ = new ReplaySubject<Navigation>(1);\n\n constructor(\n @Inject(RXAP_NAVIGATION_CONFIG)\n navigation: any,\n @Inject(INJECTOR)\n private readonly injector: Injector,\n @Optional()\n @Inject(RXAP_NAVIGATION_CONFIG_INSERTS)\n inserts: any | null = null,\n ) {\n if (typeof navigation === 'function') {\n this.navigation = navigation();\n } else {\n this.navigation = navigation;\n }\n if (inserts) {\n Object.entries(inserts).forEach(([ id, insert ]: [ string, any ]) =>\n this.insert(id, insert, false),\n );\n }\n this.updateNavigation();\n this.config$ = this.navigation$.pipe(\n switchMap((navigationWithoutStatusCheck) =>\n this.checkNavigationStatusProviders(navigationWithoutStatusCheck),\n ),\n );\n }\n\n /**\n * @deprecated use add instead\n * @param id\n * @param value\n * @param update\n */\n public insert(\n id: string,\n value: NavigationWithInserts,\n update = true,\n ): void {\n this.add(id, value, update);\n }\n\n public add(\n id: string,\n value: NavigationWithInserts,\n update = true,\n ): void {\n this.inserts.set(id, value);\n if (update) {\n this.updateNavigation();\n }\n }\n\n public has(id: string): boolean {\n return this.inserts.has(id);\n }\n\n public get(id: string): NavigationWithInserts | undefined {\n return this.inserts.get(id);\n }\n\n public remove(id: string, update = true): void {\n this.inserts.delete(id);\n if (update) {\n this.updateNavigation();\n }\n }\n\n public updateNavigation(): void {\n this.navigation$.next(this.replaceInserts(this.navigation));\n }\n\n /**\n * @internal\n * @param navigationItem\n */\n public checkNavigationItemStatusProviders(\n navigationItem: NavigationItem | NavigationDividerItem,\n ): Observable<NavigationItem | NavigationDividerItem | null> {\n if (IsNavigationDividerItem(navigationItem) || !navigationItem.status) {\n return of(navigationItem);\n }\n const isVisibleArray$: Array<Observable<boolean>> = navigationItem.status\n .map((statusToken) => this.injector.get(\n statusToken))\n .map((status) => {\n const isVisible = status.isVisible(\n navigationItem);\n if (typeof isVisible === 'boolean') {\n return of(isVisible);\n } else {\n return from(isVisible);\n }\n })\n .map(isVisible$ => isVisible$.pipe(catchError(e => {\n console.error('isVisible method failed: ' +\n e.message);\n return of(false);\n })));\n // TODO : dont wait for all status services to complete, but cancel waiting if one returns false\n return combineLatest(isVisibleArray$).pipe(\n map((isVisibleArray) =>\n isVisibleArray.reduce((acc, isVisible) => acc && isVisible, true),\n ),\n map((isVisible) => (isVisible ? navigationItem : null)),\n switchMap((navigationItemOrNull) => {\n if (navigationItemOrNull) {\n if (navigationItemOrNull.children?.length) {\n return this.checkNavigationStatusProviders(\n navigationItemOrNull.children,\n ).pipe(\n map((children) => ({\n ...navigationItemOrNull,\n children,\n })),\n );\n }\n return of(navigationItemOrNull);\n }\n return of(null);\n }),\n );\n }\n\n /**\n * @internal\n * @param navigationItem\n */\n public checkNavigationStatusProviders(\n navigation: Navigation,\n ): Observable<Navigation> {\n return combineLatest(\n navigation.map((navigationItem) =>\n this.checkNavigationItemStatusProviders(navigationItem),\n ),\n ).pipe(\n map((navigationWithNullItems) => {\n const cleanNavigation: Navigation = [];\n\n for (const navigationItem of navigationWithNullItems) {\n if (navigationItem !== null) {\n cleanNavigation.push(navigationItem);\n }\n }\n\n return cleanNavigation;\n }),\n );\n }\n\n private replaceInserts(\n navigationWithInserts: NavigationWithInserts,\n ): Navigation {\n const navigation: Navigation = [];\n\n for (const navigationItem of navigationWithInserts) {\n if (IsNavigationInsertItem(navigationItem)) {\n if (this.inserts.has(navigationItem.insert)) {\n navigation.push(\n ...this.replaceInserts(this.inserts.get(navigationItem.insert)!),\n );\n }\n } else if (IsNavigationItem(navigationItem)) {\n navigation.push({\n ...navigationItem,\n children: this.replaceInserts(navigationItem.children ?? []),\n });\n } else if (IsNavigationDividerItem(navigationItem)) {\n navigation.push(navigationItem);\n }\n }\n\n return navigation;\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EmbeddedViewRef,\n HostBinding,\n HostListener,\n Inject,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Renderer2,\n SimpleChanges,\n TemplateRef,\n ViewChild,\n ViewContainerRef,\n ViewEncapsulation,\n} from '@angular/core';\nimport {\n DebounceCall,\n Required,\n} from '@rxap/utilities';\nimport {\n animate,\n style,\n transition,\n trigger,\n} from '@angular/animations';\nimport {\n Navigation,\n NavigationDividerItem,\n NavigationItem,\n} from '../navigation-item';\nimport {\n NavigationEnd,\n Router,\n RouterLink,\n RouterLinkActive,\n} from '@angular/router';\nimport { Subscription } from 'rxjs';\nimport {\n delay,\n distinctUntilChanged,\n filter,\n skip,\n startWith,\n tap,\n} from 'rxjs/operators';\nimport { SidenavComponentService } from '../../sidenav/sidenav.component.service';\nimport {\n Overlay,\n OverlayRef,\n} from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { FlexModule } from '@angular/flex-layout/flex';\nimport { NavigationComponent } from '../navigation.component';\nimport { IconDirective } from '@rxap/material-directives/icon';\nimport { MatIconModule } from '@angular/material/icon';\nimport {\n AsyncPipe,\n NgFor,\n NgIf,\n} from '@angular/common';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatRippleModule } from '@angular/material/core';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'li[rxap-navigation-item]',\n templateUrl: './navigation-item.component.html',\n styleUrls: [ './navigation-item.component.scss' ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n host: {\n class: 'rxap-navigation-item',\n },\n animations: [\n trigger('sub-nav', [\n transition(':enter', [\n style({\n display: 'block',\n height: '0',\n overflow: 'hidden',\n }),\n animate(150, style({ height: '*' })),\n ]),\n transition(':leave', [\n style({ overflow: 'hidden' }),\n animate(300, style({ height: '0' })),\n style({ display: 'none' }),\n ]),\n ]),\n ],\n standalone: true,\n imports: [\n RouterLinkActive,\n MatRippleModule,\n RouterLink,\n MatTooltipModule,\n NgIf,\n MatIconModule,\n IconDirective,\n NavigationComponent,\n FlexModule,\n NgFor,\n AsyncPipe,\n ],\n})\nexport class NavigationItemComponent\n implements OnChanges, AfterViewInit, OnDestroy, OnInit {\n public children: Navigation | null = null;\n\n @ViewChild(RouterLinkActive, { static: true })\n public routerLinkActive!: RouterLinkActive;\n\n @Input()\n @Required\n public item!: NavigationItem;\n\n @Input()\n public level = 0;\n\n @HostBinding('class.active')\n public isActive = false;\n\n @ViewChild('navigationOverlay')\n private _navigationOverlay!: TemplateRef<any>;\n\n private readonly _subscription = new Subscription();\n\n private _overlayRef?: OverlayRef;\n private _embeddedViewRef?: EmbeddedViewRef<any>;\n\n /**\n * indicates the mouse is over the\n */\n public lockeOverlay = false;\n\n constructor(\n @Inject(Router)\n private readonly router: Router,\n @Inject(SidenavComponentService)\n public readonly sidenav: SidenavComponentService,\n @Inject(ElementRef)\n private readonly elementRef: ElementRef,\n @Inject(Renderer2)\n private readonly renderer: Renderer2,\n @Inject(Overlay)\n private readonly overlay: Overlay,\n @Inject(ViewContainerRef)\n private readonly viewContainerRef: ViewContainerRef,\n ) {\n }\n\n public ngOnChanges(changes: SimpleChanges) {\n if (changes['item']) {\n const item: NavigationItem = changes['item'].currentValue;\n this.children =\n item.children && item.children.length ? item.children : null;\n }\n }\n\n public ngAfterViewInit() {\n this._subscription.add(\n this.router.events\n .pipe(\n filter((event) => event instanceof NavigationEnd),\n startWith(true),\n delay(100),\n tap(() => {\n if (this.routerLinkActive.isActive) {\n if (!this.sidenav.collapsed$.value) {\n // only close the overlay if sidenav collapsed\n this._overlayRef?.detach();\n }\n this.renderer.addClass(this.elementRef.nativeElement, 'active');\n } else {\n this.renderer.removeClass(\n this.elementRef.nativeElement,\n 'active',\n );\n }\n }),\n )\n .subscribe(),\n );\n }\n\n public ngOnInit() {\n // detach the navigation overlay if the sidenav collapsed\n // state is changed\n this._subscription.add(\n this.sidenav.collapsed$\n .pipe(\n skip(1),\n distinctUntilChanged(),\n tap(() => this._overlayRef?.detach()),\n )\n .subscribe(),\n );\n }\n\n public ngOnDestroy() {\n this._subscription?.unsubscribe();\n this._overlayRef?.dispose();\n }\n\n @HostListener('mouseenter')\n public onMouseenter() {\n if (this.children) {\n if (!this.routerLinkActive.isActive || this.sidenav.collapsed$.value) {\n if (!this._overlayRef) {\n this._overlayRef = this.overlay.create({\n positionStrategy: this.overlay\n .position()\n .flexibleConnectedTo(this.elementRef)\n .withPositions([\n {\n originY: 'top',\n originX: 'end',\n overlayY: 'top',\n overlayX: 'start',\n },\n ]),\n });\n }\n if (!this._overlayRef.hasAttached()) {\n this._embeddedViewRef = this._overlayRef.attach(\n new TemplatePortal(this._navigationOverlay, this.viewContainerRef),\n );\n }\n }\n }\n }\n\n @HostListener('mouseleave')\n @DebounceCall(100)\n public onMouseleave() {\n if (!this.lockeOverlay) {\n this._overlayRef?.detach();\n }\n }\n\n // region type save item property\n\n // required to check the type of the item property in the ngFor loop\n\n public isNavigationDividerItem(\n item: NavigationItem | NavigationDividerItem,\n ): item is NavigationDividerItem {\n return (item as any)['divider'];\n }\n\n public isNavigationItem(\n item: NavigationItem | NavigationDividerItem,\n ): item is NavigationItem {\n return !this.isNavigationDividerItem(item);\n }\n\n public asNavigationItem(\n item: NavigationItem | NavigationDividerItem,\n ): NavigationItem {\n if (!this.isNavigationItem(item)) {\n throw new Error('The item is not a NavigationItem');\n }\n return item;\n }\n\n // endregion\n}\n","<a [matTooltipDisabled]=\"(sidenav.collapsed$ | async) === false\"\n [matTooltip]=\"item.label\"\n [routerLink]=\"item.routerLink\"\n class=\"navigation-link mat-body-2 mat-body-strong navigation-level-{{level}}\"\n matRipple routerLinkActive=\"link-active\">\n <mat-icon *ngIf=\"item.icon\" [rxapIcon]=\"item.icon\" class=\"icon\"></mat-icon>\n <ng-template [ngIf]=\"(sidenav.collapsed$ | async) === false\">\n <span class=\"label\">{{ item.label }}</span>\n </ng-template>\n</a>\n\n<ul *ngIf=\"routerLinkActive.isActive && (sidenav.collapsed$ | async) === false && children\"\n [@sub-nav]\n [items]=\"children\"\n [level]=\"level + 1\"\n class=\"sub-items\"\n fxFlex=\"nogrow\"\n rxap-navigation\n>\n</ul>\n\n<ng-template #navigationOverlay>\n <div (mouseenter)=\"lockeOverlay = true\"\n (mouseleave)=\"lockeOverlay = false; onMouseleave()\" class=\"navigation-overlay-container mat-elevation-z1\">\n <ul>\n <li *ngFor=\"let child of children\">\n <a *ngIf=\"isNavigationItem(child)\" [routerLink]=\"asNavigationItem(child).routerLink\"\n class=\"navigation-link mat-subtitle-2 mat-body-strong\" matRipple>\n <mat-icon *ngIf=\"asNavigationItem(child).icon\" [rxapIcon]=\"asNavigationItem(child).icon\"\n class=\"icon\"></mat-icon>\n <span class=\"label\">{{ asNavigationItem(child).label }}</span>\n </a>\n </li>\n </ul>\n </div>\n</ng-template>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n HostBinding,\n Inject,\n Input,\n OnDestroy,\n OnInit,\n ViewEncapsulation,\n} from '@angular/core';\nimport {\n Navigation,\n NavigationDividerItem,\n NavigationItem,\n} from './navigation-item';\nimport {\n coerceBoolean,\n Required,\n} from '@rxap/utilities';\nimport { NavigationService } from './navigation.service';\nimport { Subscription } from 'rxjs';\nimport { tap } from 'rxjs/operators';\nimport { SidenavComponentService } from '../sidenav/sidenav.component.service';\nimport { NavigationItemComponent } from './navigation-item/navigation-item.component';\nimport { FlexModule } from '@angular/flex-layout/flex';\nimport { MatDividerModule } from '@angular/material/divider';\nimport {\n AsyncPipe,\n NgFor,\n NgIf,\n} from '@angular/common';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'ul[rxap-navigation]',\n templateUrl: './navigation.component.html',\n styleUrls: [ './navigation.component.scss' ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n host: { class: 'rxap-navigation' },\n standalone: true,\n imports: [\n NgFor,\n NgIf,\n MatDividerModule,\n FlexModule,\n NavigationItemComponent,\n AsyncPipe,\n ],\n})\nexport class NavigationComponent implements OnInit, OnDestroy {\n @HostBinding('class.rxap-root-navigation')\n public _root = false;\n\n @Input()\n public set root(value: boolean | '') {\n this._root = coerceBoolean(value);\n }\n\n @Input()\n @Required\n public items!: Navigation;\n\n public subscription?: Subscription;\n\n @Input()\n public level = 0;\n\n constructor(\n @Inject(NavigationService)\n private readonly navigationService: NavigationService,\n @Inject(ChangeDetectorRef)\n private readonly cdr: ChangeDetectorRef,\n @Inject(SidenavComponentService)\n public readonly sidenav: SidenavComponentService,\n ) {\n }\n\n public ngOnInit(): void {\n if (this._root) {\n this.items = [];\n this.subscription = this.navigationService.config$\n .pipe(\n tap((navigation) => (this.items = navigation)),\n tap(() => this.cdr.detectChanges()),\n )\n .subscribe();\n }\n }\n\n public ngOnDestroy() {\n this.subscription?.unsubscribe();\n }\n\n // region type save item property\n\n // required to check the type of the item property in the ngFor loop\n\n public isNavigationDividerItem(\n item: NavigationItem | NavigationDividerItem,\n ): item is NavigationDividerItem {\n return (item as any)['divider'];\n }\n\n public isNavigationItem(\n item: NavigationItem | NavigationDividerItem,\n ): item is NavigationItem {\n return !this.isNavigationDividerItem(item);\n }\n\n public asNavigationItem(\n item: NavigationItem | NavigationDividerItem,\n ): NavigationItem {\n if (!this.isNavigationItem(item)) {\n throw new Error('The item is not a NavigationItem');\n }\n return item;\n }\n\n // endregion\n}\n","<ng-template [ngForOf]=\"items\" let-item ngFor>\n <ng-template [ngIf]=\"isNavigationDividerItem(item)\">\n <mat-divider fxFlex=\"nogrow\"></mat-divider>\n <div *ngIf=\"(sidenav.collapsed$ | async) === false\" class=\"divider-title\" fxFlex=\"nogrow\" fxLayout=\"row\"\n fxLayoutAlign=\"start end\">\n <span *ngIf=\"item.title\" fxFlex=\"nogrow\">{{item.title}}</span>\n </div>\n </ng-template>\n <ng-template [ngIf]=\"isNavigationItem(item)\">\n <li [item]=\"asNavigationItem(item)\" [level]=\"level\" class=\"item\" rxap-navigation-item></li>\n </ng-template>\n</ng-template>\n","import {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n} from '@angular/core';\nimport { SidenavFooterDirective } from './sidenav-footer.directive';\nimport { SidenavHeaderDirective } from './sidenav-header.directive';\nimport { SidenavComponentService } from './sidenav.component.service';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { NavigationComponent } from '../navigation/navigation.component';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { FlexModule } from '@angular/flex-layout/flex';\nimport {\n AsyncPipe,\n NgClass,\n NgIf,\n NgTemplateOutlet,\n} from '@angular/common';\nimport { ExtendedModule } from '@angular/flex-layout/extended';\n\n@Component({\n selector: 'rxap-sidenav',\n templateUrl: './sidenav.component.html',\n styleUrls: [ './sidenav.component.scss' ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n host: {\n class: 'rxap-layout-sidenav',\n },\n standalone: true,\n imports: [\n ExtendedModule,\n NgClass,\n FlexModule,\n NgIf,\n NgTemplateOutlet,\n MatDividerModule,\n NavigationComponent,\n MatButtonModule,\n MatIconModule,\n AsyncPipe,\n ],\n})\nexport class SidenavComponent {\n\n @ContentChild(SidenavFooterDirective)\n public sidenavFooterDirective?: SidenavFooterDirective;\n\n @ContentChild(SidenavHeaderDirective)\n public sidenavHeaderDirective?: SidenavHeaderDirective;\n\n constructor(public readonly sidenav: SidenavComponentService) {\n }\n\n}\n","<div [ngClass]=\"{ 'collapsed': sidenav.collapsed$ | async }\" class=\"container\">\n <div class=\"inner\"\n fxLayout=\"column\"\n fxLayoutAlign=\"space-between stretch\">\n <ng-template [ngIf]=\"sidenavHeaderDirective?.template\">\n <div [fxHide]=\"sidenav.collapsed$ | async\" class=\"header\" fxFlex=\"nogrow\">\n <ng-container *ngTemplateOutlet=\"sidenavHeaderDirective?.template ?? null\"></ng-container>\n </div>\n <mat-divider [fxHide]=\"sidenav.collapsed$ | async\" fxFlex=\"nogrow\"></mat-divider>\n </ng-template>\n <div class=\"nav-container\" fxFlex=\"grow\">\n <ul fxLayout=\"column\" root rxap-navigation></ul>\n </div>\n <mat-divider fxFlex=\"nogrow\"></mat-divider>\n <button (click)=\"sidenav.toggleNavigationCollapse()\" [ngClass]=\"{ 'collapsed': sidenav.collapsed$ | async }\"\n class=\"sidebar-toggle\"\n fxFlex=\"nogrow\"\n mat-button>\n <span class=\"sidebar-toggle-inner\" fxLayout=\"row\" fxLayoutAlign=\"start center\" fxLayoutGap=\"16px\">\n <mat-icon class=\"arrow\" fxFlex=\"nogrow\">double_arrow</mat-icon>\n <span [fxHide]=\"sidenav.collapsed$ | async\" class=\"label\" fxFlex=\"grow\" i18n>Collapse sidebar</span>\n </span>\n </button>\n <ng-template [ngIf]=\"sidenavFooterDirective?.template ?? null\">\n <mat-divider [fxHide]=\"sidenav.collapsed$ | async\" fxFlex=\"nogrow\"></mat-divider>\n <div [fxHide]=\"sidenav.collapsed$ | async\" class=\"footer\" fxFlex=\"nogrow\">\n <ng-container *ngTemplateOutlet=\"sidenavFooterDirective?.template ?? null\"></ng-container>\n </div>\n </ng-template>\n </div>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n ViewChild,\n} from '@angular/core';\nimport { LayoutComponentService } from './layout.component.service';\nimport {\n MatSidenav,\n MatSidenavModule,\n} from '@angular/material/sidenav';\nimport { AsyncPipe } from '@angular/common';\nimport { FooterComponent } from '../footer/footer.component';\nimport { WindowContainerSidenavComponent } from '../window-container-sidenav/window-container-sidenav.component';\nimport { ToggleWindowSidenavButtonComponent } from '../toggle-window-sidenav-button/toggle-window-sidenav-button.component';\nimport { SidenavContentComponent } from '../sidenav-content/sidenav-content.component';\nimport { RouterLink } from '@angular/router';\nimport { SidenavHeaderDirective } from '../sidenav/sidenav-header.directive';\nimport { SidenavComponent } from '../sidenav/sidenav.component';\nimport { HeaderComponent } from '../header/header.component';\n\n@Component({\n selector: 'rxap-layout',\n templateUrl: './layout.component.html',\n styleUrls: [ './layout.component.scss' ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n HeaderComponent,\n MatSidenavModule,\n SidenavComponent,\n SidenavHeaderDirective,\n RouterLink,\n SidenavContentComponent,\n ToggleWindowSidenavButtonComponent,\n WindowContainerSidenavComponent,\n FooterComponent,\n AsyncPipe,\n ],\n})\nexport class LayoutComponent {\n\n public openWindowSidenav = false;\n\n @ViewChild(MatSidenav, { static: true }) public sidenav!: MatSidenav;\n\n constructor(\n public readonly layoutComponentService: LayoutComponentService,\n ) {\n }\n\n}\n","<rxap-header [sidenav]=\"sidenav\" class=\"header\"></rxap-header>\n<mat-sidenav-container autosize class=\"container\">\n <mat-sidenav\n [fixedBottomGap]=\"layoutComponentService.fixedBottomGap$ | async\"\n [fixedInViewport]=\"true\"\n [fixedTopGap]=\"layoutComponentService.fixedTopGap$ | async\"\n [mode]=\"(layoutComponentService.mode$ | async) ?? 'side'\"\n [opened]=\"(layoutComponentService.opened$ | async) ?? true\"\n class=\"sidenav\"\n >\n <rxap-sidenav>\n <ng-template rxapSidenavHeader>\n <img\n [routerLink]=\"['/']\"\n [src]=\"layoutComponentService.logo.src\"\n [width]=\"layoutComponentService.logo.width\"\n alt=\"logo\"\n class=\"logo\"\n />\n </ng-template>\n </rxap-sidenav>\n </mat-sidenav>\n <mat-sidenav-content class=\"content\">\n <rxap-sidenav-content [sidenav]=\"sidenav\">\n <ng-content></ng-content>\n <rxap-toggle-window-sidenav-button\n [(openWindowSidenav)]=\"openWindowSidenav\"></rxap-toggle-window-sidenav-button>\n </rxap-sidenav-content>\n </mat-sidenav-content>\n <mat-sidenav\n [fixedBottomGap]=\"layoutComponentService.fixedBottomGap$ | async\"\n [fixedInViewport]=\"true\"\n [fixedTopGap]=\"layoutComponentService.fixedTopGap$ | async\"\n [opened]=\"openWindowSidenav\"\n class=\"window-container-sidenav\"\n mode=\"side\"\n position=\"end\"\n >\n <rxap-window-container-sidenav></rxap-window-container-sidenav>\n </mat-sidenav>\n</mat-sidenav-container>\n<rxap-footer class=\"footer\"></rxap-footer>\n","import {\n ModuleWithProviders,\n NgModule,\n} from '@angular/core';\nimport { LayoutComponent } from './layout.component';\n\n\nimport { NavigationWithInserts } from '../navigation/navigation-item';\nimport { RXAP_NAVIGATION_CONFIG } from '../tokens';\n\n@NgModule({\n imports: [\n LayoutComponent,\n ],\n exports: [ LayoutComponent ],\n})\nexport class LayoutModule {\n\n public static withNavigation(navigation: NavigationWithInserts | (() => NavigationWithInserts)): ModuleWithProviders<LayoutModule> {\n\n return {\n ngModule: LayoutModule,\n providers: [\n {\n provide: RXAP_NAVIGATION_CONFIG,\n useValue: navigation,\n },\n ],\n };\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport {\n Observable,\n of,\n} from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class ReplaceRouterPathsService {\n\n public transform(routerLink: string[]): Observable<string[]> {\n return of(routerLink);\n }\n\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n Inject,\n OnDestroy,\n OnInit,\n} from '@angular/core';\nimport {\n Version,\n VersionService,\n} from '@rxap/services';\nimport {\n KeyValue,\n Required,\n} from '@rxap/utilities';\nimport { tap } from 'rxjs/operators';\nimport { Subscription } from 'rxjs';\nimport {\n KeyValuePipe,\n NgFor,\n} from '@angular/common';\nimport { FlexModule } from '@angular/flex-layout/flex';\n\n@Component({\n selector: 'rxap-version',\n templateUrl: './version.component.html',\n styleUrls: [ './version.component.scss' ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [ FlexModule, NgFor, KeyValuePipe ],\n})\nexport class VersionComponent implements OnInit, OnDestroy {\n\n @Required\n public modules!: KeyValue<Version>;\n\n private subscription?: Subscription;\n\n constructor(\n @Inject(VersionService) private version: VersionService,\n ) {\n }\n\n public ngOnInit(): void {\n this.modules = this.version.get();\n this.subscription = this.version.update$.pipe(\n tap(() => this.modules = this.version.get()),\n ).subscribe();\n }\n\n public ngOnDestroy() {\n this.subscription?.unsubscribe();\n }\n\n}\n","<div class=\"version\" fxFlex=\"nogrow\" fxLayout=\"column\" fxLayoutAlign=\"start start\" fxLayoutGap=\"8px\">\n <div *ngFor=\"let module of modules | keyvalue\" fxFlex=\"nogrow\" fxLayout=\"column\">\n <span class=\"name\" fxFlex=\"nogrow\">{{module.value.name}}</span>\n <span class=\"semantic\" fxFlex=\"nogrow\">{{module.value.semantic}}</span>\n <span class=\"hash\" fxFlex=\"nogrow\">{{module.value.hash}}</span>\n </div>\n</div>\n","import {\n Directive,\n Inject,\n OnDestroy,\n OnInit,\n TemplateRef,\n ViewContainerRef,\n} from '@angular/core';\nimport { FooterService } from '@rxap/services';\nimport { TemplatePortal } from '@angular/cdk/portal';\n\n@Directive({\n selector: '[rxapFooter]',\n standalone: true,\n})\nexport class FooterDirective implements OnInit, OnDestroy {\n private _portal?: TemplatePortal<void>;\n\n constructor(\n @Inject(FooterService)\n private readonly footerService: FooterService,\n @Inject(TemplateRef)\n private readonly template: TemplateRef<void>,\n @Inject(ViewContainerRef)\n private readonly viewContainerRef: ViewContainerRef,\n ) {\n }\n\n public ngOnInit() {\n this._portal = new TemplatePortal<void>(\n this.template,\n this.viewContainerRef,\n );\n this.footerService.pushPortal(this._portal);\n }\n\n public ngOnDestroy() {\n if (this._portal) {\n this.footerService.removePortal(this._portal);\n }\n }\n}\n\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2","i3","i4","i5","i6","i1.SidenavContentComponentService","i1.SidenavComponentService","i1.LayoutComponentService"],"mappings":"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"}
1
+ {"version":3,"file":"rxap-layout.mjs","sources":["../../../../../packages/angular/layout/src/lib/tokens.ts","../../../../../packages/angular/layout/src/lib/footer/footer.component.ts","../../../../../packages/angular/layout/src/lib/footer/footer.component.html","../../../../../packages/angular/layout/src/lib/header/navigation-progress-bar/navigation-progress-bar.component.ts","../../../../../packages/angular/layout/src/lib/header/navigation-progress-bar/navigation-progress-bar.component.html","../../../../../packages/angular/layout/src/lib/header/sign-out/sign-out.component.ts","../../../../../packages/angular/layout/src/lib/header/sign-out/sign-out.component.html","../../../../../packages/angular/layout/src/lib/header/user-profile-icon/user-profile-icon.component.ts","../../../../../packages/angular/layout/src/lib/header/user-profile-icon/user-profile-icon.component.html","../../../../../packages/angular/layout/src/lib/header/apps-button/apps-button.component.ts","../../../../../packages/angular/layout/src/lib/header/apps-button/apps-button.component.html","../../../../../packages/angular/layout/src/lib/header/language-selector/language-selector.component.ts","../../../../../packages/angular/layout/src/lib/header/language-selector/language-selector.component.html","../../../../../packages/angular/layout/src/lib/header/sidenav-toggle-button/sidenav-toggle-button.component.ts","../../../../../packages/angular/layout/src/lib/header/sidenav-toggle-button/sidenav-toggle-button.component.html","../../../../../packages/angular/layout/src/lib/header/header.component.ts","../../../../../packages/angular/layout/src/lib/header/header.component.html","../../../../../packages/angular/layout/src/lib/header/reset-button/reset-button.component.ts","../../../../../packages/angular/layout/src/lib/header/reset-button/reset-button.component.html","../../../../../packages/angular/layout/src/lib/layout/layout.component.service.ts","../../../../../packages/angular/layout/src/lib/window-container-sidenav/window-container-sidenav.component.ts","../../../../../packages/angular/layout/src/lib/window-container-sidenav/window-container-sidenav.component.html","../../../../../packages/angular/layout/src/lib/toggle-window-sidenav-button/toggle-window-sidenav-button.component.ts","../../../../../packages/angular/layout/src/lib/toggle-window-sidenav-button/toggle-window-sidenav-button.component.html","../../../../../packages/angular/layout/src/lib/sidenav-content/sidenav-content.component.service.ts","../../../../../packages/angular/layout/src/lib/sidenav-content/sidenav-content.component.ts","../../../../../packages/angular/layout/src/lib/sidenav-content/sidenav-content.component.html","../../../../../packages/angular/layout/src/lib/sidenav/sidenav-header.directive.ts","../../../../../packages/angular/layout/src/lib/sidenav/sidenav-footer.directive.ts","../../../../../packages/angular/layout/src/lib/sidenav/sidenav.component.service.ts","../../../../../packages/angular/layout/src/lib/navigation/navigation-item.ts","../../../../../packages/angular/layout/src/lib/navigation/navigation.service.ts","../../../../../packages/angular/layout/src/lib/navigation/navigation-item/navigation-item.component.ts","../../../../../packages/angular/layout/src/lib/navigation/navigation-item/navigation-item.component.html","../../../../../packages/angular/layout/src/lib/navigation/navigation.component.ts","../../../../../packages/angular/layout/src/lib/navigation/navigation.component.html","../../../../../packages/angular/layout/src/lib/sidenav/sidenav.component.ts","../../../../../packages/angular/layout/src/lib/sidenav/sidenav.component.html","../../../../../packages/angular/layout/src/lib/layout/layout.component.ts","../../../../../packages/angular/layout/src/lib/layout/layout.component.html","../../../../../packages/angular/layout/src/lib/layout/layout.component.module.ts","../../../../../packages/angular/layout/src/lib/navigation/replace-router-paths.service.ts","../../../../../packages/angular/layout/src/lib/sidenav/version/version.component.ts","../../../../../packages/angular/layout/src/lib/sidenav/version/version.component.html","../../../../../packages/angular/layout/src/lib/footer.directive.ts","../../../../../packages/angular/layout/src/rxap-layout.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { LogoConfig } from './types';\nimport { NavigationWithInserts } from './navigation/navigation-item';\n\nexport const RXAP_NAVIGATION_CONFIG = new InjectionToken<NavigationWithInserts | (() => NavigationWithInserts)>(\n 'rxap/layout/navigation-config');\nexport const RXAP_NAVIGATION_CONFIG_INSERTS = new InjectionToken<Record<string, NavigationWithInserts>>(\n 'rxap/layout/navigation-config-inserts');\n\nexport const RXAP_FOOTER_COMPONENT = new InjectionToken('rxap/layout/footer-component');\nexport const RXAP_HEADER_COMPONENT = new InjectionToken('rxap/layout/header-component');\nexport const RXAP_LOGO_CONFIG = new InjectionToken<LogoConfig>('rxap/layout/logo-config');\nexport const RXAP_LAYOUT_APPS_GRID = new InjectionToken('rxap/layout/apps-grid');\n","import {\n ChangeDetectionStrategy,\n Component,\n} from '@angular/core';\nimport { FooterService } from '@rxap/services';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport {\n AsyncPipe,\n NgFor,\n NgIf,\n} from '@angular/common';\n\n@Component({\n selector: 'rxap-footer',\n templateUrl: './footer.component.html',\n styleUrls: [ './footer.component.scss' ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [ NgIf, MatToolbarModule, NgFor, PortalModule, AsyncPipe ],\n})\nexport class FooterComponent {\n\n constructor(\n public readonly footerService: FooterService,\n ) {\n }\n\n}\n","<ng-template [ngIf]=\"footerService.portals$ | async\" let-portals>\n <mat-toolbar *ngIf=\"portals.length\" class=\"footer mat-elevation-z1\">\n <mat-toolbar-row *ngFor=\"let portal of portals\">\n <ng-template [cdkPortalOutlet]=\"portal\"></ng-template>\n </mat-toolbar-row>\n </mat-toolbar>\n</ng-template>\n","import {\n ChangeDetectionStrategy,\n Component,\n Inject,\n} from '@angular/core';\nimport { Observable } from 'rxjs';\nimport {\n NavigationCancel,\n NavigationEnd,\n NavigationStart,\n Router,\n} from '@angular/router';\nimport {\n filter,\n map,\n} from 'rxjs/operators';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport {\n AsyncPipe,\n NgIf,\n} from '@angular/common';\n\n@Component({\n selector: 'rxap-navigation-progress-bar',\n templateUrl: './navigation-progress-bar.component.html',\n styleUrls: [ './navigation-progress-bar.component.scss' ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [ NgIf, MatProgressBarModule, AsyncPipe ],\n})\nexport class NavigationProgressBarComponent {\n\n public navigating$: Observable<boolean>;\n\n public constructor(\n @Inject(Router) public readonly router: Router,\n ) {\n this.navigating$ = this.router.events.pipe(\n filter(\n event =>\n event instanceof NavigationStart ||\n event instanceof NavigationEnd ||\n event instanceof NavigationCancel,\n ),\n map(event => event instanceof NavigationStart),\n );\n }\n\n}\n","<mat-progress-bar\n *ngIf=\"navigating$ | async\"\n color=\"accent\"\n mode=\"indeterminate\"\n></mat-progress-bar>\n","import {\n ChangeDetectionStrategy,\n Component,\n Inject,\n} from '@angular/core';\nimport { Router } from '@angular/router';\nimport { MatIconModule } from '@angular/material/icon';\nimport { SignOutDirective } from '@rxap/authentication';\nimport { MatButtonModule } from '@angular/material/button';\n\n@Component({\n selector: 'rxap-sign-out',\n templateUrl: './sign-out.component.html',\n styleUrls: [ './sign-out.component.scss' ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [ MatButtonModule, SignOutDirective, MatIconModule ],\n})\nexport class SignOutComponent {\n\n constructor(\n @Inject(Router)\n private readonly router: Router,\n ) {\n }\n\n public redirectToRoot() {\n this.router.navigate([ '/' ]);\n }\n\n}\n","<button\n (successful)=\"redirectToRoot()\"\n mat-icon-button\n rxapSignOut\n>\n <mat-icon>login</mat-icon>\n</button>\n","import {\n ChangeDetectionStrategy,\n Component,\n Inject,\n} from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { UserService } from '@rxap/authentication';\nimport { map } from 'rxjs/operators';\nimport { isDefined } from '@rxap/rxjs';\nimport { MatIconModule } from '@angular/material/icon';\nimport {\n AsyncPipe,\n NgIf,\n} from '@angular/common';\nimport { AvatarBackgroundImageDirective } from '@rxap/directives';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { FlexModule } from '@angular/flex-layout/flex';\n\n@Component({\n selector: 'rxap-user-profile-icon',\n templateUrl: './user-profile-icon.component.html',\n styleUrls: [ './user-profile-icon.component.scss' ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n FlexModule,\n MatMenuModule,\n AvatarBackgroundImageDirective,\n NgIf,\n MatIconModule,\n AsyncPipe,\n ],\n})\nexport class UserProfileIconComponent {\n public userProfileUrl$: Observable<string | undefined>;\n public userName$: Observable<string>;\n\n constructor(\n @Inject(UserService)\n public userService: UserService,\n ) {\n this.userProfileUrl$ = this.userService.user$.pipe(\n isDefined(),\n map((user) => user.photoURL ?? user.avatarUrl),\n );\n this.userName$ = this.userService.user$.pipe(\n isDefined(),\n map(\n (user) =>\n user.name ??\n (user.firstname || user.lastname\n ? [ user.firstname, user.lastname ].join(' ').trim()\n : null) ??\n user.username,\n ),\n );\n }\n}\n","<button [matMenuTriggerFor]=\"menu\"\n [name]=\"(userName$ | async) ?? ''\"\n [rxapAvatarBackgroundImage]=\"userProfileUrl$ | 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","import {\n ChangeDetectionStrategy,\n Component,\n Inject,\n Optional,\n} from '@angular/core';\nimport { RXAP_LAYOUT_APPS_GRID } from '../../tokens';\nimport { ConfigService } from '@rxap/config';\nimport { FlexModule } from '@angular/flex-layout/flex';\nimport { ExtendedModule } from '@angular/flex-layout/extended';\nimport { MatIconModule } from '@angular/material/icon';\nimport {\n CdkConnectedOverlay,\n CdkOverlayOrigin,\n} from '@angular/cdk/overlay';\nimport { MatButtonModule } from '@angular/material/button';\nimport {\n NgClass,\n NgFor,\n NgIf,\n NgStyle,\n} from '@angular/common';\n\nexport interface AppsButtonGridItem {\n image: string;\n label: string;\n href: string;\n empty?: false;\n}\n\nexport interface EmptyAppsButtonGridItem {\n empty: true;\n href?: undefined;\n label?: undefined;\n image?: undefined;\n}\n\n@Component({\n selector: 'rxap-apps-button',\n templateUrl: './apps-button.component.html',\n styleUrls: [ './apps-button.component.scss' ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n host: { class: 'rxap-apps-button' },\n standalone: true,\n imports: [\n NgIf,\n MatButtonModule,\n CdkOverlayOrigin,\n MatIconModule,\n CdkConnectedOverlay,\n ExtendedModule,\n NgStyle,\n NgFor,\n NgClass,\n FlexModule,\n ],\n})\nexport class AppsButtonComponent {\n public get gridWithPadding(): Array<\n AppsButtonGridItem | EmptyAppsButtonGridItem\n > {\n const gridWithPadding: Array<AppsButtonGridItem | EmptyAppsButtonGridItem> =\n this.grid.slice();\n while (gridWithPadding.length % this.columns !== 0) {\n gridWithPadding.push({ empty: true });\n }\n return gridWithPadding;\n }\n\n public get columns() {\n if (this.grid.length < 4) {\n return 1;\n }\n if (this.grid.length < 6) {\n return 2;\n }\n return 3;\n }\n\n public isOpen = false;\n public grid: Array<AppsButtonGridItem> = [];\n\n constructor(\n @Optional()\n @Inject(RXAP_LAYOUT_APPS_GRID)\n grid: any,\n @Inject(ConfigService)\n private readonly config: ConfigService,\n ) {\n this.grid = grid ?? this.config.get('navigation.apps') ?? [];\n }\n}\n","<ng-template [ngIf]=\"grid && grid.length\">\n <button #trigger=\"cdkOverlayOrigin\" (click)=\"isOpen = !isOpen\" cdkOverlayOrigin mat-icon-button>\n <mat-icon>apps</mat-icon>\n </button>\n\n <ng-template (overlayOutsideClick)=\"isOpen = false\"\n [cdkConnectedOverlayOpen]=\"isOpen\"\n [cdkConnectedOverlayOrigin]=\"trigger\"\n cdkConnectedOverlay>\n\n <div class=\"grid-container\">\n\n <ul [ngStyle]=\"{ columns: columns }\" class=\"grid\">\n <li *ngFor=\"let item of gridWithPadding\" [ngClass]=\"{ empty: item.empty }\">\n <a *ngIf=\"!item.empty\" [href]=\"item.href\">\n\n <span fxLayout=\"column\" fxLayoutAlign=\"start center\" fxLayoutGap=\"12px\">\n <img [src]=\"item.image\" width=\"53px\">\n <span>{{item.label}}</span>\n </span>\n\n </a>\n </li>\n </ul>\n\n </div>\n\n </ng-template>\n</ng-template>\n","import {\n ChangeDetectionStrategy,\n Component,\n Inject,\n Injectable,\n} from '@angular/core';\nimport { ConfigService } from '@rxap/config';\nimport { MatOptionModule } from '@angular/material/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport {\n KeyValuePipe,\n NgFor,\n NgIf,\n} from '@angular/common';\n\nexport const RXAP_SELECTED_LANGUAGE_LOCAL_STORAGE_KEY =\n 'rxap__selected_language';\nexport const RXAP_SELECTED_LANGUAGE_CHANGE_LOCAL_STORAGE_KEY =\n 'rxap__selected_language_last_change';\n\n@Injectable({ providedIn: 'root' })\nexport class LanguageSelectorService {\n public readonly languages: any;\n public readonly defaultLanguage: string;\n public selectedLanguage: string;\n\n constructor(\n @Inject(ConfigService)\n private readonly config: ConfigService,\n ) {\n this.languages = this.config.get<any>('i18n.languages') ?? {};\n this.defaultLanguage =\n this.config.get('i18n.defaultLanguage') ??\n Object.keys(this.languages)[0] ??\n 'en';\n this.selectedLanguage =\n localStorage.getItem(RXAP_SELECTED_LANGUAGE_LOCAL_STORAGE_KEY) ??\n this.defaultLanguage;\n }\n\n public setLanguage(language: string) {\n if (language !== this.selectedLanguage) {\n this.redirect(language);\n }\n }\n\n public autoRedirect() {\n if (localStorage.getItem(RXAP_SELECTED_LANGUAGE_LOCAL_STORAGE_KEY)) {\n this.redirect(\n localStorage.getItem(RXAP_SELECTED_LANGUAGE_LOCAL_STORAGE_KEY)!,\n );\n }\n }\n\n private redirect(language: string) {\n const currentUrl = location.origin + location.pathname + location.search;\n const redirectUrl =\n location.origin +\n `/${ language }` +\n location.pathname.replace(new RegExp(`^/${ this.selectedLanguage }`), '') +\n location.search;\n this.selectedLanguage = language;\n localStorage.setItem(RXAP_SELECTED_LANGUAGE_LOCAL_STORAGE_KEY, language);\n if (currentUrl !== redirectUrl) {\n if (this.checkLastChange()) {\n location.replace(redirectUrl);\n }\n } else {\n console.log('Redirect not required');\n }\n }\n\n private checkLastChange(): boolean {\n const lastChangeString = localStorage.getItem(\n RXAP_SELECTED_LANGUAGE_CHANGE_LOCAL_STORAGE_KEY,\n );\n if (lastChangeString) {\n if (Date.now() - parseInt(lastChangeString, 10) < 1000) {\n return false;\n }\n }\n localStorage.setItem(\n RXAP_SELECTED_LANGUAGE_CHANGE_LOCAL_STORAGE_KEY,\n Date.now().toFixed(0),\n );\n return true;\n }\n}\n\n@Component({\n selector: 'rxap-language-selector',\n templateUrl: './language-selector.component.html',\n styleUrls: [ './language-selector.component.scss' ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n NgIf,\n MatFormFieldModule,\n MatSelectModule,\n FormsModule,\n NgFor,\n MatOptionModule,\n KeyValuePipe,\n ],\n})\nexport class LanguageSelectorComponent {\n constructor(public readonly language: LanguageSelectorService) {\n }\n}\n","<ng-template [ngIf]=\"(language.languages | keyvalue).length\">\n <div>\n <mat-form-field appearance=\"outline\" class=\"language-selector\">\n <mat-select (ngModelChange)=\"language.setLanguage($event)\" [ngModel]=\"language.selectedLanguage\">\n <mat-option *ngFor=\"let item of language.languages | keyvalue\"\n [value]=\"item.key\">{{item.value}}</mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n</ng-template>\n","import {\n ChangeDetectionStrategy,\n Component,\n Input,\n} from '@angular/core';\nimport { MatSidenav } from '@angular/material/sidenav';\nimport { Required } from '@rxap/utilities';\nimport { MatIconModule } from '@angular/material/icon';\nimport { NgIf } from '@angular/common';\nimport { MatButtonModule } from '@angular/material/button';\n\n@Component({\n selector: 'rxap-sidenav-toggle-button',\n templateUrl: './sidenav-toggle-button.component.html',\n styleUrls: [ './sidenav-toggle-button.component.scss' ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [ MatButtonModule, NgIf, MatIconModule ],\n})\nexport class SidenavToggleButtonComponent {\n\n @Input()\n @Required\n public sidenav!: MatSidenav;\n\n}\n","<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","import {\n ChangeDetectionStrategy,\n Component,\n Inject,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n} from '@angular/core';\nimport { Constructor } from '@rxap/utilities';\nimport {\n Observable,\n Subscription,\n} from 'rxjs';\nimport {\n map,\n tap,\n} from 'rxjs/operators';\nimport { MatSidenav } from '@angular/material/sidenav';\nimport { UserService } from '@rxap/authentication';\nimport { RXAP_HEADER_COMPONENT } from '../tokens';\nimport { HeaderService } from '@rxap/services';\nimport {\n MatMenuModule,\n MatMenuPanel,\n} from '@angular/material/menu';\nimport { ThemePalette } from '@angular/material/core';\nimport { NavigationProgressBarComponent } from './navigation-progress-bar/navigation-progress-bar.component';\nimport { SignOutComponent } from './sign-out/sign-out.component';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { UserProfileIconComponent } from './user-profile-icon/user-profile-icon.component';\nimport { AppsButtonComponent } from './apps-button/apps-button.component';\nimport { LanguageSelectorComponent } from './language-selector/language-selector.component';\nimport { SidenavToggleButtonComponent } from './sidenav-toggle-button/sidenav-toggle-button.component';\nimport { FlexModule } from '@angular/flex-layout/flex';\nimport {\n AsyncPipe,\n NgClass,\n NgComponentOutlet,\n NgFor,\n NgIf,\n} from '@angular/common';\nimport { ExtendedModule } from '@angular/flex-layout/extended';\nimport { MatToolbarModule } from '@angular/material/toolbar';\n\n@Component({\n selector: 'rxap-header',\n templateUrl: './header.component.html',\n styleUrls: [ './header.component.scss' ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n MatToolbarModule,\n ExtendedModule,\n NgClass,\n NgFor,\n NgComponentOutlet,\n FlexModule,\n NgIf,\n SidenavToggleButtonComponent,\n LanguageSelectorComponent,\n AppsButtonComponent,\n UserProfileIconComponent,\n MatButtonModule,\n MatMenuModule,\n MatIconModule,\n SignOutComponent,\n NavigationProgressBarComponent,\n AsyncPipe,\n ],\n})\nexport class HeaderComponent implements OnInit, OnDestroy {\n @Input()\n public sidenav?: MatSidenav;\n\n public components: Array<Constructor<any>> = [];\n\n public subscriptions = new Subscription();\n\n public hasUser$: Observable<boolean>;\n\n @Input()\n public color: ThemePalette = 'primary';\n\n @Input()\n public settingsMenuPanel?: MatMenuPanel;\n\n constructor(\n @Inject(HeaderService)\n public readonly headerComponentService: HeaderService,\n @Inject(UserService)\n private readonly userService: UserService<any>,\n @Optional() @Inject(RXAP_HEADER_COMPONENT) public headerComponent: any,\n ) {\n this.hasUser$ = this.userService.user$.pipe(map(Boolean));\n }\n\n public ngOnInit() {\n this.updateComponents();\n this.subscriptions.add(\n this.headerComponentService.update$\n .pipe(tap(() => this.updateComponents()))\n .subscribe(),\n );\n }\n\n public updateComponents(): void {\n this.components = this.headerComponentService.getComponents();\n }\n\n public ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n}\n","<mat-toolbar [color]=\"color\" [ngClass]=\"{ open: sidenav?.opened }\" class=\"mat-elevation-z3\">\n <mat-toolbar-row *ngFor=\"let headerComponent of components\">\n <ng-container *ngComponentOutlet=\"headerComponent\"></ng-container>\n </mat-toolbar-row>\n <mat-toolbar-row>\n <div\n class=\"content\"\n fxLayout=\"row\"\n fxLayoutAlign=\"space-between center\"\n fxLayoutGap=\"16px\"\n >\n <rxap-sidenav-toggle-button *ngIf=\"sidenav\" [sidenav]=\"sidenav\"\n fxFlex=\"nogrow\"></rxap-sidenav-toggle-button>\n <div fxFlex=\"grow\">\n <ng-content></ng-content>\n </div>\n <rxap-language-selector fxFlex=\"nogrow\"></rxap-language-selector>\n <rxap-apps-button fxFlex=\"nogrow\"></rxap-apps-button>\n <rxap-user-profile-icon *ngIf=\"hasUser$ | async\" fxFlex=\"nogrow\"></rxap-user-profile-icon>\n <div *ngIf=\"settingsMenuPanel\" fxFlex=\"nogrow\">\n <button [matMenuTriggerFor]=\"settingsMenuPanel\" mat-icon-button>\n <mat-icon>settings</mat-icon>\n </button>\n </div>\n <rxap-sign-out fxFlex=\"nogrow\"></rxap-sign-out>\n </div>\n </mat-toolbar-row>\n</mat-toolbar>\n<rxap-navigation-progress-bar></rxap-navigation-progress-bar>\n","import {\n ChangeDetectionStrategy,\n Component,\n Inject,\n} from '@angular/core';\nimport { ResetService } from '@rxap/services';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\n\n@Component({\n selector: 'rxap-reset-button',\n templateUrl: './reset-button.component.html',\n styleUrls: [ './reset-button.component.scss' ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [ MatButtonModule, MatIconModule ],\n})\nexport class ResetButtonComponent {\n constructor(\n @Inject(ResetService)\n public readonly resetService: ResetService,\n ) {\n }\n}\n","<button (click)=\"resetService.resetAll()\" mat-icon-button>\n <mat-icon>refresh</mat-icon>\n</button>\n","import {\n Inject,\n Injectable,\n Optional,\n} from '@angular/core';\nimport {\n BehaviorSubject,\n Observable,\n} from 'rxjs';\nimport {\n map,\n tap,\n} from 'rxjs/operators';\nimport {\n FooterService,\n HeaderService,\n} from '@rxap/services';\nimport { RXAP_LOGO_CONFIG } from '../tokens';\nimport { LogoConfig } from '../types';\nimport { ConfigService } from '@rxap/config';\nimport { MatDrawerMode } from '@angular/material/sidenav';\n\n@Injectable({ providedIn: 'root' })\nexport class LayoutComponentService {\n\n public opened$ = new BehaviorSubject<boolean>(true);\n public mode$ = new BehaviorSubject<MatDrawerMode>('side');\n public fixedBottomGap$: Observable<number>;\n public fixedTopGap$ = new BehaviorSubject<number>(64);\n public logo: LogoConfig;\n\n public constructor(\n public readonly footerComponentService: FooterService,\n public readonly headerComponentService: HeaderService,\n @Optional() @Inject(RXAP_LOGO_CONFIG) logoConfig: LogoConfig | null = null,\n @Inject(ConfigService)\n private readonly config: ConfigService,\n ) {\n this.mode$.next(this.config.get('navigation.mode', this.mode$.value));\n this.opened$.next(this.config.get('navigation.open', this.opened$.value));\n this.fixedBottomGap$ = this.footerComponentService.portalCount$.pipe(map(count => count * 64));\n this.fixedTopGap$.next(this.headerComponentService.countComponent * 64);\n this.headerComponentService.update$.pipe(\n tap(() => this.fixedTopGap$.next(this.headerComponentService.countComponent * 64)),\n ).subscribe();\n this.logo = logoConfig ?? {\n src: '/assets/logo.png',\n width: '192',\n };\n }\n\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n Inject,\n OnDestroy,\n OnInit,\n} from '@angular/core';\nimport {\n ContainerComponent,\n WindowContainerSidenavService,\n} from '@rxap/services';\nimport {\n ComponentPortal,\n PortalModule,\n} from '@angular/cdk/portal';\nimport { tap } from 'rxjs/operators';\nimport { Subscription } from 'rxjs';\nimport { NgFor } from '@angular/common';\nimport { FlexModule } from '@angular/flex-layout/flex';\n\n@Component({\n selector: 'rxap-window-container-sidenav',\n templateUrl: './window-container-sidenav.component.html',\n styleUrls: [ './window-container-sidenav.component.scss' ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [ FlexModule, NgFor, PortalModule ],\n})\nexport class WindowContainerSidenavComponent implements OnInit, OnDestroy {\n\n public portals = new Map<string, ComponentPortal<any>>();\n\n private subscription = new Subscription();\n\n constructor(\n @Inject(WindowContainerSidenavService)\n public readonly service: WindowContainerSidenavService,\n ) {\n }\n\n public ngOnInit(): void {\n const components = this.service.getAll();\n for (const component of components) {\n this.add(component);\n }\n this.subscription.add(this.service.add$.pipe(\n tap(component => this.add(component)),\n ).subscribe());\n this.subscription.add(this.service.remove$.pipe(\n tap(component => this.remove(component)),\n ).subscribe());\n }\n\n public ngOnDestroy() {\n this.subscription.unsubscribe();\n }\n\n public trackBy(index: number, id: string) {\n return id;\n }\n\n private add(component: ContainerComponent) {\n if (this.portals.has(component.id)) {\n throw new Error(`Component portal with id ${ component.id } already exists`);\n }\n const portal = new ComponentPortal(\n component.component,\n component.viewContainerRef,\n component.injector,\n component.componentFactoryResolver,\n );\n this.portals.set(component.id, portal);\n }\n\n private remove(component: ContainerComponent) {\n if (this.portals.has(component.id)) {\n const portal = this.portals.get(component.id)!;\n this.portals.delete(component.id);\n portal.detach();\n }\n }\n\n}\n","<div class=\"container\" fxLayout=\"column\" fxLayoutGap=\"16px\">\n\n <div *ngFor=\"let portalId of portals.keys(); trackBy: trackBy\" fxFlex=\"nogrow\">\n <ng-template [cdkPortalOutlet]=\"portals.get(portalId)\"></ng-template>\n </div>\n\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n} from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { NgIf } from '@angular/common';\nimport { MatButtonModule } from '@angular/material/button';\n\n@Component({\n selector: 'rxap-toggle-window-sidenav-button',\n templateUrl: './toggle-window-sidenav-button.component.html',\n styleUrls: [ './toggle-window-sidenav-button.component.scss' ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n host: {\n class: 'rxap-toggle-window-sidenav-button',\n },\n standalone: true,\n imports: [ MatButtonModule, NgIf, MatIconModule ],\n})\nexport class ToggleWindowSidenavButtonComponent {\n\n @Input()\n public openWindowSidenav = false;\n\n @Output()\n public openWindowSidenavChange = new EventEmitter<boolean>();\n\n public toggle() {\n this.openWindowSidenav = !this.openWindowSidenav;\n this.openWindowSidenavChange.emit(this.openWindowSidenav);\n }\n\n}\n","<div class=\"toggle-button\">\n <button (click)=\"toggle()\" mat-icon-button>\n <ng-template [ngIfElse]=\"hide\" [ngIf]=\"!openWindowSidenav\">\n <mat-icon>keyboard_arrow_left</mat-icon>\n </ng-template>\n <ng-template #hide>\n <mat-icon>keyboard_arrow_right</mat-icon>\n </ng-template>\n </button>\n</div>\n","import {\n Inject,\n Injectable,\n} from '@angular/core';\nimport {\n FooterService,\n HeaderService,\n} from '@rxap/services';\nimport {\n BehaviorSubject,\n combineLatest,\n Observable,\n} from 'rxjs';\nimport {\n map,\n tap,\n} from 'rxjs/operators';\n\n@Injectable({ providedIn: 'root' })\nexport class SidenavContentComponentService {\n\n public headerRows$ = new BehaviorSubject<number>(1);\n public footerRows$: Observable<number>;\n public innerHeight$: Observable<string>;\n public marginTop$: Observable<string>;\n public marginBottom$: Observable<string>;\n\n constructor(\n @Inject(FooterService) public readonly footerComponentService: FooterService,\n @Inject(HeaderService) public readonly headerComponentService: HeaderService,\n ) {\n this.headerRows$.next(this.headerComponentService.countComponent);\n\n this.footerComponentService.portalCount$.pipe().subscribe();\n\n this.footerRows$ = this.footerComponentService.portalCount$;\n\n this.headerComponentService.update$.pipe(\n tap(() => this.headerRows$.next(this.headerComponentService.countComponent)),\n ).subscribe();\n\n this.innerHeight$ = combineLatest([\n this.headerRows$,\n this.footerRows$,\n ]).pipe(\n map(([ headerRows, footerRows ]) => `calc(100% - ${ 64 * (headerRows + footerRows) }px)`),\n );\n\n this.marginTop$ = this.headerRows$.pipe(\n map(headerRows => `${ headerRows * 64 }px`),\n );\n\n this.marginBottom$ = this.footerRows$.pipe(\n map(footerRows => `${ footerRows * 64 }px`),\n );\n\n }\n\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n Input,\n} from '@angular/core';\nimport { Required } from '@rxap/utilities';\nimport { MatSidenav } from '@angular/material/sidenav';\nimport { SidenavContentComponentService } from './sidenav-content.component.service';\nimport { RouterOutlet } from '@angular/router';\nimport {\n AsyncPipe,\n NgClass,\n NgStyle,\n} from '@angular/common';\n\n@Component({\n selector: 'rxap-sidenav-content',\n templateUrl: './sidenav-content.component.html',\n styleUrls: [ './sidenav-content.component.scss' ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [ NgClass, NgStyle, RouterOutlet, AsyncPipe ],\n})\nexport class SidenavContentComponent {\n\n @Input() @Required public sidenav!: MatSidenav;\n\n constructor(public readonly sccs: SidenavContentComponentService) {\n }\n}\n","<div [ngClass]=\"{ 'open': (sidenav.openedChange | async) }\" [ngStyle]=\"{\n height: sccs.innerHeight$ | async,\n marginTop: sccs.marginTop$ | async,\n marginBottom: sccs.marginBottom$ | async\n}\" class=\"container\">\n <!-- <dx-breadcrumb></dx-breadcrumb>-->\n <div class=\"inner\">\n <router-outlet></router-outlet>\n <ng-content></ng-content>\n </div>\n</div>\n","import {\n Directive,\n Inject,\n TemplateRef,\n} from '@angular/core';\n\n@Directive({\n selector: '[rxapSidenavHeader]',\n standalone: true,\n})\nexport class SidenavHeaderDirective {\n constructor(\n @Inject(TemplateRef)\n public readonly template: TemplateRef<void>,\n ) {\n }\n}\n","import {\n Directive,\n Inject,\n TemplateRef,\n} from '@angular/core';\n\n@Directive({\n selector: '[rxapSidenavFooter]',\n standalone: true,\n})\nexport class SidenavFooterDirective {\n constructor(\n @Inject(TemplateRef)\n public readonly template: TemplateRef<void>,\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { ConfigService } from '@rxap/config';\n\n@Injectable({ providedIn: 'root' })\nexport class SidenavComponentService {\n\n public readonly collapsed$ = new BehaviorSubject(true);\n\n constructor(private readonly config: ConfigService) {\n this.collapsed$.next(this.config.get('navigation.collapsed', this.collapsed$.value));\n }\n\n public toggleNavigationCollapse(): void {\n this.collapsed$.next(!this.collapsed$.value);\n }\n\n}\n","import { IconConfig } from '@rxap/utilities';\nimport {\n AbstractType,\n InjectionToken,\n Type,\n} from '@angular/core';\nimport { Observable } from 'rxjs';\n\nexport type Navigation = Array<NavigationItem | NavigationDividerItem>;\n\nexport type NavigationWithInserts = Array<\n | NavigationItem<NavigationWithInserts>\n | NavigationDividerItem\n | NavigationInsertItem\n>;\n\nexport interface NavigationDividerItem {\n divider: boolean;\n title?: string;\n}\n\nexport function IsNavigationDividerItem(\n item: any,\n): item is NavigationDividerItem {\n return !!item && !!item['divider'];\n}\n\nexport interface NavigationInsertItem {\n insert: string;\n}\n\nexport function IsNavigationInsertItem(\n item: any,\n): item is NavigationInsertItem {\n return !!item && !!item['insert'];\n}\n\nexport interface NavigationStatus {\n isVisible(\n navigationItem: NavigationItem,\n ): Observable<boolean> | Promise<boolean> | boolean;\n}\n\nexport interface NavigationItem<Children = Navigation> extends Record<string, unknown> {\n routerLink: string[];\n label: string;\n children?: Children;\n icon?: IconConfig;\n status?: Array<\n | Type<NavigationStatus>\n | InjectionToken<NavigationStatus>\n | AbstractType<NavigationStatus>\n >;\n}\n\nexport function IsNavigationItem(item: any): item is NavigationItem {\n return (\n !!item && !!item['routerLink'] && !!item['label']\n );\n}\n","import type { Injector } from '@angular/core';\nimport {\n Inject,\n Injectable,\n INJECTOR,\n Optional,\n} from '@angular/core';\nimport {\n combineLatest,\n from,\n Observable,\n of,\n ReplaySubject,\n} from 'rxjs';\nimport {\n IsNavigationDividerItem,\n IsNavigationInsertItem,\n IsNavigationItem,\n Navigation,\n NavigationDividerItem,\n NavigationItem,\n NavigationWithInserts,\n} from './navigation-item';\nimport {\n RXAP_NAVIGATION_CONFIG,\n RXAP_NAVIGATION_CONFIG_INSERTS,\n} from '../tokens';\nimport {\n catchError,\n map,\n switchMap,\n} from 'rxjs/operators';\n\n@Injectable({ providedIn: 'root' })\nexport class NavigationService {\n public readonly config$: Observable<Navigation>;\n\n private inserts = new Map<string, NavigationWithInserts>();\n\n private readonly navigation: NavigationWithInserts;\n\n private readonly navigation$ = new ReplaySubject<Navigation>(1);\n\n constructor(\n @Inject(RXAP_NAVIGATION_CONFIG)\n navigation: any,\n @Inject(INJECTOR)\n private readonly injector: Injector,\n @Optional()\n @Inject(RXAP_NAVIGATION_CONFIG_INSERTS)\n inserts: any | null = null,\n ) {\n if (typeof navigation === 'function') {\n this.navigation = navigation();\n } else {\n this.navigation = navigation;\n }\n if (inserts) {\n Object.entries(inserts).forEach(([ id, insert ]: [ string, any ]) =>\n this.insert(id, insert, false),\n );\n }\n this.updateNavigation();\n this.config$ = this.navigation$.pipe(\n switchMap((navigationWithoutStatusCheck) =>\n this.checkNavigationStatusProviders(navigationWithoutStatusCheck),\n ),\n );\n }\n\n /**\n * @deprecated use add instead\n * @param id\n * @param value\n * @param update\n */\n public insert(\n id: string,\n value: NavigationWithInserts,\n update = true,\n ): void {\n this.add(id, value, update);\n }\n\n public add(\n id: string,\n value: NavigationWithInserts,\n update = true,\n ): void {\n this.inserts.set(id, value);\n if (update) {\n this.updateNavigation();\n }\n }\n\n public has(id: string): boolean {\n return this.inserts.has(id);\n }\n\n public get(id: string): NavigationWithInserts | undefined {\n return this.inserts.get(id);\n }\n\n public remove(id: string, update = true): void {\n this.inserts.delete(id);\n if (update) {\n this.updateNavigation();\n }\n }\n\n public updateNavigation(): void {\n this.navigation$.next(this.replaceInserts(this.navigation));\n }\n\n /**\n * @internal\n * @param navigationItem\n */\n public checkNavigationItemStatusProviders(\n navigationItem: NavigationItem | NavigationDividerItem,\n ): Observable<NavigationItem | NavigationDividerItem | null> {\n if (IsNavigationDividerItem(navigationItem) || !navigationItem.status) {\n return of(navigationItem);\n }\n const isVisibleArray$: Array<Observable<boolean>> = navigationItem.status\n .map((statusToken) => this.injector.get(\n statusToken))\n .map((status) => {\n const isVisible = status.isVisible(\n navigationItem);\n if (typeof isVisible === 'boolean') {\n return of(isVisible);\n } else {\n return from(isVisible);\n }\n })\n .map(isVisible$ => isVisible$.pipe(catchError(e => {\n console.error('isVisible method failed: ' +\n e.message);\n return of(false);\n })));\n // TODO : dont wait for all status services to complete, but cancel waiting if one returns false\n return combineLatest(isVisibleArray$).pipe(\n map((isVisibleArray) =>\n isVisibleArray.reduce((acc, isVisible) => acc && isVisible, true),\n ),\n map((isVisible) => (isVisible ? navigationItem : null)),\n switchMap((navigationItemOrNull) => {\n if (navigationItemOrNull) {\n if (navigationItemOrNull.children?.length) {\n return this.checkNavigationStatusProviders(\n navigationItemOrNull.children,\n ).pipe(\n map((children) => ({\n ...navigationItemOrNull,\n children,\n })),\n );\n }\n return of(navigationItemOrNull);\n }\n return of(null);\n }),\n );\n }\n\n /**\n * @internal\n * @param navigationItem\n */\n public checkNavigationStatusProviders(\n navigation: Navigation,\n ): Observable<Navigation> {\n return combineLatest(\n navigation.map((navigationItem) =>\n this.checkNavigationItemStatusProviders(navigationItem),\n ),\n ).pipe(\n map((navigationWithNullItems) => {\n const cleanNavigation: Navigation = [];\n\n for (const navigationItem of navigationWithNullItems) {\n if (navigationItem !== null) {\n cleanNavigation.push(navigationItem);\n }\n }\n\n return cleanNavigation;\n }),\n );\n }\n\n private replaceInserts(\n navigationWithInserts: NavigationWithInserts,\n ): Navigation {\n const navigation: Navigation = [];\n\n for (const navigationItem of navigationWithInserts) {\n if (IsNavigationInsertItem(navigationItem)) {\n if (this.inserts.has(navigationItem.insert)) {\n navigation.push(\n ...this.replaceInserts(this.inserts.get(navigationItem.insert)!),\n );\n }\n } else if (IsNavigationItem(navigationItem)) {\n navigation.push({\n ...navigationItem,\n children: this.replaceInserts(navigationItem.children ?? []),\n });\n } else if (IsNavigationDividerItem(navigationItem)) {\n navigation.push(navigationItem);\n }\n }\n\n return navigation;\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EmbeddedViewRef,\n forwardRef,\n HostBinding,\n HostListener,\n Inject,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Renderer2,\n SimpleChanges,\n TemplateRef,\n ViewChild,\n ViewContainerRef,\n ViewEncapsulation,\n} from '@angular/core';\nimport {\n DebounceCall,\n Required,\n} from '@rxap/utilities';\nimport {\n animate,\n style,\n transition,\n trigger,\n} from '@angular/animations';\nimport {\n Navigation,\n NavigationDividerItem,\n NavigationItem,\n} from '../navigation-item';\nimport {\n NavigationEnd,\n Router,\n RouterLink,\n RouterLinkActive,\n} from '@angular/router';\nimport { Subscription } from 'rxjs';\nimport {\n delay,\n distinctUntilChanged,\n filter,\n skip,\n startWith,\n tap,\n} from 'rxjs/operators';\nimport { SidenavComponentService } from '../../sidenav/sidenav.component.service';\nimport {\n Overlay,\n OverlayRef,\n} from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { FlexModule } from '@angular/flex-layout/flex';\nimport { NavigationComponent } from '../navigation.component';\nimport { IconDirective } from '@rxap/material-directives/icon';\nimport { MatIconModule } from '@angular/material/icon';\nimport {\n AsyncPipe,\n NgFor,\n NgIf,\n} from '@angular/common';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatRippleModule } from '@angular/material/core';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'li[rxap-navigation-item]',\n templateUrl: './navigation-item.component.html',\n styleUrls: [ './navigation-item.component.scss' ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n host: {\n class: 'rxap-navigation-item',\n },\n animations: [\n trigger('sub-nav', [\n transition(':enter', [\n style({\n display: 'block',\n height: '0',\n overflow: 'hidden',\n }),\n animate(150, style({ height: '*' })),\n ]),\n transition(':leave', [\n style({ overflow: 'hidden' }),\n animate(300, style({ height: '0' })),\n style({ display: 'none' }),\n ]),\n ]),\n ],\n standalone: true,\n imports: [\n RouterLinkActive,\n MatRippleModule,\n RouterLink,\n MatTooltipModule,\n NgIf,\n MatIconModule,\n IconDirective,\n forwardRef(() => NavigationComponent),\n FlexModule,\n NgFor,\n AsyncPipe,\n ],\n})\nexport class NavigationItemComponent\n implements OnChanges, AfterViewInit, OnDestroy, OnInit {\n public children: Navigation | null = null;\n\n @ViewChild(RouterLinkActive, { static: true })\n public routerLinkActive!: RouterLinkActive;\n\n @Input()\n @Required\n public item!: NavigationItem;\n\n @Input()\n public level = 0;\n\n @HostBinding('class.active')\n public isActive = false;\n\n @ViewChild('navigationOverlay')\n private _navigationOverlay!: TemplateRef<any>;\n\n private readonly _subscription = new Subscription();\n\n private _overlayRef?: OverlayRef;\n private _embeddedViewRef?: EmbeddedViewRef<any>;\n\n /**\n * indicates the mouse is over the\n */\n public lockeOverlay = false;\n\n constructor(\n @Inject(Router)\n private readonly router: Router,\n @Inject(SidenavComponentService)\n public readonly sidenav: SidenavComponentService,\n @Inject(ElementRef)\n private readonly elementRef: ElementRef,\n @Inject(Renderer2)\n private readonly renderer: Renderer2,\n @Inject(Overlay)\n private readonly overlay: Overlay,\n @Inject(ViewContainerRef)\n private readonly viewContainerRef: ViewContainerRef,\n ) {\n }\n\n public ngOnChanges(changes: SimpleChanges) {\n if (changes['item']) {\n const item: NavigationItem = changes['item'].currentValue;\n this.children =\n item.children && item.children.length ? item.children : null;\n }\n }\n\n public ngAfterViewInit() {\n this._subscription.add(\n this.router.events\n .pipe(\n filter((event) => event instanceof NavigationEnd),\n startWith(true),\n delay(100),\n tap(() => {\n if (this.routerLinkActive.isActive) {\n if (!this.sidenav.collapsed$.value) {\n // only close the overlay if sidenav collapsed\n this._overlayRef?.detach();\n }\n this.renderer.addClass(this.elementRef.nativeElement, 'active');\n } else {\n this.renderer.removeClass(\n this.elementRef.nativeElement,\n 'active',\n );\n }\n }),\n )\n .subscribe(),\n );\n }\n\n public ngOnInit() {\n // detach the navigation overlay if the sidenav collapsed\n // state is changed\n this._subscription.add(\n this.sidenav.collapsed$\n .pipe(\n skip(1),\n distinctUntilChanged(),\n tap(() => this._overlayRef?.detach()),\n )\n .subscribe(),\n );\n }\n\n public ngOnDestroy() {\n this._subscription?.unsubscribe();\n this._overlayRef?.dispose();\n }\n\n @HostListener('mouseenter')\n public onMouseenter() {\n if (this.children) {\n if (!this.routerLinkActive.isActive || this.sidenav.collapsed$.value) {\n if (!this._overlayRef) {\n this._overlayRef = this.overlay.create({\n positionStrategy: this.overlay\n .position()\n .flexibleConnectedTo(this.elementRef)\n .withPositions([\n {\n originY: 'top',\n originX: 'end',\n overlayY: 'top',\n overlayX: 'start',\n },\n ]),\n });\n }\n if (!this._overlayRef.hasAttached()) {\n this._embeddedViewRef = this._overlayRef.attach(\n new TemplatePortal(this._navigationOverlay, this.viewContainerRef),\n );\n }\n }\n }\n }\n\n @HostListener('mouseleave')\n @DebounceCall(100)\n public onMouseleave() {\n if (!this.lockeOverlay) {\n this._overlayRef?.detach();\n }\n }\n\n // region type save item property\n\n // required to check the type of the item property in the ngFor loop\n\n public isNavigationDividerItem(\n item: NavigationItem | NavigationDividerItem,\n ): item is NavigationDividerItem {\n return (item as any)['divider'];\n }\n\n public isNavigationItem(\n item: NavigationItem | NavigationDividerItem,\n ): item is NavigationItem {\n return !this.isNavigationDividerItem(item);\n }\n\n public asNavigationItem(\n item: NavigationItem | NavigationDividerItem,\n ): NavigationItem {\n if (!this.isNavigationItem(item)) {\n throw new Error('The item is not a NavigationItem');\n }\n return item;\n }\n\n // endregion\n}\n","<a [matTooltipDisabled]=\"(sidenav.collapsed$ | async) === false\"\n [matTooltip]=\"item.label\"\n [routerLink]=\"item.routerLink\"\n class=\"navigation-link mat-body-2 mat-body-strong navigation-level-{{level}}\"\n matRipple routerLinkActive=\"link-active\">\n <mat-icon *ngIf=\"item.icon\" [rxapIcon]=\"item.icon\" class=\"icon\"></mat-icon>\n <ng-template [ngIf]=\"(sidenav.collapsed$ | async) === false\">\n <span class=\"label\">{{ item.label }}</span>\n </ng-template>\n</a>\n\n<ul *ngIf=\"routerLinkActive.isActive && (sidenav.collapsed$ | async) === false && children\"\n [@sub-nav]\n [items]=\"children\"\n [level]=\"level + 1\"\n class=\"sub-items\"\n fxFlex=\"nogrow\"\n rxap-navigation\n>\n</ul>\n\n<ng-template #navigationOverlay>\n <div (mouseenter)=\"lockeOverlay = true\"\n (mouseleave)=\"lockeOverlay = false; onMouseleave()\" class=\"navigation-overlay-container mat-elevation-z1\">\n <ul>\n <li *ngFor=\"let child of children\">\n <a *ngIf=\"isNavigationItem(child)\" [routerLink]=\"asNavigationItem(child).routerLink\"\n class=\"navigation-link mat-subtitle-2 mat-body-strong\" matRipple>\n <mat-icon *ngIf=\"asNavigationItem(child).icon\" [rxapIcon]=\"asNavigationItem(child).icon\"\n class=\"icon\"></mat-icon>\n <span class=\"label\">{{ asNavigationItem(child).label }}</span>\n </a>\n </li>\n </ul>\n </div>\n</ng-template>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n HostBinding,\n Inject,\n Input,\n OnDestroy,\n OnInit,\n ViewEncapsulation,\n} from '@angular/core';\nimport {\n Navigation,\n NavigationDividerItem,\n NavigationItem,\n} from './navigation-item';\nimport {\n coerceBoolean,\n Required,\n} from '@rxap/utilities';\nimport { NavigationService } from './navigation.service';\nimport { Subscription } from 'rxjs';\nimport { tap } from 'rxjs/operators';\nimport { SidenavComponentService } from '../sidenav/sidenav.component.service';\nimport { NavigationItemComponent } from './navigation-item/navigation-item.component';\nimport { FlexModule } from '@angular/flex-layout/flex';\nimport { MatDividerModule } from '@angular/material/divider';\nimport {\n AsyncPipe,\n NgFor,\n NgIf,\n} from '@angular/common';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'ul[rxap-navigation]',\n templateUrl: './navigation.component.html',\n styleUrls: [ './navigation.component.scss' ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n host: { class: 'rxap-navigation' },\n standalone: true,\n imports: [\n NgFor,\n NgIf,\n MatDividerModule,\n FlexModule,\n NavigationItemComponent,\n AsyncPipe,\n ],\n})\nexport class NavigationComponent implements OnInit, OnDestroy {\n @HostBinding('class.rxap-root-navigation')\n public _root = false;\n\n @Input()\n public set root(value: boolean | '') {\n this._root = coerceBoolean(value);\n }\n\n @Input()\n @Required\n public items!: Navigation;\n\n public subscription?: Subscription;\n\n @Input()\n public level = 0;\n\n constructor(\n @Inject(NavigationService)\n private readonly navigationService: NavigationService,\n @Inject(ChangeDetectorRef)\n private readonly cdr: ChangeDetectorRef,\n @Inject(SidenavComponentService)\n public readonly sidenav: SidenavComponentService,\n ) {\n }\n\n public ngOnInit(): void {\n if (this._root) {\n this.items = [];\n this.subscription = this.navigationService.config$\n .pipe(\n tap((navigation) => (this.items = navigation)),\n tap(() => this.cdr.detectChanges()),\n )\n .subscribe();\n }\n }\n\n public ngOnDestroy() {\n this.subscription?.unsubscribe();\n }\n\n // region type save item property\n\n // required to check the type of the item property in the ngFor loop\n\n public isNavigationDividerItem(\n item: NavigationItem | NavigationDividerItem,\n ): item is NavigationDividerItem {\n return (item as any)['divider'];\n }\n\n public isNavigationItem(\n item: NavigationItem | NavigationDividerItem,\n ): item is NavigationItem {\n return !this.isNavigationDividerItem(item);\n }\n\n public asNavigationItem(\n item: NavigationItem | NavigationDividerItem,\n ): NavigationItem {\n if (!this.isNavigationItem(item)) {\n throw new Error('The item is not a NavigationItem');\n }\n return item;\n }\n\n // endregion\n}\n","<ng-template [ngForOf]=\"items\" let-item ngFor>\n <ng-template [ngIf]=\"isNavigationDividerItem(item)\">\n <mat-divider fxFlex=\"nogrow\"></mat-divider>\n <div *ngIf=\"(sidenav.collapsed$ | async) === false\" class=\"divider-title\" fxFlex=\"nogrow\" fxLayout=\"row\"\n fxLayoutAlign=\"start end\">\n <span *ngIf=\"item.title\" fxFlex=\"nogrow\">{{item.title}}</span>\n </div>\n </ng-template>\n <ng-template [ngIf]=\"isNavigationItem(item)\">\n <li [item]=\"asNavigationItem(item)\" [level]=\"level\" class=\"item\" rxap-navigation-item></li>\n </ng-template>\n</ng-template>\n","import {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n} from '@angular/core';\nimport { SidenavFooterDirective } from './sidenav-footer.directive';\nimport { SidenavHeaderDirective } from './sidenav-header.directive';\nimport { SidenavComponentService } from './sidenav.component.service';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { NavigationComponent } from '../navigation/navigation.component';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { FlexModule } from '@angular/flex-layout/flex';\nimport {\n AsyncPipe,\n NgClass,\n NgIf,\n NgTemplateOutlet,\n} from '@angular/common';\nimport { ExtendedModule } from '@angular/flex-layout/extended';\n\n@Component({\n selector: 'rxap-sidenav',\n templateUrl: './sidenav.component.html',\n styleUrls: [ './sidenav.component.scss' ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n host: {\n class: 'rxap-layout-sidenav',\n },\n standalone: true,\n imports: [\n ExtendedModule,\n NgClass,\n FlexModule,\n NgIf,\n NgTemplateOutlet,\n MatDividerModule,\n NavigationComponent,\n MatButtonModule,\n MatIconModule,\n AsyncPipe,\n ],\n})\nexport class SidenavComponent {\n\n @ContentChild(SidenavFooterDirective)\n public sidenavFooterDirective?: SidenavFooterDirective;\n\n @ContentChild(SidenavHeaderDirective)\n public sidenavHeaderDirective?: SidenavHeaderDirective;\n\n constructor(public readonly sidenav: SidenavComponentService) {\n }\n\n}\n","<div [ngClass]=\"{ 'collapsed': sidenav.collapsed$ | async }\" class=\"container\">\n <div class=\"inner\"\n fxLayout=\"column\"\n fxLayoutAlign=\"space-between stretch\">\n <ng-template [ngIf]=\"sidenavHeaderDirective?.template\">\n <div [fxHide]=\"sidenav.collapsed$ | async\" class=\"header\" fxFlex=\"nogrow\">\n <ng-container *ngTemplateOutlet=\"sidenavHeaderDirective?.template ?? null\"></ng-container>\n </div>\n <mat-divider [fxHide]=\"sidenav.collapsed$ | async\" fxFlex=\"nogrow\"></mat-divider>\n </ng-template>\n <div class=\"nav-container\" fxFlex=\"grow\">\n <ul fxLayout=\"column\" root rxap-navigation></ul>\n </div>\n <mat-divider fxFlex=\"nogrow\"></mat-divider>\n <button (click)=\"sidenav.toggleNavigationCollapse()\" [ngClass]=\"{ 'collapsed': sidenav.collapsed$ | async }\"\n class=\"sidebar-toggle\"\n fxFlex=\"nogrow\"\n mat-button>\n <span class=\"sidebar-toggle-inner\" fxLayout=\"row\" fxLayoutAlign=\"start center\" fxLayoutGap=\"16px\">\n <mat-icon class=\"arrow\" fxFlex=\"nogrow\">double_arrow</mat-icon>\n <span [fxHide]=\"sidenav.collapsed$ | async\" class=\"label\" fxFlex=\"grow\" i18n>Collapse sidebar</span>\n </span>\n </button>\n <ng-template [ngIf]=\"sidenavFooterDirective?.template ?? null\">\n <mat-divider [fxHide]=\"sidenav.collapsed$ | async\" fxFlex=\"nogrow\"></mat-divider>\n <div [fxHide]=\"sidenav.collapsed$ | async\" class=\"footer\" fxFlex=\"nogrow\">\n <ng-container *ngTemplateOutlet=\"sidenavFooterDirective?.template ?? null\"></ng-container>\n </div>\n </ng-template>\n </div>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n ViewChild,\n} from '@angular/core';\nimport { LayoutComponentService } from './layout.component.service';\nimport {\n MatSidenav,\n MatSidenavModule,\n} from '@angular/material/sidenav';\nimport { AsyncPipe } from '@angular/common';\nimport { FooterComponent } from '../footer/footer.component';\nimport { WindowContainerSidenavComponent } from '../window-container-sidenav/window-container-sidenav.component';\nimport { ToggleWindowSidenavButtonComponent } from '../toggle-window-sidenav-button/toggle-window-sidenav-button.component';\nimport { SidenavContentComponent } from '../sidenav-content/sidenav-content.component';\nimport { RouterLink } from '@angular/router';\nimport { SidenavHeaderDirective } from '../sidenav/sidenav-header.directive';\nimport { SidenavComponent } from '../sidenav/sidenav.component';\nimport { HeaderComponent } from '../header/header.component';\n\n@Component({\n selector: 'rxap-layout',\n templateUrl: './layout.component.html',\n styleUrls: [ './layout.component.scss' ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n HeaderComponent,\n MatSidenavModule,\n SidenavComponent,\n SidenavHeaderDirective,\n RouterLink,\n SidenavContentComponent,\n ToggleWindowSidenavButtonComponent,\n WindowContainerSidenavComponent,\n FooterComponent,\n AsyncPipe,\n ],\n})\nexport class LayoutComponent {\n\n public openWindowSidenav = false;\n\n @ViewChild(MatSidenav, { static: true }) public sidenav!: MatSidenav;\n\n constructor(\n public readonly layoutComponentService: LayoutComponentService,\n ) {\n }\n\n}\n","<rxap-header [sidenav]=\"sidenav\" class=\"header\"></rxap-header>\n<mat-sidenav-container autosize class=\"container\">\n <mat-sidenav\n [fixedBottomGap]=\"layoutComponentService.fixedBottomGap$ | async\"\n [fixedInViewport]=\"true\"\n [fixedTopGap]=\"layoutComponentService.fixedTopGap$ | async\"\n [mode]=\"(layoutComponentService.mode$ | async) ?? 'side'\"\n [opened]=\"(layoutComponentService.opened$ | async) ?? true\"\n class=\"sidenav\"\n >\n <rxap-sidenav>\n <ng-template rxapSidenavHeader>\n <img\n [routerLink]=\"['/']\"\n [src]=\"layoutComponentService.logo.src\"\n [width]=\"layoutComponentService.logo.width\"\n alt=\"logo\"\n class=\"logo\"\n />\n </ng-template>\n </rxap-sidenav>\n </mat-sidenav>\n <mat-sidenav-content class=\"content\">\n <rxap-sidenav-content [sidenav]=\"sidenav\">\n <ng-content></ng-content>\n <rxap-toggle-window-sidenav-button\n [(openWindowSidenav)]=\"openWindowSidenav\"></rxap-toggle-window-sidenav-button>\n </rxap-sidenav-content>\n </mat-sidenav-content>\n <mat-sidenav\n [fixedBottomGap]=\"layoutComponentService.fixedBottomGap$ | async\"\n [fixedInViewport]=\"true\"\n [fixedTopGap]=\"layoutComponentService.fixedTopGap$ | async\"\n [opened]=\"openWindowSidenav\"\n class=\"window-container-sidenav\"\n mode=\"side\"\n position=\"end\"\n >\n <rxap-window-container-sidenav></rxap-window-container-sidenav>\n </mat-sidenav>\n</mat-sidenav-container>\n<rxap-footer class=\"footer\"></rxap-footer>\n","import {\n ModuleWithProviders,\n NgModule,\n} from '@angular/core';\nimport { LayoutComponent } from './layout.component';\n\n\nimport { NavigationWithInserts } from '../navigation/navigation-item';\nimport { RXAP_NAVIGATION_CONFIG } from '../tokens';\n\n@NgModule({\n imports: [\n LayoutComponent,\n ],\n exports: [ LayoutComponent ],\n})\nexport class LayoutModule {\n\n public static withNavigation(navigation: NavigationWithInserts | (() => NavigationWithInserts)): ModuleWithProviders<LayoutModule> {\n\n return {\n ngModule: LayoutModule,\n providers: [\n {\n provide: RXAP_NAVIGATION_CONFIG,\n useValue: navigation,\n },\n ],\n };\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport {\n Observable,\n of,\n} from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class ReplaceRouterPathsService {\n\n public transform(routerLink: string[]): Observable<string[]> {\n return of(routerLink);\n }\n\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n Inject,\n OnDestroy,\n OnInit,\n} from '@angular/core';\nimport {\n Version,\n VersionService,\n} from '@rxap/services';\nimport {\n KeyValue,\n Required,\n} from '@rxap/utilities';\nimport { tap } from 'rxjs/operators';\nimport { Subscription } from 'rxjs';\nimport {\n KeyValuePipe,\n NgFor,\n} from '@angular/common';\nimport { FlexModule } from '@angular/flex-layout/flex';\n\n@Component({\n selector: 'rxap-version',\n templateUrl: './version.component.html',\n styleUrls: [ './version.component.scss' ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [ FlexModule, NgFor, KeyValuePipe ],\n})\nexport class VersionComponent implements OnInit, OnDestroy {\n\n @Required\n public modules!: KeyValue<Version>;\n\n private subscription?: Subscription;\n\n constructor(\n @Inject(VersionService) private version: VersionService,\n ) {\n }\n\n public ngOnInit(): void {\n this.modules = this.version.get();\n this.subscription = this.version.update$.pipe(\n tap(() => this.modules = this.version.get()),\n ).subscribe();\n }\n\n public ngOnDestroy() {\n this.subscription?.unsubscribe();\n }\n\n}\n","<div class=\"version\" fxFlex=\"nogrow\" fxLayout=\"column\" fxLayoutAlign=\"start start\" fxLayoutGap=\"8px\">\n <div *ngFor=\"let module of modules | keyvalue\" fxFlex=\"nogrow\" fxLayout=\"column\">\n <span class=\"name\" fxFlex=\"nogrow\">{{module.value.name}}</span>\n <span class=\"semantic\" fxFlex=\"nogrow\">{{module.value.semantic}}</span>\n <span class=\"hash\" fxFlex=\"nogrow\">{{module.value.hash}}</span>\n </div>\n</div>\n","import {\n Directive,\n Inject,\n OnDestroy,\n OnInit,\n TemplateRef,\n ViewContainerRef,\n} from '@angular/core';\nimport { FooterService } from '@rxap/services';\nimport { TemplatePortal } from '@angular/cdk/portal';\n\n@Directive({\n selector: '[rxapFooter]',\n standalone: true,\n})\nexport class FooterDirective implements OnInit, OnDestroy {\n private _portal?: TemplatePortal<void>;\n\n constructor(\n @Inject(FooterService)\n private readonly footerService: FooterService,\n @Inject(TemplateRef)\n private readonly template: TemplateRef<void>,\n @Inject(ViewContainerRef)\n private readonly viewContainerRef: ViewContainerRef,\n ) {\n }\n\n public ngOnInit() {\n this._portal = new TemplatePortal<void>(\n this.template,\n this.viewContainerRef,\n );\n this.footerService.pushPortal(this._portal);\n }\n\n public ngOnDestroy() {\n if (this._portal) {\n this.footerService.removePortal(this._portal);\n }\n }\n}\n\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2","i3","i4","i5","i6","i1.SidenavContentComponentService","i1.SidenavComponentService","i1.LayoutComponentService"],"mappings":"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"}
package/package.json CHANGED
@@ -1,21 +1,21 @@
1
1
  {
2
2
  "name": "@rxap/layout",
3
- "version": "16.0.0-dev.3",
3
+ "version": "16.0.0-dev.5",
4
4
  "peerDependencies": {
5
- "@angular/animations": "^16.0.0",
6
- "@angular/cdk": "^16.0.0",
7
- "@angular/common": "^16.0.0",
8
- "@angular/core": "^16.0.0",
5
+ "@angular/animations": "^16.1.4",
6
+ "@angular/cdk": "^16.1.4",
7
+ "@angular/common": "^16.1.4",
8
+ "@angular/core": "^16.1.4",
9
9
  "@angular/flex-layout": "^15.0.0-beta.42",
10
- "@angular/forms": "^16.0.0",
11
- "@angular/material": "^16.0.0",
12
- "@angular/router": "^16.0.0",
13
- "@rxap/authentication": "^16.0.0-dev.3",
14
- "@rxap/config": "^16.0.0-dev.3",
15
- "@rxap/directives": "^16.0.0-dev.3",
16
- "@rxap/material-directives": "^16.0.0-dev.3",
10
+ "@angular/forms": "^16.1.4",
11
+ "@angular/material": "^16.1.4",
12
+ "@angular/router": "^16.1.4",
13
+ "@rxap/authentication": "^16.0.0-dev.4",
14
+ "@rxap/config": "^16.0.0-dev.4",
15
+ "@rxap/directives": "^16.0.0-dev.4",
16
+ "@rxap/material-directives": "^16.0.0-dev.4",
17
17
  "@rxap/rxjs": "^1.0.1-dev.0",
18
- "@rxap/services": "^16.0.0-dev.3",
18
+ "@rxap/services": "^16.0.0-dev.4",
19
19
  "@rxap/utilities": "^16.0.0-dev.2",
20
20
  "rxjs": "^7.8.0",
21
21
  "workspace": "1.0.0",
@@ -53,19 +53,19 @@
53
53
  "packageGroup": [
54
54
  {
55
55
  "package": "@rxap/authentication",
56
- "version": "16.0.0-dev.3"
56
+ "version": "16.0.0-dev.4"
57
57
  },
58
58
  {
59
59
  "package": "@rxap/config",
60
- "version": "16.0.0-dev.3"
60
+ "version": "16.0.0-dev.4"
61
61
  },
62
62
  {
63
63
  "package": "@rxap/directives",
64
- "version": "16.0.0-dev.3"
64
+ "version": "16.0.0-dev.4"
65
65
  },
66
66
  {
67
67
  "package": "@rxap/material-directives",
68
- "version": "16.0.0-dev.3"
68
+ "version": "16.0.0-dev.4"
69
69
  },
70
70
  {
71
71
  "package": "@rxap/rxjs",
@@ -73,7 +73,7 @@
73
73
  },
74
74
  {
75
75
  "package": "@rxap/services",
76
- "version": "16.0.0-dev.3"
76
+ "version": "16.0.0-dev.4"
77
77
  },
78
78
  {
79
79
  "package": "@rxap/utilities",
@@ -81,6 +81,7 @@
81
81
  }
82
82
  ]
83
83
  },
84
+ "gitHead": "580c15a45d4c9b187cef138c9cfe0d7e9bbfee3f",
84
85
  "module": "fesm2022/rxap-layout.mjs",
85
86
  "typings": "index.d.ts",
86
87
  "exports": {