@tilde-nlp/ngx-menu 6.1.40 → 6.1.42

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.
@@ -182,7 +182,7 @@ export class SideNavMenuComponent extends NavBaseComponent {
182
182
  get username() { return this.#username; }
183
183
  set username(value) {
184
184
  // if username is passed whith whitespace in begginining, it breaks UI, so trim it for safety.
185
- this.#username = value.trim();
185
+ this.#username = value?.trim();
186
186
  this.setUserInitials();
187
187
  }
188
188
  get menuLogoImage() {
@@ -352,11 +352,11 @@ export class SideNavMenuComponent extends NavBaseComponent {
352
352
  i0.ɵɵproperty("ngIf", !ctx.collapsed);
353
353
  i0.ɵɵadvance(3);
354
354
  i0.ɵɵrepeater(ctx.menuSettings.userOptions);
355
- } }, dependencies: [i4.DefaultLayoutDirective, i4.DefaultLayoutAlignDirective, i4.FlexFillDirective, i4.DefaultFlexDirective, i5.DefaultShowHideDirective, i5.DefaultClassDirective, i6.RouterLink, i7.NgIf, i7.NgTemplateOutlet, i8.MatTooltip, i9.MatIcon, i10.MatIconButton, i11.MatMenu, i11.MatMenuItem, i11.MatMenuTrigger, i2.PlausibleEventDirective, i12.MenuColumnsComponent, i13.TranslatePipe], styles: ["a[_ngcontent-%COMP%]{text-decoration:none}.no-click[_ngcontent-%COMP%]{pointer-events:none!important}.mobile-header[_ngcontent-%COMP%]{display:flex;justify-content:space-between;padding:23px 27px;background-color:#fcfcfc;border:1px solid var(--base-70)}.mobile.menu-container.collapsed[_ngcontent-%COMP%]{display:none!important}.mobile.menu-container[_ngcontent-%COMP%]:not(.collapsed){display:block!important;position:fixed;min-width:100vw;min-height:100dvh;z-index:1000}.mobile[_ngcontent-%COMP%] .profile-wrapper[_ngcontent-%COMP%]{position:relative}.mobile[_ngcontent-%COMP%] .profile-wrapper[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{position:absolute!important;right:0}.menu-product-name[_ngcontent-%COMP%]{white-space:nowrap;margin-left:12px;font-weight:600;color:var(--base-10)}.menu-container[_ngcontent-%COMP%]{max-height:100dvh;white-space:nowrap;height:100%;transition:width .2s ease;min-height:100dvh;overflow:auto;background:var(--base-100);border-right:2px solid var(--base-95)}.menu-container[_ngcontent-%COMP%] .menu-container-header[_ngcontent-%COMP%]{margin:24px 0;max-height:40px}.menu-container.collapsed[_ngcontent-%COMP%] .menu-container-header[_ngcontent-%COMP%]{margin:24px 0 32px!important}.menu-container[_ngcontent-%COMP%] .content[_ngcontent-%COMP%]:not(.collapsed){overflow-x:hidden;padding:0 12px}.menu-container[_ngcontent-%COMP%] .content[_ngcontent-%COMP%]:not(.collapsed) .menu-logo[_ngcontent-%COMP%]{margin-left:16px;max-width:100%}.menu-container[_ngcontent-%COMP%] .divider[_ngcontent-%COMP%]{width:100%}.menu-container[_ngcontent-%COMP%] .profile[_ngcontent-%COMP%]{position:relative;margin-top:100px}.menu-container[_ngcontent-%COMP%] .profile-wrapper[_ngcontent-%COMP%]{background:none;color:var(--base-30);display:flex;align-items:center;justify-content:start;width:100%;position:absolute;bottom:0;margin:32px 0}.menu-container[_ngcontent-%COMP%] .profile-icon[_ngcontent-%COMP%]{display:flex;justify-content:center;align-items:center;min-width:40px;height:40px;border-radius:100%;color:var(--base-0);background-color:var(--base-70);font-size:16px;font-weight:600}.menu-container[_ngcontent-%COMP%] .profile-name[_ngcontent-%COMP%]{max-width:145px;overflow:hidden;margin-left:12px;text-overflow:ellipsis}.collapsed[_ngcontent-%COMP%] .profile-wrapper[_ngcontent-%COMP%]{margin:36px 0!important}.mobile[_ngcontent-%COMP%] .profile-name[_ngcontent-%COMP%]{max-width:60vw}.profile-option-icon[_ngcontent-%COMP%]{vertical-align:middle;margin:0 5px 5px 0}[_nghost-%COMP%] .menu-item{display:flex;padding:16px!important;border-radius:4px!important}[_nghost-%COMP%] .child-list .menu-item{padding:8px 46px!important}[_nghost-%COMP%] .collapsed .menu-item{padding:0!important;width:40px;height:40px;border-radius:50%!important}[_nghost-%COMP%] .active-menu-item{background-color:var(--base-95)!important}[_nghost-%COMP%] .menu-item-title{margin-left:12px}tld-menu-icon[_ngcontent-%COMP%]{margin-right:10px}.profile-arrow[_ngcontent-%COMP%]{position:absolute;right:3px;margin-right:20px}.spin[_ngcontent-%COMP%]{animation:_ngcontent-%COMP%_spinArrow .3s forwards}[_nghost-%COMP%] button.collapse-btn .mat-mdc-button-persistent-ripple, [_nghost-%COMP%] button.toggler .mat-mdc-button-persistent-ripple{display:none}[_nghost-%COMP%] .mobile .child-list .menu-item{padding:8px 54px!important} .cdk-overlay-container .profile-menu{margin:10px 0!important} .mat-mdc-menu-item .mat-icon{margin-right:5px!important} .collapsed .profile-wrapper{justify-content:center!important} .profile-menu a{font-weight:400!important;display:flex;align-items:center;gap:5px} .profile-menu a:hover{color:var(--mat-menu-item-label-text-color, var(--mat-app-on-surface))!important;text-decoration:inherit}@keyframes _ngcontent-%COMP%_spinArrow{to{transform:rotate(180deg)}}"] }); }
355
+ } }, dependencies: [i4.DefaultLayoutDirective, i4.DefaultLayoutAlignDirective, i4.FlexFillDirective, i4.DefaultFlexDirective, i5.DefaultShowHideDirective, i5.DefaultClassDirective, i6.RouterLink, i7.NgIf, i7.NgTemplateOutlet, i8.MatTooltip, i9.MatIcon, i10.MatIconButton, i11.MatMenu, i11.MatMenuItem, i11.MatMenuTrigger, i2.PlausibleEventDirective, i12.MenuColumnsComponent, i13.TranslatePipe], styles: ["a[_ngcontent-%COMP%]{text-decoration:none}.no-click[_ngcontent-%COMP%]{pointer-events:none!important}.mobile-header[_ngcontent-%COMP%]{display:flex;justify-content:space-between;padding:23px 27px;background-color:#fcfcfc;border:1px solid var(--base-70)}.mobile.menu-container.collapsed[_ngcontent-%COMP%]{display:none!important}.mobile.menu-container[_ngcontent-%COMP%]:not(.collapsed){display:block!important;position:fixed;min-width:100vw;min-height:100dvh;z-index:1000}.menu-container[_ngcontent-%COMP%] [_ngcontent-%COMP%]::-webkit-scrollbar{width:5px}.menu-container[_ngcontent-%COMP%] [_ngcontent-%COMP%]::-webkit-scrollbar-thumb{background:var(--base-95);background-clip:padding-box}.menu-container[_ngcontent-%COMP%] [_ngcontent-%COMP%]::-webkit-scrollbar-track{background:var(--base-100)}.mobile[_ngcontent-%COMP%] .profile-wrapper[_ngcontent-%COMP%]{position:relative}.mobile[_ngcontent-%COMP%] .profile-wrapper[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{position:absolute!important;right:0}.menu-product-name[_ngcontent-%COMP%]{white-space:nowrap;margin-left:12px;font-weight:600;color:var(--base-10)}.menu-container[_ngcontent-%COMP%]{max-height:100dvh;white-space:nowrap;height:100%;transition:width .2s ease;min-height:100dvh;overflow:auto;background:var(--base-100);border-right:2px solid var(--base-95)}.menu-container[_ngcontent-%COMP%] .menu-container-header[_ngcontent-%COMP%]{margin:24px 0;max-height:40px}.menu-container.collapsed[_ngcontent-%COMP%] .menu-container-header[_ngcontent-%COMP%]{margin:24px 0 32px!important}.menu-container[_ngcontent-%COMP%] .content[_ngcontent-%COMP%]:not(.collapsed){overflow-x:hidden;padding:0 12px}.menu-container[_ngcontent-%COMP%] .content[_ngcontent-%COMP%]:not(.collapsed) .menu-logo[_ngcontent-%COMP%]{margin-left:16px;max-width:100%}.menu-container[_ngcontent-%COMP%] .divider[_ngcontent-%COMP%]{width:100%}.menu-container[_ngcontent-%COMP%] .profile[_ngcontent-%COMP%]{position:relative;margin-top:100px}.menu-container[_ngcontent-%COMP%] .profile-wrapper[_ngcontent-%COMP%]{background:none;color:var(--base-30);display:flex;align-items:center;justify-content:start;width:100%;position:absolute;bottom:0;margin:32px 0}.menu-container[_ngcontent-%COMP%] .profile-icon[_ngcontent-%COMP%]{display:flex;justify-content:center;align-items:center;min-width:40px;height:40px;border-radius:100%;color:var(--base-0);background-color:var(--base-70);font-size:16px;font-weight:600}.menu-container[_ngcontent-%COMP%] .profile-name[_ngcontent-%COMP%]{max-width:145px;overflow:hidden;margin-left:12px;text-overflow:ellipsis}.collapsed[_ngcontent-%COMP%] .profile-wrapper[_ngcontent-%COMP%]{margin:36px 0!important}.mobile[_ngcontent-%COMP%] .profile-name[_ngcontent-%COMP%]{max-width:60vw}.profile-option-icon[_ngcontent-%COMP%]{vertical-align:middle;margin:0 5px 5px 0}[_nghost-%COMP%] .menu-item{display:flex;padding:16px!important;border-radius:4px!important}[_nghost-%COMP%] .child-list .menu-item{padding:8px 46px!important}[_nghost-%COMP%] .collapsed .menu-item{padding:0!important;width:40px;height:40px;border-radius:50%!important}[_nghost-%COMP%] .active-menu-item{background-color:var(--base-95)!important}[_nghost-%COMP%] .menu-item-title{margin-left:12px}tld-menu-icon[_ngcontent-%COMP%]{margin-right:10px}.profile-arrow[_ngcontent-%COMP%]{position:absolute;right:3px;margin-right:20px}.spin[_ngcontent-%COMP%]{animation:_ngcontent-%COMP%_spinArrow .3s forwards}[_nghost-%COMP%] button.collapse-btn .mat-mdc-button-persistent-ripple, [_nghost-%COMP%] button.toggler .mat-mdc-button-persistent-ripple{display:none}[_nghost-%COMP%] .mobile .child-list .menu-item{padding:8px 54px!important} .cdk-overlay-container .profile-menu{margin:10px 0!important} .mat-mdc-menu-item .mat-icon{margin-right:5px!important} .collapsed .profile-wrapper{justify-content:center!important} .profile-menu a{font-weight:400!important;display:flex;align-items:center;gap:5px} .profile-menu a:hover{color:var(--mat-menu-item-label-text-color, var(--mat-app-on-surface))!important;text-decoration:inherit}@keyframes _ngcontent-%COMP%_spinArrow{to{transform:rotate(180deg)}}"] }); }
356
356
  }
357
357
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SideNavMenuComponent, [{
358
358
  type: Component,
359
- args: [{ selector: 'lib-side-nav-menu', template: "<div fxHide.gt-xs>\r\n <div [fxHide]=\"!collapsed\" class=\"mobile-header\">\r\n <a [libPlausibleEvent]=\"LOGOCLICK_PLAUSIBLE_EVENT\" fxFlex=\"3.125em\" [href]=\"baseUrl\" [class.no-click]=\"menuSettings?.disableLogoNavigation\"\r\n [attr.aria-label]=\"'MENU.ARIA_LABELS.LOGO' | translate\" (click)=\"logoClick($event)\" fxLayoutAlign=\"start center\"\r\n >\r\n <img height=\"40\" width=\"40\" class=\"menu-logo\" [src]=\"menuLogoImage\" alt=\"logo\" />\r\n <span class=\"menu-product-name\">\r\n {{ productName }}\r\n </span>\r\n </a>\r\n\r\n <button\r\n mat-icon-button\r\n class=\"toggler\"\r\n [attr.aria-label]=\"'ARIA_LABELS.MENU_TOGGLER' | translate\"\r\n [libPlausibleEvent]=\"collapsed ? EXPAND_PLAUSIBLE_EVENT : COLLAPSE_PLAUSIBLE_EVENT\"\r\n (click)=\"toggleCollapse()\"\r\n >\r\n <mat-icon>menu</mat-icon>\r\n </button>\r\n </div>\r\n</div>\r\n\r\n<div [ngClass.lt-sm]=\"'mobile'\" class=\"menu-container\" [style.width]=\"sideNavWidth\" fxLayout=\"column\" [class.collapsed]=\"collapsed\">\r\n <div class=\"content\" fxLayout=\"column\" fxFlexFill>\r\n <div class=\"menu-container-header\" fxLayout=\"row\" [fxLayoutAlign]=\"collapsed ? 'center center' : 'space-between center'\">\r\n <a *ngIf=\"!collapsed\" [libPlausibleEvent]=\"LOGOCLICK_PLAUSIBLE_EVENT\" fxFlex=\"3.125em\" [class.no-click]=\"menuSettings?.disableLogoNavigation\" [href]=\"baseUrl\"\r\n [attr.aria-label]=\"'MENU.ARIA_LABELS.LOGO' | translate\" (click)=\"logoClick($event)\" fxLayoutAlign=\"start center\"\r\n >\r\n <img height=\"40\" width=\"40\" class=\"menu-logo\" [src]=\"menuLogoImage\" alt=\"logo\" />\r\n <span class=\"menu-product-name\">\r\n {{ productName }}\r\n </span>\r\n </a>\r\n\r\n <button\r\n mat-icon-button\r\n class=\"toggler\"\r\n [attr.aria-label]=\"'ARIA_LABELS.MENU_TOGGLER' | translate\"\r\n [libPlausibleEvent]=\"collapsed ? EXPAND_PLAUSIBLE_EVENT : COLLAPSE_PLAUSIBLE_EVENT\"\r\n [matTooltip]=\"(collapsed ? 'MENU.EXPAND' : 'MENU.COLLAPSE') | translate\"\r\n (click)=\"toggleCollapse()\"\r\n >\r\n <mat-icon fxHide.gt-xs>close</mat-icon>\r\n <mat-icon fxHide.lt-sm>{{ collapsed ? 'keyboard_double_arrow_right' : 'keyboard_double_arrow_left' }}</mat-icon>\r\n </button>\r\n </div>\r\n\r\n <div class=\"menu-wrapper\" fxLayout=\"column\">\r\n <menu-columns (toggleCollapseEvent)=\"toggleCollapse()\" [direction]=\"direction\" role=\"navigation\" [isOpen]=\"!collapsed\"\r\n [active]=\"active\"></menu-columns>\r\n </div>\r\n <div fxFlex fxLayout=\"column\">\r\n <ng-content></ng-content>\r\n </div>\r\n <div class=\"profile\">\r\n <button #state=\"matMenuTrigger\" [matMenuTriggerFor]=\"menu\" class=\"profile-wrapper\">\r\n <div class=\"profile-icon\">\r\n @if (userInitials) {\r\n {{userInitials}}\r\n } @else {\r\n <mat-icon>person</mat-icon>\r\n }\r\n </div>\r\n\r\n <ng-container *ngIf=\"!collapsed\">\r\n <span class=\"profile-name\">\r\n {{ username ?? 'MENU.ANONYMOUS' | translate }}\r\n </span>\r\n\r\n <mat-icon *ngIf=\"state.menuOpen; else iconDown\" class=\"profile-arrow spin\">{{\"keyboard_arrow_down\"}}</mat-icon>\r\n\r\n <ng-template #iconDown>\r\n <mat-icon class=\"profile-arrow spin\">{{\"keyboard_arrow_up\" }}</mat-icon>\r\n </ng-template>\r\n </ng-container>\r\n </button>\r\n\r\n <mat-menu #menu=\"matMenu\" class=\"profile-menu\">\r\n @for (item of menuSettings.userOptions; track item.label) {\r\n @if (item.link) {\r\n @if (item.link.isExternal) {\r\n <a class=\"mat-mdc-menu-item\" [href]=\"item.link.href\" target=\"_blank\" (click)=\"linkCallback(item.link)\">\r\n <ng-container\r\n *ngTemplateOutlet=\"profileMenuItem; context: { icon: item.icon, label: item.label }\">\r\n </ng-container>\r\n </a>\r\n } @else {\r\n <a class=\"mat-mdc-menu-item\" [routerLink]=\"item.link.href\" (click)=\"linkCallback(item.link)\">\r\n <ng-container\r\n *ngTemplateOutlet=\"profileMenuItem; context: { icon: item.icon, label: item.label }\">\r\n </ng-container>\r\n </a>\r\n }\r\n } @else {\r\n <button\r\n mat-menu-item\r\n class=\"profile-option\"\r\n (click)=\"item.button?.callback()\"\r\n >\r\n <ng-container\r\n *ngTemplateOutlet=\"profileMenuItem; context: { icon: item.icon, label: item.label }\">\r\n </ng-container>\r\n </button>\r\n }\r\n }\r\n </mat-menu>\r\n </div>\r\n\r\n <ng-template #profileMenuItem let-icon=\"icon\" let-label=\"label\">\r\n @if (icon) {\r\n @if (!icon?.isCustom) {\r\n <span class=\"material-icons profile-option-icon\" [class.material-icons-outlined]=\"icon?.isOutlined\">\r\n {{icon?.name}}\r\n </span>\r\n } @else {\r\n <mat-icon class=\"profile-option-icon\" [svgIcon]=\"icon?.name\"></mat-icon>\r\n }\r\n }\r\n {{ label | translate }}\r\n </ng-template>\r\n</div>\r\n", styles: ["a{text-decoration:none}.no-click{pointer-events:none!important}.mobile-header{display:flex;justify-content:space-between;padding:23px 27px;background-color:#fcfcfc;border:1px solid var(--base-70)}.mobile.menu-container.collapsed{display:none!important}.mobile.menu-container:not(.collapsed){display:block!important;position:fixed;min-width:100vw;min-height:100dvh;z-index:1000}.mobile .profile-wrapper{position:relative}.mobile .profile-wrapper mat-icon{position:absolute!important;right:0}.menu-product-name{white-space:nowrap;margin-left:12px;font-weight:600;color:var(--base-10)}.menu-container{max-height:100dvh;white-space:nowrap;height:100%;transition:width .2s ease;min-height:100dvh;overflow:auto;background:var(--base-100);border-right:2px solid var(--base-95)}.menu-container .menu-container-header{margin:24px 0;max-height:40px}.menu-container.collapsed .menu-container-header{margin:24px 0 32px!important}.menu-container .content:not(.collapsed){overflow-x:hidden;padding:0 12px}.menu-container .content:not(.collapsed) .menu-logo{margin-left:16px;max-width:100%}.menu-container .divider{width:100%}.menu-container .profile{position:relative;margin-top:100px}.menu-container .profile-wrapper{background:none;color:var(--base-30);display:flex;align-items:center;justify-content:start;width:100%;position:absolute;bottom:0;margin:32px 0}.menu-container .profile-icon{display:flex;justify-content:center;align-items:center;min-width:40px;height:40px;border-radius:100%;color:var(--base-0);background-color:var(--base-70);font-size:16px;font-weight:600}.menu-container .profile-name{max-width:145px;overflow:hidden;margin-left:12px;text-overflow:ellipsis}.collapsed .profile-wrapper{margin:36px 0!important}.mobile .profile-name{max-width:60vw}.profile-option-icon{vertical-align:middle;margin:0 5px 5px 0}:host ::ng-deep .menu-item{display:flex;padding:16px!important;border-radius:4px!important}:host ::ng-deep .child-list .menu-item{padding:8px 46px!important}:host ::ng-deep .collapsed .menu-item{padding:0!important;width:40px;height:40px;border-radius:50%!important}:host ::ng-deep .active-menu-item{background-color:var(--base-95)!important}:host ::ng-deep .menu-item-title{margin-left:12px}tld-menu-icon{margin-right:10px}.profile-arrow{position:absolute;right:3px;margin-right:20px}.spin{animation:spinArrow .3s forwards}:host::ng-deep button.collapse-btn .mat-mdc-button-persistent-ripple,:host::ng-deep button.toggler .mat-mdc-button-persistent-ripple{display:none}:host ::ng-deep .mobile .child-list .menu-item{padding:8px 54px!important}::ng-deep .cdk-overlay-container .profile-menu{margin:10px 0!important}::ng-deep .mat-mdc-menu-item .mat-icon{margin-right:5px!important}::ng-deep .collapsed .profile-wrapper{justify-content:center!important}::ng-deep .profile-menu a{font-weight:400!important;display:flex;align-items:center;gap:5px}::ng-deep .profile-menu a:hover{color:var(--mat-menu-item-label-text-color, var(--mat-app-on-surface))!important;text-decoration:inherit}@keyframes spinArrow{to{transform:rotate(180deg)}}\n"] }]
359
+ args: [{ selector: 'lib-side-nav-menu', template: "<div fxHide.gt-xs>\r\n <div [fxHide]=\"!collapsed\" class=\"mobile-header\">\r\n <a [libPlausibleEvent]=\"LOGOCLICK_PLAUSIBLE_EVENT\" fxFlex=\"3.125em\" [href]=\"baseUrl\" [class.no-click]=\"menuSettings?.disableLogoNavigation\"\r\n [attr.aria-label]=\"'MENU.ARIA_LABELS.LOGO' | translate\" (click)=\"logoClick($event)\" fxLayoutAlign=\"start center\"\r\n >\r\n <img height=\"40\" width=\"40\" class=\"menu-logo\" [src]=\"menuLogoImage\" alt=\"logo\" />\r\n <span class=\"menu-product-name\">\r\n {{ productName }}\r\n </span>\r\n </a>\r\n\r\n <button\r\n mat-icon-button\r\n class=\"toggler\"\r\n [attr.aria-label]=\"'ARIA_LABELS.MENU_TOGGLER' | translate\"\r\n [libPlausibleEvent]=\"collapsed ? EXPAND_PLAUSIBLE_EVENT : COLLAPSE_PLAUSIBLE_EVENT\"\r\n (click)=\"toggleCollapse()\"\r\n >\r\n <mat-icon>menu</mat-icon>\r\n </button>\r\n </div>\r\n</div>\r\n\r\n<div [ngClass.lt-sm]=\"'mobile'\" class=\"menu-container\" [style.width]=\"sideNavWidth\" fxLayout=\"column\" [class.collapsed]=\"collapsed\">\r\n <div class=\"content\" fxLayout=\"column\" fxFlexFill>\r\n <div class=\"menu-container-header\" fxLayout=\"row\" [fxLayoutAlign]=\"collapsed ? 'center center' : 'space-between center'\">\r\n <a *ngIf=\"!collapsed\" [libPlausibleEvent]=\"LOGOCLICK_PLAUSIBLE_EVENT\" fxFlex=\"3.125em\" [class.no-click]=\"menuSettings?.disableLogoNavigation\" [href]=\"baseUrl\"\r\n [attr.aria-label]=\"'MENU.ARIA_LABELS.LOGO' | translate\" (click)=\"logoClick($event)\" fxLayoutAlign=\"start center\"\r\n >\r\n <img height=\"40\" width=\"40\" class=\"menu-logo\" [src]=\"menuLogoImage\" alt=\"logo\" />\r\n <span class=\"menu-product-name\">\r\n {{ productName }}\r\n </span>\r\n </a>\r\n\r\n <button\r\n mat-icon-button\r\n class=\"toggler\"\r\n [attr.aria-label]=\"'ARIA_LABELS.MENU_TOGGLER' | translate\"\r\n [libPlausibleEvent]=\"collapsed ? EXPAND_PLAUSIBLE_EVENT : COLLAPSE_PLAUSIBLE_EVENT\"\r\n [matTooltip]=\"(collapsed ? 'MENU.EXPAND' : 'MENU.COLLAPSE') | translate\"\r\n (click)=\"toggleCollapse()\"\r\n >\r\n <mat-icon fxHide.gt-xs>close</mat-icon>\r\n <mat-icon fxHide.lt-sm>{{ collapsed ? 'keyboard_double_arrow_right' : 'keyboard_double_arrow_left' }}</mat-icon>\r\n </button>\r\n </div>\r\n\r\n <div class=\"menu-wrapper\" fxLayout=\"column\">\r\n <menu-columns (toggleCollapseEvent)=\"toggleCollapse()\" [direction]=\"direction\" role=\"navigation\" [isOpen]=\"!collapsed\"\r\n [active]=\"active\"></menu-columns>\r\n </div>\r\n <div fxFlex fxLayout=\"column\">\r\n <ng-content></ng-content>\r\n </div>\r\n <div class=\"profile\">\r\n <button #state=\"matMenuTrigger\" [matMenuTriggerFor]=\"menu\" class=\"profile-wrapper\">\r\n <div class=\"profile-icon\">\r\n @if (userInitials) {\r\n {{userInitials}}\r\n } @else {\r\n <mat-icon>person</mat-icon>\r\n }\r\n </div>\r\n\r\n <ng-container *ngIf=\"!collapsed\">\r\n <span class=\"profile-name\">\r\n {{ username ?? 'MENU.ANONYMOUS' | translate }}\r\n </span>\r\n\r\n <mat-icon *ngIf=\"state.menuOpen; else iconDown\" class=\"profile-arrow spin\">{{\"keyboard_arrow_down\"}}</mat-icon>\r\n\r\n <ng-template #iconDown>\r\n <mat-icon class=\"profile-arrow spin\">{{\"keyboard_arrow_up\" }}</mat-icon>\r\n </ng-template>\r\n </ng-container>\r\n </button>\r\n\r\n <mat-menu #menu=\"matMenu\" class=\"profile-menu\">\r\n @for (item of menuSettings.userOptions; track item.label) {\r\n @if (item.link) {\r\n @if (item.link.isExternal) {\r\n <a class=\"mat-mdc-menu-item\" [href]=\"item.link.href\" target=\"_blank\" (click)=\"linkCallback(item.link)\">\r\n <ng-container\r\n *ngTemplateOutlet=\"profileMenuItem; context: { icon: item.icon, label: item.label }\">\r\n </ng-container>\r\n </a>\r\n } @else {\r\n <a class=\"mat-mdc-menu-item\" [routerLink]=\"item.link.href\" (click)=\"linkCallback(item.link)\">\r\n <ng-container\r\n *ngTemplateOutlet=\"profileMenuItem; context: { icon: item.icon, label: item.label }\">\r\n </ng-container>\r\n </a>\r\n }\r\n } @else {\r\n <button\r\n mat-menu-item\r\n class=\"profile-option\"\r\n (click)=\"item.button?.callback()\"\r\n >\r\n <ng-container\r\n *ngTemplateOutlet=\"profileMenuItem; context: { icon: item.icon, label: item.label }\">\r\n </ng-container>\r\n </button>\r\n }\r\n }\r\n </mat-menu>\r\n </div>\r\n\r\n <ng-template #profileMenuItem let-icon=\"icon\" let-label=\"label\">\r\n @if (icon) {\r\n @if (!icon?.isCustom) {\r\n <span class=\"material-icons profile-option-icon\" [class.material-icons-outlined]=\"icon?.isOutlined\">\r\n {{icon?.name}}\r\n </span>\r\n } @else {\r\n <mat-icon class=\"profile-option-icon\" [svgIcon]=\"icon?.name\"></mat-icon>\r\n }\r\n }\r\n {{ label | translate }}\r\n </ng-template>\r\n</div>\r\n", styles: ["a{text-decoration:none}.no-click{pointer-events:none!important}.mobile-header{display:flex;justify-content:space-between;padding:23px 27px;background-color:#fcfcfc;border:1px solid var(--base-70)}.mobile.menu-container.collapsed{display:none!important}.mobile.menu-container:not(.collapsed){display:block!important;position:fixed;min-width:100vw;min-height:100dvh;z-index:1000}.menu-container ::-webkit-scrollbar{width:5px}.menu-container ::-webkit-scrollbar-thumb{background:var(--base-95);background-clip:padding-box}.menu-container ::-webkit-scrollbar-track{background:var(--base-100)}.mobile .profile-wrapper{position:relative}.mobile .profile-wrapper mat-icon{position:absolute!important;right:0}.menu-product-name{white-space:nowrap;margin-left:12px;font-weight:600;color:var(--base-10)}.menu-container{max-height:100dvh;white-space:nowrap;height:100%;transition:width .2s ease;min-height:100dvh;overflow:auto;background:var(--base-100);border-right:2px solid var(--base-95)}.menu-container .menu-container-header{margin:24px 0;max-height:40px}.menu-container.collapsed .menu-container-header{margin:24px 0 32px!important}.menu-container .content:not(.collapsed){overflow-x:hidden;padding:0 12px}.menu-container .content:not(.collapsed) .menu-logo{margin-left:16px;max-width:100%}.menu-container .divider{width:100%}.menu-container .profile{position:relative;margin-top:100px}.menu-container .profile-wrapper{background:none;color:var(--base-30);display:flex;align-items:center;justify-content:start;width:100%;position:absolute;bottom:0;margin:32px 0}.menu-container .profile-icon{display:flex;justify-content:center;align-items:center;min-width:40px;height:40px;border-radius:100%;color:var(--base-0);background-color:var(--base-70);font-size:16px;font-weight:600}.menu-container .profile-name{max-width:145px;overflow:hidden;margin-left:12px;text-overflow:ellipsis}.collapsed .profile-wrapper{margin:36px 0!important}.mobile .profile-name{max-width:60vw}.profile-option-icon{vertical-align:middle;margin:0 5px 5px 0}:host ::ng-deep .menu-item{display:flex;padding:16px!important;border-radius:4px!important}:host ::ng-deep .child-list .menu-item{padding:8px 46px!important}:host ::ng-deep .collapsed .menu-item{padding:0!important;width:40px;height:40px;border-radius:50%!important}:host ::ng-deep .active-menu-item{background-color:var(--base-95)!important}:host ::ng-deep .menu-item-title{margin-left:12px}tld-menu-icon{margin-right:10px}.profile-arrow{position:absolute;right:3px;margin-right:20px}.spin{animation:spinArrow .3s forwards}:host::ng-deep button.collapse-btn .mat-mdc-button-persistent-ripple,:host::ng-deep button.toggler .mat-mdc-button-persistent-ripple{display:none}:host ::ng-deep .mobile .child-list .menu-item{padding:8px 54px!important}::ng-deep .cdk-overlay-container .profile-menu{margin:10px 0!important}::ng-deep .mat-mdc-menu-item .mat-icon{margin-right:5px!important}::ng-deep .collapsed .profile-wrapper{justify-content:center!important}::ng-deep .profile-menu a{font-weight:400!important;display:flex;align-items:center;gap:5px}::ng-deep .profile-menu a:hover{color:var(--mat-menu-item-label-text-color, var(--mat-app-on-surface))!important;text-decoration:inherit}@keyframes spinArrow{to{transform:rotate(180deg)}}\n"] }]
360
360
  }], () => [{ type: i1.StrapiLinkService }, { type: i2.DOMService }, { type: i3.MenuItemsService }], { username: [{
361
361
  type: Input
362
362
  }], menuSettings: [{
@@ -365,4 +365,4 @@ export class SideNavMenuComponent extends NavBaseComponent {
365
365
  type: Input
366
366
  }] }); })();
