aril 1.0.97 → 1.0.98

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.
@@ -18,8 +18,8 @@ import * as i0 from "@angular/core";
18
18
  import * as i1 from "../../service/app.layout.service";
19
19
  import * as i2 from "../../service/notifications.service";
20
20
  import * as i3 from "@ngneat/transloco";
21
- import * as i4 from "@angular/platform-browser";
22
- import * as i5 from "@angular/router";
21
+ import * as i4 from "@angular/router";
22
+ import * as i5 from "keycloak-angular";
23
23
  import * as i6 from "primeng/sidebar";
24
24
  import * as i7 from "primeng/api";
25
25
  import * as i8 from "primeng/scrollpanel";
@@ -27,12 +27,12 @@ import * as i9 from "primeng/confirmdialog";
27
27
  import * as i10 from "primeng/tooltip";
28
28
  import * as i11 from "@fortawesome/angular-fontawesome";
29
29
  export class NotificationsSidebarComponent {
30
- constructor(layoutService, notificationsService, translocoService, sanitizer, router) {
30
+ constructor(layoutService, notificationsService, translocoService, router, keycloak) {
31
31
  this.layoutService = layoutService;
32
32
  this.notificationsService = notificationsService;
33
33
  this.translocoService = translocoService;
34
- this.sanitizer = sanitizer;
35
34
  this.router = router;
35
+ this.keycloak = keycloak;
36
36
  this.notifications = signal([]);
37
37
  this.selectedNotification = null;
38
38
  this.ActivityTypesEnum = ActivityTypesEnum;
@@ -52,7 +52,8 @@ export class NotificationsSidebarComponent {
52
52
  },
53
53
  startDate: this.oneMonthAgo.dateToLong('time') || 0,
54
54
  endDate: new Date().dateToLong('time') || 0,
55
- read: false
55
+ read: false,
56
+ username: this.keycloak.getUsername()
56
57
  }))));
57
58
  this.initializeEffects();
58
59
  }
@@ -113,10 +114,6 @@ export class NotificationsSidebarComponent {
113
114
  const truncated = notification.content?.length > 200 ? notification.content?.substring(0, 200) + '...' : notification.content;
114
115
  return truncated || '';
115
116
  }
116
- getSanitizedHtmlContent(notification) {
117
- const content = notification.content || '';
118
- return this.sanitizer.bypassSecurityTrustHtml(content);
119
- }
120
117
  formatNotificationDate(startDate) {
121
118
  if (!startDate) {
122
119
  return '';
@@ -159,7 +156,7 @@ export class NotificationsSidebarComponent {
159
156
  this.router.navigate(['mng/control-management/sms-email-audit']);
160
157
  this.visible = false;
161
158
  }
162
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: NotificationsSidebarComponent, deps: [{ token: i1.LayoutService }, { token: i2.NotificationsService }, { token: i3.TranslocoService }, { token: i4.DomSanitizer }, { token: i5.Router }], target: i0.ɵɵFactoryTarget.Component }); }
159
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: NotificationsSidebarComponent, deps: [{ token: i1.LayoutService }, { token: i2.NotificationsService }, { token: i3.TranslocoService }, { token: i4.Router }, { token: i5.KeycloakService }], target: i0.ɵɵFactoryTarget.Component }); }
163
160
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.2", type: NotificationsSidebarComponent, isStandalone: true, selector: "app-notifications-sidebar", ngImport: i0, template: "<p-sidebar\r\n\t[(visible)]=\"visible\"\r\n\tposition=\"right\"\r\n\t[transitionOptions]=\"'.3s cubic-bezier(0, 0, 0.2, 1)'\"\r\n\tstyleClass=\"layout-notifications-sidebar w-full sm:w-30rem\"\r\n\t*transloco=\"let t; read: 'notifications'\">\r\n\t<ng-template pTemplate=\"header\">\r\n\t\t<div class=\"flex align-items-center justify-content-between w-full\">\r\n\t\t\t<div class=\"flex align-items-center\">\r\n\t\t\t\t<i class=\"pi pi-bell text-primary text-xl\"></i>\r\n\t\t\t\t<span class=\"font-bold text-lg\">{{ t('title') }}</span>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</ng-template>\r\n\r\n\t<div class=\"notifications-content\">\r\n\t\t@if (notifications().length > 0) {\r\n\t\t\t<div class=\"notifications-list\">\r\n\t\t\t\t<p-scrollPanel [style]=\"{ width: '100%', height: '100%' }\">\r\n\t\t\t\t\t<div class=\"notifications-items\">\r\n\t\t\t\t\t\t@for (notification of notifications(); track trackByNotificationId($index, notification)) {\r\n\t\t\t\t\t\t\t<div\r\n\t\t\t\t\t\t\t\tclass=\"notification-item\"\r\n\t\t\t\t\t\t\t\t[class.unread-item]=\"!notification.read\"\r\n\t\t\t\t\t\t\t\t(click)=\"\r\n\t\t\t\t\t\t\t\t\t(\r\n\t\t\t\t\t\t\t\t\t\tnotification?.detailNotificationType === DetailNotificationTypeEnum.TODO_ITEM ||\r\n\t\t\t\t\t\t\t\t\t\tnotification?.detailNotificationType === DetailNotificationTypeEnum.BATCH_JOB\r\n\t\t\t\t\t\t\t\t\t) ?\r\n\t\t\t\t\t\t\t\t\t\tmarkNotificationAsRead(notification)\r\n\t\t\t\t\t\t\t\t\t:\tnull\r\n\t\t\t\t\t\t\t\t\">\r\n\t\t\t\t\t\t\t\t<div class=\"item-content\">\r\n\t\t\t\t\t\t\t\t\t<div class=\"item-header\">\r\n\t\t\t\t\t\t\t\t\t\t<div class=\"item-title\">\r\n\t\t\t\t\t\t\t\t\t\t\t@if (notification.type === ActivityTypesEnum.SMS) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"notification-icon sms-icon\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<fa-icon [icon]=\"regularIcons.faMessage\" />\r\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t\t\t\t\t@if (!notification.read) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"notification-icon email-icon unread\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<fa-icon [icon]=\"regularIcons.faEnvelope\" />\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"notification-icon email-icon read\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<fa-icon [icon]=\"regularIcons.faEnvelopeOpen\" />\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t<p class=\"title-text ml-2\">{{ getNotificationTitle(notification) }}</p>\r\n\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t<span class=\"notification-date\">{{ formatNotificationDate(notification.sendingDate) }}</span>\r\n\t\t\t\t\t\t\t\t\t\t@if (!notification.read) {\r\n\t\t\t\t\t\t\t\t\t\t\t<fa-icon\r\n\t\t\t\t\t\t\t\t\t\t\t\t[icon]=\"solidIcons.faCircle\"\r\n\t\t\t\t\t\t\t\t\t\t\t\tclass=\"unread-dot\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"t('markAsRead')\"\r\n\t\t\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"left\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t(click)=\"markNotificationAsReadOnDotIcon(notification); $event.stopPropagation()\">\r\n\t\t\t\t\t\t\t\t\t\t\t</fa-icon>\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t<div class=\"item-meta\"></div>\r\n\t\t\t\t\t\t\t\t\t@if (getNotificationContent(notification)) {\r\n\t\t\t\t\t\t\t\t\t\t<div class=\"item-content-preview\">\r\n\t\t\t\t\t\t\t\t\t\t\t@if (notification.type === ActivityTypesEnum.EMAIL) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t<div [innerHTML]=\"notification.content | safe: 'html'\" class=\"html-preview line-clamp-3\"></div>\r\n\t\t\t\t\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t\t\t\t\t<p class=\"text-content\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{{ getNotificationContent(notification) }}\r\n\t\t\t\t\t\t\t\t\t\t\t\t</p>\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</p-scrollPanel>\r\n\t\t\t</div>\r\n\t\t} @else {\r\n\t\t\t<div class=\"empty-state\">\r\n\t\t\t\t<div class=\"empty-content\">\r\n\t\t\t\t\t<i class=\"pi pi-bell empty-icon\"></i>\r\n\t\t\t\t\t<h3 class=\"empty-title\">{{ t('noNotifications') }}</h3>\r\n\t\t\t\t\t<p class=\"empty-message\">{{ t('noNotificationsDescription') }}</p>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t}\r\n\r\n\t\t<div class=\"flex justify-content-center p-2 border-top-1 surface-border\">\r\n\t\t\t<aril-button\r\n\t\t\t\t[label]=\"t('allShow')\"\r\n\t\t\t\ticon=\"EXTERNAL_LINK\"\r\n\t\t\t\tcolor=\"primary\"\r\n\t\t\t\tsize=\"md\"\r\n\t\t\t\t(clickEvent)=\"navigateToAllNotifications()\">\r\n\t\t\t</aril-button>\r\n\t\t</div>\r\n\t</div>\r\n\r\n\t<p-confirmDialog></p-confirmDialog>\r\n</p-sidebar>\r\n", styles: [":host ::ng-deep .layout-notifications-sidebar .p-sidebar-content{padding:0;background:var(--surface-ground)}:host ::ng-deep .layout-notifications-sidebar .p-sidebar-header{background:var(--primary-color);color:var(--primary-color-text);padding:1rem 1.5rem}:host ::ng-deep .layout-notifications-sidebar .p-sidebar-header span{font-size:1.1rem;font-weight:600}.notifications-content{display:flex;flex-direction:column;height:100%;background:var(--surface-0)}.add-section{display:flex;align-items:center;gap:.5rem;padding:1rem;border-bottom:1px solid var(--surface-border);background:var(--surface-0)}.notifications-list{flex:1;overflow:hidden}.notifications-items{padding:0}.notification-item{background:transparent;border-bottom:1px solid var(--surface-border);cursor:pointer;transition:background-color .2s ease;position:relative}.notification-item:hover{background:var(--surface-hover)}.notification-item:last-child{border-bottom:none}.notification-item.unread-item{background:var(--surface-50)}.notification-item.unread-item:hover{background:var(--surface-100)}.notification-item.unread-item .title-text{font-weight:500}.item-content{padding:1.125rem 1rem}.item-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:.625rem;gap:1rem}.item-title{display:flex;align-items:center;flex:1;min-width:0;gap:.4em}.item-title .notification-icon{width:1.75rem;height:1.75rem;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:all .2s ease}.item-title .notification-icon fa-icon{font-size:.875rem;transition:all .2s ease}.item-title .notification-icon.email-icon.unread{background-color:#3b82f6;color:#fff;box-shadow:0 1px 4px #00000026}.item-title .notification-icon.email-icon.unread fa-icon{color:#fff}.item-title .notification-icon.email-icon.read{background:var(--surface-200);color:var(--text-color-secondary)}.item-title .notification-icon.email-icon.read fa-icon{color:var(--text-color-secondary)}.item-title .notification-icon.sms-icon{background:linear-gradient(135deg,var(--green-500),var(--green-600));color:#fff;box-shadow:0 2px 8px #22c55e40}.item-title .notification-icon.sms-icon fa-icon{color:#fff}.item-title .title-text{font-weight:500;line-height:1.5;font-size:.975rem;margin:0}.notification-date{font-size:.8rem;color:var(--text-color-secondary);font-weight:500;white-space:nowrap;background:var(--surface-100);padding:.2rem .4rem;border-radius:.25rem}.item-content-preview{margin-top:.625rem;color:var(--text-color-secondary);padding-left:1.5rem;border-left:2px solid var(--surface-200)}.item-content-preview .text-content{font-size:.875rem;line-height:1.5;margin:0;font-style:italic}.item-content-preview .html-preview{font-size:.875rem;line-height:1.5;max-height:75px;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;line-clamp:3;overflow:hidden;word-break:break-word;white-space:normal;font-style:italic}.empty-state{display:flex;align-items:center;justify-content:center;flex:1;padding:2rem}.empty-state .empty-content{text-align:center}.empty-state .empty-content .empty-icon{font-size:4rem;color:var(--text-color-secondary);opacity:.3;margin-bottom:1rem}.empty-state .empty-content .empty-title{font-size:1.25rem;font-weight:600;color:var(--text-color);margin-bottom:.5rem}.empty-state .empty-content .empty-message{color:var(--text-color-secondary);margin:0}.unread-dot{color:#3b82f6;font-size:.625rem;cursor:pointer;transition:opacity .2s ease;opacity:.8}.unread-dot:hover{opacity:1}@media (max-width: 768px){.layout-notifications-sidebar ::ng-deep .p-sidebar{width:100%!important}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: SidebarModule }, { kind: "component", type: i6.Sidebar, selector: "p-sidebar", inputs: ["appendTo", "blockScroll", "style", "styleClass", "ariaCloseLabel", "autoZIndex", "baseZIndex", "modal", "dismissible", "showCloseIcon", "closeOnEscape", "transitionOptions", "visible", "position", "fullScreen"], outputs: ["onShow", "onHide", "visibleChange"] }, { kind: "directive", type: i7.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "ngmodule", type: ScrollPanelModule }, { kind: "component", type: i8.ScrollPanel, selector: "p-scrollPanel", inputs: ["style", "styleClass", "step"] }, { kind: "ngmodule", type: ConfirmDialogModule }, { kind: "component", type: i9.ConfirmDialog, selector: "p-confirmDialog", inputs: ["header", "icon", "message", "style", "styleClass", "maskStyleClass", "acceptIcon", "acceptLabel", "closeAriaLabel", "acceptAriaLabel", "acceptVisible", "rejectIcon", "rejectLabel", "rejectAriaLabel", "rejectVisible", "acceptButtonStyleClass", "rejectButtonStyleClass", "closeOnEscape", "dismissableMask", "blockScroll", "rtl", "closable", "appendTo", "key", "autoZIndex", "baseZIndex", "transitionOptions", "focusTrap", "defaultFocus", "breakpoints", "visible", "position"], outputs: ["onHide"] }, { kind: "ngmodule", type: PaginatorModule }, { kind: "component", type: ButtonComponent, selector: "aril-button:not([click])", inputs: ["label", "loading", "disabled", "raised", "outlined", "badge", "size", "icon", "color"], outputs: ["clickEvent"] }, { kind: "ngmodule", type: TranslocoModule }, { kind: "directive", type: i3.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoLang", "translocoLoadingTpl"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i10.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "ngmodule", type: BadgeModule }, { kind: "ngmodule", type: FontAwesomeModule }, { kind: "component", type: i11.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }, { kind: "pipe", type: SafePipe, name: "safe" }] }); }
164
161
  }
