@onecx/shell-core 4.16.0 → 4.17.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,11 +1,11 @@
1
1
  import { __decorate, __metadata } from "tslib";
2
2
  import { HttpClient } from '@angular/common/http';
3
- import { Component, HostListener, Renderer2 } from '@angular/core';
4
- import { NavigationEnd, Router, RoutesRecognized } from '@angular/router';
3
+ import { Component, HostListener, Inject, InjectionToken, Optional, Renderer2, } from '@angular/core';
4
+ import { Router } from '@angular/router';
5
5
  import { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';
6
6
  import { AppStateService, PortalMessageService, ThemeService, UserService, } from '@onecx/angular-integration-interface';
7
7
  import { MessageService, PrimeNGConfig } from 'primeng/api';
8
- import { bufferCount, combineLatest, filter, first, map, mergeMap, of, startWith } from 'rxjs';
8
+ import { filter, first, map, mergeMap, of } from 'rxjs';
9
9
  import * as i0 from "@angular/core";
10
10
  import * as i1 from "primeng/api";
11
11
  import * as i2 from "@onecx/angular-integration-interface";
@@ -17,8 +17,9 @@ import * as i7 from "primeng/toast";
17
17
  import * as i8 from "../portal-header/header.component";
18
18
  import * as i9 from "../portal-footer/portal-footer.component";
19
19
  import * as i10 from "../error-component/global-error.component";
20
+ export const SHOW_CONTENT_PROVIDER = new InjectionToken('SHOW_CONTENT_PROVIDER');
20
21
  let PortalViewportComponent = class PortalViewportComponent {
21
- constructor(renderer, primengConfig, messageService, appStateService, portalMessageService, userService, themeService, httpClient, router) {
22
+ constructor(renderer, primengConfig, messageService, appStateService, portalMessageService, userService, themeService, httpClient, router, showContentProvider) {
22
23
  this.renderer = renderer;
23
24
  this.primengConfig = primengConfig;
24
25
  this.messageService = messageService;
@@ -28,6 +29,7 @@ let PortalViewportComponent = class PortalViewportComponent {
28
29
  this.themeService = themeService;
29
30
  this.httpClient = httpClient;
30
31
  this.router = router;
32
+ this.showContentProvider = showContentProvider;
31
33
  this.menuButtonTitle = '';
32
34
  this.menuActive = true;
33
35
  this.topbarTheme = 'var';
@@ -37,26 +39,6 @@ let PortalViewportComponent = class PortalViewportComponent {
37
39
  this.inputStyle = 'outline';
38
40
  this.ripple = true;
39
41
  this.isMobile = false;
40
- this.showContent$ = combineLatest([
41
- this.appStateService.globalLoading$.asObservable().pipe(startWith(true, true), bufferCount(3, 1)),
42
- this.router.events
43
- .pipe(filter((e) => e instanceof NavigationEnd || e instanceof RoutesRecognized))
44
- .pipe(startWith({ url: undefined }), bufferCount(3, 1)),
45
- ]).pipe(map(([[beforeLastGlobalLoading, lastGlobalLoading, globalLoading], [beforeLastEvent, lastEvent, event]]) => {
46
- if (!lastGlobalLoading && globalLoading) {
47
- return false;
48
- }
49
- if (beforeLastGlobalLoading) {
50
- return true;
51
- }
52
- if (!beforeLastEvent.url) {
53
- return false;
54
- }
55
- if (lastEvent.url !== event.url) {
56
- return false;
57
- }
58
- return true;
59
- }));
60
42
  this.portalMessageService.message$.subscribe((message) => this.messageService.add(message));
61
43
  this.userService.profile$.pipe(untilDestroyed(this)).subscribe((profile) => {
62
44
  this.menuMode =
@@ -130,8 +112,8 @@ let PortalViewportComponent = class PortalViewportComponent {
130
112
  return this.isHorizontalMenuMode();
131
113
  }
132
114
  };
133
- PortalViewportComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PortalViewportComponent, deps: [{ token: i0.Renderer2 }, { token: i1.PrimeNGConfig }, { token: i1.MessageService }, { token: i2.AppStateService }, { token: i2.PortalMessageService }, { token: i2.UserService }, { token: i2.ThemeService }, { token: i3.HttpClient }, { token: i4.Router }], target: i0.ɵɵFactoryTarget.Component });
134
- PortalViewportComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: PortalViewportComponent, selector: "ocx-shell-portal-viewport", host: { listeners: { "window:resize": "onResize()" } }, ngImport: i0, template: "<div\n *ngIf=\"!globalErrMsg; else globalError\"\n class=\"layout-wrapper\"\n [ngClass]=\"{\n 'p-input-filled': inputStyle === 'filled', \n 'p-ripple-disabled': !ripple,\n 'layout-menu-active': isStaticalMenuVisible(),\n 'layout-menu-button-hidden': isHorizontalMenuMode()\n }\"\n [class]=\"'layout-menu-' + colorScheme + ' layout-topbar-' + topbarTheme\"\n>\n <ocx-shell-header\n [menuButtonTitle]=\"menuButtonTitle\"\n (menuButtonClick)=\"onMenuButtonClick($event)\"\n >\n <ocx-slot name=\"horizontalMenu\" *ngIf=\"isHorizontalMenuVisible()\"></ocx-slot>\n \n </ocx-shell-header>\n\n <p-toast></p-toast>\n\n <div class=\"menu-wrapper\">\n <div class=\"layout-menu-container\" *ngIf=\"isStaticalMenuVisible()\">\n <ocx-slot name=\"menu\"></ocx-slot>\n </div>\n </div>\n \n <div class=\"layout-main\">\n <div class=\"layout-content relative\">\n <ocx-slot name=\"subHeader\"></ocx-slot>\n <ng-container *ngIf=\"showContent$ | async\">\n <ng-content></ng-content>\n <router-outlet></router-outlet>\n </ng-container>\n </div>\n \n <ocx-shell-footer></ocx-shell-footer>\n </div>\n \n <div *ngIf=\"menuActive || !!activeTopbarItem\" class=\"layout-mask modal-in\"></div>\n</div>\n\n<ng-template #globalError>\n <ocx-shell-error [errCode]=\"globalErrMsg\"></ocx-shell-error>\n</ng-template>", styles: [""], dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "component", type: i6.SlotComponent, selector: "ocx-slot[name]", inputs: ["name"] }, { kind: "component", type: i7.Toast, selector: "p-toast", inputs: ["key", "autoZIndex", "baseZIndex", "style", "styleClass", "position", "preventOpenDuplicates", "preventDuplicates", "showTransformOptions", "hideTransformOptions", "showTransitionOptions", "hideTransitionOptions", "breakpoints"], outputs: ["onClose"] }, { kind: "component", type: i8.HeaderComponent, selector: "ocx-shell-header", inputs: ["menuButtonTitle", "fullPortalLayout", "homeNavUrl", "homeNavTitle"], outputs: ["menuButtonClick"] }, { kind: "component", type: i9.PortalFooterComponent, selector: "ocx-shell-footer" }, { kind: "component", type: i10.GlobalErrorComponent, selector: "ocx-shell-error", inputs: ["errCode"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }] });
115
+ PortalViewportComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PortalViewportComponent, deps: [{ token: i0.Renderer2 }, { token: i1.PrimeNGConfig }, { token: i1.MessageService }, { token: i2.AppStateService }, { token: i2.PortalMessageService }, { token: i2.UserService }, { token: i2.ThemeService }, { token: i3.HttpClient }, { token: i4.Router }, { token: SHOW_CONTENT_PROVIDER, optional: true }], target: i0.ɵɵFactoryTarget.Component });
116
+ PortalViewportComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: PortalViewportComponent, selector: "ocx-shell-portal-viewport", host: { listeners: { "window:resize": "onResize()" } }, ngImport: i0, template: "<div\n *ngIf=\"!globalErrMsg; else globalError\"\n class=\"layout-wrapper\"\n [ngClass]=\"{\n 'p-input-filled': inputStyle === 'filled', \n 'p-ripple-disabled': !ripple,\n 'layout-menu-active': isStaticalMenuVisible(),\n 'layout-menu-button-hidden': isHorizontalMenuMode()\n }\"\n [class]=\"'layout-menu-' + colorScheme + ' layout-topbar-' + topbarTheme\"\n>\n <ocx-shell-header [menuButtonTitle]=\"menuButtonTitle\" (menuButtonClick)=\"onMenuButtonClick($event)\">\n <ocx-slot name=\"horizontalMenu\" *ngIf=\"isHorizontalMenuVisible()\"></ocx-slot>\n </ocx-shell-header>\n\n <p-toast></p-toast>\n\n <div class=\"menu-wrapper\">\n <div class=\"layout-menu-container\" *ngIf=\"isStaticalMenuVisible()\">\n <ocx-slot name=\"menu\"></ocx-slot>\n </div>\n </div>\n\n <div class=\"layout-main\">\n <div class=\"layout-content relative\">\n <ocx-slot name=\"subHeader\"></ocx-slot>\n <ng-container *ngIf=\"!showContentProvider || (showContentProvider.showContent$ | async)\">\n <ng-content></ng-content>\n <router-outlet></router-outlet>\n </ng-container>\n </div>\n\n <ocx-shell-footer></ocx-shell-footer>\n </div>\n\n <div *ngIf=\"menuActive || !!activeTopbarItem\" class=\"layout-mask modal-in\"></div>\n</div>\n\n<ng-template #globalError>\n <ocx-shell-error [errCode]=\"globalErrMsg\"></ocx-shell-error>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "component", type: i6.SlotComponent, selector: "ocx-slot[name]", inputs: ["name"] }, { kind: "component", type: i7.Toast, selector: "p-toast", inputs: ["key", "autoZIndex", "baseZIndex", "style", "styleClass", "position", "preventOpenDuplicates", "preventDuplicates", "showTransformOptions", "hideTransformOptions", "showTransitionOptions", "hideTransitionOptions", "breakpoints"], outputs: ["onClose"] }, { kind: "component", type: i8.HeaderComponent, selector: "ocx-shell-header", inputs: ["menuButtonTitle", "fullPortalLayout", "homeNavUrl", "homeNavTitle"], outputs: ["menuButtonClick"] }, { kind: "component", type: i9.PortalFooterComponent, selector: "ocx-shell-footer" }, { kind: "component", type: i10.GlobalErrorComponent, selector: "ocx-shell-error", inputs: ["errCode"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }] });
135
117
  PortalViewportComponent = __decorate([
136
118
  UntilDestroy(),
137
119
  __metadata("design:paramtypes", [Renderer2,
@@ -142,14 +124,19 @@ PortalViewportComponent = __decorate([
142
124
  UserService,
143
125
  ThemeService,
144
126
  HttpClient,
145
- Router])
127
+ Router, Object])
146
128
  ], PortalViewportComponent);
147
129
  export { PortalViewportComponent };
148
130
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PortalViewportComponent, decorators: [{
149
131
  type: Component,
150
- args: [{ selector: 'ocx-shell-portal-viewport', template: "<div\n *ngIf=\"!globalErrMsg; else globalError\"\n class=\"layout-wrapper\"\n [ngClass]=\"{\n 'p-input-filled': inputStyle === 'filled', \n 'p-ripple-disabled': !ripple,\n 'layout-menu-active': isStaticalMenuVisible(),\n 'layout-menu-button-hidden': isHorizontalMenuMode()\n }\"\n [class]=\"'layout-menu-' + colorScheme + ' layout-topbar-' + topbarTheme\"\n>\n <ocx-shell-header\n [menuButtonTitle]=\"menuButtonTitle\"\n (menuButtonClick)=\"onMenuButtonClick($event)\"\n >\n <ocx-slot name=\"horizontalMenu\" *ngIf=\"isHorizontalMenuVisible()\"></ocx-slot>\n \n </ocx-shell-header>\n\n <p-toast></p-toast>\n\n <div class=\"menu-wrapper\">\n <div class=\"layout-menu-container\" *ngIf=\"isStaticalMenuVisible()\">\n <ocx-slot name=\"menu\"></ocx-slot>\n </div>\n </div>\n \n <div class=\"layout-main\">\n <div class=\"layout-content relative\">\n <ocx-slot name=\"subHeader\"></ocx-slot>\n <ng-container *ngIf=\"showContent$ | async\">\n <ng-content></ng-content>\n <router-outlet></router-outlet>\n </ng-container>\n </div>\n \n <ocx-shell-footer></ocx-shell-footer>\n </div>\n \n <div *ngIf=\"menuActive || !!activeTopbarItem\" class=\"layout-mask modal-in\"></div>\n</div>\n\n<ng-template #globalError>\n <ocx-shell-error [errCode]=\"globalErrMsg\"></ocx-shell-error>\n</ng-template>" }]
151
- }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i1.PrimeNGConfig }, { type: i1.MessageService }, { type: i2.AppStateService }, { type: i2.PortalMessageService }, { type: i2.UserService }, { type: i2.ThemeService }, { type: i3.HttpClient }, { type: i4.Router }]; }, propDecorators: { onResize: [{
132
+ args: [{ selector: 'ocx-shell-portal-viewport', template: "<div\n *ngIf=\"!globalErrMsg; else globalError\"\n class=\"layout-wrapper\"\n [ngClass]=\"{\n 'p-input-filled': inputStyle === 'filled', \n 'p-ripple-disabled': !ripple,\n 'layout-menu-active': isStaticalMenuVisible(),\n 'layout-menu-button-hidden': isHorizontalMenuMode()\n }\"\n [class]=\"'layout-menu-' + colorScheme + ' layout-topbar-' + topbarTheme\"\n>\n <ocx-shell-header [menuButtonTitle]=\"menuButtonTitle\" (menuButtonClick)=\"onMenuButtonClick($event)\">\n <ocx-slot name=\"horizontalMenu\" *ngIf=\"isHorizontalMenuVisible()\"></ocx-slot>\n </ocx-shell-header>\n\n <p-toast></p-toast>\n\n <div class=\"menu-wrapper\">\n <div class=\"layout-menu-container\" *ngIf=\"isStaticalMenuVisible()\">\n <ocx-slot name=\"menu\"></ocx-slot>\n </div>\n </div>\n\n <div class=\"layout-main\">\n <div class=\"layout-content relative\">\n <ocx-slot name=\"subHeader\"></ocx-slot>\n <ng-container *ngIf=\"!showContentProvider || (showContentProvider.showContent$ | async)\">\n <ng-content></ng-content>\n <router-outlet></router-outlet>\n </ng-container>\n </div>\n\n <ocx-shell-footer></ocx-shell-footer>\n </div>\n\n <div *ngIf=\"menuActive || !!activeTopbarItem\" class=\"layout-mask modal-in\"></div>\n</div>\n\n<ng-template #globalError>\n <ocx-shell-error [errCode]=\"globalErrMsg\"></ocx-shell-error>\n</ng-template>\n" }]
133
+ }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i1.PrimeNGConfig }, { type: i1.MessageService }, { type: i2.AppStateService }, { type: i2.PortalMessageService }, { type: i2.UserService }, { type: i2.ThemeService }, { type: i3.HttpClient }, { type: i4.Router }, { type: undefined, decorators: [{
134
+ type: Optional
135
+ }, {
136
+ type: Inject,
137
+ args: [SHOW_CONTENT_PROVIDER]
138
+ }] }]; }, propDecorators: { onResize: [{
152
139
  type: HostListener,
153
140
  args: ['window:resize']
154
141
  }] } });