367
367
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SideNavMenuComponent, { className: "SideNavMenuComponent", filePath: "lib\\components\\side-nav-menu\\side-nav-menu.component.ts", lineNumber: 15 }); })();
368
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZS1uYXYtbWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbWVudS9zcmMvbGliL2NvbXBvbmVudHMvc2lkZS1uYXYtbWVudS9zaWRlLW5hdi1tZW51LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1tZW51L3NyYy9saWIvY29tcG9uZW50cy9zaWRlLW5hdi1tZW51L3NpZGUtbmF2LW1lbnUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQ3BFLE9BQU8sRUFBOEIsZ0JBQWdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVyRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUN1QjVELDRCQUVDOztJQUR5RCxnTEFBUyx3QkFBaUIsS0FBQztJQUVuRix5QkFBaUY7SUFDakYsK0JBQWdDO0lBQzlCLFlBQ0Y7SUFDRixBQURFLGlCQUFPLEVBQ0w7OztJQVBtRiwwR0FBc0Q7SUFBQyxBQUF4SCxvRUFBK0MsMENBQXlGOztJQUc5RyxlQUFxQjtJQUFyQiw0REFBcUI7SUFFakUsZUFDRjtJQURFLG1EQUNGOzs7SUEyQkUsWUFDRjs7O0lBREUsb0RBQ0Y7OztJQUNFLGdDQUFVO0lBQUEsc0JBQU07SUFBQSxpQkFBVzs7O0lBUzdCLG9DQUEyRTtJQUFBLFlBQXlCO0lBQUEsaUJBQVc7O0lBQXBDLGNBQXlCO0lBQXpCLDJDQUF5Qjs7O0lBR2xHLG9DQUFxQztJQUFBLFlBQXdCO0lBQUEsaUJBQVc7O0lBQW5DLGNBQXdCO0lBQXhCLHlDQUF3Qjs7O0lBUmpFLDZCQUFpQztJQUMvQixnQ0FBMkI7SUFDekIsWUFDRjs7SUFBQSxpQkFBTztJQUlQLEFBRkEsZ0dBQTJFLHlI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Q1g7O1lBSWpELGVBQThFO1lBQTlFLGtHQUE4RTtZQUtoRCxlQUF1QjtZQUM1RSxBQUQrRixBQUExQyx5Q0FBdUIsMEJBQXdDLHNCQUNuRztZQU1XLGVBQTBCO1lBQTFCLDRDQUEwQjtZQUV0RCxlQUlDO1lBSkQsNENBSUM7WUFHWSxlQUFnQjtZQUFoQixxQ0FBZ0I7WUFjL0IsZUEwQkM7WUExQkQsMkNBMEJDOzs7aUZEM0ZNLG9CQUFvQjtjQUxoQyxTQUFTOzJCQUNFLG1CQUFtQjswR0FPaEIsUUFBUTtrQkFBcEIsS0FBSztZQU1HLFlBQVk7a0JBQXBCLEtBQUs7WUFTRyxXQUFXO2tCQUFuQixLQUFLOztrRkFsQkssb0JBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRE9NU2VydmljZSwgUGxhdXNpYmxlRXZlbnQsIFJlc29sdXRpb25IZWxwZXIgfSBmcm9tICdAdGlsZGUtbmxwL25neC1jb21tb24nO1xyXG5pbXBvcnQgeyBTdHJhcGlMaW5rU2VydmljZSB9IGZyb20gJ0B0aWxkZS1ubHAvbmd4LXN0cmFwaSc7XHJcbmltcG9ydCB7IE5hdkJhc2VDb21wb25lbnQgfSBmcm9tICcuLi9uYXYtYmFzZS9uYXYtYmFzZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTaWRlTmF2U2V0dGluZ3MgfSBmcm9tICcuL21vZGVscy9zaWRlLW5hdi1zZXR0aW5ncy5tb2RlbCc7XHJcbmltcG9ydCB7IE1lbnVJdGVtc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9tZW51LWl0ZW1zLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBVc2VyTWVudU9wdGlvbkxpbmsgfSBmcm9tICcuL21vZGVscy91c2VyLW1lbnUtb3B0aW9uLWxpbmsubW9kZWwnO1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLXNpZGUtbmF2LW1lbnUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9zaWRlLW5hdi1tZW51LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9zaWRlLW5hdi1tZW51LmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFNpZGVOYXZNZW51Q29tcG9uZW50IGV4dGVuZHMgTmF2QmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICAjdXNlcm5hbWUhOiBzdHJpbmc7XHJcbiAgZ2V0IHVzZXJuYW1lKCkgeyByZXR1cm4gdGhpcy4jdXNlcm5hbWU7IH1cclxuICBASW5wdXQoKSBzZXQgdXNlcm5hbWUodmFsdWUpIHtcclxuICAgIC8vIGlmIHVzZXJuYW1lIGlzIHBhc3NlZCB3aGl0aCB3aGl0ZXNwYWNlIGluIGJlZ2dpbmluaW5nLCBpdCBicmVha3MgVUksIHNvIHRyaW0gaXQgZm9yIHNhZmV0eS5cclxuICAgIHRoaXMuI3VzZXJuYW1lID0gdmFsdWUudHJpbSgpO1xyXG4gICAgdGhpcy5zZXRVc2VySW5pdGlhbHMoKTtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpIG1lbnVTZXR0aW5nczogU2lkZU5hdlNldHRpbmdzID0ge1xyXG4gICAgZXhwYW5kZWRXaWR0aDogJzI0MXB4JyxcclxuICAgIGNvbGxhcHNlZFdpZHRoOiAnNTZweCcsXHJcbiAgICBtZW51TG9nbzogJycsXHJcbiAgICBtZW51TG9nb0NvbGxhcHNlZDogJycsXHJcbiAgICBkaXNhYmxlU3RyYXBpOiBmYWxzZSxcclxuICAgIGRpc2FibGVMb2dvTmF2aWdhdGlvbjogZmFsc2VcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpIHByb2R1Y3ROYW1lITogc3RyaW5nO1xyXG5cclxuICB1c2VySW5pdGlhbHMhOiBzdHJpbmc7XHJcbiAgY29sbGFwc2VkID0gZmFsc2U7XHJcblxyXG4gIHJlYWRvbmx5IENPTExBUFNFRF9MT0NBTF9TVE9SQUdFX0tFWSA9IFwiVExEX01FTlVfU0lERV9OQVZfQ09MTEFQU0VEXCI7XHJcblxyXG4gIC8vI3JlZ2lvbiBQbGF1c2libGUgZXZlbnQgdmFyaWFibGVzIGZvciBjb2xsYXBzZSBidXR0b25cclxuICBwcml2YXRlIHJlYWRvbmx5IENPTExBUFNFX1BMQVVTSUJMRV9FVkVOVF9JRCA9IFwiY29sbGFwc2VNZW51XCI7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBDT0xMQVBTRV9QTEFVU0lCTEVfQUNUSU9OX0tFWSA9IFwiYWN0aW9uXCI7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBMT0dPQ0xJQ0tfUExBVVNJQkxFX0FDVElPTl9JRCA9IFwidGlsZGVfbG9nb19jbGlja1wiXHJcblxyXG4gIHJlYWRvbmx5IExPR09DTElDS19QTEFVU0lCTEVfRVZFTlQ6IFBsYXVzaWJsZUV2ZW50ID0ge1xyXG4gICAgZXZlbnRJZDogdGhpcy5MT0dPQ0xJQ0tfUExBVVNJQkxFX0FDVElPTl9JRCxcclxuICAgIHByb3BlcnRpZXM6IFtdXHJcbiAgfVxyXG5cclxuICByZWFkb25seSBFWFBBTkRfUExBVVNJQkxFX0VWRU5UOiBQbGF1c2libGVFdmVudCA9IHtcclxuICAgIGV2ZW50SWQ6IHRoaXMuQ09MTEFQU0VfUExBVVNJQkxFX0VWRU5UX0lELFxyXG4gICAgcHJvcGVydGllczogW3sga2V5OiB0aGlzLkNPTExBUFNFX1BMQVVTSUJMRV9BQ1RJT05fS0VZLCB2YWx1ZTogXCJleHBhbmRcIiB9XVxyXG4gIH1cclxuXHJcbiAgcmVhZG9ubHkgQ09MTEFQU0VfUExBVVNJQkxFX0VWRU5UOiBQbGF1c2libGVFdmVudCA9IHtcclxuICAgIGV2ZW50SWQ6IHRoaXMuQ09MTEFQU0VfUExBVVNJQkxFX0VWRU5UX0lELFxyXG4gICAgcHJvcGVydGllczogW3sga2V5OiB0aGlzLkNPTExBUFNFX1BMQVVTSUJMRV9BQ1RJT05fS0VZLCB2YWx1ZTogXCJjb2xsYXBzZVwiIH1dXHJcbiAgfVxyXG4gIC8vI2VuZHJlZ2lvblxyXG5cclxuICByZWFkb25seSBiYXNlVXJsOiBzdHJpbmcgfCB1bmRlZmluZWQ7XHJcblxyXG4gIGdldCBtZW51TG9nb0ltYWdlKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5jb2xsYXBzZWRcclxuICAgICAgPyB0aGlzLm1lbnVTZXR0aW5ncy5tZW51TG9nb0NvbGxhcHNlZCA/PyB0aGlzLm1lbnVTZXR0aW5ncy5tZW51TG9nb1xyXG4gICAgICA6IHRoaXMubWVudVNldHRpbmdzLm1lbnVMb2dvO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHNpZGVOYXZXaWR0aCgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xyXG4gICAgcmV0dXJuIHRoaXMuY29sbGFwc2VkID8gdGhpcy5tZW51U2V0dGluZ3MuY29sbGFwc2VkV2lkdGggOiB0aGlzLm1lbnVTZXR0aW5ncy5leHBhbmRlZFdpZHRoO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgc3RyYXBpTGlua1NlcnZpY2U6IFN0cmFwaUxpbmtTZXJ2aWNlLFxyXG4gICAgcmVhZG9ubHkgZG9tU2VydmljZTogRE9NU2VydmljZSxcclxuICAgIHJlYWRvbmx5IG1lbnVJdGVtczogTWVudUl0ZW1zU2VydmljZSxcclxuICApIHtcclxuICAgIHN1cGVyKG1lbnVJdGVtcyk7XHJcbiAgICB0aGlzLmJhc2VVcmwgPSBtZW51SXRlbXMubWVudVNoYXJlZENvbmZpZy5iYXNlVXJsIHx8ICcnO1xyXG4gIH1cclxuXHJcbiAgb3ZlcnJpZGUgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xyXG4gICAgdGhpcy5nZXRDb2xhcHNlZEZyb21Mb2NhbFN0b3JhZ2UoKTtcclxuICAgIHRoaXMuc2V0VXNlckluaXRpYWxzKCk7XHJcbiAgfVxyXG5cclxuICBsb2dvQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcclxuICAgIHRoaXMuc3RyYXBpTGlua1NlcnZpY2Uuc3RyYXBpTGlua0NsaWNrKGV2ZW50KTtcclxuICB9XHJcblxyXG4gIHRvZ2dsZUNvbGxhcHNlKCkge1xyXG4gICAgdGhpcy5jb2xsYXBzZWQgPSAhdGhpcy5jb2xsYXBzZWQ7XHJcbiAgICB0aGlzLnNldENvbGFwc2VkRnJvbUxvY2FsU3RvcmFnZSgpO1xyXG4gIH1cclxuXHJcbiAgbGlua0NhbGxiYWNrKGxpbms6IFVzZXJNZW51T3B0aW9uTGluaykge1xyXG4gICAgaWYgKGxpbmsuY2FsbGJhY2spIHtcclxuICAgICAgbGluay5jYWxsYmFjaygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRDb2xhcHNlZEZyb21Mb2NhbFN0b3JhZ2UoKSB7XHJcbiAgICBpZiAoIXRoaXMuZG9tU2VydmljZS5sb2NhbFN0b3JhZ2UpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuY29sbGFwc2VkID0gKHRoaXMuZG9tU2VydmljZS5sb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLkNPTExBUFNFRF9MT0NBTF9TVE9SQUdFX0tFWSkgPT0gJ3RydWUnIHx8IFJlc29sdXRpb25IZWxwZXIuaXNNb2JpbGVSZXMoKSkgPyB0cnVlIDogZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldENvbGFwc2VkRnJvbUxvY2FsU3RvcmFnZSgpIHtcclxuICAgIGlmICghdGhpcy5kb21TZXJ2aWNlLmxvY2FsU3RvcmFnZSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLmRvbVNlcnZpY2UubG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5DT0xMQVBTRURfTE9DQUxfU1RPUkFHRV9LRVksIHRoaXMuY29sbGFwc2VkLnRvU3RyaW5nKCkpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRVc2VySW5pdGlhbHMoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMudXNlcm5hbWUpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIGRpc3BsYXlpbmcgZmlyc3QgbGV0dGVycyBvZiBuYW1lIGFuZCBzdXJuYW1lXHJcbiAgICBjb25zdCBzcGxpdHRlZFVzZXJuYW1lID0gdGhpcy51c2VybmFtZS5zcGxpdCgnICcpO1xyXG4gICAgaWYgKHNwbGl0dGVkVXNlcm5hbWUubGVuZ3RoID09PSAxKSB7XHJcbiAgICAgIC8vIElmIHRoZXJlJ3Mgb25seSBvbmUgd29yZCwgdXNlIHRoZSBmaXJzdCBsZXR0ZXJcclxuICAgICAgdGhpcy51c2VySW5pdGlhbHMgPSBzcGxpdHRlZFVzZXJuYW1lWzBdWzBdO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICAvLyBJZiB0aGVyZSBhcmUgbW9yZSB0aGFuIG9uZSB3b3JkLCB1c2UgdGhlIGZpcnN0IGxldHRlciBvZiB0aGUgZmlyc3QgdHdvIG5hbWVzXHJcbiAgICB0aGlzLnVzZXJJbml0aWFscyA9IHNwbGl0dGVkVXNlcm5hbWVbMF1bMF0gKyBzcGxpdHRlZFVzZXJuYW1lWzFdWzBdO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGZ4SGlkZS5ndC14cz5cclxuICA8ZGl2IFtmeEhpZGVdPVwiIWNvbGxhcHNlZFwiIGNsYXNzPVwibW9iaWxlLWhlYWRlclwiPlxyXG4gICAgPGEgW2xpYlBsYXVzaWJsZUV2ZW50XT1cIkxPR09DTElDS19QTEFVU0lCTEVfRVZFTlRcIiBmeEZsZXg9XCIzLjEyNWVtXCIgW2hyZWZdPVwiYmFzZVVybFwiIFtjbGFzcy5uby1jbGlja109XCJtZW51U2V0dGluZ3M/LmRpc2FibGVMb2dvTmF2aWdhdGlvblwiXHJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ01FTlUuQVJJQV9MQUJFTFMuTE9HTycgfCB0cmFuc2xhdGVcIiAoY2xpY2spPVwibG9nb0NsaWNrKCRldmVudClcIiBmeExheW91dEFsaWduPVwic3RhcnQgY2VudGVyXCJcclxuICAgID5cclxuICAgICAgPGltZyBoZWlnaHQ9XCI0MFwiIHdpZHRoPVwiNDBcIiBjbGFzcz1cIm1lbnUtbG9nb1wiIFtzcmNdPVwibWVudUxvZ29JbWFnZVwiIGFsdD1cImxvZ29cIiAvPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cIm1lbnUtcHJvZHVjdC1uYW1lXCI+XHJcbiAgICAgICAge3sgcHJvZHVjdE5hbWUgfX1cclxuICAgICAgPC9zcGFuPlxyXG4gICAgPC9hPlxyXG5cclxuICAgIDxidXR0b25cclxuICAgICAgbWF0LWljb24tYnV0dG9uXHJcbiAgICAgIGNsYXNzPVwidG9nZ2xlclwiXHJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0FSSUFfTEFCRUxTLk1FTlVfVE9HR0xFUicgfCB0cmFuc2xhdGVcIlxyXG4gICAgICBbbGliUGxhdXNpYmxlRXZlbnRdPVwiY29sbGFwc2VkID8gRVhQQU5EX1BMQVVTSUJMRV9FVkVOVCA6IENPTExBUFNFX1BMQVVTSUJMRV9FVkVOVFwiXHJcbiAgICAgIChjbGljayk9XCJ0b2dnbGVDb2xsYXBzZSgpXCJcclxuICAgID5cclxuICAgICAgPG1hdC1pY29uPm1lbnU8L21hdC1pY29uPlxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuPGRpdiBbbmdDbGFzcy5sdC1zbV09XCInbW9iaWxlJ1wiIGNsYXNzPVwibWVudS1jb250YWluZXJcIiBbc3R5bGUud2lkdGhdPVwic2lkZU5hdldpZHRoXCIgZnhMYXlvdXQ9XCJjb2x1bW5cIiBbY2xhc3MuY29sbGFwc2VkXT1cImNvbGxhcHNlZFwiPlxyXG4gIDxkaXYgY2xhc3M9XCJjb250ZW50XCIgZnhMYXlvdXQ9XCJjb2x1bW5cIiBmeEZsZXhGaWxsPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1lbnUtY29udGFpbmVyLWhlYWRlclwiIGZ4TGF5b3V0PVwicm93XCIgW2Z4TGF5b3V0QWxpZ25dPVwiY29sbGFwc2VkID8gJ2NlbnRlciBjZW50ZXInIDogJ3NwYWNlLWJldHdlZW4gY2VudGVyJ1wiPlxyXG4gICAgICA8YSAqbmdJZj1cIiFjb2xsYXBzZWRcIiBbbGliUGxhdXNpYmxlRXZlbnRdPVwiTE9HT0NMSUNLX1BMQVVTSUJMRV9FVkVOVFwiIGZ4RmxleD1cIjMuMTI1ZW1cIiBbY2xhc3Mubm8tY2xpY2tdPVwibWVudVNldHRpbmdzPy5kaXNhYmxlTG9nb05hdmlnYXRpb25cIiBbaHJlZl09XCJiYXNlVXJsXCJcclxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidNRU5VLkFSSUFfTEFCRUxTLkxPR08nIHwgdHJhbnNsYXRlXCIgKGNsaWNrKT1cImxvZ29DbGljaygkZXZlbnQpXCIgZnhMYXlvdXRBbGlnbj1cInN0YXJ0IGNlbnRlclwiXHJcbiAgICAgID5cclxuICAgICAgICA8aW1nIGhlaWdodD1cIjQwXCIgd2lkdGg9XCI0MFwiIGNsYXNzPVwibWVudS1sb2dvXCIgW3NyY109XCJtZW51TG9nb0ltYWdlXCIgYWx0PVwibG9nb1wiIC8+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJtZW51LXByb2R1Y3QtbmFtZVwiPlxyXG4gICAgICAgICAge3sgcHJvZHVjdE5hbWUgfX1cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICAgIDwvYT5cclxuXHJcbiAgICAgIDxidXR0b25cclxuICAgICAgICBtYXQtaWNvbi1idXR0b25cclxuICAgICAgICBjbGFzcz1cInRvZ2dsZXJcIlxyXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0FSSUFfTEFCRUxTLk1FTlVfVE9HR0xFUicgfCB0cmFuc2xhdGVcIlxyXG4gICAgICAgIFtsaWJQbGF1c2libGVFdmVudF09XCJjb2xsYXBzZWQgPyBFWFBBTkRfUExBVVNJQkxFX0VWRU5UIDogQ09MTEFQU0VfUExBVVNJQkxFX0VWRU5UXCJcclxuICAgICAgICBbbWF0VG9vbHRpcF09XCIoY29sbGFwc2VkID8gJ01FTlUuRVhQQU5EJyA6ICdNRU5VLkNPTExBUFNFJykgfCB0cmFuc2xhdGVcIlxyXG4gICAgICAgIChjbGljayk9XCJ0b2dnbGVDb2xsYXBzZSgpXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxtYXQtaWNvbiBmeEhpZGUuZ3QteHM+Y2xvc2U8L21hdC1pY29uPlxyXG4gICAgICAgIDxtYXQtaWNvbiBmeEhpZGUubHQtc20+e3sgY29sbGFwc2VkID8gJ2tleWJvYXJkX2RvdWJsZV9hcnJvd19yaWdodCcgOiAna2V5Ym9hcmRfZG91YmxlX2Fycm93X2xlZnQnIH19PC9tYXQtaWNvbj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwibWVudS13cmFwcGVyXCIgZnhMYXlvdXQ9XCJjb2x1bW5cIj5cclxuICAgICAgPG1lbnUtY29sdW1ucyAodG9nZ2xlQ29sbGFwc2VFdmVudCk9XCJ0b2dnbGVDb2xsYXBzZSgpXCIgW2RpcmVjdGlvbl09XCJkaXJlY3Rpb25cIiByb2xlPVwibmF2aWdhdGlvblwiIFtpc09wZW5dPVwiIWNvbGxhcHNlZFwiXHJcbiAgICAgICAgW2FjdGl2ZV09XCJhY3RpdmVcIj48L21lbnUtY29sdW1ucz5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBmeEZsZXggZnhMYXlvdXQ9XCJjb2x1bW5cIj5cclxuICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxyXG4gICAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cInByb2ZpbGVcIj5cclxuICAgIDxidXR0b24gI3N0YXRlPVwibWF0TWVudVRyaWdnZXJcIiBbbWF0TWVudVRyaWdnZXJGb3JdPVwibWVudVwiIGNsYXNzPVwicHJvZmlsZS13cmFwcGVyXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJwcm9maWxlLWljb25cIj5cclxuICAgICAgICBAaWYgKHVzZXJJbml0aWFscykge1xyXG4gICAgICAgICAge3t1c2VySW5pdGlhbHN9fVxyXG4gICAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgICAgPG1hdC1pY29uPnBlcnNvbjwvbWF0LWljb24+XHJcbiAgICAgICAgfVxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWNvbGxhcHNlZFwiPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwicHJvZmlsZS1uYW1lXCI+XHJcbiAgICAgICAgICB7eyB1c2VybmFtZSA/PyAnTUVOVS5BTk9OWU1PVVMnIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgPC9zcGFuPlxyXG5cclxuICAgICAgICA8bWF0LWljb24gKm5nSWY9XCJzdGF0ZS5tZW51T3BlbjsgZWxzZSBpY29uRG93blwiIGNsYXNzPVwicHJvZmlsZS1hcnJvdyBzcGluXCI+e3tcImtleWJvYXJkX2Fycm93X2Rvd25cIn19PC9tYXQtaWNvbj5cclxuXHJcbiAgICAgICAgPG5nLXRlbXBsYXRlICNpY29uRG93bj5cclxuICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cInByb2ZpbGUtYXJyb3cgc3BpblwiPnt7XCJrZXlib2FyZF9hcnJvd191cFwiIH19PC9tYXQtaWNvbj5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvYnV0dG9uPlxyXG5cclxuICAgIDxtYXQtbWVudSAjbWVudT1cIm1hdE1lbnVcIiBjbGFzcz1cInByb2ZpbGUtbWVudVwiPlxyXG4gICAgICBAZm9yIChpdGVtIG9mIG1lbnVTZXR0aW5ncy51c2VyT3B0aW9uczsgdHJhY2sgaXRlbS5sYWJlbCkge1xyXG4gICAgICAgIEBpZiAoaXRlbS5saW5rKSB7XHJcbiAgICAgICAgICBAaWYgKGl0ZW0ubGluay5pc0V4dGVybmFsKSB7XHJcbiAgICAgICAgICAgIDxhIGNsYXNzPVwibWF0LW1kYy1tZW51LWl0ZW1cIiBbaHJlZl09XCJpdGVtLmxpbmsuaHJlZlwiIHRhcmdldD1cIl9ibGFua1wiIChjbGljayk9XCJsaW5rQ2FsbGJhY2soaXRlbS5saW5rKVwiPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwicHJvZmlsZU1lbnVJdGVtOyBjb250ZXh0OiB7IGljb246IGl0ZW0uaWNvbiwgbGFiZWw6IGl0ZW0ubGFiZWwgfVwiPlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICB9IEBlbHNlIHtcclxuICAgICAgICAgICAgPGEgY2xhc3M9XCJtYXQtbWRjLW1lbnUtaXRlbVwiIFtyb3V0ZXJMaW5rXT1cIml0ZW0ubGluay5ocmVmXCIgKGNsaWNrKT1cImxpbmtDYWxsYmFjayhpdGVtLmxpbmspXCI+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJwcm9maWxlTWVudUl0ZW07IGNvbnRleHQ6IHsgaWNvbjogaXRlbS5pY29uLCBsYWJlbDogaXRlbS5sYWJlbCB9XCI+XHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgIH1cclxuICAgICAgICB9IEBlbHNlIHtcclxuICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgbWF0LW1lbnUtaXRlbVxyXG4gICAgICAgICAgICBjbGFzcz1cInByb2ZpbGUtb3B0aW9uXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cIml0ZW0uYnV0dG9uPy5jYWxsYmFjaygpXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwicHJvZmlsZU1lbnVJdGVtOyBjb250ZXh0OiB7IGljb246IGl0ZW0uaWNvbiwgbGFiZWw6IGl0ZW0ubGFiZWwgfVwiPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICA8L21hdC1tZW51PlxyXG4gIDwvZGl2PlxyXG5cclxuICA8bmctdGVtcGxhdGUgI3Byb2ZpbGVNZW51SXRlbSBsZXQtaWNvbj1cImljb25cIiBsZXQtbGFiZWw9XCJsYWJlbFwiPlxyXG4gICAgQGlmIChpY29uKSB7XHJcbiAgICAgIEBpZiAoIWljb24/LmlzQ3VzdG9tKSB7XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1pY29ucyBwcm9maWxlLW9wdGlvbi1pY29uXCIgW2NsYXNzLm1hdGVyaWFsLWljb25zLW91dGxpbmVkXT1cImljb24/LmlzT3V0bGluZWRcIj5cclxuICAgICAgICAgIHt7aWNvbj8ubmFtZX19XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgICB9IEBlbHNlIHtcclxuICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJwcm9maWxlLW9wdGlvbi1pY29uXCIgW3N2Z0ljb25dPVwiaWNvbj8ubmFtZVwiPjwvbWF0LWljb24+XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHt7IGxhYmVsIHwgdHJhbnNsYXRlIH19XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuPC9kaXY+XHJcbiJdfQ==
368
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZS1uYXYtbWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbWVudS9zcmMvbGliL2NvbXBvbmVudHMvc2lkZS1uYXYtbWVudS9zaWRlLW5hdi1tZW51LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1tZW51L3NyYy9saWIvY29tcG9uZW50cy9zaWRlLW5hdi1tZW51L3NpZGUtbmF2LW1lbnUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQ3BFLE9BQU8sRUFBOEIsZ0JBQWdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVyRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUN1QjVELDRCQUVDOztJQUR5RCxnTEFBUyx3QkFBaUIsS0FBQztJQUVuRix5QkFBaUY7SUFDakYsK0JBQWdDO0lBQzlCLFlBQ0Y7SUFDRixBQURFLGlCQUFPLEVBQ0w7OztJQVBtRiwwR0FBc0Q7SUFBQyxBQUF4SCxvRUFBK0MsMENBQXlGOztJQUc5RyxlQUFxQjtJQUFyQiw0REFBcUI7SUFFakUsZUFDRjtJQURFLG1EQUNGOzs7SUEyQkUsWUFDRjs7O0lBREUsb0RBQ0Y7OztJQUNFLGdDQUFVO0lBQUEsc0JBQU07SUFBQSxpQkFBVzs7O0lBUzdCLG9DQUEyRTtJQUFBLFlBQXlCO0lBQUEsaUJBQVc7O0lBQXBDLGNBQXlCO0lBQXpCLDJDQUF5Qjs7O0lBR2xHLG9DQUFxQztJQUFBLFlBQXdCO0lBQUEsaUJBQVc7O0lBQW5DLGNBQXdCO0lBQXhCLHlDQUF3Qjs7O0lBUmpFLDZCQUFpQztJQUMvQixnQ0FBMkI7SUFDekIsWUFDRjs7SUFBQSxpQkFBTztJQUlQLEFBRkEsZ0dBQTJFLHlI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Q1g7O1lBSWpELGVBQThFO1lBQTlFLGtHQUE4RTtZQUtoRCxlQUF1QjtZQUM1RSxBQUQrRixBQUExQyx5Q0FBdUIsMEJBQXdDLHNCQUNuRztZQU1XLGVBQTBCO1lBQTFCLDRDQUEwQjtZQUV0RCxlQUlDO1lBSkQsNENBSUM7WUFHWSxlQUFnQjtZQUFoQixxQ0FBZ0I7WUFjL0IsZUEwQkM7WUExQkQsMkNBMEJDOzs7aUZEM0ZNLG9CQUFvQjtjQUxoQyxTQUFTOzJCQUNFLG1CQUFtQjswR0FPaEIsUUFBUTtrQkFBcEIsS0FBSztZQU1HLFlBQVk7a0JBQXBCLEtBQUs7WUFTRyxXQUFXO2tCQUFuQixLQUFLOztrRkFsQkssb0JBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRE9NU2VydmljZSwgUGxhdXNpYmxlRXZlbnQsIFJlc29sdXRpb25IZWxwZXIgfSBmcm9tICdAdGlsZGUtbmxwL25neC1jb21tb24nO1xyXG5pbXBvcnQgeyBTdHJhcGlMaW5rU2VydmljZSB9IGZyb20gJ0B0aWxkZS1ubHAvbmd4LXN0cmFwaSc7XHJcbmltcG9ydCB7IE5hdkJhc2VDb21wb25lbnQgfSBmcm9tICcuLi9uYXYtYmFzZS9uYXYtYmFzZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTaWRlTmF2U2V0dGluZ3MgfSBmcm9tICcuL21vZGVscy9zaWRlLW5hdi1zZXR0aW5ncy5tb2RlbCc7XHJcbmltcG9ydCB7IE1lbnVJdGVtc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9tZW51LWl0ZW1zLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBVc2VyTWVudU9wdGlvbkxpbmsgfSBmcm9tICcuL21vZGVscy91c2VyLW1lbnUtb3B0aW9uLWxpbmsubW9kZWwnO1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLXNpZGUtbmF2LW1lbnUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9zaWRlLW5hdi1tZW51LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9zaWRlLW5hdi1tZW51LmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFNpZGVOYXZNZW51Q29tcG9uZW50IGV4dGVuZHMgTmF2QmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICAjdXNlcm5hbWUhOiBzdHJpbmc7XHJcbiAgZ2V0IHVzZXJuYW1lKCkgeyByZXR1cm4gdGhpcy4jdXNlcm5hbWU7IH1cclxuICBASW5wdXQoKSBzZXQgdXNlcm5hbWUodmFsdWUpIHtcclxuICAgIC8vIGlmIHVzZXJuYW1lIGlzIHBhc3NlZCB3aGl0aCB3aGl0ZXNwYWNlIGluIGJlZ2dpbmluaW5nLCBpdCBicmVha3MgVUksIHNvIHRyaW0gaXQgZm9yIHNhZmV0eS5cclxuICAgIHRoaXMuI3VzZXJuYW1lID0gdmFsdWU/LnRyaW0oKTtcclxuICAgIHRoaXMuc2V0VXNlckluaXRpYWxzKCk7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKSBtZW51U2V0dGluZ3M6IFNpZGVOYXZTZXR0aW5ncyA9IHtcclxuICAgIGV4cGFuZGVkV2lkdGg6ICcyNDFweCcsXHJcbiAgICBjb2xsYXBzZWRXaWR0aDogJzU2cHgnLFxyXG4gICAgbWVudUxvZ286ICcnLFxyXG4gICAgbWVudUxvZ29Db2xsYXBzZWQ6ICcnLFxyXG4gICAgZGlzYWJsZVN0cmFwaTogZmFsc2UsXHJcbiAgICBkaXNhYmxlTG9nb05hdmlnYXRpb246IGZhbHNlXHJcbiAgfVxyXG5cclxuICBASW5wdXQoKSBwcm9kdWN0TmFtZSE6IHN0cmluZztcclxuXHJcbiAgdXNlckluaXRpYWxzITogc3RyaW5nO1xyXG4gIGNvbGxhcHNlZCA9IGZhbHNlO1xyXG5cclxuICByZWFkb25seSBDT0xMQVBTRURfTE9DQUxfU1RPUkFHRV9LRVkgPSBcIlRMRF9NRU5VX1NJREVfTkFWX0NPTExBUFNFRFwiO1xyXG5cclxuICAvLyNyZWdpb24gUGxhdXNpYmxlIGV2ZW50IHZhcmlhYmxlcyBmb3IgY29sbGFwc2UgYnV0dG9uXHJcbiAgcHJpdmF0ZSByZWFkb25seSBDT0xMQVBTRV9QTEFVU0lCTEVfRVZFTlRfSUQgPSBcImNvbGxhcHNlTWVudVwiO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgQ09MTEFQU0VfUExBVVNJQkxFX0FDVElPTl9LRVkgPSBcImFjdGlvblwiO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgTE9HT0NMSUNLX1BMQVVTSUJMRV9BQ1RJT05fSUQgPSBcInRpbGRlX2xvZ29fY2xpY2tcIlxyXG5cclxuICByZWFkb25seSBMT0dPQ0xJQ0tfUExBVVNJQkxFX0VWRU5UOiBQbGF1c2libGVFdmVudCA9IHtcclxuICAgIGV2ZW50SWQ6IHRoaXMuTE9HT0NMSUNLX1BMQVVTSUJMRV9BQ1RJT05fSUQsXHJcbiAgICBwcm9wZXJ0aWVzOiBbXVxyXG4gIH1cclxuXHJcbiAgcmVhZG9ubHkgRVhQQU5EX1BMQVVTSUJMRV9FVkVOVDogUGxhdXNpYmxlRXZlbnQgPSB7XHJcbiAgICBldmVudElkOiB0aGlzLkNPTExBUFNFX1BMQVVTSUJMRV9FVkVOVF9JRCxcclxuICAgIHByb3BlcnRpZXM6IFt7IGtleTogdGhpcy5DT0xMQVBTRV9QTEFVU0lCTEVfQUNUSU9OX0tFWSwgdmFsdWU6IFwiZXhwYW5kXCIgfV1cclxuICB9XHJcblxyXG4gIHJlYWRvbmx5IENPTExBUFNFX1BMQVVTSUJMRV9FVkVOVDogUGxhdXNpYmxlRXZlbnQgPSB7XHJcbiAgICBldmVudElkOiB0aGlzLkNPTExBUFNFX1BMQVVTSUJMRV9FVkVOVF9JRCxcclxuICAgIHByb3BlcnRpZXM6IFt7IGtleTogdGhpcy5DT0xMQVBTRV9QTEFVU0lCTEVfQUNUSU9OX0tFWSwgdmFsdWU6IFwiY29sbGFwc2VcIiB9XVxyXG4gIH1cclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgcmVhZG9ubHkgYmFzZVVybDogc3RyaW5nIHwgdW5kZWZpbmVkO1xyXG5cclxuICBnZXQgbWVudUxvZ29JbWFnZSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuY29sbGFwc2VkXHJcbiAgICAgID8gdGhpcy5tZW51U2V0dGluZ3MubWVudUxvZ29Db2xsYXBzZWQgPz8gdGhpcy5tZW51U2V0dGluZ3MubWVudUxvZ29cclxuICAgICAgOiB0aGlzLm1lbnVTZXR0aW5ncy5tZW51TG9nbztcclxuICB9XHJcblxyXG4gIGdldCBzaWRlTmF2V2lkdGgoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcclxuICAgIHJldHVybiB0aGlzLmNvbGxhcHNlZCA/IHRoaXMubWVudVNldHRpbmdzLmNvbGxhcHNlZFdpZHRoIDogdGhpcy5tZW51U2V0dGluZ3MuZXhwYW5kZWRXaWR0aDtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIHN0cmFwaUxpbmtTZXJ2aWNlOiBTdHJhcGlMaW5rU2VydmljZSxcclxuICAgIHJlYWRvbmx5IGRvbVNlcnZpY2U6IERPTVNlcnZpY2UsXHJcbiAgICByZWFkb25seSBtZW51SXRlbXM6IE1lbnVJdGVtc1NlcnZpY2UsXHJcbiAgKSB7XHJcbiAgICBzdXBlcihtZW51SXRlbXMpO1xyXG4gICAgdGhpcy5iYXNlVXJsID0gbWVudUl0ZW1zLm1lbnVTaGFyZWRDb25maWcuYmFzZVVybCB8fCAnJztcclxuICB9XHJcblxyXG4gIG92ZXJyaWRlIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgc3VwZXIubmdPbkluaXQoKTtcclxuICAgIHRoaXMuZ2V0Q29sYXBzZWRGcm9tTG9jYWxTdG9yYWdlKCk7XHJcbiAgICB0aGlzLnNldFVzZXJJbml0aWFscygpO1xyXG4gIH1cclxuXHJcbiAgbG9nb0NsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XHJcbiAgICB0aGlzLnN0cmFwaUxpbmtTZXJ2aWNlLnN0cmFwaUxpbmtDbGljayhldmVudCk7XHJcbiAgfVxyXG5cclxuICB0b2dnbGVDb2xsYXBzZSgpIHtcclxuICAgIHRoaXMuY29sbGFwc2VkID0gIXRoaXMuY29sbGFwc2VkO1xyXG4gICAgdGhpcy5zZXRDb2xhcHNlZEZyb21Mb2NhbFN0b3JhZ2UoKTtcclxuICB9XHJcblxyXG4gIGxpbmtDYWxsYmFjayhsaW5rOiBVc2VyTWVudU9wdGlvbkxpbmspIHtcclxuICAgIGlmIChsaW5rLmNhbGxiYWNrKSB7XHJcbiAgICAgIGxpbmsuY2FsbGJhY2soKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0Q29sYXBzZWRGcm9tTG9jYWxTdG9yYWdlKCkge1xyXG4gICAgaWYgKCF0aGlzLmRvbVNlcnZpY2UubG9jYWxTdG9yYWdlKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmNvbGxhcHNlZCA9ICh0aGlzLmRvbVNlcnZpY2UubG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5DT0xMQVBTRURfTE9DQUxfU1RPUkFHRV9LRVkpID09ICd0cnVlJyB8fCBSZXNvbHV0aW9uSGVscGVyLmlzTW9iaWxlUmVzKCkpID8gdHJ1ZSA6IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRDb2xhcHNlZEZyb21Mb2NhbFN0b3JhZ2UoKSB7XHJcbiAgICBpZiAoIXRoaXMuZG9tU2VydmljZS5sb2NhbFN0b3JhZ2UpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5kb21TZXJ2aWNlLmxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuQ09MTEFQU0VEX0xPQ0FMX1NUT1JBR0VfS0VZLCB0aGlzLmNvbGxhcHNlZC50b1N0cmluZygpKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0VXNlckluaXRpYWxzKCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLnVzZXJuYW1lKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICAvLyBkaXNwbGF5aW5nIGZpcnN0IGxldHRlcnMgb2YgbmFtZSBhbmQgc3VybmFtZVxyXG4gICAgY29uc3Qgc3BsaXR0ZWRVc2VybmFtZSA9IHRoaXMudXNlcm5hbWUuc3BsaXQoJyAnKTtcclxuICAgIGlmIChzcGxpdHRlZFVzZXJuYW1lLmxlbmd0aCA9PT0gMSkge1xyXG4gICAgICAvLyBJZiB0aGVyZSdzIG9ubHkgb25lIHdvcmQsIHVzZSB0aGUgZmlyc3QgbGV0dGVyXHJcbiAgICAgIHRoaXMudXNlckluaXRpYWxzID0gc3BsaXR0ZWRVc2VybmFtZVswXVswXTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgLy8gSWYgdGhlcmUgYXJlIG1vcmUgdGhhbiBvbmUgd29yZCwgdXNlIHRoZSBmaXJzdCBsZXR0ZXIgb2YgdGhlIGZpcnN0IHR3byBuYW1lc1xyXG4gICAgdGhpcy51c2VySW5pdGlhbHMgPSBzcGxpdHRlZFVzZXJuYW1lWzBdWzBdICsgc3BsaXR0ZWRVc2VybmFtZVsxXVswXTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBmeEhpZGUuZ3QteHM+XHJcbiAgPGRpdiBbZnhIaWRlXT1cIiFjb2xsYXBzZWRcIiBjbGFzcz1cIm1vYmlsZS1oZWFkZXJcIj5cclxuICAgIDxhIFtsaWJQbGF1c2libGVFdmVudF09XCJMT0dPQ0xJQ0tfUExBVVNJQkxFX0VWRU5UXCIgZnhGbGV4PVwiMy4xMjVlbVwiIFtocmVmXT1cImJhc2VVcmxcIiBbY2xhc3Mubm8tY2xpY2tdPVwibWVudVNldHRpbmdzPy5kaXNhYmxlTG9nb05hdmlnYXRpb25cIlxyXG4gICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidNRU5VLkFSSUFfTEFCRUxTLkxPR08nIHwgdHJhbnNsYXRlXCIgKGNsaWNrKT1cImxvZ29DbGljaygkZXZlbnQpXCIgZnhMYXlvdXRBbGlnbj1cInN0YXJ0IGNlbnRlclwiXHJcbiAgICA+XHJcbiAgICAgIDxpbWcgaGVpZ2h0PVwiNDBcIiB3aWR0aD1cIjQwXCIgY2xhc3M9XCJtZW51LWxvZ29cIiBbc3JjXT1cIm1lbnVMb2dvSW1hZ2VcIiBhbHQ9XCJsb2dvXCIgLz5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJtZW51LXByb2R1Y3QtbmFtZVwiPlxyXG4gICAgICAgIHt7IHByb2R1Y3ROYW1lIH19XHJcbiAgICAgIDwvc3Bhbj5cclxuICAgIDwvYT5cclxuXHJcbiAgICA8YnV0dG9uXHJcbiAgICAgIG1hdC1pY29uLWJ1dHRvblxyXG4gICAgICBjbGFzcz1cInRvZ2dsZXJcIlxyXG4gICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidBUklBX0xBQkVMUy5NRU5VX1RPR0dMRVInIHwgdHJhbnNsYXRlXCJcclxuICAgICAgW2xpYlBsYXVzaWJsZUV2ZW50XT1cImNvbGxhcHNlZCA/IEVYUEFORF9QTEFVU0lCTEVfRVZFTlQgOiBDT0xMQVBTRV9QTEFVU0lCTEVfRVZFTlRcIlxyXG4gICAgICAoY2xpY2spPVwidG9nZ2xlQ29sbGFwc2UoKVwiXHJcbiAgICA+XHJcbiAgICAgIDxtYXQtaWNvbj5tZW51PC9tYXQtaWNvbj5cclxuICAgIDwvYnV0dG9uPlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbjxkaXYgW25nQ2xhc3MubHQtc21dPVwiJ21vYmlsZSdcIiBjbGFzcz1cIm1lbnUtY29udGFpbmVyXCIgW3N0eWxlLndpZHRoXT1cInNpZGVOYXZXaWR0aFwiIGZ4TGF5b3V0PVwiY29sdW1uXCIgW2NsYXNzLmNvbGxhcHNlZF09XCJjb2xsYXBzZWRcIj5cclxuICA8ZGl2IGNsYXNzPVwiY29udGVudFwiIGZ4TGF5b3V0PVwiY29sdW1uXCIgZnhGbGV4RmlsbD5cclxuICAgIDxkaXYgY2xhc3M9XCJtZW51LWNvbnRhaW5lci1oZWFkZXJcIiBmeExheW91dD1cInJvd1wiIFtmeExheW91dEFsaWduXT1cImNvbGxhcHNlZCA/ICdjZW50ZXIgY2VudGVyJyA6ICdzcGFjZS1iZXR3ZWVuIGNlbnRlcidcIj5cclxuICAgICAgPGEgKm5nSWY9XCIhY29sbGFwc2VkXCIgW2xpYlBsYXVzaWJsZUV2ZW50XT1cIkxPR09DTElDS19QTEFVU0lCTEVfRVZFTlRcIiBmeEZsZXg9XCIzLjEyNWVtXCIgW2NsYXNzLm5vLWNsaWNrXT1cIm1lbnVTZXR0aW5ncz8uZGlzYWJsZUxvZ29OYXZpZ2F0aW9uXCIgW2hyZWZdPVwiYmFzZVVybFwiXHJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInTUVOVS5BUklBX0xBQkVMUy5MT0dPJyB8IHRyYW5zbGF0ZVwiIChjbGljayk9XCJsb2dvQ2xpY2soJGV2ZW50KVwiIGZ4TGF5b3V0QWxpZ249XCJzdGFydCBjZW50ZXJcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGltZyBoZWlnaHQ9XCI0MFwiIHdpZHRoPVwiNDBcIiBjbGFzcz1cIm1lbnUtbG9nb1wiIFtzcmNdPVwibWVudUxvZ29JbWFnZVwiIGFsdD1cImxvZ29cIiAvPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwibWVudS1wcm9kdWN0LW5hbWVcIj5cclxuICAgICAgICAgIHt7IHByb2R1Y3ROYW1lIH19XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgICA8L2E+XHJcblxyXG4gICAgICA8YnV0dG9uXHJcbiAgICAgICAgbWF0LWljb24tYnV0dG9uXHJcbiAgICAgICAgY2xhc3M9XCJ0b2dnbGVyXCJcclxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidBUklBX0xBQkVMUy5NRU5VX1RPR0dMRVInIHwgdHJhbnNsYXRlXCJcclxuICAgICAgICBbbGliUGxhdXNpYmxlRXZlbnRdPVwiY29sbGFwc2VkID8gRVhQQU5EX1BMQVVTSUJMRV9FVkVOVCA6IENPTExBUFNFX1BMQVVTSUJMRV9FVkVOVFwiXHJcbiAgICAgICAgW21hdFRvb2x0aXBdPVwiKGNvbGxhcHNlZCA/ICdNRU5VLkVYUEFORCcgOiAnTUVOVS5DT0xMQVBTRScpIHwgdHJhbnNsYXRlXCJcclxuICAgICAgICAoY2xpY2spPVwidG9nZ2xlQ29sbGFwc2UoKVwiXHJcbiAgICAgID5cclxuICAgICAgICA8bWF0LWljb24gZnhIaWRlLmd0LXhzPmNsb3NlPC9tYXQtaWNvbj5cclxuICAgICAgICA8bWF0LWljb24gZnhIaWRlLmx0LXNtPnt7IGNvbGxhcHNlZCA/ICdrZXlib2FyZF9kb3VibGVfYXJyb3dfcmlnaHQnIDogJ2tleWJvYXJkX2RvdWJsZV9hcnJvd19sZWZ0JyB9fTwvbWF0LWljb24+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cIm1lbnUtd3JhcHBlclwiIGZ4TGF5b3V0PVwiY29sdW1uXCI+XHJcbiAgICAgIDxtZW51LWNvbHVtbnMgKHRvZ2dsZUNvbGxhcHNlRXZlbnQpPVwidG9nZ2xlQ29sbGFwc2UoKVwiIFtkaXJlY3Rpb25dPVwiZGlyZWN0aW9uXCIgcm9sZT1cIm5hdmlnYXRpb25cIiBbaXNPcGVuXT1cIiFjb2xsYXBzZWRcIlxyXG4gICAgICAgIFthY3RpdmVdPVwiYWN0aXZlXCI+PC9tZW51LWNvbHVtbnM+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgZnhGbGV4IGZ4TGF5b3V0PVwiY29sdW1uXCI+XHJcbiAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cclxuICAgIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJwcm9maWxlXCI+XHJcbiAgICA8YnV0dG9uICNzdGF0ZT1cIm1hdE1lbnVUcmlnZ2VyXCIgW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm1lbnVcIiBjbGFzcz1cInByb2ZpbGUtd3JhcHBlclwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicHJvZmlsZS1pY29uXCI+XHJcbiAgICAgICAgQGlmICh1c2VySW5pdGlhbHMpIHtcclxuICAgICAgICAgIHt7dXNlckluaXRpYWxzfX1cclxuICAgICAgICB9IEBlbHNlIHtcclxuICAgICAgICAgIDxtYXQtaWNvbj5wZXJzb248L21hdC1pY29uPlxyXG4gICAgICAgIH1cclxuICAgIDwvZGl2PlxyXG5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFjb2xsYXBzZWRcIj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cInByb2ZpbGUtbmFtZVwiPlxyXG4gICAgICAgICAge3sgdXNlcm5hbWUgPz8gJ01FTlUuQU5PTllNT1VTJyB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgIDwvc3Bhbj5cclxuXHJcbiAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwic3RhdGUubWVudU9wZW47IGVsc2UgaWNvbkRvd25cIiBjbGFzcz1cInByb2ZpbGUtYXJyb3cgc3BpblwiPnt7XCJrZXlib2FyZF9hcnJvd19kb3duXCJ9fTwvbWF0LWljb24+XHJcblxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjaWNvbkRvd24+XHJcbiAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJwcm9maWxlLWFycm93IHNwaW5cIj57e1wia2V5Ym9hcmRfYXJyb3dfdXBcIiB9fTwvbWF0LWljb24+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L2J1dHRvbj5cclxuXHJcbiAgICA8bWF0LW1lbnUgI21lbnU9XCJtYXRNZW51XCIgY2xhc3M9XCJwcm9maWxlLW1lbnVcIj5cclxuICAgICAgQGZvciAoaXRlbSBvZiBtZW51U2V0dGluZ3MudXNlck9wdGlvbnM7IHRyYWNrIGl0ZW0ubGFiZWwpIHtcclxuICAgICAgICBAaWYgKGl0ZW0ubGluaykge1xyXG4gICAgICAgICAgQGlmIChpdGVtLmxpbmsuaXNFeHRlcm5hbCkge1xyXG4gICAgICAgICAgICA8YSBjbGFzcz1cIm1hdC1tZGMtbWVudS1pdGVtXCIgW2hyZWZdPVwiaXRlbS5saW5rLmhyZWZcIiB0YXJnZXQ9XCJfYmxhbmtcIiAoY2xpY2spPVwibGlua0NhbGxiYWNrKGl0ZW0ubGluaylcIj5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cInByb2ZpbGVNZW51SXRlbTsgY29udGV4dDogeyBpY29uOiBpdGVtLmljb24sIGxhYmVsOiBpdGVtLmxhYmVsIH1cIj5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgfSBAZWxzZSB7XHJcbiAgICAgICAgICAgIDxhIGNsYXNzPVwibWF0LW1kYy1tZW51LWl0ZW1cIiBbcm91dGVyTGlua109XCJpdGVtLmxpbmsuaHJlZlwiIChjbGljayk9XCJsaW5rQ2FsbGJhY2soaXRlbS5saW5rKVwiPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwicHJvZmlsZU1lbnVJdGVtOyBjb250ZXh0OiB7IGljb246IGl0ZW0uaWNvbiwgbGFiZWw6IGl0ZW0ubGFiZWwgfVwiPlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBAZWxzZSB7XHJcbiAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgIG1hdC1tZW51LWl0ZW1cclxuICAgICAgICAgICAgY2xhc3M9XCJwcm9maWxlLW9wdGlvblwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJpdGVtLmJ1dHRvbj8uY2FsbGJhY2soKVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cInByb2ZpbGVNZW51SXRlbTsgY29udGV4dDogeyBpY29uOiBpdGVtLmljb24sIGxhYmVsOiBpdGVtLmxhYmVsIH1cIj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgPC9tYXQtbWVudT5cclxuICA8L2Rpdj5cclxuXHJcbiAgPG5nLXRlbXBsYXRlICNwcm9maWxlTWVudUl0ZW0gbGV0LWljb249XCJpY29uXCIgbGV0LWxhYmVsPVwibGFiZWxcIj5cclxuICAgIEBpZiAoaWNvbikge1xyXG4gICAgICBAaWYgKCFpY29uPy5pc0N1c3RvbSkge1xyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnMgcHJvZmlsZS1vcHRpb24taWNvblwiIFtjbGFzcy5tYXRlcmlhbC1pY29ucy1vdXRsaW5lZF09XCJpY29uPy5pc091dGxpbmVkXCI+XHJcbiAgICAgICAgICB7e2ljb24/Lm5hbWV9fVxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgICAgfSBAZWxzZSB7XHJcbiAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwicHJvZmlsZS1vcHRpb24taWNvblwiIFtzdmdJY29uXT1cImljb24/Lm5hbWVcIj48L21hdC1pY29uPlxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB7eyBsYWJlbCB8IHRyYW5zbGF0ZSB9fVxyXG4gIDwvbmctdGVtcGxhdGU+XHJcbjwvZGl2PlxyXG4iXX0=
@@ -1011,7 +1011,7 @@ class SideNavMenuComponent extends NavBaseComponent {
1011
1011
  get username() { return this.#username; }
1012
1012
  set username(value) {
1013
1013
  // if username is passed whith whitespace in begginining, it breaks UI, so trim it for safety.
1014
- this.#username = value.trim();
1014
+ this.#username = value?.trim();
1015
1015
  this.setUserInitials();
1016
1016
  }
1017
1017
  get menuLogoImage() {
@@ -1181,11 +1181,11 @@ class SideNavMenuComponent extends NavBaseComponent {
1181
1181
  i0.ɵɵproperty("ngIf", !ctx.collapsed);
1182
1182
  i0.ɵɵadvance(3);
1183
1183
  i0.ɵɵrepeater(ctx.menuSettings.userOptions);
1184
- } }, dependencies: [i1$2.DefaultLayoutDirective, i1$2.DefaultLayoutAlignDirective, i1$2.FlexFillDirective, i1$2.DefaultFlexDirective, i2$2.DefaultShowHideDirective, i2$2.DefaultClassDirective, i1$1.RouterLink, i4.NgIf, i4.NgTemplateOutlet, i5.MatTooltip, i2$1.MatIcon, i7.MatIconButton, i6.MatMenu, i6.MatMenuItem, i6.MatMenuTrigger, i2.PlausibleEventDirective, MenuColumnsComponent, i8.TranslatePipe], styles: ["a[_ngcontent-%COMP%]{text-decoration:none}.no-click[_ngcontent-%COMP%]{pointer-events:none!important}.mobile-header[_ngcontent-%COMP%]{display:flex;justify-content:space-between;padding:23px 27px;background-color:#fcfcfc;border:1px solid var(--base-70)}.mobile.menu-container.collapsed[_ngcontent-%COMP%]{display:none!important}.mobile.menu-container[_ngcontent-%COMP%]:not(.collapsed){display:block!important;position:fixed;min-width:100vw;min-height:100dvh;z-index:1000}.mobile[_ngcontent-%COMP%] .profile-wrapper[_ngcontent-%COMP%]{position:relative}.mobile[_ngcontent-%COMP%] .profile-wrapper[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{position:absolute!important;right:0}.menu-product-name[_ngcontent-%COMP%]{white-space:nowrap;margin-left:12px;font-weight:600;color:var(--base-10)}.menu-container[_ngcontent-%COMP%]{max-height:100dvh;white-space:nowrap;height:100%;transition:width .2s ease;min-height:100dvh;overflow:auto;background:var(--base-100);border-right:2px solid var(--base-95)}.menu-container[_ngcontent-%COMP%] .menu-container-header[_ngcontent-%COMP%]{margin:24px 0;max-height:40px}.menu-container.collapsed[_ngcontent-%COMP%] .menu-container-header[_ngcontent-%COMP%]{margin:24px 0 32px!important}.menu-container[_ngcontent-%COMP%] .content[_ngcontent-%COMP%]:not(.collapsed){overflow-x:hidden;padding:0 12px}.menu-container[_ngcontent-%COMP%] .content[_ngcontent-%COMP%]:not(.collapsed) .menu-logo[_ngcontent-%COMP%]{margin-left:16px;max-width:100%}.menu-container[_ngcontent-%COMP%] .divider[_ngcontent-%COMP%]{width:100%}.menu-container[_ngcontent-%COMP%] .profile[_ngcontent-%COMP%]{position:relative;margin-top:100px}.menu-container[_ngcontent-%COMP%] .profile-wrapper[_ngcontent-%COMP%]{background:none;color:var(--base-30);display:flex;align-items:center;justify-content:start;width:100%;position:absolute;bottom:0;margin:32px 0}.menu-container[_ngcontent-%COMP%] .profile-icon[_ngcontent-%COMP%]{display:flex;justify-content:center;align-items:center;min-width:40px;height:40px;border-radius:100%;color:var(--base-0);background-color:var(--base-70);font-size:16px;font-weight:600}.menu-container[_ngcontent-%COMP%] .profile-name[_ngcontent-%COMP%]{max-width:145px;overflow:hidden;margin-left:12px;text-overflow:ellipsis}.collapsed[_ngcontent-%COMP%] .profile-wrapper[_ngcontent-%COMP%]{margin:36px 0!important}.mobile[_ngcontent-%COMP%] .profile-name[_ngcontent-%COMP%]{max-width:60vw}.profile-option-icon[_ngcontent-%COMP%]{vertical-align:middle;margin:0 5px 5px 0}[_nghost-%COMP%] .menu-item{display:flex;padding:16px!important;border-radius:4px!important}[_nghost-%COMP%] .child-list .menu-item{padding:8px 46px!important}[_nghost-%COMP%] .collapsed .menu-item{padding:0!important;width:40px;height:40px;border-radius:50%!important}[_nghost-%COMP%] .active-menu-item{background-color:var(--base-95)!important}[_nghost-%COMP%] .menu-item-title{margin-left:12px}tld-menu-icon[_ngcontent-%COMP%]{margin-right:10px}.profile-arrow[_ngcontent-%COMP%]{position:absolute;right:3px;margin-right:20px}.spin[_ngcontent-%COMP%]{animation:_ngcontent-%COMP%_spinArrow .3s forwards}[_nghost-%COMP%] button.collapse-btn .mat-mdc-button-persistent-ripple, [_nghost-%COMP%] button.toggler .mat-mdc-button-persistent-ripple{display:none}[_nghost-%COMP%] .mobile .child-list .menu-item{padding:8px 54px!important} .cdk-overlay-container .profile-menu{margin:10px 0!important} .mat-mdc-menu-item .mat-icon{margin-right:5px!important} .collapsed .profile-wrapper{justify-content:center!important} .profile-menu a{font-weight:400!important;display:flex;align-items:center;gap:5px} .profile-menu a:hover{color:var(--mat-menu-item-label-text-color, var(--mat-app-on-surface))!important;text-decoration:inherit}@keyframes _ngcontent-%COMP%_spinArrow{to{transform:rotate(180deg)}}"] }); }
1184
+ } }, dependencies: [i1$2.DefaultLayoutDirective, i1$2.DefaultLayoutAlignDirective, i1$2.FlexFillDirective, i1$2.DefaultFlexDirective, i2$2.DefaultShowHideDirective, i2$2.DefaultClassDirective, i1$1.RouterLink, i4.NgIf, i4.NgTemplateOutlet, i5.MatTooltip, i2$1.MatIcon, i7.MatIconButton, i6.MatMenu, i6.MatMenuItem, i6.MatMenuTrigger, i2.PlausibleEventDirective, MenuColumnsComponent, i8.TranslatePipe], styles: ["a[_ngcontent-%COMP%]{text-decoration:none}.no-click[_ngcontent-%COMP%]{pointer-events:none!important}.mobile-header[_ngcontent-%COMP%]{display:flex;justify-content:space-between;padding:23px 27px;background-color:#fcfcfc;border:1px solid var(--base-70)}.mobile.menu-container.collapsed[_ngcontent-%COMP%]{display:none!important}.mobile.menu-container[_ngcontent-%COMP%]:not(.collapsed){display:block!important;position:fixed;min-width:100vw;min-height:100dvh;z-index:1000}.menu-container[_ngcontent-%COMP%] [_ngcontent-%COMP%]::-webkit-scrollbar{width:5px}.menu-container[_ngcontent-%COMP%] [_ngcontent-%COMP%]::-webkit-scrollbar-thumb{background:var(--base-95);background-clip:padding-box}.menu-container[_ngcontent-%COMP%] [_ngcontent-%COMP%]::-webkit-scrollbar-track{background:var(--base-100)}.mobile[_ngcontent-%COMP%] .profile-wrapper[_ngcontent-%COMP%]{position:relative}.mobile[_ngcontent-%COMP%] .profile-wrapper[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{position:absolute!important;right:0}.menu-product-name[_ngcontent-%COMP%]{white-space:nowrap;margin-left:12px;font-weight:600;color:var(--base-10)}.menu-container[_ngcontent-%COMP%]{max-height:100dvh;white-space:nowrap;height:100%;transition:width .2s ease;min-height:100dvh;overflow:auto;background:var(--base-100);border-right:2px solid var(--base-95)}.menu-container[_ngcontent-%COMP%] .menu-container-header[_ngcontent-%COMP%]{margin:24px 0;max-height:40px}.menu-container.collapsed[_ngcontent-%COMP%] .menu-container-header[_ngcontent-%COMP%]{margin:24px 0 32px!important}.menu-container[_ngcontent-%COMP%] .content[_ngcontent-%COMP%]:not(.collapsed){overflow-x:hidden;padding:0 12px}.menu-container[_ngcontent-%COMP%] .content[_ngcontent-%COMP%]:not(.collapsed) .menu-logo[_ngcontent-%COMP%]{margin-left:16px;max-width:100%}.menu-container[_ngcontent-%COMP%] .divider[_ngcontent-%COMP%]{width:100%}.menu-container[_ngcontent-%COMP%] .profile[_ngcontent-%COMP%]{position:relative;margin-top:100px}.menu-container[_ngcontent-%COMP%] .profile-wrapper[_ngcontent-%COMP%]{background:none;color:var(--base-30);display:flex;align-items:center;justify-content:start;width:100%;position:absolute;bottom:0;margin:32px 0}.menu-container[_ngcontent-%COMP%] .profile-icon[_ngcontent-%COMP%]{display:flex;justify-content:center;align-items:center;min-width:40px;height:40px;border-radius:100%;color:var(--base-0);background-color:var(--base-70);font-size:16px;font-weight:600}.menu-container[_ngcontent-%COMP%] .profile-name[_ngcontent-%COMP%]{max-width:145px;overflow:hidden;margin-left:12px;text-overflow:ellipsis}.collapsed[_ngcontent-%COMP%] .profile-wrapper[_ngcontent-%COMP%]{margin:36px 0!important}.mobile[_ngcontent-%COMP%] .profile-name[_ngcontent-%COMP%]{max-width:60vw}.profile-option-icon[_ngcontent-%COMP%]{vertical-align:middle;margin:0 5px 5px 0}[_nghost-%COMP%] .menu-item{display:flex;padding:16px!important;border-radius:4px!important}[_nghost-%COMP%] .child-list .menu-item{padding:8px 46px!important}[_nghost-%COMP%] .collapsed .menu-item{padding:0!important;width:40px;height:40px;border-radius:50%!important}[_nghost-%COMP%] .active-menu-item{background-color:var(--base-95)!important}[_nghost-%COMP%] .menu-item-title{margin-left:12px}tld-menu-icon[_ngcontent-%COMP%]{margin-right:10px}.profile-arrow[_ngcontent-%COMP%]{position:absolute;right:3px;margin-right:20px}.spin[_ngcontent-%COMP%]{animation:_ngcontent-%COMP%_spinArrow .3s forwards}[_nghost-%COMP%] button.collapse-btn .mat-mdc-button-persistent-ripple, [_nghost-%COMP%] button.toggler .mat-mdc-button-persistent-ripple{display:none}[_nghost-%COMP%] .mobile .child-list .menu-item{padding:8px 54px!important} .cdk-overlay-container .profile-menu{margin:10px 0!important} .mat-mdc-menu-item .mat-icon{margin-right:5px!important} .collapsed .profile-wrapper{justify-content:center!important} .profile-menu a{font-weight:400!important;display:flex;align-items:center;gap:5px} .profile-menu a:hover{color:var(--mat-menu-item-label-text-color, var(--mat-app-on-surface))!important;text-decoration:inherit}@keyframes _ngcontent-%COMP%_spinArrow{to{transform:rotate(180deg)}}"] }); }
1185
1185
  }