165
162
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: NotificationsSidebarComponent, decorators: [{
@@ -177,5 +174,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
177
174
  FontAwesomeModule,
178
175
  SafePipe
179
176
  ], template: "<p-sidebar\r\n\t[(visible)]=\"visible\"\r\n\tposition=\"right\"\r\n\t[transitionOptions]=\"'.3s cubic-bezier(0, 0, 0.2, 1)'\"\r\n\tstyleClass=\"layout-notifications-sidebar w-full sm:w-30rem\"\r\n\t*transloco=\"let t; read: 'notifications'\">\r\n\t<ng-template pTemplate=\"header\">\r\n\t\t<div class=\"flex align-items-center justify-content-between w-full\">\r\n\t\t\t<div class=\"flex align-items-center\">\r\n\t\t\t\t<i class=\"pi pi-bell text-primary text-xl\"></i>\r\n\t\t\t\t<span class=\"font-bold text-lg\">{{ t('title') }}</span>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</ng-template>\r\n\r\n\t<div class=\"notifications-content\">\r\n\t\t@if (notifications().length > 0) {\r\n\t\t\t<div class=\"notifications-list\">\r\n\t\t\t\t<p-scrollPanel [style]=\"{ width: '100%', height: '100%' }\">\r\n\t\t\t\t\t<div class=\"notifications-items\">\r\n\t\t\t\t\t\t@for (notification of notifications(); track trackByNotificationId($index, notification)) {\r\n\t\t\t\t\t\t\t<div\r\n\t\t\t\t\t\t\t\tclass=\"notification-item\"\r\n\t\t\t\t\t\t\t\t[class.unread-item]=\"!notification.read\"\r\n\t\t\t\t\t\t\t\t(click)=\"\r\n\t\t\t\t\t\t\t\t\t(\r\n\t\t\t\t\t\t\t\t\t\tnotification?.detailNotificationType === DetailNotificationTypeEnum.TODO_ITEM ||\r\n\t\t\t\t\t\t\t\t\t\tnotification?.detailNotificationType === DetailNotificationTypeEnum.BATCH_JOB\r\n\t\t\t\t\t\t\t\t\t) ?\r\n\t\t\t\t\t\t\t\t\t\tmarkNotificationAsRead(notification)\r\n\t\t\t\t\t\t\t\t\t:\tnull\r\n\t\t\t\t\t\t\t\t\">\r\n\t\t\t\t\t\t\t\t<div class=\"item-content\">\r\n\t\t\t\t\t\t\t\t\t<div class=\"item-header\">\r\n\t\t\t\t\t\t\t\t\t\t<div class=\"item-title\">\r\n\t\t\t\t\t\t\t\t\t\t\t@if (notification.type === ActivityTypesEnum.SMS) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"notification-icon sms-icon\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<fa-icon [icon]=\"regularIcons.faMessage\" />\r\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t\t\t\t\t@if (!notification.read) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"notification-icon email-icon unread\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<fa-icon [icon]=\"regularIcons.faEnvelope\" />\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"notification-icon email-icon read\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<fa-icon [icon]=\"regularIcons.faEnvelopeOpen\" />\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t<p class=\"title-text ml-2\">{{ getNotificationTitle(notification) }}</p>\r\n\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t<span class=\"notification-date\">{{ formatNotificationDate(notification.sendingDate) }}</span>\r\n\t\t\t\t\t\t\t\t\t\t@if (!notification.read) {\r\n\t\t\t\t\t\t\t\t\t\t\t<fa-icon\r\n\t\t\t\t\t\t\t\t\t\t\t\t[icon]=\"solidIcons.faCircle\"\r\n\t\t\t\t\t\t\t\t\t\t\t\tclass=\"unread-dot\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"t('markAsRead')\"\r\n\t\t\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"left\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t(click)=\"markNotificationAsReadOnDotIcon(notification); $event.stopPropagation()\">\r\n\t\t\t\t\t\t\t\t\t\t\t</fa-icon>\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t<div class=\"item-meta\"></div>\r\n\t\t\t\t\t\t\t\t\t@if (getNotificationContent(notification)) {\r\n\t\t\t\t\t\t\t\t\t\t<div class=\"item-content-preview\">\r\n\t\t\t\t\t\t\t\t\t\t\t@if (notification.type === ActivityTypesEnum.EMAIL) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t<div [innerHTML]=\"notification.content | safe: 'html'\" class=\"html-preview line-clamp-3\"></div>\r\n\t\t\t\t\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t\t\t\t\t<p class=\"text-content\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{{ getNotificationContent(notification) }}\r\n\t\t\t\t\t\t\t\t\t\t\t\t</p>\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</p-scrollPanel>\r\n\t\t\t</div>\r\n\t\t} @else {\r\n\t\t\t<div class=\"empty-state\">\r\n\t\t\t\t<div class=\"empty-content\">\r\n\t\t\t\t\t<i class=\"pi pi-bell empty-icon\"></i>\r\n\t\t\t\t\t<h3 class=\"empty-title\">{{ t('noNotifications') }}</h3>\r\n\t\t\t\t\t<p class=\"empty-message\">{{ t('noNotificationsDescription') }}</p>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t}\r\n\r\n\t\t<div class=\"flex justify-content-center p-2 border-top-1 surface-border\">\r\n\t\t\t<aril-button\r\n\t\t\t\t[label]=\"t('allShow')\"\r\n\t\t\t\ticon=\"EXTERNAL_LINK\"\r\n\t\t\t\tcolor=\"primary\"\r\n\t\t\t\tsize=\"md\"\r\n\t\t\t\t(clickEvent)=\"navigateToAllNotifications()\">\r\n\t\t\t</aril-button>\r\n\t\t</div>\r\n\t</div>\r\n\r\n\t<p-confirmDialog></p-confirmDialog>\r\n</p-sidebar>\r\n", styles: [":host ::ng-deep .layout-notifications-sidebar .p-sidebar-content{padding:0;background:var(--surface-ground)}:host ::ng-deep .layout-notifications-sidebar .p-sidebar-header{background:var(--primary-color);color:var(--primary-color-text);padding:1rem 1.5rem}:host ::ng-deep .layout-notifications-sidebar .p-sidebar-header span{font-size:1.1rem;font-weight:600}.notifications-content{display:flex;flex-direction:column;height:100%;background:var(--surface-0)}.add-section{display:flex;align-items:center;gap:.5rem;padding:1rem;border-bottom:1px solid var(--surface-border);background:var(--surface-0)}.notifications-list{flex:1;overflow:hidden}.notifications-items{padding:0}.notification-item{background:transparent;border-bottom:1px solid var(--surface-border);cursor:pointer;transition:background-color .2s ease;position:relative}.notification-item:hover{background:var(--surface-hover)}.notification-item:last-child{border-bottom:none}.notification-item.unread-item{background:var(--surface-50)}.notification-item.unread-item:hover{background:var(--surface-100)}.notification-item.unread-item .title-text{font-weight:500}.item-content{padding:1.125rem 1rem}.item-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:.625rem;gap:1rem}.item-title{display:flex;align-items:center;flex:1;min-width:0;gap:.4em}.item-title .notification-icon{width:1.75rem;height:1.75rem;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:all .2s ease}.item-title .notification-icon fa-icon{font-size:.875rem;transition:all .2s ease}.item-title .notification-icon.email-icon.unread{background-color:#3b82f6;color:#fff;box-shadow:0 1px 4px #00000026}.item-title .notification-icon.email-icon.unread fa-icon{color:#fff}.item-title .notification-icon.email-icon.read{background:var(--surface-200);color:var(--text-color-secondary)}.item-title .notification-icon.email-icon.read fa-icon{color:var(--text-color-secondary)}.item-title .notification-icon.sms-icon{background:linear-gradient(135deg,var(--green-500),var(--green-600));color:#fff;box-shadow:0 2px 8px #22c55e40}.item-title .notification-icon.sms-icon fa-icon{color:#fff}.item-title .title-text{font-weight:500;line-height:1.5;font-size:.975rem;margin:0}.notification-date{font-size:.8rem;color:var(--text-color-secondary);font-weight:500;white-space:nowrap;background:var(--surface-100);padding:.2rem .4rem;border-radius:.25rem}.item-content-preview{margin-top:.625rem;color:var(--text-color-secondary);padding-left:1.5rem;border-left:2px solid var(--surface-200)}.item-content-preview .text-content{font-size:.875rem;line-height:1.5;margin:0;font-style:italic}.item-content-preview .html-preview{font-size:.875rem;line-height:1.5;max-height:75px;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;line-clamp:3;overflow:hidden;word-break:break-word;white-space:normal;font-style:italic}.empty-state{display:flex;align-items:center;justify-content:center;flex:1;padding:2rem}.empty-state .empty-content{text-align:center}.empty-state .empty-content .empty-icon{font-size:4rem;color:var(--text-color-secondary);opacity:.3;margin-bottom:1rem}.empty-state .empty-content .empty-title{font-size:1.25rem;font-weight:600;color:var(--text-color);margin-bottom:.5rem}.empty-state .empty-content .empty-message{color:var(--text-color-secondary);margin:0}.unread-dot{color:#3b82f6;font-size:.625rem;cursor:pointer;transition:opacity .2s ease;opacity:.8}.unread-dot:hover{opacity:1}@media (max-width: 768px){.layout-notifications-sidebar ::ng-deep .p-sidebar{width:100%!important}}\n"] }]