155
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9ydGFsLXZpZXdwb3J0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2hlbGwtY29yZS9zcmMvbGliL2NvbXBvbmVudHMvcG9ydGFsLXZpZXdwb3J0L3BvcnRhbC12aWV3cG9ydC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NoZWxsLWNvcmUvc3JjL2xpYi9jb21wb25lbnRzL3BvcnRhbC12aWV3cG9ydC9wb3J0YWwtdmlld3BvcnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQTtBQUNqRCxPQUFPLEVBQWlCLFNBQVMsRUFBRSxZQUFZLEVBQXFCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUNwRyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQ3pFLE9BQU8sRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUJBQXVCLENBQUE7QUFDcEUsT0FBTyxFQUNMLGVBQWUsRUFFZixvQkFBb0IsRUFDcEIsWUFBWSxFQUNaLFdBQVcsR0FDWixNQUFNLHNDQUFzQyxDQUFBO0FBQzdDLE9BQU8sRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQzNELE9BQU8sRUFDTCxXQUFXLEVBQ1gsYUFBYSxFQUNiLE1BQU0sRUFDTixLQUFLLEVBQ0wsR0FBRyxFQUNILFFBQVEsRUFDUixFQUFFLEVBQ0YsU0FBUyxFQUNWLE1BQU0sTUFBTSxDQUFBOzs7Ozs7Ozs7Ozs7QUFRTixJQUFNLHVCQUF1QixHQUE3QixNQUFNLHVCQUF1QjtJQTRDbEMsWUFDVSxRQUFtQixFQUNuQixhQUE0QixFQUM1QixjQUE4QixFQUMvQixlQUFnQyxFQUMvQixvQkFBMEMsRUFDMUMsV0FBd0IsRUFD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QUEyRTtRQUMzRSxJQUFJLFFBQVEsS0FBSyxJQUFJLENBQUMsUUFBUTtZQUFFLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxRQUFRLENBQUE7UUFDM0QsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUE7SUFDMUIsQ0FBQztJQUVELG9CQUFvQjtRQUNsQixPQUFPLElBQUksQ0FBQyxRQUFRLEtBQUssWUFBWSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQTtJQUN6RCxDQUFDO0lBRUQscUJBQXFCO1FBQ25CLE9BQU8sSUFBSSxDQUFDLFVBQVUsSUFBSSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFBO0lBQ3hELENBQUM7SUFFRCx1QkFBdUI7UUFDckIsT0FBTyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQTtJQUNwQyxDQUFDOztxSEFoSlUsdUJBQXVCO3lHQUF2Qix1QkFBdUIseUhDN0JwQyxrMkNBNENjO0FEZkQsdUJBQXVCO0lBRG5DLFlBQVksRUFBRTtxQ0E4Q08sU0FBUztRQUNKLGFBQWE7UUFDWixjQUFjO1FBQ2QsZUFBZTtRQUNULG9CQUFvQjtRQUM3QixXQUFXO1FBQ1YsWUFBWTtRQUNkLFVBQVU7UUFDZCxNQUFNO0dBckRiLHVCQUF1QixDQWlKbkM7U0FqSlksdUJBQXVCOzRGQUF2Qix1QkFBdUI7a0JBTm5DLFNBQVM7K0JBQ0UsMkJBQTJCOzZUQW1JckMsUUFBUTtzQkFEUCxZQUFZO3VCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnXG5pbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEhvc3RMaXN0ZW5lciwgT25EZXN0cm95LCBPbkluaXQsIFJlbmRlcmVyMiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBOYXZpZ2F0aW9uRW5kLCBSb3V0ZXIsIFJvdXRlc1JlY29nbml6ZWQgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInXG5pbXBvcnQgeyBVbnRpbERlc3Ryb3ksIHVudGlsRGVzdHJveWVkIH0gZnJvbSAnQG5nbmVhdC91bnRpbC1kZXN0cm95J1xuaW1wb3J0IHtcbiAgQXBwU3RhdGVTZXJ2aWNlLFxuICBNZXNzYWdlLFxuICBQb3J0YWxNZXNzYWdlU2VydmljZSxcbiAgVGhlbWVTZXJ2aWNlLFxuICBVc2VyU2VydmljZSxcbn0gZnJvbSAnQG9uZWN4L2FuZ3VsYXItaW50ZWdyYXRpb24taW50ZXJmYWNlJ1xuaW1wb3J0IHsgTWVzc2FnZVNlcnZpY2UsIFByaW1lTkdDb25maWcgfSBmcm9tICdwcmltZW5nL2FwaSdcbmltcG9ydCB7XG4gIGJ1ZmZlckNvdW50LFxuICBjb21iaW5lTGF0ZXN0LFxuICBmaWx0ZXIsXG4gIGZpcnN0LFxuICBtYXAsXG4gIG1lcmdlTWFwLFxuICBvZixcbiAgc3RhcnRXaXRoXG59IGZyb20gJ3J4anMnXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ29jeC1zaGVsbC1wb3J0YWwtdmlld3BvcnQnLFxuICB0ZW1wbGF0ZVVybDogJy4vcG9ydGFsLXZpZXdwb3J0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcG9ydGFsLXZpZXdwb3J0LmNvbXBvbmVudC5zY3NzJ10sXG59KVxuQFVudGlsRGVzdHJveSgpXG5leHBvcnQgY2xhc3MgUG9ydGFsVmlld3BvcnRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gIG1lbnVCdXR0b25UaXRsZSA9ICcnXG4gIG1lbnVBY3RpdmUgPSB0cnVlXG4gIGFjdGl2ZVRvcGJhckl0ZW06IHN0cmluZyB8IHVuZGVmaW5lZFxuXG4gIHJlbW92ZURvY3VtZW50Q2xpY2tMaXN0ZW5lcjogKCgpID0+IHZvaWQpIHwgdW5kZWZpbmVkXG5cbiAgdG9wYmFyVGhlbWUgPSAndmFyJ1xuICBjb2xvclNjaGVtZTogJ2F1dG8nIHwgJ2xpZ2h0JyB8ICdkYXJrJyA9ICdsaWdodCdcbiAgbGF5b3V0TW9kZTogJ2F1dG8nIHwgJ2xpZ2h0JyB8ICdkYXJrJyA9ICdsaWdodCdcbiAgbWVudU1vZGU6ICdob3Jpem9udGFsJyB8ICdzdGF0aWMnIHwgJ292ZXJsYXknIHwgJ3NsaW0nIHwgJ3NsaW1wbHVzJyA9ICdzdGF0aWMnXG4gIGlucHV0U3R5bGUgPSAnb3V0bGluZSdcbiAgcmlwcGxlID0gdHJ1ZVxuICBpc01vYmlsZSA9IGZhbHNlXG5cbiAgZ2xvYmFsRXJyTXNnOiBzdHJpbmcgfCB1bmRlZmluZWRcblxuICBzaG93Q29udGVudCQgPSBjb21iaW5lTGF0ZXN0KFtcbiAgICB0aGlzLmFwcFN0YXRlU2VydmljZS5nbG9iYWxMb2FkaW5nJC5hc09ic2VydmFibGUoKS5waXBlKHN0YXJ0V2l0aCh0cnVlLCB0cnVlKSwgYnVmZmVyQ291bnQoMywgMSkpLFxuICAgIHRoaXMucm91dGVyLmV2ZW50c1xuICAgICAgLnBpcGUoXG4gICAgICAgIGZpbHRlcihcbiAgICAgICAgICAoZSk6IGUgaXMgTmF2aWdhdGlvbkVuZCB8IFJvdXRlc1JlY29nbml6ZWQgPT4gZSBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQgfHwgZSBpbnN0YW5jZW9mIFJvdXRlc1JlY29nbml6ZWRcbiAgICAgICAgKVxuICAgICAgKVxuICAgICAgLnBpcGUoc3RhcnRXaXRoKHsgdXJsOiB1bmRlZmluZWQgfSksIGJ1ZmZlckNvdW50KDMsIDEpKSxcbiAgXSkucGlwZShcbiAgICBtYXAoKFtbYmVmb3JlTGFzdEdsb2JhbExvYWRpbmcsIGxhc3RHbG9iYWxMb2FkaW5nLCBnbG9iYWxMb2FkaW5nXSwgW2JlZm9yZUxhc3RFdmVudCwgbGFzdEV2ZW50LCBldmVudF1dKSA9PiB7XG4gICAgICBpZiAoIWxhc3RHbG9iYWxMb2FkaW5nICYmIGdsb2JhbExvYWRpbmcpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICB9XG4gICAgICBpZiAoYmVmb3JlTGFzdEdsb2JhbExvYWRpbmcpIHtcbiAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgIH1cbiAgICAgIGlmICghYmVmb3JlTGFzdEV2ZW50LnVybCkge1xuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH1cbiAgICAgIGlmIChsYXN0RXZlbnQudXJsICE9PSBldmVudC51cmwpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH0pXG4gIClcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgcHJpdmF0ZSBwcmltZW5nQ29uZmlnOiBQcmltZU5HQ29uZmlnLFxuICAgIHByaXZhdGUgbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlLFxuICAgIHB1YmxpYyBhcHBTdGF0ZVNlcnZpY2U6IEFwcFN0YXRlU2VydmljZSxcbiAgICBwcml2YXRlIHBvcnRhbE1lc3NhZ2VTZXJ2aWNlOiBQb3J0YWxNZXNzYWdlU2VydmljZSxcbiAgICBwcml2YXRlIHVzZXJTZXJ2aWNlOiBVc2VyU2VydmljZSxcbiAgICBwcml2YXRlIHRoZW1lU2VydmljZTogVGhlbWVTZXJ2aWNlLFxuICAgIHByaXZhdGUgaHR0cENsaWVudDogSHR0cENsaWVudCxcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyXG4gICkge1xuICAgIHRoaXMucG9ydGFsTWVzc2FnZVNlcnZpY2UubWVzc2FnZSQuc3Vic2NyaWJlKChtZXNzYWdlOiBNZXNzYWdlKSA9PiB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZChtZXNzYWdlKSlcbiAgICB0aGlzLnVzZXJTZXJ2aWNlLnByb2ZpbGUkLnBpcGUodW50aWxEZXN0cm95ZWQodGhpcykpLnN1YnNjcmliZSgocHJvZmlsZSkgPT4ge1xuICAgICAgdGhpcy5tZW51TW9kZSA9XG4gICAgICAgIChwcm9maWxlPy5hY2NvdW50U2V0dGluZ3M/LmxheW91dEFuZFRoZW1lU2V0dGluZ3M/Lm1lbnVNb2RlPy50b0xvd2VyQ2FzZSgpIGFzXG4gICAgICAgICAgfCB0eXBlb2YgdGhpcy5tZW51TW9kZVxuICAgICAgICAgIHwgdW5kZWZpbmVkKSB8fCB0aGlzLm1lbnVNb2RlXG5cbiAgICAgIHRoaXMuY29sb3JTY2hlbWUgPVxuICAgICAgICAocHJvZmlsZT8uYWNjb3VudFNldHRpbmdzPy5sYXlvdXRBbmRUaGVtZVNldHRpbmdzPy5jb2xvclNjaGVtZT8udG9Mb3dlckNhc2UoKSBhc1xuICAgICAgICAgIHwgdHlwZW9mIHRoaXMuY29sb3JTY2hlbWVcbiAgICAgICAgICB8IHVuZGVmaW5lZCkgfHwgdGhpcy5jb2xvclNjaGVtZVxuICAgIH0pXG5cbiAgICB0aGlzLnRoZW1lU2VydmljZS5jdXJyZW50VGhlbWUkXG4gICAgICAucGlwZShcbiAgICAgICAgZmlyc3QoKSxcbiAgICAgICAgbWVyZ2VNYXAoKHRoZW1lKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHRoZW1lLmZhdmljb25VcmxcbiAgICAgICAgICAgID8gdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAgICAgLmdldCh0aGVtZS5mYXZpY29uVXJsLCB7IHJlc3BvbnNlVHlwZTogJ2Jsb2InIH0pXG4gICAgICAgICAgICAgICAgLnBpcGUobWFwKChibG9iKSA9PiBVUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpKSlcbiAgICAgICAgICAgIDogb2YoJycpXG4gICAgICAgIH0pXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCh1cmwpID0+IHtcbiAgICAgICAgbGV0IGxpbmsgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwibGlua1tyZWx+PSdpY29uJ11cIikgYXMgYW55XG4gICAgICAgIGlmICghbGluaykge1xuICAgICAgICAgIGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsaW5rJylcbiAgICAgICAgICBsaW5rLnJlbCA9ICdpY29uJ1xuICAgICAgICAgIGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQobGluaylcbiAgICAgICAgfVxuICAgICAgICBsaW5rLm9ubG9hZCA9ICgpID0+IHtcbiAgICAgICAgICBVUkwucmV2b2tlT2JqZWN0VVJMKHVybClcbiAgICAgICAgfVxuICAgICAgICBsaW5rLmhyZWYgPSB1cmxcbiAgICAgIH0pXG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnByaW1lbmdDb25maWcucmlwcGxlID0gdHJ1ZVxuXG4gICAgdGhpcy5hcHBTdGF0ZVNlcnZpY2UuZ2xvYmFsRXJyb3IkXG4gICAgICAucGlwZSh1bnRpbERlc3Ryb3llZCh0aGlzKSlcbiAgICAgIC5waXBlKGZpbHRlcigoaSkgPT4gaSAhPT0gdW5kZWZpbmVkKSlcbiAgICAgIC5zdWJzY3JpYmUoKGVycjogc3RyaW5nIHwgdW5kZWZpbmVkKSA9PiB7XG4gICAgICAgIHRoaXMuZ2xvYmFsRXJyTXNnID0gZXJyXG4gICAgICB9KVxuXG4gICAgdGhpcy5vblJlc2l6ZSgpXG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgLy8gaGlkZXMgdGhlIGhvcml6b250YWwgc3VibWVudXMgb3IgdG9wIG1lbnUgaWYgb3V0c2lkZSBpcyBjbGlja2VkXG4gICAgdGhpcy5yZW1vdmVEb2N1bWVudENsaWNrTGlzdGVuZXIgPSB0aGlzLnJlbmRlcmVyLmxpc3RlbignYm9keScsICdjbGljaycsICgpID0+IHtcbiAgICAgIHRoaXMuYWN0aXZlVG9wYmFySXRlbSA9IHVuZGVmaW5lZFxuICAgICAgaWYgKHRoaXMuaXNNb2JpbGUpIHRoaXMubWVudUFjdGl2ZSA9IGZhbHNlXG4gICAgfSlcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMucmVtb3ZlRG9jdW1lbnRDbGlja0xpc3RlbmVyPy4oKVxuICB9XG5cbiAgb25NZW51QnV0dG9uQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICB0aGlzLmFjdGl2ZVRvcGJhckl0ZW0gPSB1bmRlZmluZWRcbiAgICB0aGlzLm1lbnVBY3RpdmUgPSAhdGhpcy5tZW51QWN0aXZlXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gIH1cblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJylcbiAgb25SZXNpemUoKSB7XG4gICAgY29uc3QgbW9iaWxlQnJlYWtwb2ludFZhciA9IGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KS5nZXRQcm9wZXJ0eVZhbHVlKCctLW1vYmlsZS1icmVhay1wb2ludCcpXG4gICAgY29uc3QgaXNNb2JpbGUgPSB3aW5kb3cubWF0Y2hNZWRpYShgKG1heC13aWR0aDogJHttb2JpbGVCcmVha3BvaW50VmFyfSlgKS5tYXRjaGVzXG4gICAgLy8gYXV0byBzaG93IHNpZGViYXIgd2hlbiBjaGFuZ2luZyB0byBkZXNrdG9wLCBoaWRlIHdoZW4gY2hhbmdpbmcgdG8gbW9iaWxlXG4gICAgaWYgKGlzTW9iaWxlICE9PSB0aGlzLmlzTW9iaWxlKSB0aGlzLm1lbnVBY3RpdmUgPSAhaXNNb2JpbGVcbiAgICB0aGlzLmlzTW9iaWxlID0gaXNNb2JpbGVcbiAgfVxuXG4gIGlzSG9yaXpvbnRhbE1lbnVNb2RlKCkge1xuICAgIHJldHVybiB0aGlzLm1lbnVNb2RlID09PSAnaG9yaXpvbnRhbCcgJiYgIXRoaXMuaXNNb2JpbGVcbiAgfVxuXG4gIGlzU3RhdGljYWxNZW51VmlzaWJsZSgpIHtcbiAgICByZXR1cm4gdGhpcy5tZW51QWN0aXZlICYmICF0aGlzLmlzSG9yaXpvbnRhbE1lbnVNb2RlKClcbiAgfVxuXG4gIGlzSG9yaXpvbnRhbE1lbnVWaXNpYmxlKCkge1xuICAgIHJldHVybiB0aGlzLmlzSG9yaXpvbnRhbE1lbnVNb2RlKClcbiAgfVxufVxuIiwiPGRpdlxuICAqbmdJZj1cIiFnbG9iYWxFcnJNc2c7IGVsc2UgZ2xvYmFsRXJyb3JcIlxuICBjbGFzcz1cImxheW91dC13cmFwcGVyXCJcbiAgW25nQ2xhc3NdPVwie1xuICAgICdwLWlucHV0LWZpbGxlZCc6IGlucHV0U3R5bGUgPT09ICdmaWxsZWQnLCBcbiAgICAncC1yaXBwbGUtZGlzYWJsZWQnOiAhcmlwcGxlLFxuICAgICdsYXlvdXQtbWVudS1hY3RpdmUnOiBpc1N0YXRpY2FsTWVudVZpc2libGUoKSxcbiAgICAnbGF5b3V0LW1lbnUtYnV0dG9uLWhpZGRlbic6IGlzSG9yaXpvbnRhbE1lbnVNb2RlKClcbiAgfVwiXG4gIFtjbGFzc109XCInbGF5b3V0LW1lbnUtJyArIGNvbG9yU2NoZW1lICsgJyBsYXlvdXQtdG9wYmFyLScgKyB0b3BiYXJUaGVtZVwiXG4+XG4gIDxvY3gtc2hlbGwtaGVhZGVyXG4gICAgW21lbnVCdXR0b25UaXRsZV09XCJtZW51QnV0dG9uVGl0bGVcIlxuICAgIChtZW51QnV0dG9uQ2xpY2spPVwib25NZW51QnV0dG9uQ2xpY2soJGV2ZW50KVwiXG4gID5cbiAgPG9jeC1zbG90IG5hbWU9XCJob3Jpem9udGFsTWVudVwiICpuZ0lmPVwiaXNIb3Jpem9udGFsTWVudVZpc2libGUoKVwiPjwvb2N4LXNsb3Q+XG4gIFxuICA8L29jeC1zaGVsbC1oZWFkZXI+XG5cbiAgPHAtdG9hc3Q+PC9wLXRvYXN0PlxuXG4gIDxkaXYgY2xhc3M9XCJtZW51LXdyYXBwZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwibGF5b3V0LW1lbnUtY29udGFpbmVyXCIgKm5nSWY9XCJpc1N0YXRpY2FsTWVudVZpc2libGUoKVwiPlxuICAgICAgICA8b2N4LXNsb3QgbmFtZT1cIm1lbnVcIj48L29jeC1zbG90PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgXG4gIDxkaXYgY2xhc3M9XCJsYXlvdXQtbWFpblwiPlxuICAgIDxkaXYgY2xhc3M9XCJsYXlvdXQtY29udGVudCByZWxhdGl2ZVwiPlxuICAgICAgPG9jeC1zbG90IG5hbWU9XCJzdWJIZWFkZXJcIj48L29jeC1zbG90PlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dDb250ZW50JCB8IGFzeW5jXCI+XG4gICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICAgICAgPHJvdXRlci1vdXRsZXQ+PC9yb3V0ZXItb3V0bGV0PlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gICAgXG4gICAgPG9jeC1zaGVsbC1mb290ZXI+PC9vY3gtc2hlbGwtZm9vdGVyPlxuICA8L2Rpdj5cbiAgXG4gIDxkaXYgKm5nSWY9XCJtZW51QWN0aXZlIHx8ICEhYWN0aXZlVG9wYmFySXRlbVwiIGNsYXNzPVwibGF5b3V0LW1hc2sgbW9kYWwtaW5cIj48L2Rpdj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI2dsb2JhbEVycm9yPlxuICA8b2N4LXNoZWxsLWVycm9yIFtlcnJDb2RlXT1cImdsb2JhbEVyck1zZ1wiPjwvb2N4LXNoZWxsLWVycm9yPlxuPC9uZy10ZW1wbGF0ZT4iXX0=
142
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9ydGFsLXZpZXdwb3J0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2hlbGwtY29yZS9zcmMvbGliL2NvbXBvbmVudHMvcG9ydGFsLXZpZXdwb3J0L3BvcnRhbC12aWV3cG9ydC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NoZWxsLWNvcmUvc3JjL2xpYi9jb21wb25lbnRzL3BvcnRhbC12aWV3cG9ydC9wb3J0YWwtdmlld3BvcnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQTtBQUNqRCxPQUFPLEVBRUwsU0FBUyxFQUNULFlBQVksRUFDWixNQUFNLEVBQ04sY0FBYyxFQUdkLFFBQVEsRUFDUixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUE7QUFDdEIsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQ3hDLE9BQU8sRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUJBQXVCLENBQUE7QUFDcEUsT0FBTyxFQUNMLGVBQWUsRUFFZixvQkFBb0IsRUFDcEIsWUFBWSxFQUNaLFdBQVcsR0FDWixNQUFNLHNDQUFzQyxDQUFBO0FBQzdDLE9BQU8sRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQzNELE9BQU8sRUFBbUIsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQTs7Ozs7Ozs7Ozs7O0FBRXhFLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLElBQUksY0FBYyxDQUFzQix1QkFBdUIsQ0FBQyxDQUFBO0FBWTlGLElBQU0sdUJBQXVCLEdBQTdCLE1BQU0sdUJBQXVCO0lBaUJsQyxZQUNVLFFBQW1CLEVBQ25CLGFBQTRCLEVBQzVCLGNBQThCLEVBQy9CLGVBQWdDLEVBQy9CLG9CQUEwQyxFQUMxQyxXQUF3QixFQUN4QixZQUEwQixFQUMxQixVQUFzQixFQUN0QixNQUFjLEVBQzRCLG1CQUFvRDtRQVQ5RixhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQ25CLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUMvQixvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDL0IseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFzQjtRQUMxQyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDNEIsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFpQztRQTFCeEcsb0JBQWUsR0FBRyxFQUFFLENBQUE7UUFDcEIsZUFBVSxHQUFHLElBQUksQ0FBQTtRQUtqQixnQkFBVyxHQUFHLEtBQUssQ0FBQTtRQUNuQixnQkFBVyxHQUE4QixPQUFPLENBQUE7UUFDaEQsZUFBVSxHQUE4QixPQUFPLENBQUE7UUFDL0MsYUFBUSxHQUE4RCxRQUFRLENBQUE7UUFDOUUsZUFBVSxHQUFHLFNBQVMsQ0FBQTtRQUN0QixXQUFNLEdBQUcsSUFBSSxDQUFBO1FBQ2IsYUFBUSxHQUFHLEtBQUssQ0FBQTtRQWdCZCxJQUFJLENBQUMsb0JBQW9CLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLE9BQWdCLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUE7UUFDcEcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQ3pFLElBQUksQ0FBQyxRQUFRO2dCQUNWLE9BQU8sRUFBRSxlQUFlLEVBQUUsc0JBQXNCLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFFMUQsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFBO1lBRWpDLElBQUksQ0FBQyxXQUFXO2dCQUNiLE9BQU8sRUFBRSxlQUFlLEVBQUUsc0JBQXNCLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFFN0QsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFBO1FBQ3RDLENBQUMsQ0FBQyxDQUFBO1FBRUYsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhO2FBQzVCLElBQUksQ0FDSCxLQUFLLEVBQUUsRUFDUCxRQUFRLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNqQixPQUFPLEtBQUssQ0FBQyxVQUFVO2dCQUNyQixDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVU7cUJBQ1osR0FBRyxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLENBQUM7cUJBQy9DLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztnQkFDbkQsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQTtRQUNaLENBQUMsQ0FBQyxDQUNIO2FBQ0EsU0FBUyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDakIsSUFBSSxJQUFJLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxtQkFBbUIsQ0FBUSxDQUFBO1lBQzdELElBQUksQ0FBQyxJQUFJLEVBQUU7Z0JBQ1QsSUFBSSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUE7Z0JBQ3JDLElBQUksQ0FBQyxHQUFHLEdBQUcsTUFBTSxDQUFBO2dCQUNqQixRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQTthQUNoQztZQUNELElBQUksQ0FBQyxNQUFNLEdBQUcsR0FBRyxFQUFFO2dCQUNqQixHQUFHLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFBO1lBQzFCLENBQUMsQ0FBQTtZQUNELElBQUksQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFBO1FBQ2pCLENBQUMsQ0FBQyxDQUFBO0lBQ04sQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUE7UUFFaEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZO2FBQzlCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDMUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLFNBQVMsQ0FBQyxDQUFDO2FBQ3BDLFNBQVMsQ0FBQyxDQUFDLEdBQXVCLEVBQUUsRUFBRTtZQUNyQyxJQUFJLENBQUMsWUFBWSxHQUFHLEdBQUcsQ0FBQTtRQUN6QixDQUFDLENBQUMsQ0FBQTtRQUVKLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQTtJQUNqQixDQUFDO0lBRUQsZUFBZTtRQUNiLGtFQUFrRTtRQUNsRSxJQUFJLENBQUMsMkJBQTJCLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUU7WUFDNUUsSUFBSSxDQUFDLGdCQUFnQixHQUFHLFNBQVMsQ0FBQTtZQUNqQyxJQUFJLElBQUksQ0FBQyxRQUFRO2dCQUFFLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFBO1FBQzVDLENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsMkJBQTJCLEVBQUUsRUFBRSxDQUFBO0lBQ3RDLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxLQUFpQjtRQUNqQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsU0FBUyxDQUFBO1FBQ2pDLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFBO1FBQ2xDLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQTtRQUN0QixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUE7SUFDekIsQ0FBQztJQUdELFFBQVE7UUFDTixNQUFNLG1CQUFtQixHQUFHLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFBO1FBQy9HLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsZUFBZSxtQkFBbUIsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFBO1FBQ2pGLDJFQUEyRTtRQUMzRSxJQUFJLFFBQVEsS0FBSyxJQUFJLENBQUMsUUFBUTtZQUFFLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxRQUFRLENBQUE7UUFDM0QsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUE7SUFDMUIsQ0FBQztJQUVELG9CQUFvQjtRQUNsQixPQUFPLElBQUksQ0FBQyxRQUFRLEtBQUssWUFBWSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQTtJQUN6RCxDQUFDO0lBRUQscUJBQXFCO1FBQ25CLE9BQU8sSUFBSSxDQUFDLFVBQVUsSUFBSSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFBO0lBQ3hELENBQUM7SUFFRCx1QkFBdUI7UUFDckIsT0FBTyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQTtJQUNwQyxDQUFDOztxSEF0SFUsdUJBQXVCLGdSQTJCWixxQkFBcUI7eUdBM0JoQyx1QkFBdUIseUhDcENwQyx3M0NBeUNBO0FETGEsdUJBQXVCO0lBRG5DLFlBQVksRUFBRTtxQ0FtQk8sU0FBUztRQUNKLGFBQWE7UUFDWixjQUFjO1FBQ2QsZUFBZTtRQUNULG9CQUFvQjtRQUM3QixXQUFXO1FBQ1YsWUFBWTtRQUNkLFVBQVU7UUFDZCxNQUFNO0dBMUJiLHVCQUF1QixDQXVIbkM7U0F2SFksdUJBQXVCOzRGQUF2Qix1QkFBdUI7a0JBTm5DLFNBQVM7K0JBQ0UsMkJBQTJCOzswQkFnQ2xDLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMscUJBQXFCOzRDQXlFM0MsUUFBUTtzQkFEUCxZQUFZO3VCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnXG5pbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDb21wb25lbnQsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5qZWN0LFxuICBJbmplY3Rpb25Ub2tlbixcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE9wdGlvbmFsLFxuICBSZW5kZXJlcjIsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInXG5pbXBvcnQgeyBVbnRpbERlc3Ryb3ksIHVudGlsRGVzdHJveWVkIH0gZnJvbSAnQG5nbmVhdC91bnRpbC1kZXN0cm95J1xuaW1wb3J0IHtcbiAgQXBwU3RhdGVTZXJ2aWNlLFxuICBNZXNzYWdlLFxuICBQb3J0YWxNZXNzYWdlU2VydmljZSxcbiAgVGhlbWVTZXJ2aWNlLFxuICBVc2VyU2VydmljZSxcbn0gZnJvbSAnQG9uZWN4L2FuZ3VsYXItaW50ZWdyYXRpb24taW50ZXJmYWNlJ1xuaW1wb3J0IHsgTWVzc2FnZVNlcnZpY2UsIFByaW1lTkdDb25maWcgfSBmcm9tICdwcmltZW5nL2FwaSdcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgZmlsdGVyLCBmaXJzdCwgbWFwLCBtZXJnZU1hcCwgb2YgfSBmcm9tICdyeGpzJ1xuXG5leHBvcnQgY29uc3QgU0hPV19DT05URU5UX1BST1ZJREVSID0gbmV3IEluamVjdGlvblRva2VuPFNob3dDb250ZW50UHJvdmlkZXI+KCdTSE9XX0NPTlRFTlRfUFJPVklERVInKVxuXG5leHBvcnQgaW50ZXJmYWNlIFNob3dDb250ZW50UHJvdmlkZXIge1xuICBzaG93Q29udGVudCQ6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPlxufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdvY3gtc2hlbGwtcG9ydGFsLXZpZXdwb3J0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3BvcnRhbC12aWV3cG9ydC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3BvcnRhbC12aWV3cG9ydC5jb21wb25lbnQuc2NzcyddLFxufSlcbkBVbnRpbERlc3Ryb3koKVxuZXhwb3J0IGNsYXNzIFBvcnRhbFZpZXdwb3J0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICBtZW51QnV0dG9uVGl0bGUgPSAnJ1xuICBtZW51QWN0aXZlID0gdHJ1ZVxuICBhY3RpdmVUb3BiYXJJdGVtOiBzdHJpbmcgfCB1bmRlZmluZWRcblxuICByZW1vdmVEb2N1bWVudENsaWNrTGlzdGVuZXI6ICgoKSA9PiB2b2lkKSB8IHVuZGVmaW5lZFxuXG4gIHRvcGJhclRoZW1lID0gJ3ZhcidcbiAgY29sb3JTY2hlbWU6ICdhdXRvJyB8ICdsaWdodCcgfCAnZGFyaycgPSAnbGlnaHQnXG4gIGxheW91dE1vZGU6ICdhdXRvJyB8ICdsaWdodCcgfCAnZGFyaycgPSAnbGlnaHQnXG4gIG1lbnVNb2RlOiAnaG9yaXpvbnRhbCcgfCAnc3RhdGljJyB8ICdvdmVybGF5JyB8ICdzbGltJyB8ICdzbGltcGx1cycgPSAnc3RhdGljJ1xuICBpbnB1dFN0eWxlID0gJ291dGxpbmUnXG4gIHJpcHBsZSA9IHRydWVcbiAgaXNNb2JpbGUgPSBmYWxzZVxuXG4gIGdsb2JhbEVyck1zZzogc3RyaW5nIHwgdW5kZWZpbmVkXG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIHByaXZhdGUgcHJpbWVuZ0NvbmZpZzogUHJpbWVOR0NvbmZpZyxcbiAgICBwcml2YXRlIG1lc3NhZ2VTZXJ2aWNlOiBNZXNzYWdlU2VydmljZSxcbiAgICBwdWJsaWMgYXBwU3RhdGVTZXJ2aWNlOiBBcHBTdGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwb3J0YWxNZXNzYWdlU2VydmljZTogUG9ydGFsTWVzc2FnZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSB1c2VyU2VydmljZTogVXNlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0aGVtZVNlcnZpY2U6IFRoZW1lU2VydmljZSxcbiAgICBwcml2YXRlIGh0dHBDbGllbnQ6IEh0dHBDbGllbnQsXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KFNIT1dfQ09OVEVOVF9QUk9WSURFUikgcHVibGljIHNob3dDb250ZW50UHJvdmlkZXI6IFNob3dDb250ZW50UHJvdmlkZXIgfCB1bmRlZmluZWRcbiAgKSB7XG4gICAgdGhpcy5wb3J0YWxNZXNzYWdlU2VydmljZS5tZXNzYWdlJC5zdWJzY3JpYmUoKG1lc3NhZ2U6IE1lc3NhZ2UpID0+IHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKG1lc3NhZ2UpKVxuICAgIHRoaXMudXNlclNlcnZpY2UucHJvZmlsZSQucGlwZSh1bnRpbERlc3Ryb3llZCh0aGlzKSkuc3Vic2NyaWJlKChwcm9maWxlKSA9PiB7XG4gICAgICB0aGlzLm1lbnVNb2RlID1cbiAgICAgICAgKHByb2ZpbGU/LmFjY291bnRTZXR0aW5ncz8ubGF5b3V0QW5kVGhlbWVTZXR0aW5ncz8ubWVudU1vZGU/LnRvTG93ZXJDYXNlKCkgYXNcbiAgICAgICAgICB8IHR5cGVvZiB0aGlzLm1lbnVNb2RlXG4gICAgICAgICAgfCB1bmRlZmluZWQpIHx8IHRoaXMubWVudU1vZGVcblxuICAgICAgdGhpcy5jb2xvclNjaGVtZSA9XG4gICAgICAgIChwcm9maWxlPy5hY2NvdW50U2V0dGluZ3M/LmxheW91dEFuZFRoZW1lU2V0dGluZ3M/LmNvbG9yU2NoZW1lPy50b0xvd2VyQ2FzZSgpIGFzXG4gICAgICAgICAgfCB0eXBlb2YgdGhpcy5jb2xvclNjaGVtZVxuICAgICAgICAgIHwgdW5kZWZpbmVkKSB8fCB0aGlzLmNvbG9yU2NoZW1lXG4gICAgfSlcblxuICAgIHRoaXMudGhlbWVTZXJ2aWNlLmN1cnJlbnRUaGVtZSRcbiAgICAgIC5waXBlKFxuICAgICAgICBmaXJzdCgpLFxuICAgICAgICBtZXJnZU1hcCgodGhlbWUpID0+IHtcbiAgICAgICAgICByZXR1cm4gdGhlbWUuZmF2aWNvblVybFxuICAgICAgICAgICAgPyB0aGlzLmh0dHBDbGllbnRcbiAgICAgICAgICAgICAgICAuZ2V0KHRoZW1lLmZhdmljb25VcmwsIHsgcmVzcG9uc2VUeXBlOiAnYmxvYicgfSlcbiAgICAgICAgICAgICAgICAucGlwZShtYXAoKGJsb2IpID0+IFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYikpKVxuICAgICAgICAgICAgOiBvZignJylcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKHVybCkgPT4ge1xuICAgICAgICBsZXQgbGluayA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCJsaW5rW3JlbH49J2ljb24nXVwiKSBhcyBhbnlcbiAgICAgICAgaWYgKCFsaW5rKSB7XG4gICAgICAgICAgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2xpbmsnKVxuICAgICAgICAgIGxpbmsucmVsID0gJ2ljb24nXG4gICAgICAgICAgZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChsaW5rKVxuICAgICAgICB9XG4gICAgICAgIGxpbmsub25sb2FkID0gKCkgPT4ge1xuICAgICAgICAgIFVSTC5yZXZva2VPYmplY3RVUkwodXJsKVxuICAgICAgICB9XG4gICAgICAgIGxpbmsuaHJlZiA9IHVybFxuICAgICAgfSlcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMucHJpbWVuZ0NvbmZpZy5yaXBwbGUgPSB0cnVlXG5cbiAgICB0aGlzLmFwcFN0YXRlU2VydmljZS5nbG9iYWxFcnJvciRcbiAgICAgIC5waXBlKHVudGlsRGVzdHJveWVkKHRoaXMpKVxuICAgICAgLnBpcGUoZmlsdGVyKChpKSA9PiBpICE9PSB1bmRlZmluZWQpKVxuICAgICAgLnN1YnNjcmliZSgoZXJyOiBzdHJpbmcgfCB1bmRlZmluZWQpID0+IHtcbiAgICAgICAgdGhpcy5nbG9iYWxFcnJNc2cgPSBlcnJcbiAgICAgIH0pXG5cbiAgICB0aGlzLm9uUmVzaXplKClcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAvLyBoaWRlcyB0aGUgaG9yaXpvbnRhbCBzdWJtZW51cyBvciB0b3AgbWVudSBpZiBvdXRzaWRlIGlzIGNsaWNrZWRcbiAgICB0aGlzLnJlbW92ZURvY3VtZW50Q2xpY2tMaXN0ZW5lciA9IHRoaXMucmVuZGVyZXIubGlzdGVuKCdib2R5JywgJ2NsaWNrJywgKCkgPT4ge1xuICAgICAgdGhpcy5hY3RpdmVUb3BiYXJJdGVtID0gdW5kZWZpbmVkXG4gICAgICBpZiAodGhpcy5pc01vYmlsZSkgdGhpcy5tZW51QWN0aXZlID0gZmFsc2VcbiAgICB9KVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5yZW1vdmVEb2N1bWVudENsaWNrTGlzdGVuZXI/LigpXG4gIH1cblxuICBvbk1lbnVCdXR0b25DbGljayhldmVudDogTW91c2VFdmVudCkge1xuICAgIHRoaXMuYWN0aXZlVG9wYmFySXRlbSA9IHVuZGVmaW5lZFxuICAgIHRoaXMubWVudUFjdGl2ZSA9ICF0aGlzLm1lbnVBY3RpdmVcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpyZXNpemUnKVxuICBvblJlc2l6ZSgpIHtcbiAgICBjb25zdCBtb2JpbGVCcmVha3BvaW50VmFyID0gZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpLmdldFByb3BlcnR5VmFsdWUoJy0tbW9iaWxlLWJyZWFrLXBvaW50JylcbiAgICBjb25zdCBpc01vYmlsZSA9IHdpbmRvdy5tYXRjaE1lZGlhKGAobWF4LXdpZHRoOiAke21vYmlsZUJyZWFrcG9pbnRWYXJ9KWApLm1hdGNoZXNcbiAgICAvLyBhdXRvIHNob3cgc2lkZWJhciB3aGVuIGNoYW5naW5nIHRvIGRlc2t0b3AsIGhpZGUgd2hlbiBjaGFuZ2luZyB0byBtb2JpbGVcbiAgICBpZiAoaXNNb2JpbGUgIT09IHRoaXMuaXNNb2JpbGUpIHRoaXMubWVudUFjdGl2ZSA9ICFpc01vYmlsZVxuICAgIHRoaXMuaXNNb2JpbGUgPSBpc01vYmlsZVxuICB9XG5cbiAgaXNIb3Jpem9udGFsTWVudU1vZGUoKSB7XG4gICAgcmV0dXJuIHRoaXMubWVudU1vZGUgPT09ICdob3Jpem9udGFsJyAmJiAhdGhpcy5pc01vYmlsZVxuICB9XG5cbiAgaXNTdGF0aWNhbE1lbnVWaXNpYmxlKCkge1xuICAgIHJldHVybiB0aGlzLm1lbnVBY3RpdmUgJiYgIXRoaXMuaXNIb3Jpem9udGFsTWVudU1vZGUoKVxuICB9XG5cbiAgaXNIb3Jpem9udGFsTWVudVZpc2libGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNIb3Jpem9udGFsTWVudU1vZGUoKVxuICB9XG59XG4iLCI8ZGl2XG4gICpuZ0lmPVwiIWdsb2JhbEVyck1zZzsgZWxzZSBnbG9iYWxFcnJvclwiXG4gIGNsYXNzPVwibGF5b3V0LXdyYXBwZXJcIlxuICBbbmdDbGFzc109XCJ7XG4gICAgJ3AtaW5wdXQtZmlsbGVkJzogaW5wdXRTdHlsZSA9PT0gJ2ZpbGxlZCcsIFxuICAgICdwLXJpcHBsZS1kaXNhYmxlZCc6ICFyaXBwbGUsXG4gICAgJ2xheW91dC1tZW51LWFjdGl2ZSc6IGlzU3RhdGljYWxNZW51VmlzaWJsZSgpLFxuICAgICdsYXlvdXQtbWVudS1idXR0b24taGlkZGVuJzogaXNIb3Jpem9udGFsTWVudU1vZGUoKVxuICB9XCJcbiAgW2NsYXNzXT1cIidsYXlvdXQtbWVudS0nICsgY29sb3JTY2hlbWUgKyAnIGxheW91dC10b3BiYXItJyArIHRvcGJhclRoZW1lXCJcbj5cbiAgPG9jeC1zaGVsbC1oZWFkZXIgW21lbnVCdXR0b25UaXRsZV09XCJtZW51QnV0dG9uVGl0bGVcIiAobWVudUJ1dHRvbkNsaWNrKT1cIm9uTWVudUJ1dHRvbkNsaWNrKCRldmVudClcIj5cbiAgICA8b2N4LXNsb3QgbmFtZT1cImhvcml6b250YWxNZW51XCIgKm5nSWY9XCJpc0hvcml6b250YWxNZW51VmlzaWJsZSgpXCI+PC9vY3gtc2xvdD5cbiAgPC9vY3gtc2hlbGwtaGVhZGVyPlxuXG4gIDxwLXRvYXN0PjwvcC10b2FzdD5cblxuICA8ZGl2IGNsYXNzPVwibWVudS13cmFwcGVyXCI+XG4gICAgPGRpdiBjbGFzcz1cImxheW91dC1tZW51LWNvbnRhaW5lclwiICpuZ0lmPVwiaXNTdGF0aWNhbE1lbnVWaXNpYmxlKClcIj5cbiAgICAgIDxvY3gtc2xvdCBuYW1lPVwibWVudVwiPjwvb2N4LXNsb3Q+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJsYXlvdXQtbWFpblwiPlxuICAgIDxkaXYgY2xhc3M9XCJsYXlvdXQtY29udGVudCByZWxhdGl2ZVwiPlxuICAgICAgPG9jeC1zbG90IG5hbWU9XCJzdWJIZWFkZXJcIj48L29jeC1zbG90PlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFzaG93Q29udGVudFByb3ZpZGVyIHx8IChzaG93Q29udGVudFByb3ZpZGVyLnNob3dDb250ZW50JCB8IGFzeW5jKVwiPlxuICAgICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgICAgIDxyb3V0ZXItb3V0bGV0Pjwvcm91dGVyLW91dGxldD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuXG4gICAgPG9jeC1zaGVsbC1mb290ZXI+PC9vY3gtc2hlbGwtZm9vdGVyPlxuICA8L2Rpdj5cblxuICA8ZGl2ICpuZ0lmPVwibWVudUFjdGl2ZSB8fCAhIWFjdGl2ZVRvcGJhckl0ZW1cIiBjbGFzcz1cImxheW91dC1tYXNrIG1vZGFsLWluXCI+PC9kaXY+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNnbG9iYWxFcnJvcj5cbiAgPG9jeC1zaGVsbC1lcnJvciBbZXJyQ29kZV09XCJnbG9iYWxFcnJNc2dcIj48L29jeC1zaGVsbC1lcnJvcj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
@@ -1,9 +1,9 @@
1
1
  import * as i5 from '@angular/common';
