barsa-tiles 2.2.1 → 2.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/barsa-tiles.mjs +5 -0
- package/esm2022/lib/action-item/action-item.component.mjs +17 -0
- package/esm2022/lib/action-links.pipe.mjs +17 -0
- package/esm2022/lib/actions-link/actions-link.component.mjs +49 -0
- package/esm2022/lib/app-finder/app-finder.component.mjs +52 -0
- package/esm2022/lib/app-finder-app-list/app-finder-app-list.component.mjs +39 -0
- package/esm2022/lib/app-finder-group/app-finder-group.component.mjs +41 -0
- package/esm2022/lib/app-finder.service.mjs +121 -0
- package/esm2022/lib/barsa-pin-app/barsa-pin-app.component.mjs +34 -0
- package/esm2022/lib/barsa-shellbar/barsa-shellbar.component.mjs +183 -0
- package/esm2022/lib/barsa-tile-group-page/barsa-tile-group-page.component.mjs +71 -0
- package/esm2022/lib/barsa-tile-sidebar-page/barsa-tile-sidebar-page.component.mjs +45 -0
- package/esm2022/lib/barsa-tiles-routing.module.mjs +58 -0
- package/esm2022/lib/barsa-tiles.module.mjs +278 -0
- package/esm2022/lib/change-app-tile/change-app-tile.component.mjs +46 -0
- package/esm2022/lib/create-app-group/create-app-group.component.mjs +43 -0
- package/esm2022/lib/directives/emptylist.directive.mjs +37 -0
- package/esm2022/lib/feed-tile/feed-tile.component.mjs +31 -0
- package/esm2022/lib/footer-edit-tile/footer-edit-tile.component.mjs +13 -0
- package/esm2022/lib/footer-tile/footer-tile.component.mjs +22 -0
- package/esm2022/lib/form-app-finder/form-app-finder.component.mjs +95 -0
- package/esm2022/lib/form-tile/form-tile.component.mjs +34 -0
- package/esm2022/lib/logo-tile/logo-tile.component.mjs +23 -0
- package/esm2022/lib/micro-tile-chart-area/micro-tile-chart-area.component.mjs +40 -0
- package/esm2022/lib/micro-tile-chart-bar/micro-tile-chart-bar.component.mjs +16 -0
- package/esm2022/lib/micro-tile-chart-bullet/micro-tile-chart-bullet.component.mjs +26 -0
- package/esm2022/lib/micro-tile-chart-circular/micro-tile-chart-circular.component.mjs +20 -0
- package/esm2022/lib/micro-tile-chart-comparison/micro-tile-chart-comparison.component.mjs +31 -0
- package/esm2022/lib/micro-tile-chart-line/micro-tile-chart-line.component.mjs +32 -0
- package/esm2022/lib/micro-tile-chart-stackbar/micro-tile-chart-stackbar.component.mjs +27 -0
- package/esm2022/lib/models/app-tile-footer-section.mjs +2 -0
- package/esm2022/lib/models/app-tile-footer.mjs +2 -0
- package/esm2022/lib/models/app-tile-group-pin.mjs +2 -0
- package/esm2022/lib/models/base-bt-tile-component.mjs +27 -0
- package/esm2022/lib/models/base-tile-component.mjs +59 -0
- package/esm2022/lib/models/base-tile-setting.mjs +2 -0
- package/esm2022/lib/models/feed-tile-setting.mjs +2 -0
- package/esm2022/lib/models/index.mjs +14 -0
- package/esm2022/lib/models/logo-tile-setting.mjs +2 -0
- package/esm2022/lib/models/micro-tile-chart-bullet-setting.mjs +2 -0
- package/esm2022/lib/models/news-tile-setting.mjs +2 -0
- package/esm2022/lib/models/numeric-tile-setting.mjs +2 -0
- package/esm2022/lib/models/profile-tile-setting.mjs +2 -0
- package/esm2022/lib/models/tile-setting.mjs +2 -0
- package/esm2022/lib/models/user-portal-settings.mjs +2 -0
- package/esm2022/lib/news-tile/news-tile.component.mjs +53 -0
- package/esm2022/lib/notification-group/notification-group.component.mjs +111 -0
- package/esm2022/lib/notification-group-header/notification-group-header.component.mjs +38 -0
- package/esm2022/lib/numeric-tile/numeric-tile.component.mjs +64 -0
- package/esm2022/lib/pin-tile/pin-tile.component.mjs +110 -0
- package/esm2022/lib/pipes/group-tiles.pipe.mjs +32 -0
- package/esm2022/lib/pipes/home-group.pipe.mjs +18 -0
- package/esm2022/lib/pipes/tile-home-filter.pipe.mjs +29 -0
- package/esm2022/lib/pipes/tile-prop.pipe.mjs +51 -0
- package/esm2022/lib/popover-app-finder/filter-apps-grouped.pipe.mjs +36 -0
- package/esm2022/lib/popover-app-finder/popover-app-finder.component.mjs +102 -0
- package/esm2022/lib/profile-tile/profile-tile.component.mjs +34 -0
- package/esm2022/lib/shellbar/shellbar.component.mjs +237 -0
- package/esm2022/lib/simple-tile/simple-tile.component.mjs +27 -0
- package/esm2022/lib/tile/tile.component.mjs +95 -0
- package/esm2022/lib/tile-renderer.directive.mjs +83 -0
- package/esm2022/lib/tile-size.directive.mjs +31 -0
- package/esm2022/lib/tile-style.directive.mjs +30 -0
- package/esm2022/lib/tiles-viewer/tiles-viewer.component.mjs +188 -0
- package/esm2022/lib/tiles-viewer-container/tiles-viewer-container.component.mjs +173 -0
- package/esm2022/lib/tiles-viewer-group/tiles-viewer-group.component.mjs +89 -0
- package/esm2022/lib/tiles-viewer.service.mjs +130 -0
- package/esm2022/lib/tiles.service.mjs +614 -0
- package/esm2022/public-api.mjs +49 -0
- package/package.json +3 -1
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, inject, Inject, Input, Output, TemplateRef, ViewChild } from '@angular/core';
|
|
2
|
+
import { DOCUMENT } from '@angular/common';
|
|
3
|
+
import { ComboboxComponent } from '@fundamental-ngx/core';
|
|
4
|
+
import { BaseComponent, APP_VERSION } from 'barsa-novin-ray-core';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "@fundamental-ngx/core";
|
|
7
|
+
import * as i2 from "@angular/common";
|
|
8
|
+
import * as i3 from "@fundamental-ngx/core/button";
|
|
9
|
+
import * as i4 from "@fundamental-ngx/core/list";
|
|
10
|
+
import * as i5 from "@fundamental-ngx/core/menu";
|
|
11
|
+
import * as i6 from "@fundamental-ngx/core/dialog";
|
|
12
|
+
import * as i7 from "@fundamental-ngx/core/title";
|
|
13
|
+
import * as i8 from "@fundamental-ngx/core/product-switch";
|
|
14
|
+
import * as i9 from "@fundamental-ngx/core/popover";
|
|
15
|
+
import * as i10 from "@fundamental-ngx/core/shellbar";
|
|
16
|
+
import * as i11 from "barsa-novin-ray-core";
|
|
17
|
+
import * as i12 from "barsa-sap-ui";
|
|
18
|
+
import * as i13 from "../notification-group/notification-group.component";
|
|
19
|
+
export class BarsaShellbarComponent extends BaseComponent {
|
|
20
|
+
constructor(_dialogService, _document, appVersion) {
|
|
21
|
+
super();
|
|
22
|
+
this._dialogService = _dialogService;
|
|
23
|
+
this._document = _document;
|
|
24
|
+
this.appVersion = appVersion;
|
|
25
|
+
this.isServiceDesk = false;
|
|
26
|
+
this.isOpenQuickAccessChanged = new EventEmitter(false);
|
|
27
|
+
this.openNotificationPanel = new EventEmitter();
|
|
28
|
+
this.openQuickAccessPanel = new EventEmitter();
|
|
29
|
+
this.cultureChanged = new EventEmitter();
|
|
30
|
+
this.notifiationActionClick = new EventEmitter();
|
|
31
|
+
this._cdr = inject(ChangeDetectorRef);
|
|
32
|
+
this.Array = Array;
|
|
33
|
+
this.isOpenNotificatoin = false;
|
|
34
|
+
this.user = {
|
|
35
|
+
initials: 'WW',
|
|
36
|
+
colorAccent: 1
|
|
37
|
+
};
|
|
38
|
+
this.searchTerms = ['مرخصی', 'ماموریت', 'تیکت', 'پروژه'];
|
|
39
|
+
this.showVersion = false;
|
|
40
|
+
this.onBellNotification = () => {
|
|
41
|
+
this._document?.body && this._document.body.click();
|
|
42
|
+
this._dialogService
|
|
43
|
+
.open(this._notificationsDialog, {
|
|
44
|
+
mobile: true,
|
|
45
|
+
verticalPadding: false,
|
|
46
|
+
closeOnNavigation: true
|
|
47
|
+
})
|
|
48
|
+
.afterLoaded.subscribe(() => {
|
|
49
|
+
this.openNotificationPanel.emit();
|
|
50
|
+
});
|
|
51
|
+
};
|
|
52
|
+
this._viewedNotifications = [];
|
|
53
|
+
// end notification actions
|
|
54
|
+
this.onOpenQuickAccess = () => {
|
|
55
|
+
this.isOpenQuickAccessChanged.emit(true);
|
|
56
|
+
this.openQuickAccessPanel.emit();
|
|
57
|
+
};
|
|
58
|
+
this.onOpenNotification = () => {
|
|
59
|
+
this.isOpenNotificatoin = true;
|
|
60
|
+
this.openNotificationPanel.emit();
|
|
61
|
+
};
|
|
62
|
+
this.onLanguage = (e) => {
|
|
63
|
+
const culture = e.currentTarget.textContent.trim();
|
|
64
|
+
this._changeCulture(culture);
|
|
65
|
+
};
|
|
66
|
+
this.showVersion = false;
|
|
67
|
+
}
|
|
68
|
+
ngOnChanges(changes) {
|
|
69
|
+
super.ngOnChanges(changes);
|
|
70
|
+
const { userProfileImageUrl } = changes;
|
|
71
|
+
if (userProfileImageUrl) {
|
|
72
|
+
this.user.image = userProfileImageUrl.currentValue;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
onRouteFormStateChange() {
|
|
76
|
+
this._closeSideMenu();
|
|
77
|
+
}
|
|
78
|
+
onCultureChange(culture) {
|
|
79
|
+
this._changeCulture(culture);
|
|
80
|
+
}
|
|
81
|
+
// notifiatiaon actions
|
|
82
|
+
onNotificationAction(e) {
|
|
83
|
+
this.notifiationActionClick.emit(e);
|
|
84
|
+
}
|
|
85
|
+
_closeSideMenu() {
|
|
86
|
+
if (!this.isOpenQuickAccess) {
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
this.isOpenQuickAccessChanged.emit(false);
|
|
90
|
+
this._cdr.detectChanges();
|
|
91
|
+
}
|
|
92
|
+
_changeCulture(culture) {
|
|
93
|
+
this.cultureChanged.emit(culture);
|
|
94
|
+
}
|
|
95
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BarsaShellbarComponent, deps: [{ token: i1.DialogService }, { token: DOCUMENT }, { token: APP_VERSION }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
96
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: BarsaShellbarComponent, selector: "bt-barsa-shellbar", inputs: { cssCustomUrl: "cssCustomUrl", cssUrl: "cssUrl", cssVariableUrl: "cssVariableUrl", multiLanguages: "multiLanguages", userLoggedIn: "userLoggedIn", settings: "settings", productMenuControl: "productMenuControl", deviceSize: "deviceSize", cultures: "cultures", shellbarData: "shellbarData", notificationCount: "notificationCount", productMenuItems1: "productMenuItems1", bodyClick: "bodyClick", logo: "logo", actions: "actions", userMenu: "userMenu", productSwitcher: "productSwitcher", subtitle: "subtitle", isMobile: "isMobile", hideShellbarActions: "hideShellbarActions", showExtraButton: "showExtraButton", isTablet: "isTablet", userProfileImageUrl: "userProfileImageUrl", isDesktop: "isDesktop", isServiceDesk: "isServiceDesk", isOpenQuickAccess: "isOpenQuickAccess", sideMenuTemplate: "sideMenuTemplate", notificationReport: "notificationReport" }, outputs: { isOpenQuickAccessChanged: "isOpenQuickAccessChanged", openNotificationPanel: "openNotificationPanel", openQuickAccessPanel: "openQuickAccessPanel", cultureChanged: "cultureChanged", notifiationActionClick: "notifiationActionClick" }, viewQueries: [{ propertyName: "comboboxComponent", first: true, predicate: ComboboxComponent, descendants: true }, { propertyName: "popoverComponent", first: true, predicate: ["popoverComponent"], descendants: true }, { propertyName: "_notificationsDialog", first: true, predicate: ["notificationsDialog"], descendants: true, read: TemplateRef, static: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "@if (cssVariableUrl) {\r\n<link type=\"text/css\" rel=\"stylesheet\" [href]=\"cssVariableUrl\" />\r\n} @if (cssUrl) {\r\n<link type=\"text/css\" rel=\"stylesheet\" [href]=\"cssUrl\" />\r\n} @if (cssCustomUrl) {\r\n<link type=\"text/css\" rel=\"stylesheet\" [href]=\"cssCustomUrl\" />\r\n}\r\n<fd-shellbar\r\n [size]=\"deviceSize\"\r\n [ngClass]=\"deviceSize\"\r\n routeFormChange\r\n (stateChanged)=\"onRouteFormStateChange()\"\r\n [handleBodyClick]=\"true\"\r\n>\r\n @if (sideMenuTemplate) {\r\n <fd-shellbar-action\r\n [glyph]=\"'apps'\"\r\n [label]=\"'Quick Access' | bbbTranslate\"\r\n [notificationCount]=\"notificationCount.unread ?? 0\"\r\n [notificationLabel]=\"'Quick Access' | bbbTranslate\"\r\n [callback]=\"onOpenQuickAccess\"\r\n >\r\n </fd-shellbar-action>\r\n } @if (sideMenuTemplate) {\r\n <button\r\n fd-shellbar-side-nav\r\n fd-button\r\n fdType=\"transparent\"\r\n glyph=\"menu2\"\r\n style=\"width: 2.75rem\"\r\n (click)=\"$event.stopPropagation(); isOpenQuickAccessChanged.emit(!isOpenQuickAccess)\"\r\n ></button>\r\n } @if (logo) {\r\n <fd-shellbar-logo>\r\n <a\r\n [style.backgroundImage]=\"'url(' + (logo?.FileId | picFieldSrc: 'GetPictureFromFileInfo':null) + ')'\"\r\n href=\"/\"\r\n class=\"fd-shellbar__logo fd-shellbar__logo--image-replaced\"\r\n aria-label=\"Barsa Novin Ray\"\r\n ></a>\r\n </fd-shellbar-logo>\r\n } @if (!settings?.HideProductMenu && productMenuItems1 && productMenuItems1.length > 0) {\r\n <fd-product-menu [control]=\"productMenuControl\" [closePopoverOnSelect]=\"true\" [items]=\"productMenuItems1\">\r\n </fd-product-menu>\r\n }\r\n <fd-shellbar-subtitle> {{ subtitle | bbbTranslate }}{{ showVersion ? appVersion : '' }}</fd-shellbar-subtitle>\r\n @if (!hideShellbarActions&& user && (userMenu?.length || !settings?.HideLanguage)) {\r\n <fd-shellbar-actions [user]=\"user\" [userMenu]=\"userMenu\" #langRef>\r\n @for (action of actions; track action) {\r\n <fd-shellbar-action\r\n [glyph]=\"action.Icon\"\r\n [callback]=\"action.Callback\"\r\n [label]=\"action.Label\"\r\n notificationLabel=\"login\"\r\n >\r\n </fd-shellbar-action>\r\n } @if (deviceSize === 's' && userLoggedIn && !settings?.HideNotifications) {\r\n <fd-shellbar-action\r\n [glyph]=\"'bell'\"\r\n [label]=\"'Notifications' | bbbTranslate\"\r\n [notificationCount]=\"notificationCount.unread ?? 0\"\r\n [notificationLabel]=\"'Notifications' | bbbTranslate\"\r\n [callback]=\"onBellNotification\"\r\n >\r\n </fd-shellbar-action>\r\n } @if (!settings?.HideNotifications && userLoggedIn) {\r\n <fd-popover\r\n [(isOpen)]=\"isOpenNotificatoin\"\r\n [triggers]=\"[]\"\r\n [focusTrapped]=\"true\"\r\n [noArrow]=\"true\"\r\n placement=\"bottom\"\r\n title=\"Notification Popover\"\r\n [focusAutoCapture]=\"true\"\r\n [mobile]=\"deviceSize === 's'\"\r\n #popoverComponent\r\n >\r\n <fd-popover-control>\r\n <fd-shellbar-action\r\n [glyph]=\"'bell'\"\r\n [label]=\"'Notification'\"\r\n [notificationCount]=\"notificationCount.unread\"\r\n [notificationLabel]=\"'Notification Label'\"\r\n [callback]=\"onOpenNotification\"\r\n >\r\n </fd-shellbar-action>\r\n </fd-popover-control>\r\n <fd-popover-body style=\"min-width: 320px; overflow-x: auto; box-shadow: var(--sapContent_Shadow0)\">\r\n <ng-container\r\n *ngTemplateOutlet=\"notificationGroupTpl; context: { notificationCount: notificationCount }\"\r\n ></ng-container>\r\n </fd-popover-body>\r\n </fd-popover>\r\n } @if (!settings?.HideLanguage && deviceSize !== 's' && multiLanguages) {\r\n <fd-shellbar-action [glyph]=\"'world'\" [label]=\"'language'\" [fdMenuTrigger]=\"menu\" (callback)=\"(onLanguage)\">\r\n </fd-shellbar-action>\r\n } @if (!settings?.HideLanguage && deviceSize === 's' && multiLanguages) { @for (culture of cultures | keyvalue;\r\n track culture) {\r\n <fd-shellbar-action\r\n [label]=\"culture.value\"\r\n [callback]=\"onLanguage\"\r\n class=\"culture-abbrivation\"\r\n [glyph]=\"culture.key\"\r\n [ngClass]=\"'flags'\"\r\n >\r\n </fd-shellbar-action>\r\n } } @if (productSwitcher?.length) {\r\n <fd-product-switch>\r\n <fd-product-switch-body [products]=\"productSwitcher\" [forceListMode]=\"deviceSize === 's'\">\r\n </fd-product-switch-body>\r\n </fd-product-switch>\r\n }\r\n </fd-shellbar-actions>\r\n }\r\n</fd-shellbar>\r\n@if(showExtraButton){\r\n<div\r\n [class.fd-shellbar--xl]=\"isDesktop\"\r\n [class.fd-shellbar--m]=\"isTablet\"\r\n [class.fd-shellbar--s]=\"isMobile\"\r\n class=\"extra-button-wrapper\"\r\n [class.service-desk]=\"isServiceDesk\"\r\n>\r\n <ng-content select=\"button\"></ng-content>\r\n</div>\r\n}\r\n<ng-template #loading>\r\n <bsu-mask></bsu-mask>\r\n</ng-template>\r\n\r\n<div\r\n *ngIf=\"sideMenuTemplate\"\r\n class=\"sidemenu-h tw-fixed tw-bg-white tw-transition-all tw-z-[100] tw-shadow-2xl tw-overflow-auto\"\r\n [class.tw-w-screen]=\"isMobile\"\r\n [class.-tw-right-full]=\"isMobile\"\r\n [class.tw-w-96]=\"!isMobile\"\r\n [class.-tw-right-96]=\"!isMobile\"\r\n [class.!tw-right-0]=\"isOpenQuickAccess\"\r\n (click)=\"$event.stopPropagation()\"\r\n>\r\n <ng-container *ngTemplateOutlet=\"sideMenuTemplate\"></ng-container>\r\n</div>\r\n\r\n@if(isOpenQuickAccess) {\r\n<div\r\n class=\"sidemenu-h tw-fixed tw-right-0 tw-bg-slate-800/[.5] tw-z-[90] tw-w-screen tw-backdrop-blur-sm\"\r\n (click)=\"isOpenQuickAccessChanged.emit(false)\"\r\n></div>\r\n}\r\n<fd-menu #menu>\r\n <ul fd-list>\r\n @for (culture of cultures | keyvalue; track culture) {\r\n <li fd-list-item>\r\n <a fd-list-link (click)=\"onCultureChange(culture.value)\">\r\n <span fd-list-title>\r\n <img width=\"14px\" height=\"12px\" [src]=\"'/assets/flags/' + culture.key + '.png'\" />\r\n <span class=\"culture-abbrivation\" [ngClass]=\"culture.key\"> {{ culture.key }}</span>\r\n </span>\r\n </a>\r\n </li>\r\n }\r\n </ul>\r\n</fd-menu>\r\n<ng-template #notificationGroupTpl let-notificationCount=\"notificationCount\">\r\n <bt-notification-group\r\n [notificationReport]=\"notificationReport\"\r\n [notificationCount]=\"notificationCount\"\r\n (actionClick)=\"popoverComponent.close(); onNotificationAction($event)\"\r\n [deviceSize]=\"deviceSize\"\r\n ></bt-notification-group>\r\n</ng-template>\r\n\r\n<ng-template let-dialog let-dialogConfig=\"dialogConfig\" #notificationsDialog>\r\n <fd-dialog [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\">\r\n <fd-dialog-header>\r\n <h1 id=\"fd-dialog-header-10\" fd-title>{{ 'Notification' | bbbTranslate }}</h1>\r\n <button fd-dialog-close-button (click)=\"dialog.dismiss()\"></button>\r\n </fd-dialog-header>\r\n <fd-dialog-body class=\"mobile\">\r\n <ng-container\r\n *ngTemplateOutlet=\"notificationGroupTpl; context: { notificationCount: notificationCount }\"\r\n ></ng-container>\r\n </fd-dialog-body>\r\n </fd-dialog>\r\n</ng-template>\r\n", styles: [":host{display:block;position:relative}:host ::ng-deep fd-shellbar-actions fd-avatar{background-color:transparent!important;color:var(--sapShell_InteractiveTextColor, #d1e8ff)}:host ::ng-deep fd-combobox .fd-input-group input{min-width:2rem;height:1.625rem;margin-top:.1875rem;margin-bottom:.1875rem;padding:0 .5rem;box-sizing:border-box}:host ::ng-deep fd-combobox .fd-input-group span{min-width:2rem;min-height:1.625rem}:host ::ng-deep .fd-shellbar__subtitle{font-size:1rem}:host ::ng-deep .fd-shellbar--s ::ng-deep .fd-shellbar__subtitle{display:block;overflow:hidden;text-wrap:wrap;width:100%;word-break:break-all}:host ::ng-deep .fd-shellbar--s ::ng-deep .fd-shellbar__group.fd-shellbar__group--product{flex:1}:host ::ng-deep .fd-shellbar--s ::ng-deep .fd-shellbar__group.fd-shellbar__group--actions{max-width:120px}.fd-shellbar__logo{min-height:3rem;height:3rem;width:3rem}.extra-button-wrapper{display:flex;height:100%;align-items:center;position:absolute;left:10px;top:0;gap:.285rem}.sidemenu-h{top:var(--fdShellbar_Height);height:calc(100vh - var(--fdShellbar_Height))}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i3.ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i4.ListComponent, selector: "[fd-list], [fdList]", inputs: ["dropdownMode", "multiInputMode", "mobileMode", "hasMessage", "noBorder", "navigationIndicator", "selection", "keyboardSupport", "byline", "unreadIndicator", "role"], outputs: ["focusEscapeList"] }, { kind: "component", type: i4.ListItemComponent, selector: "[fdListItem] ,[fd-list-item]", inputs: ["selected", "noData", "action", "interactive", "growing", "counter", "unread", "byline", "ariaRole", "id"], outputs: ["keyDown"] }, { kind: "directive", type: i4.ListTitleDirective, selector: "[fd-list-title], [fdListTitle]", inputs: ["wrap"] }, { kind: "directive", type: i4.ListLinkDirective, selector: "[fd-list-link], [fdListLink]", inputs: ["navigationIndicator", "navigated", "focusable"] }, { kind: "component", type: i5.MenuComponent, selector: "fd-menu", inputs: ["mobile", "disabled", "focusTrapped", "focusAutoCapture", "openOnHoverTime", "mobileConfig", "ariaLabel", "ariaLabelledby", "id"], outputs: ["activePath"] }, { kind: "directive", type: i5.MenuTriggerDirective, selector: "[fdMenuTrigger]", inputs: ["fdMenuTrigger"] }, { kind: "component", type: i6.DialogComponent, selector: "fd-dialog", inputs: ["class", "dialogRef", "dialogConfig"] }, { kind: "component", type: i6.DialogBodyComponent, selector: "fd-dialog-body", inputs: ["disablePaddings"] }, { kind: "component", type: i6.DialogHeaderComponent, selector: "fd-dialog-header" }, { kind: "component", type: i6.DialogCloseButtonComponent, selector: "[fd-dialog-close-button]", inputs: ["mobile", "title", "ariaLabel"] }, { kind: "component", type: i7.TitleComponent, selector: "[fd-title], [fdTitle]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "component", type: i8.ProductSwitchComponent, selector: "fd-product-switch", inputs: ["placement", "disabled"] }, { kind: "component", type: i8.ProductSwitchBodyComponent, selector: "fd-product-switch-body", inputs: ["dragAndDropEnabled", "products", "forceListMode"], outputs: ["productsChange", "itemClicked"] }, { kind: "component", type: i9.PopoverControlComponent, selector: "fd-popover-control, [fdPopoverControl]" }, { kind: "component", type: i9.PopoverBodyComponent, selector: "fd-popover-body", inputs: ["minWidth", "maxWidth", "minHeight", "maxHeight"] }, { kind: "component", type: i9.PopoverComponent, selector: "fd-popover", inputs: ["title", "trigger", "fixedPosition", "id", "mobile", "mobileConfig", "preventSpaceKeyScroll"] }, { kind: "component", type: i10.ShellbarComponent, selector: "fd-shellbar", inputs: ["size", "breakpoints", "sideNav", "groupFlex"] }, { kind: "component", type: i10.ProductMenuComponent, selector: "fd-product-menu", inputs: ["closeOnEscapeKey", "closeOnOutsideClick", "triggers", "placement", "disabled", "fillControlMode", "control", "items", "closePopoverOnSelect"] }, { kind: "component", type: i10.ShellbarSubtitleComponent, selector: "fd-shellbar-subtitle" }, { kind: "component", type: i10.ShellbarActionsComponent, selector: "fd-shellbar-actions", inputs: ["user", "userMenu", "closePopoverOnSelect"], outputs: ["searchOpen"] }, { kind: "component", type: i10.ShellbarActionComponent, selector: "fd-shellbar-action", inputs: ["glyph", "glyphFont", "callback", "label", "notificationLabel", "notificationCount"] }, { kind: "component", type: i10.ShellbarLogoComponent, selector: "fd-shellbar-logo" }, { kind: "directive", type: i10.ShellbarSidenavDirective, selector: "[fdShellbarSidenav], [fd-shellbar-side-nav]" }, { kind: "directive", type: i11.MobileDirective, selector: "[mobile]" }, { kind: "directive", type: i11.RouteFormChangeDirective, selector: "[routeFormChange]", inputs: ["handleBodyClick"], outputs: ["stateChanged"] }, { kind: "component", type: i12.MaskComponent, selector: "bsu-mask", inputs: ["size", "top"] }, { kind: "component", type: i13.NotificationGroupComponent, selector: "bt-notification-group", inputs: ["notifications", "loading", "deviceSize", "notificationCount", "notificationReport"], outputs: ["viewed", "remove", "actionClick", "showEvent", "loadMore"] }, { kind: "pipe", type: i2.KeyValuePipe, name: "keyvalue" }, { kind: "pipe", type: i11.PictureFieldSourcePipe, name: "picFieldSrc" }, { kind: "pipe", type: i11.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
97
|
+
}
|
|
98
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BarsaShellbarComponent, decorators: [{
|
|
99
|
+
type: Component,
|
|
100
|
+
args: [{ selector: 'bt-barsa-shellbar', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "@if (cssVariableUrl) {\r\n<link type=\"text/css\" rel=\"stylesheet\" [href]=\"cssVariableUrl\" />\r\n} @if (cssUrl) {\r\n<link type=\"text/css\" rel=\"stylesheet\" [href]=\"cssUrl\" />\r\n} @if (cssCustomUrl) {\r\n<link type=\"text/css\" rel=\"stylesheet\" [href]=\"cssCustomUrl\" />\r\n}\r\n<fd-shellbar\r\n [size]=\"deviceSize\"\r\n [ngClass]=\"deviceSize\"\r\n routeFormChange\r\n (stateChanged)=\"onRouteFormStateChange()\"\r\n [handleBodyClick]=\"true\"\r\n>\r\n @if (sideMenuTemplate) {\r\n <fd-shellbar-action\r\n [glyph]=\"'apps'\"\r\n [label]=\"'Quick Access' | bbbTranslate\"\r\n [notificationCount]=\"notificationCount.unread ?? 0\"\r\n [notificationLabel]=\"'Quick Access' | bbbTranslate\"\r\n [callback]=\"onOpenQuickAccess\"\r\n >\r\n </fd-shellbar-action>\r\n } @if (sideMenuTemplate) {\r\n <button\r\n fd-shellbar-side-nav\r\n fd-button\r\n fdType=\"transparent\"\r\n glyph=\"menu2\"\r\n style=\"width: 2.75rem\"\r\n (click)=\"$event.stopPropagation(); isOpenQuickAccessChanged.emit(!isOpenQuickAccess)\"\r\n ></button>\r\n } @if (logo) {\r\n <fd-shellbar-logo>\r\n <a\r\n [style.backgroundImage]=\"'url(' + (logo?.FileId | picFieldSrc: 'GetPictureFromFileInfo':null) + ')'\"\r\n href=\"/\"\r\n class=\"fd-shellbar__logo fd-shellbar__logo--image-replaced\"\r\n aria-label=\"Barsa Novin Ray\"\r\n ></a>\r\n </fd-shellbar-logo>\r\n } @if (!settings?.HideProductMenu && productMenuItems1 && productMenuItems1.length > 0) {\r\n <fd-product-menu [control]=\"productMenuControl\" [closePopoverOnSelect]=\"true\" [items]=\"productMenuItems1\">\r\n </fd-product-menu>\r\n }\r\n <fd-shellbar-subtitle> {{ subtitle | bbbTranslate }}{{ showVersion ? appVersion : '' }}</fd-shellbar-subtitle>\r\n @if (!hideShellbarActions&& user && (userMenu?.length || !settings?.HideLanguage)) {\r\n <fd-shellbar-actions [user]=\"user\" [userMenu]=\"userMenu\" #langRef>\r\n @for (action of actions; track action) {\r\n <fd-shellbar-action\r\n [glyph]=\"action.Icon\"\r\n [callback]=\"action.Callback\"\r\n [label]=\"action.Label\"\r\n notificationLabel=\"login\"\r\n >\r\n </fd-shellbar-action>\r\n } @if (deviceSize === 's' && userLoggedIn && !settings?.HideNotifications) {\r\n <fd-shellbar-action\r\n [glyph]=\"'bell'\"\r\n [label]=\"'Notifications' | bbbTranslate\"\r\n [notificationCount]=\"notificationCount.unread ?? 0\"\r\n [notificationLabel]=\"'Notifications' | bbbTranslate\"\r\n [callback]=\"onBellNotification\"\r\n >\r\n </fd-shellbar-action>\r\n } @if (!settings?.HideNotifications && userLoggedIn) {\r\n <fd-popover\r\n [(isOpen)]=\"isOpenNotificatoin\"\r\n [triggers]=\"[]\"\r\n [focusTrapped]=\"true\"\r\n [noArrow]=\"true\"\r\n placement=\"bottom\"\r\n title=\"Notification Popover\"\r\n [focusAutoCapture]=\"true\"\r\n [mobile]=\"deviceSize === 's'\"\r\n #popoverComponent\r\n >\r\n <fd-popover-control>\r\n <fd-shellbar-action\r\n [glyph]=\"'bell'\"\r\n [label]=\"'Notification'\"\r\n [notificationCount]=\"notificationCount.unread\"\r\n [notificationLabel]=\"'Notification Label'\"\r\n [callback]=\"onOpenNotification\"\r\n >\r\n </fd-shellbar-action>\r\n </fd-popover-control>\r\n <fd-popover-body style=\"min-width: 320px; overflow-x: auto; box-shadow: var(--sapContent_Shadow0)\">\r\n <ng-container\r\n *ngTemplateOutlet=\"notificationGroupTpl; context: { notificationCount: notificationCount }\"\r\n ></ng-container>\r\n </fd-popover-body>\r\n </fd-popover>\r\n } @if (!settings?.HideLanguage && deviceSize !== 's' && multiLanguages) {\r\n <fd-shellbar-action [glyph]=\"'world'\" [label]=\"'language'\" [fdMenuTrigger]=\"menu\" (callback)=\"(onLanguage)\">\r\n </fd-shellbar-action>\r\n } @if (!settings?.HideLanguage && deviceSize === 's' && multiLanguages) { @for (culture of cultures | keyvalue;\r\n track culture) {\r\n <fd-shellbar-action\r\n [label]=\"culture.value\"\r\n [callback]=\"onLanguage\"\r\n class=\"culture-abbrivation\"\r\n [glyph]=\"culture.key\"\r\n [ngClass]=\"'flags'\"\r\n >\r\n </fd-shellbar-action>\r\n } } @if (productSwitcher?.length) {\r\n <fd-product-switch>\r\n <fd-product-switch-body [products]=\"productSwitcher\" [forceListMode]=\"deviceSize === 's'\">\r\n </fd-product-switch-body>\r\n </fd-product-switch>\r\n }\r\n </fd-shellbar-actions>\r\n }\r\n</fd-shellbar>\r\n@if(showExtraButton){\r\n<div\r\n [class.fd-shellbar--xl]=\"isDesktop\"\r\n [class.fd-shellbar--m]=\"isTablet\"\r\n [class.fd-shellbar--s]=\"isMobile\"\r\n class=\"extra-button-wrapper\"\r\n [class.service-desk]=\"isServiceDesk\"\r\n>\r\n <ng-content select=\"button\"></ng-content>\r\n</div>\r\n}\r\n<ng-template #loading>\r\n <bsu-mask></bsu-mask>\r\n</ng-template>\r\n\r\n<div\r\n *ngIf=\"sideMenuTemplate\"\r\n class=\"sidemenu-h tw-fixed tw-bg-white tw-transition-all tw-z-[100] tw-shadow-2xl tw-overflow-auto\"\r\n [class.tw-w-screen]=\"isMobile\"\r\n [class.-tw-right-full]=\"isMobile\"\r\n [class.tw-w-96]=\"!isMobile\"\r\n [class.-tw-right-96]=\"!isMobile\"\r\n [class.!tw-right-0]=\"isOpenQuickAccess\"\r\n (click)=\"$event.stopPropagation()\"\r\n>\r\n <ng-container *ngTemplateOutlet=\"sideMenuTemplate\"></ng-container>\r\n</div>\r\n\r\n@if(isOpenQuickAccess) {\r\n<div\r\n class=\"sidemenu-h tw-fixed tw-right-0 tw-bg-slate-800/[.5] tw-z-[90] tw-w-screen tw-backdrop-blur-sm\"\r\n (click)=\"isOpenQuickAccessChanged.emit(false)\"\r\n></div>\r\n}\r\n<fd-menu #menu>\r\n <ul fd-list>\r\n @for (culture of cultures | keyvalue; track culture) {\r\n <li fd-list-item>\r\n <a fd-list-link (click)=\"onCultureChange(culture.value)\">\r\n <span fd-list-title>\r\n <img width=\"14px\" height=\"12px\" [src]=\"'/assets/flags/' + culture.key + '.png'\" />\r\n <span class=\"culture-abbrivation\" [ngClass]=\"culture.key\"> {{ culture.key }}</span>\r\n </span>\r\n </a>\r\n </li>\r\n }\r\n </ul>\r\n</fd-menu>\r\n<ng-template #notificationGroupTpl let-notificationCount=\"notificationCount\">\r\n <bt-notification-group\r\n [notificationReport]=\"notificationReport\"\r\n [notificationCount]=\"notificationCount\"\r\n (actionClick)=\"popoverComponent.close(); onNotificationAction($event)\"\r\n [deviceSize]=\"deviceSize\"\r\n ></bt-notification-group>\r\n</ng-template>\r\n\r\n<ng-template let-dialog let-dialogConfig=\"dialogConfig\" #notificationsDialog>\r\n <fd-dialog [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\">\r\n <fd-dialog-header>\r\n <h1 id=\"fd-dialog-header-10\" fd-title>{{ 'Notification' | bbbTranslate }}</h1>\r\n <button fd-dialog-close-button (click)=\"dialog.dismiss()\"></button>\r\n </fd-dialog-header>\r\n <fd-dialog-body class=\"mobile\">\r\n <ng-container\r\n *ngTemplateOutlet=\"notificationGroupTpl; context: { notificationCount: notificationCount }\"\r\n ></ng-container>\r\n </fd-dialog-body>\r\n </fd-dialog>\r\n</ng-template>\r\n", styles: [":host{display:block;position:relative}:host ::ng-deep fd-shellbar-actions fd-avatar{background-color:transparent!important;color:var(--sapShell_InteractiveTextColor, #d1e8ff)}:host ::ng-deep fd-combobox .fd-input-group input{min-width:2rem;height:1.625rem;margin-top:.1875rem;margin-bottom:.1875rem;padding:0 .5rem;box-sizing:border-box}:host ::ng-deep fd-combobox .fd-input-group span{min-width:2rem;min-height:1.625rem}:host ::ng-deep .fd-shellbar__subtitle{font-size:1rem}:host ::ng-deep .fd-shellbar--s ::ng-deep .fd-shellbar__subtitle{display:block;overflow:hidden;text-wrap:wrap;width:100%;word-break:break-all}:host ::ng-deep .fd-shellbar--s ::ng-deep .fd-shellbar__group.fd-shellbar__group--product{flex:1}:host ::ng-deep .fd-shellbar--s ::ng-deep .fd-shellbar__group.fd-shellbar__group--actions{max-width:120px}.fd-shellbar__logo{min-height:3rem;height:3rem;width:3rem}.extra-button-wrapper{display:flex;height:100%;align-items:center;position:absolute;left:10px;top:0;gap:.285rem}.sidemenu-h{top:var(--fdShellbar_Height);height:calc(100vh - var(--fdShellbar_Height))}\n"] }]
|
|
101
|
+
}], ctorParameters: () => [{ type: i1.DialogService }, { type: Document, decorators: [{
|
|
102
|
+
type: Inject,
|
|
103
|
+
args: [DOCUMENT]
|
|
104
|
+
}] }, { type: undefined, decorators: [{
|
|
105
|
+
type: Inject,
|
|
106
|
+
args: [APP_VERSION]
|
|
107
|
+
}] }], propDecorators: { cssCustomUrl: [{
|
|
108
|
+
type: Input
|
|
109
|
+
}], cssUrl: [{
|
|
110
|
+
type: Input
|
|
111
|
+
}], cssVariableUrl: [{
|
|
112
|
+
type: Input
|
|
113
|
+
}], multiLanguages: [{
|
|
114
|
+
type: Input
|
|
115
|
+
}], userLoggedIn: [{
|
|
116
|
+
type: Input
|
|
117
|
+
}], settings: [{
|
|
118
|
+
type: Input
|
|
119
|
+
}], productMenuControl: [{
|
|
120
|
+
type: Input
|
|
121
|
+
}], deviceSize: [{
|
|
122
|
+
type: Input
|
|
123
|
+
}], cultures: [{
|
|
124
|
+
type: Input
|
|
125
|
+
}], shellbarData: [{
|
|
126
|
+
type: Input
|
|
127
|
+
}], notificationCount: [{
|
|
128
|
+
type: Input
|
|
129
|
+
}], productMenuItems1: [{
|
|
130
|
+
type: Input
|
|
131
|
+
}], bodyClick: [{
|
|
132
|
+
type: Input
|
|
133
|
+
}], logo: [{
|
|
134
|
+
type: Input
|
|
135
|
+
}], actions: [{
|
|
136
|
+
type: Input
|
|
137
|
+
}], userMenu: [{
|
|
138
|
+
type: Input
|
|
139
|
+
}], productSwitcher: [{
|
|
140
|
+
type: Input
|
|
141
|
+
}], subtitle: [{
|
|
142
|
+
type: Input
|
|
143
|
+
}], isMobile: [{
|
|
144
|
+
type: Input
|
|
145
|
+
}], hideShellbarActions: [{
|
|
146
|
+
type: Input
|
|
147
|
+
}], showExtraButton: [{
|
|
148
|
+
type: Input
|
|
149
|
+
}], isTablet: [{
|
|
150
|
+
type: Input
|
|
151
|
+
}], userProfileImageUrl: [{
|
|
152
|
+
type: Input
|
|
153
|
+
}], isDesktop: [{
|
|
154
|
+
type: Input
|
|
155
|
+
}], isServiceDesk: [{
|
|
156
|
+
type: Input
|
|
157
|
+
}], isOpenQuickAccess: [{
|
|
158
|
+
type: Input
|
|
159
|
+
}], sideMenuTemplate: [{
|
|
160
|
+
type: Input
|
|
161
|
+
}], notificationReport: [{
|
|
162
|
+
type: Input
|
|
163
|
+
}], isOpenQuickAccessChanged: [{
|
|
164
|
+
type: Output
|
|
165
|
+
}], openNotificationPanel: [{
|
|
166
|
+
type: Output
|
|
167
|
+
}], openQuickAccessPanel: [{
|
|
168
|
+
type: Output
|
|
169
|
+
}], cultureChanged: [{
|
|
170
|
+
type: Output
|
|
171
|
+
}], notifiationActionClick: [{
|
|
172
|
+
type: Output
|
|
173
|
+
}], comboboxComponent: [{
|
|
174
|
+
type: ViewChild,
|
|
175
|
+
args: [ComboboxComponent]
|
|
176
|
+
}], popoverComponent: [{
|
|
177
|
+
type: ViewChild,
|
|
178
|
+
args: ['popoverComponent', { static: false }]
|
|
179
|
+
}], _notificationsDialog: [{
|
|
180
|
+
type: ViewChild,
|
|
181
|
+
args: ['notificationsDialog', { static: true, read: TemplateRef }]
|
|
182
|
+
}] } });
|
|
183
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFyc2Etc2hlbGxiYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2EtdGlsZXMvc3JjL2xpYi9iYXJzYS1zaGVsbGJhci9iYXJzYS1zaGVsbGJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS10aWxlcy9zcmMvbGliL2JhcnNhLXNoZWxsYmFyL2JhcnNhLXNoZWxsYmFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osTUFBTSxFQUNOLE1BQU0sRUFDTixLQUFLLEVBRUwsTUFBTSxFQUVOLFdBQVcsRUFDWCxTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRTNDLE9BQU8sRUFDSCxpQkFBaUIsRUFNcEIsTUFBTSx1QkFBdUIsQ0FBQztBQUUvQixPQUFPLEVBQ0gsYUFBYSxFQUliLFdBQVcsRUFJZCxNQUFNLHNCQUFzQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7QUFtQjlCLE1BQU0sT0FBTyxzQkFBdUIsU0FBUSxhQUFhO0lBa0VyRCxZQUNZLGNBQTZCLEVBQ1gsU0FBbUIsRUFDakIsVUFBa0I7UUFFOUMsS0FBSyxFQUFFLENBQUM7UUFKQSxtQkFBYyxHQUFkLGNBQWMsQ0FBZTtRQUNYLGNBQVMsR0FBVCxTQUFTLENBQVU7UUFDakIsZUFBVSxHQUFWLFVBQVUsQ0FBUTtRQTVDekMsa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFLckIsNkJBQXdCLEdBQUcsSUFBSSxZQUFZLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDNUQsMEJBQXFCLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUNqRCx5QkFBb0IsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBQ2hELG1CQUFjLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUM1QywyQkFBc0IsR0FBRyxJQUFJLFlBQVksRUFBdUQsQ0FBQztRQU1uRyxTQUFJLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFFekMsVUFBSyxHQUFHLEtBQUssQ0FBQztRQUNkLHVCQUFrQixHQUFHLEtBQUssQ0FBQztRQUUzQixTQUFJLEdBQWlCO1lBQ2pCLFFBQVEsRUFBRSxJQUFJO1lBQ2QsV0FBVyxFQUFFLENBQUM7U0FDakIsQ0FBQztRQUNGLGdCQUFXLEdBQUcsQ0FBQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztRQUdwRCxnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUNwQix1QkFBa0IsR0FBRyxHQUFTLEVBQUU7WUFDNUIsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDcEQsSUFBSSxDQUFDLGNBQWM7aUJBQ2QsSUFBSSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRTtnQkFDN0IsTUFBTSxFQUFFLElBQUk7Z0JBQ1osZUFBZSxFQUFFLEtBQUs7Z0JBQ3RCLGlCQUFpQixFQUFFLElBQUk7YUFDMUIsQ0FBQztpQkFDRCxXQUFXLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtnQkFDeEIsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3RDLENBQUMsQ0FBQyxDQUFDO1FBQ1gsQ0FBQyxDQUFDO1FBQ0YseUJBQW9CLEdBQXVCLEVBQUUsQ0FBQztRQTBCOUMsMkJBQTJCO1FBQzNCLHNCQUFpQixHQUFHLEdBQVMsRUFBRTtZQUMzQixJQUFJLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3pDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNyQyxDQUFDLENBQUM7UUFDRix1QkFBa0IsR0FBRyxHQUFTLEVBQUU7WUFDNUIsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQztZQUMvQixJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdEMsQ0FBQyxDQUFDO1FBRUYsZUFBVSxHQUFHLENBQUMsQ0FBQyxFQUFRLEVBQUU7WUFDckIsTUFBTSxPQUFPLEdBQUcsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDbkQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNqQyxDQUFDLENBQUM7UUFoQ0UsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7SUFDN0IsQ0FBQztJQUNELFdBQVcsQ0FBQyxPQUFzQjtRQUM5QixLQUFLLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzNCLE1BQU0sRUFBRSxtQkFBbUIsRUFBRSxHQUFHLE9BQU8sQ0FBQztRQUN4QyxJQUFJLG1CQUFtQixFQUFFLENBQUM7WUFDdEIsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsbUJBQW1CLENBQUMsWUFBWSxDQUFDO1FBQ3ZELENBQUM7SUFDTCxDQUFDO0lBQ0Qsc0JBQXNCO1FBQ2xCLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBQ0QsZUFBZSxDQUFDLE9BQU87UUFDbkIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBQ0QsdUJBQXVCO0lBQ3ZCLG9CQUFvQixDQUFDLENBQXNEO1FBQ3ZFLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQWdCTyxjQUFjO1FBQ2xCLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUMxQixPQUFPO1FBQ1gsQ0FBQztRQUNELElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDMUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBQ08sY0FBYyxDQUFDLE9BQWU7UUFDbEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDdEMsQ0FBQzsrR0FuSFEsc0JBQXNCLCtDQW9FbkIsUUFBUSxhQUNSLFdBQVc7bUdBckVkLHNCQUFzQiwrckNBb0NwQixpQkFBaUIsZ1BBRTRCLFdBQVcsdUZDM0Z2RSx3c1BBeUxBOzs0RkRwSWEsc0JBQXNCO2tCQVBsQyxTQUFTOytCQUNJLG1CQUFtQixtQkFHWix1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLEtBQUs7OzBCQXNFWixNQUFNOzJCQUFDLFFBQVE7OzBCQUNmLE1BQU07MkJBQUMsV0FBVzt5Q0FwRWQsWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBRUksd0JBQXdCO3NCQUFqQyxNQUFNO2dCQUNHLHFCQUFxQjtzQkFBOUIsTUFBTTtnQkFDRyxvQkFBb0I7c0JBQTdCLE1BQU07Z0JBQ0csY0FBYztzQkFBdkIsTUFBTTtnQkFDRyxzQkFBc0I7c0JBQS9CLE1BQU07Z0JBRXVCLGlCQUFpQjtzQkFBOUMsU0FBUzt1QkFBQyxpQkFBaUI7Z0JBQ3NCLGdCQUFnQjtzQkFBakUsU0FBUzt1QkFBQyxrQkFBa0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBQ3VCLG9CQUFvQjtzQkFBMUYsU0FBUzt1QkFBQyxxQkFBcUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICAgIENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgQ29tcG9uZW50LFxyXG4gICAgRXZlbnRFbWl0dGVyLFxyXG4gICAgaW5qZWN0LFxyXG4gICAgSW5qZWN0LFxyXG4gICAgSW5wdXQsXHJcbiAgICBPbkluaXQsXHJcbiAgICBPdXRwdXQsXHJcbiAgICBTaW1wbGVDaGFuZ2VzLFxyXG4gICAgVGVtcGxhdGVSZWYsXHJcbiAgICBWaWV3Q2hpbGRcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7XHJcbiAgICBDb21ib2JveENvbXBvbmVudCxcclxuICAgIERpYWxvZ1NlcnZpY2UsXHJcbiAgICBQb3BvdmVyQ29tcG9uZW50LFxyXG4gICAgUHJvZHVjdFN3aXRjaEl0ZW0sXHJcbiAgICBTaGVsbGJhck1lbnVJdGVtLFxyXG4gICAgU2hlbGxiYXJVc2VyXHJcbn0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlJztcclxuXHJcbmltcG9ydCB7XHJcbiAgICBCYXNlQ29tcG9uZW50LFxyXG4gICAgTWV0YW9iamVjdERhdGFNb2RlbCxcclxuICAgIEZpbGVQaWN0dXJlSW5mb01vZGVsLFxyXG4gICAgTW9Gb3JSZXBvcnRNb2RlbCxcclxuICAgIEFQUF9WRVJTSU9OLFxyXG4gICAgTm90aWZpY2F0aW9uSXRlbSxcclxuICAgIE5vdGlmaWNhdGlvbkFjdGlvbixcclxuICAgIEFiYnJldmF0aW9uRGV2aWNlU2l6ZVxyXG59IGZyb20gJ2JhcnNhLW5vdmluLXJheS1jb3JlJztcclxuaW1wb3J0IHsgU2FmZVJlc291cmNlVXJsIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XHJcbmludGVyZmFjZSBTaGVsbGJhclNldHRpbmcgZXh0ZW5kcyBNZXRhb2JqZWN0RGF0YU1vZGVsIHtcclxuICAgIHN1YnRpdGxlOiBzdHJpbmc7XHJcbiAgICBjYWxjU3VidGl0bGU6IHN0cmluZztcclxuICAgIGxvZ286IEZpbGVQaWN0dXJlSW5mb01vZGVsO1xyXG4gICAgUHJvZHVjdFN3aXRjaEl0ZW1zOiBNb0ZvclJlcG9ydE1vZGVsO1xyXG4gICAgUHJvZHVjdE1lbnVJdGVtczogTW9Gb3JSZXBvcnRNb2RlbDtcclxuICAgIFVzZXJNZW51SXRlbXM6IE1vRm9yUmVwb3J0TW9kZWw7XHJcbiAgICBBY3Rpb25JdGVtczogTW9Gb3JSZXBvcnRNb2RlbDtcclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2J0LWJhcnNhLXNoZWxsYmFyJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9iYXJzYS1zaGVsbGJhci5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi9iYXJzYS1zaGVsbGJhci5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgICBzdGFuZGFsb25lOiBmYWxzZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQmFyc2FTaGVsbGJhckNvbXBvbmVudCBleHRlbmRzIEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gICAgQElucHV0KCkgY3NzQ3VzdG9tVXJsOiBTYWZlUmVzb3VyY2VVcmwgfCBudWxsO1xyXG4gICAgQElucHV0KCkgY3NzVXJsOiBTYWZlUmVzb3VyY2VVcmwgfCBudWxsO1xyXG4gICAgQElucHV0KCkgY3NzVmFyaWFibGVVcmw6IFNhZmVSZXNvdXJjZVVybCB8IG51bGw7XHJcbiAgICBASW5wdXQoKSBtdWx0aUxhbmd1YWdlczogYm9vbGVhbjtcclxuICAgIEBJbnB1dCgpIHVzZXJMb2dnZWRJbjogYm9vbGVhbjtcclxuICAgIEBJbnB1dCgpIHNldHRpbmdzOiBNZXRhb2JqZWN0RGF0YU1vZGVsO1xyXG4gICAgQElucHV0KCkgcHJvZHVjdE1lbnVDb250cm9sOiBzdHJpbmc7XHJcbiAgICBASW5wdXQoKSBkZXZpY2VTaXplOiBBYmJyZXZhdGlvbkRldmljZVNpemU7XHJcbiAgICBASW5wdXQoKSBjdWx0dXJlczogUmVjb3JkPHN0cmluZywgYW55PjtcclxuICAgIEBJbnB1dCgpIHNoZWxsYmFyRGF0YTogU2hlbGxiYXJTZXR0aW5nO1xyXG4gICAgQElucHV0KCkgbm90aWZpY2F0aW9uQ291bnQ6IHsgdW5yZWFkOiBudW1iZXI7IGFsbDogbnVtYmVyIH07XHJcbiAgICBASW5wdXQoKSBwcm9kdWN0TWVudUl0ZW1zMTogU2hlbGxiYXJNZW51SXRlbVtdO1xyXG4gICAgQElucHV0KCkgYm9keUNsaWNrOiBzdHJpbmc7XHJcbiAgICBASW5wdXQoKSBsb2dvOiB7IEZpbGVJZDogc3RyaW5nIH07XHJcbiAgICBASW5wdXQoKSBhY3Rpb25zOiBBcnJheTxNZXRhb2JqZWN0RGF0YU1vZGVsPjtcclxuICAgIEBJbnB1dCgpIHVzZXJNZW51OiB7IHRleHQ6IHN0cmluZzsgY2FsbGJhY2s6ICgpID0+IHZvaWQgfVtdO1xyXG4gICAgQElucHV0KCkgcHJvZHVjdFN3aXRjaGVyOiBQcm9kdWN0U3dpdGNoSXRlbVtdO1xyXG4gICAgQElucHV0KCkgc3VidGl0bGU6IHN0cmluZztcclxuICAgIEBJbnB1dCgpIGlzTW9iaWxlOiBib29sZWFuO1xyXG4gICAgQElucHV0KCkgaGlkZVNoZWxsYmFyQWN0aW9uczogYm9vbGVhbjtcclxuICAgIEBJbnB1dCgpIHNob3dFeHRyYUJ1dHRvbjogYm9vbGVhbjtcclxuICAgIEBJbnB1dCgpIGlzVGFibGV0OiBib29sZWFuO1xyXG4gICAgQElucHV0KCkgdXNlclByb2ZpbGVJbWFnZVVybDogc3RyaW5nIHwgbnVsbDtcclxuICAgIEBJbnB1dCgpIGlzRGVza3RvcDogYm9vbGVhbjtcclxuICAgIEBJbnB1dCgpIGlzU2VydmljZURlc2sgPSBmYWxzZTtcclxuICAgIEBJbnB1dCgpIGlzT3BlblF1aWNrQWNjZXNzO1xyXG4gICAgQElucHV0KCkgc2lkZU1lbnVUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IG51bGw7XHJcbiAgICBASW5wdXQoKSBub3RpZmljYXRpb25SZXBvcnQ6IE1ldGFvYmplY3REYXRhTW9kZWw7XHJcblxyXG4gICAgQE91dHB1dCgpIGlzT3BlblF1aWNrQWNjZXNzQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gICAgQE91dHB1dCgpIG9wZW5Ob3RpZmljYXRpb25QYW5lbCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuICAgIEBPdXRwdXQoKSBvcGVuUXVpY2tBY2Nlc3NQYW5lbCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuICAgIEBPdXRwdXQoKSBjdWx0dXJlQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG4gICAgQE91dHB1dCgpIG5vdGlmaWF0aW9uQWN0aW9uQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHsgaXRlbTogTm90aWZpY2F0aW9uSXRlbTsgYnRuOiBOb3RpZmljYXRpb25BY3Rpb24gfT4oKTtcclxuXHJcbiAgICBAVmlld0NoaWxkKENvbWJvYm94Q29tcG9uZW50KSBjb21ib2JveENvbXBvbmVudDogQ29tYm9ib3hDb21wb25lbnQ7XHJcbiAgICBAVmlld0NoaWxkKCdwb3BvdmVyQ29tcG9uZW50JywgeyBzdGF0aWM6IGZhbHNlIH0pIHBvcG92ZXJDb21wb25lbnQ6IFBvcG92ZXJDb21wb25lbnQ7XHJcbiAgICBAVmlld0NoaWxkKCdub3RpZmljYXRpb25zRGlhbG9nJywgeyBzdGF0aWM6IHRydWUsIHJlYWQ6IFRlbXBsYXRlUmVmIH0pIF9ub3RpZmljYXRpb25zRGlhbG9nOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cclxuICAgIHByaXZhdGUgX2NkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XHJcblxyXG4gICAgQXJyYXkgPSBBcnJheTtcclxuICAgIGlzT3Blbk5vdGlmaWNhdG9pbiA9IGZhbHNlO1xyXG5cclxuICAgIHVzZXI6IFNoZWxsYmFyVXNlciA9IHtcclxuICAgICAgICBpbml0aWFsczogJ1dXJyxcclxuICAgICAgICBjb2xvckFjY2VudDogMVxyXG4gICAgfTtcclxuICAgIHNlYXJjaFRlcm1zID0gWyfZhdix2K7YtduMJywgJ9mF2KfZhdmI2LHbjNiqJywgJ9iq24zaqdiqJywgJ9m+2LHZiNqY2YcnXTtcclxuICAgIHNlYXJjaFRlcm06IHN0cmluZztcclxuICAgIGFjdGlvbnMkOiBPYnNlcnZhYmxlPFNoZWxsYmFyTWVudUl0ZW1bXT47XHJcbiAgICBzaG93VmVyc2lvbiA9IGZhbHNlO1xyXG4gICAgb25CZWxsTm90aWZpY2F0aW9uID0gKCk6IHZvaWQgPT4ge1xyXG4gICAgICAgIHRoaXMuX2RvY3VtZW50Py5ib2R5ICYmIHRoaXMuX2RvY3VtZW50LmJvZHkuY2xpY2soKTtcclxuICAgICAgICB0aGlzLl9kaWFsb2dTZXJ2aWNlXHJcbiAgICAgICAgICAgIC5vcGVuKHRoaXMuX25vdGlmaWNhdGlvbnNEaWFsb2csIHtcclxuICAgICAgICAgICAgICAgIG1vYmlsZTogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIHZlcnRpY2FsUGFkZGluZzogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICBjbG9zZU9uTmF2aWdhdGlvbjogdHJ1ZVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAuYWZ0ZXJMb2FkZWQuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMub3Blbk5vdGlmaWNhdGlvblBhbmVsLmVtaXQoKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICB9O1xyXG4gICAgX3ZpZXdlZE5vdGlmaWNhdGlvbnM6IE5vdGlmaWNhdGlvbkl0ZW1bXSA9IFtdO1xyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJpdmF0ZSBfZGlhbG9nU2VydmljZTogRGlhbG9nU2VydmljZSxcclxuICAgICAgICBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIF9kb2N1bWVudDogRG9jdW1lbnQsXHJcbiAgICAgICAgQEluamVjdChBUFBfVkVSU0lPTikgcHVibGljIGFwcFZlcnNpb246IHN0cmluZ1xyXG4gICAgKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICB0aGlzLnNob3dWZXJzaW9uID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICAgICAgc3VwZXIubmdPbkNoYW5nZXMoY2hhbmdlcyk7XHJcbiAgICAgICAgY29uc3QgeyB1c2VyUHJvZmlsZUltYWdlVXJsIH0gPSBjaGFuZ2VzO1xyXG4gICAgICAgIGlmICh1c2VyUHJvZmlsZUltYWdlVXJsKSB7XHJcbiAgICAgICAgICAgIHRoaXMudXNlci5pbWFnZSA9IHVzZXJQcm9maWxlSW1hZ2VVcmwuY3VycmVudFZhbHVlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIG9uUm91dGVGb3JtU3RhdGVDaGFuZ2UoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fY2xvc2VTaWRlTWVudSgpO1xyXG4gICAgfVxyXG4gICAgb25DdWx0dXJlQ2hhbmdlKGN1bHR1cmUpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9jaGFuZ2VDdWx0dXJlKGN1bHR1cmUpO1xyXG4gICAgfVxyXG4gICAgLy8gbm90aWZpYXRpYW9uIGFjdGlvbnNcclxuICAgIG9uTm90aWZpY2F0aW9uQWN0aW9uKGU6IHsgaXRlbTogTm90aWZpY2F0aW9uSXRlbTsgYnRuOiBOb3RpZmljYXRpb25BY3Rpb24gfSk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMubm90aWZpYXRpb25BY3Rpb25DbGljay5lbWl0KGUpO1xyXG4gICAgfVxyXG4gICAgLy8gZW5kIG5vdGlmaWNhdGlvbiBhY3Rpb25zXHJcbiAgICBvbk9wZW5RdWlja0FjY2VzcyA9ICgpOiB2b2lkID0+IHtcclxuICAgICAgICB0aGlzLmlzT3BlblF1aWNrQWNjZXNzQ2hhbmdlZC5lbWl0KHRydWUpO1xyXG4gICAgICAgIHRoaXMub3BlblF1aWNrQWNjZXNzUGFuZWwuZW1pdCgpO1xyXG4gICAgfTtcclxuICAgIG9uT3Blbk5vdGlmaWNhdGlvbiA9ICgpOiB2b2lkID0+IHtcclxuICAgICAgICB0aGlzLmlzT3Blbk5vdGlmaWNhdG9pbiA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5vcGVuTm90aWZpY2F0aW9uUGFuZWwuZW1pdCgpO1xyXG4gICAgfTtcclxuXHJcbiAgICBvbkxhbmd1YWdlID0gKGUpOiB2b2lkID0+IHtcclxuICAgICAgICBjb25zdCBjdWx0dXJlID0gZS5jdXJyZW50VGFyZ2V0LnRleHRDb250ZW50LnRyaW0oKTtcclxuICAgICAgICB0aGlzLl9jaGFuZ2VDdWx0dXJlKGN1bHR1cmUpO1xyXG4gICAgfTtcclxuXHJcbiAgICBwcml2YXRlIF9jbG9zZVNpZGVNZW51KCk6IHZvaWQge1xyXG4gICAgICAgIGlmICghdGhpcy5pc09wZW5RdWlja0FjY2Vzcykge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuaXNPcGVuUXVpY2tBY2Nlc3NDaGFuZ2VkLmVtaXQoZmFsc2UpO1xyXG4gICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgICBwcml2YXRlIF9jaGFuZ2VDdWx0dXJlKGN1bHR1cmU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuY3VsdHVyZUNoYW5nZWQuZW1pdChjdWx0dXJlKTtcclxuICAgIH1cclxufVxyXG4iLCJAaWYgKGNzc1ZhcmlhYmxlVXJsKSB7XHJcbjxsaW5rIHR5cGU9XCJ0ZXh0L2Nzc1wiIHJlbD1cInN0eWxlc2hlZXRcIiBbaHJlZl09XCJjc3NWYXJpYWJsZVVybFwiIC8+XHJcbn0gQGlmIChjc3NVcmwpIHtcclxuPGxpbmsgdHlwZT1cInRleHQvY3NzXCIgcmVsPVwic3R5bGVzaGVldFwiIFtocmVmXT1cImNzc1VybFwiIC8+XHJcbn0gQGlmIChjc3NDdXN0b21VcmwpIHtcclxuPGxpbmsgdHlwZT1cInRleHQvY3NzXCIgcmVsPVwic3R5bGVzaGVldFwiIFtocmVmXT1cImNzc0N1c3RvbVVybFwiIC8+XHJcbn1cclxuPGZkLXNoZWxsYmFyXHJcbiAgICBbc2l6ZV09XCJkZXZpY2VTaXplXCJcclxuICAgIFtuZ0NsYXNzXT1cImRldmljZVNpemVcIlxyXG4gICAgcm91dGVGb3JtQ2hhbmdlXHJcbiAgICAoc3RhdGVDaGFuZ2VkKT1cIm9uUm91dGVGb3JtU3RhdGVDaGFuZ2UoKVwiXHJcbiAgICBbaGFuZGxlQm9keUNsaWNrXT1cInRydWVcIlxyXG4+XHJcbiAgICBAaWYgKHNpZGVNZW51VGVtcGxhdGUpIHtcclxuICAgIDxmZC1zaGVsbGJhci1hY3Rpb25cclxuICAgICAgICBbZ2x5cGhdPVwiJ2FwcHMnXCJcclxuICAgICAgICBbbGFiZWxdPVwiJ1F1aWNrIEFjY2VzcycgfCBiYmJUcmFuc2xhdGVcIlxyXG4gICAgICAgIFtub3RpZmljYXRpb25Db3VudF09XCJub3RpZmljYXRpb25Db3VudC51bnJlYWQgPz8gMFwiXHJcbiAgICAgICAgW25vdGlmaWNhdGlvbkxhYmVsXT1cIidRdWljayBBY2Nlc3MnIHwgYmJiVHJhbnNsYXRlXCJcclxuICAgICAgICBbY2FsbGJhY2tdPVwib25PcGVuUXVpY2tBY2Nlc3NcIlxyXG4gICAgPlxyXG4gICAgPC9mZC1zaGVsbGJhci1hY3Rpb24+XHJcbiAgICB9IEBpZiAoc2lkZU1lbnVUZW1wbGF0ZSkge1xyXG4gICAgPGJ1dHRvblxyXG4gICAgICAgIGZkLXNoZWxsYmFyLXNpZGUtbmF2XHJcbiAgICAgICAgZmQtYnV0dG9uXHJcbiAgICAgICAgZmRUeXBlPVwidHJhbnNwYXJlbnRcIlxyXG4gICAgICAgIGdseXBoPVwibWVudTJcIlxyXG4gICAgICAgIHN0eWxlPVwid2lkdGg6IDIuNzVyZW1cIlxyXG4gICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IGlzT3BlblF1aWNrQWNjZXNzQ2hhbmdlZC5lbWl0KCFpc09wZW5RdWlja0FjY2VzcylcIlxyXG4gICAgPjwvYnV0dG9uPlxyXG4gICAgfSBAaWYgKGxvZ28pIHtcclxuICAgIDxmZC1zaGVsbGJhci1sb2dvPlxyXG4gICAgICAgIDxhXHJcbiAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kSW1hZ2VdPVwiJ3VybCgnICsgKGxvZ28/LkZpbGVJZCB8IHBpY0ZpZWxkU3JjOiAnR2V0UGljdHVyZUZyb21GaWxlSW5mbyc6bnVsbCkgKyAnKSdcIlxyXG4gICAgICAgICAgICBocmVmPVwiL1wiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiZmQtc2hlbGxiYXJfX2xvZ28gZmQtc2hlbGxiYXJfX2xvZ28tLWltYWdlLXJlcGxhY2VkXCJcclxuICAgICAgICAgICAgYXJpYS1sYWJlbD1cIkJhcnNhIE5vdmluIFJheVwiXHJcbiAgICAgICAgPjwvYT5cclxuICAgIDwvZmQtc2hlbGxiYXItbG9nbz5cclxuICAgIH0gQGlmICghc2V0dGluZ3M/LkhpZGVQcm9kdWN0TWVudSAmJiBwcm9kdWN0TWVudUl0ZW1zMSAmJiBwcm9kdWN0TWVudUl0ZW1zMS5sZW5ndGggPiAwKSB7XHJcbiAgICA8ZmQtcHJvZHVjdC1tZW51IFtjb250cm9sXT1cInByb2R1Y3RNZW51Q29udHJvbFwiIFtjbG9zZVBvcG92ZXJPblNlbGVjdF09XCJ0cnVlXCIgW2l0ZW1zXT1cInByb2R1Y3RNZW51SXRlbXMxXCI+XHJcbiAgICA8L2ZkLXByb2R1Y3QtbWVudT5cclxuICAgIH1cclxuICAgIDxmZC1zaGVsbGJhci1zdWJ0aXRsZT4ge3sgc3VidGl0bGUgfCBiYmJUcmFuc2xhdGUgfX17eyBzaG93VmVyc2lvbiA/IGFwcFZlcnNpb24gOiAnJyB9fTwvZmQtc2hlbGxiYXItc3VidGl0bGU+XHJcbiAgICBAaWYgKCFoaWRlU2hlbGxiYXJBY3Rpb25zJiYgdXNlciAmJiAodXNlck1lbnU/Lmxlbmd0aCB8fCAhc2V0dGluZ3M/LkhpZGVMYW5ndWFnZSkpIHtcclxuICAgIDxmZC1zaGVsbGJhci1hY3Rpb25zIFt1c2VyXT1cInVzZXJcIiBbdXNlck1lbnVdPVwidXNlck1lbnVcIiAjbGFuZ1JlZj5cclxuICAgICAgICBAZm9yIChhY3Rpb24gb2YgYWN0aW9uczsgdHJhY2sgYWN0aW9uKSB7XHJcbiAgICAgICAgPGZkLXNoZWxsYmFyLWFjdGlvblxyXG4gICAgICAgICAgICBbZ2x5cGhdPVwiYWN0aW9uLkljb25cIlxyXG4gICAgICAgICAgICBbY2FsbGJhY2tdPVwiYWN0aW9uLkNhbGxiYWNrXCJcclxuICAgICAgICAgICAgW2xhYmVsXT1cImFjdGlvbi5MYWJlbFwiXHJcbiAgICAgICAgICAgIG5vdGlmaWNhdGlvbkxhYmVsPVwibG9naW5cIlxyXG4gICAgICAgID5cclxuICAgICAgICA8L2ZkLXNoZWxsYmFyLWFjdGlvbj5cclxuICAgICAgICB9IEBpZiAoZGV2aWNlU2l6ZSA9PT0gJ3MnICYmIHVzZXJMb2dnZWRJbiAmJiAhc2V0dGluZ3M/LkhpZGVOb3RpZmljYXRpb25zKSB7XHJcbiAgICAgICAgPGZkLXNoZWxsYmFyLWFjdGlvblxyXG4gICAgICAgICAgICBbZ2x5cGhdPVwiJ2JlbGwnXCJcclxuICAgICAgICAgICAgW2xhYmVsXT1cIidOb3RpZmljYXRpb25zJyB8IGJiYlRyYW5zbGF0ZVwiXHJcbiAgICAgICAgICAgIFtub3RpZmljYXRpb25Db3VudF09XCJub3RpZmljYXRpb25Db3VudC51bnJlYWQgPz8gMFwiXHJcbiAgICAgICAgICAgIFtub3RpZmljYXRpb25MYWJlbF09XCInTm90aWZpY2F0aW9ucycgfCBiYmJUcmFuc2xhdGVcIlxyXG4gICAgICAgICAgICBbY2FsbGJhY2tdPVwib25CZWxsTm90aWZpY2F0aW9uXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgPC9mZC1zaGVsbGJhci1hY3Rpb24+XHJcbiAgICAgICAgfSBAaWYgKCFzZXR0aW5ncz8uSGlkZU5vdGlmaWNhdGlvbnMgJiYgdXNlckxvZ2dlZEluKSB7XHJcbiAgICAgICAgPGZkLXBvcG92ZXJcclxuICAgICAgICAgICAgWyhpc09wZW4pXT1cImlzT3Blbk5vdGlmaWNhdG9pblwiXHJcbiAgICAgICAgICAgIFt0cmlnZ2Vyc109XCJbXVwiXHJcbiAgICAgICAgICAgIFtmb2N1c1RyYXBwZWRdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgIFtub0Fycm93XT1cInRydWVcIlxyXG4gICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxyXG4gICAgICAgICAgICB0aXRsZT1cIk5vdGlmaWNhdGlvbiBQb3BvdmVyXCJcclxuICAgICAgICAgICAgW2ZvY3VzQXV0b0NhcHR1cmVdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgIFttb2JpbGVdPVwiZGV2aWNlU2l6ZSA9PT0gJ3MnXCJcclxuICAgICAgICAgICAgI3BvcG92ZXJDb21wb25lbnRcclxuICAgICAgICA+XHJcbiAgICAgICAgICAgIDxmZC1wb3BvdmVyLWNvbnRyb2w+XHJcbiAgICAgICAgICAgICAgICA8ZmQtc2hlbGxiYXItYWN0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgW2dseXBoXT1cIidiZWxsJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidOb3RpZmljYXRpb24nXCJcclxuICAgICAgICAgICAgICAgICAgICBbbm90aWZpY2F0aW9uQ291bnRdPVwibm90aWZpY2F0aW9uQ291bnQudW5yZWFkXCJcclxuICAgICAgICAgICAgICAgICAgICBbbm90aWZpY2F0aW9uTGFiZWxdPVwiJ05vdGlmaWNhdGlvbiBMYWJlbCdcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjYWxsYmFja109XCJvbk9wZW5Ob3RpZmljYXRpb25cIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPC9mZC1zaGVsbGJhci1hY3Rpb24+XHJcbiAgICAgICAgICAgIDwvZmQtcG9wb3Zlci1jb250cm9sPlxyXG4gICAgICAgICAgICA8ZmQtcG9wb3Zlci1ib2R5IHN0eWxlPVwibWluLXdpZHRoOiAzMjBweDsgb3ZlcmZsb3cteDogYXV0bzsgYm94LXNoYWRvdzogdmFyKC0tc2FwQ29udGVudF9TaGFkb3cwKVwiPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwibm90aWZpY2F0aW9uR3JvdXBUcGw7IGNvbnRleHQ6IHsgbm90aWZpY2F0aW9uQ291bnQ6IG5vdGlmaWNhdGlvbkNvdW50IH1cIlxyXG4gICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L2ZkLXBvcG92ZXItYm9keT5cclxuICAgICAgICA8L2ZkLXBvcG92ZXI+XHJcbiAgICAgICAgfSBAaWYgKCFzZXR0aW5ncz8uSGlkZUxhbmd1YWdlICYmIGRldmljZVNpemUgIT09ICdzJyAmJiBtdWx0aUxhbmd1YWdlcykge1xyXG4gICAgICAgIDxmZC1zaGVsbGJhci1hY3Rpb24gW2dseXBoXT1cIid3b3JsZCdcIiBbbGFiZWxdPVwiJ2xhbmd1YWdlJ1wiIFtmZE1lbnVUcmlnZ2VyXT1cIm1lbnVcIiAoY2FsbGJhY2spPVwiKG9uTGFuZ3VhZ2UpXCI+XHJcbiAgICAgICAgPC9mZC1zaGVsbGJhci1hY3Rpb24+XHJcbiAgICAgICAgfSBAaWYgKCFzZXR0aW5ncz8uSGlkZUxhbmd1YWdlICYmIGRldmljZVNpemUgPT09ICdzJyAmJiBtdWx0aUxhbmd1YWdlcykgeyBAZm9yIChjdWx0dXJlIG9mIGN1bHR1cmVzIHwga2V5dmFsdWU7XHJcbiAgICAgICAgdHJhY2sgY3VsdHVyZSkge1xyXG4gICAgICAgIDxmZC1zaGVsbGJhci1hY3Rpb25cclxuICAgICAgICAgICAgW2xhYmVsXT1cImN1bHR1cmUudmFsdWVcIlxyXG4gICAgICAgICAgICBbY2FsbGJhY2tdPVwib25MYW5ndWFnZVwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiY3VsdHVyZS1hYmJyaXZhdGlvblwiXHJcbiAgICAgICAgICAgIFtnbHlwaF09XCJjdWx0dXJlLmtleVwiXHJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIidmbGFncydcIlxyXG4gICAgICAgID5cclxuICAgICAgICA8L2ZkLXNoZWxsYmFyLWFjdGlvbj5cclxuICAgICAgICB9IH0gQGlmIChwcm9kdWN0U3dpdGNoZXI/Lmxlbmd0aCkge1xyXG4gICAgICAgIDxmZC1wcm9kdWN0LXN3aXRjaD5cclxuICAgICAgICAgICAgPGZkLXByb2R1Y3Qtc3dpdGNoLWJvZHkgW3Byb2R1Y3RzXT1cInByb2R1Y3RTd2l0Y2hlclwiIFtmb3JjZUxpc3RNb2RlXT1cImRldmljZVNpemUgPT09ICdzJ1wiPlxyXG4gICAgICAgICAgICA8L2ZkLXByb2R1Y3Qtc3dpdGNoLWJvZHk+XHJcbiAgICAgICAgPC9mZC1wcm9kdWN0LXN3aXRjaD5cclxuICAgICAgICB9XHJcbiAgICA8L2ZkLXNoZWxsYmFyLWFjdGlvbnM+XHJcbiAgICB9XHJcbjwvZmQtc2hlbGxiYXI+XHJcbkBpZihzaG93RXh0cmFCdXR0b24pe1xyXG48ZGl2XHJcbiAgICBbY2xhc3MuZmQtc2hlbGxiYXItLXhsXT1cImlzRGVza3RvcFwiXHJcbiAgICBbY2xhc3MuZmQtc2hlbGxiYXItLW1dPVwiaXNUYWJsZXRcIlxyXG4gICAgW2NsYXNzLmZkLXNoZWxsYmFyLS1zXT1cImlzTW9iaWxlXCJcclxuICAgIGNsYXNzPVwiZXh0cmEtYnV0dG9uLXdyYXBwZXJcIlxyXG4gICAgW2NsYXNzLnNlcnZpY2UtZGVza109XCJpc1NlcnZpY2VEZXNrXCJcclxuPlxyXG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiYnV0dG9uXCI+PC9uZy1jb250ZW50PlxyXG48L2Rpdj5cclxufVxyXG48bmctdGVtcGxhdGUgI2xvYWRpbmc+XHJcbiAgICA8YnN1LW1hc2s+PC9ic3UtbWFzaz5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxkaXZcclxuICAgICpuZ0lmPVwic2lkZU1lbnVUZW1wbGF0ZVwiXHJcbiAgICBjbGFzcz1cInNpZGVtZW51LWggdHctZml4ZWQgdHctYmctd2hpdGUgdHctdHJhbnNpdGlvbi1hbGwgdHctei1bMTAwXSB0dy1zaGFkb3ctMnhsIHR3LW92ZXJmbG93LWF1dG9cIlxyXG4gICAgW2NsYXNzLnR3LXctc2NyZWVuXT1cImlzTW9iaWxlXCJcclxuICAgIFtjbGFzcy4tdHctcmlnaHQtZnVsbF09XCJpc01vYmlsZVwiXHJcbiAgICBbY2xhc3MudHctdy05Nl09XCIhaXNNb2JpbGVcIlxyXG4gICAgW2NsYXNzLi10dy1yaWdodC05Nl09XCIhaXNNb2JpbGVcIlxyXG4gICAgW2NsYXNzLiF0dy1yaWdodC0wXT1cImlzT3BlblF1aWNrQWNjZXNzXCJcclxuICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxyXG4+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic2lkZU1lbnVUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxyXG48L2Rpdj5cclxuXHJcbkBpZihpc09wZW5RdWlja0FjY2Vzcykge1xyXG48ZGl2XHJcbiAgICBjbGFzcz1cInNpZGVtZW51LWggdHctZml4ZWQgdHctcmlnaHQtMCB0dy1iZy1zbGF0ZS04MDAvWy41XSB0dy16LVs5MF0gdHctdy1zY3JlZW4gdHctYmFja2Ryb3AtYmx1ci1zbVwiXHJcbiAgICAoY2xpY2spPVwiaXNPcGVuUXVpY2tBY2Nlc3NDaGFuZ2VkLmVtaXQoZmFsc2UpXCJcclxuPjwvZGl2PlxyXG59XHJcbjxmZC1tZW51ICNtZW51PlxyXG4gICAgPHVsIGZkLWxpc3Q+XHJcbiAgICAgICAgQGZvciAoY3VsdHVyZSBvZiBjdWx0dXJlcyB8IGtleXZhbHVlOyB0cmFjayBjdWx0dXJlKSB7XHJcbiAgICAgICAgPGxpIGZkLWxpc3QtaXRlbT5cclxuICAgICAgICAgICAgPGEgZmQtbGlzdC1saW5rIChjbGljayk9XCJvbkN1bHR1cmVDaGFuZ2UoY3VsdHVyZS52YWx1ZSlcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGZkLWxpc3QtdGl0bGU+XHJcbiAgICAgICAgICAgICAgICAgICAgPGltZyB3aWR0aD1cIjE0cHhcIiBoZWlnaHQ9XCIxMnB4XCIgW3NyY109XCInL2Fzc2V0cy9mbGFncy8nICsgY3VsdHVyZS5rZXkgKyAnLnBuZydcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3VsdHVyZS1hYmJyaXZhdGlvblwiIFtuZ0NsYXNzXT1cImN1bHR1cmUua2V5XCI+IHt7IGN1bHR1cmUua2V5IH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgPC9saT5cclxuICAgICAgICB9XHJcbiAgICA8L3VsPlxyXG48L2ZkLW1lbnU+XHJcbjxuZy10ZW1wbGF0ZSAjbm90aWZpY2F0aW9uR3JvdXBUcGwgbGV0LW5vdGlmaWNhdGlvbkNvdW50PVwibm90aWZpY2F0aW9uQ291bnRcIj5cclxuICAgIDxidC1ub3RpZmljYXRpb24tZ3JvdXBcclxuICAgICAgICBbbm90aWZpY2F0aW9uUmVwb3J0XT1cIm5vdGlmaWNhdGlvblJlcG9ydFwiXHJcbiAgICAgICAgW25vdGlmaWNhdGlvbkNvdW50XT1cIm5vdGlmaWNhdGlvbkNvdW50XCJcclxuICAgICAgICAoYWN0aW9uQ2xpY2spPVwicG9wb3ZlckNvbXBvbmVudC5jbG9zZSgpOyBvbk5vdGlmaWNhdGlvbkFjdGlvbigkZXZlbnQpXCJcclxuICAgICAgICBbZGV2aWNlU2l6ZV09XCJkZXZpY2VTaXplXCJcclxuICAgID48L2J0LW5vdGlmaWNhdGlvbi1ncm91cD5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSBsZXQtZGlhbG9nIGxldC1kaWFsb2dDb25maWc9XCJkaWFsb2dDb25maWdcIiAjbm90aWZpY2F0aW9uc0RpYWxvZz5cclxuICAgIDxmZC1kaWFsb2cgW2RpYWxvZ0NvbmZpZ109XCJkaWFsb2dDb25maWdcIiBbZGlhbG9nUmVmXT1cImRpYWxvZ1wiPlxyXG4gICAgICAgIDxmZC1kaWFsb2ctaGVhZGVyPlxyXG4gICAgICAgICAgICA8aDEgaWQ9XCJmZC1kaWFsb2ctaGVhZGVyLTEwXCIgZmQtdGl0bGU+e3sgJ05vdGlmaWNhdGlvbicgfCBiYmJUcmFuc2xhdGUgfX08L2gxPlxyXG4gICAgICAgICAgICA8YnV0dG9uIGZkLWRpYWxvZy1jbG9zZS1idXR0b24gKGNsaWNrKT1cImRpYWxvZy5kaXNtaXNzKClcIj48L2J1dHRvbj5cclxuICAgICAgICA8L2ZkLWRpYWxvZy1oZWFkZXI+XHJcbiAgICAgICAgPGZkLWRpYWxvZy1ib2R5IGNsYXNzPVwibW9iaWxlXCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwibm90aWZpY2F0aW9uR3JvdXBUcGw7IGNvbnRleHQ6IHsgbm90aWZpY2F0aW9uQ291bnQ6IG5vdGlmaWNhdGlvbkNvdW50IH1cIlxyXG4gICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9mZC1kaWFsb2ctYm9keT5cclxuICAgIDwvZmQtZGlhbG9nPlxyXG48L25nLXRlbXBsYXRlPlxyXG4iXX0=
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, HostBinding, inject, signal, ViewChild, ViewContainerRef } from '@angular/core';
|
|
2
|
+
import { ActivatedRoute, Router } from '@angular/router';
|
|
3
|
+
import { BarsaApi, BaseComponent, getDeviceIsMobile, LogService, LocalStorageService, BreadcrumbService, RoutingService, PortalService } from 'barsa-novin-ray-core';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@angular/common";
|
|
6
|
+
import * as i2 from "@angular/cdk/scrolling";
|
|
7
|
+
import * as i3 from "@fundamental-ngx/core/breadcrumb";
|
|
8
|
+
import * as i4 from "@fundamental-ngx/core/button";
|
|
9
|
+
import * as i5 from "@fundamental-ngx/core/dynamic-page";
|
|
10
|
+
import * as i6 from "@fundamental-ngx/core/toolbar";
|
|
11
|
+
import * as i7 from "barsa-sap-ui";
|
|
12
|
+
import * as i8 from "../tile-renderer.directive";
|
|
13
|
+
import * as i9 from "barsa-novin-ray-core";
|
|
14
|
+
export class BarsaTileGroupPageComponent extends BaseComponent {
|
|
15
|
+
constructor() {
|
|
16
|
+
super(...arguments);
|
|
17
|
+
this._position = 'absolute';
|
|
18
|
+
this.moList = signal([]);
|
|
19
|
+
this.isMobile = getDeviceIsMobile();
|
|
20
|
+
this.rtl = BarsaApi.LoginFormData.IsRtl;
|
|
21
|
+
this._logService = inject(LogService);
|
|
22
|
+
this._activatedRoute = inject(ActivatedRoute);
|
|
23
|
+
this._cdr = inject(ChangeDetectorRef);
|
|
24
|
+
this._router = inject(Router);
|
|
25
|
+
this._localStorage = inject(LocalStorageService);
|
|
26
|
+
this._breadCrumbService = inject(BreadcrumbService);
|
|
27
|
+
this._portalService = inject(PortalService);
|
|
28
|
+
this.loading = signal(false);
|
|
29
|
+
}
|
|
30
|
+
ngOnInit() {
|
|
31
|
+
super.ngOnInit();
|
|
32
|
+
this.breadcrumbs$ = this._breadCrumbService.breadcrumbs$;
|
|
33
|
+
this.title = localStorage.getItem('ActiveTile');
|
|
34
|
+
this.isSimple = this.parameters?.IsSimple || this.settings?.IsSimple;
|
|
35
|
+
this.listMode = this.parameters?.ListMode || this.settings?.ListMode;
|
|
36
|
+
if (this.isSimple) {
|
|
37
|
+
this._position = 'relative';
|
|
38
|
+
}
|
|
39
|
+
this.deviceSize = this._portalService.deviceSize;
|
|
40
|
+
const id = this._activatedRoute.snapshot.params['id'];
|
|
41
|
+
BarsaApi.Bw.RunBlMethodAsync({
|
|
42
|
+
Parameters: [id],
|
|
43
|
+
Method: 'GetTileGroupApps',
|
|
44
|
+
SuccessFn: (e) => {
|
|
45
|
+
this.moList.set(e.MoDataList);
|
|
46
|
+
},
|
|
47
|
+
FailFn: (e) => {
|
|
48
|
+
this._logService.error(e);
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
ngOnChanges(changes) {
|
|
53
|
+
super.ngOnChanges(changes);
|
|
54
|
+
}
|
|
55
|
+
onClose() {
|
|
56
|
+
this._router.navigate(['../']);
|
|
57
|
+
}
|
|
58
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BarsaTileGroupPageComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
59
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: BarsaTileGroupPageComponent, selector: "bt-barsa-tile-group-page", host: { properties: { "style.position": "this._position" } }, providers: [RoutingService], viewQueries: [{ propertyName: "_containerRef", first: true, predicate: ["containerRef"], descendants: true, read: ViewContainerRef }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "@if(!isSimple ){\r\n<fd-dynamic-page [autoResponsive]=\"true\">\r\n <fd-dynamic-page-header\r\n [class.simple-title]=\"true\"\r\n [title]=\"title | bbbTranslate\"\r\n [class.p-b0]=\"true\"\r\n [class.hide-title]=\"false\"\r\n >\r\n <fd-dynamic-page-breadcrumb [class.hide]=\"isMobile\">\r\n <fd-breadcrumb>\r\n @if (breadcrumbs$ | async; as breadCrumbs) { @for ( breadCrumb of breadCrumbs | slice:\r\n 0:breadCrumbs.length; track breadCrumb.url; let i = $index; let last = $last) {\r\n <fd-breadcrumb-item>\r\n <bsu-breadcrumb\r\n [index]=\"i\"\r\n [isLast]=\"last\"\r\n [breadCrumb]=\"breadCrumb\"\r\n [allBreadCrumb]=\"breadCrumbs\"\r\n ></bsu-breadcrumb>\r\n </fd-breadcrumb-item>\r\n } }\r\n </fd-breadcrumb>\r\n </fd-dynamic-page-breadcrumb>\r\n <fd-dynamic-page-layout-actions>\r\n <fd-toolbar fdType=\"transparent\" [clearBorder]=\"true\">\r\n <button fd-button fdType=\"transparent\" aria-label=\"Close\" (click)=\"onClose()\" title=\"Close\">\r\n <i [class]=\"'sap-icon--' + (isMobile ? (rtl ? 'arrow-right' : 'arrow-left') : 'decline')\"></i>\r\n </button>\r\n </fd-toolbar>\r\n </fd-dynamic-page-layout-actions>\r\n </fd-dynamic-page-header>\r\n\r\n <fd-dynamic-page-content cdkScrollable>\r\n <ng-container *ngTemplateOutlet=\"tilesTpl\"> </ng-container>\r\n </fd-dynamic-page-content>\r\n</fd-dynamic-page>\r\n} @else {\r\n<ng-container *ngTemplateOutlet=\"tilesTpl\"> </ng-container>\r\n}\r\n<ng-template #loadingTpl>\r\n <bsu-mask></bsu-mask>\r\n</ng-template>\r\n<ng-template #tilesTpl>\r\n <div class=\"tw-flex tw-gap-1 tw-flex-wrap\">\r\n @for(app of moList();track app.Id){\r\n <ng-container *ngTemplateOutlet=\"tile; context: { $implicit: app, deviceSize: deviceSize }\"></ng-container>\r\n }\r\n </div>\r\n</ng-template>\r\n<ng-template #tile let-app let-listMode=\"listMode\" let-navigateBack=\"navigateBack\" let-deviceSize=\"deviceSize\">\r\n <span\r\n [dynamicCommand]=\"app.DynamicCommand\"\r\n [setToStorage]=\"false\"\r\n [listMode]=\"false\"\r\n [navigateBackOnClick]=\"listMode ? false : isSimple ? true : false\"\r\n [enableCommand]=\"app.Component\"\r\n tileRenderer\r\n [data]=\"app\"\r\n [edit]=\"false\"\r\n [deviceSize]=\"deviceSize\"\r\n [component]=\"app.Component\"\r\n >\r\n </span>\r\n</ng-template>\r\n", styles: [":host{width:100%;display:block}.app-groups{width:25vw;border-left:.0625rem solid var(--sapGroup_TitleBorderColor, #d9d9d9)}\n"], dependencies: [{ kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.CdkScrollable, selector: "[cdk-scrollable], [cdkScrollable]" }, { kind: "component", type: i3.BreadcrumbComponent, selector: "fd-breadcrumb", inputs: ["reverse", "tabIndex"], outputs: ["visibleItemsCount", "hiddenItemsCount"] }, { kind: "component", type: i3.BreadcrumbItemComponent, selector: "fd-breadcrumb-item" }, { kind: "component", type: i4.ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i5.DynamicPageComponent, selector: "fd-dynamic-page", inputs: ["disableSnapOnScroll", "ariaLabel", "ariaRoledescription", "background", "autoResponsive", "size", "offset", "expandContent", "positionRelative"] }, { kind: "component", type: i5.DynamicPageHeaderComponent, selector: "fd-dynamic-page-header", inputs: ["title", "titleWrap", "subtitle", "subtitleWrap", "headingLevel", "titleId"] }, { kind: "component", type: i5.DynamicPageLayoutActionsComponent, selector: "fd-dynamic-page-layout-actions" }, { kind: "component", type: i5.DynamicPageContentComponent, selector: "fd-dynamic-page-content", inputs: ["tabLabel", "id"] }, { kind: "component", type: i5.DynamicPageBreadcrumbComponent, selector: "fd-dynamic-page-breadcrumb" }, { kind: "component", type: i6.ToolbarComponent, selector: "fd-toolbar", inputs: ["titleId", "class", "shouldOverflow", "fdType", "title", "active", "clearBorder", "forceOverflow", "tabindex", "headingLevel", "ariaLabel", "ariaLabelledBy"] }, { kind: "component", type: i7.MaskComponent, selector: "bsu-mask", inputs: ["size", "top"] }, { kind: "component", type: i7.BreadcrumbComponent, selector: "bsu-breadcrumb", inputs: ["breadCrumb", "allBreadCrumb", "isLast", "index"] }, { kind: "directive", type: i8.TileRendererDirective, selector: "[tileRenderer]", inputs: ["component", "data", "edit", "deviceSize", "setToStorage", "listMode", "navigateBackOnClick"], outputs: ["hideClick", "renameClick"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.SlicePipe, name: "slice" }, { kind: "pipe", type: i9.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
60
|
+
}
|
|
61
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BarsaTileGroupPageComponent, decorators: [{
|
|
62
|
+
type: Component,
|
|
63
|
+
args: [{ selector: 'bt-barsa-tile-group-page', changeDetection: ChangeDetectionStrategy.OnPush, providers: [RoutingService], standalone: false, template: "@if(!isSimple ){\r\n<fd-dynamic-page [autoResponsive]=\"true\">\r\n <fd-dynamic-page-header\r\n [class.simple-title]=\"true\"\r\n [title]=\"title | bbbTranslate\"\r\n [class.p-b0]=\"true\"\r\n [class.hide-title]=\"false\"\r\n >\r\n <fd-dynamic-page-breadcrumb [class.hide]=\"isMobile\">\r\n <fd-breadcrumb>\r\n @if (breadcrumbs$ | async; as breadCrumbs) { @for ( breadCrumb of breadCrumbs | slice:\r\n 0:breadCrumbs.length; track breadCrumb.url; let i = $index; let last = $last) {\r\n <fd-breadcrumb-item>\r\n <bsu-breadcrumb\r\n [index]=\"i\"\r\n [isLast]=\"last\"\r\n [breadCrumb]=\"breadCrumb\"\r\n [allBreadCrumb]=\"breadCrumbs\"\r\n ></bsu-breadcrumb>\r\n </fd-breadcrumb-item>\r\n } }\r\n </fd-breadcrumb>\r\n </fd-dynamic-page-breadcrumb>\r\n <fd-dynamic-page-layout-actions>\r\n <fd-toolbar fdType=\"transparent\" [clearBorder]=\"true\">\r\n <button fd-button fdType=\"transparent\" aria-label=\"Close\" (click)=\"onClose()\" title=\"Close\">\r\n <i [class]=\"'sap-icon--' + (isMobile ? (rtl ? 'arrow-right' : 'arrow-left') : 'decline')\"></i>\r\n </button>\r\n </fd-toolbar>\r\n </fd-dynamic-page-layout-actions>\r\n </fd-dynamic-page-header>\r\n\r\n <fd-dynamic-page-content cdkScrollable>\r\n <ng-container *ngTemplateOutlet=\"tilesTpl\"> </ng-container>\r\n </fd-dynamic-page-content>\r\n</fd-dynamic-page>\r\n} @else {\r\n<ng-container *ngTemplateOutlet=\"tilesTpl\"> </ng-container>\r\n}\r\n<ng-template #loadingTpl>\r\n <bsu-mask></bsu-mask>\r\n</ng-template>\r\n<ng-template #tilesTpl>\r\n <div class=\"tw-flex tw-gap-1 tw-flex-wrap\">\r\n @for(app of moList();track app.Id){\r\n <ng-container *ngTemplateOutlet=\"tile; context: { $implicit: app, deviceSize: deviceSize }\"></ng-container>\r\n }\r\n </div>\r\n</ng-template>\r\n<ng-template #tile let-app let-listMode=\"listMode\" let-navigateBack=\"navigateBack\" let-deviceSize=\"deviceSize\">\r\n <span\r\n [dynamicCommand]=\"app.DynamicCommand\"\r\n [setToStorage]=\"false\"\r\n [listMode]=\"false\"\r\n [navigateBackOnClick]=\"listMode ? false : isSimple ? true : false\"\r\n [enableCommand]=\"app.Component\"\r\n tileRenderer\r\n [data]=\"app\"\r\n [edit]=\"false\"\r\n [deviceSize]=\"deviceSize\"\r\n [component]=\"app.Component\"\r\n >\r\n </span>\r\n</ng-template>\r\n", styles: [":host{width:100%;display:block}.app-groups{width:25vw;border-left:.0625rem solid var(--sapGroup_TitleBorderColor, #d9d9d9)}\n"] }]
|
|
64
|
+
}], propDecorators: { _containerRef: [{
|
|
65
|
+
type: ViewChild,
|
|
66
|
+
args: ['containerRef', { read: ViewContainerRef }]
|
|
67
|
+
}], _position: [{
|
|
68
|
+
type: HostBinding,
|
|
69
|
+
args: ['style.position']
|
|
70
|
+
}] } });
|
|
71
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFyc2EtdGlsZS1ncm91cC1wYWdlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JhcnNhLXRpbGVzL3NyYy9saWIvYmFyc2EtdGlsZS1ncm91cC1wYWdlL2JhcnNhLXRpbGUtZ3JvdXAtcGFnZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS10aWxlcy9zcmMvbGliL2JhcnNhLXRpbGUtZ3JvdXAtcGFnZS9iYXJzYS10aWxlLWdyb3VwLXBhZ2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFdBQVcsRUFDWCxNQUFNLEVBRU4sTUFBTSxFQUVOLFNBQVMsRUFDVCxnQkFBZ0IsRUFDbkIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUV6RCxPQUFPLEVBQ0gsUUFBUSxFQUNSLGFBQWEsRUFDYixpQkFBaUIsRUFDakIsVUFBVSxFQUNWLG1CQUFtQixFQUVuQixpQkFBaUIsRUFFakIsY0FBYyxFQUVkLGFBQWEsRUFFaEIsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7Ozs7Ozs7QUFZOUIsTUFBTSxPQUFPLDJCQUE0QixTQUFRLGFBQWE7SUFSOUQ7O1FBVW1DLGNBQVMsR0FBRyxVQUFVLENBQUM7UUFDdEQsV0FBTSxHQUFHLE1BQU0sQ0FBb0IsRUFBRSxDQUFDLENBQUM7UUFDdkMsYUFBUSxHQUFHLGlCQUFpQixFQUFFLENBQUM7UUFDL0IsUUFBRyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDO1FBS3pCLGdCQUFXLEdBQWUsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzdDLG9CQUFlLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3pDLFNBQUksR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUNqQyxZQUFPLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3pCLGtCQUFhLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDNUMsdUJBQWtCLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDL0MsbUJBQWMsR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7UUFLakQsWUFBTyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztLQWdDM0I7SUE5QkcsUUFBUTtRQUNKLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNqQixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLENBQUM7UUFFekQsSUFBSSxDQUFDLEtBQUssR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ2hELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxRQUFRLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUM7UUFDckUsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLFFBQVEsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQztRQUNyRSxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNoQixJQUFJLENBQUMsU0FBUyxHQUFHLFVBQVUsQ0FBQztRQUNoQyxDQUFDO1FBQ0QsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQztRQUNqRCxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFdEQsUUFBUSxDQUFDLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQztZQUN6QixVQUFVLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDaEIsTUFBTSxFQUFFLGtCQUFrQjtZQUMxQixTQUFTLEVBQUUsQ0FBQyxDQUFtQixFQUFFLEVBQUU7Z0JBQy9CLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxVQUFvQyxDQUFDLENBQUM7WUFDNUQsQ0FBQztZQUNELE1BQU0sRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFO2dCQUNWLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzlCLENBQUM7U0FDSixDQUFDLENBQUM7SUFDUCxDQUFDO0lBQ0QsV0FBVyxDQUFDLE9BQXNCO1FBQzlCLEtBQUssQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUNELE9BQU87UUFDSCxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDbkMsQ0FBQzsrR0FwRFEsMkJBQTJCO21HQUEzQiwyQkFBMkIsaUhBSHpCLENBQUMsY0FBYyxDQUFDLG9IQUlRLGdCQUFnQix5RUN4Q3ZELDJxRkFnRUE7OzRGRHpCYSwyQkFBMkI7a0JBUnZDLFNBQVM7K0JBQ0ksMEJBQTBCLG1CQUduQix1QkFBdUIsQ0FBQyxNQUFNLGFBQ3BDLENBQUMsY0FBYyxDQUFDLGNBQ2YsS0FBSzs4QkFHc0MsYUFBYTtzQkFBbkUsU0FBUzt1QkFBQyxjQUFjLEVBQUUsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBQ3RCLFNBQVM7c0JBQXZDLFdBQVc7dUJBQUMsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBDb21wb25lbnQsXHJcbiAgICBIb3N0QmluZGluZyxcclxuICAgIGluamVjdCxcclxuICAgIE9uQ2hhbmdlcyxcclxuICAgIHNpZ25hbCxcclxuICAgIFNpbXBsZUNoYW5nZXMsXHJcbiAgICBWaWV3Q2hpbGQsXHJcbiAgICBWaWV3Q29udGFpbmVyUmVmXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5cclxuaW1wb3J0IHtcclxuICAgIEJhcnNhQXBpLFxyXG4gICAgQmFzZUNvbXBvbmVudCxcclxuICAgIGdldERldmljZUlzTW9iaWxlLFxyXG4gICAgTG9nU2VydmljZSxcclxuICAgIExvY2FsU3RvcmFnZVNlcnZpY2UsXHJcbiAgICBNZXRhb2JqZWN0RGF0YU1vZGVsLFxyXG4gICAgQnJlYWRjcnVtYlNlcnZpY2UsXHJcbiAgICBCcmVhZENydW1iSW5mbyxcclxuICAgIFJvdXRpbmdTZXJ2aWNlLFxyXG4gICAgTW9Gb3JSZXBvcnRNb2RlbCxcclxuICAgIFBvcnRhbFNlcnZpY2UsXHJcbiAgICBBYmJyZXZhdGlvbkRldmljZVNpemVcclxufSBmcm9tICdiYXJzYS1ub3Zpbi1yYXktY29yZSc7XHJcbmltcG9ydCB7IEJhc2VUaWxlU2V0dGluZyB9IGZyb20gJy4uL21vZGVscyc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdidC1iYXJzYS10aWxlLWdyb3VwLXBhZ2UnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL2JhcnNhLXRpbGUtZ3JvdXAtcGFnZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi9iYXJzYS10aWxlLWdyb3VwLXBhZ2UuY29tcG9uZW50LnNjc3MnXSxcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gICAgcHJvdmlkZXJzOiBbUm91dGluZ1NlcnZpY2VdLFxyXG4gICAgc3RhbmRhbG9uZTogZmFsc2VcclxufSlcclxuZXhwb3J0IGNsYXNzIEJhcnNhVGlsZUdyb3VwUGFnZUNvbXBvbmVudCBleHRlbmRzIEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xyXG4gICAgQFZpZXdDaGlsZCgnY29udGFpbmVyUmVmJywgeyByZWFkOiBWaWV3Q29udGFpbmVyUmVmIH0pIF9jb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWY7XHJcbiAgICBASG9zdEJpbmRpbmcoJ3N0eWxlLnBvc2l0aW9uJykgX3Bvc2l0aW9uID0gJ2Fic29sdXRlJztcclxuICAgIG1vTGlzdCA9IHNpZ25hbDxCYXNlVGlsZVNldHRpbmdbXT4oW10pO1xyXG4gICAgaXNNb2JpbGUgPSBnZXREZXZpY2VJc01vYmlsZSgpO1xyXG4gICAgcnRsID0gQmFyc2FBcGkuTG9naW5Gb3JtRGF0YS5Jc1J0bDtcclxuICAgIHRpdGxlOiBzdHJpbmcgfCBudWxsO1xyXG4gICAgZGlhbG9nUmVmOiBhbnk7XHJcbiAgICBwYXJhbWV0ZXJzOiBCYXJzYVRpbGVHcm91cFBhZ2VTZXR0aW5ncztcclxuICAgIHNldHRpbmdzOiBCYXJzYVRpbGVHcm91cFBhZ2VTZXR0aW5ncztcclxuICAgIHByb3RlY3RlZCBfbG9nU2VydmljZTogTG9nU2VydmljZSA9IGluamVjdChMb2dTZXJ2aWNlKTtcclxuICAgIHByb3RlY3RlZCBfYWN0aXZhdGVkUm91dGUgPSBpbmplY3QoQWN0aXZhdGVkUm91dGUpO1xyXG4gICAgcHJvdGVjdGVkIF9jZHIgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xyXG4gICAgcHJvdGVjdGVkIF9yb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcclxuICAgIHByb3RlY3RlZCBfbG9jYWxTdG9yYWdlID0gaW5qZWN0KExvY2FsU3RvcmFnZVNlcnZpY2UpO1xyXG4gICAgcHJvdGVjdGVkIF9icmVhZENydW1iU2VydmljZSA9IGluamVjdChCcmVhZGNydW1iU2VydmljZSk7XHJcbiAgICBwcm90ZWN0ZWQgX3BvcnRhbFNlcnZpY2UgPSBpbmplY3QoUG9ydGFsU2VydmljZSk7XHJcbiAgICBpc1NpbXBsZTogYm9vbGVhbjtcclxuICAgIGxpc3RNb2RlOiBib29sZWFuO1xyXG4gICAgYnJlYWRjcnVtYnMkOiBPYnNlcnZhYmxlPEJyZWFkQ3J1bWJJbmZvW10+O1xyXG4gICAgcmVwb3J0SWQ6IHN0cmluZztcclxuICAgIGxvYWRpbmcgPSBzaWduYWwoZmFsc2UpO1xyXG4gICAgZGV2aWNlU2l6ZTogQWJicmV2YXRpb25EZXZpY2VTaXplO1xyXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcclxuICAgICAgICB0aGlzLmJyZWFkY3J1bWJzJCA9IHRoaXMuX2JyZWFkQ3J1bWJTZXJ2aWNlLmJyZWFkY3J1bWJzJDtcclxuXHJcbiAgICAgICAgdGhpcy50aXRsZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdBY3RpdmVUaWxlJyk7XHJcbiAgICAgICAgdGhpcy5pc1NpbXBsZSA9IHRoaXMucGFyYW1ldGVycz8uSXNTaW1wbGUgfHwgdGhpcy5zZXR0aW5ncz8uSXNTaW1wbGU7XHJcbiAgICAgICAgdGhpcy5saXN0TW9kZSA9IHRoaXMucGFyYW1ldGVycz8uTGlzdE1vZGUgfHwgdGhpcy5zZXR0aW5ncz8uTGlzdE1vZGU7XHJcbiAgICAgICAgaWYgKHRoaXMuaXNTaW1wbGUpIHtcclxuICAgICAgICAgICAgdGhpcy5fcG9zaXRpb24gPSAncmVsYXRpdmUnO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmRldmljZVNpemUgPSB0aGlzLl9wb3J0YWxTZXJ2aWNlLmRldmljZVNpemU7XHJcbiAgICAgICAgY29uc3QgaWQgPSB0aGlzLl9hY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdC5wYXJhbXNbJ2lkJ107XHJcblxyXG4gICAgICAgIEJhcnNhQXBpLkJ3LlJ1bkJsTWV0aG9kQXN5bmMoe1xyXG4gICAgICAgICAgICBQYXJhbWV0ZXJzOiBbaWRdLFxyXG4gICAgICAgICAgICBNZXRob2Q6ICdHZXRUaWxlR3JvdXBBcHBzJyxcclxuICAgICAgICAgICAgU3VjY2Vzc0ZuOiAoZTogTW9Gb3JSZXBvcnRNb2RlbCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5tb0xpc3Quc2V0KGUuTW9EYXRhTGlzdCBhcyBBcnJheTxCYXNlVGlsZVNldHRpbmc+KTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgRmFpbEZuOiAoZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fbG9nU2VydmljZS5lcnJvcihlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgICAgIHN1cGVyLm5nT25DaGFuZ2VzKGNoYW5nZXMpO1xyXG4gICAgfVxyXG4gICAgb25DbG9zZSgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9yb3V0ZXIubmF2aWdhdGUoWycuLi8nXSk7XHJcbiAgICB9XHJcbn1cclxuaW50ZXJmYWNlIEJhcnNhVGlsZUdyb3VwUGFnZVNldHRpbmdzIGV4dGVuZHMgTWV0YW9iamVjdERhdGFNb2RlbCB7XHJcbiAgICBJc1NpbXBsZTogYm9vbGVhbjtcclxuICAgIExpc3RNb2RlOiBib29sZWFuO1xyXG59XHJcbiIsIkBpZighaXNTaW1wbGUgKXtcclxuPGZkLWR5bmFtaWMtcGFnZSBbYXV0b1Jlc3BvbnNpdmVdPVwidHJ1ZVwiPlxyXG4gICAgPGZkLWR5bmFtaWMtcGFnZS1oZWFkZXJcclxuICAgICAgICBbY2xhc3Muc2ltcGxlLXRpdGxlXT1cInRydWVcIlxyXG4gICAgICAgIFt0aXRsZV09XCJ0aXRsZSB8IGJiYlRyYW5zbGF0ZVwiXHJcbiAgICAgICAgW2NsYXNzLnAtYjBdPVwidHJ1ZVwiXHJcbiAgICAgICAgW2NsYXNzLmhpZGUtdGl0bGVdPVwiZmFsc2VcIlxyXG4gICAgPlxyXG4gICAgICAgIDxmZC1keW5hbWljLXBhZ2UtYnJlYWRjcnVtYiBbY2xhc3MuaGlkZV09XCJpc01vYmlsZVwiPlxyXG4gICAgICAgICAgICA8ZmQtYnJlYWRjcnVtYj5cclxuICAgICAgICAgICAgICAgIEBpZiAoYnJlYWRjcnVtYnMkIHwgYXN5bmM7IGFzIGJyZWFkQ3J1bWJzKSB7IEBmb3IgKCBicmVhZENydW1iIG9mIGJyZWFkQ3J1bWJzIHwgc2xpY2U6XHJcbiAgICAgICAgICAgICAgICAwOmJyZWFkQ3J1bWJzLmxlbmd0aDsgdHJhY2sgYnJlYWRDcnVtYi51cmw7IGxldCBpID0gJGluZGV4OyBsZXQgbGFzdCA9ICRsYXN0KSB7XHJcbiAgICAgICAgICAgICAgICA8ZmQtYnJlYWRjcnVtYi1pdGVtPlxyXG4gICAgICAgICAgICAgICAgICAgIDxic3UtYnJlYWRjcnVtYlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbaW5kZXhdPVwiaVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpc0xhc3RdPVwibGFzdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFticmVhZENydW1iXT1cImJyZWFkQ3J1bWJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbYWxsQnJlYWRDcnVtYl09XCJicmVhZENydW1ic1wiXHJcbiAgICAgICAgICAgICAgICAgICAgPjwvYnN1LWJyZWFkY3J1bWI+XHJcbiAgICAgICAgICAgICAgICA8L2ZkLWJyZWFkY3J1bWItaXRlbT5cclxuICAgICAgICAgICAgICAgIH0gfVxyXG4gICAgICAgICAgICA8L2ZkLWJyZWFkY3J1bWI+XHJcbiAgICAgICAgPC9mZC1keW5hbWljLXBhZ2UtYnJlYWRjcnVtYj5cclxuICAgICAgICA8ZmQtZHluYW1pYy1wYWdlLWxheW91dC1hY3Rpb25zPlxyXG4gICAgICAgICAgICA8ZmQtdG9vbGJhciBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiIFtjbGVhckJvcmRlcl09XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIGZkLWJ1dHRvbiBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiIGFyaWEtbGFiZWw9XCJDbG9zZVwiIChjbGljayk9XCJvbkNsb3NlKClcIiB0aXRsZT1cIkNsb3NlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgW2NsYXNzXT1cIidzYXAtaWNvbi0tJyArIChpc01vYmlsZSA/IChydGwgPyAnYXJyb3ctcmlnaHQnIDogJ2Fycm93LWxlZnQnKSA6ICdkZWNsaW5lJylcIj48L2k+XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9mZC10b29sYmFyPlxyXG4gICAgICAgIDwvZmQtZHluYW1pYy1wYWdlLWxheW91dC1hY3Rpb25zPlxyXG4gICAgPC9mZC1keW5hbWljLXBhZ2UtaGVhZGVyPlxyXG5cclxuICAgIDxmZC1keW5hbWljLXBhZ2UtY29udGVudCBjZGtTY3JvbGxhYmxlPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0aWxlc1RwbFwiPiA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZmQtZHluYW1pYy1wYWdlLWNvbnRlbnQ+XHJcbjwvZmQtZHluYW1pYy1wYWdlPlxyXG59IEBlbHNlIHtcclxuPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRpbGVzVHBsXCI+IDwvbmctY29udGFpbmVyPlxyXG59XHJcbjxuZy10ZW1wbGF0ZSAjbG9hZGluZ1RwbD5cclxuICAgIDxic3UtbWFzaz48L2JzdS1tYXNrPlxyXG48L25nLXRlbXBsYXRlPlxyXG48bmctdGVtcGxhdGUgI3RpbGVzVHBsPlxyXG4gICAgPGRpdiBjbGFzcz1cInR3LWZsZXggdHctZ2FwLTEgdHctZmxleC13cmFwXCI+XHJcbiAgICAgICAgQGZvcihhcHAgb2YgbW9MaXN0KCk7dHJhY2sgYXBwLklkKXtcclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGlsZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IGFwcCwgZGV2aWNlU2l6ZTogZGV2aWNlU2l6ZSB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgfVxyXG4gICAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcbjxuZy10ZW1wbGF0ZSAjdGlsZSBsZXQtYXBwIGxldC1saXN0TW9kZT1cImxpc3RNb2RlXCIgbGV0LW5hdmlnYXRlQmFjaz1cIm5hdmlnYXRlQmFja1wiIGxldC1kZXZpY2VTaXplPVwiZGV2aWNlU2l6ZVwiPlxyXG4gICAgPHNwYW5cclxuICAgICAgICBbZHluYW1pY0NvbW1hbmRdPVwiYXBwLkR5bmFtaWNDb21tYW5kXCJcclxuICAgICAgICBbc2V0VG9TdG9yYWdlXT1cImZhbHNlXCJcclxuICAgICAgICBbbGlzdE1vZGVdPVwiZmFsc2VcIlxyXG4gICAgICAgIFtuYXZpZ2F0ZUJhY2tPbkNsaWNrXT1cImxpc3RNb2RlID8gZmFsc2UgOiBpc1NpbXBsZSA/IHRydWUgOiBmYWxzZVwiXHJcbiAgICAgICAgW2VuYWJsZUNvbW1hbmRdPVwiYXBwLkNvbXBvbmVudFwiXHJcbiAgICAgICAgdGlsZVJlbmRlcmVyXHJcbiAgICAgICAgW2RhdGFdPVwiYXBwXCJcclxuICAgICAgICBbZWRpdF09XCJmYWxzZVwiXHJcbiAgICAgICAgW2RldmljZVNpemVdPVwiZGV2aWNlU2l6ZVwiXHJcbiAgICAgICAgW2NvbXBvbmVudF09XCJhcHAuQ29tcG9uZW50XCJcclxuICAgID5cclxuICAgIDwvc3Bhbj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuIl19
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, inject, signal } from '@angular/core';
|
|
2
|
+
import { Router } from '@angular/router';
|
|
3
|
+
import { BarsaApi, getDeviceIsMobile, LocalStorageService, BreadcrumbService, RoutingService, EmptyPageComponent } from 'barsa-novin-ray-core';
|
|
4
|
+
import { takeUntil } from 'rxjs';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "@angular/router";
|
|
7
|
+
import * as i2 from "@fundamental-ngx/core/bar";
|
|
8
|
+
import * as i3 from "@fundamental-ngx/core/breadcrumb";
|
|
9
|
+
import * as i4 from "@fundamental-ngx/core/dynamic-side-content";
|
|
10
|
+
import * as i5 from "@fundamental-ngx/core/message-page";
|
|
11
|
+
import * as i6 from "barsa-novin-ray-core";
|
|
12
|
+
import * as i7 from "barsa-sap-ui";
|
|
13
|
+
import * as i8 from "@angular/common";
|
|
14
|
+
export class BarsaTileSidebarPageComponent extends EmptyPageComponent {
|
|
15
|
+
constructor() {
|
|
16
|
+
super(...arguments);
|
|
17
|
+
this.isMobile = getDeviceIsMobile();
|
|
18
|
+
this.rtl = BarsaApi.LoginFormData.IsRtl;
|
|
19
|
+
this._router = inject(Router);
|
|
20
|
+
this._localStorage = inject(LocalStorageService);
|
|
21
|
+
this._breadCrumbService = inject(BreadcrumbService);
|
|
22
|
+
this._routingService = inject(RoutingService); // create new routing service to handle sidebar navigation
|
|
23
|
+
this.firstReportLoaded = signal(false);
|
|
24
|
+
}
|
|
25
|
+
ngOnInit() {
|
|
26
|
+
super.ngOnInit();
|
|
27
|
+
this.isFirstPage = false;
|
|
28
|
+
this._portalService.navigationEnd$.pipe(takeUntil(this._onDestroy$)).subscribe((c) => {
|
|
29
|
+
c && c.url.indexOf('mainside:report') > 0 && this.firstReportLoaded.set(true);
|
|
30
|
+
});
|
|
31
|
+
this.breadcrumbs$ = this._breadCrumbService.breadcrumbs$;
|
|
32
|
+
this._routingService.isSidebar = true;
|
|
33
|
+
this.title = localStorage.getItem('ActiveTile');
|
|
34
|
+
}
|
|
35
|
+
onClose() {
|
|
36
|
+
this._router.navigate(['../']);
|
|
37
|
+
}
|
|
38
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BarsaTileSidebarPageComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
39
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: BarsaTileSidebarPageComponent, selector: "bt-barsa-tile-sidebar-page", providers: [RoutingService], usesInheritance: true, ngImport: i0, template: "<div fd-bar>\r\n <div fd-bar-left style=\"flex: 1; width: 100%\">\r\n <fd-breadcrumb style=\"width: 100%\">\r\n @if (breadcrumbs$ | async; as breadCrumbs) { @for ( breadCrumb of breadCrumbs ;track breadCrumb.url; let i =\r\n $index; let last = $last) {\r\n <fd-breadcrumb-item>\r\n <bsu-breadcrumb\r\n [index]=\"i\"\r\n [isLast]=\"last\"\r\n [breadCrumb]=\"breadCrumb\"\r\n [allBreadCrumb]=\"breadCrumbs\"\r\n ></bsu-breadcrumb>\r\n </fd-breadcrumb-item>\r\n } }\r\n </fd-breadcrumb>\r\n </div>\r\n</div>\r\n\r\n<fd-dynamic-side-content class=\"tiles-sidebar-wrapper\" fillEmptySpace style=\"overflow: auto\">\r\n <fd-dynamic-side-content-side>\r\n <ng-container #containerRef></ng-container>\r\n </fd-dynamic-side-content-side>\r\n <fd-dynamic-side-content-main style=\"margin: 2rem\">\r\n @if(firstReportLoaded()===false){\r\n <fd-message-page type=\"no-items\" style=\"align-self: center; background: transparent\">\r\n <fd-message-page-title>{{ 'SearchInReports' | bbbTranslate }}</fd-message-page-title>\r\n </fd-message-page>\r\n }\r\n <router-outlet name=\"mainside\"> </router-outlet>\r\n </fd-dynamic-side-content-main>\r\n</fd-dynamic-side-content>\r\n<div class=\"sidbar-outlet\">\r\n <router-outlet></router-outlet>\r\n</div>\r\n", styles: [":host{width:100%;display:block}fd-dynamic-page ::ng-deep article fd-dynamic-page-content{padding:0}fd-dynamic-page ::ng-deep article fd-layout-panel{background-color:var(--sapBackgroundColor)}fd-dynamic-page ::ng-deep article li{border:none}.tiles-sidebar-wrapper>fd-dynamic-side-content-side{max-width:20svw;width:20svw;overflow-y:auto;padding:0;background-color:var(--sapBaseColor);border:.0625rem solid var(--sapTile_SeparatorColor, #ccc);border-top:none}.tiles-sidebar-wrapper>fd-dynamic-side-content-side ::ng-deep li span.haschildren{font-family:BarsaFont Medium}.tiles-sidebar-wrapper>fd-dynamic-side-content-side ::ng-deep bsu-barsa-ulv-main,.tiles-sidebar-wrapper>fd-dynamic-side-content-main ::ng-deep bsu-barsa-ulv-main{margin:0!important}.tiles-sidebar-wrapper>fd-dynamic-side-content-main{width:80svw;max-width:80svw;background-color:var(--sapBaseColor)}@media (max-width: 799px){.tiles-sidebar-wrapper{flex-direction:column}.tiles-sidebar-wrapper>fd-dynamic-side-content-side{width:100svw;max-width:100svw;overflow:hidden}.tiles-sidebar-wrapper>fd-dynamic-side-content-main{width:100svw;max-width:100svw}}@media (min-width: 800px) and (max-width: 1439px){.tiles-sidebar-wrapper>fd-dynamic-side-content-side{width:35svw;max-width:35svw;overflow:hidden}.tiles-sidebar-wrapper>fd-dynamic-side-content-main{width:65svw;max-width:65svw}}\n"], dependencies: [{ kind: "directive", type: i1.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "component", type: i2.BarComponent, selector: "[fd-bar]", inputs: ["class", "barDesign", "inPage", "inHomePage", "size"] }, { kind: "directive", type: i2.BarLeftDirective, selector: "[fd-bar-left]" }, { kind: "component", type: i3.BreadcrumbComponent, selector: "fd-breadcrumb", inputs: ["reverse", "tabIndex"], outputs: ["visibleItemsCount", "hiddenItemsCount"] }, { kind: "component", type: i3.BreadcrumbItemComponent, selector: "fd-breadcrumb-item" }, { kind: "component", type: i4.DynamicSideContentComponent, selector: "fd-dynamic-side-content", inputs: ["position", "size", "id"] }, { kind: "component", type: i4.DynamicSideContentSideComponent, selector: "fd-dynamic-side-content-side", inputs: ["id"] }, { kind: "component", type: i4.DynamicSideContentMainComponent, selector: "fd-dynamic-side-content-main", inputs: ["id"] }, { kind: "component", type: i5.MessagePageComponent, selector: "fd-message-page", inputs: ["class", "type", "hasIcon", "glyphFont", "glyph"] }, { kind: "component", type: i5.MessagePageTitleComponent, selector: "fd-message-page-title" }, { kind: "directive", type: i6.FillEmptySpaceDirective, selector: "[fillEmptySpace]", inputs: ["containerDom", "decrement", "disable", "height", "dontUseTopBound", "setMinHeight"], exportAs: ["fillEmptySpace"] }, { kind: "component", type: i7.BreadcrumbComponent, selector: "bsu-breadcrumb", inputs: ["breadCrumb", "allBreadCrumb", "isLast", "index"] }, { kind: "pipe", type: i8.AsyncPipe, name: "async" }, { kind: "pipe", type: i6.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
40
|
+
}
|
|
41
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BarsaTileSidebarPageComponent, decorators: [{
|
|
42
|
+
type: Component,
|
|
43
|
+
args: [{ selector: 'bt-barsa-tile-sidebar-page', changeDetection: ChangeDetectionStrategy.OnPush, providers: [RoutingService], standalone: false, template: "<div fd-bar>\r\n <div fd-bar-left style=\"flex: 1; width: 100%\">\r\n <fd-breadcrumb style=\"width: 100%\">\r\n @if (breadcrumbs$ | async; as breadCrumbs) { @for ( breadCrumb of breadCrumbs ;track breadCrumb.url; let i =\r\n $index; let last = $last) {\r\n <fd-breadcrumb-item>\r\n <bsu-breadcrumb\r\n [index]=\"i\"\r\n [isLast]=\"last\"\r\n [breadCrumb]=\"breadCrumb\"\r\n [allBreadCrumb]=\"breadCrumbs\"\r\n ></bsu-breadcrumb>\r\n </fd-breadcrumb-item>\r\n } }\r\n </fd-breadcrumb>\r\n </div>\r\n</div>\r\n\r\n<fd-dynamic-side-content class=\"tiles-sidebar-wrapper\" fillEmptySpace style=\"overflow: auto\">\r\n <fd-dynamic-side-content-side>\r\n <ng-container #containerRef></ng-container>\r\n </fd-dynamic-side-content-side>\r\n <fd-dynamic-side-content-main style=\"margin: 2rem\">\r\n @if(firstReportLoaded()===false){\r\n <fd-message-page type=\"no-items\" style=\"align-self: center; background: transparent\">\r\n <fd-message-page-title>{{ 'SearchInReports' | bbbTranslate }}</fd-message-page-title>\r\n </fd-message-page>\r\n }\r\n <router-outlet name=\"mainside\"> </router-outlet>\r\n </fd-dynamic-side-content-main>\r\n</fd-dynamic-side-content>\r\n<div class=\"sidbar-outlet\">\r\n <router-outlet></router-outlet>\r\n</div>\r\n", styles: [":host{width:100%;display:block}fd-dynamic-page ::ng-deep article fd-dynamic-page-content{padding:0}fd-dynamic-page ::ng-deep article fd-layout-panel{background-color:var(--sapBackgroundColor)}fd-dynamic-page ::ng-deep article li{border:none}.tiles-sidebar-wrapper>fd-dynamic-side-content-side{max-width:20svw;width:20svw;overflow-y:auto;padding:0;background-color:var(--sapBaseColor);border:.0625rem solid var(--sapTile_SeparatorColor, #ccc);border-top:none}.tiles-sidebar-wrapper>fd-dynamic-side-content-side ::ng-deep li span.haschildren{font-family:BarsaFont Medium}.tiles-sidebar-wrapper>fd-dynamic-side-content-side ::ng-deep bsu-barsa-ulv-main,.tiles-sidebar-wrapper>fd-dynamic-side-content-main ::ng-deep bsu-barsa-ulv-main{margin:0!important}.tiles-sidebar-wrapper>fd-dynamic-side-content-main{width:80svw;max-width:80svw;background-color:var(--sapBaseColor)}@media (max-width: 799px){.tiles-sidebar-wrapper{flex-direction:column}.tiles-sidebar-wrapper>fd-dynamic-side-content-side{width:100svw;max-width:100svw;overflow:hidden}.tiles-sidebar-wrapper>fd-dynamic-side-content-main{width:100svw;max-width:100svw}}@media (min-width: 800px) and (max-width: 1439px){.tiles-sidebar-wrapper>fd-dynamic-side-content-side{width:35svw;max-width:35svw;overflow:hidden}.tiles-sidebar-wrapper>fd-dynamic-side-content-main{width:65svw;max-width:65svw}}\n"] }]
|
|
44
|
+
}] });
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFyc2EtdGlsZS1zaWRlYmFyLXBhZ2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2EtdGlsZXMvc3JjL2xpYi9iYXJzYS10aWxlLXNpZGViYXItcGFnZS9iYXJzYS10aWxlLXNpZGViYXItcGFnZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS10aWxlcy9zcmMvbGliL2JhcnNhLXRpbGUtc2lkZWJhci1wYWdlL2JhcnNhLXRpbGUtc2lkZWJhci1wYWdlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFhLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFekMsT0FBTyxFQUNILFFBQVEsRUFDUixpQkFBaUIsRUFDakIsbUJBQW1CLEVBQ25CLGlCQUFpQixFQUVqQixjQUFjLEVBQ2Qsa0JBQWtCLEVBQ3JCLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUFjLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7OztBQVU3QyxNQUFNLE9BQU8sNkJBQThCLFNBQVEsa0JBQWtCO0lBUnJFOztRQVNJLGFBQVEsR0FBRyxpQkFBaUIsRUFBRSxDQUFDO1FBQy9CLFFBQUcsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQztRQUN6QixZQUFPLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3pCLGtCQUFhLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDNUMsdUJBQWtCLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDL0Msb0JBQWUsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQywwREFBMEQ7UUFHOUcsc0JBQWlCLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0tBY3JDO0lBYkcsUUFBUTtRQUNKLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNqQixJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztRQUN6QixJQUFJLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ2pGLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xGLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsWUFBWSxDQUFDO1FBQ3pELElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUN0QyxJQUFJLENBQUMsS0FBSyxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUNELE9BQU87UUFDSCxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDbkMsQ0FBQzsrR0F0QlEsNkJBQTZCO21HQUE3Qiw2QkFBNkIscURBSDNCLENBQUMsY0FBYyxDQUFDLGlEQ25CL0IsbzlDQWtDQTs7NEZEWmEsNkJBQTZCO2tCQVJ6QyxTQUFTOytCQUNJLDRCQUE0QixtQkFHckIsdUJBQXVCLENBQUMsTUFBTSxhQUNwQyxDQUFDLGNBQWMsQ0FBQyxjQUNmLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBpbmplY3QsIE9uQ2hhbmdlcywgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcblxyXG5pbXBvcnQge1xyXG4gICAgQmFyc2FBcGksXHJcbiAgICBnZXREZXZpY2VJc01vYmlsZSxcclxuICAgIExvY2FsU3RvcmFnZVNlcnZpY2UsXHJcbiAgICBCcmVhZGNydW1iU2VydmljZSxcclxuICAgIEJyZWFkQ3J1bWJJbmZvLFxyXG4gICAgUm91dGluZ1NlcnZpY2UsXHJcbiAgICBFbXB0eVBhZ2VDb21wb25lbnRcclxufSBmcm9tICdiYXJzYS1ub3Zpbi1yYXktY29yZSc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2J0LWJhcnNhLXRpbGUtc2lkZWJhci1wYWdlJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9iYXJzYS10aWxlLXNpZGViYXItcGFnZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi9iYXJzYS10aWxlLXNpZGViYXItcGFnZS5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgICBwcm92aWRlcnM6IFtSb3V0aW5nU2VydmljZV0sXHJcbiAgICBzdGFuZGFsb25lOiBmYWxzZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQmFyc2FUaWxlU2lkZWJhclBhZ2VDb21wb25lbnQgZXh0ZW5kcyBFbXB0eVBhZ2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xyXG4gICAgaXNNb2JpbGUgPSBnZXREZXZpY2VJc01vYmlsZSgpO1xyXG4gICAgcnRsID0gQmFyc2FBcGkuTG9naW5Gb3JtRGF0YS5Jc1J0bDtcclxuICAgIHByb3RlY3RlZCBfcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XHJcbiAgICBwcm90ZWN0ZWQgX2xvY2FsU3RvcmFnZSA9IGluamVjdChMb2NhbFN0b3JhZ2VTZXJ2aWNlKTtcclxuICAgIHByb3RlY3RlZCBfYnJlYWRDcnVtYlNlcnZpY2UgPSBpbmplY3QoQnJlYWRjcnVtYlNlcnZpY2UpO1xyXG4gICAgcHJvdGVjdGVkIF9yb3V0aW5nU2VydmljZSA9IGluamVjdChSb3V0aW5nU2VydmljZSk7IC8vIGNyZWF0ZSBuZXcgcm91dGluZyBzZXJ2aWNlIHRvIGhhbmRsZSBzaWRlYmFyIG5hdmlnYXRpb25cclxuICAgIGJyZWFkY3J1bWJzJDogT2JzZXJ2YWJsZTxCcmVhZENydW1iSW5mb1tdPjtcclxuICAgIHRpdGxlOiBzdHJpbmcgfCBudWxsO1xyXG4gICAgZmlyc3RSZXBvcnRMb2FkZWQgPSBzaWduYWwoZmFsc2UpO1xyXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcclxuICAgICAgICB0aGlzLmlzRmlyc3RQYWdlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5fcG9ydGFsU2VydmljZS5uYXZpZ2F0aW9uRW5kJC5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSkuc3Vic2NyaWJlKChjKSA9PiB7XHJcbiAgICAgICAgICAgIGMgJiYgYy51cmwuaW5kZXhPZignbWFpbnNpZGU6cmVwb3J0JykgPiAwICYmIHRoaXMuZmlyc3RSZXBvcnRMb2FkZWQuc2V0KHRydWUpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuYnJlYWRjcnVtYnMkID0gdGhpcy5fYnJlYWRDcnVtYlNlcnZpY2UuYnJlYWRjcnVtYnMkO1xyXG4gICAgICAgIHRoaXMuX3JvdXRpbmdTZXJ2aWNlLmlzU2lkZWJhciA9IHRydWU7XHJcbiAgICAgICAgdGhpcy50aXRsZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdBY3RpdmVUaWxlJyk7XHJcbiAgICB9XHJcbiAgICBvbkNsb3NlKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX3JvdXRlci5uYXZpZ2F0ZShbJy4uLyddKTtcclxuICAgIH1cclxufVxyXG4iLCI8ZGl2IGZkLWJhcj5cclxuICAgIDxkaXYgZmQtYmFyLWxlZnQgc3R5bGU9XCJmbGV4OiAxOyB3aWR0aDogMTAwJVwiPlxyXG4gICAgICAgIDxmZC1icmVhZGNydW1iIHN0eWxlPVwid2lkdGg6IDEwMCVcIj5cclxuICAgICAgICAgICAgQGlmIChicmVhZGNydW1icyQgfCBhc3luYzsgYXMgYnJlYWRDcnVtYnMpIHsgQGZvciAoIGJyZWFkQ3J1bWIgb2YgYnJlYWRDcnVtYnMgO3RyYWNrIGJyZWFkQ3J1bWIudXJsOyBsZXQgaSA9XHJcbiAgICAgICAgICAgICRpbmRleDsgbGV0IGxhc3QgPSAkbGFzdCkge1xyXG4gICAgICAgICAgICA8ZmQtYnJlYWRjcnVtYi1pdGVtPlxyXG4gICAgICAgICAgICAgICAgPGJzdS1icmVhZGNydW1iXHJcbiAgICAgICAgICAgICAgICAgICAgW2luZGV4XT1cImlcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtpc0xhc3RdPVwibGFzdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2JyZWFkQ3J1bWJdPVwiYnJlYWRDcnVtYlwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2FsbEJyZWFkQ3J1bWJdPVwiYnJlYWRDcnVtYnNcIlxyXG4gICAgICAgICAgICAgICAgPjwvYnN1LWJyZWFkY3J1bWI+XHJcbiAgICAgICAgICAgIDwvZmQtYnJlYWRjcnVtYi1pdGVtPlxyXG4gICAgICAgICAgICB9IH1cclxuICAgICAgICA8L2ZkLWJyZWFkY3J1bWI+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG48ZmQtZHluYW1pYy1zaWRlLWNvbnRlbnQgY2xhc3M9XCJ0aWxlcy1zaWRlYmFyLXdyYXBwZXJcIiBmaWxsRW1wdHlTcGFjZSBzdHlsZT1cIm92ZXJmbG93OiBhdXRvXCI+XHJcbiAgICA8ZmQtZHluYW1pYy1zaWRlLWNvbnRlbnQtc2lkZT5cclxuICAgICAgICA8bmctY29udGFpbmVyICNjb250YWluZXJSZWY+PC9uZy1jb250YWluZXI+XHJcbiAgICA8L2ZkLWR5bmFtaWMtc2lkZS1jb250ZW50LXNpZGU+XHJcbiAgICA8ZmQtZHluYW1pYy1zaWRlLWNvbnRlbnQtbWFpbiBzdHlsZT1cIm1hcmdpbjogMnJlbVwiPlxyXG4gICAgICAgIEBpZihmaXJzdFJlcG9ydExvYWRlZCgpPT09ZmFsc2Upe1xyXG4gICAgICAgIDxmZC1tZXNzYWdlLXBhZ2UgdHlwZT1cIm5vLWl0ZW1zXCIgc3R5bGU9XCJhbGlnbi1zZWxmOiBjZW50ZXI7IGJhY2tncm91bmQ6IHRyYW5zcGFyZW50XCI+XHJcbiAgICAgICAgICAgIDxmZC1tZXNzYWdlLXBhZ2UtdGl0bGU+e3sgJ1NlYXJjaEluUmVwb3J0cycgfCBiYmJUcmFuc2xhdGUgfX08L2ZkLW1lc3NhZ2UtcGFnZS10aXRsZT5cclxuICAgICAgICA8L2ZkLW1lc3NhZ2UtcGFnZT5cclxuICAgICAgICB9XHJcbiAgICAgICAgPHJvdXRlci1vdXRsZXQgbmFtZT1cIm1haW5zaWRlXCI+IDwvcm91dGVyLW91dGxldD5cclxuICAgIDwvZmQtZHluYW1pYy1zaWRlLWNvbnRlbnQtbWFpbj5cclxuPC9mZC1keW5hbWljLXNpZGUtY29udGVudD5cclxuPGRpdiBjbGFzcz1cInNpZGJhci1vdXRsZXRcIj5cclxuICAgIDxyb3V0ZXItb3V0bGV0Pjwvcm91dGVyLW91dGxldD5cclxuPC9kaXY+XHJcbiJdfQ==
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { RouterModule } from '@angular/router';
|
|
3
|
+
import { AuthGuard, PortalPageResolver, TileGroupBreadcrumResolver } from 'barsa-novin-ray-core';
|
|
4
|
+
import { BarsaTileSidebarPageComponent } from './barsa-tile-sidebar-page/barsa-tile-sidebar-page.component';
|
|
5
|
+
import { ReportNavigatorComponent } from 'barsa-sap-ui';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "@angular/router";
|
|
8
|
+
export const extendHomeRouter = [
|
|
9
|
+
{
|
|
10
|
+
path: 'appgroupsidebar',
|
|
11
|
+
component: BarsaTileSidebarPageComponent,
|
|
12
|
+
canActivate: [AuthGuard],
|
|
13
|
+
data: {
|
|
14
|
+
pageData: {
|
|
15
|
+
Module: 'BarsaHomePage',
|
|
16
|
+
HasAuthorize: true,
|
|
17
|
+
Route: '/appgroupsidebar'
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
resolve: { pageData: PortalPageResolver, breadcrumb: TileGroupBreadcrumResolver },
|
|
21
|
+
children: [
|
|
22
|
+
{
|
|
23
|
+
path: 'report/:id',
|
|
24
|
+
outlet: 'mainside',
|
|
25
|
+
component: ReportNavigatorComponent,
|
|
26
|
+
data: {
|
|
27
|
+
pageData: {
|
|
28
|
+
HasAuthorize: false,
|
|
29
|
+
Route: '/report',
|
|
30
|
+
Module: 'BarsaReportPage'
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
path: 'popup',
|
|
36
|
+
loadChildren: () => import('barsa-novin-ray-core').then((c) => c.BarsaSapUiFormPageModule)
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
path: 'formfieldshow',
|
|
40
|
+
loadChildren: () => import('barsa-novin-ray-core').then((c) => c.BarsaSapUiFormPageModule)
|
|
41
|
+
}
|
|
42
|
+
]
|
|
43
|
+
}
|
|
44
|
+
];
|
|
45
|
+
const routes = [];
|
|
46
|
+
export class BarsaTilesRoutingModule {
|
|
47
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BarsaTilesRoutingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
48
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: BarsaTilesRoutingModule, imports: [i1.RouterModule], exports: [RouterModule] }); }
|
|
49
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BarsaTilesRoutingModule, imports: [RouterModule.forChild(routes), RouterModule] }); }
|
|
50
|
+
}
|
|
51
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BarsaTilesRoutingModule, decorators: [{
|
|
52
|
+
type: NgModule,
|
|
53
|
+
args: [{
|
|
54
|
+
imports: [RouterModule.forChild(routes)],
|
|
55
|
+
exports: [RouterModule]
|
|
56
|
+
}]
|
|
57
|
+
}] });
|
|
58
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFyc2EtdGlsZXMtcm91dGluZy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS10aWxlcy9zcmMvbGliL2JhcnNhLXRpbGVzLXJvdXRpbmcubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBVSxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxTQUFTLEVBQUUsa0JBQWtCLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNqRyxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSw2REFBNkQsQ0FBQztBQUM1RyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxjQUFjLENBQUM7OztBQUV4RCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRztJQUM1QjtRQUNJLElBQUksRUFBRSxpQkFBaUI7UUFDdkIsU0FBUyxFQUFFLDZCQUE2QjtRQUN4QyxXQUFXLEVBQUUsQ0FBQyxTQUFTLENBQUM7UUFDeEIsSUFBSSxFQUFFO1lBQ0YsUUFBUSxFQUFFO2dCQUNOLE1BQU0sRUFBRSxlQUFlO2dCQUN2QixZQUFZLEVBQUUsSUFBSTtnQkFDbEIsS0FBSyxFQUFFLGtCQUFrQjthQUM1QjtTQUNKO1FBQ0QsT0FBTyxFQUFFLEVBQUUsUUFBUSxFQUFFLGtCQUFrQixFQUFFLFVBQVUsRUFBRSwwQkFBMEIsRUFBRTtRQUNqRixRQUFRLEVBQUU7WUFDTjtnQkFDSSxJQUFJLEVBQUUsWUFBWTtnQkFDbEIsTUFBTSxFQUFFLFVBQVU7Z0JBQ2xCLFNBQVMsRUFBRSx3QkFBd0I7Z0JBQ25DLElBQUksRUFBRTtvQkFDRixRQUFRLEVBQUU7d0JBQ04sWUFBWSxFQUFFLEtBQUs7d0JBQ25CLEtBQUssRUFBRSxTQUFTO3dCQUNoQixNQUFNLEVBQUUsaUJBQWlCO3FCQUM1QjtpQkFDSjthQUNKO1lBQ0Q7Z0JBQ0ksSUFBSSxFQUFFLE9BQU87Z0JBQ2IsWUFBWSxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLHdCQUF3QixDQUFDO2FBQzdGO1lBQ0Q7Z0JBQ0ksSUFBSSxFQUFFLGVBQWU7Z0JBQ3JCLFlBQVksRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyx3QkFBd0IsQ0FBQzthQUM3RjtTQUNKO0tBQ0o7Q0FDSixDQUFDO0FBQ0YsTUFBTSxNQUFNLEdBQVcsRUFBRSxDQUFDO0FBSzFCLE1BQU0sT0FBTyx1QkFBdUI7K0dBQXZCLHVCQUF1QjtnSEFBdkIsdUJBQXVCLHdDQUZ0QixZQUFZO2dIQUViLHVCQUF1QixZQUh0QixZQUFZLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUM3QixZQUFZOzs0RkFFYix1QkFBdUI7a0JBSm5DLFFBQVE7bUJBQUM7b0JBQ04sT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztvQkFDeEMsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO2lCQUMxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFJvdXRlck1vZHVsZSwgUm91dGVzIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgQXV0aEd1YXJkLCBQb3J0YWxQYWdlUmVzb2x2ZXIsIFRpbGVHcm91cEJyZWFkY3J1bVJlc29sdmVyIH0gZnJvbSAnYmFyc2Etbm92aW4tcmF5LWNvcmUnO1xyXG5pbXBvcnQgeyBCYXJzYVRpbGVTaWRlYmFyUGFnZUNvbXBvbmVudCB9IGZyb20gJy4vYmFyc2EtdGlsZS1zaWRlYmFyLXBhZ2UvYmFyc2EtdGlsZS1zaWRlYmFyLXBhZ2UuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUmVwb3J0TmF2aWdhdG9yQ29tcG9uZW50IH0gZnJvbSAnYmFyc2Etc2FwLXVpJztcclxuXHJcbmV4cG9ydCBjb25zdCBleHRlbmRIb21lUm91dGVyID0gW1xyXG4gICAge1xyXG4gICAgICAgIHBhdGg6ICdhcHBncm91cHNpZGViYXInLFxyXG4gICAgICAgIGNvbXBvbmVudDogQmFyc2FUaWxlU2lkZWJhclBhZ2VDb21wb25lbnQsXHJcbiAgICAgICAgY2FuQWN0aXZhdGU6IFtBdXRoR3VhcmRdLFxyXG4gICAgICAgIGRhdGE6IHtcclxuICAgICAgICAgICAgcGFnZURhdGE6IHtcclxuICAgICAgICAgICAgICAgIE1vZHVsZTogJ0JhcnNhSG9tZVBhZ2UnLFxyXG4gICAgICAgICAgICAgICAgSGFzQXV0aG9yaXplOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgUm91dGU6ICcvYXBwZ3JvdXBzaWRlYmFyJ1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICByZXNvbHZlOiB7IHBhZ2VEYXRhOiBQb3J0YWxQYWdlUmVzb2x2ZXIsIGJyZWFkY3J1bWI6IFRpbGVHcm91cEJyZWFkY3J1bVJlc29sdmVyIH0sXHJcbiAgICAgICAgY2hpbGRyZW46IFtcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgcGF0aDogJ3JlcG9ydC86aWQnLFxyXG4gICAgICAgICAgICAgICAgb3V0bGV0OiAnbWFpbnNpZGUnLFxyXG4gICAgICAgICAgICAgICAgY29tcG9uZW50OiBSZXBvcnROYXZpZ2F0b3JDb21wb25lbnQsXHJcbiAgICAgICAgICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcGFnZURhdGE6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgSGFzQXV0aG9yaXplOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgUm91dGU6ICcvcmVwb3J0JyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgTW9kdWxlOiAnQmFyc2FSZXBvcnRQYWdlJ1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgcGF0aDogJ3BvcHVwJyxcclxuICAgICAgICAgICAgICAgIGxvYWRDaGlsZHJlbjogKCkgPT4gaW1wb3J0KCdiYXJzYS1ub3Zpbi1yYXktY29yZScpLnRoZW4oKGMpID0+IGMuQmFyc2FTYXBVaUZvcm1QYWdlTW9kdWxlKVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBwYXRoOiAnZm9ybWZpZWxkc2hvdycsXHJcbiAgICAgICAgICAgICAgICBsb2FkQ2hpbGRyZW46ICgpID0+IGltcG9ydCgnYmFyc2Etbm92aW4tcmF5LWNvcmUnKS50aGVuKChjKSA9PiBjLkJhcnNhU2FwVWlGb3JtUGFnZU1vZHVsZSlcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIF1cclxuICAgIH1cclxuXTtcclxuY29uc3Qgcm91dGVzOiBSb3V0ZXMgPSBbXTtcclxuQE5nTW9kdWxlKHtcclxuICAgIGltcG9ydHM6IFtSb3V0ZXJNb2R1bGUuZm9yQ2hpbGQocm91dGVzKV0sXHJcbiAgICBleHBvcnRzOiBbUm91dGVyTW9kdWxlXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQmFyc2FUaWxlc1JvdXRpbmdNb2R1bGUge31cclxuIl19
|