180
- }], ctorParameters: () => [{ type: i1.LayoutService }, { type: i2.NotificationsService }, { type: i3.TranslocoService }, { type: i4.DomSanitizer }, { type: i5.Router }] });
181
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9ucy1zaWRlYmFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FyaWwvdGhlbWUvbGF5b3V0L2FwcC9ub3RpZmljYXRpb25zL25vdGlmaWNhdGlvbnMtc2lkZWJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcmlsL3RoZW1lL2xheW91dC9hcHAvbm90aWZpY2F0aW9ucy9ub3RpZmljYXRpb25zLXNpZGViYXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFJdEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVoRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsZUFBZSxFQUFvQixNQUFNLG1CQUFtQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTFDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztB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RSxDQUFDO1lBQzFCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyw2QkFBNkIsRUFBRSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQzdGLENBQUM7YUFBTSxDQUFDO1lBQ1AsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLDhCQUE4QixFQUFFLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUM7UUFDL0YsQ0FBQztJQUNGLENBQUM7SUFFRCwwQkFBMEI7UUFDekIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyx3Q0FBd0MsQ0FBQyxDQUFDLENBQUM7UUFDakUsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7SUFDdEIsQ0FBQzs4R0FwS1csNkJBQTZCO2tHQUE3Qiw2QkFBNkIscUZDN0MxQyxzb0pBd0dBLDBrSEQxRUUsWUFBWSw4QkFDWixhQUFhLG1kQUNiLGlCQUFpQiwrSUFDakIsbUJBQW1CLG9tQkFDbkIsZUFBZSwrQkFDZixlQUFlLCtMQUNmLGVBQWUsZ09BQ2YsYUFBYSxzWEFDYixXQUFXLDhCQUNYLGlCQUFpQiwrUkFDakIsUUFBUTs7MkZBS0csNkJBQTZCO2tCQW5CekMsU0FBUztpQ0FDRyxJQUFJLFlBQ04sMkJBQTJCLFdBQzVCO3dCQUNSLFlBQVk7d0JBQ1osYUFBYTt3QkFDYixpQkFBaUI7d0JBQ2pCLG1CQUFtQjt3QkFDbkIsZUFBZTt3QkFDZixlQUFlO3dCQUNmLGVBQWU7d0JBQ2YsYUFBYTt3QkFDYixXQUFXO3dCQUNYLGlCQUFpQjt3QkFDakIsUUFBUTtxQkFDUiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBlZmZlY3QsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyB0b1NpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcclxuaW1wb3J0IHsgRG9tU2FuaXRpemVyLCBTYWZlSHRtbCB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5cclxuaW1wb3J0IHsgQmFkZ2VNb2R1bGUgfSBmcm9tICdwcmltZW5nL2JhZGdlJztcclxuaW1wb3J0IHsgQ29uZmlybURpYWxvZ01vZHVsZSB9IGZyb20gJ3ByaW1lbmcvY29uZmlybWRpYWxvZyc7XHJcbmltcG9ydCB7IFBhZ2luYXRvck1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvcGFnaW5hdG9yJztcclxuaW1wb3J0IHsgU2Nyb2xsUGFuZWxNb2R1bGUgfSBmcm9tICdwcmltZW5nL3Njcm9sbHBhbmVsJztcclxuaW1wb3J0IHsgU2lkZWJhck1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvc2lkZWJhcic7XHJcbmltcG9ydCB7IFRvb2x0aXBNb2R1bGUgfSBmcm9tICdwcmltZW5nL3Rvb2x0aXAnO1xyXG5cclxuaW1wb3J0IHsgRm9udEF3ZXNvbWVNb2R1bGUgfSBmcm9tICdAZm9ydGF3ZXNvbWUvYW5ndWxhci1mb250YXdlc29tZSc7XHJcbmltcG9ydCB7IFRyYW5zbG9jb01vZHVsZSwgVHJhbnNsb2NvU2VydmljZSB9IGZyb20gJ0BuZ25lYXQvdHJhbnNsb2NvJztcclxuaW1wb3J0IHsgU3ViamVjdCwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcyc7XHJcblxyXG5pbXBvcnQgeyBCdXR0b25Db21wb25lbnQgfSBmcm9tICdhcmlsL3VpL2J1dHRvbic7XHJcbmltcG9ydCB7IHJlZ3VsYXJJY29ucywgc29saWRJY29ucyB9IGZyb20gJ2FyaWwvdXRpbC9saWInO1xyXG5pbXBvcnQgeyBTYWZlUGlwZSB9IGZyb20gJ2FyaWwvdXRpbC9waXBlcyc7XHJcblxyXG5pbXBvcnQgeyBMYXlvdXRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZS9hcHAubGF5b3V0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBY3Rpdml0eVR5cGVzRW51bSwgRGV0YWlsTm90aWZpY2F0aW9uVHlwZUVudW0gfSBmcm9tICcuLi8uLi9zZXJ2aWNlL2ludGVyZmFjZXMvZW51bSc7XHJcbmltcG9ydCB7IFNtc0VtYWlsQXVkaXRSZXNwb25zZURUTyB9IGZyb20gJy4uLy4uL3NlcnZpY2UvaW50ZXJmYWNlcy9pbnRlcmZhY2VzJztcclxuaW1wb3J0IHsgTm90aWZpY2F0aW9uc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlL25vdGlmaWNhdGlvbnMuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuXHRzdGFuZGFsb25lOiB0cnVlLFxyXG5cdHNlbGVjdG9yOiAnYXBwLW5vdGlmaWNhdGlvbnMtc2lkZWJhcicsXHJcblx0aW1wb3J0czogW1xyXG5cdFx0Q29tbW9uTW9kdWxlLFxyXG5cdFx0U2lkZWJhck1vZHVsZSxcclxuXHRcdFNjcm9sbFBhbmVsTW9kdWxlLFxyXG5cdFx0Q29uZmlybURpYWxvZ01vZHVsZSxcclxuXHRcdFBhZ2luYXRvck1vZHVsZSxcclxuXHRcdEJ1dHRvbkNvbXBvbmVudCxcclxuXHRcdFRyYW5zbG9jb01vZHVsZSxcclxuXHRcdFRvb2x0aXBNb2R1bGUsXHJcblx0XHRCYWRnZU1vZHVsZSxcclxuXHRcdEZvbnRBd2Vzb21lTW9kdWxlLFxyXG5cdFx0U2FmZVBpcGVcclxuXHRdLFxyXG5cdHRlbXBsYXRlVXJsOiAnLi9ub3RpZmljYXRpb25zLXNpZGViYXIuY29tcG9uZW50Lmh0bWwnLFxyXG5cdHN0eWxlVXJsczogWycuL25vdGlmaWNhdGlvbnMtc2lkZWJhci5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOb3RpZmljYXRpb25zU2lkZWJhckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblx0bm90aWZpY2F0aW9ucyA9IHNpZ25hbDxTbXNFbWFpbEF1ZGl0UmVzcG9uc2VEVE9bXT4oW10pO1xyXG5cdHNlbGVjdGVkTm90aWZpY2F0aW9uOiBTbXNFbWFpbEF1ZGl0UmVzcG9uc2VEVE8gfCBudWxsID0gbnVsbDtcclxuXHJcblx0QWN0aXZpdHlUeXBlc0VudW0gPSBBY3Rpdml0eVR5cGVzRW51bTtcclxuXHREZXRhaWxOb3RpZmljYXRpb25UeXBlRW51bSA9IERldGFpbE5vdGlmaWNhdGlvblR5cGVFbnVtO1xyXG5cclxuXHRyZWd1bGFySWNvbnMgPSByZWd1bGFySWNvbnM7XHJcblx0c29saWRJY29ucyA9IHNvbGlkSWNvbnM7XHJcblxyXG5cdG9uZU1vbnRoQWdvID0gbmV3IERhdGUobmV3IERhdGUoKS5nZXRUaW1lKCkgLSAzMCAqIDI0ICogNjAgKiA2MCAqIDEwMDApO1xyXG5cclxuXHRwcml2YXRlIHN1YmplY3RzID0ge1xyXG5cdFx0bWFya0FzUmVhZDogbmV3IFN1YmplY3Q8c3RyaW5nPigpLFxyXG5cdFx0bG9hZE5vdGlmaWNhdGlvbnM6IG5ldyBTdWJqZWN0PHZvaWQ+KClcclxuXHR9O1xyXG5cclxuXHRtYXJrQXNSZWFkU2VydmljZSA9IHRvU2lnbmFsKFxyXG5cdFx0dGhpcy5zdWJqZWN0cy5tYXJrQXNSZWFkLnBpcGUoc3dpdGNoTWFwKChpZCkgPT4gdGhpcy5ub3RpZmljYXRpb25zU2VydmljZS5tYXJrQXNSZWFkTm90aWZpY2F0aW9uKGlkKSkpXHJcblx0KTtcclxuXHJcblx0bG9hZE5vdGlmaWNhdGlvbnNTZXJ2aWNlID0gdG9TaWduYWwoXHJcblx0XHR0aGlzLnN1YmplY3RzLmxvYWROb3RpZmljYXRpb25zLnBpcGUoXHJcblx0XHRcdHN3aXRjaE1hcCgoKSA9PlxyXG5cdFx0XHRcdHRoaXMubm90aWZpY2F0aW9uc1NlcnZpY2UuZ2V0Tm90aWZpY2F0aW9ucyh7XHJcblx0XHRcdFx0XHRwYWdlcjoge1xyXG5cdFx0XHRcdFx0XHRwYWdlU2l6ZTogMTAsXHJcblx0XHRcdFx0XHRcdHBhZ2VOdW1iZXI6IDFcclxuXHRcdFx0XHRcdH0sXHJcblx0XHRcdFx0XHRzdGFydERhdGU6IHRoaXMub25lTW9udGhBZ28uZGF0ZVRvTG9uZygndGltZScpIHx8IDAsXHJcblx0XHRcdFx0XHRlbmREYXRlOiBuZXcgRGF0ZSgpLmRhdGVUb0xvbmcoJ3RpbWUnKSB8fCAwLFxyXG5cdFx0XHRcdFx0cmVhZDogZmFsc2VcclxuXHRcdFx0XHR9KVxyXG5cdFx0XHQpXHJcblx0XHQpXHJcblx0KTtcclxuXHJcblx0Y29uc3RydWN0b3IoXHJcblx0XHRwdWJsaWMgbGF5b3V0U2VydmljZTogTGF5b3V0U2VydmljZSxcclxuXHRcdHByaXZhdGUgbm90aWZpY2F0aW9uc1NlcnZpY2U6IE5vdGlmaWNhdGlvbnNTZXJ2aWNlLFxyXG5cdFx0cHJpdmF0ZSB0cmFuc2xvY29TZXJ2aWNlOiBUcmFuc2xvY29TZXJ2aWNlLFxyXG5cdFx0cHJpdmF0ZSBzYW5pdGl6ZXI6IERvbVNhbml0aXplcixcclxuXHRcdHByaXZhdGUgcm91dGVyOiBSb3V0ZXJcclxuXHQpIHtcclxuXHRcdHRoaXMuaW5pdGlhbGl6ZUVmZmVjdHMoKTtcclxuXHR9XHJcblxyXG5cdG5nT25Jbml0KCk6IHZvaWQge1xyXG5cdFx0dGhpcy5sb2FkTm90aWZpY2F0aW9ucygpO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBsb2FkTm90aWZpY2F0aW9ucygpOiB2b2lkIHtcclxuXHRcdHRoaXMuc3ViamVjdHMubG9hZE5vdGlmaWNhdGlvbnMubmV4dCgpO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBpbml0aWFsaXplRWZmZWN0cygpOiB2b2lkIHtcclxuXHRcdGVmZmVjdChcclxuXHRcdFx0KCkgPT4ge1xyXG5cdFx0XHRcdGNvbnN0IHNlcnZpY2UgPSB0aGlzLmxvYWROb3RpZmljYXRpb25zU2VydmljZSgpO1xyXG5cdFx0XHRcdGlmIChzZXJ2aWNlPy5yZXNwb25zZSkge1xyXG5cdFx0XHRcdFx0dGhpcy5ub3RpZmljYXRpb25zLnNldChzZXJ2aWNlLnJlc3BvbnNlLnJlc3VsdCk7XHJcblx0XHRcdFx0XHQvLyBVcGRhdGUgdW5yZWFkIGNvdW50IGluIGxheW91dFNlcnZpY2VcclxuXHRcdFx0XHRcdHRoaXMubGF5b3V0U2VydmljZS5zZXRVbnJlYWROb3RpZmljYXRpb25Db3VudChzZXJ2aWNlPy5yZXNwb25zZS5yZXN1bHRJbmZvLnRvdGFsSXRlbSB8fCAwKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0sXHJcblx0XHRcdHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfVxyXG5cdFx0KTtcclxuXHRcdGVmZmVjdCgoKSA9PiB7XHJcblx0XHRcdGNvbnN0IHNlcnZpY2UgPSB0aGlzLm1hcmtBc1JlYWRTZXJ2aWNlKCk7XHJcblx0XHRcdGlmIChzZXJ2aWNlPy5yZXNwb25zZSkge1xyXG5cdFx0XHRcdHRoaXMubG9hZE5vdGlmaWNhdGlvbnMoKTtcclxuXHJcblx0XHRcdFx0aWYgKHRoaXMuc2VsZWN0ZWROb3RpZmljYXRpb24/LmRldGFpbE5vdGlmaWNhdGlvblR5cGUgPT09IERldGFpbE5vdGlmaWNhdGlvblR5cGVFbnVtLlRPRE9fSVRFTSkge1xyXG5cdFx0XHRcdFx0dGhpcy5yb3V0ZXIubmF2aWdhdGUoW2BtbmcvdG9kby10YXNrcy9kZXRhaWwvJHt0aGlzLnNlbGVjdGVkTm90aWZpY2F0aW9uPy5yZWZlcmVuY2VJZH1gXSk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdGdldCB2aXNpYmxlKCk6IGJvb2xlYW4ge1xyXG5cdFx0cmV0dXJuIHRoaXMubGF5b3V0U2VydmljZS5zdGF0ZS5ub3RpZmljYXRpb25zU2lkZWJhclZpc2libGU7XHJcblx0fVxyXG5cclxuXHRzZXQgdmlzaWJsZSh2YWx1ZTogYm9vbGVhbikge1xyXG5cdFx0dGhpcy5sYXlvdXRTZXJ2aWNlLnN0YXRlLm5vdGlmaWNhdGlvbnNTaWRlYmFyVmlzaWJsZSA9IHZhbHVlO1xyXG5cdH1cclxuXHJcblx0bWFya05vdGlmaWNhdGlvbkFzUmVhZChub3RpZmljYXRpb246IFNtc0VtYWlsQXVkaXRSZXNwb25zZURUTyk6IHZvaWQge1xyXG5cdFx0dGhpcy5zZWxlY3RlZE5vdGlmaWNhdGlvbiA9IG5vdGlmaWNhdGlvbjtcclxuXHRcdHRoaXMuc3ViamVjdHMubWFya0FzUmVhZC5uZXh0KG5vdGlmaWNhdGlvbi5pZCk7XHJcblx0XHR0aGlzLnZpc2libGUgPSBmYWxzZTtcclxuXHJcblx0XHRpZiAobm90aWZpY2F0aW9uPy5kZXRhaWxOb3RpZmljYXRpb25UeXBlID09PSBEZXRhaWxOb3RpZmljYXRpb25UeXBlRW51bS5UT0RPX0lURU0pIHtcclxuXHRcdFx0dGhpcy5yb3V0ZXIubmF2aWdhdGUoW2BtbmcvdG9kby10YXNrcy9kZXRhaWwvJHtub3RpZmljYXRpb24/LnJlZmVyZW5jZUlkfWBdKTtcclxuXHRcdH0gZWxzZSBpZiAobm90aWZpY2F0aW9uPy5kZXRhaWxOb3RpZmljYXRpb25UeXBlID09PSBEZXRhaWxOb3RpZmljYXRpb25UeXBlRW51bS5CQVRDSF9KT0IpIHtcclxuXHRcdFx0dGhpcy5yb3V0ZXIubmF2aWdhdGUoW2BtbmcvYnVsay1vcGVyYXRpb25zLyR7bm90aWZpY2F0aW9uPy5yZWZlcmVuY2VJZH1gXSk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRtYXJrTm90aWZpY2F0aW9uQXNSZWFkT25Eb3RJY29uKG5vdGlmaWNhdGlvbjogU21zRW1haWxBdWRpdFJlc3BvbnNlRFRPKTogdm9pZCB7XHJcblx0XHRpZiAoIW5vdGlmaWNhdGlvbi5yZWFkKSB7XHJcblx0XHRcdHRoaXMuc3ViamVjdHMubWFya0FzUmVhZC5uZXh0KG5vdGlmaWNhdGlvbi5pZCk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHR0cmFja0J5Tm90aWZpY2F0aW9uSWQoaW5kZXg6IG51bWJlciwgbm90aWZpY2F0aW9uOiBTbXNFbWFpbEF1ZGl0UmVzcG9uc2VEVE8pOiBzdHJpbmcge1xyXG5cdFx0cmV0dXJuIG5vdGlmaWNhdGlvbi5pZDtcclxuXHR9XHJcblxyXG5cdGdldE5vdGlmaWNhdGlvblRpdGxlKG5vdGlmaWNhdGlvbjogU21zRW1haWxBdWRpdFJlc3BvbnNlRFRPKTogc3RyaW5nIHtcclxuXHRcdHJldHVybiBub3RpZmljYXRpb24udGVtcGxhdGVUaXRsZSB8fCBub3RpZmljYXRpb24udGVtcGxhdGVDb2RlIHx8ICcnO1xyXG5cdH1cclxuXHJcblx0Z2V0Tm90aWZpY2F0aW9uQ29udGVudChub3RpZmljYXRpb246IFNtc0VtYWlsQXVkaXRSZXNwb25zZURUTyk6IHN0cmluZyB7XHJcblx0XHRjb25zdCB0cnVuY2F0ZWQgPVxyXG5cdFx0XHRub3RpZmljYXRpb24uY29udGVudD8ubGVuZ3RoISA+IDIwMCA/IG5vdGlmaWNhdGlvbi5jb250ZW50Py5zdWJzdHJpbmcoMCwgMjAwKSArICcuLi4nIDogbm90aWZpY2F0aW9uLmNvbnRlbnQ7XHJcblx0XHRyZXR1cm4gdHJ1bmNhdGVkIHx8ICcnO1xyXG5cdH1cclxuXHJcblx0Z2V0U2FuaXRpemVkSHRtbENvbnRlbnQobm90aWZpY2F0aW9uOiBTbXNFbWFpbEF1ZGl0UmVzcG9uc2VEVE8pOiBTYWZlSHRtbCB7XHJcblx0XHRjb25zdCBjb250ZW50ID0gbm90aWZpY2F0aW9uLmNvbnRlbnQgfHwgJyc7XHJcblx0XHRyZXR1cm4gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwoY29udGVudCk7XHJcblx0fVxyXG5cclxuXHRmb3JtYXROb3RpZmljYXRpb25EYXRlKHN0YXJ0RGF0ZTogbnVtYmVyIHwgdW5kZWZpbmVkKTogc3RyaW5nIHtcclxuXHRcdGlmICghc3RhcnREYXRlKSB7XHJcblx0XHRcdHJldHVybiAnJztcclxuXHRcdH1cclxuXHRcdGNvbnN0IGRhdGVTdHIgPSBzdGFydERhdGUudG9TdHJpbmcoKTtcclxuXHRcdGNvbnN0IHllYXIgPSBwYXJzZUludChkYXRlU3RyLnN1YnN0cmluZygwLCA0KSk7XHJcblx0XHRjb25zdCBtb250aCA9IHBhcnNlSW50KGRhdGVTdHIuc3Vic3RyaW5nKDQsIDYpKSAtIDE7XHJcblx0XHRjb25zdCBkYXkgPSBwYXJzZUludChkYXRlU3RyLnN1YnN0cmluZyg2LCA4KSk7XHJcblx0XHRjb25zdCBob3VyID0gcGFyc2VJbnQoZGF0ZVN0ci5zdWJzdHJpbmcoOCwgMTApKTtcclxuXHRcdGNvbnN0IG1pbnV0ZSA9IHBhcnNlSW50KGRhdGVTdHIuc3Vic3RyaW5nKDEwLCAxMikpO1xyXG5cdFx0Y29uc3Qgc2Vjb25kID0gcGFyc2VJbnQoZGF0ZVN0ci5zdWJzdHJpbmcoMTIsIDE0KSk7XHJcblxyXG5cdFx0Y29uc3Qgbm90aWZpY2F0aW9uRGF0ZSA9IG5ldyBEYXRlKHllYXIsIG1vbnRoLCBkYXksIGhvdXIsIG1pbnV0ZSwgc2Vjb25kKTtcclxuXHRcdGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XHJcblx0XHRjb25zdCBkaWZmTXMgPSBub3cuZ2V0VGltZSgpIC0gbm90aWZpY2F0aW9uRGF0ZS5nZXRUaW1lKCk7XHJcblxyXG5cdFx0Y29uc3QgZGlmZk1pbnV0ZXMgPSBNYXRoLmZsb29yKGRpZmZNcyAvICgxMDAwICogNjApKTtcclxuXHRcdGNvbnN0IGRpZmZIb3VycyA9IE1hdGguZmxvb3IoZGlmZk1zIC8gKDEwMDAgKiA2MCAqIDYwKSk7XHJcblx0XHRjb25zdCBkaWZmRGF5cyA9IE1hdGguZmxvb3IoZGlmZk1zIC8gKDEwMDAgKiA2MCAqIDYwICogMjQpKTtcclxuXHRcdGNvbnN0IGRpZmZXZWVrcyA9IE1hdGguZmxvb3IoZGlmZkRheXMgLyA3KTtcclxuXHRcdGNvbnN0IGRpZmZNb250aHMgPSBNYXRoLmZsb29yKGRpZmZEYXlzIC8gMzApO1xyXG5cclxuXHRcdGlmIChkaWZmTWludXRlcyA8IDEpIHtcclxuXHRcdFx0cmV0dXJuIHRoaXMudHJhbnNsb2NvU2VydmljZS50cmFuc2xhdGUoJ25vdGlmaWNhdGlvbnMudGltZS5qdXN0Tm93Jyk7XHJcblx0XHR9IGVsc2UgaWYgKGRpZmZNaW51dGVzIDwgNjApIHtcclxuXHRcdFx0cmV0dXJuIHRoaXMudHJhbnNsb2NvU2VydmljZS50cmFuc2xhdGUoJ25vdGlmaWNhdGlvbnMudGltZS5taW51dGVzQWdvJywgeyBjb3VudDogZGlmZk1pbnV0ZXMgfSk7XHJcblx0XHR9IGVsc2UgaWYgKGRpZmZIb3VycyA8IDI0KSB7XHJcblx0XHRcdHJldHVybiB0aGlzLnRyYW5zbG9jb1NlcnZpY2UudHJhbnNsYXRlKCdub3RpZmljYXRpb25zLnRpbWUuaG91cnNBZ28nLCB7IGNvdW50OiBkaWZmSG91cnMgfSk7XHJcblx0XHR9IGVsc2UgaWYgKGRpZmZEYXlzIDwgNykge1xyXG5cdFx0XHRyZXR1cm4gdGhpcy50cmFuc2xvY29TZXJ2aWNlLnRyYW5zbGF0ZSgnbm90aWZpY2F0aW9ucy50aW1lLmRheXNBZ28nLCB7IGNvdW50OiBkaWZmRGF5cyB9KTtcclxuXHRcdH0gZWxzZSBpZiAoZGlmZldlZWtzIDwgNCkge1xyXG5cdFx0XHRyZXR1cm4gdGhpcy50cmFuc2xvY29TZXJ2aWNlLnRyYW5zbGF0ZSgnbm90aWZpY2F0aW9ucy50aW1lLndlZWtzQWdvJywgeyBjb3VudDogZGlmZldlZWtzIH0pO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0cmV0dXJuIHRoaXMudHJhbnNsb2NvU2VydmljZS50cmFuc2xhdGUoJ25vdGlmaWNhdGlvbnMudGltZS5tb250aHNBZ28nLCB7IGNvdW50OiBkaWZmTW9udGhzIH0pO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0bmF2aWdhdGVUb0FsbE5vdGlmaWNhdGlvbnMoKTogdm9pZCB7XHJcblx0XHR0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJ21uZy9jb250cm9sLW1hbmFnZW1lbnQvc21zLWVtYWlsLWF1ZGl0J10pO1xyXG5cdFx0dGhpcy52aXNpYmxlID0gZmFsc2U7XHJcblx0fVxyXG59XHJcbiIsIjxwLXNpZGViYXJcclxuXHRbKHZpc2libGUpXT1cInZpc2libGVcIlxyXG5cdHBvc2l0aW9uPVwicmlnaHRcIlxyXG5cdFt0cmFuc2l0aW9uT3B0aW9uc109XCInLjNzIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpJ1wiXHJcblx0c3R5bGVDbGFzcz1cImxheW91dC1ub3RpZmljYXRpb25zLXNpZGViYXIgdy1mdWxsIHNtOnctMzByZW1cIlxyXG5cdCp0cmFuc2xvY289XCJsZXQgdDsgcmVhZDogJ25vdGlmaWNhdGlvbnMnXCI+XHJcblx0PG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImhlYWRlclwiPlxyXG5cdFx0PGRpdiBjbGFzcz1cImZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1iZXR3ZWVuIHctZnVsbFwiPlxyXG5cdFx0XHQ8ZGl2IGNsYXNzPVwiZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuXHRcdFx0XHQ8aSBjbGFzcz1cInBpIHBpLWJlbGwgdGV4dC1wcmltYXJ5IHRleHQteGxcIj48L2k+XHJcblx0XHRcdFx0PHNwYW4gY2xhc3M9XCJmb250LWJvbGQgdGV4dC1sZ1wiPnt7IHQoJ3RpdGxlJykgfX08L3NwYW4+XHJcblx0XHRcdDwvZGl2PlxyXG5cdFx0PC9kaXY+XHJcblx0PC9uZy10ZW1wbGF0ZT5cclxuXHJcblx0PGRpdiBjbGFzcz1cIm5vdGlmaWNhdGlvbnMtY29udGVudFwiPlxyXG5cdFx0QGlmIChub3RpZmljYXRpb25zKCkubGVuZ3RoID4gMCkge1xyXG5cdFx0XHQ8ZGl2IGNsYXNzPVwibm90aWZpY2F0aW9ucy1saXN0XCI+XHJcblx0XHRcdFx0PHAtc2Nyb2xsUGFuZWwgW3N0eWxlXT1cInsgd2lkdGg6ICcxMDAlJywgaGVpZ2h0OiAnMTAwJScgfVwiPlxyXG5cdFx0XHRcdFx0PGRpdiBjbGFzcz1cIm5vdGlmaWNhdGlvbnMtaXRlbXNcIj5cclxuXHRcdFx0XHRcdFx0QGZvciAobm90aWZpY2F0aW9uIG9mIG5vdGlmaWNhdGlvbnMoKTsgdHJhY2sgdHJhY2tCeU5vdGlmaWNhdGlvbklkKCRpbmRleCwgbm90aWZpY2F0aW9uKSkge1xyXG5cdFx0XHRcdFx0XHRcdDxkaXZcclxuXHRcdFx0XHRcdFx0XHRcdGNsYXNzPVwibm90aWZpY2F0aW9uLWl0ZW1cIlxyXG5cdFx0XHRcdFx0XHRcdFx0W2NsYXNzLnVucmVhZC1pdGVtXT1cIiFub3RpZmljYXRpb24ucmVhZFwiXHJcblx0XHRcdFx0XHRcdFx0XHQoY2xpY2spPVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdChcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRub3RpZmljYXRpb24/LmRldGFpbE5vdGlmaWNhdGlvblR5cGUgPT09IERldGFpbE5vdGlmaWNhdGlvblR5cGVFbnVtLlRPRE9fSVRFTSB8fFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdG5vdGlmaWNhdGlvbj8uZGV0YWlsTm90aWZpY2F0aW9uVHlwZSA9PT0gRGV0YWlsTm90aWZpY2F0aW9uVHlwZUVudW0uQkFUQ0hfSk9CXHJcblx0XHRcdFx0XHRcdFx0XHRcdCkgP1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdG1hcmtOb3RpZmljYXRpb25Bc1JlYWQobm90aWZpY2F0aW9uKVxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ6XHRudWxsXHJcblx0XHRcdFx0XHRcdFx0XHRcIj5cclxuXHRcdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJpdGVtLWNvbnRlbnRcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cIml0ZW0taGVhZGVyXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cIml0ZW0tdGl0bGVcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdEBpZiAobm90aWZpY2F0aW9uLnR5cGUgPT09IEFjdGl2aXR5VHlwZXNFbnVtLlNNUykge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwibm90aWZpY2F0aW9uLWljb24gc21zLWljb25cIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8ZmEtaWNvbiBbaWNvbl09XCJyZWd1bGFySWNvbnMuZmFNZXNzYWdlXCIgLz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9IEBlbHNlIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0QGlmICghbm90aWZpY2F0aW9uLnJlYWQpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwibm90aWZpY2F0aW9uLWljb24gZW1haWwtaWNvbiB1bnJlYWRcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxmYS1pY29uIFtpY29uXT1cInJlZ3VsYXJJY29ucy5mYUVudmVsb3BlXCIgLz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSBAZWxzZSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cIm5vdGlmaWNhdGlvbi1pY29uIGVtYWlsLWljb24gcmVhZFwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGZhLWljb24gW2ljb25dPVwicmVndWxhckljb25zLmZhRW52ZWxvcGVPcGVuXCIgLz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHAgY2xhc3M9XCJ0aXRsZS10ZXh0IG1sLTJcIj57eyBnZXROb3RpZmljYXRpb25UaXRsZShub3RpZmljYXRpb24pIH19PC9wPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzPVwibm90aWZpY2F0aW9uLWRhdGVcIj57eyBmb3JtYXROb3RpZmljYXRpb25EYXRlKG5vdGlmaWNhdGlvbi5zZW5kaW5nRGF0ZSkgfX08L3NwYW4+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0QGlmICghbm90aWZpY2F0aW9uLnJlYWQpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxmYS1pY29uXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFtpY29uXT1cInNvbGlkSWNvbnMuZmFDaXJjbGVcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjbGFzcz1cInVucmVhZC1kb3RcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbcFRvb2x0aXBdPVwidCgnbWFya0FzUmVhZCcpXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dG9vbHRpcFBvc2l0aW9uPVwibGVmdFwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdChjbGljayk9XCJtYXJrTm90aWZpY2F0aW9uQXNSZWFkT25Eb3RJY29uKG5vdGlmaWNhdGlvbik7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9mYS1pY29uPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJpdGVtLW1ldGFcIj48L2Rpdj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0QGlmIChnZXROb3RpZmljYXRpb25Db250ZW50KG5vdGlmaWNhdGlvbikpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwiaXRlbS1jb250ZW50LXByZXZpZXdcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdEBpZiAobm90aWZpY2F0aW9uLnR5cGUgPT09IEFjdGl2aXR5VHlwZXNFbnVtLkVNQUlMKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxkaXYgW2lubmVySFRNTF09XCJub3RpZmljYXRpb24uY29udGVudCB8IHNhZmU6ICdodG1sJ1wiIGNsYXNzPVwiaHRtbC1wcmV2aWV3IGxpbmUtY2xhbXAtM1wiPjwvZGl2PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSBAZWxzZSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxwIGNsYXNzPVwidGV4dC1jb250ZW50XCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0e3sgZ2V0Tm90aWZpY2F0aW9uQ29udGVudChub3RpZmljYXRpb24pIH19XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvcD5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdDwvcC1zY3JvbGxQYW5lbD5cclxuXHRcdFx0PC9kaXY+XHJcblx0XHR9IEBlbHNlIHtcclxuXHRcdFx0PGRpdiBjbGFzcz1cImVtcHR5LXN0YXRlXCI+XHJcblx0XHRcdFx0PGRpdiBjbGFzcz1cImVtcHR5LWNvbnRlbnRcIj5cclxuXHRcdFx0XHRcdDxpIGNsYXNzPVwicGkgcGktYmVsbCBlbXB0eS1pY29uXCI+PC9pPlxyXG5cdFx0XHRcdFx0PGgzIGNsYXNzPVwiZW1wdHktdGl0bGVcIj57eyB0KCdub05vdGlmaWNhdGlvbnMnKSB9fTwvaDM+XHJcblx0XHRcdFx0XHQ8cCBjbGFzcz1cImVtcHR5LW1lc3NhZ2VcIj57eyB0KCdub05vdGlmaWNhdGlvbnNEZXNjcmlwdGlvbicpIH19PC9wPlxyXG5cdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHQ8L2Rpdj5cclxuXHRcdH1cclxuXHJcblx0XHQ8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIHAtMiBib3JkZXItdG9wLTEgc3VyZmFjZS1ib3JkZXJcIj5cclxuXHRcdFx0PGFyaWwtYnV0dG9uXHJcblx0XHRcdFx0W2xhYmVsXT1cInQoJ2FsbFNob3cnKVwiXHJcblx0XHRcdFx0aWNvbj1cIkVYVEVSTkFMX0xJTktcIlxyXG5cdFx0XHRcdGNvbG9yPVwicHJpbWFyeVwiXHJcblx0XHRcdFx0c2l6ZT1cIm1kXCJcclxuXHRcdFx0XHQoY2xpY2tFdmVudCk9XCJuYXZpZ2F0ZVRvQWxsTm90aWZpY2F0aW9ucygpXCI+XHJcblx0XHRcdDwvYXJpbC1idXR0b24+XHJcblx0XHQ8L2Rpdj5cclxuXHQ8L2Rpdj5cclxuXHJcblx0PHAtY29uZmlybURpYWxvZz48L3AtY29uZmlybURpYWxvZz5cclxuPC9wLXNpZGViYXI+XHJcbiJdfQ==
177
+ }], ctorParameters: () => [{ type: i1.LayoutService }, { type: i2.NotificationsService }, { type: i3.TranslocoService }, { type: i4.Router }, { type: i5.KeycloakService }] });
178
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9ucy1zaWRlYmFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FyaWwvdGhlbWUvbGF5b3V0L2FwcC9ub3RpZmljYXRpb25zL25vdGlmaWNhdGlvbnMtc2lkZWJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcmlsL3RoZW1lL2xheW91dC9hcHAvbm90aWZpY2F0aW9ucy9ub3RpZmljYXRpb25zLXNpZGViYXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFHdEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVoRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsZUFBZSxFQUFvQixNQUFNLG1CQUFtQixDQUFDO0FBRXRFLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTFDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztB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UUFDN0YsQ0FBQzthQUFNLENBQUM7WUFDUCxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsOEJBQThCLEVBQUUsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztRQUMvRixDQUFDO0lBQ0YsQ0FBQztJQUVELDBCQUEwQjtRQUN6QixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLHdDQUF3QyxDQUFDLENBQUMsQ0FBQztRQUNqRSxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztJQUN0QixDQUFDOzhHQWhLVyw2QkFBNkI7a0dBQTdCLDZCQUE2QixxRkM3QzFDLHNvSkF3R0EsMGtIRDFFRSxZQUFZLDhCQUNaLGFBQWEsbWRBQ2IsaUJBQWlCLCtJQUNqQixtQkFBbUIsb21CQUNuQixlQUFlLCtCQUNmLGVBQWUsK0xBQ2YsZUFBZSxnT0FDZixhQUFhLHNYQUNiLFdBQVcsOEJBQ1gsaUJBQWlCLCtSQUNqQixRQUFROzsyRkFLRyw2QkFBNkI7a0JBbkJ6QyxTQUFTO2lDQUNHLElBQUksWUFDTiwyQkFBMkIsV0FDNUI7d0JBQ1IsWUFBWTt3QkFDWixhQUFhO3dCQUNiLGlCQUFpQjt3QkFDakIsbUJBQW1CO3dCQUNuQixlQUFlO3dCQUNmLGVBQWU7d0JBQ2YsZUFBZTt3QkFDZixhQUFhO3dCQUNiLFdBQVc7d0JBQ1gsaUJBQWlCO3dCQUNqQixRQUFRO3FCQUNSIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIGVmZmVjdCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IHRvU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5cclxuaW1wb3J0IHsgQmFkZ2VNb2R1bGUgfSBmcm9tICdwcmltZW5nL2JhZGdlJztcclxuaW1wb3J0IHsgQ29uZmlybURpYWxvZ01vZHVsZSB9IGZyb20gJ3ByaW1lbmcvY29uZmlybWRpYWxvZyc7XHJcbmltcG9ydCB7IFBhZ2luYXRvck1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvcGFnaW5hdG9yJztcclxuaW1wb3J0IHsgU2Nyb2xsUGFuZWxNb2R1bGUgfSBmcm9tICdwcmltZW5nL3Njcm9sbHBhbmVsJztcclxuaW1wb3J0IHsgU2lkZWJhck1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvc2lkZWJhcic7XHJcbmltcG9ydCB7IFRvb2x0aXBNb2R1bGUgfSBmcm9tICdwcmltZW5nL3Rvb2x0aXAnO1xyXG5cclxuaW1wb3J0IHsgRm9udEF3ZXNvbWVNb2R1bGUgfSBmcm9tICdAZm9ydGF3ZXNvbWUvYW5ndWxhci1mb250YXdlc29tZSc7XHJcbmltcG9ydCB7IFRyYW5zbG9jb01vZHVsZSwgVHJhbnNsb2NvU2VydmljZSB9IGZyb20gJ0BuZ25lYXQvdHJhbnNsb2NvJztcclxuaW1wb3J0IHsgS2V5Y2xvYWtTZXJ2aWNlIH0gZnJvbSAna2V5Y2xvYWstYW5ndWxhcic7XHJcbmltcG9ydCB7IFN1YmplY3QsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMnO1xyXG5cclxuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnYXJpbC91aS9idXR0b24nO1xyXG5pbXBvcnQgeyByZWd1bGFySWNvbnMsIHNvbGlkSWNvbnMgfSBmcm9tICdhcmlsL3V0aWwvbGliJztcclxuaW1wb3J0IHsgU2FmZVBpcGUgfSBmcm9tICdhcmlsL3V0aWwvcGlwZXMnO1xyXG5cclxuaW1wb3J0IHsgTGF5b3V0U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2UvYXBwLmxheW91dC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQWN0aXZpdHlUeXBlc0VudW0sIERldGFpbE5vdGlmaWNhdGlvblR5cGVFbnVtIH0gZnJvbSAnLi4vLi4vc2VydmljZS9pbnRlcmZhY2VzL2VudW0nO1xyXG5pbXBvcnQgeyBTbXNFbWFpbEF1ZGl0UmVzcG9uc2VEVE8gfSBmcm9tICcuLi8uLi9zZXJ2aWNlL2ludGVyZmFjZXMvaW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7IE5vdGlmaWNhdGlvbnNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZS9ub3RpZmljYXRpb25zLnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcblx0c3RhbmRhbG9uZTogdHJ1ZSxcclxuXHRzZWxlY3RvcjogJ2FwcC1ub3RpZmljYXRpb25zLXNpZGViYXInLFxyXG5cdGltcG9ydHM6IFtcclxuXHRcdENvbW1vbk1vZHVsZSxcclxuXHRcdFNpZGViYXJNb2R1bGUsXHJcblx0XHRTY3JvbGxQYW5lbE1vZHVsZSxcclxuXHRcdENvbmZpcm1EaWFsb2dNb2R1bGUsXHJcblx0XHRQYWdpbmF0b3JNb2R1bGUsXHJcblx0XHRCdXR0b25Db21wb25lbnQsXHJcblx0XHRUcmFuc2xvY29Nb2R1bGUsXHJcblx0XHRUb29sdGlwTW9kdWxlLFxyXG5cdFx0QmFkZ2VNb2R1bGUsXHJcblx0XHRGb250QXdlc29tZU1vZHVsZSxcclxuXHRcdFNhZmVQaXBlXHJcblx0XSxcclxuXHR0ZW1wbGF0ZVVybDogJy4vbm90aWZpY2F0aW9ucy1zaWRlYmFyLmNvbXBvbmVudC5odG1sJyxcclxuXHRzdHlsZVVybHM6IFsnLi9ub3RpZmljYXRpb25zLXNpZGViYXIuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgTm90aWZpY2F0aW9uc1NpZGViYXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cdG5vdGlmaWNhdGlvbnMgPSBzaWduYWw8U21zRW1haWxBdWRpdFJlc3BvbnNlRFRPW10+KFtdKTtcclxuXHRzZWxlY3RlZE5vdGlmaWNhdGlvbjogU21zRW1haWxBdWRpdFJlc3BvbnNlRFRPIHwgbnVsbCA9IG51bGw7XHJcblxyXG5cdEFjdGl2aXR5VHlwZXNFbnVtID0gQWN0aXZpdHlUeXBlc0VudW07XHJcblx0RGV0YWlsTm90aWZpY2F0aW9uVHlwZUVudW0gPSBEZXRhaWxOb3RpZmljYXRpb25UeXBlRW51bTtcclxuXHJcblx0cmVndWxhckljb25zID0gcmVndWxhckljb25zO1xyXG5cdHNvbGlkSWNvbnMgPSBzb2xpZEljb25zO1xyXG5cclxuXHRvbmVNb250aEFnbyA9IG5ldyBEYXRlKG5ldyBEYXRlKCkuZ2V0VGltZSgpIC0gMzAgKiAyNCAqIDYwICogNjAgKiAxMDAwKTtcclxuXHJcblx0cHJpdmF0ZSBzdWJqZWN0cyA9IHtcclxuXHRcdG1hcmtBc1JlYWQ6IG5ldyBTdWJqZWN0PHN0cmluZz4oKSxcclxuXHRcdGxvYWROb3RpZmljYXRpb25zOiBuZXcgU3ViamVjdDx2b2lkPigpXHJcblx0fTtcclxuXHJcblx0bWFya0FzUmVhZFNlcnZpY2UgPSB0b1NpZ25hbChcclxuXHRcdHRoaXMuc3ViamVjdHMubWFya0FzUmVhZC5waXBlKHN3aXRjaE1hcCgoaWQpID0+IHRoaXMubm90aWZpY2F0aW9uc1NlcnZpY2UubWFya0FzUmVhZE5vdGlmaWNhdGlvbihpZCkpKVxyXG5cdCk7XHJcblxyXG5cdGxvYWROb3RpZmljYXRpb25zU2VydmljZSA9IHRvU2lnbmFsKFxyXG5cdFx0dGhpcy5zdWJqZWN0cy5sb2FkTm90aWZpY2F0aW9ucy5waXBlKFxyXG5cdFx0XHRzd2l0Y2hNYXAoKCkgPT5cclxuXHRcdFx0XHR0aGlzLm5vdGlmaWNhdGlvbnNTZXJ2aWNlLmdldE5vdGlmaWNhdGlvbnMoe1xyXG5cdFx0XHRcdFx0cGFnZXI6IHtcclxuXHRcdFx0XHRcdFx0cGFnZVNpemU6IDEwLFxyXG5cdFx0XHRcdFx0XHRwYWdlTnVtYmVyOiAxXHJcblx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0c3RhcnREYXRlOiB0aGlzLm9uZU1vbnRoQWdvLmRhdGVUb0xvbmcoJ3RpbWUnKSB8fCAwLFxyXG5cdFx0XHRcdFx0ZW5kRGF0ZTogbmV3IERhdGUoKS5kYXRlVG9Mb25nKCd0aW1lJykgfHwgMCxcclxuXHRcdFx0XHRcdHJlYWQ6IGZhbHNlLFxyXG5cdFx0XHRcdFx0dXNlcm5hbWU6IHRoaXMua2V5Y2xvYWsuZ2V0VXNlcm5hbWUoKVxyXG5cdFx0XHRcdH0pXHJcblx0XHRcdClcclxuXHRcdClcclxuXHQpO1xyXG5cclxuXHRjb25zdHJ1Y3RvcihcclxuXHRcdHB1YmxpYyBsYXlvdXRTZXJ2aWNlOiBMYXlvdXRTZXJ2aWNlLFxyXG5cdFx0cHJpdmF0ZSByZWFkb25seSBub3RpZmljYXRpb25zU2VydmljZTogTm90aWZpY2F0aW9uc1NlcnZpY2UsXHJcblx0XHRwcml2YXRlIHJlYWRvbmx5IHRyYW5zbG9jb1NlcnZpY2U6IFRyYW5zbG9jb1NlcnZpY2UsXHJcblx0XHRwcml2YXRlIHJlYWRvbmx5IHJvdXRlcjogUm91dGVyLFxyXG5cdFx0cHJpdmF0ZSByZWFkb25seSBrZXljbG9hazogS2V5Y2xvYWtTZXJ2aWNlXHJcblx0KSB7XHJcblx0XHR0aGlzLmluaXRpYWxpemVFZmZlY3RzKCk7XHJcblx0fVxyXG5cclxuXHRuZ09uSW5pdCgpOiB2b2lkIHtcclxuXHRcdHRoaXMubG9hZE5vdGlmaWNhdGlvbnMoKTtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgbG9hZE5vdGlmaWNhdGlvbnMoKTogdm9pZCB7XHJcblx0XHR0aGlzLnN1YmplY3RzLmxvYWROb3RpZmljYXRpb25zLm5leHQoKTtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgaW5pdGlhbGl6ZUVmZmVjdHMoKTogdm9pZCB7XHJcblx0XHRlZmZlY3QoXHJcblx0XHRcdCgpID0+IHtcclxuXHRcdFx0XHRjb25zdCBzZXJ2aWNlID0gdGhpcy5sb2FkTm90aWZpY2F0aW9uc1NlcnZpY2UoKTtcclxuXHRcdFx0XHRpZiAoc2VydmljZT8ucmVzcG9uc2UpIHtcclxuXHRcdFx0XHRcdHRoaXMubm90aWZpY2F0aW9ucy5zZXQoc2VydmljZS5yZXNwb25zZS5yZXN1bHQpO1xyXG5cdFx0XHRcdFx0Ly8gVXBkYXRlIHVucmVhZCBjb3VudCBpbiBsYXlvdXRTZXJ2aWNlXHJcblx0XHRcdFx0XHR0aGlzLmxheW91dFNlcnZpY2Uuc2V0VW5yZWFkTm90aWZpY2F0aW9uQ291bnQoc2VydmljZT8ucmVzcG9uc2UucmVzdWx0SW5mby50b3RhbEl0ZW0gfHwgMCk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9LFxyXG5cdFx0XHR7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH1cclxuXHRcdCk7XHJcblx0XHRlZmZlY3QoKCkgPT4ge1xyXG5cdFx0XHRjb25zdCBzZXJ2aWNlID0gdGhpcy5tYXJrQXNSZWFkU2VydmljZSgpO1xyXG5cdFx0XHRpZiAoc2VydmljZT8ucmVzcG9uc2UpIHtcclxuXHRcdFx0XHR0aGlzLmxvYWROb3RpZmljYXRpb25zKCk7XHJcblxyXG5cdFx0XHRcdGlmICh0aGlzLnNlbGVjdGVkTm90aWZpY2F0aW9uPy5kZXRhaWxOb3RpZmljYXRpb25UeXBlID09PSBEZXRhaWxOb3RpZmljYXRpb25UeXBlRW51bS5UT0RPX0lURU0pIHtcclxuXHRcdFx0XHRcdHRoaXMucm91dGVyLm5hdmlnYXRlKFtgbW5nL3RvZG8tdGFza3MvZGV0YWlsLyR7dGhpcy5zZWxlY3RlZE5vdGlmaWNhdGlvbj8ucmVmZXJlbmNlSWR9YF0pO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHRnZXQgdmlzaWJsZSgpOiBib29sZWFuIHtcclxuXHRcdHJldHVybiB0aGlzLmxheW91dFNlcnZpY2Uuc3RhdGUubm90aWZpY2F0aW9uc1NpZGViYXJWaXNpYmxlO1xyXG5cdH1cclxuXHJcblx0c2V0IHZpc2libGUodmFsdWU6IGJvb2xlYW4pIHtcclxuXHRcdHRoaXMubGF5b3V0U2VydmljZS5zdGF0ZS5ub3RpZmljYXRpb25zU2lkZWJhclZpc2libGUgPSB2YWx1ZTtcclxuXHR9XHJcblxyXG5cdG1hcmtOb3RpZmljYXRpb25Bc1JlYWQobm90aWZpY2F0aW9uOiBTbXNFbWFpbEF1ZGl0UmVzcG9uc2VEVE8pOiB2b2lkIHtcclxuXHRcdHRoaXMuc2VsZWN0ZWROb3RpZmljYXRpb24gPSBub3RpZmljYXRpb247XHJcblx0XHR0aGlzLnN1YmplY3RzLm1hcmtBc1JlYWQubmV4dChub3RpZmljYXRpb24uaWQpO1xyXG5cdFx0dGhpcy52aXNpYmxlID0gZmFsc2U7XHJcblxyXG5cdFx0aWYgKG5vdGlmaWNhdGlvbj8uZGV0YWlsTm90aWZpY2F0aW9uVHlwZSA9PT0gRGV0YWlsTm90aWZpY2F0aW9uVHlwZUVudW0uVE9ET19JVEVNKSB7XHJcblx0XHRcdHRoaXMucm91dGVyLm5hdmlnYXRlKFtgbW5nL3RvZG8tdGFza3MvZGV0YWlsLyR7bm90aWZpY2F0aW9uPy5yZWZlcmVuY2VJZH1gXSk7XHJcblx0XHR9IGVsc2UgaWYgKG5vdGlmaWNhdGlvbj8uZGV0YWlsTm90aWZpY2F0aW9uVHlwZSA9PT0gRGV0YWlsTm90aWZpY2F0aW9uVHlwZUVudW0uQkFUQ0hfSk9CKSB7XHJcblx0XHRcdHRoaXMucm91dGVyLm5hdmlnYXRlKFtgbW5nL2J1bGstb3BlcmF0aW9ucy8ke25vdGlmaWNhdGlvbj8ucmVmZXJlbmNlSWR9YF0pO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0bWFya05vdGlmaWNhdGlvbkFzUmVhZE9uRG90SWNvbihub3RpZmljYXRpb246IFNtc0VtYWlsQXVkaXRSZXNwb25zZURUTyk6IHZvaWQge1xyXG5cdFx0aWYgKCFub3RpZmljYXRpb24ucmVhZCkge1xyXG5cdFx0XHR0aGlzLnN1YmplY3RzLm1hcmtBc1JlYWQubmV4dChub3RpZmljYXRpb24uaWQpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0dHJhY2tCeU5vdGlmaWNhdGlvbklkKGluZGV4OiBudW1iZXIsIG5vdGlmaWNhdGlvbjogU21zRW1haWxBdWRpdFJlc3BvbnNlRFRPKTogc3RyaW5nIHtcclxuXHRcdHJldHVybiBub3RpZmljYXRpb24uaWQ7XHJcblx0fVxyXG5cclxuXHRnZXROb3RpZmljYXRpb25UaXRsZShub3RpZmljYXRpb246IFNtc0VtYWlsQXVkaXRSZXNwb25zZURUTyk6IHN0cmluZyB7XHJcblx0XHRyZXR1cm4gbm90aWZpY2F0aW9uLnRlbXBsYXRlVGl0bGUgfHwgbm90aWZpY2F0aW9uLnRlbXBsYXRlQ29kZSB8fCAnJztcclxuXHR9XHJcblxyXG5cdGdldE5vdGlmaWNhdGlvbkNvbnRlbnQobm90aWZpY2F0aW9uOiBTbXNFbWFpbEF1ZGl0UmVzcG9uc2VEVE8pOiBzdHJpbmcge1xyXG5cdFx0Y29uc3QgdHJ1bmNhdGVkID1cclxuXHRcdFx0bm90aWZpY2F0aW9uLmNvbnRlbnQ/Lmxlbmd0aCEgPiAyMDAgPyBub3RpZmljYXRpb24uY29udGVudD8uc3Vic3RyaW5nKDAsIDIwMCkgKyAnLi4uJyA6IG5vdGlmaWNhdGlvbi5jb250ZW50O1xyXG5cdFx0cmV0dXJuIHRydW5jYXRlZCB8fCAnJztcclxuXHR9XHJcblxyXG5cdGZvcm1hdE5vdGlmaWNhdGlvbkRhdGUoc3RhcnREYXRlOiBudW1iZXIgfCB1bmRlZmluZWQpOiBzdHJpbmcge1xyXG5cdFx0aWYgKCFzdGFydERhdGUpIHtcclxuXHRcdFx0cmV0dXJuICcnO1xyXG5cdFx0fVxyXG5cdFx0Y29uc3QgZGF0ZVN0ciA9IHN0YXJ0RGF0ZS50b1N0cmluZygpO1xyXG5cdFx0Y29uc3QgeWVhciA9IHBhcnNlSW50KGRhdGVTdHIuc3Vic3RyaW5nKDAsIDQpKTtcclxuXHRcdGNvbnN0IG1vbnRoID0gcGFyc2VJbnQoZGF0ZVN0ci5zdWJzdHJpbmcoNCwgNikpIC0gMTtcclxuXHRcdGNvbnN0IGRheSA9IHBhcnNlSW50KGRhdGVTdHIuc3Vic3RyaW5nKDYsIDgpKTtcclxuXHRcdGNvbnN0IGhvdXIgPSBwYXJzZUludChkYXRlU3RyLnN1YnN0cmluZyg4LCAxMCkpO1xyXG5cdFx0Y29uc3QgbWludXRlID0gcGFyc2VJbnQoZGF0ZVN0ci5zdWJzdHJpbmcoMTAsIDEyKSk7XHJcblx0XHRjb25zdCBzZWNvbmQgPSBwYXJzZUludChkYXRlU3RyLnN1YnN0cmluZygxMiwgMTQpKTtcclxuXHJcblx0XHRjb25zdCBub3RpZmljYXRpb25EYXRlID0gbmV3IERhdGUoeWVhciwgbW9udGgsIGRheSwgaG91ciwgbWludXRlLCBzZWNvbmQpO1xyXG5cdFx0Y29uc3Qgbm93ID0gbmV3IERhdGUoKTtcclxuXHRcdGNvbnN0IGRpZmZNcyA9IG5vdy5nZXRUaW1lKCkgLSBub3RpZmljYXRpb25EYXRlLmdldFRpbWUoKTtcclxuXHJcblx0XHRjb25zdCBkaWZmTWludXRlcyA9IE1hdGguZmxvb3IoZGlmZk1zIC8gKDEwMDAgKiA2MCkpO1xyXG5cdFx0Y29uc3QgZGlmZkhvdXJzID0gTWF0aC5mbG9vcihkaWZmTXMgLyAoMTAwMCAqIDYwICogNjApKTtcclxuXHRcdGNvbnN0IGRpZmZEYXlzID0gTWF0aC5mbG9vcihkaWZmTXMgLyAoMTAwMCAqIDYwICogNjAgKiAyNCkpO1xyXG5cdFx0Y29uc3QgZGlmZldlZWtzID0gTWF0aC5mbG9vcihkaWZmRGF5cyAvIDcpO1xyXG5cdFx0Y29uc3QgZGlmZk1vbnRocyA9IE1hdGguZmxvb3IoZGlmZkRheXMgLyAzMCk7XHJcblxyXG5cdFx0aWYgKGRpZmZNaW51dGVzIDwgMSkge1xyXG5cdFx0XHRyZXR1cm4gdGhpcy50cmFuc2xvY29TZXJ2aWNlLnRyYW5zbGF0ZSgnbm90aWZpY2F0aW9ucy50aW1lLmp1c3ROb3cnKTtcclxuXHRcdH0gZWxzZSBpZiAoZGlmZk1pbnV0ZXMgPCA2MCkge1xyXG5cdFx0XHRyZXR1cm4gdGhpcy50cmFuc2xvY29TZXJ2aWNlLnRyYW5zbGF0ZSgnbm90aWZpY2F0aW9ucy50aW1lLm1pbnV0ZXNBZ28nLCB7IGNvdW50OiBkaWZmTWludXRlcyB9KTtcclxuXHRcdH0gZWxzZSBpZiAoZGlmZkhvdXJzIDwgMjQpIHtcclxuXHRcdFx0cmV0dXJuIHRoaXMudHJhbnNsb2NvU2VydmljZS50cmFuc2xhdGUoJ25vdGlmaWNhdGlvbnMudGltZS5ob3Vyc0FnbycsIHsgY291bnQ6IGRpZmZIb3VycyB9KTtcclxuXHRcdH0gZWxzZSBpZiAoZGlmZkRheXMgPCA3KSB7XHJcblx0XHRcdHJldHVybiB0aGlzLnRyYW5zbG9jb1NlcnZpY2UudHJhbnNsYXRlKCdub3RpZmljYXRpb25zLnRpbWUuZGF5c0FnbycsIHsgY291bnQ6IGRpZmZEYXlzIH0pO1xyXG5cdFx0fSBlbHNlIGlmIChkaWZmV2Vla3MgPCA0KSB7XHJcblx0XHRcdHJldHVybiB0aGlzLnRyYW5zbG9jb1NlcnZpY2UudHJhbnNsYXRlKCdub3RpZmljYXRpb25zLnRpbWUud2Vla3NBZ28nLCB7IGNvdW50OiBkaWZmV2Vla3MgfSk7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHRyZXR1cm4gdGhpcy50cmFuc2xvY29TZXJ2aWNlLnRyYW5zbGF0ZSgnbm90aWZpY2F0aW9ucy50aW1lLm1vbnRoc0FnbycsIHsgY291bnQ6IGRpZmZNb250aHMgfSk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRuYXZpZ2F0ZVRvQWxsTm90aWZpY2F0aW9ucygpOiB2b2lkIHtcclxuXHRcdHRoaXMucm91dGVyLm5hdmlnYXRlKFsnbW5nL2NvbnRyb2wtbWFuYWdlbWVudC9zbXMtZW1haWwtYXVkaXQnXSk7XHJcblx0XHR0aGlzLnZpc2libGUgPSBmYWxzZTtcclxuXHR9XHJcbn1cclxuIiwiPHAtc2lkZWJhclxyXG5cdFsodmlzaWJsZSldPVwidmlzaWJsZVwiXHJcblx0cG9zaXRpb249XCJyaWdodFwiXHJcblx0W3RyYW5zaXRpb25PcHRpb25zXT1cIicuM3MgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSknXCJcclxuXHRzdHlsZUNsYXNzPVwibGF5b3V0LW5vdGlmaWNhdGlvbnMtc2lkZWJhciB3LWZ1bGwgc206dy0zMHJlbVwiXHJcblx0KnRyYW5zbG9jbz1cImxldCB0OyByZWFkOiAnbm90aWZpY2F0aW9ucydcIj5cclxuXHQ8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiaGVhZGVyXCI+XHJcblx0XHQ8ZGl2IGNsYXNzPVwiZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWJldHdlZW4gdy1mdWxsXCI+XHJcblx0XHRcdDxkaXYgY2xhc3M9XCJmbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG5cdFx0XHRcdDxpIGNsYXNzPVwicGkgcGktYmVsbCB0ZXh0LXByaW1hcnkgdGV4dC14bFwiPjwvaT5cclxuXHRcdFx0XHQ8c3BhbiBjbGFzcz1cImZvbnQtYm9sZCB0ZXh0LWxnXCI+e3sgdCgndGl0bGUnKSB9fTwvc3Bhbj5cclxuXHRcdFx0PC9kaXY+XHJcblx0XHQ8L2Rpdj5cclxuXHQ8L25nLXRlbXBsYXRlPlxyXG5cclxuXHQ8ZGl2IGNsYXNzPVwibm90aWZpY2F0aW9ucy1jb250ZW50XCI+XHJcblx0XHRAaWYgKG5vdGlmaWNhdGlvbnMoKS5sZW5ndGggPiAwKSB7XHJcblx0XHRcdDxkaXYgY2xhc3M9XCJub3RpZmljYXRpb25zLWxpc3RcIj5cclxuXHRcdFx0XHQ8cC1zY3JvbGxQYW5lbCBbc3R5bGVdPVwieyB3aWR0aDogJzEwMCUnLCBoZWlnaHQ6ICcxMDAlJyB9XCI+XHJcblx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwibm90aWZpY2F0aW9ucy1pdGVtc1wiPlxyXG5cdFx0XHRcdFx0XHRAZm9yIChub3RpZmljYXRpb24gb2Ygbm90aWZpY2F0aW9ucygpOyB0cmFjayB0cmFja0J5Tm90aWZpY2F0aW9uSWQoJGluZGV4LCBub3RpZmljYXRpb24pKSB7XHJcblx0XHRcdFx0XHRcdFx0PGRpdlxyXG5cdFx0XHRcdFx0XHRcdFx0Y2xhc3M9XCJub3RpZmljYXRpb24taXRlbVwiXHJcblx0XHRcdFx0XHRcdFx0XHRbY2xhc3MudW5yZWFkLWl0ZW1dPVwiIW5vdGlmaWNhdGlvbi5yZWFkXCJcclxuXHRcdFx0XHRcdFx0XHRcdChjbGljayk9XCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0KFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdG5vdGlmaWNhdGlvbj8uZGV0YWlsTm90aWZpY2F0aW9uVHlwZSA9PT0gRGV0YWlsTm90aWZpY2F0aW9uVHlwZUVudW0uVE9ET19JVEVNIHx8XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0bm90aWZpY2F0aW9uPy5kZXRhaWxOb3RpZmljYXRpb25UeXBlID09PSBEZXRhaWxOb3RpZmljYXRpb25UeXBlRW51bS5CQVRDSF9KT0JcclxuXHRcdFx0XHRcdFx0XHRcdFx0KSA/XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0bWFya05vdGlmaWNhdGlvbkFzUmVhZChub3RpZmljYXRpb24pXHJcblx0XHRcdFx0XHRcdFx0XHRcdDpcdG51bGxcclxuXHRcdFx0XHRcdFx0XHRcdFwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cIml0ZW0tY29udGVudFwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwiaXRlbS1oZWFkZXJcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwiaXRlbS10aXRsZVwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0QGlmIChub3RpZmljYXRpb24udHlwZSA9PT0gQWN0aXZpdHlUeXBlc0VudW0uU01TKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJub3RpZmljYXRpb24taWNvbiBzbXMtaWNvblwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxmYS1pY29uIFtpY29uXT1cInJlZ3VsYXJJY29ucy5mYU1lc3NhZ2VcIiAvPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0gQGVsc2Uge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRAaWYgKCFub3RpZmljYXRpb24ucmVhZCkge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJub3RpZmljYXRpb24taWNvbiBlbWFpbC1pY29uIHVucmVhZFwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGZhLWljb24gW2ljb25dPVwicmVndWxhckljb25zLmZhRW52ZWxvcGVcIiAvPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9IEBlbHNlIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwibm90aWZpY2F0aW9uLWljb24gZW1haWwtaWNvbiByZWFkXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8ZmEtaWNvbiBbaWNvbl09XCJyZWd1bGFySWNvbnMuZmFFbnZlbG9wZU9wZW5cIiAvPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8cCBjbGFzcz1cInRpdGxlLXRleHQgbWwtMlwiPnt7IGdldE5vdGlmaWNhdGlvblRpdGxlKG5vdGlmaWNhdGlvbikgfX08L3A+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PHNwYW4gY2xhc3M9XCJub3RpZmljYXRpb24tZGF0ZVwiPnt7IGZvcm1hdE5vdGlmaWNhdGlvbkRhdGUobm90aWZpY2F0aW9uLnNlbmRpbmdEYXRlKSB9fTwvc3Bhbj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRAaWYgKCFub3RpZmljYXRpb24ucmVhZCkge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGZhLWljb25cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0W2ljb25dPVwic29saWRJY29ucy5mYUNpcmNsZVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNsYXNzPVwidW5yZWFkLWRvdFwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFtwVG9vbHRpcF09XCJ0KCdtYXJrQXNSZWFkJylcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0b29sdGlwUG9zaXRpb249XCJsZWZ0XCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KGNsaWNrKT1cIm1hcmtOb3RpZmljYXRpb25Bc1JlYWRPbkRvdEljb24obm90aWZpY2F0aW9uKTsgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L2ZhLWljb24+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cIml0ZW0tbWV0YVwiPjwvZGl2PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRAaWYgKGdldE5vdGlmaWNhdGlvbkNvbnRlbnQobm90aWZpY2F0aW9uKSkge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJpdGVtLWNvbnRlbnQtcHJldmlld1wiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0QGlmIChub3RpZmljYXRpb24udHlwZSA9PT0gQWN0aXZpdHlUeXBlc0VudW0uRU1BSUwpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGRpdiBbaW5uZXJIVE1MXT1cIm5vdGlmaWNhdGlvbi5jb250ZW50IHwgc2FmZTogJ2h0bWwnXCIgY2xhc3M9XCJodG1sLXByZXZpZXcgbGluZS1jbGFtcC0zXCI+PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9IEBlbHNlIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHAgY2xhc3M9XCJ0ZXh0LWNvbnRlbnRcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR7eyBnZXROb3RpZmljYXRpb25Db250ZW50KG5vdGlmaWNhdGlvbikgfX1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9wPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0PC9wLXNjcm9sbFBhbmVsPlxyXG5cdFx0XHQ8L2Rpdj5cclxuXHRcdH0gQGVsc2Uge1xyXG5cdFx0XHQ8ZGl2IGNsYXNzPVwiZW1wdHktc3RhdGVcIj5cclxuXHRcdFx0XHQ8ZGl2IGNsYXNzPVwiZW1wdHktY29udGVudFwiPlxyXG5cdFx0XHRcdFx0PGkgY2xhc3M9XCJwaSBwaS1iZWxsIGVtcHR5LWljb25cIj48L2k+XHJcblx0XHRcdFx0XHQ8aDMgY2xhc3M9XCJlbXB0eS10aXRsZVwiPnt7IHQoJ25vTm90aWZpY2F0aW9ucycpIH19PC9oMz5cclxuXHRcdFx0XHRcdDxwIGNsYXNzPVwiZW1wdHktbWVzc2FnZVwiPnt7IHQoJ25vTm90aWZpY2F0aW9uc0Rlc2NyaXB0aW9uJykgfX08L3A+XHJcblx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdDwvZGl2PlxyXG5cdFx0fVxyXG5cclxuXHRcdDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgcC0yIGJvcmRlci10b3AtMSBzdXJmYWNlLWJvcmRlclwiPlxyXG5cdFx0XHQ8YXJpbC1idXR0b25cclxuXHRcdFx0XHRbbGFiZWxdPVwidCgnYWxsU2hvdycpXCJcclxuXHRcdFx0XHRpY29uPVwiRVhURVJOQUxfTElOS1wiXHJcblx0XHRcdFx0Y29sb3I9XCJwcmltYXJ5XCJcclxuXHRcdFx0XHRzaXplPVwibWRcIlxyXG5cdFx0XHRcdChjbGlja0V2ZW50KT1cIm5hdmlnYXRlVG9BbGxOb3RpZmljYXRpb25zKClcIj5cclxuXHRcdFx0PC9hcmlsLWJ1dHRvbj5cclxuXHRcdDwvZGl2PlxyXG5cdDwvZGl2PlxyXG5cclxuXHQ8cC1jb25maXJtRGlhbG9nPjwvcC1jb25maXJtRGlhbG9nPlxyXG48L3Atc2lkZWJhcj5cclxuIl19
@@ -79,7 +79,6 @@ import * as i8$2 from 'primeng/rating';
79
79
  import { RatingModule } from 'primeng/rating';