2
2
  import { CommonModule } from '@angular/common';
3
3
  import * as i0 from '@angular/core';
4
- import { Component, Input, EventEmitter, Output, Renderer2, HostListener, NgModule, Injectable } from '@angular/core';
4
+ import { Component, Input, EventEmitter, Output, InjectionToken, Renderer2, Optional, Inject, HostListener, NgModule, Injectable } from '@angular/core';
5
5
  import * as i1 from '@angular/router';
6
- import { NavigationEnd, RoutesRecognized, Router, RouterModule } from '@angular/router';
6
+ import { Router, RouterModule } from '@angular/router';
7
7
  import * as i4$1 from '@onecx/angular-accelerator';
8
8
  import { AngularAcceleratorModule } from '@onecx/angular-accelerator';
9
9
  import * as i4 from '@onecx/angular-remote-components';
@@ -13,7 +13,7 @@ import { ToastModule } from 'primeng/toast';
13
13
  import * as i1$1 from '@onecx/angular-integration-interface';
14
14
  import { CONFIG_KEY, ThemeService, AppStateService, PortalMessageService, UserService } from '@onecx/angular-integration-interface';
15
15
  import { ImageLogoUrlUtils } from '@onecx/portal-integration-angular';
16
- import { withLatestFrom, map, combineLatest, concat, of, startWith, bufferCount, filter, first, mergeMap, shareReplay } from 'rxjs';
16
+ import { withLatestFrom, map, combineLatest, concat, of, first, mergeMap, filter, shareReplay } from 'rxjs';
17
17
  import { __decorate, __metadata } from 'tslib';
18
18
  import { trigger, transition, style, animate } from '@angular/animations';
19
19
  import { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';
@@ -144,8 +144,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
144
144
  type: Output
145
145
  }] } });
146
146
 
147
+ const SHOW_CONTENT_PROVIDER = new InjectionToken('SHOW_CONTENT_PROVIDER');
147
148
  let PortalViewportComponent = class PortalViewportComponent {
148
- constructor(renderer, primengConfig, messageService, appStateService, portalMessageService, userService, themeService, httpClient, router) {
149
+ constructor(renderer, primengConfig, messageService, appStateService, portalMessageService, userService, themeService, httpClient, router, showContentProvider) {
149
150
  this.renderer = renderer;
150
151
  this.primengConfig = primengConfig;
151
152
  this.messageService = messageService;
@@ -155,6 +156,7 @@ let PortalViewportComponent = class PortalViewportComponent {
155
156
  this.themeService = themeService;
156
157
  this.httpClient = httpClient;
157
158
  this.router = router;
159
+ this.showContentProvider = showContentProvider;
158
160
  this.menuButtonTitle = '';
159
161
  this.menuActive = true;
160
162
  this.topbarTheme = 'var';
@@ -164,26 +166,6 @@ let PortalViewportComponent = class PortalViewportComponent {
164
166
  this.inputStyle = 'outline';
165
167
  this.ripple = true;
166
168
  this.isMobile = false;
167
- this.showContent$ = combineLatest([
168
- this.appStateService.globalLoading$.asObservable().pipe(startWith(true, true), bufferCount(3, 1)),
169
- this.router.events
170
- .pipe(filter((e) => e instanceof NavigationEnd || e instanceof RoutesRecognized))
171
- .pipe(startWith({ url: undefined }), bufferCount(3, 1)),
172
- ]).pipe(map(([[beforeLastGlobalLoading, lastGlobalLoading, globalLoading], [beforeLastEvent, lastEvent, event]]) => {
173
- if (!lastGlobalLoading && globalLoading) {
174
- return false;
175
- }
176
- if (beforeLastGlobalLoading) {
177
- return true;
178
- }
179
- if (!beforeLastEvent.url) {
180
- return false;
181
- }
182
- if (lastEvent.url !== event.url) {
183
- return false;
184
- }
185
- return true;
186
- }));
187
169
  this.portalMessageService.message$.subscribe((message) => this.messageService.add(message));
188
170
  this.userService.profile$.pipe(untilDestroyed(this)).subscribe((profile) => {
189
171
  var _a, _b, _c, _d, _e, _f;
@@ -259,8 +241,8 @@ let PortalViewportComponent = class PortalViewportComponent {
259
241
  return this.isHorizontalMenuMode();
260
242
  }
261
243
  };
262
- PortalViewportComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PortalViewportComponent, deps: [{ token: i0.Renderer2 }, { token: i1$2.PrimeNGConfig }, { token: i1$2.MessageService }, { token: i1$1.AppStateService }, { token: i1$1.PortalMessageService }, { token: i1$1.UserService }, { token: i1$1.ThemeService }, { token: i3.HttpClient }, { token: i1.Router }], target: i0.ɵɵFactoryTarget.Component });
263
- PortalViewportComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: PortalViewportComponent, selector: "ocx-shell-portal-viewport", host: { listeners: { "window:resize": "onResize()" } }, ngImport: i0, template: "<div\n *ngIf=\"!globalErrMsg; else globalError\"\n class=\"layout-wrapper\"\n [ngClass]=\"{\n 'p-input-filled': inputStyle === 'filled', \n 'p-ripple-disabled': !ripple,\n 'layout-menu-active': isStaticalMenuVisible(),\n 'layout-menu-button-hidden': isHorizontalMenuMode()\n }\"\n [class]=\"'layout-menu-' + colorScheme + ' layout-topbar-' + topbarTheme\"\n>\n <ocx-shell-header\n [menuButtonTitle]=\"menuButtonTitle\"\n (menuButtonClick)=\"onMenuButtonClick($event)\"\n >\n <ocx-slot name=\"horizontalMenu\" *ngIf=\"isHorizontalMenuVisible()\"></ocx-slot>\n \n </ocx-shell-header>\n\n <p-toast></p-toast>\n\n <div class=\"menu-wrapper\">\n <div class=\"layout-menu-container\" *ngIf=\"isStaticalMenuVisible()\">\n <ocx-slot name=\"menu\"></ocx-slot>\n </div>\n </div>\n \n <div class=\"layout-main\">\n <div class=\"layout-content relative\">\n <ocx-slot name=\"subHeader\"></ocx-slot>\n <ng-container *ngIf=\"showContent$ | async\">\n <ng-content></ng-content>\n <router-outlet></router-outlet>\n </ng-container>\n </div>\n \n <ocx-shell-footer></ocx-shell-footer>\n </div>\n \n <div *ngIf=\"menuActive || !!activeTopbarItem\" class=\"layout-mask modal-in\"></div>\n</div>\n\n<ng-template #globalError>\n <ocx-shell-error [errCode]=\"globalErrMsg\"></ocx-shell-error>\n</ng-template>", styles: [""], dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "component", type: i4.SlotComponent, selector: "ocx-slot[name]", inputs: ["name"] }, { kind: "component", type: i7.Toast, selector: "p-toast", inputs: ["key", "autoZIndex", "baseZIndex", "style", "styleClass", "position", "preventOpenDuplicates", "preventDuplicates", "showTransformOptions", "hideTransformOptions", "showTransitionOptions", "hideTransitionOptions", "breakpoints"], outputs: ["onClose"] }, { kind: "component", type: HeaderComponent, selector: "ocx-shell-header", inputs: ["menuButtonTitle", "fullPortalLayout", "homeNavUrl", "homeNavTitle"], outputs: ["menuButtonClick"] }, { kind: "component", type: PortalFooterComponent, selector: "ocx-shell-footer" }, { kind: "component", type: GlobalErrorComponent, selector: "ocx-shell-error", inputs: ["errCode"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }] });
244
+ PortalViewportComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PortalViewportComponent, deps: [{ token: i0.Renderer2 }, { token: i1$2.PrimeNGConfig }, { token: i1$2.MessageService }, { token: i1$1.AppStateService }, { token: i1$1.PortalMessageService }, { token: i1$1.UserService }, { token: i1$1.ThemeService }, { token: i3.HttpClient }, { token: i1.Router }, { token: SHOW_CONTENT_PROVIDER, optional: true }], target: i0.ɵɵFactoryTarget.Component });
245
+ PortalViewportComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: PortalViewportComponent, selector: "ocx-shell-portal-viewport", host: { listeners: { "window:resize": "onResize()" } }, ngImport: i0, template: "<div\n *ngIf=\"!globalErrMsg; else globalError\"\n class=\"layout-wrapper\"\n [ngClass]=\"{\n 'p-input-filled': inputStyle === 'filled', \n 'p-ripple-disabled': !ripple,\n 'layout-menu-active': isStaticalMenuVisible(),\n 'layout-menu-button-hidden': isHorizontalMenuMode()\n }\"\n [class]=\"'layout-menu-' + colorScheme + ' layout-topbar-' + topbarTheme\"\n>\n <ocx-shell-header [menuButtonTitle]=\"menuButtonTitle\" (menuButtonClick)=\"onMenuButtonClick($event)\">\n <ocx-slot name=\"horizontalMenu\" *ngIf=\"isHorizontalMenuVisible()\"></ocx-slot>\n </ocx-shell-header>\n\n <p-toast></p-toast>\n\n <div class=\"menu-wrapper\">\n <div class=\"layout-menu-container\" *ngIf=\"isStaticalMenuVisible()\">\n <ocx-slot name=\"menu\"></ocx-slot>\n </div>\n </div>\n\n <div class=\"layout-main\">\n <div class=\"layout-content relative\">\n <ocx-slot name=\"subHeader\"></ocx-slot>\n <ng-container *ngIf=\"!showContentProvider || (showContentProvider.showContent$ | async)\">\n <ng-content></ng-content>\n <router-outlet></router-outlet>\n </ng-container>\n </div>\n\n <ocx-shell-footer></ocx-shell-footer>\n </div>\n\n <div *ngIf=\"menuActive || !!activeTopbarItem\" class=\"layout-mask modal-in\"></div>\n</div>\n\n<ng-template #globalError>\n <ocx-shell-error [errCode]=\"globalErrMsg\"></ocx-shell-error>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "component", type: i4.SlotComponent, selector: "ocx-slot[name]", inputs: ["name"] }, { kind: "component", type: i7.Toast, selector: "p-toast", inputs: ["key", "autoZIndex", "baseZIndex", "style", "styleClass", "position", "preventOpenDuplicates", "preventDuplicates", "showTransformOptions", "hideTransformOptions", "showTransitionOptions", "hideTransitionOptions", "breakpoints"], outputs: ["onClose"] }, { kind: "component", type: HeaderComponent, selector: "ocx-shell-header", inputs: ["menuButtonTitle", "fullPortalLayout", "homeNavUrl", "homeNavTitle"], outputs: ["menuButtonClick"] }, { kind: "component", type: PortalFooterComponent, selector: "ocx-shell-footer" }, { kind: "component", type: GlobalErrorComponent, selector: "ocx-shell-error", inputs: ["errCode"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }] });
264
246
  PortalViewportComponent = __decorate([
265
247
  UntilDestroy(),
266
248
  __metadata("design:paramtypes", [Renderer2,
@@ -271,12 +253,19 @@ PortalViewportComponent = __decorate([
271
253
  UserService,
272
254
  ThemeService,
273
255
  HttpClient,
274
- Router])
256
+ Router, Object])
275
257
  ], PortalViewportComponent);
276
258
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PortalViewportComponent, decorators: [{
277
259
  type: Component,
278
- args: [{ selector: 'ocx-shell-portal-viewport', template: "<div\n *ngIf=\"!globalErrMsg; else globalError\"\n class=\"layout-wrapper\"\n [ngClass]=\"{\n 'p-input-filled': inputStyle === 'filled', \n 'p-ripple-disabled': !ripple,\n 'layout-menu-active': isStaticalMenuVisible(),\n 'layout-menu-button-hidden': isHorizontalMenuMode()\n }\"\n [class]=\"'layout-menu-' + colorScheme + ' layout-topbar-' + topbarTheme\"\n>\n <ocx-shell-header\n [menuButtonTitle]=\"menuButtonTitle\"\n (menuButtonClick)=\"onMenuButtonClick($event)\"\n >\n <ocx-slot name=\"horizontalMenu\" *ngIf=\"isHorizontalMenuVisible()\"></ocx-slot>\n \n </ocx-shell-header>\n\n <p-toast></p-toast>\n\n <div class=\"menu-wrapper\">\n <div class=\"layout-menu-container\" *ngIf=\"isStaticalMenuVisible()\">\n <ocx-slot name=\"menu\"></ocx-slot>\n </div>\n </div>\n \n <div class=\"layout-main\">\n <div class=\"layout-content relative\">\n <ocx-slot name=\"subHeader\"></ocx-slot>\n <ng-container *ngIf=\"showContent$ | async\">\n <ng-content></ng-content>\n <router-outlet></router-outlet>\n </ng-container>\n </div>\n \n <ocx-shell-footer></ocx-shell-footer>\n </div>\n \n <div *ngIf=\"menuActive || !!activeTopbarItem\" class=\"layout-mask modal-in\"></div>\n</div>\n\n<ng-template #globalError>\n <ocx-shell-error [errCode]=\"globalErrMsg\"></ocx-shell-error>\n</ng-template>" }]
279
- }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i1$2.PrimeNGConfig }, { type: i1$2.MessageService }, { type: i1$1.AppStateService }, { type: i1$1.PortalMessageService }, { type: i1$1.UserService }, { type: i1$1.ThemeService }, { type: i3.HttpClient }, { type: i1.Router }]; }, propDecorators: { onResize: [{
260
+ args: [{ selector: 'ocx-shell-portal-viewport', template: "<div\n *ngIf=\"!globalErrMsg; else globalError\"\n class=\"layout-wrapper\"\n [ngClass]=\"{\n 'p-input-filled': inputStyle === 'filled', \n 'p-ripple-disabled': !ripple,\n 'layout-menu-active': isStaticalMenuVisible(),\n 'layout-menu-button-hidden': isHorizontalMenuMode()\n }\"\n [class]=\"'layout-menu-' + colorScheme + ' layout-topbar-' + topbarTheme\"\n>\n <ocx-shell-header [menuButtonTitle]=\"menuButtonTitle\" (menuButtonClick)=\"onMenuButtonClick($event)\">\n <ocx-slot name=\"horizontalMenu\" *ngIf=\"isHorizontalMenuVisible()\"></ocx-slot>\n </ocx-shell-header>\n\n <p-toast></p-toast>\n\n <div class=\"menu-wrapper\">\n <div class=\"layout-menu-container\" *ngIf=\"isStaticalMenuVisible()\">\n <ocx-slot name=\"menu\"></ocx-slot>\n </div>\n </div>\n\n <div class=\"layout-main\">\n <div class=\"layout-content relative\">\n <ocx-slot name=\"subHeader\"></ocx-slot>\n <ng-container *ngIf=\"!showContentProvider || (showContentProvider.showContent$ | async)\">\n <ng-content></ng-content>\n <router-outlet></router-outlet>\n </ng-container>\n </div>\n\n <ocx-shell-footer></ocx-shell-footer>\n </div>\n\n <div *ngIf=\"menuActive || !!activeTopbarItem\" class=\"layout-mask modal-in\"></div>\n</div>\n\n<ng-template #globalError>\n <ocx-shell-error [errCode]=\"globalErrMsg\"></ocx-shell-error>\n</ng-template>\n" }]
261
+ }], ctorParameters: function () {
262
+ return [{ type: i0.Renderer2 }, { type: i1$2.PrimeNGConfig }, { type: i1$2.MessageService }, { type: i1$1.AppStateService }, { type: i1$1.PortalMessageService }, { type: i1$1.UserService }, { type: i1$1.ThemeService }, { type: i3.HttpClient }, { type: i1.Router }, { type: undefined, decorators: [{
263
+ type: Optional
264
+ }, {
265
+ type: Inject,
266
+ args: [SHOW_CONTENT_PROVIDER]
267
+ }] }];
268
+ }, propDecorators: { onResize: [{
280
269
  type: HostListener,
281
270
  args: ['window:resize']
282
271
  }] } });