1186
1186
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SideNavMenuComponent, [{
1187
1187
  type: Component,
1188
- args: [{ selector: 'lib-side-nav-menu', template: "<div fxHide.gt-xs>\r\n <div [fxHide]=\"!collapsed\" class=\"mobile-header\">\r\n <a [libPlausibleEvent]=\"LOGOCLICK_PLAUSIBLE_EVENT\" fxFlex=\"3.125em\" [href]=\"baseUrl\" [class.no-click]=\"menuSettings?.disableLogoNavigation\"\r\n [attr.aria-label]=\"'MENU.ARIA_LABELS.LOGO' | translate\" (click)=\"logoClick($event)\" fxLayoutAlign=\"start center\"\r\n >\r\n <img height=\"40\" width=\"40\" class=\"menu-logo\" [src]=\"menuLogoImage\" alt=\"logo\" />\r\n <span class=\"menu-product-name\">\r\n {{ productName }}\r\n </span>\r\n </a>\r\n\r\n <button\r\n mat-icon-button\r\n class=\"toggler\"\r\n [attr.aria-label]=\"'ARIA_LABELS.MENU_TOGGLER' | translate\"\r\n [libPlausibleEvent]=\"collapsed ? EXPAND_PLAUSIBLE_EVENT : COLLAPSE_PLAUSIBLE_EVENT\"\r\n (click)=\"toggleCollapse()\"\r\n >\r\n <mat-icon>menu</mat-icon>\r\n </button>\r\n </div>\r\n</div>\r\n\r\n<div [ngClass.lt-sm]=\"'mobile'\" class=\"menu-container\" [style.width]=\"sideNavWidth\" fxLayout=\"column\" [class.collapsed]=\"collapsed\">\r\n <div class=\"content\" fxLayout=\"column\" fxFlexFill>\r\n <div class=\"menu-container-header\" fxLayout=\"row\" [fxLayoutAlign]=\"collapsed ? 'center center' : 'space-between center'\">\r\n <a *ngIf=\"!collapsed\" [libPlausibleEvent]=\"LOGOCLICK_PLAUSIBLE_EVENT\" fxFlex=\"3.125em\" [class.no-click]=\"menuSettings?.disableLogoNavigation\" [href]=\"baseUrl\"\r\n [attr.aria-label]=\"'MENU.ARIA_LABELS.LOGO' | translate\" (click)=\"logoClick($event)\" fxLayoutAlign=\"start center\"\r\n >\r\n <img height=\"40\" width=\"40\" class=\"menu-logo\" [src]=\"menuLogoImage\" alt=\"logo\" />\r\n <span class=\"menu-product-name\">\r\n {{ productName }}\r\n </span>\r\n </a>\r\n\r\n <button\r\n mat-icon-button\r\n class=\"toggler\"\r\n [attr.aria-label]=\"'ARIA_LABELS.MENU_TOGGLER' | translate\"\r\n [libPlausibleEvent]=\"collapsed ? EXPAND_PLAUSIBLE_EVENT : COLLAPSE_PLAUSIBLE_EVENT\"\r\n [matTooltip]=\"(collapsed ? 'MENU.EXPAND' : 'MENU.COLLAPSE') | translate\"\r\n (click)=\"toggleCollapse()\"\r\n >\r\n <mat-icon fxHide.gt-xs>close</mat-icon>\r\n <mat-icon fxHide.lt-sm>{{ collapsed ? 'keyboard_double_arrow_right' : 'keyboard_double_arrow_left' }}</mat-icon>\r\n </button>\r\n </div>\r\n\r\n <div class=\"menu-wrapper\" fxLayout=\"column\">\r\n <menu-columns (toggleCollapseEvent)=\"toggleCollapse()\" [direction]=\"direction\" role=\"navigation\" [isOpen]=\"!collapsed\"\r\n [active]=\"active\"></menu-columns>\r\n </div>\r\n <div fxFlex fxLayout=\"column\">\r\n <ng-content></ng-content>\r\n </div>\r\n <div class=\"profile\">\r\n <button #state=\"matMenuTrigger\" [matMenuTriggerFor]=\"menu\" class=\"profile-wrapper\">\r\n <div class=\"profile-icon\">\r\n @if (userInitials) {\r\n {{userInitials}}\r\n } @else {\r\n <mat-icon>person</mat-icon>\r\n }\r\n </div>\r\n\r\n <ng-container *ngIf=\"!collapsed\">\r\n <span class=\"profile-name\">\r\n {{ username ?? 'MENU.ANONYMOUS' | translate }}\r\n </span>\r\n\r\n <mat-icon *ngIf=\"state.menuOpen; else iconDown\" class=\"profile-arrow spin\">{{\"keyboard_arrow_down\"}}</mat-icon>\r\n\r\n <ng-template #iconDown>\r\n <mat-icon class=\"profile-arrow spin\">{{\"keyboard_arrow_up\" }}</mat-icon>\r\n </ng-template>\r\n </ng-container>\r\n </button>\r\n\r\n <mat-menu #menu=\"matMenu\" class=\"profile-menu\">\r\n @for (item of menuSettings.userOptions; track item.label) {\r\n @if (item.link) {\r\n @if (item.link.isExternal) {\r\n <a class=\"mat-mdc-menu-item\" [href]=\"item.link.href\" target=\"_blank\" (click)=\"linkCallback(item.link)\">\r\n <ng-container\r\n *ngTemplateOutlet=\"profileMenuItem; context: { icon: item.icon, label: item.label }\">\r\n </ng-container>\r\n </a>\r\n } @else {\r\n <a class=\"mat-mdc-menu-item\" [routerLink]=\"item.link.href\" (click)=\"linkCallback(item.link)\">\r\n <ng-container\r\n *ngTemplateOutlet=\"profileMenuItem; context: { icon: item.icon, label: item.label }\">\r\n </ng-container>\r\n </a>\r\n }\r\n } @else {\r\n <button\r\n mat-menu-item\r\n class=\"profile-option\"\r\n (click)=\"item.button?.callback()\"\r\n >\r\n <ng-container\r\n *ngTemplateOutlet=\"profileMenuItem; context: { icon: item.icon, label: item.label }\">\r\n </ng-container>\r\n </button>\r\n }\r\n }\r\n </mat-menu>\r\n </div>\r\n\r\n <ng-template #profileMenuItem let-icon=\"icon\" let-label=\"label\">\r\n @if (icon) {\r\n @if (!icon?.isCustom) {\r\n <span class=\"material-icons profile-option-icon\" [class.material-icons-outlined]=\"icon?.isOutlined\">\r\n {{icon?.name}}\r\n </span>\r\n } @else {\r\n <mat-icon class=\"profile-option-icon\" [svgIcon]=\"icon?.name\"></mat-icon>\r\n }\r\n }\r\n {{ label | translate }}\r\n </ng-template>\r\n</div>\r\n", styles: ["a{text-decoration:none}.no-click{pointer-events:none!important}.mobile-header{display:flex;justify-content:space-between;padding:23px 27px;background-color:#fcfcfc;border:1px solid var(--base-70)}.mobile.menu-container.collapsed{display:none!important}.mobile.menu-container:not(.collapsed){display:block!important;position:fixed;min-width:100vw;min-height:100dvh;z-index:1000}.mobile .profile-wrapper{position:relative}.mobile .profile-wrapper mat-icon{position:absolute!important;right:0}.menu-product-name{white-space:nowrap;margin-left:12px;font-weight:600;color:var(--base-10)}.menu-container{max-height:100dvh;white-space:nowrap;height:100%;transition:width .2s ease;min-height:100dvh;overflow:auto;background:var(--base-100);border-right:2px solid var(--base-95)}.menu-container .menu-container-header{margin:24px 0;max-height:40px}.menu-container.collapsed .menu-container-header{margin:24px 0 32px!important}.menu-container .content:not(.collapsed){overflow-x:hidden;padding:0 12px}.menu-container .content:not(.collapsed) .menu-logo{margin-left:16px;max-width:100%}.menu-container .divider{width:100%}.menu-container .profile{position:relative;margin-top:100px}.menu-container .profile-wrapper{background:none;color:var(--base-30);display:flex;align-items:center;justify-content:start;width:100%;position:absolute;bottom:0;margin:32px 0}.menu-container .profile-icon{display:flex;justify-content:center;align-items:center;min-width:40px;height:40px;border-radius:100%;color:var(--base-0);background-color:var(--base-70);font-size:16px;font-weight:600}.menu-container .profile-name{max-width:145px;overflow:hidden;margin-left:12px;text-overflow:ellipsis}.collapsed .profile-wrapper{margin:36px 0!important}.mobile .profile-name{max-width:60vw}.profile-option-icon{vertical-align:middle;margin:0 5px 5px 0}:host ::ng-deep .menu-item{display:flex;padding:16px!important;border-radius:4px!important}:host ::ng-deep .child-list .menu-item{padding:8px 46px!important}:host ::ng-deep .collapsed .menu-item{padding:0!important;width:40px;height:40px;border-radius:50%!important}:host ::ng-deep .active-menu-item{background-color:var(--base-95)!important}:host ::ng-deep .menu-item-title{margin-left:12px}tld-menu-icon{margin-right:10px}.profile-arrow{position:absolute;right:3px;margin-right:20px}.spin{animation:spinArrow .3s forwards}:host::ng-deep button.collapse-btn .mat-mdc-button-persistent-ripple,:host::ng-deep button.toggler .mat-mdc-button-persistent-ripple{display:none}:host ::ng-deep .mobile .child-list .menu-item{padding:8px 54px!important}::ng-deep .cdk-overlay-container .profile-menu{margin:10px 0!important}::ng-deep .mat-mdc-menu-item .mat-icon{margin-right:5px!important}::ng-deep .collapsed .profile-wrapper{justify-content:center!important}::ng-deep .profile-menu a{font-weight:400!important;display:flex;align-items:center;gap:5px}::ng-deep .profile-menu a:hover{color:var(--mat-menu-item-label-text-color, var(--mat-app-on-surface))!important;text-decoration:inherit}@keyframes spinArrow{to{transform:rotate(180deg)}}\n"] }]
1188
+ args: [{ selector: 'lib-side-nav-menu', template: "<div fxHide.gt-xs>\r\n <div [fxHide]=\"!collapsed\" class=\"mobile-header\">\r\n <a [libPlausibleEvent]=\"LOGOCLICK_PLAUSIBLE_EVENT\" fxFlex=\"3.125em\" [href]=\"baseUrl\" [class.no-click]=\"menuSettings?.disableLogoNavigation\"\r\n [attr.aria-label]=\"'MENU.ARIA_LABELS.LOGO' | translate\" (click)=\"logoClick($event)\" fxLayoutAlign=\"start center\"\r\n >\r\n <img height=\"40\" width=\"40\" class=\"menu-logo\" [src]=\"menuLogoImage\" alt=\"logo\" />\r\n <span class=\"menu-product-name\">\r\n {{ productName }}\r\n </span>\r\n </a>\r\n\r\n <button\r\n mat-icon-button\r\n class=\"toggler\"\r\n [attr.aria-label]=\"'ARIA_LABELS.MENU_TOGGLER' | translate\"\r\n [libPlausibleEvent]=\"collapsed ? EXPAND_PLAUSIBLE_EVENT : COLLAPSE_PLAUSIBLE_EVENT\"\r\n (click)=\"toggleCollapse()\"\r\n >\r\n <mat-icon>menu</mat-icon>\r\n </button>\r\n </div>\r\n</div>\r\n\r\n<div [ngClass.lt-sm]=\"'mobile'\" class=\"menu-container\" [style.width]=\"sideNavWidth\" fxLayout=\"column\" [class.collapsed]=\"collapsed\">\r\n <div class=\"content\" fxLayout=\"column\" fxFlexFill>\r\n <div class=\"menu-container-header\" fxLayout=\"row\" [fxLayoutAlign]=\"collapsed ? 'center center' : 'space-between center'\">\r\n <a *ngIf=\"!collapsed\" [libPlausibleEvent]=\"LOGOCLICK_PLAUSIBLE_EVENT\" fxFlex=\"3.125em\" [class.no-click]=\"menuSettings?.disableLogoNavigation\" [href]=\"baseUrl\"\r\n [attr.aria-label]=\"'MENU.ARIA_LABELS.LOGO' | translate\" (click)=\"logoClick($event)\" fxLayoutAlign=\"start center\"\r\n >\r\n <img height=\"40\" width=\"40\" class=\"menu-logo\" [src]=\"menuLogoImage\" alt=\"logo\" />\r\n <span class=\"menu-product-name\">\r\n {{ productName }}\r\n </span>\r\n </a>\r\n\r\n <button\r\n mat-icon-button\r\n class=\"toggler\"\r\n [attr.aria-label]=\"'ARIA_LABELS.MENU_TOGGLER' | translate\"\r\n [libPlausibleEvent]=\"collapsed ? EXPAND_PLAUSIBLE_EVENT : COLLAPSE_PLAUSIBLE_EVENT\"\r\n [matTooltip]=\"(collapsed ? 'MENU.EXPAND' : 'MENU.COLLAPSE') | translate\"\r\n (click)=\"toggleCollapse()\"\r\n >\r\n <mat-icon fxHide.gt-xs>close</mat-icon>\r\n <mat-icon fxHide.lt-sm>{{ collapsed ? 'keyboard_double_arrow_right' : 'keyboard_double_arrow_left' }}</mat-icon>\r\n </button>\r\n </div>\r\n\r\n <div class=\"menu-wrapper\" fxLayout=\"column\">\r\n <menu-columns (toggleCollapseEvent)=\"toggleCollapse()\" [direction]=\"direction\" role=\"navigation\" [isOpen]=\"!collapsed\"\r\n [active]=\"active\"></menu-columns>\r\n </div>\r\n <div fxFlex fxLayout=\"column\">\r\n <ng-content></ng-content>\r\n </div>\r\n <div class=\"profile\">\r\n <button #state=\"matMenuTrigger\" [matMenuTriggerFor]=\"menu\" class=\"profile-wrapper\">\r\n <div class=\"profile-icon\">\r\n @if (userInitials) {\r\n {{userInitials}}\r\n } @else {\r\n <mat-icon>person</mat-icon>\r\n }\r\n </div>\r\n\r\n <ng-container *ngIf=\"!collapsed\">\r\n <span class=\"profile-name\">\r\n {{ username ?? 'MENU.ANONYMOUS' | translate }}\r\n </span>\r\n\r\n <mat-icon *ngIf=\"state.menuOpen; else iconDown\" class=\"profile-arrow spin\">{{\"keyboard_arrow_down\"}}</mat-icon>\r\n\r\n <ng-template #iconDown>\r\n <mat-icon class=\"profile-arrow spin\">{{\"keyboard_arrow_up\" }}</mat-icon>\r\n </ng-template>\r\n </ng-container>\r\n </button>\r\n\r\n <mat-menu #menu=\"matMenu\" class=\"profile-menu\">\r\n @for (item of menuSettings.userOptions; track item.label) {\r\n @if (item.link) {\r\n @if (item.link.isExternal) {\r\n <a class=\"mat-mdc-menu-item\" [href]=\"item.link.href\" target=\"_blank\" (click)=\"linkCallback(item.link)\">\r\n <ng-container\r\n *ngTemplateOutlet=\"profileMenuItem; context: { icon: item.icon, label: item.label }\">\r\n </ng-container>\r\n </a>\r\n } @else {\r\n <a class=\"mat-mdc-menu-item\" [routerLink]=\"item.link.href\" (click)=\"linkCallback(item.link)\">\r\n <ng-container\r\n *ngTemplateOutlet=\"profileMenuItem; context: { icon: item.icon, label: item.label }\">\r\n </ng-container>\r\n </a>\r\n }\r\n } @else {\r\n <button\r\n mat-menu-item\r\n class=\"profile-option\"\r\n (click)=\"item.button?.callback()\"\r\n >\r\n <ng-container\r\n *ngTemplateOutlet=\"profileMenuItem; context: { icon: item.icon, label: item.label }\">\r\n </ng-container>\r\n </button>\r\n }\r\n }\r\n </mat-menu>\r\n </div>\r\n\r\n <ng-template #profileMenuItem let-icon=\"icon\" let-label=\"label\">\r\n @if (icon) {\r\n @if (!icon?.isCustom) {\r\n <span class=\"material-icons profile-option-icon\" [class.material-icons-outlined]=\"icon?.isOutlined\">\r\n {{icon?.name}}\r\n </span>\r\n } @else {\r\n <mat-icon class=\"profile-option-icon\" [svgIcon]=\"icon?.name\"></mat-icon>\r\n }\r\n }\r\n {{ label | translate }}\r\n </ng-template>\r\n</div>\r\n", styles: ["a{text-decoration:none}.no-click{pointer-events:none!important}.mobile-header{display:flex;justify-content:space-between;padding:23px 27px;background-color:#fcfcfc;border:1px solid var(--base-70)}.mobile.menu-container.collapsed{display:none!important}.mobile.menu-container:not(.collapsed){display:block!important;position:fixed;min-width:100vw;min-height:100dvh;z-index:1000}.menu-container ::-webkit-scrollbar{width:5px}.menu-container ::-webkit-scrollbar-thumb{background:var(--base-95);background-clip:padding-box}.menu-container ::-webkit-scrollbar-track{background:var(--base-100)}.mobile .profile-wrapper{position:relative}.mobile .profile-wrapper mat-icon{position:absolute!important;right:0}.menu-product-name{white-space:nowrap;margin-left:12px;font-weight:600;color:var(--base-10)}.menu-container{max-height:100dvh;white-space:nowrap;height:100%;transition:width .2s ease;min-height:100dvh;overflow:auto;background:var(--base-100);border-right:2px solid var(--base-95)}.menu-container .menu-container-header{margin:24px 0;max-height:40px}.menu-container.collapsed .menu-container-header{margin:24px 0 32px!important}.menu-container .content:not(.collapsed){overflow-x:hidden;padding:0 12px}.menu-container .content:not(.collapsed) .menu-logo{margin-left:16px;max-width:100%}.menu-container .divider{width:100%}.menu-container .profile{position:relative;margin-top:100px}.menu-container .profile-wrapper{background:none;color:var(--base-30);display:flex;align-items:center;justify-content:start;width:100%;position:absolute;bottom:0;margin:32px 0}.menu-container .profile-icon{display:flex;justify-content:center;align-items:center;min-width:40px;height:40px;border-radius:100%;color:var(--base-0);background-color:var(--base-70);font-size:16px;font-weight:600}.menu-container .profile-name{max-width:145px;overflow:hidden;margin-left:12px;text-overflow:ellipsis}.collapsed .profile-wrapper{margin:36px 0!important}.mobile .profile-name{max-width:60vw}.profile-option-icon{vertical-align:middle;margin:0 5px 5px 0}:host ::ng-deep .menu-item{display:flex;padding:16px!important;border-radius:4px!important}:host ::ng-deep .child-list .menu-item{padding:8px 46px!important}:host ::ng-deep .collapsed .menu-item{padding:0!important;width:40px;height:40px;border-radius:50%!important}:host ::ng-deep .active-menu-item{background-color:var(--base-95)!important}:host ::ng-deep .menu-item-title{margin-left:12px}tld-menu-icon{margin-right:10px}.profile-arrow{position:absolute;right:3px;margin-right:20px}.spin{animation:spinArrow .3s forwards}:host::ng-deep button.collapse-btn .mat-mdc-button-persistent-ripple,:host::ng-deep button.toggler .mat-mdc-button-persistent-ripple{display:none}:host ::ng-deep .mobile .child-list .menu-item{padding:8px 54px!important}::ng-deep .cdk-overlay-container .profile-menu{margin:10px 0!important}::ng-deep .mat-mdc-menu-item .mat-icon{margin-right:5px!important}::ng-deep .collapsed .profile-wrapper{justify-content:center!important}::ng-deep .profile-menu a{font-weight:400!important;display:flex;align-items:center;gap:5px}::ng-deep .profile-menu a:hover{color:var(--mat-menu-item-label-text-color, var(--mat-app-on-surface))!important;text-decoration:inherit}@keyframes spinArrow{to{transform:rotate(180deg)}}\n"] }]
1189
1189
  }], () => [{ type: i1.StrapiLinkService }, { type: i2.DOMService }, { type: MenuItemsService }], { username: [{
1190
1190
  type: Input
1191
1191
  }], menuSettings: [{
@@ -1 +1 @@
1
- {"version":3,"file":"tilde-nlp-ngx-menu.mjs","sources":["../../../projects/ngx-menu/src/lib/components/nav-base/models/strapi-data-location.enum.ts","../../../projects/ngx-menu/src/lib/injection-tokens/menu-shared-config.token.ts","../../../projects/ngx-menu/src/lib/models/menu-icon-strapi-extension.const.ts","../../../projects/ngx-menu/src/lib/services/strapi.service.ts","../../../projects/ngx-menu/src/lib/services/menu-items.service.ts","../../../projects/ngx-menu/src/lib/components/nav-base/nav-base.component.ts","../../../projects/ngx-menu/src/lib/components/nav-base/nav-base.component.html","../../../projects/ngx-menu/src/lib/models/menu-layout-direction.model.ts","../../../projects/ngx-menu/src/lib/components/menu-icon/menu-icon.component.html","../../../projects/ngx-menu/src/lib/components/menu-icon/menu-icon.component.ts","../../../projects/ngx-menu/src/lib/components/menu-item-link/menu-item-link.component.html","../../../projects/ngx-menu/src/lib/components/menu-item-link/menu-item-link.component.ts","../../../projects/ngx-menu/src/lib/components/menu-item-btn/menu-item-btn.component.html","../../../projects/ngx-menu/src/lib/components/menu-item-btn/menu-item-btn.component.ts","../../../projects/ngx-menu/src/lib/components/menu-item-list/menu-item-list.component.html","../../../projects/ngx-menu/src/lib/components/menu-item-list/menu-item-list.component.ts","../../../projects/ngx-menu/src/lib/components/menu-columns/menu-columns.component.html","../../../projects/ngx-menu/src/lib/components/menu-columns/menu-columns.component.ts","../../../projects/ngx-menu/src/lib/components/side-nav-menu/side-nav-menu.component.html","../../../projects/ngx-menu/src/lib/components/side-nav-menu/side-nav-menu.component.ts","../../../projects/ngx-menu/src/lib/menu.module.ts","../../../projects/ngx-menu/src/lib/constants/user-menu-options.const.ts","../../../projects/ngx-menu/src/public-api.ts","../../../projects/ngx-menu/src/tilde-nlp-ngx-menu.ts"],"sourcesContent":["/** Necessary for menu components to determine where loaded data from strapi should be placed - either in front of pre defined items or in end. */\r\nexport enum StrapiDataLocation {\r\n START,\r\n END\r\n}","export const MENU_SHARED_CONFIG = \"menu-shared-config\";\r\n","export const MENU_ICON_STRAPI_EXTENSION = \".svg\";\r\n","import { Inject, Injectable, Optional } from \"@angular/core\";\r\nimport { IconService } from \"@tilde-nlp/ngx-common\";\r\nimport { StrapiApiConfig, StrapiSubscriptionService, STRAPI_API_CONFIG_TOKEN } from \"@tilde-nlp/ngx-strapi\";\r\nimport { map, Observable } from \"rxjs\";\r\nimport { CollectionTypes, MenuItems } from \"@tilde-nlp/strapi-models\";\r\nimport { CustomMenuItem } from \"../models/custom-menu-item.model\";\r\nimport { MENU_ICON_STRAPI_EXTENSION } from \"../models/menu-icon-strapi-extension.const\";\r\nimport { MenuSharedConfig } from \"../models/menu-shared-config.model\";\r\nimport { MENU_SHARED_CONFIG } from \"../injection-tokens/menu-shared-config.token\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class StarpiMenuService {\r\n readonly svgIconNamePrefix = \"strapi-menu-icon-\";\r\n imgBaseUrl = '';\r\n\r\n constructor(private readonly strapiSubscription: StrapiSubscriptionService,\r\n @Optional() @Inject(MENU_SHARED_CONFIG) private readonly menuConfig: MenuSharedConfig,\r\n @Optional() @Inject(STRAPI_API_CONFIG_TOKEN) strapiConfig: StrapiApiConfig,\r\n private readonly iconService: IconService) {\r\n this.imgBaseUrl = strapiConfig?.apiUrl;\r\n }\r\n\r\n getMenuItems(): Observable<CustomMenuItem[]> {\r\n const responseObs = this.strapiSubscription.subscribeCollectionType<MenuItems>(CollectionTypes.MENU_ITEMS)\r\n .pipe(map((items: MenuItems[] | null) => {\r\n // Remove disabled items so they are not processed later.\r\n\r\n const convertedItems: CustomMenuItem[] = [];\r\n if (!items || items.length === 0) {\r\n return convertedItems;\r\n }\r\n items = items.filter(item => !item.disabled);\r\n items.forEach((menu: MenuItems) => {\r\n menu.link = this.addBaseUrlIfNecessary(menu.link);\r\n const originalMenuIcon = menu.icon.data.attributes;\r\n if (originalMenuIcon.url.startsWith('/')) {\r\n originalMenuIcon.url = this.imgBaseUrl + originalMenuIcon.url;\r\n }\r\n\r\n if (originalMenuIcon.ext === MENU_ICON_STRAPI_EXTENSION) {\r\n // add custom prefix so that it is not easy to mix with other icons in registry\r\n menu.icon.data.attributes.name = this.svgIconNamePrefix + originalMenuIcon.name;\r\n this.iconService.registerIconFromUrl(originalMenuIcon.name, originalMenuIcon.url);\r\n }\r\n\r\n convertedItems.push(this.convertToCustomMenuItem(menu));\r\n });\r\n return convertedItems;\r\n }));\r\n return responseObs;\r\n }\r\n\r\n unsubscribe(): void {\r\n this.strapiSubscription.unsubscribe(CollectionTypes.MENU_ITEMS);\r\n }\r\n\r\n private addBaseUrlIfNecessary(link: string): string {\r\n if (!this.menuConfig?.baseUrl) {\r\n return link;\r\n }\r\n try {\r\n new URL(link);\r\n // eslint-disable-next-line no-empty\r\n } catch { }\r\n try {\r\n return new URL(link, this.menuConfig.baseUrl).href;\r\n } catch {\r\n return link;\r\n }\r\n }\r\n\r\n private convertToCustomMenuItem(item: MenuItems): CustomMenuItem {\r\n return {\r\n icon: item.icon.data.attributes.name,\r\n link: item.link,\r\n title: item.title,\r\n externalLink: item.externalLink,\r\n // Material icons should not come from strapi\r\n materialIcon: false,\r\n plausibleEvent: item.plausibleEvent,\r\n customId: item.customId\r\n }\r\n }\r\n}\r\n","import { Inject, Injectable, Optional } from '@angular/core';\r\nimport { IsActiveMatchOptions, NavigationEnd, Router } from '@angular/router';\r\nimport { BehaviorSubject, filter } from 'rxjs';\r\nimport { StrapiDataLocation } from '../components/nav-base/models';\r\nimport { MENU_SHARED_CONFIG } from '../injection-tokens';\r\nimport { StarpiMenuService } from './strapi.service';\r\nimport { ActiveMenuItems } from '../models/active-menu-items.model';\r\nimport { CustomMenuItem } from '../models/custom-menu-item.model';\r\nimport { MenuSharedConfig } from '../models/menu-shared-config.model';\r\nimport { MenuItemGroup } from '../models/menu-item-group.model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class MenuItemsService {\r\n\r\n private readonly _activeElements: BehaviorSubject<ActiveMenuItems> = new BehaviorSubject({});\r\n get activeElements() { return this._activeElements.asObservable(); }\r\n\r\n private strapiItems: CustomMenuItem[] = [];\r\n\r\n private _strapiGroup!: MenuItemGroup;\r\n\r\n private _allRootItems!: CustomMenuItem[];\r\n get allRootItems() { return this._allRootItems; }\r\n\r\n get strapiGroup() { return this._strapiGroup; }\r\n\r\n private readonly isActiveMatchOptions: IsActiveMatchOptions = {\r\n matrixParams: 'exact',\r\n queryParams: 'exact',\r\n paths: 'exact',\r\n fragment: 'exact'\r\n };\r\n\r\n menuSharedConfig!: MenuSharedConfig;\r\n\r\n private get customId() { return this.menuSharedConfig?.customId; }\r\n private get hideSelectedCustomId() { return this.menuSharedConfig?.hideSelectedCustomId; }\r\n private get strapiGroupBase() { return this.menuSharedConfig?.strapiGroupBase; }\r\n private get strapiDataLocation() { return this.menuSharedConfig?.strapiDataLocation ?? StrapiDataLocation.END }\r\n private _mergedGroups: MenuItemGroup[] = [];\r\n get mergedGroups() { return this._mergedGroups; }\r\n\r\n private get menuItemGroups() { return this.menuSharedConfig.itemGroups }\r\n\r\n constructor(private readonly router: Router,\r\n @Optional() @Inject(MENU_SHARED_CONFIG) protected readonly config: MenuSharedConfig,\r\n private readonly strapiService: StarpiMenuService) {\r\n this.menuSharedConfig = config;\r\n this.initData();\r\n this.subscribeToRouteChanges();\r\n }\r\n\r\n setMenuItems(config: MenuSharedConfig): void {\r\n this.menuSharedConfig = config;\r\n this.initData();\r\n }\r\n\r\n private subscribeToRouteChanges() {\r\n this.router.events\r\n .pipe(filter(e => e instanceof NavigationEnd))\r\n .subscribe(() => { this.updateActive(); });\r\n }\r\n\r\n private updateActive() {\r\n const items = this.allRootItems;\r\n const root = this.findActiveElement(items, false);\r\n const child = this.findActiveElement(items, true);\r\n this._activeElements.next({ root, child });\r\n }\r\n\r\n /** Finds active element from whole list. RouterLink has priority over custom Id. */\r\n // at this version, child elements should not have customId, since that property comes from strapi and strapi provides only one level structure\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n private findActiveElement(items: CustomMenuItem[] | undefined, includeChildren: boolean): CustomMenuItem | undefined {\r\n if (!items?.length) {\r\n return undefined;\r\n }\r\n\r\n let customIdElement: CustomMenuItem | undefined;\r\n\r\n for (const item of items) {\r\n // Child element has priority over parent, so need to check if any child is active\r\n if (this.isElementRouterLinkActive(item)) {\r\n // If has children and they are visible, return active child or current item\r\n return includeChildren ? this.findActiveElement(item.children, includeChildren) ?? item : item;\r\n }\r\n // if selected custom id element is hidden, no need to look for it and set it to active;\r\n else if (!this.hideSelectedCustomId && this.isElementCustomIdActive(item)) {\r\n customIdElement = item;\r\n }\r\n else if (includeChildren && item.children?.length) {\r\n const activeChild = this.findActiveElement(item.children, includeChildren);\r\n if (activeChild) {\r\n return activeChild;\r\n }\r\n }\r\n }\r\n return customIdElement;\r\n }\r\n\r\n private initData() {\r\n if (!this.menuSharedConfig?.disableStrapi) {\r\n this.strapiService.getMenuItems().subscribe(this.loadData.bind(this));\r\n }\r\n else {\r\n this.loadData([]);\r\n }\r\n }\r\n\r\n private loadData(data: CustomMenuItem[]) {\r\n // hide custom id based on input param\r\n this.strapiItems = (this.hideSelectedCustomId && this.customId) ? data.filter(item => item.customId !== this.customId) : data;\r\n this._strapiGroup = {\r\n ...this.strapiGroupBase,\r\n items: this.strapiItems\r\n }\r\n\r\n if (this.strapiDataLocation === StrapiDataLocation.START) {\r\n this._mergedGroups = [this.strapiGroup, ...this.menuItemGroups ?? []];\r\n }\r\n else if (this.strapiDataLocation === StrapiDataLocation.END) {\r\n this._mergedGroups = [...this.menuItemGroups ?? [], this.strapiGroup];\r\n }\r\n\r\n const allItems = this.mergedGroups.map(map => map.items);\r\n let newArray: CustomMenuItem[] = [];\r\n allItems.forEach((array) => { newArray = newArray.concat(array) });\r\n this._allRootItems = newArray;\r\n\r\n this.updateActive();\r\n }\r\n\r\n private isElementCustomIdActive(element: CustomMenuItem) {\r\n return this.customId && element.customId === this.customId;\r\n }\r\n\r\n private isElementRouterLinkActive(element: CustomMenuItem) {\r\n const routerLinkActiveOptions: IsActiveMatchOptions = (element as CustomMenuItem).routerLinkActiveOptions ?? this.menuSharedConfig.activeMatchOptions ?? this.isActiveMatchOptions;\r\n\r\n return this.router.isActive(element.link, routerLinkActiveOptions);\r\n }\r\n}\r\n","import { Component, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport { MenuLayoutDirection } from '../../models/menu-layout-direction.model';\r\nimport { MenuItemsService } from '../../services/menu-items.service';\r\nimport { ActiveMenuItems } from '../../models';\r\nimport { Subscription } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'nav-base',\r\n templateUrl: './nav-base.component.html',\r\n styleUrls: ['./nav-base.component.scss']\r\n})\r\n/** This component is created to help nest some common input params through nav components. */\r\nexport class NavBaseComponent implements OnInit, OnDestroy {\r\n @Input() direction!: MenuLayoutDirection;\r\n active!: ActiveMenuItems;\r\n protected activeItemSubscription!: Subscription;\r\n\r\n constructor(readonly menuItemsService: MenuItemsService) {\r\n }\r\n\r\n ngOnInit(): void {\r\n this.initBase();\r\n }\r\n\r\n initBase() {\r\n this.activeItemSubscription = this.menuItemsService.activeElements.subscribe((active) => {\r\n this.active = active;\r\n })\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroyBase();\r\n }\r\n\r\n destroyBase() {\r\n this.activeItemSubscription?.unsubscribe();\r\n }\r\n}\r\n","<p>nav-base works!</p>\r\n","\r\nexport enum MenuLayoutDirection {\r\n column = \"column\",\r\n row = \"row\"\r\n}\r\n","<ng-container *ngIf=\"menuItem.icon\">\r\n <mat-icon class=\"menu-icon\" [svgIcon]=\"menuItem.icon\" *ngIf=\"!menuItem.materialIcon; else materialIcon;\"></mat-icon>\r\n <ng-template #materialIcon>\r\n <span class=\"material-icons menu-icon\" [class.material-icons-outlined]=\"menuItem?.isIconOutlined\">{{menuItem.icon}}</span>\r\n </ng-template>\r\n</ng-container>\r\n","import { Component, Input } from '@angular/core';\r\nimport { Media } from '@tilde-nlp/strapi-models';\r\nimport { CustomMenuItem, MENU_ICON_STRAPI_EXTENSION } from '../../models';\r\n\r\n@Component({\r\n selector: 'tld-menu-icon',\r\n templateUrl: './menu-icon.component.html',\r\n styleUrls: ['./menu-icon.component.scss']\r\n})\r\nexport class MenuIconComponent {\r\n readonly svgExtension = MENU_ICON_STRAPI_EXTENSION;\r\n\r\n @Input() menuItem!: CustomMenuItem;\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n isIconMediaType(icon: any): icon is Media {\r\n return typeof icon !== \"string\";\r\n }\r\n}\r\n","<a [libPlausibleEvent]=\"menuItem.plausibleEvent\" [fxLayout]=\"menuItemLayout\"\r\n [ngClass.lt-md]=\"'mobile'\" [class.text-center]=\"menuItemLayout === 'column'\" class=\"text-m menu-item\"\r\n [matTooltip]=\"!labelsVisible ? (menuItem.title | translate) : ''\" matTooltipPosition=\"after\"\r\n [fxLayoutAlign]=\"menuLayoutDirection\" matTooltipClass=\"menu-tooltip\" (click)=\"linkClick($event, menuItem)\"\r\n [href]=\"href | translate\" [attr.target]=\"menuItem.externalLink?'_blank': '_self'\"\r\n [class.active-menu-item]=\"menuItem === activeItem\">\r\n <ng-container *ngIf=\"showIcons && menuItem.icon\">\r\n <tld-menu-icon [menuItem]=\"menuItem\"></tld-menu-icon>\r\n </ng-container>\r\n <span *ngIf=\"labelsVisible\" class=\"menu-item-title\">\r\n <span class=\"title-content\" [attr.content]=\"menuItem.title | translate\">\r\n {{ menuItem.title | translate}}\r\n </span>\r\n </span>\r\n</a>\r\n","import { Component, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport { PlaceholderComponentBase, StrapiLinkService, StrapiVariablesService } from '@tilde-nlp/ngx-strapi';\r\nimport { CustomMenuItem, MenuLayoutDirection } from '../../models';\r\n\r\n@Component({\r\n selector: 'tld-menu-item-link',\r\n templateUrl: './menu-item-link.component.html',\r\n styleUrls: ['./menu-item-link.component.scss']\r\n})\r\nexport class MenuItemLinkComponent implements OnInit, OnDestroy, PlaceholderComponentBase {\r\n @Input() direction!: MenuLayoutDirection;\r\n @Input() labelsVisible!: boolean;\r\n @Input() activeItem!: CustomMenuItem | undefined;\r\n @Input() showIcons = true;\r\n @Input() menuItem!: CustomMenuItem;\r\n\r\n textWithPlaceholders!: string;\r\n href!: string;\r\n\r\n private placeholderServiceId!: number;\r\n get menuItemLayout(): string {\r\n return this.direction === MenuLayoutDirection.column ? 'column' : 'row';\r\n }\r\n\r\n get menuLayoutDirection(): string {\r\n return (this.direction === MenuLayoutDirection.column || !this.labelsVisible)\r\n ? 'start center' : 'start start';\r\n }\r\n\r\n constructor(private readonly strapiLinkService: StrapiLinkService,\r\n private readonly placeholderService: StrapiVariablesService) { }\r\n\r\n ngOnInit(): void {\r\n this.textWithPlaceholders = this.menuItem.link;\r\n this.placeholderServiceId = this.placeholderService.register(this);\r\n }\r\n\r\n linkClick(event: MouseEvent, item: CustomMenuItem) {\r\n this.strapiLinkService.strapiLinkClick(event, item.externalLink);\r\n }\r\n\r\n updateTextWithPlaceholders = (textWithReplacedPlaceholders: string) => this.href = textWithReplacedPlaceholders;\r\n\r\n ngOnDestroy(): void {\r\n this.placeholderService.unregister(this.placeholderServiceId);\r\n }\r\n}\r\n","<button\r\n [ngClass.lt-md]=\"'mobile'\"\r\n [attr.id]=\"menuItem.customId\"\r\n class=\"menu-item w-full flex justify-center items-center\"\r\n fxLayoutAlign=\"space-between start\"\r\n [class.active-menu-item]=\"menuItem.isItemActive ? menuItem.isItemActive(menuItem.customId) : menuItem === activeItem\"\r\n (click)=\"menuItem.clickAction && menuItem.clickAction()\"\r\n>\r\n <span class=\"btn-label\">\r\n {{ menuItem.title | translate }}\r\n </span>\r\n <ng-container *ngIf=\"menuItem.subMenu?.length\">\r\n <div [class.open]=\"menuTrigger?.menuOpen\">\r\n <button\r\n class=\"sub-menu-btn\"\r\n mat-icon-button\r\n [matMenuTriggerFor]=\"menu\"\r\n #menuTrigger=\"matMenuTrigger\"\r\n (click)=\"$event.preventDefault(); $event.stopImmediatePropagation()\"\r\n >\r\n <mat-icon>more_vert</mat-icon>\r\n </button>\r\n <mat-menu #menu=\"matMenu\">\r\n <button\r\n *ngFor=\"let item of menuItem.subMenu\"\r\n mat-menu-item\r\n (click)=\"item.onOptionClick()\"\r\n >\r\n {{ item.title | translate }}\r\n </button>\r\n </mat-menu>\r\n </div>\r\n </ng-container>\r\n</button>\r\n","import { Component, Input } from '@angular/core';\r\nimport { CustomMenuItem, MenuLayoutDirection } from '../../models';\r\n\r\n@Component({\r\n selector: 'lib-menu-item-btn',\r\n standalone: false,\r\n templateUrl: './menu-item-btn.component.html',\r\n styleUrl: './menu-item-btn.component.scss',\r\n})\r\nexport class MenuItemBtnComponent {\r\n @Input() direction!: MenuLayoutDirection;\r\n @Input() activeItem!: CustomMenuItem | undefined;\r\n @Input() menuItem!: CustomMenuItem;\r\n}\r\n","<div class=\"menu-list-wrapper\">\r\n @if (titleKey && showTitle && labelsVisible && !menuItemGroup.itemGroupClick) {\r\n <div fxLayoutAlign=\"start center\" class=\"menu-item-list-title\">\r\n <mat-icon class=\"menu-title-btn\" *ngIf=\"menuItemGroup.titleIcon\">{{menuItemGroup.titleIcon}}</mat-icon>\r\n \r\n <button class=\"menu-title-btn\" *ngIf=\"menuItemGroup.titleNavigation\" mat-icon-button [routerLink]=\"menuItemGroup.titleNavigation.path\" [matTooltip]=\"menuItemGroup.titleNavigation?.tooltip ?? '' | translate\">\r\n <mat-icon>{{menuItemGroup.titleNavigation.icon}}</mat-icon>\r\n </button>\r\n \r\n {{ titleKey | translate }}\r\n </div>\r\n } @else if (menuItemGroup?.itemGroupClick) {\r\n <ng-container *ngTemplateOutlet=\"itemGroupButton\">\r\n </ng-container>\r\n }\r\n <div fxLayout=\"column\" [fxLayoutAlign]=\"menuLayoutDirection\" class=\"menu-item-list\">\r\n <ng-container *ngFor=\"let menuItem of items\">\r\n <ng-container\r\n *ngTemplateOutlet=\"!menuItem.showChildren || !menuItem.children || menuItem?.children?.length === 0 ? (menuItem.clickAction ? menuItemBtn : menuItemLink) : itemWithChildren; context: {menuItem: menuItem}\">\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n</div>\r\n\r\n<ng-template #itemWithChildren let-menuItem=\"menuItem\">\r\n <button [attr.id]=\"menuItem.customId\" [ngClass.lt-md]=\"'mob-menu-item'\" [fxLayout]=\"menuItemLayout\" class=\"text-m menu-item\"\r\n [matTooltip]=\"!labelsVisible ? (menuItem.title | translate) : ''\" matTooltipPosition=\"after\" [class.menu-labels-visible]=\"labelsVisible\"\r\n [fxLayoutAlign]=\"menuLayoutDirection\" matTooltipClass=\"menu-tooltip\" fxLayoutGap=\"0.375rem\"\r\n [class.active-menu-item]=\"activeItem?.link && menuItem === activeItem\" (click)=\"toggleItemExpand($event,menuItem)\">\r\n <ng-container *ngIf=\"showIcons && menuItem.icon\">\r\n <tld-menu-icon [menuItem]=\"menuItem\"></tld-menu-icon>\r\n </ng-container>\r\n <ng-container *ngIf=\"labelsVisible\">\r\n <span class=\"menu-item-title\">\r\n <span class=\"title-content\">{{ menuItem.title | translate }}</span></span>\r\n <span class=\"material-icons\" *ngIf=\"menuItem.showChildren && menuItem.children\">\r\n {{ menuItem.expanded ? 'arrow_drop_up' : 'arrow_drop_down' }}\r\n </span>\r\n </ng-container>\r\n </button>\r\n <ng-container *ngIf=\"menuItem.showChildren && menuItem.expanded && labelsVisible\">\r\n <menu-item-list class=\"child-list\" *ngIf=\"menuItem.children && menuItem.children.length\" [items]=\"menuItem.children\"\r\n [direction]=\"direction\" [labelsVisible]=\"labelsVisible\" [activeItem]=\"activeItem\">\r\n </menu-item-list>\r\n </ng-container>\r\n</ng-template>\r\n\r\n<ng-template #menuItemLink let-menuItem=\"menuItem\">\r\n <tld-menu-item-link [ngClass.lt-md]=\"'mob-menu-item'\" [menuItem]=\"menuItem\" [direction]=\"direction\" [labelsVisible]=\"labelsVisible\"\r\n [activeItem]=\"activeItem\" [showIcons]=\"showIcons\"></tld-menu-item-link>\r\n</ng-template>\r\n\r\n<ng-template #menuItemBtn let-menuItem=\"menuItem\">\r\n <lib-menu-item-btn *ngIf=\"labelsVisible\" [ngClass.lt-md]=\"'mob-menu-item'\" [menuItem]=\"menuItem\" [direction]=\"direction\"\r\n [activeItem]=\"activeItem\"></lib-menu-item-btn>\r\n</ng-template>\r\n\r\n<ng-template #itemGroupButton>\r\n <button \r\n class=\"menu-title-btn menu-action-button\"\r\n mat-button\r\n *ngIf=\"menuItemGroup && labelsVisible\"\r\n (click)=\"menuItemGroup?.itemGroupClick()\"\r\n >\r\n <mat-icon>{{ menuItemGroup.itemGroupIcon }}</mat-icon>\r\n <span class=\"btn-label\" *ngIf=\"titleKey\">\r\n {{ titleKey | translate }}\r\n </span>\r\n </button>\r\n\r\n <button \r\n mat-icon-button\r\n *ngIf=\"menuItemGroup && !labelsVisible && titleKey && menuItemGroup.itemGroupIcon\"\r\n (click)=\"menuItemGroup?.itemGroupClick()\"\r\n [matTooltip]=\"titleKey | translate\"\r\n matTooltipPosition=\"after\"\r\n >\r\n <mat-icon>{{ menuItemGroup.itemGroupIcon }}</mat-icon>\r\n </button>\r\n</ng-template>","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { CustomMenuItem } from '../../models/custom-menu-item.model';\r\nimport { MenuItemGroupBase } from '../../models/menu-item-group.model';\r\nimport { MenuLayoutDirection } from '../../models/menu-layout-direction.model';\r\n\r\n@Component({\r\n selector: 'menu-item-list',\r\n templateUrl: './menu-item-list.component.html',\r\n styleUrls: ['./menu-item-list.component.scss']\r\n})\r\nexport class MenuItemListComponent {\r\n @Input() direction: MenuLayoutDirection = MenuLayoutDirection.column;\r\n @Input() labelsVisible = true;\r\n @Input() activeItem!: CustomMenuItem | undefined;\r\n @Input() showIcons = true;\r\n\r\n @Input() items: CustomMenuItem[] = [];\r\n @Input() menuItemGroup!: MenuItemGroupBase;\r\n\r\n @Output() toggleExpand: EventEmitter<CustomMenuItem> = new EventEmitter<CustomMenuItem>();\r\n\r\n get titleKey() {\r\n return this.menuItemGroup?.title;\r\n }\r\n\r\n get showTitle() {\r\n return this.menuItemGroup?.showTitle;\r\n }\r\n\r\n get menuLayoutDirection(): string {\r\n return (this.direction === MenuLayoutDirection.column || !this.labelsVisible)\r\n ? 'start center' : 'start start';\r\n }\r\n\r\n get menuItemLayout(): string {\r\n return this.direction === MenuLayoutDirection.column ? 'column' : 'row';\r\n }\r\n\r\n toggleItemExpand(event: MouseEvent, menuItem: CustomMenuItem) {\r\n // so menu doesnt get closed.\r\n event.stopPropagation();\r\n\r\n if (this.labelsVisible || !menuItem.expanded) {\r\n menuItem.expanded = !menuItem.expanded;\r\n }\r\n\r\n this.toggleExpand.next(menuItem);\r\n }\r\n}\r\n","<ng-container *ngFor=\"let group of mergedGroups\">\r\n <menu-item-list *ngIf=\"group.items.length || group.showEmpty\" [activeItem]=\"activeItem\" [direction]=\"direction\"\r\n (toggleExpand)=\"elementExpanded($event)\" [labelsVisible]=\"isOpen\" [menuItemGroup]=\"group\"\r\n [items]=\"group.items\">\r\n </menu-item-list>\r\n <div class=\"divider\" *ngIf=\"group.bottomDivider && group.items.length\">\r\n <mat-divider></mat-divider>\r\n </div>\r\n</ng-container>","import { Component, EventEmitter, Inject, Input, OnInit, Optional, Output } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { MENU_SHARED_CONFIG } from '../../injection-tokens';\r\nimport { CustomMenuItem } from '../../models/custom-menu-item.model';\r\nimport { MenuLayoutDirection } from '../../models/menu-layout-direction.model';\r\nimport { MenuSharedConfig } from '../../models/menu-shared-config.model';\r\nimport { MenuItemsService } from '../../services/menu-items.service';\r\nimport { ActiveMenuItems } from '../../models';\r\nimport { ResolutionHelper } from '@tilde-nlp/ngx-common';\r\n\r\n@Component({\r\n selector: 'menu-columns',\r\n templateUrl: './menu-columns.component.html',\r\n styleUrls: ['./menu-columns.component.scss']\r\n})\r\nexport class MenuColumnsComponent implements OnInit {\r\n\r\n @Input() direction: MenuLayoutDirection = MenuLayoutDirection.column;\r\n @Input() isOpen = true;\r\n @Output() toggleCollapseEvent = new EventEmitter();\r\n\r\n private _active!: ActiveMenuItems;\r\n get active() { return this._active; }\r\n @Input() set active(value: ActiveMenuItems) {\r\n if (this.toggleOnMobileSelect()) {\r\n this.toggleCollapseEvent.emit();\r\n }\r\n\r\n this._active = value;\r\n\r\n if (!value) {\r\n this.activeItem = undefined;\r\n return;\r\n }\r\n\r\n this.elementExpanded(this.active?.root)\r\n }\r\n\r\n activeItem?: CustomMenuItem;\r\n get mergedGroups() { return this.menuItemsService.mergedGroups; }\r\n\r\n constructor(\r\n protected readonly router: Router,\r\n @Optional() @Inject(MENU_SHARED_CONFIG) protected readonly menuSharedConfig: MenuSharedConfig,\r\n private readonly menuItemsService: MenuItemsService) {\r\n }\r\n\r\n ngOnInit(): void {\r\n this.activeItem = this.active.root;\r\n }\r\n\r\n elementExpanded(element?: CustomMenuItem) {\r\n if (!this.active || !element) {\r\n this.activeItem = undefined;\r\n return;\r\n }\r\n\r\n // if menu is collapsed and chilren are expandable, we should open menu\r\n if (element.showChildren && !this.isOpen) {\r\n this.toggleCollapseEvent.emit();\r\n }\r\n\r\n if (element.showChildren && element.expanded && element === this.active.root) {\r\n this.activeItem = this.active.child;\r\n }\r\n else {\r\n this.activeItem = this.active.root;\r\n }\r\n }\r\n\r\n private toggleOnMobileSelect(): boolean {\r\n return this.isOpen && ResolutionHelper.isMobileRes() && (this.active && Object.values(this.active)?.length > 0);\r\n }\r\n}\r\n","<div fxHide.gt-xs>\r\n <div [fxHide]=\"!collapsed\" class=\"mobile-header\">\r\n <a [libPlausibleEvent]=\"LOGOCLICK_PLAUSIBLE_EVENT\" fxFlex=\"3.125em\" [href]=\"baseUrl\" [class.no-click]=\"menuSettings?.disableLogoNavigation\"\r\n [attr.aria-label]=\"'MENU.ARIA_LABELS.LOGO' | translate\" (click)=\"logoClick($event)\" fxLayoutAlign=\"start center\"\r\n >\r\n <img height=\"40\" width=\"40\" class=\"menu-logo\" [src]=\"menuLogoImage\" alt=\"logo\" />\r\n <span class=\"menu-product-name\">\r\n {{ productName }}\r\n </span>\r\n </a>\r\n\r\n <button\r\n mat-icon-button\r\n class=\"toggler\"\r\n [attr.aria-label]=\"'ARIA_LABELS.MENU_TOGGLER' | translate\"\r\n [libPlausibleEvent]=\"collapsed ? EXPAND_PLAUSIBLE_EVENT : COLLAPSE_PLAUSIBLE_EVENT\"\r\n (click)=\"toggleCollapse()\"\r\n >\r\n <mat-icon>menu</mat-icon>\r\n </button>\r\n </div>\r\n</div>\r\n\r\n<div [ngClass.lt-sm]=\"'mobile'\" class=\"menu-container\" [style.width]=\"sideNavWidth\" fxLayout=\"column\" [class.collapsed]=\"collapsed\">\r\n <div class=\"content\" fxLayout=\"column\" fxFlexFill>\r\n <div class=\"menu-container-header\" fxLayout=\"row\" [fxLayoutAlign]=\"collapsed ? 'center center' : 'space-between center'\">\r\n <a *ngIf=\"!collapsed\" [libPlausibleEvent]=\"LOGOCLICK_PLAUSIBLE_EVENT\" fxFlex=\"3.125em\" [class.no-click]=\"menuSettings?.disableLogoNavigation\" [href]=\"baseUrl\"\r\n [attr.aria-label]=\"'MENU.ARIA_LABELS.LOGO' | translate\" (click)=\"logoClick($event)\" fxLayoutAlign=\"start center\"\r\n >\r\n <img height=\"40\" width=\"40\" class=\"menu-logo\" [src]=\"menuLogoImage\" alt=\"logo\" />\r\n <span class=\"menu-product-name\">\r\n {{ productName }}\r\n </span>\r\n </a>\r\n\r\n <button\r\n mat-icon-button\r\n class=\"toggler\"\r\n [attr.aria-label]=\"'ARIA_LABELS.MENU_TOGGLER' | translate\"\r\n [libPlausibleEvent]=\"collapsed ? EXPAND_PLAUSIBLE_EVENT : COLLAPSE_PLAUSIBLE_EVENT\"\r\n [matTooltip]=\"(collapsed ? 'MENU.EXPAND' : 'MENU.COLLAPSE') | translate\"\r\n (click)=\"toggleCollapse()\"\r\n >\r\n <mat-icon fxHide.gt-xs>close</mat-icon>\r\n <mat-icon fxHide.lt-sm>{{ collapsed ? 'keyboard_double_arrow_right' : 'keyboard_double_arrow_left' }}</mat-icon>\r\n </button>\r\n </div>\r\n\r\n <div class=\"menu-wrapper\" fxLayout=\"column\">\r\n <menu-columns (toggleCollapseEvent)=\"toggleCollapse()\" [direction]=\"direction\" role=\"navigation\" [isOpen]=\"!collapsed\"\r\n [active]=\"active\"></menu-columns>\r\n </div>\r\n <div fxFlex fxLayout=\"column\">\r\n <ng-content></ng-content>\r\n </div>\r\n <div class=\"profile\">\r\n <button #state=\"matMenuTrigger\" [matMenuTriggerFor]=\"menu\" class=\"profile-wrapper\">\r\n <div class=\"profile-icon\">\r\n @if (userInitials) {\r\n {{userInitials}}\r\n } @else {\r\n <mat-icon>person</mat-icon>\r\n }\r\n </div>\r\n\r\n <ng-container *ngIf=\"!collapsed\">\r\n <span class=\"profile-name\">\r\n {{ username ?? 'MENU.ANONYMOUS' | translate }}\r\n </span>\r\n\r\n <mat-icon *ngIf=\"state.menuOpen; else iconDown\" class=\"profile-arrow spin\">{{\"keyboard_arrow_down\"}}</mat-icon>\r\n\r\n <ng-template #iconDown>\r\n <mat-icon class=\"profile-arrow spin\">{{\"keyboard_arrow_up\" }}</mat-icon>\r\n </ng-template>\r\n </ng-container>\r\n </button>\r\n\r\n <mat-menu #menu=\"matMenu\" class=\"profile-menu\">\r\n @for (item of menuSettings.userOptions; track item.label) {\r\n @if (item.link) {\r\n @if (item.link.isExternal) {\r\n <a class=\"mat-mdc-menu-item\" [href]=\"item.link.href\" target=\"_blank\" (click)=\"linkCallback(item.link)\">\r\n <ng-container\r\n *ngTemplateOutlet=\"profileMenuItem; context: { icon: item.icon, label: item.label }\">\r\n </ng-container>\r\n </a>\r\n } @else {\r\n <a class=\"mat-mdc-menu-item\" [routerLink]=\"item.link.href\" (click)=\"linkCallback(item.link)\">\r\n <ng-container\r\n *ngTemplateOutlet=\"profileMenuItem; context: { icon: item.icon, label: item.label }\">\r\n </ng-container>\r\n </a>\r\n }\r\n } @else {\r\n <button\r\n mat-menu-item\r\n class=\"profile-option\"\r\n (click)=\"item.button?.callback()\"\r\n >\r\n <ng-container\r\n *ngTemplateOutlet=\"profileMenuItem; context: { icon: item.icon, label: item.label }\">\r\n </ng-container>\r\n </button>\r\n }\r\n }\r\n </mat-menu>\r\n </div>\r\n\r\n <ng-template #profileMenuItem let-icon=\"icon\" let-label=\"label\">\r\n @if (icon) {\r\n @if (!icon?.isCustom) {\r\n <span class=\"material-icons profile-option-icon\" [class.material-icons-outlined]=\"icon?.isOutlined\">\r\n {{icon?.name}}\r\n </span>\r\n } @else {\r\n <mat-icon class=\"profile-option-icon\" [svgIcon]=\"icon?.name\"></mat-icon>\r\n }\r\n }\r\n {{ label | translate }}\r\n </ng-template>\r\n</div>\r\n","import { Component, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport { DOMService, PlausibleEvent, ResolutionHelper } from '@tilde-nlp/ngx-common';\r\nimport { StrapiLinkService } from '@tilde-nlp/ngx-strapi';\r\nimport { NavBaseComponent } from '../nav-base/nav-base.component';\r\nimport { SideNavSettings } from './models/side-nav-settings.model';\r\nimport { MenuItemsService } from '../../services/menu-items.service';\r\nimport { UserMenuOptionLink } from './models/user-menu-option-link.model';\r\n\r\n\r\n@Component({\r\n selector: 'lib-side-nav-menu',\r\n templateUrl: './side-nav-menu.component.html',\r\n styleUrls: ['./side-nav-menu.component.scss']\r\n})\r\nexport class SideNavMenuComponent extends NavBaseComponent implements OnInit, OnDestroy {\r\n #username!: string;\r\n get username() { return this.#username; }\r\n @Input() set username(value) {\r\n // if username is passed whith whitespace in begginining, it breaks UI, so trim it for safety.\r\n this.#username = value.trim();\r\n this.setUserInitials();\r\n }\r\n\r\n @Input() menuSettings: SideNavSettings = {\r\n expandedWidth: '241px',\r\n collapsedWidth: '56px',\r\n menuLogo: '',\r\n menuLogoCollapsed: '',\r\n disableStrapi: false,\r\n disableLogoNavigation: false\r\n }\r\n\r\n @Input() productName!: string;\r\n\r\n userInitials!: string;\r\n collapsed = false;\r\n\r\n readonly COLLAPSED_LOCAL_STORAGE_KEY = \"TLD_MENU_SIDE_NAV_COLLAPSED\";\r\n\r\n //#region Plausible event variables for collapse button\r\n private readonly COLLAPSE_PLAUSIBLE_EVENT_ID = \"collapseMenu\";\r\n private readonly COLLAPSE_PLAUSIBLE_ACTION_KEY = \"action\";\r\n private readonly LOGOCLICK_PLAUSIBLE_ACTION_ID = \"tilde_logo_click\"\r\n\r\n readonly LOGOCLICK_PLAUSIBLE_EVENT: PlausibleEvent = {\r\n eventId: this.LOGOCLICK_PLAUSIBLE_ACTION_ID,\r\n properties: []\r\n }\r\n\r\n readonly EXPAND_PLAUSIBLE_EVENT: PlausibleEvent = {\r\n eventId: this.COLLAPSE_PLAUSIBLE_EVENT_ID,\r\n properties: [{ key: this.COLLAPSE_PLAUSIBLE_ACTION_KEY, value: \"expand\" }]\r\n }\r\n\r\n readonly COLLAPSE_PLAUSIBLE_EVENT: PlausibleEvent = {\r\n eventId: this.COLLAPSE_PLAUSIBLE_EVENT_ID,\r\n properties: [{ key: this.COLLAPSE_PLAUSIBLE_ACTION_KEY, value: \"collapse\" }]\r\n }\r\n //#endregion\r\n\r\n readonly baseUrl: string | undefined;\r\n\r\n get menuLogoImage(): string {\r\n return this.collapsed\r\n ? this.menuSettings.menuLogoCollapsed ?? this.menuSettings.menuLogo\r\n : this.menuSettings.menuLogo;\r\n }\r\n\r\n get sideNavWidth(): string | undefined {\r\n return this.collapsed ? this.menuSettings.collapsedWidth : this.menuSettings.expandedWidth;\r\n }\r\n\r\n constructor(\r\n public strapiLinkService: StrapiLinkService,\r\n readonly domService: DOMService,\r\n readonly menuItems: MenuItemsService,\r\n ) {\r\n super(menuItems);\r\n this.baseUrl = menuItems.menuSharedConfig.baseUrl || '';\r\n }\r\n\r\n override ngOnInit(): void {\r\n super.ngOnInit();\r\n this.getColapsedFromLocalStorage();\r\n this.setUserInitials();\r\n }\r\n\r\n logoClick(event: MouseEvent): void {\r\n this.strapiLinkService.strapiLinkClick(event);\r\n }\r\n\r\n toggleCollapse() {\r\n this.collapsed = !this.collapsed;\r\n this.setColapsedFromLocalStorage();\r\n }\r\n\r\n linkCallback(link: UserMenuOptionLink) {\r\n if (link.callback) {\r\n link.callback();\r\n }\r\n }\r\n\r\n private getColapsedFromLocalStorage() {\r\n if (!this.domService.localStorage) {\r\n return;\r\n }\r\n\r\n this.collapsed = (this.domService.localStorage.getItem(this.COLLAPSED_LOCAL_STORAGE_KEY) == 'true' || ResolutionHelper.isMobileRes()) ? true : false;\r\n }\r\n\r\n private setColapsedFromLocalStorage() {\r\n if (!this.domService.localStorage) {\r\n return;\r\n }\r\n this.domService.localStorage.setItem(this.COLLAPSED_LOCAL_STORAGE_KEY, this.collapsed.toString());\r\n }\r\n\r\n private setUserInitials(): void {\r\n if (!this.username) {\r\n return;\r\n }\r\n\r\n // displaying first letters of name and surname\r\n const splittedUsername = this.username.split(' ');\r\n if (splittedUsername.length === 1) {\r\n // If there's only one word, use the first letter\r\n this.userInitials = splittedUsername[0][0];\r\n return;\r\n }\r\n // If there are more than one word, use the first letter of the first two names\r\n this.userInitials = splittedUsername[0][0] + splittedUsername[1][0];\r\n }\r\n}\r\n","import { ModuleWithProviders, NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { SideNavMenuComponent } from './components/side-nav-menu/side-nav-menu.component';\r\nimport { FlexLayoutModule } from '@ngbracket/ngx-layout';\r\nimport { RouterModule } from '@angular/router';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { MatDialogModule } from '@angular/material/dialog';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatListModule } from '@angular/material/list';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { StarpiMenuService } from './services/strapi.service';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport {\r\n provideHttpClient,\r\n withInterceptorsFromDi,\r\n} from '@angular/common/http';\r\nimport { MenuSharedConfig } from './models/menu-shared-config.model';\r\nimport { MENU_SHARED_CONFIG } from './injection-tokens/menu-shared-config.token';\r\nimport { NavBaseComponent } from './components/nav-base/nav-base.component';\r\nimport { MenuItemListComponent } from './components/menu-item-list/menu-item-list.component';\r\nimport { PlausibleModule } from '@tilde-nlp/ngx-common';\r\nimport { MenuColumnsComponent } from './components/menu-columns/menu-columns.component';\r\nimport { MenuIconComponent } from './components/menu-icon/menu-icon.component';\r\nimport { MenuItemLinkComponent } from './components/menu-item-link/menu-item-link.component';\r\nimport { MenuItemBtnComponent } from './components/menu-item-btn/menu-item-btn.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n SideNavMenuComponent,\r\n NavBaseComponent,\r\n MenuItemListComponent,\r\n MenuColumnsComponent,\r\n MenuIconComponent,\r\n MenuItemLinkComponent,\r\n MenuItemBtnComponent\r\n ],\r\n exports: [\r\n SideNavMenuComponent,\r\n MenuColumnsComponent,\r\n ],\r\n imports: [\r\n FlexLayoutModule,\r\n RouterModule,\r\n CommonModule,\r\n MatTooltipModule,\r\n MatDialogModule,\r\n MatIconModule,\r\n MatButtonModule,\r\n MatListModule,\r\n MatMenuModule,\r\n MatIconModule,\r\n TranslateModule,\r\n PlausibleModule\r\n ],\r\n providers: [StarpiMenuService, provideHttpClient(withInterceptorsFromDi())],\r\n})\r\nexport class MenuModule {\r\n static forRoot(config: MenuSharedConfig): ModuleWithProviders<MenuModule> {\r\n return {\r\n ngModule: MenuModule,\r\n providers: [{ provide: MENU_SHARED_CONFIG, useValue: config }],\r\n };\r\n }\r\n}\r\n","import { UserMenuOption } from '../components/side-nav-menu/models/user-menu-option.model';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { SelectLanguageDialogComponent } from '@tilde-nlp/ngx-common';\r\n\r\n/**\r\n * Prefefined user menu options, so that same style of items are used across all products. Use this by passing necessary configuration.\r\n */\r\nexport const USER_MENU_OPTIONS = {\r\n subscription: (href: string, callback?: () => void): UserMenuOption => ({\r\n icon: { name: 'credit_card' },\r\n label: 'MENU.SUBSCRIPTION',\r\n link: { href: href, callback },\r\n }),\r\n termsOfUse: (href: string, callback?: () => void): UserMenuOption => ({\r\n icon: { name: 'text_snippet' },\r\n label: 'MENU.TERMS_OF_USE',\r\n link: { href, isExternal: true, callback },\r\n }),\r\n privacy: (href: string, callback?: () => void): UserMenuOption => ({\r\n icon: { name: 'gpp_maybe' },\r\n label: 'MENU.PRIVACY',\r\n link: { href, isExternal: true, callback },\r\n }),\r\n help: (href: string, icon?: { name: string, isCustom: boolean }, callback?: () => void): UserMenuOption => ({\r\n label: 'MENU.HELP_CENTER',\r\n icon: { name: icon ? icon.name : `help`, isCustom: icon ? icon.isCustom : false },\r\n link: { href, isExternal: true, callback },\r\n }),\r\n contactUs: (href: string, callback?: () => void): UserMenuOption => ({\r\n label: 'MENU.CONTACT_US',\r\n icon: { name: `mail` },\r\n link: { href, isExternal: true, callback },\r\n }),\r\n /** use language update callback to save in localstorage */\r\n changeLanguage: (\r\n dialog: MatDialog,\r\n languages: string[],\r\n languageChangeCallback?: (language: string) => void\r\n ): UserMenuOption => ({\r\n label: 'MENU.CHANGE_LANGUAGE',\r\n icon: { name: 'language' },\r\n button: {\r\n callback: () => {\r\n dialog\r\n .open(SelectLanguageDialogComponent, {\r\n data: { languages: languages },\r\n })\r\n .afterClosed()\r\n .subscribe((language: string) => {\r\n if (language && languageChangeCallback) {\r\n languageChangeCallback(language);\r\n }\r\n });\r\n },\r\n },\r\n }),\r\n logout: (callback: () => void): UserMenuOption => ({\r\n icon: { name: 'logout' },\r\n label: 'MENU.LOG_OUT',\r\n button: { callback: () => callback() },\r\n }),\r\n};\r\n","/*\r\n * Public API Surface of ngx-menu\r\n */\r\n\r\n\r\nexport * from './lib/components/side-nav-menu';\r\nexport * from './lib/injection-tokens';\r\nexport * from './lib/models';\r\nexport * from './lib/menu.module';\r\nexport * from './lib/components/side-nav-menu/side-nav-menu.component';\r\nexport * from './lib/components/menu-columns/menu-columns.component';\r\nexport * from './lib/components/nav-base/nav-base.component';\r\nexport * from './lib/components/nav-base/models';\r\nexport * from \"./lib/services\";\r\nexport * from \"./lib/constants\";\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2.StarpiMenuService","i1.MenuItemsService","_c0","i8.MenuIconComponent","i9.MenuItemLinkComponent","i10.MenuItemBtnComponent","i11","i2.MenuItemsService","i3.MenuItemsService"],"mappings":"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"}
1
+ {"version":3,"file":"tilde-nlp-ngx-menu.mjs","sources":["../../../projects/ngx-menu/src/lib/components/nav-base/models/strapi-data-location.enum.ts","../../../projects/ngx-menu/src/lib/injection-tokens/menu-shared-config.token.ts","../../../projects/ngx-menu/src/lib/models/menu-icon-strapi-extension.const.ts","../../../projects/ngx-menu/src/lib/services/strapi.service.ts","../../../projects/ngx-menu/src/lib/services/menu-items.service.ts","../../../projects/ngx-menu/src/lib/components/nav-base/nav-base.component.ts","../../../projects/ngx-menu/src/lib/components/nav-base/nav-base.component.html","../../../projects/ngx-menu/src/lib/models/menu-layout-direction.model.ts","../../../projects/ngx-menu/src/lib/components/menu-icon/menu-icon.component.html","../../../projects/ngx-menu/src/lib/components/menu-icon/menu-icon.component.ts","../../../projects/ngx-menu/src/lib/components/menu-item-link/menu-item-link.component.html","../../../projects/ngx-menu/src/lib/components/menu-item-link/menu-item-link.component.ts","../../../projects/ngx-menu/src/lib/components/menu-item-btn/menu-item-btn.component.html","../../../projects/ngx-menu/src/lib/components/menu-item-btn/menu-item-btn.component.ts","../../../projects/ngx-menu/src/lib/components/menu-item-list/menu-item-list.component.html","../../../projects/ngx-menu/src/lib/components/menu-item-list/menu-item-list.component.ts","../../../projects/ngx-menu/src/lib/components/menu-columns/menu-columns.component.html","../../../projects/ngx-menu/src/lib/components/menu-columns/menu-columns.component.ts","../../../projects/ngx-menu/src/lib/components/side-nav-menu/side-nav-menu.component.html","../../../projects/ngx-menu/src/lib/components/side-nav-menu/side-nav-menu.component.ts","../../../projects/ngx-menu/src/lib/menu.module.ts","../../../projects/ngx-menu/src/lib/constants/user-menu-options.const.ts","../../../projects/ngx-menu/src/public-api.ts","../../../projects/ngx-menu/src/tilde-nlp-ngx-menu.ts"],"sourcesContent":["/** Necessary for menu components to determine where loaded data from strapi should be placed - either in front of pre defined items or in end. */\r\nexport enum StrapiDataLocation {\r\n START,\r\n END\r\n}","export const MENU_SHARED_CONFIG = \"menu-shared-config\";\r\n","export const MENU_ICON_STRAPI_EXTENSION = \".svg\";\r\n","import { Inject, Injectable, Optional } from \"@angular/core\";\r\nimport { IconService } from \"@tilde-nlp/ngx-common\";\r\nimport { StrapiApiConfig, StrapiSubscriptionService, STRAPI_API_CONFIG_TOKEN } from \"@tilde-nlp/ngx-strapi\";\r\nimport { map, Observable } from \"rxjs\";\r\nimport { CollectionTypes, MenuItems } from \"@tilde-nlp/strapi-models\";\r\nimport { CustomMenuItem } from \"../models/custom-menu-item.model\";\r\nimport { MENU_ICON_STRAPI_EXTENSION } from \"../models/menu-icon-strapi-extension.const\";\r\nimport { MenuSharedConfig } from \"../models/menu-shared-config.model\";\r\nimport { MENU_SHARED_CONFIG } from \"../injection-tokens/menu-shared-config.token\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class StarpiMenuService {\r\n readonly svgIconNamePrefix = \"strapi-menu-icon-\";\r\n imgBaseUrl = '';\r\n\r\n constructor(private readonly strapiSubscription: StrapiSubscriptionService,\r\n @Optional() @Inject(MENU_SHARED_CONFIG) private readonly menuConfig: MenuSharedConfig,\r\n @Optional() @Inject(STRAPI_API_CONFIG_TOKEN) strapiConfig: StrapiApiConfig,\r\n private readonly iconService: IconService) {\r\n this.imgBaseUrl = strapiConfig?.apiUrl;\r\n }\r\n\r\n getMenuItems(): Observable<CustomMenuItem[]> {\r\n const responseObs = this.strapiSubscription.subscribeCollectionType<MenuItems>(CollectionTypes.MENU_ITEMS)\r\n .pipe(map((items: MenuItems[] | null) => {\r\n // Remove disabled items so they are not processed later.\r\n\r\n const convertedItems: CustomMenuItem[] = [];\r\n if (!items || items.length === 0) {\r\n return convertedItems;\r\n }\r\n items = items.filter(item => !item.disabled);\r\n items.forEach((menu: MenuItems) => {\r\n menu.link = this.addBaseUrlIfNecessary(menu.link);\r\n const originalMenuIcon = menu.icon.data.attributes;\r\n if (originalMenuIcon.url.startsWith('/')) {\r\n originalMenuIcon.url = this.imgBaseUrl + originalMenuIcon.url;\r\n }\r\n\r\n if (originalMenuIcon.ext === MENU_ICON_STRAPI_EXTENSION) {\r\n // add custom prefix so that it is not easy to mix with other icons in registry\r\n menu.icon.data.attributes.name = this.svgIconNamePrefix + originalMenuIcon.name;\r\n this.iconService.registerIconFromUrl(originalMenuIcon.name, originalMenuIcon.url);\r\n }\r\n\r\n convertedItems.push(this.convertToCustomMenuItem(menu));\r\n });\r\n return convertedItems;\r\n }));\r\n return responseObs;\r\n }\r\n\r\n unsubscribe(): void {\r\n this.strapiSubscription.unsubscribe(CollectionTypes.MENU_ITEMS);\r\n }\r\n\r\n private addBaseUrlIfNecessary(link: string): string {\r\n if (!this.menuConfig?.baseUrl) {\r\n return link;\r\n }\r\n try {\r\n new URL(link);\r\n // eslint-disable-next-line no-empty\r\n } catch { }\r\n try {\r\n return new URL(link, this.menuConfig.baseUrl).href;\r\n } catch {\r\n return link;\r\n }\r\n }\r\n\r\n private convertToCustomMenuItem(item: MenuItems): CustomMenuItem {\r\n return {\r\n icon: item.icon.data.attributes.name,\r\n link: item.link,\r\n title: item.title,\r\n externalLink: item.externalLink,\r\n // Material icons should not come from strapi\r\n materialIcon: false,\r\n plausibleEvent: item.plausibleEvent,\r\n customId: item.customId\r\n }\r\n }\r\n}\r\n","import { Inject, Injectable, Optional } from '@angular/core';\r\nimport { IsActiveMatchOptions, NavigationEnd, Router } from '@angular/router';\r\nimport { BehaviorSubject, filter } from 'rxjs';\r\nimport { StrapiDataLocation } from '../components/nav-base/models';\r\nimport { MENU_SHARED_CONFIG } from '../injection-tokens';\r\nimport { StarpiMenuService } from './strapi.service';\r\nimport { ActiveMenuItems } from '../models/active-menu-items.model';\r\nimport { CustomMenuItem } from '../models/custom-menu-item.model';\r\nimport { MenuSharedConfig } from '../models/menu-shared-config.model';\r\nimport { MenuItemGroup } from '../models/menu-item-group.model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class MenuItemsService {\r\n\r\n private readonly _activeElements: BehaviorSubject<ActiveMenuItems> = new BehaviorSubject({});\r\n get activeElements() { return this._activeElements.asObservable(); }\r\n\r\n private strapiItems: CustomMenuItem[] = [];\r\n\r\n private _strapiGroup!: MenuItemGroup;\r\n\r\n private _allRootItems!: CustomMenuItem[];\r\n get allRootItems() { return this._allRootItems; }\r\n\r\n get strapiGroup() { return this._strapiGroup; }\r\n\r\n private readonly isActiveMatchOptions: IsActiveMatchOptions = {\r\n matrixParams: 'exact',\r\n queryParams: 'exact',\r\n paths: 'exact',\r\n fragment: 'exact'\r\n };\r\n\r\n menuSharedConfig!: MenuSharedConfig;\r\n\r\n private get customId() { return this.menuSharedConfig?.customId; }\r\n private get hideSelectedCustomId() { return this.menuSharedConfig?.hideSelectedCustomId; }\r\n private get strapiGroupBase() { return this.menuSharedConfig?.strapiGroupBase; }\r\n private get strapiDataLocation() { return this.menuSharedConfig?.strapiDataLocation ?? StrapiDataLocation.END }\r\n private _mergedGroups: MenuItemGroup[] = [];\r\n get mergedGroups() { return this._mergedGroups; }\r\n\r\n private get menuItemGroups() { return this.menuSharedConfig.itemGroups }\r\n\r\n constructor(private readonly router: Router,\r\n @Optional() @Inject(MENU_SHARED_CONFIG) protected readonly config: MenuSharedConfig,\r\n private readonly strapiService: StarpiMenuService) {\r\n this.menuSharedConfig = config;\r\n this.initData();\r\n this.subscribeToRouteChanges();\r\n }\r\n\r\n setMenuItems(config: MenuSharedConfig): void {\r\n this.menuSharedConfig = config;\r\n this.initData();\r\n }\r\n\r\n private subscribeToRouteChanges() {\r\n this.router.events\r\n .pipe(filter(e => e instanceof NavigationEnd))\r\n .subscribe(() => { this.updateActive(); });\r\n }\r\n\r\n private updateActive() {\r\n const items = this.allRootItems;\r\n const root = this.findActiveElement(items, false);\r\n const child = this.findActiveElement(items, true);\r\n this._activeElements.next({ root, child });\r\n }\r\n\r\n /** Finds active element from whole list. RouterLink has priority over custom Id. */\r\n // at this version, child elements should not have customId, since that property comes from strapi and strapi provides only one level structure\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n private findActiveElement(items: CustomMenuItem[] | undefined, includeChildren: boolean): CustomMenuItem | undefined {\r\n if (!items?.length) {\r\n return undefined;\r\n }\r\n\r\n let customIdElement: CustomMenuItem | undefined;\r\n\r\n for (const item of items) {\r\n // Child element has priority over parent, so need to check if any child is active\r\n if (this.isElementRouterLinkActive(item)) {\r\n // If has children and they are visible, return active child or current item\r\n return includeChildren ? this.findActiveElement(item.children, includeChildren) ?? item : item;\r\n }\r\n // if selected custom id element is hidden, no need to look for it and set it to active;\r\n else if (!this.hideSelectedCustomId && this.isElementCustomIdActive(item)) {\r\n customIdElement = item;\r\n }\r\n else if (includeChildren && item.children?.length) {\r\n const activeChild = this.findActiveElement(item.children, includeChildren);\r\n if (activeChild) {\r\n return activeChild;\r\n }\r\n }\r\n }\r\n return customIdElement;\r\n }\r\n\r\n private initData() {\r\n if (!this.menuSharedConfig?.disableStrapi) {\r\n this.strapiService.getMenuItems().subscribe(this.loadData.bind(this));\r\n }\r\n else {\r\n this.loadData([]);\r\n }\r\n }\r\n\r\n private loadData(data: CustomMenuItem[]) {\r\n // hide custom id based on input param\r\n this.strapiItems = (this.hideSelectedCustomId && this.customId) ? data.filter(item => item.customId !== this.customId) : data;\r\n this._strapiGroup = {\r\n ...this.strapiGroupBase,\r\n items: this.strapiItems\r\n }\r\n\r\n if (this.strapiDataLocation === StrapiDataLocation.START) {\r\n this._mergedGroups = [this.strapiGroup, ...this.menuItemGroups ?? []];\r\n }\r\n else if (this.strapiDataLocation === StrapiDataLocation.END) {\r\n this._mergedGroups = [...this.menuItemGroups ?? [], this.strapiGroup];\r\n }\r\n\r\n const allItems = this.mergedGroups.map(map => map.items);\r\n let newArray: CustomMenuItem[] = [];\r\n allItems.forEach((array) => { newArray = newArray.concat(array) });\r\n this._allRootItems = newArray;\r\n\r\n this.updateActive();\r\n }\r\n\r\n private isElementCustomIdActive(element: CustomMenuItem) {\r\n return this.customId && element.customId === this.customId;\r\n }\r\n\r\n private isElementRouterLinkActive(element: CustomMenuItem) {\r\n const routerLinkActiveOptions: IsActiveMatchOptions = (element as CustomMenuItem).routerLinkActiveOptions ?? this.menuSharedConfig.activeMatchOptions ?? this.isActiveMatchOptions;\r\n\r\n return this.router.isActive(element.link, routerLinkActiveOptions);\r\n }\r\n}\r\n","import { Component, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport { MenuLayoutDirection } from '../../models/menu-layout-direction.model';\r\nimport { MenuItemsService } from '../../services/menu-items.service';\r\nimport { ActiveMenuItems } from '../../models';\r\nimport { Subscription } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'nav-base',\r\n templateUrl: './nav-base.component.html',\r\n styleUrls: ['./nav-base.component.scss']\r\n})\r\n/** This component is created to help nest some common input params through nav components. */\r\nexport class NavBaseComponent implements OnInit, OnDestroy {\r\n @Input() direction!: MenuLayoutDirection;\r\n active!: ActiveMenuItems;\r\n protected activeItemSubscription!: Subscription;\r\n\r\n constructor(readonly menuItemsService: MenuItemsService) {\r\n }\r\n\r\n ngOnInit(): void {\r\n this.initBase();\r\n }\r\n\r\n initBase() {\r\n this.activeItemSubscription = this.menuItemsService.activeElements.subscribe((active) => {\r\n this.active = active;\r\n })\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroyBase();\r\n }\r\n\r\n destroyBase() {\r\n this.activeItemSubscription?.unsubscribe();\r\n }\r\n}\r\n","<p>nav-base works!</p>\r\n","\r\nexport enum MenuLayoutDirection {\r\n column = \"column\",\r\n row = \"row\"\r\n}\r\n","<ng-container *ngIf=\"menuItem.icon\">\r\n <mat-icon class=\"menu-icon\" [svgIcon]=\"menuItem.icon\" *ngIf=\"!menuItem.materialIcon; else materialIcon;\"></mat-icon>\r\n <ng-template #materialIcon>\r\n <span class=\"material-icons menu-icon\" [class.material-icons-outlined]=\"menuItem?.isIconOutlined\">{{menuItem.icon}}</span>\r\n </ng-template>\r\n</ng-container>\r\n","import { Component, Input } from '@angular/core';\r\nimport { Media } from '@tilde-nlp/strapi-models';\r\nimport { CustomMenuItem, MENU_ICON_STRAPI_EXTENSION } from '../../models';\r\n\r\n@Component({\r\n selector: 'tld-menu-icon',\r\n templateUrl: './menu-icon.component.html',\r\n styleUrls: ['./menu-icon.component.scss']\r\n})\r\nexport class MenuIconComponent {\r\n readonly svgExtension = MENU_ICON_STRAPI_EXTENSION;\r\n\r\n @Input() menuItem!: CustomMenuItem;\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n isIconMediaType(icon: any): icon is Media {\r\n return typeof icon !== \"string\";\r\n }\r\n}\r\n","<a [libPlausibleEvent]=\"menuItem.plausibleEvent\" [fxLayout]=\"menuItemLayout\"\r\n [ngClass.lt-md]=\"'mobile'\" [class.text-center]=\"menuItemLayout === 'column'\" class=\"text-m menu-item\"\r\n [matTooltip]=\"!labelsVisible ? (menuItem.title | translate) : ''\" matTooltipPosition=\"after\"\r\n [fxLayoutAlign]=\"menuLayoutDirection\" matTooltipClass=\"menu-tooltip\" (click)=\"linkClick($event, menuItem)\"\r\n [href]=\"href | translate\" [attr.target]=\"menuItem.externalLink?'_blank': '_self'\"\r\n [class.active-menu-item]=\"menuItem === activeItem\">\r\n <ng-container *ngIf=\"showIcons && menuItem.icon\">\r\n <tld-menu-icon [menuItem]=\"menuItem\"></tld-menu-icon>\r\n </ng-container>\r\n <span *ngIf=\"labelsVisible\" class=\"menu-item-title\">\r\n <span class=\"title-content\" [attr.content]=\"menuItem.title | translate\">\r\n {{ menuItem.title | translate}}\r\n </span>\r\n </span>\r\n</a>\r\n","import { Component, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport { PlaceholderComponentBase, StrapiLinkService, StrapiVariablesService } from '@tilde-nlp/ngx-strapi';\r\nimport { CustomMenuItem, MenuLayoutDirection } from '../../models';\r\n\r\n@Component({\r\n selector: 'tld-menu-item-link',\r\n templateUrl: './menu-item-link.component.html',\r\n styleUrls: ['./menu-item-link.component.scss']\r\n})\r\nexport class MenuItemLinkComponent implements OnInit, OnDestroy, PlaceholderComponentBase {\r\n @Input() direction!: MenuLayoutDirection;\r\n @Input() labelsVisible!: boolean;\r\n @Input() activeItem!: CustomMenuItem | undefined;\r\n @Input() showIcons = true;\r\n @Input() menuItem!: CustomMenuItem;\r\n\r\n textWithPlaceholders!: string;\r\n href!: string;\r\n\r\n private placeholderServiceId!: number;\r\n get menuItemLayout(): string {\r\n return this.direction === MenuLayoutDirection.column ? 'column' : 'row';\r\n }\r\n\r\n get menuLayoutDirection(): string {\r\n return (this.direction === MenuLayoutDirection.column || !this.labelsVisible)\r\n ? 'start center' : 'start start';\r\n }\r\n\r\n constructor(private readonly strapiLinkService: StrapiLinkService,\r\n private readonly placeholderService: StrapiVariablesService) { }\r\n\r\n ngOnInit(): void {\r\n this.textWithPlaceholders = this.menuItem.link;\r\n this.placeholderServiceId = this.placeholderService.register(this);\r\n }\r\n\r\n linkClick(event: MouseEvent, item: CustomMenuItem) {\r\n this.strapiLinkService.strapiLinkClick(event, item.externalLink);\r\n }\r\n\r\n updateTextWithPlaceholders = (textWithReplacedPlaceholders: string) => this.href = textWithReplacedPlaceholders;\r\n\r\n ngOnDestroy(): void {\r\n this.placeholderService.unregister(this.placeholderServiceId);\r\n }\r\n}\r\n","<button\r\n [ngClass.lt-md]=\"'mobile'\"\r\n [attr.id]=\"menuItem.customId\"\r\n class=\"menu-item w-full flex justify-center items-center\"\r\n fxLayoutAlign=\"space-between start\"\r\n [class.active-menu-item]=\"menuItem.isItemActive ? menuItem.isItemActive(menuItem.customId) : menuItem === activeItem\"\r\n (click)=\"menuItem.clickAction && menuItem.clickAction()\"\r\n>\r\n <span class=\"btn-label\">\r\n {{ menuItem.title | translate }}\r\n </span>\r\n <ng-container *ngIf=\"menuItem.subMenu?.length\">\r\n <div [class.open]=\"menuTrigger?.menuOpen\">\r\n <button\r\n class=\"sub-menu-btn\"\r\n mat-icon-button\r\n [matMenuTriggerFor]=\"menu\"\r\n #menuTrigger=\"matMenuTrigger\"\r\n (click)=\"$event.preventDefault(); $event.stopImmediatePropagation()\"\r\n >\r\n <mat-icon>more_vert</mat-icon>\r\n </button>\r\n <mat-menu #menu=\"matMenu\">\r\n <button\r\n *ngFor=\"let item of menuItem.subMenu\"\r\n mat-menu-item\r\n (click)=\"item.onOptionClick()\"\r\n >\r\n {{ item.title | translate }}\r\n </button>\r\n </mat-menu>\r\n </div>\r\n </ng-container>\r\n</button>\r\n","import { Component, Input } from '@angular/core';\r\nimport { CustomMenuItem, MenuLayoutDirection } from '../../models';\r\n\r\n@Component({\r\n selector: 'lib-menu-item-btn',\r\n standalone: false,\r\n templateUrl: './menu-item-btn.component.html',\r\n styleUrl: './menu-item-btn.component.scss',\r\n})\r\nexport class MenuItemBtnComponent {\r\n @Input() direction!: MenuLayoutDirection;\r\n @Input() activeItem!: CustomMenuItem | undefined;\r\n @Input() menuItem!: CustomMenuItem;\r\n}\r\n","<div class=\"menu-list-wrapper\">\r\n @if (titleKey && showTitle && labelsVisible && !menuItemGroup.itemGroupClick) {\r\n <div fxLayoutAlign=\"start center\" class=\"menu-item-list-title\">\r\n <mat-icon class=\"menu-title-btn\" *ngIf=\"menuItemGroup.titleIcon\">{{menuItemGroup.titleIcon}}</mat-icon>\r\n \r\n <button class=\"menu-title-btn\" *ngIf=\"menuItemGroup.titleNavigation\" mat-icon-button [routerLink]=\"menuItemGroup.titleNavigation.path\" [matTooltip]=\"menuItemGroup.titleNavigation?.tooltip ?? '' | translate\">\r\n <mat-icon>{{menuItemGroup.titleNavigation.icon}}</mat-icon>\r\n </button>\r\n \r\n {{ titleKey | translate }}\r\n </div>\r\n } @else if (menuItemGroup?.itemGroupClick) {\r\n <ng-container *ngTemplateOutlet=\"itemGroupButton\">\r\n </ng-container>\r\n }\r\n <div fxLayout=\"column\" [fxLayoutAlign]=\"menuLayoutDirection\" class=\"menu-item-list\">\r\n <ng-container *ngFor=\"let menuItem of items\">\r\n <ng-container\r\n *ngTemplateOutlet=\"!menuItem.showChildren || !menuItem.children || menuItem?.children?.length === 0 ? (menuItem.clickAction ? menuItemBtn : menuItemLink) : itemWithChildren; context: {menuItem: menuItem}\">\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n</div>\r\n\r\n<ng-template #itemWithChildren let-menuItem=\"menuItem\">\r\n <button [attr.id]=\"menuItem.customId\" [ngClass.lt-md]=\"'mob-menu-item'\" [fxLayout]=\"menuItemLayout\" class=\"text-m menu-item\"\r\n [matTooltip]=\"!labelsVisible ? (menuItem.title | translate) : ''\" matTooltipPosition=\"after\" [class.menu-labels-visible]=\"labelsVisible\"\r\n [fxLayoutAlign]=\"menuLayoutDirection\" matTooltipClass=\"menu-tooltip\" fxLayoutGap=\"0.375rem\"\r\n [class.active-menu-item]=\"activeItem?.link && menuItem === activeItem\" (click)=\"toggleItemExpand($event,menuItem)\">\r\n <ng-container *ngIf=\"showIcons && menuItem.icon\">\r\n <tld-menu-icon [menuItem]=\"menuItem\"></tld-menu-icon>\r\n </ng-container>\r\n <ng-container *ngIf=\"labelsVisible\">\r\n <span class=\"menu-item-title\">\r\n <span class=\"title-content\">{{ menuItem.title | translate }}</span></span>\r\n <span class=\"material-icons\" *ngIf=\"menuItem.showChildren && menuItem.children\">\r\n {{ menuItem.expanded ? 'arrow_drop_up' : 'arrow_drop_down' }}\r\n </span>\r\n </ng-container>\r\n </button>\r\n <ng-container *ngIf=\"menuItem.showChildren && menuItem.expanded && labelsVisible\">\r\n <menu-item-list class=\"child-list\" *ngIf=\"menuItem.children && menuItem.children.length\" [items]=\"menuItem.children\"\r\n [direction]=\"direction\" [labelsVisible]=\"labelsVisible\" [activeItem]=\"activeItem\">\r\n </menu-item-list>\r\n </ng-container>\r\n</ng-template>\r\n\r\n<ng-template #menuItemLink let-menuItem=\"menuItem\">\r\n <tld-menu-item-link [ngClass.lt-md]=\"'mob-menu-item'\" [menuItem]=\"menuItem\" [direction]=\"direction\" [labelsVisible]=\"labelsVisible\"\r\n [activeItem]=\"activeItem\" [showIcons]=\"showIcons\"></tld-menu-item-link>\r\n</ng-template>\r\n\r\n<ng-template #menuItemBtn let-menuItem=\"menuItem\">\r\n <lib-menu-item-btn *ngIf=\"labelsVisible\" [ngClass.lt-md]=\"'mob-menu-item'\" [menuItem]=\"menuItem\" [direction]=\"direction\"\r\n [activeItem]=\"activeItem\"></lib-menu-item-btn>\r\n</ng-template>\r\n\r\n<ng-template #itemGroupButton>\r\n <button \r\n class=\"menu-title-btn menu-action-button\"\r\n mat-button\r\n *ngIf=\"menuItemGroup && labelsVisible\"\r\n (click)=\"menuItemGroup?.itemGroupClick()\"\r\n >\r\n <mat-icon>{{ menuItemGroup.itemGroupIcon }}</mat-icon>\r\n <span class=\"btn-label\" *ngIf=\"titleKey\">\r\n {{ titleKey | translate }}\r\n </span>\r\n </button>\r\n\r\n <button \r\n mat-icon-button\r\n *ngIf=\"menuItemGroup && !labelsVisible && titleKey && menuItemGroup.itemGroupIcon\"\r\n (click)=\"menuItemGroup?.itemGroupClick()\"\r\n [matTooltip]=\"titleKey | translate\"\r\n matTooltipPosition=\"after\"\r\n >\r\n <mat-icon>{{ menuItemGroup.itemGroupIcon }}</mat-icon>\r\n </button>\r\n</ng-template>","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { CustomMenuItem } from '../../models/custom-menu-item.model';\r\nimport { MenuItemGroupBase } from '../../models/menu-item-group.model';\r\nimport { MenuLayoutDirection } from '../../models/menu-layout-direction.model';\r\n\r\n@Component({\r\n selector: 'menu-item-list',\r\n templateUrl: './menu-item-list.component.html',\r\n styleUrls: ['./menu-item-list.component.scss']\r\n})\r\nexport class MenuItemListComponent {\r\n @Input() direction: MenuLayoutDirection = MenuLayoutDirection.column;\r\n @Input() labelsVisible = true;\r\n @Input() activeItem!: CustomMenuItem | undefined;\r\n @Input() showIcons = true;\r\n\r\n @Input() items: CustomMenuItem[] = [];\r\n @Input() menuItemGroup!: MenuItemGroupBase;\r\n\r\n @Output() toggleExpand: EventEmitter<CustomMenuItem> = new EventEmitter<CustomMenuItem>();\r\n\r\n get titleKey() {\r\n return this.menuItemGroup?.title;\r\n }\r\n\r\n get showTitle() {\r\n return this.menuItemGroup?.showTitle;\r\n }\r\n\r\n get menuLayoutDirection(): string {\r\n return (this.direction === MenuLayoutDirection.column || !this.labelsVisible)\r\n ? 'start center' : 'start start';\r\n }\r\n\r\n get menuItemLayout(): string {\r\n return this.direction === MenuLayoutDirection.column ? 'column' : 'row';\r\n }\r\n\r\n toggleItemExpand(event: MouseEvent, menuItem: CustomMenuItem) {\r\n // so menu doesnt get closed.\r\n event.stopPropagation();\r\n\r\n if (this.labelsVisible || !menuItem.expanded) {\r\n menuItem.expanded = !menuItem.expanded;\r\n }\r\n\r\n this.toggleExpand.next(menuItem);\r\n }\r\n}\r\n","<ng-container *ngFor=\"let group of mergedGroups\">\r\n <menu-item-list *ngIf=\"group.items.length || group.showEmpty\" [activeItem]=\"activeItem\" [direction]=\"direction\"\r\n (toggleExpand)=\"elementExpanded($event)\" [labelsVisible]=\"isOpen\" [menuItemGroup]=\"group\"\r\n [items]=\"group.items\">\r\n </menu-item-list>\r\n <div class=\"divider\" *ngIf=\"group.bottomDivider && group.items.length\">\r\n <mat-divider></mat-divider>\r\n </div>\r\n</ng-container>","import { Component, EventEmitter, Inject, Input, OnInit, Optional, Output } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { MENU_SHARED_CONFIG } from '../../injection-tokens';\r\nimport { CustomMenuItem } from '../../models/custom-menu-item.model';\r\nimport { MenuLayoutDirection } from '../../models/menu-layout-direction.model';\r\nimport { MenuSharedConfig } from '../../models/menu-shared-config.model';\r\nimport { MenuItemsService } from '../../services/menu-items.service';\r\nimport { ActiveMenuItems } from '../../models';\r\nimport { ResolutionHelper } from '@tilde-nlp/ngx-common';\r\n\r\n@Component({\r\n selector: 'menu-columns',\r\n templateUrl: './menu-columns.component.html',\r\n styleUrls: ['./menu-columns.component.scss']\r\n})\r\nexport class MenuColumnsComponent implements OnInit {\r\n\r\n @Input() direction: MenuLayoutDirection = MenuLayoutDirection.column;\r\n @Input() isOpen = true;\r\n @Output() toggleCollapseEvent = new EventEmitter();\r\n\r\n private _active!: ActiveMenuItems;\r\n get active() { return this._active; }\r\n @Input() set active(value: ActiveMenuItems) {\r\n if (this.toggleOnMobileSelect()) {\r\n this.toggleCollapseEvent.emit();\r\n }\r\n\r\n this._active = value;\r\n\r\n if (!value) {\r\n this.activeItem = undefined;\r\n return;\r\n }\r\n\r\n this.elementExpanded(this.active?.root)\r\n }\r\n\r\n activeItem?: CustomMenuItem;\r\n get mergedGroups() { return this.menuItemsService.mergedGroups; }\r\n\r\n constructor(\r\n protected readonly router: Router,\r\n @Optional() @Inject(MENU_SHARED_CONFIG) protected readonly menuSharedConfig: MenuSharedConfig,\r\n private readonly menuItemsService: MenuItemsService) {\r\n }\r\n\r\n ngOnInit(): void {\r\n this.activeItem = this.active.root;\r\n }\r\n\r\n elementExpanded(element?: CustomMenuItem) {\r\n if (!this.active || !element) {\r\n this.activeItem = undefined;\r\n return;\r\n }\r\n\r\n // if menu is collapsed and chilren are expandable, we should open menu\r\n if (element.showChildren && !this.isOpen) {\r\n this.toggleCollapseEvent.emit();\r\n }\r\n\r\n if (element.showChildren && element.expanded && element === this.active.root) {\r\n this.activeItem = this.active.child;\r\n }\r\n else {\r\n this.activeItem = this.active.root;\r\n }\r\n }\r\n\r\n private toggleOnMobileSelect(): boolean {\r\n return this.isOpen && ResolutionHelper.isMobileRes() && (this.active && Object.values(this.active)?.length > 0);\r\n }\r\n}\r\n","<div fxHide.gt-xs>\r\n <div [fxHide]=\"!collapsed\" class=\"mobile-header\">\r\n <a [libPlausibleEvent]=\"LOGOCLICK_PLAUSIBLE_EVENT\" fxFlex=\"3.125em\" [href]=\"baseUrl\" [class.no-click]=\"menuSettings?.disableLogoNavigation\"\r\n [attr.aria-label]=\"'MENU.ARIA_LABELS.LOGO' | translate\" (click)=\"logoClick($event)\" fxLayoutAlign=\"start center\"\r\n >\r\n <img height=\"40\" width=\"40\" class=\"menu-logo\" [src]=\"menuLogoImage\" alt=\"logo\" />\r\n <span class=\"menu-product-name\">\r\n {{ productName }}\r\n </span>\r\n </a>\r\n\r\n <button\r\n mat-icon-button\r\n class=\"toggler\"\r\n [attr.aria-label]=\"'ARIA_LABELS.MENU_TOGGLER' | translate\"\r\n [libPlausibleEvent]=\"collapsed ? EXPAND_PLAUSIBLE_EVENT : COLLAPSE_PLAUSIBLE_EVENT\"\r\n (click)=\"toggleCollapse()\"\r\n >\r\n <mat-icon>menu</mat-icon>\r\n </button>\r\n </div>\r\n</div>\r\n\r\n<div [ngClass.lt-sm]=\"'mobile'\" class=\"menu-container\" [style.width]=\"sideNavWidth\" fxLayout=\"column\" [class.collapsed]=\"collapsed\">\r\n <div class=\"content\" fxLayout=\"column\" fxFlexFill>\r\n <div class=\"menu-container-header\" fxLayout=\"row\" [fxLayoutAlign]=\"collapsed ? 'center center' : 'space-between center'\">\r\n <a *ngIf=\"!collapsed\" [libPlausibleEvent]=\"LOGOCLICK_PLAUSIBLE_EVENT\" fxFlex=\"3.125em\" [class.no-click]=\"menuSettings?.disableLogoNavigation\" [href]=\"baseUrl\"\r\n [attr.aria-label]=\"'MENU.ARIA_LABELS.LOGO' | translate\" (click)=\"logoClick($event)\" fxLayoutAlign=\"start center\"\r\n >\r\n <img height=\"40\" width=\"40\" class=\"menu-logo\" [src]=\"menuLogoImage\" alt=\"logo\" />\r\n <span class=\"menu-product-name\">\r\n {{ productName }}\r\n </span>\r\n </a>\r\n\r\n <button\r\n mat-icon-button\r\n class=\"toggler\"\r\n [attr.aria-label]=\"'ARIA_LABELS.MENU_TOGGLER' | translate\"\r\n [libPlausibleEvent]=\"collapsed ? EXPAND_PLAUSIBLE_EVENT : COLLAPSE_PLAUSIBLE_EVENT\"\r\n [matTooltip]=\"(collapsed ? 'MENU.EXPAND' : 'MENU.COLLAPSE') | translate\"\r\n (click)=\"toggleCollapse()\"\r\n >\r\n <mat-icon fxHide.gt-xs>close</mat-icon>\r\n <mat-icon fxHide.lt-sm>{{ collapsed ? 'keyboard_double_arrow_right' : 'keyboard_double_arrow_left' }}</mat-icon>\r\n </button>\r\n </div>\r\n\r\n <div class=\"menu-wrapper\" fxLayout=\"column\">\r\n <menu-columns (toggleCollapseEvent)=\"toggleCollapse()\" [direction]=\"direction\" role=\"navigation\" [isOpen]=\"!collapsed\"\r\n [active]=\"active\"></menu-columns>\r\n </div>\r\n <div fxFlex fxLayout=\"column\">\r\n <ng-content></ng-content>\r\n </div>\r\n <div class=\"profile\">\r\n <button #state=\"matMenuTrigger\" [matMenuTriggerFor]=\"menu\" class=\"profile-wrapper\">\r\n <div class=\"profile-icon\">\r\n @if (userInitials) {\r\n {{userInitials}}\r\n } @else {\r\n <mat-icon>person</mat-icon>\r\n }\r\n </div>\r\n\r\n <ng-container *ngIf=\"!collapsed\">\r\n <span class=\"profile-name\">\r\n {{ username ?? 'MENU.ANONYMOUS' | translate }}\r\n </span>\r\n\r\n <mat-icon *ngIf=\"state.menuOpen; else iconDown\" class=\"profile-arrow spin\">{{\"keyboard_arrow_down\"}}</mat-icon>\r\n\r\n <ng-template #iconDown>\r\n <mat-icon class=\"profile-arrow spin\">{{\"keyboard_arrow_up\" }}</mat-icon>\r\n </ng-template>\r\n </ng-container>\r\n </button>\r\n\r\n <mat-menu #menu=\"matMenu\" class=\"profile-menu\">\r\n @for (item of menuSettings.userOptions; track item.label) {\r\n @if (item.link) {\r\n @if (item.link.isExternal) {\r\n <a class=\"mat-mdc-menu-item\" [href]=\"item.link.href\" target=\"_blank\" (click)=\"linkCallback(item.link)\">\r\n <ng-container\r\n *ngTemplateOutlet=\"profileMenuItem; context: { icon: item.icon, label: item.label }\">\r\n </ng-container>\r\n </a>\r\n } @else {\r\n <a class=\"mat-mdc-menu-item\" [routerLink]=\"item.link.href\" (click)=\"linkCallback(item.link)\">\r\n <ng-container\r\n *ngTemplateOutlet=\"profileMenuItem; context: { icon: item.icon, label: item.label }\">\r\n </ng-container>\r\n </a>\r\n }\r\n } @else {\r\n <button\r\n mat-menu-item\r\n class=\"profile-option\"\r\n (click)=\"item.button?.callback()\"\r\n >\r\n <ng-container\r\n *ngTemplateOutlet=\"profileMenuItem; context: { icon: item.icon, label: item.label }\">\r\n </ng-container>\r\n </button>\r\n }\r\n }\r\n </mat-menu>\r\n </div>\r\n\r\n <ng-template #profileMenuItem let-icon=\"icon\" let-label=\"label\">\r\n @if (icon) {\r\n @if (!icon?.isCustom) {\r\n <span class=\"material-icons profile-option-icon\" [class.material-icons-outlined]=\"icon?.isOutlined\">\r\n {{icon?.name}}\r\n </span>\r\n } @else {\r\n <mat-icon class=\"profile-option-icon\" [svgIcon]=\"icon?.name\"></mat-icon>\r\n }\r\n }\r\n {{ label | translate }}\r\n </ng-template>\r\n</div>\r\n","import { Component, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport { DOMService, PlausibleEvent, ResolutionHelper } from '@tilde-nlp/ngx-common';\r\nimport { StrapiLinkService } from '@tilde-nlp/ngx-strapi';\r\nimport { NavBaseComponent } from '../nav-base/nav-base.component';\r\nimport { SideNavSettings } from './models/side-nav-settings.model';\r\nimport { MenuItemsService } from '../../services/menu-items.service';\r\nimport { UserMenuOptionLink } from './models/user-menu-option-link.model';\r\n\r\n\r\n@Component({\r\n selector: 'lib-side-nav-menu',\r\n templateUrl: './side-nav-menu.component.html',\r\n styleUrls: ['./side-nav-menu.component.scss']\r\n})\r\nexport class SideNavMenuComponent extends NavBaseComponent implements OnInit, OnDestroy {\r\n #username!: string;\r\n get username() { return this.#username; }\r\n @Input() set username(value) {\r\n // if username is passed whith whitespace in begginining, it breaks UI, so trim it for safety.\r\n this.#username = value?.trim();\r\n this.setUserInitials();\r\n }\r\n\r\n @Input() menuSettings: SideNavSettings = {\r\n expandedWidth: '241px',\r\n collapsedWidth: '56px',\r\n menuLogo: '',\r\n menuLogoCollapsed: '',\r\n disableStrapi: false,\r\n disableLogoNavigation: false\r\n }\r\n\r\n @Input() productName!: string;\r\n\r\n userInitials!: string;\r\n collapsed = false;\r\n\r\n readonly COLLAPSED_LOCAL_STORAGE_KEY = \"TLD_MENU_SIDE_NAV_COLLAPSED\";\r\n\r\n //#region Plausible event variables for collapse button\r\n private readonly COLLAPSE_PLAUSIBLE_EVENT_ID = \"collapseMenu\";\r\n private readonly COLLAPSE_PLAUSIBLE_ACTION_KEY = \"action\";\r\n private readonly LOGOCLICK_PLAUSIBLE_ACTION_ID = \"tilde_logo_click\"\r\n\r\n readonly LOGOCLICK_PLAUSIBLE_EVENT: PlausibleEvent = {\r\n eventId: this.LOGOCLICK_PLAUSIBLE_ACTION_ID,\r\n properties: []\r\n }\r\n\r\n readonly EXPAND_PLAUSIBLE_EVENT: PlausibleEvent = {\r\n eventId: this.COLLAPSE_PLAUSIBLE_EVENT_ID,\r\n properties: [{ key: this.COLLAPSE_PLAUSIBLE_ACTION_KEY, value: \"expand\" }]\r\n }\r\n\r\n readonly COLLAPSE_PLAUSIBLE_EVENT: PlausibleEvent = {\r\n eventId: this.COLLAPSE_PLAUSIBLE_EVENT_ID,\r\n properties: [{ key: this.COLLAPSE_PLAUSIBLE_ACTION_KEY, value: \"collapse\" }]\r\n }\r\n //#endregion\r\n\r\n readonly baseUrl: string | undefined;\r\n\r\n get menuLogoImage(): string {\r\n return this.collapsed\r\n ? this.menuSettings.menuLogoCollapsed ?? this.menuSettings.menuLogo\r\n : this.menuSettings.menuLogo;\r\n }\r\n\r\n get sideNavWidth(): string | undefined {\r\n return this.collapsed ? this.menuSettings.collapsedWidth : this.menuSettings.expandedWidth;\r\n }\r\n\r\n constructor(\r\n public strapiLinkService: StrapiLinkService,\r\n readonly domService: DOMService,\r\n readonly menuItems: MenuItemsService,\r\n ) {\r\n super(menuItems);\r\n this.baseUrl = menuItems.menuSharedConfig.baseUrl || '';\r\n }\r\n\r\n override ngOnInit(): void {\r\n super.ngOnInit();\r\n this.getColapsedFromLocalStorage();\r\n this.setUserInitials();\r\n }\r\n\r\n logoClick(event: MouseEvent): void {\r\n this.strapiLinkService.strapiLinkClick(event);\r\n }\r\n\r\n toggleCollapse() {\r\n this.collapsed = !this.collapsed;\r\n this.setColapsedFromLocalStorage();\r\n }\r\n\r\n linkCallback(link: UserMenuOptionLink) {\r\n if (link.callback) {\r\n link.callback();\r\n }\r\n }\r\n\r\n private getColapsedFromLocalStorage() {\r\n if (!this.domService.localStorage) {\r\n return;\r\n }\r\n\r\n this.collapsed = (this.domService.localStorage.getItem(this.COLLAPSED_LOCAL_STORAGE_KEY) == 'true' || ResolutionHelper.isMobileRes()) ? true : false;\r\n }\r\n\r\n private setColapsedFromLocalStorage() {\r\n if (!this.domService.localStorage) {\r\n return;\r\n }\r\n this.domService.localStorage.setItem(this.COLLAPSED_LOCAL_STORAGE_KEY, this.collapsed.toString());\r\n }\r\n\r\n private setUserInitials(): void {\r\n if (!this.username) {\r\n return;\r\n }\r\n\r\n // displaying first letters of name and surname\r\n const splittedUsername = this.username.split(' ');\r\n if (splittedUsername.length === 1) {\r\n // If there's only one word, use the first letter\r\n this.userInitials = splittedUsername[0][0];\r\n return;\r\n }\r\n // If there are more than one word, use the first letter of the first two names\r\n this.userInitials = splittedUsername[0][0] + splittedUsername[1][0];\r\n }\r\n}\r\n","import { ModuleWithProviders, NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { SideNavMenuComponent } from './components/side-nav-menu/side-nav-menu.component';\r\nimport { FlexLayoutModule } from '@ngbracket/ngx-layout';\r\nimport { RouterModule } from '@angular/router';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { MatDialogModule } from '@angular/material/dialog';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatListModule } from '@angular/material/list';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { StarpiMenuService } from './services/strapi.service';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport {\r\n provideHttpClient,\r\n withInterceptorsFromDi,\r\n} from '@angular/common/http';\r\nimport { MenuSharedConfig } from './models/menu-shared-config.model';\r\nimport { MENU_SHARED_CONFIG } from './injection-tokens/menu-shared-config.token';\r\nimport { NavBaseComponent } from './components/nav-base/nav-base.component';\r\nimport { MenuItemListComponent } from './components/menu-item-list/menu-item-list.component';\r\nimport { PlausibleModule } from '@tilde-nlp/ngx-common';\r\nimport { MenuColumnsComponent } from './components/menu-columns/menu-columns.component';\r\nimport { MenuIconComponent } from './components/menu-icon/menu-icon.component';\r\nimport { MenuItemLinkComponent } from './components/menu-item-link/menu-item-link.component';\r\nimport { MenuItemBtnComponent } from './components/menu-item-btn/menu-item-btn.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n SideNavMenuComponent,\r\n NavBaseComponent,\r\n MenuItemListComponent,\r\n MenuColumnsComponent,\r\n MenuIconComponent,\r\n MenuItemLinkComponent,\r\n MenuItemBtnComponent\r\n ],\r\n exports: [\r\n SideNavMenuComponent,\r\n MenuColumnsComponent,\r\n ],\r\n imports: [\r\n FlexLayoutModule,\r\n RouterModule,\r\n CommonModule,\r\n MatTooltipModule,\r\n MatDialogModule,\r\n MatIconModule,\r\n MatButtonModule,\r\n MatListModule,\r\n MatMenuModule,\r\n MatIconModule,\r\n TranslateModule,\r\n PlausibleModule\r\n ],\r\n providers: [StarpiMenuService, provideHttpClient(withInterceptorsFromDi())],\r\n})\r\nexport class MenuModule {\r\n static forRoot(config: MenuSharedConfig): ModuleWithProviders<MenuModule> {\r\n return {\r\n ngModule: MenuModule,\r\n providers: [{ provide: MENU_SHARED_CONFIG, useValue: config }],\r\n };\r\n }\r\n}\r\n","import { UserMenuOption } from '../components/side-nav-menu/models/user-menu-option.model';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { SelectLanguageDialogComponent } from '@tilde-nlp/ngx-common';\r\n\r\n/**\r\n * Prefefined user menu options, so that same style of items are used across all products. Use this by passing necessary configuration.\r\n */\r\nexport const USER_MENU_OPTIONS = {\r\n subscription: (href: string, callback?: () => void): UserMenuOption => ({\r\n icon: { name: 'credit_card' },\r\n label: 'MENU.SUBSCRIPTION',\r\n link: { href: href, callback },\r\n }),\r\n termsOfUse: (href: string, callback?: () => void): UserMenuOption => ({\r\n icon: { name: 'text_snippet' },\r\n label: 'MENU.TERMS_OF_USE',\r\n link: { href, isExternal: true, callback },\r\n }),\r\n privacy: (href: string, callback?: () => void): UserMenuOption => ({\r\n icon: { name: 'gpp_maybe' },\r\n label: 'MENU.PRIVACY',\r\n link: { href, isExternal: true, callback },\r\n }),\r\n help: (href: string, icon?: { name: string, isCustom: boolean }, callback?: () => void): UserMenuOption => ({\r\n label: 'MENU.HELP_CENTER',\r\n icon: { name: icon ? icon.name : `help`, isCustom: icon ? icon.isCustom : false },\r\n link: { href, isExternal: true, callback },\r\n }),\r\n contactUs: (href: string, callback?: () => void): UserMenuOption => ({\r\n label: 'MENU.CONTACT_US',\r\n icon: { name: `mail` },\r\n link: { href, isExternal: true, callback },\r\n }),\r\n /** use language update callback to save in localstorage */\r\n changeLanguage: (\r\n dialog: MatDialog,\r\n languages: string[],\r\n languageChangeCallback?: (language: string) => void\r\n ): UserMenuOption => ({\r\n label: 'MENU.CHANGE_LANGUAGE',\r\n icon: { name: 'language' },\r\n button: {\r\n callback: () => {\r\n dialog\r\n .open(SelectLanguageDialogComponent, {\r\n data: { languages: languages },\r\n })\r\n .afterClosed()\r\n .subscribe((language: string) => {\r\n if (language && languageChangeCallback) {\r\n languageChangeCallback(language);\r\n }\r\n });\r\n },\r\n },\r\n }),\r\n logout: (callback: () => void): UserMenuOption => ({\r\n icon: { name: 'logout' },\r\n label: 'MENU.LOG_OUT',\r\n button: { callback: () => callback() },\r\n }),\r\n};\r\n","/*\r\n * Public API Surface of ngx-menu\r\n */\r\n\r\n\r\nexport * from './lib/components/side-nav-menu';\r\nexport * from './lib/injection-tokens';\r\nexport * from './lib/models';\r\nexport * from './lib/menu.module';\r\nexport * from './lib/components/side-nav-menu/side-nav-menu.component';\r\nexport * from './lib/components/menu-columns/menu-columns.component';\r\nexport * from './lib/components/nav-base/nav-base.component';\r\nexport * from './lib/components/nav-base/models';\r\nexport * from \"./lib/services\";\r\nexport * from \"./lib/constants\";\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2.StarpiMenuService","i1.MenuItemsService","_c0","i8.MenuIconComponent","i9.MenuItemLinkComponent","i10.MenuItemBtnComponent","i11","i2.MenuItemsService","i3.MenuItemsService"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tilde-nlp/ngx-menu",
3
- "version": "6.1.40",
3
+ "version": "6.1.42",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^18.0.0",
6
6
  "@angular/core": "^18.0.0",