80
80
  import { API_CONFIGS } from 'aril/boot/config/api';
81
81
  import * as i1$1 from '@angular/common/http';
82
- import * as i4$1 from '@angular/platform-browser';
83
82
 
84
83
  const profileEndpoints = {
85
84
  getUser: 'user-management/users/get',
@@ -2279,12 +2278,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
2279
2278
  }], ctorParameters: () => [], propDecorators: { getNotifications: [], markAsReadNotification: [] } });
2280
2279
 
2281
2280
  class NotificationsSidebarComponent {
2282
- constructor(layoutService, notificationsService, translocoService, sanitizer, router) {
2281
+ constructor(layoutService, notificationsService, translocoService, router, keycloak) {
2283
2282
  this.layoutService = layoutService;
2284
2283
  this.notificationsService = notificationsService;
2285
2284
  this.translocoService = translocoService;
2286
- this.sanitizer = sanitizer;
2287
2285
  this.router = router;
2286
+ this.keycloak = keycloak;
2288
2287
  this.notifications = signal([]);
2289
2288
  this.selectedNotification = null;
2290
2289
  this.ActivityTypesEnum = ActivityTypesEnum;
@@ -2304,7 +2303,8 @@ class NotificationsSidebarComponent {
2304
2303
  },
2305
2304
  startDate: this.oneMonthAgo.dateToLong('time') || 0,
2306
2305
  endDate: new Date().dateToLong('time') || 0,
2307
- read: false
2306
+ read: false,
2307
+ username: this.keycloak.getUsername()
2308
2308
  }))));