@@ -318,5 +307,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
318
307
  * Generated bundle index. Do not edit.
319
308
  */
320
309
 
321
- export { GlobalErrorComponent, HeaderComponent, PermissionsCacheService, PortalFooterComponent, PortalViewportComponent, SHELL_BFF_PREFIX, ShellCoreModule };
310
+ export { GlobalErrorComponent, HeaderComponent, PermissionsCacheService, PortalFooterComponent, PortalViewportComponent, SHELL_BFF_PREFIX, SHOW_CONTENT_PROVIDER, ShellCoreModule };
322
311
  //# sourceMappingURL=onecx-shell-core.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"onecx-shell-core.mjs","sources":["../../../../libs/shell-core/src/lib/components/error-component/global-error.component.ts","../../../../libs/shell-core/src/lib/components/error-component/global-error.component.html","../../../../libs/shell-core/src/lib/model/constants.ts","../../../../libs/shell-core/src/lib/components/portal-footer/portal-footer.component.ts","../../../../libs/shell-core/src/lib/components/portal-footer/portal-footer.component.html","../../../../libs/shell-core/src/lib/components/portal-header/header.component.ts","../../../../libs/shell-core/src/lib/components/portal-header/header.component.html","../../../../libs/shell-core/src/lib/components/portal-viewport/portal-viewport.component.ts","../../../../libs/shell-core/src/lib/components/portal-viewport/portal-viewport.component.html","../../../../libs/shell-core/src/lib/shell-core.module.ts","../../../../libs/shell-core/src/lib/services/permissions-cache.service.ts","../../../../libs/shell-core/src/onecx-shell-core.ts"],"sourcesContent":["import { Component, Input } from '@angular/core'\nimport { ActivatedRoute, Router } from '@angular/router'\n\n@Component({\n selector: 'ocx-shell-error',\n templateUrl: './global-error.component.html',\n styleUrls: ['./global-error.component.scss'],\n})\nexport class GlobalErrorComponent {\n @Input()\n errCode: string | undefined\n backUrl: string\n\n constructor(private router: Router, private route: ActivatedRoute) {\n this.errCode = this.route.snapshot.queryParamMap.get('err') || 'E1001_FAILED_START'\n this.backUrl = this.route.snapshot.queryParamMap.get('return') || '/'\n }\n\n onGoBack() {\n this.router.navigateByUrl(this.backUrl)\n }\n\n reload() {\n window.location.reload()\n }\n}\n","<div class=\"pages-body error-page flex flex-column\">\n <div class=\"align-self-center mt-auto mb-auto\">\n <div class=\"pages-panel card flex flex-column\">\n <div class=\"pages-header px-3 py-1\">\n <h2>ERROR</h2>\n </div>\n <div class=\"card mt-3 px-6\">\n <img src=\"assets/images/error.png\" alt=\"\" />\n </div>\n <div class=\"pages-detail pb-6\">{{errCode}}</div>\n <button pButton pRipple type=\"button\" label=\"Try Again\" (click)=\"reload()\" class=\"p-button-text\"></button>\n </div>\n </div>\n</div>\n","export const SHELL_BFF_PREFIX = 'shell-bff'","import { Component, OnInit } from '@angular/core'\nimport { Router } from '@angular/router'\nimport { AppStateService, ConfigurationService, CONFIG_KEY, ThemeService } from '@onecx/angular-integration-interface'\nimport { ImageLogoUrlUtils } from '@onecx/portal-integration-angular'\nimport { combineLatest, concat, map, Observable, of, withLatestFrom } from 'rxjs'\nimport { SHELL_BFF_PREFIX } from '../../model/constants'\n\n@Component({\n selector: 'ocx-shell-footer',\n templateUrl: './portal-footer.component.html',\n styleUrls: ['./portal-footer.component.scss'],\n})\nexport class PortalFooterComponent implements OnInit {\n logoUrl$: Observable<string | undefined>\n copyrightMsg$: Observable<string> | undefined\n versionInfo$: Observable<string | undefined>\n\n constructor(\n private configurationService: ConfigurationService,\n public router: Router,\n private appState: AppStateService,\n private themeService: ThemeService\n ) {\n this.versionInfo$ = this.appState.currentMfe$.pipe(\n withLatestFrom(this.appState.currentPortal$.asObservable()),\n map(([mfe, portal]) => {\n const mfeInfoVersion = mfe?.version || ''\n const mfeName = mfe?.displayName\n const hostVersion = this.configurationService.getProperty(CONFIG_KEY.APP_VERSION) || 'DEV-LOCAL'\n const mfInfoText = mfeName ? `MF ${mfeName} v${mfeInfoVersion}` : ''\n return `Portal: ${portal.portalName} v${hostVersion} ${mfInfoText}`\n })\n )\n this.logoUrl$ = combineLatest([\n this.themeService.currentTheme$.asObservable(),\n this.appState.currentWorkspace$.asObservable(),\n ]).pipe(\n map(([theme, portalData]) => ImageLogoUrlUtils.createLogoUrl(SHELL_BFF_PREFIX, theme.logoUrl || portalData.logoUrl))\n )\n }\n\n ngOnInit(): void {\n this.copyrightMsg$ = concat(\n of('Capgemini. All rights reserved.'),\n this.appState.currentWorkspace$.pipe(\n map((portalData) => {\n if (\n !(\n portalData.footerLabel === '' ||\n portalData.footerLabel === 'string' ||\n portalData.footerLabel === undefined\n )\n ) {\n return portalData.companyName || portalData.footerLabel || 'All rights reserved.'\n }\n return ''\n })\n )\n )\n }\n\n public onErrorHandleSrc(): void {\n this.logoUrl$ = of(undefined)\n }\n}\n","<div class=\"ml-3 py-2 lg:ml-5 flex flex-wrap align-items-center justify-content-between row-gap-1\">\n <div class=\"flex flex-wrap align-items-center justify-content-start gap-3 row-gap-1\">\n <img *ngIf=\"logoUrl$ | async\" alt=\"logo\" class=\"max-h-1rem\" [ocxSrc]=\"(logoUrl$ | async) ?? ''\" (error)=\"onErrorHandleSrc()\" />\n <div class=\"flex-none text-sm\">&copy; {{copyrightMsg$ | async}}</div>\n <ocx-slot name=\"footer-menu-items\">Footer Menu Items</ocx-slot>\n </div>\n <div class=\"mr-5 text-sm\">{{versionInfo$ | async}}</div>\n</div>\n","import { animate, style, transition, trigger } from '@angular/animations'\nimport { Component, EventEmitter, Input, Output } from '@angular/core'\nimport { UntilDestroy } from '@ngneat/until-destroy'\nimport { AppStateService, ThemeService } from '@onecx/angular-integration-interface'\nimport { ImageLogoUrlUtils } from '@onecx/portal-integration-angular'\nimport { combineLatest, map, Observable } from 'rxjs'\nimport { SHELL_BFF_PREFIX } from '../../model/constants'\n\n@Component({\n selector: 'ocx-shell-header',\n templateUrl: './header.component.html',\n styleUrls: ['./header.component.scss'],\n animations: [\n trigger('topbarActionPanelAnimation', [\n transition(':enter', [\n style({ opacity: 0, transform: 'scaleY(0.8)' }),\n animate('.12s cubic-bezier(0, 0, 0.2, 1)', style({ opacity: 1, transform: '*' })),\n ]),\n transition(':leave', [animate('.1s linear', style({ opacity: 0 }))]),\n ]),\n ],\n})\n@UntilDestroy()\nexport class HeaderComponent {\n menuExpanded = false\n fallbackImg = false\n\n @Input()\n menuButtonTitle: string | undefined\n @Input()\n fullPortalLayout = true\n @Input()\n homeNavUrl = '/'\n @Input()\n homeNavTitle = 'Home'\n\n @Output()\n menuButtonClick: EventEmitter<any> = new EventEmitter()\n\n logoUrl$: Observable<string | undefined>\n\n constructor(private themeService: ThemeService, private appStateService: AppStateService) {\n this.logoUrl$ = combineLatest([\n this.themeService.currentTheme$.asObservable(),\n this.appStateService.currentWorkspace$.asObservable(),\n ]).pipe(\n map(([theme, portal]) => {\n return ImageLogoUrlUtils.createLogoUrl(SHELL_BFF_PREFIX, theme.logoUrl || portal.logoUrl)\n })\n )\n }\n\n onMenuButtonClick(e: Event) {\n this.menuButtonClick.emit(e)\n }\n}\n","<div class=\"layout-topbar shadow-4\" id=\"header\" role=\"banner\">\n <div class=\"layout-topbar-left\">\n <a class=\"layout-topbar-logo\">\n <img\n id=\"app-logo\"\n [ocxSrc]=\"(logoUrl$ | async) ?? ''\"\n alt=\"Logo\"\n style=\"max-height: 100%; max-width: 100%\"\n *ngIf=\"(logoUrl$ | async) && !fallbackImg\"\n (error)=\"fallbackImg=true\"\n />\n <svg *ngIf=\"((logoUrl$ | async) === null) || fallbackImg\" width=\"160\" viewBox=\"0 0 283 72\" class=\"default-logo\">\n <defs id=\"SvgjsDefs4962\"></defs>\n <g\n id=\"SvgjsG4963\"\n featurekey=\"symbolFeature-0\"\n transform=\"matrix(0.7555406501686023,0,0,0.7555406501686023,-4.883814572467361,-0.26595028490140254)\"\n >\n <path\n xmlns=\"http://www.w3.org/2000/svg\"\n d=\"M88.54,46.256L9.464,0.616c-0.616-0.352-1.384-0.352-2,0c-0.62,0.36-1,1.02-1,1.736v91.296c0,0.716,0.38,1.375,1,1.731 c0.308,0.185,0.656,0.269,1,0.269c0.344,0,0.692-0.084,1-0.269L88.54,49.729c0.616-0.36,1-1.021,1-1.736 C89.54,47.276,89.152,46.616,88.54,46.256z M60.08,49.771L21.388,69.805c-0.288,0.147-0.604,0.223-0.92,0.223 c-0.36,0-0.72-0.092-1.04-0.287c-0.596-0.364-0.96-1.008-0.96-1.713v-40.06c0-0.696,0.364-1.344,0.96-1.712 c0.596-0.36,1.336-0.392,1.96-0.068l38.696,20.028c0.664,0.344,1.084,1.032,1.084,1.772C61.164,48.74,60.744,49.428,60.08,49.771z\"\n ></path>\n <path xmlns=\"http://www.w3.org/2000/svg\" d=\"M22.464,64.744l32.345-16.748l-32.345-16.74V64.744z\"></path>\n </g>\n <g\n id=\"SvgjsG4964\"\n featurekey=\"nameFeature-0\"\n transform=\"matrix(1.0207331753701396,0,0,1.0207331753701396,81.5644404108694,15.72408377414908)\"\n >\n <path\n d=\"M17.344 32.6562 c-0.78125 -0.15625 -1.5105 -0.3907 -2.1876 -0.7032 c-1.4584 -0.67711 -2.7344 -1.6146 -3.8281 -2.8125 c-1.0416 -1.0938 -1.875 -2.4479 -2.5 -4.0625 c-0.57289 -1.6146 -0.85938 -3.2552 -0.85938 -4.9219 l0 -0.15625 l0 -0.23438 c0 -1.7188 0.28648 -3.3854 0.85938 -5 c0.67711 -1.6666 1.5105 -2.9948 2.5001 -3.9844 c1.0416 -1.1979 2.2916 -2.1094 3.75 -2.7344 c0.88539 -0.41664 1.6406 -0.67703 2.2656 -0.78117 l0 -5.8594 c-1.8229 0.26039 -3.4375 0.70313 -4.8438 1.3281 c-2.2916 0.98961 -4.2448 2.3177 -5.8594 3.9844 s-2.8906 3.6458 -3.8281 5.9374 s-1.4063 4.6875 -1.4063 7.1875 l0 0.15625 l0 0.23438 c0 2.5521 0.46875 4.948 1.4063 7.1876 c0.83336 2.2396 2.0834 4.1927 3.75 5.8594 c1.6666 1.7188 3.6198 3.0469 5.8594 3.9844 c1.4063 0.625 3.0469 1.0677 4.9219 1.3281 l0 -5.9375 z M38.594 20 l0.000076294 -0.23438 c0 -2.5521 -0.46875 -4.948 -1.4063 -7.1876 c-0.9375 -2.2916 -2.2135 -4.2708 -3.8281 -5.9374 c-1.5625 -1.6666 -3.4896 -2.9688 -5.7813 -3.9063 c-1.3021 -0.625 -2.8906 -1.0677 -4.7656 -1.3281 l0 5.9375 l0.9375 0.3125 c0.46875 0.15625 0.83336 0.28648 1.0938 0.39063 c1.4584 0.67711 2.7344 1.6146 3.8281 2.8125 c1.0416 1.0938 1.875 2.4479 2.5 4.0625 c0.57289 1.6146 0.85938 3.2552 0.85938 4.9219 l0 0.15625 l0 0.23438 c0 1.7188 -0.28648 3.3854 -0.85938 5 c-0.67711 1.6666 -1.5105 2.9948 -2.5001 3.9844 c-1.0416 1.1979 -2.2916 2.1094 -3.75 2.7344 c-0.67711 0.3125 -1.3802 0.54688 -2.1094 0.70313 l0 5.9375 c1.5625 -0.20836 3.125 -0.65109 4.6875 -1.3282 c2.1354 -0.88539 4.0885 -2.2135 5.8594 -3.9844 c1.7188 -1.8229 2.9948 -3.802 3.8281 -5.9374 c0.9375 -2.2916 1.4063 -4.6875 1.4063 -7.1875 l0 -0.15625 z M43.8281 38.5937 l6.4844 0 l0 -19.922 l-6.4844 -9.1406 l0 29.063 z M69.76599999999999 1.4059999999999988 l0 25.703 l-18.359 -25.703 l-7.0313 0 l26.406 37.188 l5.3906 0 l0 -37.188 l-6.4063 0 z M86.0938 1.4059999999999988 l27.813 0 l0 5.9375 l-27.813 0 l0 -5.9375 z M86.0938 32.6562 l27.734 0 l0 5.9375 l-27.734 0 l0 -5.9375 z M86.0938 16.875 l25.078 0 l0 5.8594 l-25.078 0 l0 -5.8594 z M127.2656 12.5 c0.9375 -2.2916 2.2916 -4.2447 4.0624 -5.8593 c1.6146 -1.6146 3.698 -2.9167 6.2501 -3.9063 s5.2344 -1.4844 8.0469 -1.4844 l8.6719 0 l0 5.9375 l-8.5938 0 c-2.0313 0 -3.8281 0.33852 -5.3906 1.0156 c-1.6666 0.67711 -3.0208 1.5625 -4.0624 2.6563 c-1.0938 1.0416 -1.9791 2.3958 -2.6563 4.0624 c-0.625 1.5104 -0.9375 3.2031 -0.9375 5.0781 s0.3125 3.5677 0.9375 5.0781 c0.625 1.5625 1.5104 2.9166 2.6563 4.0625 c1.0416 1.0416 2.3958 1.901 4.0624 2.5781 c1.6666 0.625 3.4635 0.9375 5.3906 0.9375 l8.5938 0 l0 5.9375 l-8.6719 0 c-2.9166 0 -5.5729 -0.46875 -7.9688 -1.4063 c-2.5 -1.0416 -4.6094 -2.3698 -6.3281 -3.9844 c-1.7709 -1.6666 -3.125 -3.6458 -4.0625 -5.9374 c-0.98961 -2.3959 -1.4844 -4.8438 -1.4844 -7.3438 c0 -2.6563 0.49477 -5.1302 1.4844 -7.4219 z M176.484 29.375 l3.5156 -4.6875 l-0.078125 -0.15625 z M196.875 1.4059999999999988 l-7.5 0 l-9.2969 13.359 l-9.2188 -13.359 l-7.7344 0 l13.047 18.281 l-13.516 18.906 l8.3594 0 z M197.344 38.5937 l-10.313 -14.609 l-3.9063 5.2344 l6.5625 9.375 l7.6563 0 z\"\n ></path>\n </g>\n </svg>\n </a>\n\n <a class=\"layout-menu-button shadow-6\" (click)=\"onMenuButtonClick($event)\" pRipple [title]=\"menuButtonTitle ?? ('OCX_HEADER.MENU_TOGGLE')\">\n <i class=\"pi pi-chevron-right\"></i>\n </a>\n </div>\n\n <div class=\"layout-topbar-right\">\n <div class=\"layout-topbar-actions-left\">\n <ng-content></ng-content>\n </div>\n <div class=\"layout-topbar-actions-right\">\n <ocx-slot name=\"headerRight\" class=\"layout-topbar-items\"></ocx-slot>\n <ul class=\"layout-topbar-items\">\n <!-- Only desktop: Actions (favorites, support, search, ...) as icon buttons -->\n <ng-container *ocxIfBreakpoint=\"'desktop'\">\n\n </ng-container>\n\n <!-- Only mobile: Actions (favorites, support, search, ...) as 'more' button + overlay -->\n <li class=\"layout-topbar-item\" *ocxIfBreakpoint=\"'mobile'\">\n \n </li>\n </ul>\n </div>\n </div>\n</div>\n","import { HttpClient } from '@angular/common/http'\nimport { AfterViewInit, Component, HostListener, OnDestroy, OnInit, Renderer2 } from '@angular/core'\nimport { NavigationEnd, Router, RoutesRecognized } from '@angular/router'\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy'\nimport {\n AppStateService,\n Message,\n PortalMessageService,\n ThemeService,\n UserService,\n} from '@onecx/angular-integration-interface'\nimport { MessageService, PrimeNGConfig } from 'primeng/api'\nimport {\n bufferCount,\n combineLatest,\n filter,\n first,\n map,\n mergeMap,\n of,\n startWith\n} from 'rxjs'\n\n@Component({\n selector: 'ocx-shell-portal-viewport',\n templateUrl: './portal-viewport.component.html',\n styleUrls: ['./portal-viewport.component.scss'],\n})\n@UntilDestroy()\nexport class PortalViewportComponent implements OnInit, AfterViewInit, OnDestroy {\n menuButtonTitle = ''\n menuActive = true\n activeTopbarItem: string | undefined\n\n removeDocumentClickListener: (() => void) | undefined\n\n topbarTheme = 'var'\n colorScheme: 'auto' | 'light' | 'dark' = 'light'\n layoutMode: 'auto' | 'light' | 'dark' = 'light'\n menuMode: 'horizontal' | 'static' | 'overlay' | 'slim' | 'slimplus' = 'static'\n inputStyle = 'outline'\n ripple = true\n isMobile = false\n\n globalErrMsg: string | undefined\n\n showContent$ = combineLatest([\n this.appStateService.globalLoading$.asObservable().pipe(startWith(true, true), bufferCount(3, 1)),\n this.router.events\n .pipe(\n filter(\n (e): e is NavigationEnd | RoutesRecognized => e instanceof NavigationEnd || e instanceof RoutesRecognized\n )\n )\n .pipe(startWith({ url: undefined }), bufferCount(3, 1)),\n ]).pipe(\n map(([[beforeLastGlobalLoading, lastGlobalLoading, globalLoading], [beforeLastEvent, lastEvent, event]]) => {\n if (!lastGlobalLoading && globalLoading) {\n return false\n }\n if (beforeLastGlobalLoading) {\n return true\n }\n if (!beforeLastEvent.url) {\n return false\n }\n if (lastEvent.url !== event.url) {\n return false\n }\n return true\n })\n )\n\n constructor(\n private renderer: Renderer2,\n private primengConfig: PrimeNGConfig,\n private messageService: MessageService,\n public appStateService: AppStateService,\n private portalMessageService: PortalMessageService,\n private userService: UserService,\n private themeService: ThemeService,\n private httpClient: HttpClient,\n private router: Router\n ) {\n this.portalMessageService.message$.subscribe((message: Message) => this.messageService.add(message))\n this.userService.profile$.pipe(untilDestroyed(this)).subscribe((profile) => {\n this.menuMode =\n (profile?.accountSettings?.layoutAndThemeSettings?.menuMode?.toLowerCase() as\n | typeof this.menuMode\n | undefined) || this.menuMode\n\n this.colorScheme =\n (profile?.accountSettings?.layoutAndThemeSettings?.colorScheme?.toLowerCase() as\n | typeof this.colorScheme\n | undefined) || this.colorScheme\n })\n\n this.themeService.currentTheme$\n .pipe(\n first(),\n mergeMap((theme) => {\n return theme.faviconUrl\n ? this.httpClient\n .get(theme.faviconUrl, { responseType: 'blob' })\n .pipe(map((blob) => URL.createObjectURL(blob)))\n : of('')\n })\n )\n .subscribe((url) => {\n let link = document.querySelector(\"link[rel~='icon']\") as any\n if (!link) {\n link = document.createElement('link')\n link.rel = 'icon'\n document.head.appendChild(link)\n }\n link.onload = () => {\n URL.revokeObjectURL(url)\n }\n link.href = url\n })\n }\n\n ngOnInit() {\n this.primengConfig.ripple = true\n\n this.appStateService.globalError$\n .pipe(untilDestroyed(this))\n .pipe(filter((i) => i !== undefined))\n .subscribe((err: string | undefined) => {\n this.globalErrMsg = err\n })\n\n this.onResize()\n }\n\n ngAfterViewInit() {\n // hides the horizontal submenus or top menu if outside is clicked\n this.removeDocumentClickListener = this.renderer.listen('body', 'click', () => {\n this.activeTopbarItem = undefined\n if (this.isMobile) this.menuActive = false\n })\n }\n\n ngOnDestroy() {\n this.removeDocumentClickListener?.()\n }\n\n onMenuButtonClick(event: MouseEvent) {\n this.activeTopbarItem = undefined\n this.menuActive = !this.menuActive\n event.preventDefault()\n event.stopPropagation()\n }\n\n @HostListener('window:resize')\n onResize() {\n const mobileBreakpointVar = getComputedStyle(document.documentElement).getPropertyValue('--mobile-break-point')\n const isMobile = window.matchMedia(`(max-width: ${mobileBreakpointVar})`).matches\n // auto show sidebar when changing to desktop, hide when changing to mobile\n if (isMobile !== this.isMobile) this.menuActive = !isMobile\n this.isMobile = isMobile\n }\n\n isHorizontalMenuMode() {\n return this.menuMode === 'horizontal' && !this.isMobile\n }\n\n isStaticalMenuVisible() {\n return this.menuActive && !this.isHorizontalMenuMode()\n }\n\n isHorizontalMenuVisible() {\n return this.isHorizontalMenuMode()\n }\n}\n","<div\n *ngIf=\"!globalErrMsg; else globalError\"\n class=\"layout-wrapper\"\n [ngClass]=\"{\n 'p-input-filled': inputStyle === 'filled', \n 'p-ripple-disabled': !ripple,\n 'layout-menu-active': isStaticalMenuVisible(),\n 'layout-menu-button-hidden': isHorizontalMenuMode()\n }\"\n [class]=\"'layout-menu-' + colorScheme + ' layout-topbar-' + topbarTheme\"\n>\n <ocx-shell-header\n [menuButtonTitle]=\"menuButtonTitle\"\n (menuButtonClick)=\"onMenuButtonClick($event)\"\n >\n <ocx-slot name=\"horizontalMenu\" *ngIf=\"isHorizontalMenuVisible()\"></ocx-slot>\n \n </ocx-shell-header>\n\n <p-toast></p-toast>\n\n <div class=\"menu-wrapper\">\n <div class=\"layout-menu-container\" *ngIf=\"isStaticalMenuVisible()\">\n <ocx-slot name=\"menu\"></ocx-slot>\n </div>\n </div>\n \n <div class=\"layout-main\">\n <div class=\"layout-content relative\">\n <ocx-slot name=\"subHeader\"></ocx-slot>\n <ng-container *ngIf=\"showContent$ | async\">\n <ng-content></ng-content>\n <router-outlet></router-outlet>\n </ng-container>\n </div>\n \n <ocx-shell-footer></ocx-shell-footer>\n </div>\n \n <div *ngIf=\"menuActive || !!activeTopbarItem\" class=\"layout-mask modal-in\"></div>\n</div>\n\n<ng-template #globalError>\n <ocx-shell-error [errCode]=\"globalErrMsg\"></ocx-shell-error>\n</ng-template>","import { CommonModule } from '@angular/common'\nimport { NgModule } from '@angular/core'\nimport { RouterModule } from '@angular/router'\nimport { AngularAcceleratorModule } from '@onecx/angular-accelerator'\nimport { AngularRemoteComponentsModule } from '@onecx/angular-remote-components'\nimport { ToastModule } from 'primeng/toast'\nimport { GlobalErrorComponent } from './components/error-component/global-error.component'\nimport { PortalFooterComponent } from './components/portal-footer/portal-footer.component'\nimport { HeaderComponent } from './components/portal-header/header.component'\nimport { PortalViewportComponent } from './components/portal-viewport/portal-viewport.component'\n\n@NgModule({\n imports: [CommonModule, RouterModule, AngularRemoteComponentsModule, AngularAcceleratorModule, ToastModule],\n declarations: [PortalViewportComponent, HeaderComponent, PortalFooterComponent, GlobalErrorComponent],\n exports: [PortalViewportComponent, HeaderComponent, PortalFooterComponent, ToastModule, GlobalErrorComponent],\n})\nexport class ShellCoreModule {}\n","import { Injectable } from '@angular/core'\nimport { Observable, shareReplay } from 'rxjs'\n\n@Injectable({ providedIn: 'root' })\nexport class PermissionsCacheService {\n permissions: Record<string, Observable<string[]>> = {}\n\n getPermissions(\n appId: string,\n productName: string,\n cacheMissFkt: (appId: string, productName: string) => Observable<string[]>\n ): Observable<string[]> {\n const key = appId + '|' + productName\n if (!this.permissions[key]) {\n this.permissions[key] = cacheMissFkt(appId, productName).pipe(shareReplay())\n }\n return this.permissions[key]\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2","i3","i5","i4","i6","i8.HeaderComponent","i9.PortalFooterComponent","i10.GlobalErrorComponent"],"mappings":"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"}
1
+ {"version":3,"file":"onecx-shell-core.mjs","sources":["../../../../libs/shell-core/src/lib/components/error-component/global-error.component.ts","../../../../libs/shell-core/src/lib/components/error-component/global-error.component.html","../../../../libs/shell-core/src/lib/model/constants.ts","../../../../libs/shell-core/src/lib/components/portal-footer/portal-footer.component.ts","../../../../libs/shell-core/src/lib/components/portal-footer/portal-footer.component.html","../../../../libs/shell-core/src/lib/components/portal-header/header.component.ts","../../../../libs/shell-core/src/lib/components/portal-header/header.component.html","../../../../libs/shell-core/src/lib/components/portal-viewport/portal-viewport.component.ts","../../../../libs/shell-core/src/lib/components/portal-viewport/portal-viewport.component.html","../../../../libs/shell-core/src/lib/shell-core.module.ts","../../../../libs/shell-core/src/lib/services/permissions-cache.service.ts","../../../../libs/shell-core/src/onecx-shell-core.ts"],"sourcesContent":["import { Component, Input } from '@angular/core'\nimport { ActivatedRoute, Router } from '@angular/router'\n\n@Component({\n selector: 'ocx-shell-error',\n templateUrl: './global-error.component.html',\n styleUrls: ['./global-error.component.scss'],\n})\nexport class GlobalErrorComponent {\n @Input()\n errCode: string | undefined\n backUrl: string\n\n constructor(private router: Router, private route: ActivatedRoute) {\n this.errCode = this.route.snapshot.queryParamMap.get('err') || 'E1001_FAILED_START'\n this.backUrl = this.route.snapshot.queryParamMap.get('return') || '/'\n }\n\n onGoBack() {\n this.router.navigateByUrl(this.backUrl)\n }\n\n reload() {\n window.location.reload()\n }\n}\n","<div class=\"pages-body error-page flex flex-column\">\n <div class=\"align-self-center mt-auto mb-auto\">\n <div class=\"pages-panel card flex flex-column\">\n <div class=\"pages-header px-3 py-1\">\n <h2>ERROR</h2>\n </div>\n <div class=\"card mt-3 px-6\">\n <img src=\"assets/images/error.png\" alt=\"\" />\n </div>\n <div class=\"pages-detail pb-6\">{{errCode}}</div>\n <button pButton pRipple type=\"button\" label=\"Try Again\" (click)=\"reload()\" class=\"p-button-text\"></button>\n </div>\n </div>\n</div>\n","export const SHELL_BFF_PREFIX = 'shell-bff'","import { Component, OnInit } from '@angular/core'\nimport { Router } from '@angular/router'\nimport { AppStateService, ConfigurationService, CONFIG_KEY, ThemeService } from '@onecx/angular-integration-interface'\nimport { ImageLogoUrlUtils } from '@onecx/portal-integration-angular'\nimport { combineLatest, concat, map, Observable, of, withLatestFrom } from 'rxjs'\nimport { SHELL_BFF_PREFIX } from '../../model/constants'\n\n@Component({\n selector: 'ocx-shell-footer',\n templateUrl: './portal-footer.component.html',\n styleUrls: ['./portal-footer.component.scss'],\n})\nexport class PortalFooterComponent implements OnInit {\n logoUrl$: Observable<string | undefined>\n copyrightMsg$: Observable<string> | undefined\n versionInfo$: Observable<string | undefined>\n\n constructor(\n private configurationService: ConfigurationService,\n public router: Router,\n private appState: AppStateService,\n private themeService: ThemeService\n ) {\n this.versionInfo$ = this.appState.currentMfe$.pipe(\n withLatestFrom(this.appState.currentPortal$.asObservable()),\n map(([mfe, portal]) => {\n const mfeInfoVersion = mfe?.version || ''\n const mfeName = mfe?.displayName\n const hostVersion = this.configurationService.getProperty(CONFIG_KEY.APP_VERSION) || 'DEV-LOCAL'\n const mfInfoText = mfeName ? `MF ${mfeName} v${mfeInfoVersion}` : ''\n return `Portal: ${portal.portalName} v${hostVersion} ${mfInfoText}`\n })\n )\n this.logoUrl$ = combineLatest([\n this.themeService.currentTheme$.asObservable(),\n this.appState.currentWorkspace$.asObservable(),\n ]).pipe(\n map(([theme, portalData]) => ImageLogoUrlUtils.createLogoUrl(SHELL_BFF_PREFIX, theme.logoUrl || portalData.logoUrl))\n )\n }\n\n ngOnInit(): void {\n this.copyrightMsg$ = concat(\n of('Capgemini. All rights reserved.'),\n this.appState.currentWorkspace$.pipe(\n map((portalData) => {\n if (\n !(\n portalData.footerLabel === '' ||\n portalData.footerLabel === 'string' ||\n portalData.footerLabel === undefined\n )\n ) {\n return portalData.companyName || portalData.footerLabel || 'All rights reserved.'\n }\n return ''\n })\n )\n )\n }\n\n public onErrorHandleSrc(): void {\n this.logoUrl$ = of(undefined)\n }\n}\n","<div class=\"ml-3 py-2 lg:ml-5 flex flex-wrap align-items-center justify-content-between row-gap-1\">\n <div class=\"flex flex-wrap align-items-center justify-content-start gap-3 row-gap-1\">\n <img *ngIf=\"logoUrl$ | async\" alt=\"logo\" class=\"max-h-1rem\" [ocxSrc]=\"(logoUrl$ | async) ?? ''\" (error)=\"onErrorHandleSrc()\" />\n <div class=\"flex-none text-sm\">&copy; {{copyrightMsg$ | async}}</div>\n <ocx-slot name=\"footer-menu-items\">Footer Menu Items</ocx-slot>\n </div>\n <div class=\"mr-5 text-sm\">{{versionInfo$ | async}}</div>\n</div>\n","import { animate, style, transition, trigger } from '@angular/animations'\nimport { Component, EventEmitter, Input, Output } from '@angular/core'\nimport { UntilDestroy } from '@ngneat/until-destroy'\nimport { AppStateService, ThemeService } from '@onecx/angular-integration-interface'\nimport { ImageLogoUrlUtils } from '@onecx/portal-integration-angular'\nimport { combineLatest, map, Observable } from 'rxjs'\nimport { SHELL_BFF_PREFIX } from '../../model/constants'\n\n@Component({\n selector: 'ocx-shell-header',\n templateUrl: './header.component.html',\n styleUrls: ['./header.component.scss'],\n animations: [\n trigger('topbarActionPanelAnimation', [\n transition(':enter', [\n style({ opacity: 0, transform: 'scaleY(0.8)' }),\n animate('.12s cubic-bezier(0, 0, 0.2, 1)', style({ opacity: 1, transform: '*' })),\n ]),\n transition(':leave', [animate('.1s linear', style({ opacity: 0 }))]),\n ]),\n ],\n})\n@UntilDestroy()\nexport class HeaderComponent {\n menuExpanded = false\n fallbackImg = false\n\n @Input()\n menuButtonTitle: string | undefined\n @Input()\n fullPortalLayout = true\n @Input()\n homeNavUrl = '/'\n @Input()\n homeNavTitle = 'Home'\n\n @Output()\n menuButtonClick: EventEmitter<any> = new EventEmitter()\n\n logoUrl$: Observable<string | undefined>\n\n constructor(private themeService: ThemeService, private appStateService: AppStateService) {\n this.logoUrl$ = combineLatest([\n this.themeService.currentTheme$.asObservable(),\n this.appStateService.currentWorkspace$.asObservable(),\n ]).pipe(\n map(([theme, portal]) => {\n return ImageLogoUrlUtils.createLogoUrl(SHELL_BFF_PREFIX, theme.logoUrl || portal.logoUrl)\n })\n )\n }\n\n onMenuButtonClick(e: Event) {\n this.menuButtonClick.emit(e)\n }\n}\n","<div class=\"layout-topbar shadow-4\" id=\"header\" role=\"banner\">\n <div class=\"layout-topbar-left\">\n <a class=\"layout-topbar-logo\">\n <img\n id=\"app-logo\"\n [ocxSrc]=\"(logoUrl$ | async) ?? ''\"\n alt=\"Logo\"\n style=\"max-height: 100%; max-width: 100%\"\n *ngIf=\"(logoUrl$ | async) && !fallbackImg\"\n (error)=\"fallbackImg=true\"\n />\n <svg *ngIf=\"((logoUrl$ | async) === null) || fallbackImg\" width=\"160\" viewBox=\"0 0 283 72\" class=\"default-logo\">\n <defs id=\"SvgjsDefs4962\"></defs>\n <g\n id=\"SvgjsG4963\"\n featurekey=\"symbolFeature-0\"\n transform=\"matrix(0.7555406501686023,0,0,0.7555406501686023,-4.883814572467361,-0.26595028490140254)\"\n >\n <path\n xmlns=\"http://www.w3.org/2000/svg\"\n d=\"M88.54,46.256L9.464,0.616c-0.616-0.352-1.384-0.352-2,0c-0.62,0.36-1,1.02-1,1.736v91.296c0,0.716,0.38,1.375,1,1.731 c0.308,0.185,0.656,0.269,1,0.269c0.344,0,0.692-0.084,1-0.269L88.54,49.729c0.616-0.36,1-1.021,1-1.736 C89.54,47.276,89.152,46.616,88.54,46.256z M60.08,49.771L21.388,69.805c-0.288,0.147-0.604,0.223-0.92,0.223 c-0.36,0-0.72-0.092-1.04-0.287c-0.596-0.364-0.96-1.008-0.96-1.713v-40.06c0-0.696,0.364-1.344,0.96-1.712 c0.596-0.36,1.336-0.392,1.96-0.068l38.696,20.028c0.664,0.344,1.084,1.032,1.084,1.772C61.164,48.74,60.744,49.428,60.08,49.771z\"\n ></path>\n <path xmlns=\"http://www.w3.org/2000/svg\" d=\"M22.464,64.744l32.345-16.748l-32.345-16.74V64.744z\"></path>\n </g>\n <g\n id=\"SvgjsG4964\"\n featurekey=\"nameFeature-0\"\n transform=\"matrix(1.0207331753701396,0,0,1.0207331753701396,81.5644404108694,15.72408377414908)\"\n >\n <path\n d=\"M17.344 32.6562 c-0.78125 -0.15625 -1.5105 -0.3907 -2.1876 -0.7032 c-1.4584 -0.67711 -2.7344 -1.6146 -3.8281 -2.8125 c-1.0416 -1.0938 -1.875 -2.4479 -2.5 -4.0625 c-0.57289 -1.6146 -0.85938 -3.2552 -0.85938 -4.9219 l0 -0.15625 l0 -0.23438 c0 -1.7188 0.28648 -3.3854 0.85938 -5 c0.67711 -1.6666 1.5105 -2.9948 2.5001 -3.9844 c1.0416 -1.1979 2.2916 -2.1094 3.75 -2.7344 c0.88539 -0.41664 1.6406 -0.67703 2.2656 -0.78117 l0 -5.8594 c-1.8229 0.26039 -3.4375 0.70313 -4.8438 1.3281 c-2.2916 0.98961 -4.2448 2.3177 -5.8594 3.9844 s-2.8906 3.6458 -3.8281 5.9374 s-1.4063 4.6875 -1.4063 7.1875 l0 0.15625 l0 0.23438 c0 2.5521 0.46875 4.948 1.4063 7.1876 c0.83336 2.2396 2.0834 4.1927 3.75 5.8594 c1.6666 1.7188 3.6198 3.0469 5.8594 3.9844 c1.4063 0.625 3.0469 1.0677 4.9219 1.3281 l0 -5.9375 z M38.594 20 l0.000076294 -0.23438 c0 -2.5521 -0.46875 -4.948 -1.4063 -7.1876 c-0.9375 -2.2916 -2.2135 -4.2708 -3.8281 -5.9374 c-1.5625 -1.6666 -3.4896 -2.9688 -5.7813 -3.9063 c-1.3021 -0.625 -2.8906 -1.0677 -4.7656 -1.3281 l0 5.9375 l0.9375 0.3125 c0.46875 0.15625 0.83336 0.28648 1.0938 0.39063 c1.4584 0.67711 2.7344 1.6146 3.8281 2.8125 c1.0416 1.0938 1.875 2.4479 2.5 4.0625 c0.57289 1.6146 0.85938 3.2552 0.85938 4.9219 l0 0.15625 l0 0.23438 c0 1.7188 -0.28648 3.3854 -0.85938 5 c-0.67711 1.6666 -1.5105 2.9948 -2.5001 3.9844 c-1.0416 1.1979 -2.2916 2.1094 -3.75 2.7344 c-0.67711 0.3125 -1.3802 0.54688 -2.1094 0.70313 l0 5.9375 c1.5625 -0.20836 3.125 -0.65109 4.6875 -1.3282 c2.1354 -0.88539 4.0885 -2.2135 5.8594 -3.9844 c1.7188 -1.8229 2.9948 -3.802 3.8281 -5.9374 c0.9375 -2.2916 1.4063 -4.6875 1.4063 -7.1875 l0 -0.15625 z M43.8281 38.5937 l6.4844 0 l0 -19.922 l-6.4844 -9.1406 l0 29.063 z M69.76599999999999 1.4059999999999988 l0 25.703 l-18.359 -25.703 l-7.0313 0 l26.406 37.188 l5.3906 0 l0 -37.188 l-6.4063 0 z M86.0938 1.4059999999999988 l27.813 0 l0 5.9375 l-27.813 0 l0 -5.9375 z M86.0938 32.6562 l27.734 0 l0 5.9375 l-27.734 0 l0 -5.9375 z M86.0938 16.875 l25.078 0 l0 5.8594 l-25.078 0 l0 -5.8594 z M127.2656 12.5 c0.9375 -2.2916 2.2916 -4.2447 4.0624 -5.8593 c1.6146 -1.6146 3.698 -2.9167 6.2501 -3.9063 s5.2344 -1.4844 8.0469 -1.4844 l8.6719 0 l0 5.9375 l-8.5938 0 c-2.0313 0 -3.8281 0.33852 -5.3906 1.0156 c-1.6666 0.67711 -3.0208 1.5625 -4.0624 2.6563 c-1.0938 1.0416 -1.9791 2.3958 -2.6563 4.0624 c-0.625 1.5104 -0.9375 3.2031 -0.9375 5.0781 s0.3125 3.5677 0.9375 5.0781 c0.625 1.5625 1.5104 2.9166 2.6563 4.0625 c1.0416 1.0416 2.3958 1.901 4.0624 2.5781 c1.6666 0.625 3.4635 0.9375 5.3906 0.9375 l8.5938 0 l0 5.9375 l-8.6719 0 c-2.9166 0 -5.5729 -0.46875 -7.9688 -1.4063 c-2.5 -1.0416 -4.6094 -2.3698 -6.3281 -3.9844 c-1.7709 -1.6666 -3.125 -3.6458 -4.0625 -5.9374 c-0.98961 -2.3959 -1.4844 -4.8438 -1.4844 -7.3438 c0 -2.6563 0.49477 -5.1302 1.4844 -7.4219 z M176.484 29.375 l3.5156 -4.6875 l-0.078125 -0.15625 z M196.875 1.4059999999999988 l-7.5 0 l-9.2969 13.359 l-9.2188 -13.359 l-7.7344 0 l13.047 18.281 l-13.516 18.906 l8.3594 0 z M197.344 38.5937 l-10.313 -14.609 l-3.9063 5.2344 l6.5625 9.375 l7.6563 0 z\"\n ></path>\n </g>\n </svg>\n </a>\n\n <a class=\"layout-menu-button shadow-6\" (click)=\"onMenuButtonClick($event)\" pRipple [title]=\"menuButtonTitle ?? ('OCX_HEADER.MENU_TOGGLE')\">\n <i class=\"pi pi-chevron-right\"></i>\n </a>\n </div>\n\n <div class=\"layout-topbar-right\">\n <div class=\"layout-topbar-actions-left\">\n <ng-content></ng-content>\n </div>\n <div class=\"layout-topbar-actions-right\">\n <ocx-slot name=\"headerRight\" class=\"layout-topbar-items\"></ocx-slot>\n <ul class=\"layout-topbar-items\">\n <!-- Only desktop: Actions (favorites, support, search, ...) as icon buttons -->\n <ng-container *ocxIfBreakpoint=\"'desktop'\">\n\n </ng-container>\n\n <!-- Only mobile: Actions (favorites, support, search, ...) as 'more' button + overlay -->\n <li class=\"layout-topbar-item\" *ocxIfBreakpoint=\"'mobile'\">\n \n </li>\n </ul>\n </div>\n </div>\n</div>\n","import { HttpClient } from '@angular/common/http'\nimport {\n AfterViewInit,\n Component,\n HostListener,\n Inject,\n InjectionToken,\n OnDestroy,\n OnInit,\n Optional,\n Renderer2,\n} from '@angular/core'\nimport { Router } from '@angular/router'\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy'\nimport {\n AppStateService,\n Message,\n PortalMessageService,\n ThemeService,\n UserService,\n} from '@onecx/angular-integration-interface'\nimport { MessageService, PrimeNGConfig } from 'primeng/api'\nimport { BehaviorSubject, filter, first, map, mergeMap, of } from 'rxjs'\n\nexport const SHOW_CONTENT_PROVIDER = new InjectionToken<ShowContentProvider>('SHOW_CONTENT_PROVIDER')\n\nexport interface ShowContentProvider {\n showContent$: BehaviorSubject<boolean>\n}\n\n@Component({\n selector: 'ocx-shell-portal-viewport',\n templateUrl: './portal-viewport.component.html',\n styleUrls: ['./portal-viewport.component.scss'],\n})\n@UntilDestroy()\nexport class PortalViewportComponent implements OnInit, AfterViewInit, OnDestroy {\n menuButtonTitle = ''\n menuActive = true\n activeTopbarItem: string | undefined\n\n removeDocumentClickListener: (() => void) | undefined\n\n topbarTheme = 'var'\n colorScheme: 'auto' | 'light' | 'dark' = 'light'\n layoutMode: 'auto' | 'light' | 'dark' = 'light'\n menuMode: 'horizontal' | 'static' | 'overlay' | 'slim' | 'slimplus' = 'static'\n inputStyle = 'outline'\n ripple = true\n isMobile = false\n\n globalErrMsg: string | undefined\n\n constructor(\n private renderer: Renderer2,\n private primengConfig: PrimeNGConfig,\n private messageService: MessageService,\n public appStateService: AppStateService,\n private portalMessageService: PortalMessageService,\n private userService: UserService,\n private themeService: ThemeService,\n private httpClient: HttpClient,\n private router: Router,\n @Optional() @Inject(SHOW_CONTENT_PROVIDER) public showContentProvider: ShowContentProvider | undefined\n ) {\n this.portalMessageService.message$.subscribe((message: Message) => this.messageService.add(message))\n this.userService.profile$.pipe(untilDestroyed(this)).subscribe((profile) => {\n this.menuMode =\n (profile?.accountSettings?.layoutAndThemeSettings?.menuMode?.toLowerCase() as\n | typeof this.menuMode\n | undefined) || this.menuMode\n\n this.colorScheme =\n (profile?.accountSettings?.layoutAndThemeSettings?.colorScheme?.toLowerCase() as\n | typeof this.colorScheme\n | undefined) || this.colorScheme\n })\n\n this.themeService.currentTheme$\n .pipe(\n first(),\n mergeMap((theme) => {\n return theme.faviconUrl\n ? this.httpClient\n .get(theme.faviconUrl, { responseType: 'blob' })\n .pipe(map((blob) => URL.createObjectURL(blob)))\n : of('')\n })\n )\n .subscribe((url) => {\n let link = document.querySelector(\"link[rel~='icon']\") as any\n if (!link) {\n link = document.createElement('link')\n link.rel = 'icon'\n document.head.appendChild(link)\n }\n link.onload = () => {\n URL.revokeObjectURL(url)\n }\n link.href = url\n })\n }\n\n ngOnInit() {\n this.primengConfig.ripple = true\n\n this.appStateService.globalError$\n .pipe(untilDestroyed(this))\n .pipe(filter((i) => i !== undefined))\n .subscribe((err: string | undefined) => {\n this.globalErrMsg = err\n })\n\n this.onResize()\n }\n\n ngAfterViewInit() {\n // hides the horizontal submenus or top menu if outside is clicked\n this.removeDocumentClickListener = this.renderer.listen('body', 'click', () => {\n this.activeTopbarItem = undefined\n if (this.isMobile) this.menuActive = false\n })\n }\n\n ngOnDestroy() {\n this.removeDocumentClickListener?.()\n }\n\n onMenuButtonClick(event: MouseEvent) {\n this.activeTopbarItem = undefined\n this.menuActive = !this.menuActive\n event.preventDefault()\n event.stopPropagation()\n }\n\n @HostListener('window:resize')\n onResize() {\n const mobileBreakpointVar = getComputedStyle(document.documentElement).getPropertyValue('--mobile-break-point')\n const isMobile = window.matchMedia(`(max-width: ${mobileBreakpointVar})`).matches\n // auto show sidebar when changing to desktop, hide when changing to mobile\n if (isMobile !== this.isMobile) this.menuActive = !isMobile\n this.isMobile = isMobile\n }\n\n isHorizontalMenuMode() {\n return this.menuMode === 'horizontal' && !this.isMobile\n }\n\n isStaticalMenuVisible() {\n return this.menuActive && !this.isHorizontalMenuMode()\n }\n\n isHorizontalMenuVisible() {\n return this.isHorizontalMenuMode()\n }\n}\n","<div\n *ngIf=\"!globalErrMsg; else globalError\"\n class=\"layout-wrapper\"\n [ngClass]=\"{\n 'p-input-filled': inputStyle === 'filled', \n 'p-ripple-disabled': !ripple,\n 'layout-menu-active': isStaticalMenuVisible(),\n 'layout-menu-button-hidden': isHorizontalMenuMode()\n }\"\n [class]=\"'layout-menu-' + colorScheme + ' layout-topbar-' + topbarTheme\"\n>\n <ocx-shell-header [menuButtonTitle]=\"menuButtonTitle\" (menuButtonClick)=\"onMenuButtonClick($event)\">\n <ocx-slot name=\"horizontalMenu\" *ngIf=\"isHorizontalMenuVisible()\"></ocx-slot>\n </ocx-shell-header>\n\n <p-toast></p-toast>\n\n <div class=\"menu-wrapper\">\n <div class=\"layout-menu-container\" *ngIf=\"isStaticalMenuVisible()\">\n <ocx-slot name=\"menu\"></ocx-slot>\n </div>\n </div>\n\n <div class=\"layout-main\">\n <div class=\"layout-content relative\">\n <ocx-slot name=\"subHeader\"></ocx-slot>\n <ng-container *ngIf=\"!showContentProvider || (showContentProvider.showContent$ | async)\">\n <ng-content></ng-content>\n <router-outlet></router-outlet>\n </ng-container>\n </div>\n\n <ocx-shell-footer></ocx-shell-footer>\n </div>\n\n <div *ngIf=\"menuActive || !!activeTopbarItem\" class=\"layout-mask modal-in\"></div>\n</div>\n\n<ng-template #globalError>\n <ocx-shell-error [errCode]=\"globalErrMsg\"></ocx-shell-error>\n</ng-template>\n","import { CommonModule } from '@angular/common'\nimport { NgModule } from '@angular/core'\nimport { RouterModule } from '@angular/router'\nimport { AngularAcceleratorModule } from '@onecx/angular-accelerator'\nimport { AngularRemoteComponentsModule } from '@onecx/angular-remote-components'\nimport { ToastModule } from 'primeng/toast'\nimport { GlobalErrorComponent } from './components/error-component/global-error.component'\nimport { PortalFooterComponent } from './components/portal-footer/portal-footer.component'\nimport { HeaderComponent } from './components/portal-header/header.component'\nimport { PortalViewportComponent } from './components/portal-viewport/portal-viewport.component'\n\n@NgModule({\n imports: [CommonModule, RouterModule, AngularRemoteComponentsModule, AngularAcceleratorModule, ToastModule],\n declarations: [PortalViewportComponent, HeaderComponent, PortalFooterComponent, GlobalErrorComponent],\n exports: [PortalViewportComponent, HeaderComponent, PortalFooterComponent, ToastModule, GlobalErrorComponent],\n})\nexport class ShellCoreModule {}\n","import { Injectable } from '@angular/core'\nimport { Observable, shareReplay } from 'rxjs'\n\n@Injectable({ providedIn: 'root' })\nexport class PermissionsCacheService {\n permissions: Record<string, Observable<string[]>> = {}\n\n getPermissions(\n appId: string,\n productName: string,\n cacheMissFkt: (appId: string, productName: string) => Observable<string[]>\n ): Observable<string[]> {\n const key = appId + '|' + productName\n if (!this.permissions[key]) {\n this.permissions[key] = cacheMissFkt(appId, productName).pipe(shareReplay())\n }\n return this.permissions[key]\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2","i3","i5","i4","i6","i8.HeaderComponent","i9.PortalFooterComponent","i10.GlobalErrorComponent"],"mappings":"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"}
@@ -1,9 +1,9 @@
1
1
  import * as i5 from '@angular/common';