2309
2309
  this.initializeEffects();
2310
2310
  }
@@ -2365,10 +2365,6 @@ class NotificationsSidebarComponent {
2365
2365
  const truncated = notification.content?.length > 200 ? notification.content?.substring(0, 200) + '...' : notification.content;
2366
2366
  return truncated || '';
2367
2367
  }
2368
- getSanitizedHtmlContent(notification) {
2369
- const content = notification.content || '';
2370
- return this.sanitizer.bypassSecurityTrustHtml(content);
2371
- }
2372
2368
  formatNotificationDate(startDate) {
2373
2369
  if (!startDate) {
2374
2370
  return '';
@@ -2411,7 +2407,7 @@ class NotificationsSidebarComponent {
2411
2407
  this.router.navigate(['mng/control-management/sms-email-audit']);
2412
2408
  this.visible = false;
2413
2409
  }
2414
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: NotificationsSidebarComponent, deps: [{ token: LayoutService }, { token: NotificationsService }, { token: i5.TranslocoService }, { token: i4$1.DomSanitizer }, { token: i3$2.Router }], target: i0.ɵɵFactoryTarget.Component }); }
2410
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: NotificationsSidebarComponent, deps: [{ token: LayoutService }, { token: NotificationsService }, { token: i5.TranslocoService }, { token: i3$2.Router }, { token: i2$1.KeycloakService }], target: i0.ɵɵFactoryTarget.Component }); }
2415
2411
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.2", type: NotificationsSidebarComponent, isStandalone: true, selector: "app-notifications-sidebar", ngImport: i0, template: "<p-sidebar\r\n\t[(visible)]=\"visible\"\r\n\tposition=\"right\"\r\n\t[transitionOptions]=\"'.3s cubic-bezier(0, 0, 0.2, 1)'\"\r\n\tstyleClass=\"layout-notifications-sidebar w-full sm:w-30rem\"\r\n\t*transloco=\"let t; read: 'notifications'\">\r\n\t<ng-template pTemplate=\"header\">\r\n\t\t<div class=\"flex align-items-center justify-content-between w-full\">\r\n\t\t\t<div class=\"flex align-items-center\">\r\n\t\t\t\t<i class=\"pi pi-bell text-primary text-xl\"></i>\r\n\t\t\t\t<span class=\"font-bold text-lg\">{{ t('title') }}</span>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</ng-template>\r\n\r\n\t<div class=\"notifications-content\">\r\n\t\t@if (notifications().length > 0) {\r\n\t\t\t<div class=\"notifications-list\">\r\n\t\t\t\t<p-scrollPanel [style]=\"{ width: '100%', height: '100%' }\">\r\n\t\t\t\t\t<div class=\"notifications-items\">\r\n\t\t\t\t\t\t@for (notification of notifications(); track trackByNotificationId($index, notification)) {\r\n\t\t\t\t\t\t\t<div\r\n\t\t\t\t\t\t\t\tclass=\"notification-item\"\r\n\t\t\t\t\t\t\t\t[class.unread-item]=\"!notification.read\"\r\n\t\t\t\t\t\t\t\t(click)=\"\r\n\t\t\t\t\t\t\t\t\t(\r\n\t\t\t\t\t\t\t\t\t\tnotification?.detailNotificationType === DetailNotificationTypeEnum.TODO_ITEM ||\r\n\t\t\t\t\t\t\t\t\t\tnotification?.detailNotificationType === DetailNotificationTypeEnum.BATCH_JOB\r\n\t\t\t\t\t\t\t\t\t) ?\r\n\t\t\t\t\t\t\t\t\t\tmarkNotificationAsRead(notification)\r\n\t\t\t\t\t\t\t\t\t:\tnull\r\n\t\t\t\t\t\t\t\t\">\r\n\t\t\t\t\t\t\t\t<div class=\"item-content\">\r\n\t\t\t\t\t\t\t\t\t<div class=\"item-header\">\r\n\t\t\t\t\t\t\t\t\t\t<div class=\"item-title\">\r\n\t\t\t\t\t\t\t\t\t\t\t@if (notification.type === ActivityTypesEnum.SMS) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"notification-icon sms-icon\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<fa-icon [icon]=\"regularIcons.faMessage\" />\r\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t\t\t\t\t@if (!notification.read) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"notification-icon email-icon unread\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<fa-icon [icon]=\"regularIcons.faEnvelope\" />\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"notification-icon email-icon read\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<fa-icon [icon]=\"regularIcons.faEnvelopeOpen\" />\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t<p class=\"title-text ml-2\">{{ getNotificationTitle(notification) }}</p>\r\n\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t<span class=\"notification-date\">{{ formatNotificationDate(notification.sendingDate) }}</span>\r\n\t\t\t\t\t\t\t\t\t\t@if (!notification.read) {\r\n\t\t\t\t\t\t\t\t\t\t\t<fa-icon\r\n\t\t\t\t\t\t\t\t\t\t\t\t[icon]=\"solidIcons.faCircle\"\r\n\t\t\t\t\t\t\t\t\t\t\t\tclass=\"unread-dot\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"t('markAsRead')\"\r\n\t\t\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"left\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t(click)=\"markNotificationAsReadOnDotIcon(notification); $event.stopPropagation()\">\r\n\t\t\t\t\t\t\t\t\t\t\t</fa-icon>\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t<div class=\"item-meta\"></div>\r\n\t\t\t\t\t\t\t\t\t@if (getNotificationContent(notification)) {\r\n\t\t\t\t\t\t\t\t\t\t<div class=\"item-content-preview\">\r\n\t\t\t\t\t\t\t\t\t\t\t@if (notification.type === ActivityTypesEnum.EMAIL) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t<div [innerHTML]=\"notification.content | safe: 'html'\" class=\"html-preview line-clamp-3\"></div>\r\n\t\t\t\t\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t\t\t\t\t<p class=\"text-content\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{{ getNotificationContent(notification) }}\r\n\t\t\t\t\t\t\t\t\t\t\t\t</p>\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</p-scrollPanel>\r\n\t\t\t</div>\r\n\t\t} @else {\r\n\t\t\t<div class=\"empty-state\">\r\n\t\t\t\t<div class=\"empty-content\">\r\n\t\t\t\t\t<i class=\"pi pi-bell empty-icon\"></i>\r\n\t\t\t\t\t<h3 class=\"empty-title\">{{ t('noNotifications') }}</h3>\r\n\t\t\t\t\t<p class=\"empty-message\">{{ t('noNotificationsDescription') }}</p>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t}\r\n\r\n\t\t<div class=\"flex justify-content-center p-2 border-top-1 surface-border\">\r\n\t\t\t<aril-button\r\n\t\t\t\t[label]=\"t('allShow')\"\r\n\t\t\t\ticon=\"EXTERNAL_LINK\"\r\n\t\t\t\tcolor=\"primary\"\r\n\t\t\t\tsize=\"md\"\r\n\t\t\t\t(clickEvent)=\"navigateToAllNotifications()\">\r\n\t\t\t</aril-button>\r\n\t\t</div>\r\n\t</div>\r\n\r\n\t<p-confirmDialog></p-confirmDialog>\r\n</p-sidebar>\r\n", styles: [":host ::ng-deep .layout-notifications-sidebar .p-sidebar-content{padding:0;background:var(--surface-ground)}:host ::ng-deep .layout-notifications-sidebar .p-sidebar-header{background:var(--primary-color);color:var(--primary-color-text);padding:1rem 1.5rem}:host ::ng-deep .layout-notifications-sidebar .p-sidebar-header span{font-size:1.1rem;font-weight:600}.notifications-content{display:flex;flex-direction:column;height:100%;background:var(--surface-0)}.add-section{display:flex;align-items:center;gap:.5rem;padding:1rem;border-bottom:1px solid var(--surface-border);background:var(--surface-0)}.notifications-list{flex:1;overflow:hidden}.notifications-items{padding:0}.notification-item{background:transparent;border-bottom:1px solid var(--surface-border);cursor:pointer;transition:background-color .2s ease;position:relative}.notification-item:hover{background:var(--surface-hover)}.notification-item:last-child{border-bottom:none}.notification-item.unread-item{background:var(--surface-50)}.notification-item.unread-item:hover{background:var(--surface-100)}.notification-item.unread-item .title-text{font-weight:500}.item-content{padding:1.125rem 1rem}.item-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:.625rem;gap:1rem}.item-title{display:flex;align-items:center;flex:1;min-width:0;gap:.4em}.item-title .notification-icon{width:1.75rem;height:1.75rem;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:all .2s ease}.item-title .notification-icon fa-icon{font-size:.875rem;transition:all .2s ease}.item-title .notification-icon.email-icon.unread{background-color:#3b82f6;color:#fff;box-shadow:0 1px 4px #00000026}.item-title .notification-icon.email-icon.unread fa-icon{color:#fff}.item-title .notification-icon.email-icon.read{background:var(--surface-200);color:var(--text-color-secondary)}.item-title .notification-icon.email-icon.read fa-icon{color:var(--text-color-secondary)}.item-title .notification-icon.sms-icon{background:linear-gradient(135deg,var(--green-500),var(--green-600));color:#fff;box-shadow:0 2px 8px #22c55e40}.item-title .notification-icon.sms-icon fa-icon{color:#fff}.item-title .title-text{font-weight:500;line-height:1.5;font-size:.975rem;margin:0}.notification-date{font-size:.8rem;color:var(--text-color-secondary);font-weight:500;white-space:nowrap;background:var(--surface-100);padding:.2rem .4rem;border-radius:.25rem}.item-content-preview{margin-top:.625rem;color:var(--text-color-secondary);padding-left:1.5rem;border-left:2px solid var(--surface-200)}.item-content-preview .text-content{font-size:.875rem;line-height:1.5;margin:0;font-style:italic}.item-content-preview .html-preview{font-size:.875rem;line-height:1.5;max-height:75px;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;line-clamp:3;overflow:hidden;word-break:break-word;white-space:normal;font-style:italic}.empty-state{display:flex;align-items:center;justify-content:center;flex:1;padding:2rem}.empty-state .empty-content{text-align:center}.empty-state .empty-content .empty-icon{font-size:4rem;color:var(--text-color-secondary);opacity:.3;margin-bottom:1rem}.empty-state .empty-content .empty-title{font-size:1.25rem;font-weight:600;color:var(--text-color);margin-bottom:.5rem}.empty-state .empty-content .empty-message{color:var(--text-color-secondary);margin:0}.unread-dot{color:#3b82f6;font-size:.625rem;cursor:pointer;transition:opacity .2s ease;opacity:.8}.unread-dot:hover{opacity:1}@media (max-width: 768px){.layout-notifications-sidebar ::ng-deep .p-sidebar{width:100%!important}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: SidebarModule }, { kind: "component", type: i6$1.Sidebar, selector: "p-sidebar", inputs: ["appendTo", "blockScroll", "style", "styleClass", "ariaCloseLabel", "autoZIndex", "baseZIndex", "modal", "dismissible", "showCloseIcon", "closeOnEscape", "transitionOptions", "visible", "position", "fullScreen"], outputs: ["onShow", "onHide", "visibleChange"] }, { kind: "directive", type: i3.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "ngmodule", type: ScrollPanelModule }, { kind: "component", type: i7$1.ScrollPanel, selector: "p-scrollPanel", inputs: ["style", "styleClass", "step"] }, { kind: "ngmodule", type: ConfirmDialogModule }, { kind: "component", type: i8.ConfirmDialog, selector: "p-confirmDialog", inputs: ["header", "icon", "message", "style", "styleClass", "maskStyleClass", "acceptIcon", "acceptLabel", "closeAriaLabel", "acceptAriaLabel", "acceptVisible", "rejectIcon", "rejectLabel", "rejectAriaLabel", "rejectVisible", "acceptButtonStyleClass", "rejectButtonStyleClass", "closeOnEscape", "dismissableMask", "blockScroll", "rtl", "closable", "appendTo", "key", "autoZIndex", "baseZIndex", "transitionOptions", "focusTrap", "defaultFocus", "breakpoints", "visible", "position"], outputs: ["onHide"] }, { kind: "ngmodule", type: PaginatorModule }, { kind: "component", type: ButtonComponent, selector: "aril-button:not([click])", inputs: ["label", "loading", "disabled", "raised", "outlined", "badge", "size", "icon", "color"], outputs: ["clickEvent"] }, { kind: "ngmodule", type: TranslocoModule }, { kind: "directive", type: i5.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoLang", "translocoLoadingTpl"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i9.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "ngmodule", type: BadgeModule }, { kind: "ngmodule", type: FontAwesomeModule }, { kind: "component", type: i10.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }, { kind: "pipe", type: SafePipe, name: "safe" }] }); }
2416
2412
  }
2417
2413
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: NotificationsSidebarComponent, decorators: [{
@@ -2429,7 +2425,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
2429
2425
  FontAwesomeModule,
2430
2426
  SafePipe
2431
2427
  ], template: "<p-sidebar\r\n\t[(visible)]=\"visible\"\r\n\tposition=\"right\"\r\n\t[transitionOptions]=\"'.3s cubic-bezier(0, 0, 0.2, 1)'\"\r\n\tstyleClass=\"layout-notifications-sidebar w-full sm:w-30rem\"\r\n\t*transloco=\"let t; read: 'notifications'\">\r\n\t<ng-template pTemplate=\"header\">\r\n\t\t<div class=\"flex align-items-center justify-content-between w-full\">\r\n\t\t\t<div class=\"flex align-items-center\">\r\n\t\t\t\t<i class=\"pi pi-bell text-primary text-xl\"></i>\r\n\t\t\t\t<span class=\"font-bold text-lg\">{{ t('title') }}</span>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</ng-template>\r\n\r\n\t<div class=\"notifications-content\">\r\n\t\t@if (notifications().length > 0) {\r\n\t\t\t<div class=\"notifications-list\">\r\n\t\t\t\t<p-scrollPanel [style]=\"{ width: '100%', height: '100%' }\">\r\n\t\t\t\t\t<div class=\"notifications-items\">\r\n\t\t\t\t\t\t@for (notification of notifications(); track trackByNotificationId($index, notification)) {\r\n\t\t\t\t\t\t\t<div\r\n\t\t\t\t\t\t\t\tclass=\"notification-item\"\r\n\t\t\t\t\t\t\t\t[class.unread-item]=\"!notification.read\"\r\n\t\t\t\t\t\t\t\t(click)=\"\r\n\t\t\t\t\t\t\t\t\t(\r\n\t\t\t\t\t\t\t\t\t\tnotification?.detailNotificationType === DetailNotificationTypeEnum.TODO_ITEM ||\r\n\t\t\t\t\t\t\t\t\t\tnotification?.detailNotificationType === DetailNotificationTypeEnum.BATCH_JOB\r\n\t\t\t\t\t\t\t\t\t) ?\r\n\t\t\t\t\t\t\t\t\t\tmarkNotificationAsRead(notification)\r\n\t\t\t\t\t\t\t\t\t:\tnull\r\n\t\t\t\t\t\t\t\t\">\r\n\t\t\t\t\t\t\t\t<div class=\"item-content\">\r\n\t\t\t\t\t\t\t\t\t<div class=\"item-header\">\r\n\t\t\t\t\t\t\t\t\t\t<div class=\"item-title\">\r\n\t\t\t\t\t\t\t\t\t\t\t@if (notification.type === ActivityTypesEnum.SMS) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"notification-icon sms-icon\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<fa-icon [icon]=\"regularIcons.faMessage\" />\r\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t\t\t\t\t@if (!notification.read) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"notification-icon email-icon unread\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<fa-icon [icon]=\"regularIcons.faEnvelope\" />\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"notification-icon email-icon read\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<fa-icon [icon]=\"regularIcons.faEnvelopeOpen\" />\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t<p class=\"title-text ml-2\">{{ getNotificationTitle(notification) }}</p>\r\n\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t<span class=\"notification-date\">{{ formatNotificationDate(notification.sendingDate) }}</span>\r\n\t\t\t\t\t\t\t\t\t\t@if (!notification.read) {\r\n\t\t\t\t\t\t\t\t\t\t\t<fa-icon\r\n\t\t\t\t\t\t\t\t\t\t\t\t[icon]=\"solidIcons.faCircle\"\r\n\t\t\t\t\t\t\t\t\t\t\t\tclass=\"unread-dot\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"t('markAsRead')\"\r\n\t\t\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"left\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t(click)=\"markNotificationAsReadOnDotIcon(notification); $event.stopPropagation()\">\r\n\t\t\t\t\t\t\t\t\t\t\t</fa-icon>\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t<div class=\"item-meta\"></div>\r\n\t\t\t\t\t\t\t\t\t@if (getNotificationContent(notification)) {\r\n\t\t\t\t\t\t\t\t\t\t<div class=\"item-content-preview\">\r\n\t\t\t\t\t\t\t\t\t\t\t@if (notification.type === ActivityTypesEnum.EMAIL) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t<div [innerHTML]=\"notification.content | safe: 'html'\" class=\"html-preview line-clamp-3\"></div>\r\n\t\t\t\t\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t\t\t\t\t<p class=\"text-content\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{{ getNotificationContent(notification) }}\r\n\t\t\t\t\t\t\t\t\t\t\t\t</p>\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</p-scrollPanel>\r\n\t\t\t</div>\r\n\t\t} @else {\r\n\t\t\t<div class=\"empty-state\">\r\n\t\t\t\t<div class=\"empty-content\">\r\n\t\t\t\t\t<i class=\"pi pi-bell empty-icon\"></i>\r\n\t\t\t\t\t<h3 class=\"empty-title\">{{ t('noNotifications') }}</h3>\r\n\t\t\t\t\t<p class=\"empty-message\">{{ t('noNotificationsDescription') }}</p>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t}\r\n\r\n\t\t<div class=\"flex justify-content-center p-2 border-top-1 surface-border\">\r\n\t\t\t<aril-button\r\n\t\t\t\t[label]=\"t('allShow')\"\r\n\t\t\t\ticon=\"EXTERNAL_LINK\"\r\n\t\t\t\tcolor=\"primary\"\r\n\t\t\t\tsize=\"md\"\r\n\t\t\t\t(clickEvent)=\"navigateToAllNotifications()\">\r\n\t\t\t</aril-button>\r\n\t\t</div>\r\n\t</div>\r\n\r\n\t<p-confirmDialog></p-confirmDialog>\r\n</p-sidebar>\r\n", styles: [":host ::ng-deep .layout-notifications-sidebar .p-sidebar-content{padding:0;background:var(--surface-ground)}:host ::ng-deep .layout-notifications-sidebar .p-sidebar-header{background:var(--primary-color);color:var(--primary-color-text);padding:1rem 1.5rem}:host ::ng-deep .layout-notifications-sidebar .p-sidebar-header span{font-size:1.1rem;font-weight:600}.notifications-content{display:flex;flex-direction:column;height:100%;background:var(--surface-0)}.add-section{display:flex;align-items:center;gap:.5rem;padding:1rem;border-bottom:1px solid var(--surface-border);background:var(--surface-0)}.notifications-list{flex:1;overflow:hidden}.notifications-items{padding:0}.notification-item{background:transparent;border-bottom:1px solid var(--surface-border);cursor:pointer;transition:background-color .2s ease;position:relative}.notification-item:hover{background:var(--surface-hover)}.notification-item:last-child{border-bottom:none}.notification-item.unread-item{background:var(--surface-50)}.notification-item.unread-item:hover{background:var(--surface-100)}.notification-item.unread-item .title-text{font-weight:500}.item-content{padding:1.125rem 1rem}.item-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:.625rem;gap:1rem}.item-title{display:flex;align-items:center;flex:1;min-width:0;gap:.4em}.item-title .notification-icon{width:1.75rem;height:1.75rem;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:all .2s ease}.item-title .notification-icon fa-icon{font-size:.875rem;transition:all .2s ease}.item-title .notification-icon.email-icon.unread{background-color:#3b82f6;color:#fff;box-shadow:0 1px 4px #00000026}.item-title .notification-icon.email-icon.unread fa-icon{color:#fff}.item-title .notification-icon.email-icon.read{background:var(--surface-200);color:var(--text-color-secondary)}.item-title .notification-icon.email-icon.read fa-icon{color:var(--text-color-secondary)}.item-title .notification-icon.sms-icon{background:linear-gradient(135deg,var(--green-500),var(--green-600));color:#fff;box-shadow:0 2px 8px #22c55e40}.item-title .notification-icon.sms-icon fa-icon{color:#fff}.item-title .title-text{font-weight:500;line-height:1.5;font-size:.975rem;margin:0}.notification-date{font-size:.8rem;color:var(--text-color-secondary);font-weight:500;white-space:nowrap;background:var(--surface-100);padding:.2rem .4rem;border-radius:.25rem}.item-content-preview{margin-top:.625rem;color:var(--text-color-secondary);padding-left:1.5rem;border-left:2px solid var(--surface-200)}.item-content-preview .text-content{font-size:.875rem;line-height:1.5;margin:0;font-style:italic}.item-content-preview .html-preview{font-size:.875rem;line-height:1.5;max-height:75px;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;line-clamp:3;overflow:hidden;word-break:break-word;white-space:normal;font-style:italic}.empty-state{display:flex;align-items:center;justify-content:center;flex:1;padding:2rem}.empty-state .empty-content{text-align:center}.empty-state .empty-content .empty-icon{font-size:4rem;color:var(--text-color-secondary);opacity:.3;margin-bottom:1rem}.empty-state .empty-content .empty-title{font-size:1.25rem;font-weight:600;color:var(--text-color);margin-bottom:.5rem}.empty-state .empty-content .empty-message{color:var(--text-color-secondary);margin:0}.unread-dot{color:#3b82f6;font-size:.625rem;cursor:pointer;transition:opacity .2s ease;opacity:.8}.unread-dot:hover{opacity:1}@media (max-width: 768px){.layout-notifications-sidebar ::ng-deep .p-sidebar{width:100%!important}}\n"] }]
2432
- }], ctorParameters: () => [{ type: LayoutService }, { type: NotificationsService }, { type: i5.TranslocoService }, { type: i4$1.DomSanitizer }, { type: i3$2.Router }] });
2428
+ }], ctorParameters: () => [{ type: LayoutService }, { type: NotificationsService }, { type: i5.TranslocoService }, { type: i3$2.Router }, { type: i2$1.KeycloakService }] });
2433
2429
 
2434
2430
  class AppLayoutComponent {
2435
2431
  constructor(menuService, layoutService, renderer, router) {