2
2
  import { CommonModule } from '@angular/common';
3
3
  import * as i0 from '@angular/core';
4
- import { Component, Input, EventEmitter, Output, Renderer2, HostListener, NgModule, Injectable } from '@angular/core';
4
+ import { Component, Input, EventEmitter, Output, InjectionToken, Renderer2, Optional, Inject, HostListener, NgModule, Injectable } from '@angular/core';
5
5
  import * as i1 from '@angular/router';
6
- import { NavigationEnd, RoutesRecognized, Router, RouterModule } from '@angular/router';
6
+ import { Router, RouterModule } from '@angular/router';
7
7
  import * as i4$1 from '@onecx/angular-accelerator';
8
8
  import { AngularAcceleratorModule } from '@onecx/angular-accelerator';
9
9
  import * as i4 from '@onecx/angular-remote-components';
@@ -13,7 +13,7 @@ import { ToastModule } from 'primeng/toast';
13
13
  import * as i1$1 from '@onecx/angular-integration-interface';
14
14
  import { CONFIG_KEY, ThemeService, AppStateService, PortalMessageService, UserService } from '@onecx/angular-integration-interface';
15
15
  import { ImageLogoUrlUtils } from '@onecx/portal-integration-angular';
16
- import { withLatestFrom, map, combineLatest, concat, of, startWith, bufferCount, filter, first, mergeMap, shareReplay } from 'rxjs';
16
+ import { withLatestFrom, map, combineLatest, concat, of, first, mergeMap, filter, shareReplay } from 'rxjs';
17
17
  import { __decorate, __metadata } from 'tslib';
18
18
  import { trigger, transition, style, animate } from '@angular/animations';
19
19
  import { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';
@@ -144,8 +144,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
144
144
  type: Output
145
145
  }] } });
146
146
 
147
+ const SHOW_CONTENT_PROVIDER = new InjectionToken('SHOW_CONTENT_PROVIDER');
147
148
  let PortalViewportComponent = class PortalViewportComponent {
148
- constructor(renderer, primengConfig, messageService, appStateService, portalMessageService, userService, themeService, httpClient, router) {
149
+ constructor(renderer, primengConfig, messageService, appStateService, portalMessageService, userService, themeService, httpClient, router, showContentProvider) {
149
150
  this.renderer = renderer;
150
151
  this.primengConfig = primengConfig;
151
152
  this.messageService = messageService;
@@ -155,6 +156,7 @@ let PortalViewportComponent = class PortalViewportComponent {
155
156
  this.themeService = themeService;
156
157
  this.httpClient = httpClient;
157
158
  this.router = router;
159
+ this.showContentProvider = showContentProvider;
158
160
  this.menuButtonTitle = '';
159
161
  this.menuActive = true;
160
162
  this.topbarTheme = 'var';
@@ -164,26 +166,6 @@ let PortalViewportComponent = class PortalViewportComponent {
164
166
  this.inputStyle = 'outline';
165
167
  this.ripple = true;
166
168
  this.isMobile = false;
167
- this.showContent$ = combineLatest([
168
- this.appStateService.globalLoading$.asObservable().pipe(startWith(true, true), bufferCount(3, 1)),
169
- this.router.events
170
- .pipe(filter((e) => e instanceof NavigationEnd || e instanceof RoutesRecognized))
171
- .pipe(startWith({ url: undefined }), bufferCount(3, 1)),
172
- ]).pipe(map(([[beforeLastGlobalLoading, lastGlobalLoading, globalLoading], [beforeLastEvent, lastEvent, event]]) => {
173
- if (!lastGlobalLoading && globalLoading) {
174
- return false;
175
- }
176
- if (beforeLastGlobalLoading) {
177
- return true;
178
- }
179
- if (!beforeLastEvent.url) {
180
- return false;
181
- }
182
- if (lastEvent.url !== event.url) {
183
- return false;
184
- }
185
- return true;
186
- }));
187
169
  this.portalMessageService.message$.subscribe((message) => this.messageService.add(message));
188
170
  this.userService.profile$.pipe(untilDestroyed(this)).subscribe((profile) => {
189
171
  this.menuMode =
@@ -257,8 +239,8 @@ let PortalViewportComponent = class PortalViewportComponent {
257
239
  return this.isHorizontalMenuMode();
258
240
  }
259
241
  };
260
- PortalViewportComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PortalViewportComponent, deps: [{ token: i0.Renderer2 }, { token: i1$2.PrimeNGConfig }, { token: i1$2.MessageService }, { token: i1$1.AppStateService }, { token: i1$1.PortalMessageService }, { token: i1$1.UserService }, { token: i1$1.ThemeService }, { token: i3.HttpClient }, { token: i1.Router }], target: i0.ɵɵFactoryTarget.Component });
261
- PortalViewportComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: PortalViewportComponent, selector: "ocx-shell-portal-viewport", host: { listeners: { "window:resize": "onResize()" } }, ngImport: i0, template: "<div\n *ngIf=\"!globalErrMsg; else globalError\"\n class=\"layout-wrapper\"\n [ngClass]=\"{\n 'p-input-filled': inputStyle === 'filled', \n 'p-ripple-disabled': !ripple,\n 'layout-menu-active': isStaticalMenuVisible(),\n 'layout-menu-button-hidden': isHorizontalMenuMode()\n }\"\n [class]=\"'layout-menu-' + colorScheme + ' layout-topbar-' + topbarTheme\"\n>\n <ocx-shell-header\n [menuButtonTitle]=\"menuButtonTitle\"\n (menuButtonClick)=\"onMenuButtonClick($event)\"\n >\n <ocx-slot name=\"horizontalMenu\" *ngIf=\"isHorizontalMenuVisible()\"></ocx-slot>\n \n </ocx-shell-header>\n\n <p-toast></p-toast>\n\n <div class=\"menu-wrapper\">\n <div class=\"layout-menu-container\" *ngIf=\"isStaticalMenuVisible()\">\n <ocx-slot name=\"menu\"></ocx-slot>\n </div>\n </div>\n \n <div class=\"layout-main\">\n <div class=\"layout-content relative\">\n <ocx-slot name=\"subHeader\"></ocx-slot>\n <ng-container *ngIf=\"showContent$ | async\">\n <ng-content></ng-content>\n <router-outlet></router-outlet>\n </ng-container>\n </div>\n \n <ocx-shell-footer></ocx-shell-footer>\n </div>\n \n <div *ngIf=\"menuActive || !!activeTopbarItem\" class=\"layout-mask modal-in\"></div>\n</div>\n\n<ng-template #globalError>\n <ocx-shell-error [errCode]=\"globalErrMsg\"></ocx-shell-error>\n</ng-template>", styles: [""], dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "component", type: i4.SlotComponent, selector: "ocx-slot[name]", inputs: ["name"] }, { kind: "component", type: i7.Toast, selector: "p-toast", inputs: ["key", "autoZIndex", "baseZIndex", "style", "styleClass", "position", "preventOpenDuplicates", "preventDuplicates", "showTransformOptions", "hideTransformOptions", "showTransitionOptions", "hideTransitionOptions", "breakpoints"], outputs: ["onClose"] }, { kind: "component", type: HeaderComponent, selector: "ocx-shell-header", inputs: ["menuButtonTitle", "fullPortalLayout", "homeNavUrl", "homeNavTitle"], outputs: ["menuButtonClick"] }, { kind: "component", type: PortalFooterComponent, selector: "ocx-shell-footer" }, { kind: "component", type: GlobalErrorComponent, selector: "ocx-shell-error", inputs: ["errCode"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }] });
242
+ PortalViewportComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PortalViewportComponent, deps: [{ token: i0.Renderer2 }, { token: i1$2.PrimeNGConfig }, { token: i1$2.MessageService }, { token: i1$1.AppStateService }, { token: i1$1.PortalMessageService }, { token: i1$1.UserService }, { token: i1$1.ThemeService }, { token: i3.HttpClient }, { token: i1.Router }, { token: SHOW_CONTENT_PROVIDER, optional: true }], target: i0.ɵɵFactoryTarget.Component });
243
+ PortalViewportComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: PortalViewportComponent, selector: "ocx-shell-portal-viewport", host: { listeners: { "window:resize": "onResize()" } }, ngImport: i0, template: "<div\n *ngIf=\"!globalErrMsg; else globalError\"\n class=\"layout-wrapper\"\n [ngClass]=\"{\n 'p-input-filled': inputStyle === 'filled', \n 'p-ripple-disabled': !ripple,\n 'layout-menu-active': isStaticalMenuVisible(),\n 'layout-menu-button-hidden': isHorizontalMenuMode()\n }\"\n [class]=\"'layout-menu-' + colorScheme + ' layout-topbar-' + topbarTheme\"\n>\n <ocx-shell-header [menuButtonTitle]=\"menuButtonTitle\" (menuButtonClick)=\"onMenuButtonClick($event)\">\n <ocx-slot name=\"horizontalMenu\" *ngIf=\"isHorizontalMenuVisible()\"></ocx-slot>\n </ocx-shell-header>\n\n <p-toast></p-toast>\n\n <div class=\"menu-wrapper\">\n <div class=\"layout-menu-container\" *ngIf=\"isStaticalMenuVisible()\">\n <ocx-slot name=\"menu\"></ocx-slot>\n </div>\n </div>\n\n <div class=\"layout-main\">\n <div class=\"layout-content relative\">\n <ocx-slot name=\"subHeader\"></ocx-slot>\n <ng-container *ngIf=\"!showContentProvider || (showContentProvider.showContent$ | async)\">\n <ng-content></ng-content>\n <router-outlet></router-outlet>\n </ng-container>\n </div>\n\n <ocx-shell-footer></ocx-shell-footer>\n </div>\n\n <div *ngIf=\"menuActive || !!activeTopbarItem\" class=\"layout-mask modal-in\"></div>\n</div>\n\n<ng-template #globalError>\n <ocx-shell-error [errCode]=\"globalErrMsg\"></ocx-shell-error>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "component", type: i4.SlotComponent, selector: "ocx-slot[name]", inputs: ["name"] }, { kind: "component", type: i7.Toast, selector: "p-toast", inputs: ["key", "autoZIndex", "baseZIndex", "style", "styleClass", "position", "preventOpenDuplicates", "preventDuplicates", "showTransformOptions", "hideTransformOptions", "showTransitionOptions", "hideTransitionOptions", "breakpoints"], outputs: ["onClose"] }, { kind: "component", type: HeaderComponent, selector: "ocx-shell-header", inputs: ["menuButtonTitle", "fullPortalLayout", "homeNavUrl", "homeNavTitle"], outputs: ["menuButtonClick"] }, { kind: "component", type: PortalFooterComponent, selector: "ocx-shell-footer" }, { kind: "component", type: GlobalErrorComponent, selector: "ocx-shell-error", inputs: ["errCode"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }] });
262
244
  PortalViewportComponent = __decorate([
263
245
  UntilDestroy(),
264
246
  __metadata("design:paramtypes", [Renderer2,
@@ -269,12 +251,17 @@ PortalViewportComponent = __decorate([
269
251
  UserService,
270
252
  ThemeService,
271
253
  HttpClient,
272
- Router])
254
+ Router, Object])
273
255
  ], PortalViewportComponent);
274
256
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PortalViewportComponent, decorators: [{
275
257
  type: Component,
276
- args: [{ selector: 'ocx-shell-portal-viewport', template: "<div\n *ngIf=\"!globalErrMsg; else globalError\"\n class=\"layout-wrapper\"\n [ngClass]=\"{\n 'p-input-filled': inputStyle === 'filled', \n 'p-ripple-disabled': !ripple,\n 'layout-menu-active': isStaticalMenuVisible(),\n 'layout-menu-button-hidden': isHorizontalMenuMode()\n }\"\n [class]=\"'layout-menu-' + colorScheme + ' layout-topbar-' + topbarTheme\"\n>\n <ocx-shell-header\n [menuButtonTitle]=\"menuButtonTitle\"\n (menuButtonClick)=\"onMenuButtonClick($event)\"\n >\n <ocx-slot name=\"horizontalMenu\" *ngIf=\"isHorizontalMenuVisible()\"></ocx-slot>\n \n </ocx-shell-header>\n\n <p-toast></p-toast>\n\n <div class=\"menu-wrapper\">\n <div class=\"layout-menu-container\" *ngIf=\"isStaticalMenuVisible()\">\n <ocx-slot name=\"menu\"></ocx-slot>\n </div>\n </div>\n \n <div class=\"layout-main\">\n <div class=\"layout-content relative\">\n <ocx-slot name=\"subHeader\"></ocx-slot>\n <ng-container *ngIf=\"showContent$ | async\">\n <ng-content></ng-content>\n <router-outlet></router-outlet>\n </ng-container>\n </div>\n \n <ocx-shell-footer></ocx-shell-footer>\n </div>\n \n <div *ngIf=\"menuActive || !!activeTopbarItem\" class=\"layout-mask modal-in\"></div>\n</div>\n\n<ng-template #globalError>\n <ocx-shell-error [errCode]=\"globalErrMsg\"></ocx-shell-error>\n</ng-template>" }]
277
- }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i1$2.PrimeNGConfig }, { type: i1$2.MessageService }, { type: i1$1.AppStateService }, { type: i1$1.PortalMessageService }, { type: i1$1.UserService }, { type: i1$1.ThemeService }, { type: i3.HttpClient }, { type: i1.Router }]; }, propDecorators: { onResize: [{
258
+ args: [{ selector: 'ocx-shell-portal-viewport', template: "<div\n *ngIf=\"!globalErrMsg; else globalError\"\n class=\"layout-wrapper\"\n [ngClass]=\"{\n 'p-input-filled': inputStyle === 'filled', \n 'p-ripple-disabled': !ripple,\n 'layout-menu-active': isStaticalMenuVisible(),\n 'layout-menu-button-hidden': isHorizontalMenuMode()\n }\"\n [class]=\"'layout-menu-' + colorScheme + ' layout-topbar-' + topbarTheme\"\n>\n <ocx-shell-header [menuButtonTitle]=\"menuButtonTitle\" (menuButtonClick)=\"onMenuButtonClick($event)\">\n <ocx-slot name=\"horizontalMenu\" *ngIf=\"isHorizontalMenuVisible()\"></ocx-slot>\n </ocx-shell-header>\n\n <p-toast></p-toast>\n\n <div class=\"menu-wrapper\">\n <div class=\"layout-menu-container\" *ngIf=\"isStaticalMenuVisible()\">\n <ocx-slot name=\"menu\"></ocx-slot>\n </div>\n </div>\n\n <div class=\"layout-main\">\n <div class=\"layout-content relative\">\n <ocx-slot name=\"subHeader\"></ocx-slot>\n <ng-container *ngIf=\"!showContentProvider || (showContentProvider.showContent$ | async)\">\n <ng-content></ng-content>\n <router-outlet></router-outlet>\n </ng-container>\n </div>\n\n <ocx-shell-footer></ocx-shell-footer>\n </div>\n\n <div *ngIf=\"menuActive || !!activeTopbarItem\" class=\"layout-mask modal-in\"></div>\n</div>\n\n<ng-template #globalError>\n <ocx-shell-error [errCode]=\"globalErrMsg\"></ocx-shell-error>\n</ng-template>\n" }]
259
+ }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i1$2.PrimeNGConfig }, { type: i1$2.MessageService }, { type: i1$1.AppStateService }, { type: i1$1.PortalMessageService }, { type: i1$1.UserService }, { type: i1$1.ThemeService }, { type: i3.HttpClient }, { type: i1.Router }, { type: undefined, decorators: [{
260
+ type: Optional
261
+ }, {
262
+ type: Inject,
263
+ args: [SHOW_CONTENT_PROVIDER]
264
+ }] }]; }, propDecorators: { onResize: [{
278
265
  type: HostListener,
279
266
  args: ['window:resize']
280
267
  }] } });
@@ -316,5 +303,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
316
303
  * Generated bundle index. Do not edit.
317
304
  */
318
305
 
319
- export { GlobalErrorComponent, HeaderComponent, PermissionsCacheService, PortalFooterComponent, PortalViewportComponent, SHELL_BFF_PREFIX, ShellCoreModule };
306
+ export { GlobalErrorComponent, HeaderComponent, PermissionsCacheService, PortalFooterComponent, PortalViewportComponent, SHELL_BFF_PREFIX, SHOW_CONTENT_PROVIDER, ShellCoreModule };
320
307
  //# sourceMappingURL=onecx-shell-core.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"onecx-shell-core.mjs","sources":["../../../../libs/shell-core/src/lib/components/error-component/global-error.component.ts","../../../../libs/shell-core/src/lib/components/error-component/global-error.component.html","../../../../libs/shell-core/src/lib/model/constants.ts","../../../../libs/shell-core/src/lib/components/portal-footer/portal-footer.component.ts","../../../../libs/shell-core/src/lib/components/portal-footer/portal-footer.component.html","../../../../libs/shell-core/src/lib/components/portal-header/header.component.ts","../../../../libs/shell-core/src/lib/components/portal-header/header.component.html","../../../../libs/shell-core/src/lib/components/portal-viewport/portal-viewport.component.ts","../../../../libs/shell-core/src/lib/components/portal-viewport/portal-viewport.component.html","../../../../libs/shell-core/src/lib/shell-core.module.ts","../../../../libs/shell-core/src/lib/services/permissions-cache.service.ts","../../../../libs/shell-core/src/onecx-shell-core.ts"],"sourcesContent":["import { Component, Input } from '@angular/core'\nimport { ActivatedRoute, Router } from '@angular/router'\n\n@Component({\n selector: 'ocx-shell-error',\n templateUrl: './global-error.component.html',\n styleUrls: ['./global-error.component.scss'],\n})\nexport class GlobalErrorComponent {\n @Input()\n errCode: string | undefined\n backUrl: string\n\n constructor(private router: Router, private route: ActivatedRoute) {\n this.errCode = this.route.snapshot.queryParamMap.get('err') || 'E1001_FAILED_START'\n this.backUrl = this.route.snapshot.queryParamMap.get('return') || '/'\n }\n\n onGoBack() {\n this.router.navigateByUrl(this.backUrl)\n }\n\n reload() {\n window.location.reload()\n }\n}\n","<div class=\"pages-body error-page flex flex-column\">\n <div class=\"align-self-center mt-auto mb-auto\">\n <div class=\"pages-panel card flex flex-column\">\n <div class=\"pages-header px-3 py-1\">\n <h2>ERROR</h2>\n </div>\n <div class=\"card mt-3 px-6\">\n <img src=\"assets/images/error.png\" alt=\"\" />\n </div>\n <div class=\"pages-detail pb-6\">{{errCode}}</div>\n <button pButton pRipple type=\"button\" label=\"Try Again\" (click)=\"reload()\" class=\"p-button-text\"></button>\n </div>\n </div>\n</div>\n","export const SHELL_BFF_PREFIX = 'shell-bff'","import { Component, OnInit } from '@angular/core'\nimport { Router } from '@angular/router'\nimport { AppStateService, ConfigurationService, CONFIG_KEY, ThemeService } from '@onecx/angular-integration-interface'\nimport { ImageLogoUrlUtils } from '@onecx/portal-integration-angular'\nimport { combineLatest, concat, map, Observable, of, withLatestFrom } from 'rxjs'\nimport { SHELL_BFF_PREFIX } from '../../model/constants'\n\n@Component({\n selector: 'ocx-shell-footer',\n templateUrl: './portal-footer.component.html',\n styleUrls: ['./portal-footer.component.scss'],\n})\nexport class PortalFooterComponent implements OnInit {\n logoUrl$: Observable<string | undefined>\n copyrightMsg$: Observable<string> | undefined\n versionInfo$: Observable<string | undefined>\n\n constructor(\n private configurationService: ConfigurationService,\n public router: Router,\n private appState: AppStateService,\n private themeService: ThemeService\n ) {\n this.versionInfo$ = this.appState.currentMfe$.pipe(\n withLatestFrom(this.appState.currentPortal$.asObservable()),\n map(([mfe, portal]) => {\n const mfeInfoVersion = mfe?.version || ''\n const mfeName = mfe?.displayName\n const hostVersion = this.configurationService.getProperty(CONFIG_KEY.APP_VERSION) || 'DEV-LOCAL'\n const mfInfoText = mfeName ? `MF ${mfeName} v${mfeInfoVersion}` : ''\n return `Portal: ${portal.portalName} v${hostVersion} ${mfInfoText}`\n })\n )\n this.logoUrl$ = combineLatest([\n this.themeService.currentTheme$.asObservable(),\n this.appState.currentWorkspace$.asObservable(),\n ]).pipe(\n map(([theme, portalData]) => ImageLogoUrlUtils.createLogoUrl(SHELL_BFF_PREFIX, theme.logoUrl || portalData.logoUrl))\n )\n }\n\n ngOnInit(): void {\n this.copyrightMsg$ = concat(\n of('Capgemini. All rights reserved.'),\n this.appState.currentWorkspace$.pipe(\n map((portalData) => {\n if (\n !(\n portalData.footerLabel === '' ||\n portalData.footerLabel === 'string' ||\n portalData.footerLabel === undefined\n )\n ) {\n return portalData.companyName || portalData.footerLabel || 'All rights reserved.'\n }\n return ''\n })\n )\n )\n }\n\n public onErrorHandleSrc(): void {\n this.logoUrl$ = of(undefined)\n }\n}\n","<div class=\"ml-3 py-2 lg:ml-5 flex flex-wrap align-items-center justify-content-between row-gap-1\">\n <div class=\"flex flex-wrap align-items-center justify-content-start gap-3 row-gap-1\">\n <img *ngIf=\"logoUrl$ | async\" alt=\"logo\" class=\"max-h-1rem\" [ocxSrc]=\"(logoUrl$ | async) ?? ''\" (error)=\"onErrorHandleSrc()\" />\n <div class=\"flex-none text-sm\">&copy; {{copyrightMsg$ | async}}</div>\n <ocx-slot name=\"footer-menu-items\">Footer Menu Items</ocx-slot>\n </div>\n <div class=\"mr-5 text-sm\">{{versionInfo$ | async}}</div>\n</div>\n","import { animate, style, transition, trigger } from '@angular/animations'\nimport { Component, EventEmitter, Input, Output } from '@angular/core'\nimport { UntilDestroy } from '@ngneat/until-destroy'\nimport { AppStateService, ThemeService } from '@onecx/angular-integration-interface'\nimport { ImageLogoUrlUtils } from '@onecx/portal-integration-angular'\nimport { combineLatest, map, Observable } from 'rxjs'\nimport { SHELL_BFF_PREFIX } from '../../model/constants'\n\n@Component({\n selector: 'ocx-shell-header',\n templateUrl: './header.component.html',\n styleUrls: ['./header.component.scss'],\n animations: [\n trigger('topbarActionPanelAnimation', [\n transition(':enter', [\n style({ opacity: 0, transform: 'scaleY(0.8)' }),\n animate('.12s cubic-bezier(0, 0, 0.2, 1)', style({ opacity: 1, transform: '*' })),\n ]),\n transition(':leave', [animate('.1s linear', style({ opacity: 0 }))]),\n ]),\n ],\n})\n@UntilDestroy()\nexport class HeaderComponent {\n menuExpanded = false\n fallbackImg = false\n\n @Input()\n menuButtonTitle: string | undefined\n @Input()\n fullPortalLayout = true\n @Input()\n homeNavUrl = '/'\n @Input()\n homeNavTitle = 'Home'\n\n @Output()\n menuButtonClick: EventEmitter<any> = new EventEmitter()\n\n logoUrl$: Observable<string | undefined>\n\n constructor(private themeService: ThemeService, private appStateService: AppStateService) {\n this.logoUrl$ = combineLatest([\n this.themeService.currentTheme$.asObservable(),\n this.appStateService.currentWorkspace$.asObservable(),\n ]).pipe(\n map(([theme, portal]) => {\n return ImageLogoUrlUtils.createLogoUrl(SHELL_BFF_PREFIX, theme.logoUrl || portal.logoUrl)\n })\n )\n }\n\n onMenuButtonClick(e: Event) {\n this.menuButtonClick.emit(e)\n }\n}\n","<div class=\"layout-topbar shadow-4\" id=\"header\" role=\"banner\">\n <div class=\"layout-topbar-left\">\n <a class=\"layout-topbar-logo\">\n <img\n id=\"app-logo\"\n [ocxSrc]=\"(logoUrl$ | async) ?? ''\"\n alt=\"Logo\"\n style=\"max-height: 100%; max-width: 100%\"\n *ngIf=\"(logoUrl$ | async) && !fallbackImg\"\n (error)=\"fallbackImg=true\"\n />\n <svg *ngIf=\"((logoUrl$ | async) === null) || fallbackImg\" width=\"160\" viewBox=\"0 0 283 72\" class=\"default-logo\">\n <defs id=\"SvgjsDefs4962\"></defs>\n <g\n id=\"SvgjsG4963\"\n featurekey=\"symbolFeature-0\"\n transform=\"matrix(0.7555406501686023,0,0,0.7555406501686023,-4.883814572467361,-0.26595028490140254)\"\n >\n <path\n xmlns=\"http://www.w3.org/2000/svg\"\n d=\"M88.54,46.256L9.464,0.616c-0.616-0.352-1.384-0.352-2,0c-0.62,0.36-1,1.02-1,1.736v91.296c0,0.716,0.38,1.375,1,1.731 c0.308,0.185,0.656,0.269,1,0.269c0.344,0,0.692-0.084,1-0.269L88.54,49.729c0.616-0.36,1-1.021,1-1.736 C89.54,47.276,89.152,46.616,88.54,46.256z M60.08,49.771L21.388,69.805c-0.288,0.147-0.604,0.223-0.92,0.223 c-0.36,0-0.72-0.092-1.04-0.287c-0.596-0.364-0.96-1.008-0.96-1.713v-40.06c0-0.696,0.364-1.344,0.96-1.712 c0.596-0.36,1.336-0.392,1.96-0.068l38.696,20.028c0.664,0.344,1.084,1.032,1.084,1.772C61.164,48.74,60.744,49.428,60.08,49.771z\"\n ></path>\n <path xmlns=\"http://www.w3.org/2000/svg\" d=\"M22.464,64.744l32.345-16.748l-32.345-16.74V64.744z\"></path>\n </g>\n <g\n id=\"SvgjsG4964\"\n featurekey=\"nameFeature-0\"\n transform=\"matrix(1.0207331753701396,0,0,1.0207331753701396,81.5644404108694,15.72408377414908)\"\n >\n <path\n d=\"M17.344 32.6562 c-0.78125 -0.15625 -1.5105 -0.3907 -2.1876 -0.7032 c-1.4584 -0.67711 -2.7344 -1.6146 -3.8281 -2.8125 c-1.0416 -1.0938 -1.875 -2.4479 -2.5 -4.0625 c-0.57289 -1.6146 -0.85938 -3.2552 -0.85938 -4.9219 l0 -0.15625 l0 -0.23438 c0 -1.7188 0.28648 -3.3854 0.85938 -5 c0.67711 -1.6666 1.5105 -2.9948 2.5001 -3.9844 c1.0416 -1.1979 2.2916 -2.1094 3.75 -2.7344 c0.88539 -0.41664 1.6406 -0.67703 2.2656 -0.78117 l0 -5.8594 c-1.8229 0.26039 -3.4375 0.70313 -4.8438 1.3281 c-2.2916 0.98961 -4.2448 2.3177 -5.8594 3.9844 s-2.8906 3.6458 -3.8281 5.9374 s-1.4063 4.6875 -1.4063 7.1875 l0 0.15625 l0 0.23438 c0 2.5521 0.46875 4.948 1.4063 7.1876 c0.83336 2.2396 2.0834 4.1927 3.75 5.8594 c1.6666 1.7188 3.6198 3.0469 5.8594 3.9844 c1.4063 0.625 3.0469 1.0677 4.9219 1.3281 l0 -5.9375 z M38.594 20 l0.000076294 -0.23438 c0 -2.5521 -0.46875 -4.948 -1.4063 -7.1876 c-0.9375 -2.2916 -2.2135 -4.2708 -3.8281 -5.9374 c-1.5625 -1.6666 -3.4896 -2.9688 -5.7813 -3.9063 c-1.3021 -0.625 -2.8906 -1.0677 -4.7656 -1.3281 l0 5.9375 l0.9375 0.3125 c0.46875 0.15625 0.83336 0.28648 1.0938 0.39063 c1.4584 0.67711 2.7344 1.6146 3.8281 2.8125 c1.0416 1.0938 1.875 2.4479 2.5 4.0625 c0.57289 1.6146 0.85938 3.2552 0.85938 4.9219 l0 0.15625 l0 0.23438 c0 1.7188 -0.28648 3.3854 -0.85938 5 c-0.67711 1.6666 -1.5105 2.9948 -2.5001 3.9844 c-1.0416 1.1979 -2.2916 2.1094 -3.75 2.7344 c-0.67711 0.3125 -1.3802 0.54688 -2.1094 0.70313 l0 5.9375 c1.5625 -0.20836 3.125 -0.65109 4.6875 -1.3282 c2.1354 -0.88539 4.0885 -2.2135 5.8594 -3.9844 c1.7188 -1.8229 2.9948 -3.802 3.8281 -5.9374 c0.9375 -2.2916 1.4063 -4.6875 1.4063 -7.1875 l0 -0.15625 z M43.8281 38.5937 l6.4844 0 l0 -19.922 l-6.4844 -9.1406 l0 29.063 z M69.76599999999999 1.4059999999999988 l0 25.703 l-18.359 -25.703 l-7.0313 0 l26.406 37.188 l5.3906 0 l0 -37.188 l-6.4063 0 z M86.0938 1.4059999999999988 l27.813 0 l0 5.9375 l-27.813 0 l0 -5.9375 z M86.0938 32.6562 l27.734 0 l0 5.9375 l-27.734 0 l0 -5.9375 z M86.0938 16.875 l25.078 0 l0 5.8594 l-25.078 0 l0 -5.8594 z M127.2656 12.5 c0.9375 -2.2916 2.2916 -4.2447 4.0624 -5.8593 c1.6146 -1.6146 3.698 -2.9167 6.2501 -3.9063 s5.2344 -1.4844 8.0469 -1.4844 l8.6719 0 l0 5.9375 l-8.5938 0 c-2.0313 0 -3.8281 0.33852 -5.3906 1.0156 c-1.6666 0.67711 -3.0208 1.5625 -4.0624 2.6563 c-1.0938 1.0416 -1.9791 2.3958 -2.6563 4.0624 c-0.625 1.5104 -0.9375 3.2031 -0.9375 5.0781 s0.3125 3.5677 0.9375 5.0781 c0.625 1.5625 1.5104 2.9166 2.6563 4.0625 c1.0416 1.0416 2.3958 1.901 4.0624 2.5781 c1.6666 0.625 3.4635 0.9375 5.3906 0.9375 l8.5938 0 l0 5.9375 l-8.6719 0 c-2.9166 0 -5.5729 -0.46875 -7.9688 -1.4063 c-2.5 -1.0416 -4.6094 -2.3698 -6.3281 -3.9844 c-1.7709 -1.6666 -3.125 -3.6458 -4.0625 -5.9374 c-0.98961 -2.3959 -1.4844 -4.8438 -1.4844 -7.3438 c0 -2.6563 0.49477 -5.1302 1.4844 -7.4219 z M176.484 29.375 l3.5156 -4.6875 l-0.078125 -0.15625 z M196.875 1.4059999999999988 l-7.5 0 l-9.2969 13.359 l-9.2188 -13.359 l-7.7344 0 l13.047 18.281 l-13.516 18.906 l8.3594 0 z M197.344 38.5937 l-10.313 -14.609 l-3.9063 5.2344 l6.5625 9.375 l7.6563 0 z\"\n ></path>\n </g>\n </svg>\n </a>\n\n <a class=\"layout-menu-button shadow-6\" (click)=\"onMenuButtonClick($event)\" pRipple [title]=\"menuButtonTitle ?? ('OCX_HEADER.MENU_TOGGLE')\">\n <i class=\"pi pi-chevron-right\"></i>\n </a>\n </div>\n\n <div class=\"layout-topbar-right\">\n <div class=\"layout-topbar-actions-left\">\n <ng-content></ng-content>\n </div>\n <div class=\"layout-topbar-actions-right\">\n <ocx-slot name=\"headerRight\" class=\"layout-topbar-items\"></ocx-slot>\n <ul class=\"layout-topbar-items\">\n <!-- Only desktop: Actions (favorites, support, search, ...) as icon buttons -->\n <ng-container *ocxIfBreakpoint=\"'desktop'\">\n\n </ng-container>\n\n <!-- Only mobile: Actions (favorites, support, search, ...) as 'more' button + overlay -->\n <li class=\"layout-topbar-item\" *ocxIfBreakpoint=\"'mobile'\">\n \n </li>\n </ul>\n </div>\n </div>\n</div>\n","import { HttpClient } from '@angular/common/http'\nimport { AfterViewInit, Component, HostListener, OnDestroy, OnInit, Renderer2 } from '@angular/core'\nimport { NavigationEnd, Router, RoutesRecognized } from '@angular/router'\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy'\nimport {\n AppStateService,\n Message,\n PortalMessageService,\n ThemeService,\n UserService,\n} from '@onecx/angular-integration-interface'\nimport { MessageService, PrimeNGConfig } from 'primeng/api'\nimport {\n bufferCount,\n combineLatest,\n filter,\n first,\n map,\n mergeMap,\n of,\n startWith\n} from 'rxjs'\n\n@Component({\n selector: 'ocx-shell-portal-viewport',\n templateUrl: './portal-viewport.component.html',\n styleUrls: ['./portal-viewport.component.scss'],\n})\n@UntilDestroy()\nexport class PortalViewportComponent implements OnInit, AfterViewInit, OnDestroy {\n menuButtonTitle = ''\n menuActive = true\n activeTopbarItem: string | undefined\n\n removeDocumentClickListener: (() => void) | undefined\n\n topbarTheme = 'var'\n colorScheme: 'auto' | 'light' | 'dark' = 'light'\n layoutMode: 'auto' | 'light' | 'dark' = 'light'\n menuMode: 'horizontal' | 'static' | 'overlay' | 'slim' | 'slimplus' = 'static'\n inputStyle = 'outline'\n ripple = true\n isMobile = false\n\n globalErrMsg: string | undefined\n\n showContent$ = combineLatest([\n this.appStateService.globalLoading$.asObservable().pipe(startWith(true, true), bufferCount(3, 1)),\n this.router.events\n .pipe(\n filter(\n (e): e is NavigationEnd | RoutesRecognized => e instanceof NavigationEnd || e instanceof RoutesRecognized\n )\n )\n .pipe(startWith({ url: undefined }), bufferCount(3, 1)),\n ]).pipe(\n map(([[beforeLastGlobalLoading, lastGlobalLoading, globalLoading], [beforeLastEvent, lastEvent, event]]) => {\n if (!lastGlobalLoading && globalLoading) {\n return false\n }\n if (beforeLastGlobalLoading) {\n return true\n }\n if (!beforeLastEvent.url) {\n return false\n }\n if (lastEvent.url !== event.url) {\n return false\n }\n return true\n })\n )\n\n constructor(\n private renderer: Renderer2,\n private primengConfig: PrimeNGConfig,\n private messageService: MessageService,\n public appStateService: AppStateService,\n private portalMessageService: PortalMessageService,\n private userService: UserService,\n private themeService: ThemeService,\n private httpClient: HttpClient,\n private router: Router\n ) {\n this.portalMessageService.message$.subscribe((message: Message) => this.messageService.add(message))\n this.userService.profile$.pipe(untilDestroyed(this)).subscribe((profile) => {\n this.menuMode =\n (profile?.accountSettings?.layoutAndThemeSettings?.menuMode?.toLowerCase() as\n | typeof this.menuMode\n | undefined) || this.menuMode\n\n this.colorScheme =\n (profile?.accountSettings?.layoutAndThemeSettings?.colorScheme?.toLowerCase() as\n | typeof this.colorScheme\n | undefined) || this.colorScheme\n })\n\n this.themeService.currentTheme$\n .pipe(\n first(),\n mergeMap((theme) => {\n return theme.faviconUrl\n ? this.httpClient\n .get(theme.faviconUrl, { responseType: 'blob' })\n .pipe(map((blob) => URL.createObjectURL(blob)))\n : of('')\n })\n )\n .subscribe((url) => {\n let link = document.querySelector(\"link[rel~='icon']\") as any\n if (!link) {\n link = document.createElement('link')\n link.rel = 'icon'\n document.head.appendChild(link)\n }\n link.onload = () => {\n URL.revokeObjectURL(url)\n }\n link.href = url\n })\n }\n\n ngOnInit() {\n this.primengConfig.ripple = true\n\n this.appStateService.globalError$\n .pipe(untilDestroyed(this))\n .pipe(filter((i) => i !== undefined))\n .subscribe((err: string | undefined) => {\n this.globalErrMsg = err\n })\n\n this.onResize()\n }\n\n ngAfterViewInit() {\n // hides the horizontal submenus or top menu if outside is clicked\n this.removeDocumentClickListener = this.renderer.listen('body', 'click', () => {\n this.activeTopbarItem = undefined\n if (this.isMobile) this.menuActive = false\n })\n }\n\n ngOnDestroy() {\n this.removeDocumentClickListener?.()\n }\n\n onMenuButtonClick(event: MouseEvent) {\n this.activeTopbarItem = undefined\n this.menuActive = !this.menuActive\n event.preventDefault()\n event.stopPropagation()\n }\n\n @HostListener('window:resize')\n onResize() {\n const mobileBreakpointVar = getComputedStyle(document.documentElement).getPropertyValue('--mobile-break-point')\n const isMobile = window.matchMedia(`(max-width: ${mobileBreakpointVar})`).matches\n // auto show sidebar when changing to desktop, hide when changing to mobile\n if (isMobile !== this.isMobile) this.menuActive = !isMobile\n this.isMobile = isMobile\n }\n\n isHorizontalMenuMode() {\n return this.menuMode === 'horizontal' && !this.isMobile\n }\n\n isStaticalMenuVisible() {\n return this.menuActive && !this.isHorizontalMenuMode()\n }\n\n isHorizontalMenuVisible() {\n return this.isHorizontalMenuMode()\n }\n}\n","<div\n *ngIf=\"!globalErrMsg; else globalError\"\n class=\"layout-wrapper\"\n [ngClass]=\"{\n 'p-input-filled': inputStyle === 'filled', \n 'p-ripple-disabled': !ripple,\n 'layout-menu-active': isStaticalMenuVisible(),\n 'layout-menu-button-hidden': isHorizontalMenuMode()\n }\"\n [class]=\"'layout-menu-' + colorScheme + ' layout-topbar-' + topbarTheme\"\n>\n <ocx-shell-header\n [menuButtonTitle]=\"menuButtonTitle\"\n (menuButtonClick)=\"onMenuButtonClick($event)\"\n >\n <ocx-slot name=\"horizontalMenu\" *ngIf=\"isHorizontalMenuVisible()\"></ocx-slot>\n \n </ocx-shell-header>\n\n <p-toast></p-toast>\n\n <div class=\"menu-wrapper\">\n <div class=\"layout-menu-container\" *ngIf=\"isStaticalMenuVisible()\">\n <ocx-slot name=\"menu\"></ocx-slot>\n </div>\n </div>\n \n <div class=\"layout-main\">\n <div class=\"layout-content relative\">\n <ocx-slot name=\"subHeader\"></ocx-slot>\n <ng-container *ngIf=\"showContent$ | async\">\n <ng-content></ng-content>\n <router-outlet></router-outlet>\n </ng-container>\n </div>\n \n <ocx-shell-footer></ocx-shell-footer>\n </div>\n \n <div *ngIf=\"menuActive || !!activeTopbarItem\" class=\"layout-mask modal-in\"></div>\n</div>\n\n<ng-template #globalError>\n <ocx-shell-error [errCode]=\"globalErrMsg\"></ocx-shell-error>\n</ng-template>","import { CommonModule } from '@angular/common'\nimport { NgModule } from '@angular/core'\nimport { RouterModule } from '@angular/router'\nimport { AngularAcceleratorModule } from '@onecx/angular-accelerator'\nimport { AngularRemoteComponentsModule } from '@onecx/angular-remote-components'\nimport { ToastModule } from 'primeng/toast'\nimport { GlobalErrorComponent } from './components/error-component/global-error.component'\nimport { PortalFooterComponent } from './components/portal-footer/portal-footer.component'\nimport { HeaderComponent } from './components/portal-header/header.component'\nimport { PortalViewportComponent } from './components/portal-viewport/portal-viewport.component'\n\n@NgModule({\n imports: [CommonModule, RouterModule, AngularRemoteComponentsModule, AngularAcceleratorModule, ToastModule],\n declarations: [PortalViewportComponent, HeaderComponent, PortalFooterComponent, GlobalErrorComponent],\n exports: [PortalViewportComponent, HeaderComponent, PortalFooterComponent, ToastModule, GlobalErrorComponent],\n})\nexport class ShellCoreModule {}\n","import { Injectable } from '@angular/core'\nimport { Observable, shareReplay } from 'rxjs'\n\n@Injectable({ providedIn: 'root' })\nexport class PermissionsCacheService {\n permissions: Record<string, Observable<string[]>> = {}\n\n getPermissions(\n appId: string,\n productName: string,\n cacheMissFkt: (appId: string, productName: string) => Observable<string[]>\n ): Observable<string[]> {\n const key = appId + '|' + productName\n if (!this.permissions[key]) {\n this.permissions[key] = cacheMissFkt(appId, productName).pipe(shareReplay())\n }\n return this.permissions[key]\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2","i3","i5","i4","i6","i8.HeaderComponent","i9.PortalFooterComponent","i10.GlobalErrorComponent"],"mappings":"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"}
1
+ {"version":3,"file":"onecx-shell-core.mjs","sources":["../../../../libs/shell-core/src/lib/components/error-component/global-error.component.ts","../../../../libs/shell-core/src/lib/components/error-component/global-error.component.html","../../../../libs/shell-core/src/lib/model/constants.ts","../../../../libs/shell-core/src/lib/components/portal-footer/portal-footer.component.ts","../../../../libs/shell-core/src/lib/components/portal-footer/portal-footer.component.html","../../../../libs/shell-core/src/lib/components/portal-header/header.component.ts","../../../../libs/shell-core/src/lib/components/portal-header/header.component.html","../../../../libs/shell-core/src/lib/components/portal-viewport/portal-viewport.component.ts","../../../../libs/shell-core/src/lib/components/portal-viewport/portal-viewport.component.html","../../../../libs/shell-core/src/lib/shell-core.module.ts","../../../../libs/shell-core/src/lib/services/permissions-cache.service.ts","../../../../libs/shell-core/src/onecx-shell-core.ts"],"sourcesContent":["import { Component, Input } from '@angular/core'\nimport { ActivatedRoute, Router } from '@angular/router'\n\n@Component({\n selector: 'ocx-shell-error',\n templateUrl: './global-error.component.html',\n styleUrls: ['./global-error.component.scss'],\n})\nexport class GlobalErrorComponent {\n @Input()\n errCode: string | undefined\n backUrl: string\n\n constructor(private router: Router, private route: ActivatedRoute) {\n this.errCode = this.route.snapshot.queryParamMap.get('err') || 'E1001_FAILED_START'\n this.backUrl = this.route.snapshot.queryParamMap.get('return') || '/'\n }\n\n onGoBack() {\n this.router.navigateByUrl(this.backUrl)\n }\n\n reload() {\n window.location.reload()\n }\n}\n","<div class=\"pages-body error-page flex flex-column\">\n <div class=\"align-self-center mt-auto mb-auto\">\n <div class=\"pages-panel card flex flex-column\">\n <div class=\"pages-header px-3 py-1\">\n <h2>ERROR</h2>\n </div>\n <div class=\"card mt-3 px-6\">\n <img src=\"assets/images/error.png\" alt=\"\" />\n </div>\n <div class=\"pages-detail pb-6\">{{errCode}}</div>\n <button pButton pRipple type=\"button\" label=\"Try Again\" (click)=\"reload()\" class=\"p-button-text\"></button>\n </div>\n </div>\n</div>\n","export const SHELL_BFF_PREFIX = 'shell-bff'","import { Component, OnInit } from '@angular/core'\nimport { Router } from '@angular/router'\nimport { AppStateService, ConfigurationService, CONFIG_KEY, ThemeService } from '@onecx/angular-integration-interface'\nimport { ImageLogoUrlUtils } from '@onecx/portal-integration-angular'\nimport { combineLatest, concat, map, Observable, of, withLatestFrom } from 'rxjs'\nimport { SHELL_BFF_PREFIX } from '../../model/constants'\n\n@Component({\n selector: 'ocx-shell-footer',\n templateUrl: './portal-footer.component.html',\n styleUrls: ['./portal-footer.component.scss'],\n})\nexport class PortalFooterComponent implements OnInit {\n logoUrl$: Observable<string | undefined>\n copyrightMsg$: Observable<string> | undefined\n versionInfo$: Observable<string | undefined>\n\n constructor(\n private configurationService: ConfigurationService,\n public router: Router,\n private appState: AppStateService,\n private themeService: ThemeService\n ) {\n this.versionInfo$ = this.appState.currentMfe$.pipe(\n withLatestFrom(this.appState.currentPortal$.asObservable()),\n map(([mfe, portal]) => {\n const mfeInfoVersion = mfe?.version || ''\n const mfeName = mfe?.displayName\n const hostVersion = this.configurationService.getProperty(CONFIG_KEY.APP_VERSION) || 'DEV-LOCAL'\n const mfInfoText = mfeName ? `MF ${mfeName} v${mfeInfoVersion}` : ''\n return `Portal: ${portal.portalName} v${hostVersion} ${mfInfoText}`\n })\n )\n this.logoUrl$ = combineLatest([\n this.themeService.currentTheme$.asObservable(),\n this.appState.currentWorkspace$.asObservable(),\n ]).pipe(\n map(([theme, portalData]) => ImageLogoUrlUtils.createLogoUrl(SHELL_BFF_PREFIX, theme.logoUrl || portalData.logoUrl))\n )\n }\n\n ngOnInit(): void {\n this.copyrightMsg$ = concat(\n of('Capgemini. All rights reserved.'),\n this.appState.currentWorkspace$.pipe(\n map((portalData) => {\n if (\n !(\n portalData.footerLabel === '' ||\n portalData.footerLabel === 'string' ||\n portalData.footerLabel === undefined\n )\n ) {\n return portalData.companyName || portalData.footerLabel || 'All rights reserved.'\n }\n return ''\n })\n )\n )\n }\n\n public onErrorHandleSrc(): void {\n this.logoUrl$ = of(undefined)\n }\n}\n","<div class=\"ml-3 py-2 lg:ml-5 flex flex-wrap align-items-center justify-content-between row-gap-1\">\n <div class=\"flex flex-wrap align-items-center justify-content-start gap-3 row-gap-1\">\n <img *ngIf=\"logoUrl$ | async\" alt=\"logo\" class=\"max-h-1rem\" [ocxSrc]=\"(logoUrl$ | async) ?? ''\" (error)=\"onErrorHandleSrc()\" />\n <div class=\"flex-none text-sm\">&copy; {{copyrightMsg$ | async}}</div>\n <ocx-slot name=\"footer-menu-items\">Footer Menu Items</ocx-slot>\n </div>\n <div class=\"mr-5 text-sm\">{{versionInfo$ | async}}</div>\n</div>\n","import { animate, style, transition, trigger } from '@angular/animations'\nimport { Component, EventEmitter, Input, Output } from '@angular/core'\nimport { UntilDestroy } from '@ngneat/until-destroy'\nimport { AppStateService, ThemeService } from '@onecx/angular-integration-interface'\nimport { ImageLogoUrlUtils } from '@onecx/portal-integration-angular'\nimport { combineLatest, map, Observable } from 'rxjs'\nimport { SHELL_BFF_PREFIX } from '../../model/constants'\n\n@Component({\n selector: 'ocx-shell-header',\n templateUrl: './header.component.html',\n styleUrls: ['./header.component.scss'],\n animations: [\n trigger('topbarActionPanelAnimation', [\n transition(':enter', [\n style({ opacity: 0, transform: 'scaleY(0.8)' }),\n animate('.12s cubic-bezier(0, 0, 0.2, 1)', style({ opacity: 1, transform: '*' })),\n ]),\n transition(':leave', [animate('.1s linear', style({ opacity: 0 }))]),\n ]),\n ],\n})\n@UntilDestroy()\nexport class HeaderComponent {\n menuExpanded = false\n fallbackImg = false\n\n @Input()\n menuButtonTitle: string | undefined\n @Input()\n fullPortalLayout = true\n @Input()\n homeNavUrl = '/'\n @Input()\n homeNavTitle = 'Home'\n\n @Output()\n menuButtonClick: EventEmitter<any> = new EventEmitter()\n\n logoUrl$: Observable<string | undefined>\n\n constructor(private themeService: ThemeService, private appStateService: AppStateService) {\n this.logoUrl$ = combineLatest([\n this.themeService.currentTheme$.asObservable(),\n this.appStateService.currentWorkspace$.asObservable(),\n ]).pipe(\n map(([theme, portal]) => {\n return ImageLogoUrlUtils.createLogoUrl(SHELL_BFF_PREFIX, theme.logoUrl || portal.logoUrl)\n })\n )\n }\n\n onMenuButtonClick(e: Event) {\n this.menuButtonClick.emit(e)\n }\n}\n","<div class=\"layout-topbar shadow-4\" id=\"header\" role=\"banner\">\n <div class=\"layout-topbar-left\">\n <a class=\"layout-topbar-logo\">\n <img\n id=\"app-logo\"\n [ocxSrc]=\"(logoUrl$ | async) ?? ''\"\n alt=\"Logo\"\n style=\"max-height: 100%; max-width: 100%\"\n *ngIf=\"(logoUrl$ | async) && !fallbackImg\"\n (error)=\"fallbackImg=true\"\n />\n <svg *ngIf=\"((logoUrl$ | async) === null) || fallbackImg\" width=\"160\" viewBox=\"0 0 283 72\" class=\"default-logo\">\n <defs id=\"SvgjsDefs4962\"></defs>\n <g\n id=\"SvgjsG4963\"\n featurekey=\"symbolFeature-0\"\n transform=\"matrix(0.7555406501686023,0,0,0.7555406501686023,-4.883814572467361,-0.26595028490140254)\"\n >\n <path\n xmlns=\"http://www.w3.org/2000/svg\"\n d=\"M88.54,46.256L9.464,0.616c-0.616-0.352-1.384-0.352-2,0c-0.62,0.36-1,1.02-1,1.736v91.296c0,0.716,0.38,1.375,1,1.731 c0.308,0.185,0.656,0.269,1,0.269c0.344,0,0.692-0.084,1-0.269L88.54,49.729c0.616-0.36,1-1.021,1-1.736 C89.54,47.276,89.152,46.616,88.54,46.256z M60.08,49.771L21.388,69.805c-0.288,0.147-0.604,0.223-0.92,0.223 c-0.36,0-0.72-0.092-1.04-0.287c-0.596-0.364-0.96-1.008-0.96-1.713v-40.06c0-0.696,0.364-1.344,0.96-1.712 c0.596-0.36,1.336-0.392,1.96-0.068l38.696,20.028c0.664,0.344,1.084,1.032,1.084,1.772C61.164,48.74,60.744,49.428,60.08,49.771z\"\n ></path>\n <path xmlns=\"http://www.w3.org/2000/svg\" d=\"M22.464,64.744l32.345-16.748l-32.345-16.74V64.744z\"></path>\n </g>\n <g\n id=\"SvgjsG4964\"\n featurekey=\"nameFeature-0\"\n transform=\"matrix(1.0207331753701396,0,0,1.0207331753701396,81.5644404108694,15.72408377414908)\"\n >\n <path\n d=\"M17.344 32.6562 c-0.78125 -0.15625 -1.5105 -0.3907 -2.1876 -0.7032 c-1.4584 -0.67711 -2.7344 -1.6146 -3.8281 -2.8125 c-1.0416 -1.0938 -1.875 -2.4479 -2.5 -4.0625 c-0.57289 -1.6146 -0.85938 -3.2552 -0.85938 -4.9219 l0 -0.15625 l0 -0.23438 c0 -1.7188 0.28648 -3.3854 0.85938 -5 c0.67711 -1.6666 1.5105 -2.9948 2.5001 -3.9844 c1.0416 -1.1979 2.2916 -2.1094 3.75 -2.7344 c0.88539 -0.41664 1.6406 -0.67703 2.2656 -0.78117 l0 -5.8594 c-1.8229 0.26039 -3.4375 0.70313 -4.8438 1.3281 c-2.2916 0.98961 -4.2448 2.3177 -5.8594 3.9844 s-2.8906 3.6458 -3.8281 5.9374 s-1.4063 4.6875 -1.4063 7.1875 l0 0.15625 l0 0.23438 c0 2.5521 0.46875 4.948 1.4063 7.1876 c0.83336 2.2396 2.0834 4.1927 3.75 5.8594 c1.6666 1.7188 3.6198 3.0469 5.8594 3.9844 c1.4063 0.625 3.0469 1.0677 4.9219 1.3281 l0 -5.9375 z M38.594 20 l0.000076294 -0.23438 c0 -2.5521 -0.46875 -4.948 -1.4063 -7.1876 c-0.9375 -2.2916 -2.2135 -4.2708 -3.8281 -5.9374 c-1.5625 -1.6666 -3.4896 -2.9688 -5.7813 -3.9063 c-1.3021 -0.625 -2.8906 -1.0677 -4.7656 -1.3281 l0 5.9375 l0.9375 0.3125 c0.46875 0.15625 0.83336 0.28648 1.0938 0.39063 c1.4584 0.67711 2.7344 1.6146 3.8281 2.8125 c1.0416 1.0938 1.875 2.4479 2.5 4.0625 c0.57289 1.6146 0.85938 3.2552 0.85938 4.9219 l0 0.15625 l0 0.23438 c0 1.7188 -0.28648 3.3854 -0.85938 5 c-0.67711 1.6666 -1.5105 2.9948 -2.5001 3.9844 c-1.0416 1.1979 -2.2916 2.1094 -3.75 2.7344 c-0.67711 0.3125 -1.3802 0.54688 -2.1094 0.70313 l0 5.9375 c1.5625 -0.20836 3.125 -0.65109 4.6875 -1.3282 c2.1354 -0.88539 4.0885 -2.2135 5.8594 -3.9844 c1.7188 -1.8229 2.9948 -3.802 3.8281 -5.9374 c0.9375 -2.2916 1.4063 -4.6875 1.4063 -7.1875 l0 -0.15625 z M43.8281 38.5937 l6.4844 0 l0 -19.922 l-6.4844 -9.1406 l0 29.063 z M69.76599999999999 1.4059999999999988 l0 25.703 l-18.359 -25.703 l-7.0313 0 l26.406 37.188 l5.3906 0 l0 -37.188 l-6.4063 0 z M86.0938 1.4059999999999988 l27.813 0 l0 5.9375 l-27.813 0 l0 -5.9375 z M86.0938 32.6562 l27.734 0 l0 5.9375 l-27.734 0 l0 -5.9375 z M86.0938 16.875 l25.078 0 l0 5.8594 l-25.078 0 l0 -5.8594 z M127.2656 12.5 c0.9375 -2.2916 2.2916 -4.2447 4.0624 -5.8593 c1.6146 -1.6146 3.698 -2.9167 6.2501 -3.9063 s5.2344 -1.4844 8.0469 -1.4844 l8.6719 0 l0 5.9375 l-8.5938 0 c-2.0313 0 -3.8281 0.33852 -5.3906 1.0156 c-1.6666 0.67711 -3.0208 1.5625 -4.0624 2.6563 c-1.0938 1.0416 -1.9791 2.3958 -2.6563 4.0624 c-0.625 1.5104 -0.9375 3.2031 -0.9375 5.0781 s0.3125 3.5677 0.9375 5.0781 c0.625 1.5625 1.5104 2.9166 2.6563 4.0625 c1.0416 1.0416 2.3958 1.901 4.0624 2.5781 c1.6666 0.625 3.4635 0.9375 5.3906 0.9375 l8.5938 0 l0 5.9375 l-8.6719 0 c-2.9166 0 -5.5729 -0.46875 -7.9688 -1.4063 c-2.5 -1.0416 -4.6094 -2.3698 -6.3281 -3.9844 c-1.7709 -1.6666 -3.125 -3.6458 -4.0625 -5.9374 c-0.98961 -2.3959 -1.4844 -4.8438 -1.4844 -7.3438 c0 -2.6563 0.49477 -5.1302 1.4844 -7.4219 z M176.484 29.375 l3.5156 -4.6875 l-0.078125 -0.15625 z M196.875 1.4059999999999988 l-7.5 0 l-9.2969 13.359 l-9.2188 -13.359 l-7.7344 0 l13.047 18.281 l-13.516 18.906 l8.3594 0 z M197.344 38.5937 l-10.313 -14.609 l-3.9063 5.2344 l6.5625 9.375 l7.6563 0 z\"\n ></path>\n </g>\n </svg>\n </a>\n\n <a class=\"layout-menu-button shadow-6\" (click)=\"onMenuButtonClick($event)\" pRipple [title]=\"menuButtonTitle ?? ('OCX_HEADER.MENU_TOGGLE')\">\n <i class=\"pi pi-chevron-right\"></i>\n </a>\n </div>\n\n <div class=\"layout-topbar-right\">\n <div class=\"layout-topbar-actions-left\">\n <ng-content></ng-content>\n </div>\n <div class=\"layout-topbar-actions-right\">\n <ocx-slot name=\"headerRight\" class=\"layout-topbar-items\"></ocx-slot>\n <ul class=\"layout-topbar-items\">\n <!-- Only desktop: Actions (favorites, support, search, ...) as icon buttons -->\n <ng-container *ocxIfBreakpoint=\"'desktop'\">\n\n </ng-container>\n\n <!-- Only mobile: Actions (favorites, support, search, ...) as 'more' button + overlay -->\n <li class=\"layout-topbar-item\" *ocxIfBreakpoint=\"'mobile'\">\n \n </li>\n </ul>\n </div>\n </div>\n</div>\n","import { HttpClient } from '@angular/common/http'\nimport {\n AfterViewInit,\n Component,\n HostListener,\n Inject,\n InjectionToken,\n OnDestroy,\n OnInit,\n Optional,\n Renderer2,\n} from '@angular/core'\nimport { Router } from '@angular/router'\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy'\nimport {\n AppStateService,\n Message,\n PortalMessageService,\n ThemeService,\n UserService,\n} from '@onecx/angular-integration-interface'\nimport { MessageService, PrimeNGConfig } from 'primeng/api'\nimport { BehaviorSubject, filter, first, map, mergeMap, of } from 'rxjs'\n\nexport const SHOW_CONTENT_PROVIDER = new InjectionToken<ShowContentProvider>('SHOW_CONTENT_PROVIDER')\n\nexport interface ShowContentProvider {\n showContent$: BehaviorSubject<boolean>\n}\n\n@Component({\n selector: 'ocx-shell-portal-viewport',\n templateUrl: './portal-viewport.component.html',\n styleUrls: ['./portal-viewport.component.scss'],\n})\n@UntilDestroy()\nexport class PortalViewportComponent implements OnInit, AfterViewInit, OnDestroy {\n menuButtonTitle = ''\n menuActive = true\n activeTopbarItem: string | undefined\n\n removeDocumentClickListener: (() => void) | undefined\n\n topbarTheme = 'var'\n colorScheme: 'auto' | 'light' | 'dark' = 'light'\n layoutMode: 'auto' | 'light' | 'dark' = 'light'\n menuMode: 'horizontal' | 'static' | 'overlay' | 'slim' | 'slimplus' = 'static'\n inputStyle = 'outline'\n ripple = true\n isMobile = false\n\n globalErrMsg: string | undefined\n\n constructor(\n private renderer: Renderer2,\n private primengConfig: PrimeNGConfig,\n private messageService: MessageService,\n public appStateService: AppStateService,\n private portalMessageService: PortalMessageService,\n private userService: UserService,\n private themeService: ThemeService,\n private httpClient: HttpClient,\n private router: Router,\n @Optional() @Inject(SHOW_CONTENT_PROVIDER) public showContentProvider: ShowContentProvider | undefined\n ) {\n this.portalMessageService.message$.subscribe((message: Message) => this.messageService.add(message))\n this.userService.profile$.pipe(untilDestroyed(this)).subscribe((profile) => {\n this.menuMode =\n (profile?.accountSettings?.layoutAndThemeSettings?.menuMode?.toLowerCase() as\n | typeof this.menuMode\n | undefined) || this.menuMode\n\n this.colorScheme =\n (profile?.accountSettings?.layoutAndThemeSettings?.colorScheme?.toLowerCase() as\n | typeof this.colorScheme\n | undefined) || this.colorScheme\n })\n\n this.themeService.currentTheme$\n .pipe(\n first(),\n mergeMap((theme) => {\n return theme.faviconUrl\n ? this.httpClient\n .get(theme.faviconUrl, { responseType: 'blob' })\n .pipe(map((blob) => URL.createObjectURL(blob)))\n : of('')\n })\n )\n .subscribe((url) => {\n let link = document.querySelector(\"link[rel~='icon']\") as any\n if (!link) {\n link = document.createElement('link')\n link.rel = 'icon'\n document.head.appendChild(link)\n }\n link.onload = () => {\n URL.revokeObjectURL(url)\n }\n link.href = url\n })\n }\n\n ngOnInit() {\n this.primengConfig.ripple = true\n\n this.appStateService.globalError$\n .pipe(untilDestroyed(this))\n .pipe(filter((i) => i !== undefined))\n .subscribe((err: string | undefined) => {\n this.globalErrMsg = err\n })\n\n this.onResize()\n }\n\n ngAfterViewInit() {\n // hides the horizontal submenus or top menu if outside is clicked\n this.removeDocumentClickListener = this.renderer.listen('body', 'click', () => {\n this.activeTopbarItem = undefined\n if (this.isMobile) this.menuActive = false\n })\n }\n\n ngOnDestroy() {\n this.removeDocumentClickListener?.()\n }\n\n onMenuButtonClick(event: MouseEvent) {\n this.activeTopbarItem = undefined\n this.menuActive = !this.menuActive\n event.preventDefault()\n event.stopPropagation()\n }\n\n @HostListener('window:resize')\n onResize() {\n const mobileBreakpointVar = getComputedStyle(document.documentElement).getPropertyValue('--mobile-break-point')\n const isMobile = window.matchMedia(`(max-width: ${mobileBreakpointVar})`).matches\n // auto show sidebar when changing to desktop, hide when changing to mobile\n if (isMobile !== this.isMobile) this.menuActive = !isMobile\n this.isMobile = isMobile\n }\n\n isHorizontalMenuMode() {\n return this.menuMode === 'horizontal' && !this.isMobile\n }\n\n isStaticalMenuVisible() {\n return this.menuActive && !this.isHorizontalMenuMode()\n }\n\n isHorizontalMenuVisible() {\n return this.isHorizontalMenuMode()\n }\n}\n","<div\n *ngIf=\"!globalErrMsg; else globalError\"\n class=\"layout-wrapper\"\n [ngClass]=\"{\n 'p-input-filled': inputStyle === 'filled', \n 'p-ripple-disabled': !ripple,\n 'layout-menu-active': isStaticalMenuVisible(),\n 'layout-menu-button-hidden': isHorizontalMenuMode()\n }\"\n [class]=\"'layout-menu-' + colorScheme + ' layout-topbar-' + topbarTheme\"\n>\n <ocx-shell-header [menuButtonTitle]=\"menuButtonTitle\" (menuButtonClick)=\"onMenuButtonClick($event)\">\n <ocx-slot name=\"horizontalMenu\" *ngIf=\"isHorizontalMenuVisible()\"></ocx-slot>\n </ocx-shell-header>\n\n <p-toast></p-toast>\n\n <div class=\"menu-wrapper\">\n <div class=\"layout-menu-container\" *ngIf=\"isStaticalMenuVisible()\">\n <ocx-slot name=\"menu\"></ocx-slot>\n </div>\n </div>\n\n <div class=\"layout-main\">\n <div class=\"layout-content relative\">\n <ocx-slot name=\"subHeader\"></ocx-slot>\n <ng-container *ngIf=\"!showContentProvider || (showContentProvider.showContent$ | async)\">\n <ng-content></ng-content>\n <router-outlet></router-outlet>\n </ng-container>\n </div>\n\n <ocx-shell-footer></ocx-shell-footer>\n </div>\n\n <div *ngIf=\"menuActive || !!activeTopbarItem\" class=\"layout-mask modal-in\"></div>\n</div>\n\n<ng-template #globalError>\n <ocx-shell-error [errCode]=\"globalErrMsg\"></ocx-shell-error>\n</ng-template>\n","import { CommonModule } from '@angular/common'\nimport { NgModule } from '@angular/core'\nimport { RouterModule } from '@angular/router'\nimport { AngularAcceleratorModule } from '@onecx/angular-accelerator'\nimport { AngularRemoteComponentsModule } from '@onecx/angular-remote-components'\nimport { ToastModule } from 'primeng/toast'\nimport { GlobalErrorComponent } from './components/error-component/global-error.component'\nimport { PortalFooterComponent } from './components/portal-footer/portal-footer.component'\nimport { HeaderComponent } from './components/portal-header/header.component'\nimport { PortalViewportComponent } from './components/portal-viewport/portal-viewport.component'\n\n@NgModule({\n imports: [CommonModule, RouterModule, AngularRemoteComponentsModule, AngularAcceleratorModule, ToastModule],\n declarations: [PortalViewportComponent, HeaderComponent, PortalFooterComponent, GlobalErrorComponent],\n exports: [PortalViewportComponent, HeaderComponent, PortalFooterComponent, ToastModule, GlobalErrorComponent],\n})\nexport class ShellCoreModule {}\n","import { Injectable } from '@angular/core'\nimport { Observable, shareReplay } from 'rxjs'\n\n@Injectable({ providedIn: 'root' })\nexport class PermissionsCacheService {\n permissions: Record<string, Observable<string[]>> = {}\n\n getPermissions(\n appId: string,\n productName: string,\n cacheMissFkt: (appId: string, productName: string) => Observable<string[]>\n ): Observable<string[]> {\n const key = appId + '|' + productName\n if (!this.permissions[key]) {\n this.permissions[key] = cacheMissFkt(appId, productName).pipe(shareReplay())\n }\n return this.permissions[key]\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2","i3","i5","i4","i6","i8.HeaderComponent","i9.PortalFooterComponent","i10.GlobalErrorComponent"],"mappings":"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"}
@@ -1,9 +1,14 @@
1
1
  import { HttpClient } from '@angular/common/http';
2
- import { AfterViewInit, OnDestroy, OnInit, Renderer2 } from '@angular/core';
2
+ import { AfterViewInit, InjectionToken, OnDestroy, OnInit, Renderer2 } from '@angular/core';
3
3
  import { Router } from '@angular/router';
4
4
  import { AppStateService, PortalMessageService, ThemeService, UserService } from '@onecx/angular-integration-interface';
5
5
  import { MessageService, PrimeNGConfig } from 'primeng/api';
6
+ import { BehaviorSubject } from 'rxjs';
6
7
  import * as i0 from "@angular/core";
8
+ export declare const SHOW_CONTENT_PROVIDER: InjectionToken<ShowContentProvider>;
9
+ export interface ShowContentProvider {
10
+ showContent$: BehaviorSubject<boolean>;
11
+ }
7
12
  export declare class PortalViewportComponent implements OnInit, AfterViewInit, OnDestroy {
8
13
  private renderer;
9
14
  private primengConfig;
@@ -14,6 +19,7 @@ export declare class PortalViewportComponent implements OnInit, AfterViewInit, O
14
19
  private themeService;
15
20
  private httpClient;
16
21
  private router;
22
+ showContentProvider: ShowContentProvider | undefined;
17
23
  menuButtonTitle: string;
18
24
  menuActive: boolean;
19
25
  activeTopbarItem: string | undefined;
@@ -26,8 +32,7 @@ export declare class PortalViewportComponent implements OnInit, AfterViewInit, O
26
32
  ripple: boolean;
27
33
  isMobile: boolean;
28
34
  globalErrMsg: string | undefined;
29
- showContent$: import("rxjs").Observable<boolean>;
30
- constructor(renderer: Renderer2, primengConfig: PrimeNGConfig, messageService: MessageService, appStateService: AppStateService, portalMessageService: PortalMessageService, userService: UserService, themeService: ThemeService, httpClient: HttpClient, router: Router);
35
+ constructor(renderer: Renderer2, primengConfig: PrimeNGConfig, messageService: MessageService, appStateService: AppStateService, portalMessageService: PortalMessageService, userService: UserService, themeService: ThemeService, httpClient: HttpClient, router: Router, showContentProvider: ShowContentProvider | undefined);
31
36
  ngOnInit(): void;
32
37
  ngAfterViewInit(): void;
33
38
  ngOnDestroy(): void;
@@ -36,6 +41,6 @@ export declare class PortalViewportComponent implements OnInit, AfterViewInit, O
36
41
  isHorizontalMenuMode(): boolean;
37
42
  isStaticalMenuVisible(): boolean;
38
43
  isHorizontalMenuVisible(): boolean;
39
- static ɵfac: i0.ɵɵFactoryDeclaration<PortalViewportComponent, never>;
44
+ static ɵfac: i0.ɵɵFactoryDeclaration<PortalViewportComponent, [null, null, null, null, null, null, null, null, null, { optional: true; }]>;
40
45
  static ɵcmp: i0.ɵɵComponentDeclaration<PortalViewportComponent, "ocx-shell-portal-viewport", never, {}, {}, never, ["*"], false, never>;
41
46
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@onecx/shell-core",
3
- "version": "4.16.0",
3
+ "version": "4.17.1",
4
4
  "peerDependencies": {
5
5
  "rxjs": "7.8.1",
6
6
  "@angular/animations": "^15.2.7",