@thetradeengineorg1/snova-shell-module 1.0.5 → 1.0.7

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.
Files changed (60) hide show
  1. package/bundles/thetradeengineorg1-snova-shell-module.umd.js +508 -4030
  2. package/bundles/thetradeengineorg1-snova-shell-module.umd.js.map +1 -1
  3. package/esm2015/lib/globaldependencies/components/componentbase.js +9 -9
  4. package/esm2015/lib/globaldependencies/helpers/moment-utc-date-adapter.js +11 -11
  5. package/esm2015/lib/globaldependencies/intercepter/jwt.interceptor.js +6 -6
  6. package/esm2015/lib/globaldependencies/pipes/fetchSizedAndCachedImage.pipe.js +11 -11
  7. package/esm2015/lib/globaldependencies/pipes/highLightText.pipe.js +13 -13
  8. package/esm2015/lib/globaldependencies/pipes/orderby-pipe.js +11 -11
  9. package/esm2015/lib/globaldependencies/pipes/removeSpecialCharacters.pipe.js +11 -11
  10. package/esm2015/lib/globaldependencies/pipes/sanitize.pipe.js +13 -13
  11. package/esm2015/lib/globaldependencies/pipes/softlabels.pipes.js +13 -13
  12. package/esm2015/lib/globaldependencies/pipes/utctolocaltime.pipe.js +11 -11
  13. package/esm2015/lib/globaldependencies/pipes/utctolocaltimewithdate.pipe.js +11 -11
  14. package/esm2015/lib/globaldependencies/pipes/workflowstatus.pipes.js +11 -11
  15. package/esm2015/lib/shell-components/components/Payments/account.component.js +20 -91
  16. package/esm2015/lib/shell-components/components/Payments/company-information.js +26 -322
  17. package/esm2015/lib/shell-components/components/Payments/company-plans.component.js +11 -509
  18. package/esm2015/lib/shell-components/components/Payments/document.component.js +18 -90
  19. package/esm2015/lib/shell-components/components/Payments/payment-method.component.js +18 -76
  20. package/esm2015/lib/shell-components/components/Payments/product-service.component.js +22 -317
  21. package/esm2015/lib/shell-components/components/Payments/purchase-more-licenses.js +22 -119
  22. package/esm2015/lib/shell-components/components/Payments/transactions.component.js +20 -132
  23. package/esm2015/lib/shell-components/components/admin-layout/admin-layout.component.js +18 -86
  24. package/esm2015/lib/shell-components/components/all-work-items-dialog/all-work-items-dialog.component.js +16 -29
  25. package/esm2015/lib/shell-components/components/confirmation-dialog/confirmation-dialog.component.js +19 -55
  26. package/esm2015/lib/shell-components/components/export-import-configuration/export-configuration.component.js +29 -174
  27. package/esm2015/lib/shell-components/components/feed-time/feed-time-dialog.component.js +16 -29
  28. package/esm2015/lib/shell-components/components/feed-time/feed-time.component.js +16 -20
  29. package/esm2015/lib/shell-components/components/header-side/header-side.component.js +64 -387
  30. package/esm2015/lib/shell-components/components/header-top/header-top.component.js +19 -142
  31. package/esm2015/lib/shell-components/components/lives/lives-welcome-page.js +10 -39
  32. package/esm2015/lib/shell-components/components/menu/menu.component.js +64 -176
  33. package/esm2015/lib/shell-components/components/notifications/announcement-dialog.component.js +20 -57
  34. package/esm2015/lib/shell-components/components/notifications/notifications.component.js +14 -99
  35. package/esm2015/lib/shell-components/components/sidebar-top/sidebar-top.component.js +13 -19
  36. package/esm2015/lib/shell-components/components/sidenav/side-bar.component.js +67 -159
  37. package/esm2015/lib/shell-components/components/sidenav/sidenav.component.js +23 -419
  38. package/esm2015/lib/shell-components/components/submit-feedback/submit-feedback.component.js +13 -17
  39. package/esm2015/lib/shell-components/services/authentication.service.js +7 -7
  40. package/esm2015/lib/shell-components/services/chat.service.js +9 -9
  41. package/esm2015/lib/shell-components/services/common-used.service.js +7 -7
  42. package/esm2015/lib/shell-components/services/feature.service.js +7 -7
  43. package/esm2015/lib/shell-components/services/google-analytics.service.js +6 -6
  44. package/esm2015/lib/shell-components/services/layout.service.js +6 -6
  45. package/esm2015/lib/shell-components/services/payment.service.js +7 -7
  46. package/esm2015/lib/shell-components/services/recentSearch.service.js +9 -9
  47. package/esm2015/lib/shell-components/services/shell.modules.service.js +11 -11
  48. package/esm2015/lib/shell-components/services/signalr.service.js +9 -9
  49. package/esm2015/lib/shell-components/services/theme.service.js +6 -6
  50. package/esm2015/lib/shell-components/shell.module.js +175 -176
  51. package/esm2015/lib/shell-components/shell.routing.js +3 -3
  52. package/esm2015/lib/shell-components/store/effects/authentication.effects.js +9 -9
  53. package/esm2015/lib/shell-components/store/effects/chat.effects.js +6 -6
  54. package/esm2015/lib/shell-components/store/effects/menuitems.effects.js +6 -6
  55. package/esm2015/lib/shell-components/store/effects/notification-validator.effects.js +6 -6
  56. package/esm2015/lib/shell-components/store/effects/notifications.effects.js +6 -6
  57. package/fesm2015/thetradeengineorg1-snova-shell-module.js +869 -3856
  58. package/fesm2015/thetradeengineorg1-snova-shell-module.js.map +1 -1
  59. package/lib/shell-components/components/sidenav/side-bar.component.d.ts +17 -6
  60. package/package.json +2 -5
@@ -1,8 +1,8 @@
1
1
  import { Component } from "@angular/core";
2
2
  import * as i0 from "@angular/core";
3
- import * as i1 from "@angular/flex-layout/flex";
4
- import * as i2 from "ngx-perfect-scrollbar";
5
- import * as i3 from "../sidenav/sidenav.component";
3
+ import * as i1 from "../sidenav/sidenav.component";
4
+ import * as i2 from "@angular/flex-layout/flex";
5
+ import * as i3 from "ngx-perfect-scrollbar";
6
6
  // import PerfectScrollbar from 'perfect-scrollbar';
7
7
  export class SidebarTopComponent {
8
8
  // private sidebarPS: PerfectScrollbar;
@@ -21,19 +21,13 @@ export class SidebarTopComponent {
21
21
  // }
22
22
  }
23
23
  }
24
- SidebarTopComponent.ɵfac = function SidebarTopComponent_Factory(t) { return new (t || SidebarTopComponent)(); };
25
- SidebarTopComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SidebarTopComponent, selectors: [["app-sidebar-top"]], decls: 3, vars: 0, consts: [[1, "sidebar-panel"], ["id", "sidebar-top-scroll-area", "fxLayout", "column", 1, "navigation-hold", 3, "perfectScrollbar"]], template: function SidebarTopComponent_Template(rf, ctx) { if (rf & 1) {
26
- i0.ɵɵelementStart(0, "div", 0);
27
- i0.ɵɵelementStart(1, "div", 1);
28
- i0.ɵɵelement(2, "app-sidenav");
29
- i0.ɵɵelementEnd();
30
- i0.ɵɵelementEnd();
31
- } }, directives: [i1.DefaultLayoutDirective, i2.PerfectScrollbarDirective, i3.SidenavComponent], encapsulation: 2 });
32
- (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SidebarTopComponent, [{
33
- type: Component,
34
- args: [{
35
- selector: "app-sidebar-top",
36
- templateUrl: "./sidebar-top.component.html"
37
- }]
38
- }], function () { return []; }, null); })();
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZWJhci10b3AuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc2hlbGwtbW9kdWxlLWNvbXBvbmVudHMvc2hlbGwtY29tcG9uZW50cy9zcmMvbGliL3NoZWxsLWNvbXBvbmVudHMvY29tcG9uZW50cy9zaWRlYmFyLXRvcC9zaWRlYmFyLXRvcC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zaGVsbC1tb2R1bGUtY29tcG9uZW50cy9zaGVsbC1jb21wb25lbnRzL3NyYy9saWIvc2hlbGwtY29tcG9uZW50cy9jb21wb25lbnRzL3NpZGViYXItdG9wL3NpZGViYXItdG9wLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQW9DLE1BQU0sZUFBZSxDQUFDOzs7OztBQUM1RSxvREFBb0Q7QUFPcEQsTUFBTSxPQUFPLG1CQUFtQjtJQUM5Qix1Q0FBdUM7SUFDdkMsZ0JBQWUsQ0FBQztJQUVoQixRQUFRLEtBQUksQ0FBQztJQUViLGVBQWU7UUFDYixxQkFBcUI7UUFDckIsd0VBQXdFO1FBQ3hFLDRCQUE0QjtRQUM1QixPQUFPO1FBQ1AsS0FBSztJQUNQLENBQUM7SUFFRCxXQUFXO1FBQ1QsdUJBQXVCO1FBQ3ZCLDhCQUE4QjtRQUM5QixJQUFJO0lBQ04sQ0FBQzs7c0ZBbEJVLG1CQUFtQjtzRUFBbkIsbUJBQW1CO1FDUmhDLDhCQUEyQjtRQUN6Qiw4QkFBK0Y7UUFDN0YsOEJBQTJCO1FBQzdCLGlCQUFNO1FBQ1IsaUJBQU07O3VGRElPLG1CQUFtQjtjQUwvQixTQUFTO2VBQUM7Z0JBQ1QsUUFBUSxFQUFFLGlCQUFpQjtnQkFDM0IsV0FBVyxFQUFFLDhCQUE4QjthQUM1QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG4vLyBpbXBvcnQgUGVyZmVjdFNjcm9sbGJhciBmcm9tICdwZXJmZWN0LXNjcm9sbGJhcic7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJhcHAtc2lkZWJhci10b3BcIixcclxuICB0ZW1wbGF0ZVVybDogXCIuL3NpZGViYXItdG9wLmNvbXBvbmVudC5odG1sXCJcclxufSlcclxuXHJcbmV4cG9ydCBjbGFzcyBTaWRlYmFyVG9wQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXQge1xyXG4gIC8vIHByaXZhdGUgc2lkZWJhclBTOiBQZXJmZWN0U2Nyb2xsYmFyO1xyXG4gIGNvbnN0cnVjdG9yKCkge31cclxuXHJcbiAgbmdPbkluaXQoKSB7fVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICAvLyBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgIC8vICAgdGhpcy5zaWRlYmFyUFMgPSBuZXcgUGVyZmVjdFNjcm9sbGJhcignI3NpZGViYXItdG9wLXNjcm9sbC1hcmVhJywge1xyXG4gICAgLy8gICAgIHN1cHByZXNzU2Nyb2xsWDogdHJ1ZVxyXG4gICAgLy8gICB9KVxyXG4gICAgLy8gfSlcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgLy8gaWYodGhpcy5zaWRlYmFyUFMpIHtcclxuICAgIC8vICAgdGhpcy5zaWRlYmFyUFMuZGVzdHJveSgpO1xyXG4gICAgLy8gfVxyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwic2lkZWJhci1wYW5lbFwiPlxyXG4gIDxkaXYgaWQ9XCJzaWRlYmFyLXRvcC1zY3JvbGwtYXJlYVwiIFtwZXJmZWN0U2Nyb2xsYmFyXSBjbGFzcz1cIm5hdmlnYXRpb24taG9sZFwiIGZ4TGF5b3V0PVwiY29sdW1uXCI+XHJcbiAgICA8YXBwLXNpZGVuYXY+PC9hcHAtc2lkZW5hdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+Il19
24
+ SidebarTopComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.1.1", ngImport: i0, type: SidebarTopComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
25
+ SidebarTopComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.1.1", type: SidebarTopComponent, selector: "app-sidebar-top", ngImport: i0, template: "<div class=\"sidebar-panel\">\r\n <div id=\"sidebar-top-scroll-area\" [perfectScrollbar] class=\"navigation-hold\" fxLayout=\"column\">\r\n <app-sidenav></app-sidenav>\r\n </div>\r\n</div>", components: [{ type: i1.SidenavComponent, selector: "app-sidenav", inputs: ["hasIconMenu", "iconMenuTitle"] }], directives: [{ type: i2.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i3.PerfectScrollbarDirective, selector: "[perfectScrollbar]", inputs: ["disabled", "perfectScrollbar"], outputs: ["psScrollY", "psScrollX", "psScrollUp", "psScrollDown", "psScrollLeft", "psScrollRight", "psYReachEnd", "psYReachStart", "psXReachEnd", "psXReachStart"], exportAs: ["ngxPerfectScrollbar"] }] });
26
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.1", ngImport: i0, type: SidebarTopComponent, decorators: [{
27
+ type: Component,
28
+ args: [{
29
+ selector: "app-sidebar-top",
30
+ templateUrl: "./sidebar-top.component.html"
31
+ }]
32
+ }], ctorParameters: function () { return []; } });
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZWJhci10b3AuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc2hlbGwtbW9kdWxlLWNvbXBvbmVudHMvc2hlbGwtY29tcG9uZW50cy9zcmMvbGliL3NoZWxsLWNvbXBvbmVudHMvY29tcG9uZW50cy9zaWRlYmFyLXRvcC9zaWRlYmFyLXRvcC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zaGVsbC1tb2R1bGUtY29tcG9uZW50cy9zaGVsbC1jb21wb25lbnRzL3NyYy9saWIvc2hlbGwtY29tcG9uZW50cy9jb21wb25lbnRzL3NpZGViYXItdG9wL3NpZGViYXItdG9wLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQW9DLE1BQU0sZUFBZSxDQUFDOzs7OztBQUM1RSxvREFBb0Q7QUFPcEQsTUFBTSxPQUFPLG1CQUFtQjtJQUM5Qix1Q0FBdUM7SUFDdkMsZ0JBQWUsQ0FBQztJQUVoQixRQUFRLEtBQUksQ0FBQztJQUViLGVBQWU7UUFDYixxQkFBcUI7UUFDckIsd0VBQXdFO1FBQ3hFLDRCQUE0QjtRQUM1QixPQUFPO1FBQ1AsS0FBSztJQUNQLENBQUM7SUFFRCxXQUFXO1FBQ1QsdUJBQXVCO1FBQ3ZCLDhCQUE4QjtRQUM5QixJQUFJO0lBQ04sQ0FBQzs7Z0hBbEJVLG1CQUFtQjtvR0FBbkIsbUJBQW1CLHVEQ1JoQyxtTUFJTTsyRkRJTyxtQkFBbUI7a0JBTC9CLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGlCQUFpQjtvQkFDM0IsV0FBVyxFQUFFLDhCQUE4QjtpQkFDNUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgT25EZXN0cm95LCBBZnRlclZpZXdJbml0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuLy8gaW1wb3J0IFBlcmZlY3RTY3JvbGxiYXIgZnJvbSAncGVyZmVjdC1zY3JvbGxiYXInO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwiYXBwLXNpZGViYXItdG9wXCIsXHJcbiAgdGVtcGxhdGVVcmw6IFwiLi9zaWRlYmFyLXRvcC5jb21wb25lbnQuaHRtbFwiXHJcbn0pXHJcblxyXG5leHBvcnQgY2xhc3MgU2lkZWJhclRvcENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBBZnRlclZpZXdJbml0IHtcclxuICAvLyBwcml2YXRlIHNpZGViYXJQUzogUGVyZmVjdFNjcm9sbGJhcjtcclxuICBjb25zdHJ1Y3RvcigpIHt9XHJcblxyXG4gIG5nT25Jbml0KCkge31cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgLy8gc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAvLyAgIHRoaXMuc2lkZWJhclBTID0gbmV3IFBlcmZlY3RTY3JvbGxiYXIoJyNzaWRlYmFyLXRvcC1zY3JvbGwtYXJlYScsIHtcclxuICAgIC8vICAgICBzdXBwcmVzc1Njcm9sbFg6IHRydWVcclxuICAgIC8vICAgfSlcclxuICAgIC8vIH0pXHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIC8vIGlmKHRoaXMuc2lkZWJhclBTKSB7XHJcbiAgICAvLyAgIHRoaXMuc2lkZWJhclBTLmRlc3Ryb3koKTtcclxuICAgIC8vIH1cclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cInNpZGViYXItcGFuZWxcIj5cclxuICA8ZGl2IGlkPVwic2lkZWJhci10b3Atc2Nyb2xsLWFyZWFcIiBbcGVyZmVjdFNjcm9sbGJhcl0gY2xhc3M9XCJuYXZpZ2F0aW9uLWhvbGRcIiBmeExheW91dD1cImNvbHVtblwiPlxyXG4gICAgPGFwcC1zaWRlbmF2PjwvYXBwLXNpZGVuYXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PiJdfQ==
@@ -1,200 +1,108 @@
1
1
  import { Component } from "@angular/core";
2
2
  import { NavigationEnd } from "@angular/router";
3
3
  import { select } from "@ngrx/store";
4
- import { tap, map } from "rxjs/operators";
5
- import * as sharedModuleReducers from "./../../store/reducers/index";
4
+ import { map, tap } from "rxjs/operators";
5
+ import * as sharedReducers from "../../store/reducers";
6
6
  import { GetAllMenuItemsTriggered } from "../../store/actions/menuitems.actions";
7
7
  import { MenuCategories } from "../../constants/menu-categories";
8
8
  import * as i0 from "@angular/core";
9
9
  import * as i1 from "@ngrx/store";
10
10
  import * as i2 from "@angular/router";
11
- import * as i3 from "@angular/common";
12
- import * as i4 from "@angular/flex-layout/extended";
13
- import * as i5 from "@angular/material/icon";
11
+ import * as i3 from "@angular/material/icon";
12
+ import * as i4 from "@angular/common";
13
+ import * as i5 from "@angular/flex-layout/extended";
14
14
  import * as i6 from "../../../globaldependencies/pipes/softlabels.pipes";
15
15
  import * as i7 from "@ngx-translate/core";
16
- function SideBarComponent_div_9_ng_container_3_Template(rf, ctx) { if (rf & 1) {
17
- i0.ɵɵelementContainerStart(0);
18
- i0.ɵɵelementStart(1, "mat-icon", 5);
19
- i0.ɵɵtext(2);
20
- i0.ɵɵelementEnd();
21
- i0.ɵɵelementStart(3, "h6", 6);
22
- i0.ɵɵtext(4);
23
- i0.ɵɵpipe(5, "softLabelsPipe");
24
- i0.ɵɵpipe(6, "translate");
25
- i0.ɵɵelementEnd();
26
- i0.ɵɵelementContainerEnd();
27
- } if (rf & 2) {
28
- const item_r1 = i0.ɵɵnextContext().$implicit;
29
- const ctx_r3 = i0.ɵɵnextContext();
30
- i0.ɵɵadvance(2);
31
- i0.ɵɵtextInterpolate1(" ", item_r1.icon, " ");
32
- i0.ɵɵadvance(2);
33
- i0.ɵɵtextInterpolate1(" ", item_r1.menu ? i0.ɵɵpipeBind2(5, 2, item_r1.menu, ctx_r3.softLabels) : i0.ɵɵpipeBind1(6, 5, item_r1.name), " ");
34
- } }
35
- function SideBarComponent_div_9_ng_container_4_Template(rf, ctx) { if (rf & 1) {
36
- i0.ɵɵelementContainerStart(0);
37
- i0.ɵɵelementStart(1, "a", 10);
38
- i0.ɵɵelementStart(2, "mat-icon", 5);
39
- i0.ɵɵtext(3);
40
- i0.ɵɵelementEnd();
41
- i0.ɵɵelementStart(4, "h6", 6);
42
- i0.ɵɵtext(5);
43
- i0.ɵɵpipe(6, "softLabelsPipe");
44
- i0.ɵɵpipe(7, "translate");
45
- i0.ɵɵelementEnd();
46
- i0.ɵɵelementEnd();
47
- i0.ɵɵelementContainerEnd();
48
- } if (rf & 2) {
49
- const item_r1 = i0.ɵɵnextContext().$implicit;
50
- const ctx_r4 = i0.ɵɵnextContext();
51
- i0.ɵɵadvance(1);
52
- i0.ɵɵproperty("href", item_r1.state, i0.ɵɵsanitizeUrl);
53
- i0.ɵɵadvance(2);
54
- i0.ɵɵtextInterpolate1(" ", item_r1.icon, " ");
55
- i0.ɵɵadvance(2);
56
- i0.ɵɵtextInterpolate1(" ", item_r1.menu ? i0.ɵɵpipeBind2(6, 3, item_r1.menu, ctx_r4.softLabels) : i0.ɵɵpipeBind1(7, 6, item_r1.name), " ");
57
- } }
58
- const _c0 = function (a0) { return { background: a0 }; };
59
- function SideBarComponent_div_9_div_5_span_1_Template(rf, ctx) { if (rf & 1) {
60
- i0.ɵɵelementStart(0, "span", 13);
61
- i0.ɵɵtext(1);
62
- i0.ɵɵelementEnd();
63
- } if (rf & 2) {
64
- const badge_r9 = ctx.$implicit;
65
- i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(2, _c0, badge_r9.color));
66
- i0.ɵɵadvance(1);
67
- i0.ɵɵtextInterpolate1(" ", badge_r9.value, " ");
68
- } }
69
- function SideBarComponent_div_9_div_5_Template(rf, ctx) { if (rf & 1) {
70
- i0.ɵɵelementStart(0, "div", 11);
71
- i0.ɵɵtemplate(1, SideBarComponent_div_9_div_5_span_1_Template, 2, 4, "span", 12);
72
- i0.ɵɵelementEnd();
73
- } if (rf & 2) {
74
- const item_r1 = i0.ɵɵnextContext().$implicit;
75
- i0.ɵɵadvance(1);
76
- i0.ɵɵproperty("ngForOf", item_r1.badges);
77
- } }
78
- const _c1 = function () { return { "background-color": "#DBEAFE", "border-image": "linear-gradient(135deg,#f79a6b,#f1580c) 1", "box-shadow": "0 4px 15px rgba(0,0,0,0.15)" }; };
79
- function SideBarComponent_div_9_Template(rf, ctx) { if (rf & 1) {
80
- const _r12 = i0.ɵɵgetCurrentView();
81
- i0.ɵɵelementStart(0, "div", 2);
82
- i0.ɵɵelementStart(1, "div", 3);
83
- i0.ɵɵlistener("mouseenter", function SideBarComponent_div_9_Template_div_mouseenter_1_listener() { const restoredCtx = i0.ɵɵrestoreView(_r12); const i_r2 = restoredCtx.index; const ctx_r11 = i0.ɵɵnextContext(); return ctx_r11.enter(i_r2); })("mouseleave", function SideBarComponent_div_9_Template_div_mouseleave_1_listener() { const restoredCtx = i0.ɵɵrestoreView(_r12); const i_r2 = restoredCtx.index; const ctx_r13 = i0.ɵɵnextContext(); return ctx_r13.leave(i_r2); })("click", function SideBarComponent_div_9_Template_div_click_1_listener() { const restoredCtx = i0.ɵɵrestoreView(_r12); const i_r2 = restoredCtx.index; const item_r1 = restoredCtx.$implicit; const ctx_r14 = i0.ɵɵnextContext(); return ctx_r14.selectMenu(i_r2, item_r1.state); });
84
- i0.ɵɵelementStart(2, "div", 4);
85
- i0.ɵɵtemplate(3, SideBarComponent_div_9_ng_container_3_Template, 7, 7, "ng-container", 8);
86
- i0.ɵɵtemplate(4, SideBarComponent_div_9_ng_container_4_Template, 8, 8, "ng-container", 8);
87
- i0.ɵɵtemplate(5, SideBarComponent_div_9_div_5_Template, 2, 1, "div", 9);
88
- i0.ɵɵelementEnd();
89
- i0.ɵɵelementEnd();
90
- i0.ɵɵelementEnd();
91
- } if (rf & 2) {
92
- const item_r1 = ctx.$implicit;
93
- const i_r2 = ctx.index;
94
- const ctx_r0 = i0.ɵɵnextContext();
95
- i0.ɵɵadvance(1);
96
- i0.ɵɵproperty("ngStyle", (ctx_r0.selectedRowIndex == i_r2 || ctx_r0.showBackGroundColor == i_r2) && i0.ɵɵpureFunction0(4, _c1));
97
- i0.ɵɵadvance(2);
98
- i0.ɵɵproperty("ngIf", item_r1.type === "link" || item_r1.type === "applicationlink");
99
- i0.ɵɵadvance(1);
100
- i0.ɵɵproperty("ngIf", item_r1.type === "extLink");
101
- i0.ɵɵadvance(1);
102
- i0.ɵɵproperty("ngIf", item_r1.badges == null ? null : item_r1.badges.length);
103
- } }
104
16
  export class SideBarComponent {
105
17
  constructor(store, router) {
106
18
  this.store = store;
107
19
  this.router = router;
20
+ /** index of selected card */
21
+ this.selectedRowIndex = null;
22
+ /** index of hovered card */
108
23
  this.showBackGroundColor = null;
24
+ /** soft labels for translations */
25
+ this.softLabels = [];
109
26
  }
110
27
  ngOnInit() {
111
- // load soft labels
112
- this.softLabels = JSON.parse(localStorage.getItem("SoftLabels"));
113
- // get menu items and filter out HR, HR management & Activity Tracker
114
- this.menuItems$ = this.store.pipe(select(sharedModuleReducers.getCurrentActiveMenuCategoryMenuItems), map(menuList => menuList.filter(item => {
28
+ // load soft label translations
29
+ const storedLabels = localStorage.getItem("SoftLabels");
30
+ this.softLabels = storedLabels ? JSON.parse(storedLabels) : [];
31
+ // select & filter sidebar menu items from store
32
+ this.menuItems$ = this.store.pipe(select(sharedReducers.getCurrentActiveMenuCategoryMenuItems), map((list) => list.filter((item) => {
115
33
  var _a, _b;
116
34
  const menuLabel = ((_a = item.menu) === null || _a === void 0 ? void 0 : _a.toLowerCase()) || "";
117
35
  const state = ((_b = item.state) === null || _b === void 0 ? void 0 : _b.toLowerCase()) || "";
118
- // remove HR (direct link)
119
- if (menuLabel === "hr" || state.startsWith("hrmanagment/employeelist")) {
36
+ // Exclude HR, tracker or unwanted items
37
+ if (menuLabel === "hr" || state.startsWith("hrmanagment/employeelist"))
120
38
  return false;
121
- }
122
- // ❌ remove HR management dropdown & submenus
123
- if (menuLabel.includes("hr managment") || menuLabel.includes("hr management")) {
39
+ if (menuLabel.includes("hr managment") || menuLabel.includes("hr management"))
124
40
  return false;
125
- }
126
- if (state.startsWith("hrmanagment") || state.startsWith("hrmdetails")) {
41
+ if (state.startsWith("hrmanagment") || state.startsWith("hrmdetails"))
127
42
  return false;
128
- }
129
- // ❌ remove Activity Tracker
130
- if (menuLabel.includes("activity tracker") || state.startsWith("activitytracker")) {
43
+ if (menuLabel.includes("activity tracker") || state.startsWith("activitytracker"))
131
44
  return false;
132
- }
133
45
  return true;
134
- })), tap(menuList => this.routerActive(menuList)));
135
- // trigger menu load
46
+ })), tap((menuList) => this.routerActive(menuList)));
47
+ // dispatch load event
136
48
  this.store.dispatch(new GetAllMenuItemsTriggered(MenuCategories.Main));
137
- // listen to route changes
138
- this.router.events.subscribe(event => {
49
+ // listen for route changes to update highlight
50
+ this.router.events.subscribe((event) => {
139
51
  if (event instanceof NavigationEnd) {
140
- this.menuItems$.subscribe(list => this.routerActive(list));
52
+ this.menuItems$.subscribe((list) => this.routerActive(list));
141
53
  }
142
54
  });
143
55
  }
56
+ /** highlights the active card according to current route */
144
57
  routerActive(menuList) {
145
- if (menuList && menuList.length > 0) {
146
- const index = menuList.findIndex(i => this.router.url == "/" + i.state);
147
- this.selectedRowIndex = index;
148
- if (this.router.url.includes("/dashboard-management")) {
149
- this.selectedRowIndex = 99;
150
- }
58
+ if (!(menuList === null || menuList === void 0 ? void 0 : menuList.length))
59
+ return;
60
+ const foundIndex = menuList.findIndex((i) => this.router.url === "/" + i.state);
61
+ this.selectedRowIndex = foundIndex >= 0 ? foundIndex : null;
62
+ // Highlight report card when inside any dashboard route
63
+ if (this.router.url.startsWith("/dashboard-management/dashboard")) {
64
+ this.selectedRowIndex = 99;
151
65
  }
152
66
  }
153
- enter(i) {
154
- this.showBackGroundColor = i;
67
+ /** hover enter */
68
+ enter(index) {
69
+ this.showBackGroundColor = index;
155
70
  }
156
- leave(i) {
157
- this.showBackGroundColor = null;
71
+ /** hover leave */
72
+ leave(index) {
73
+ if (this.showBackGroundColor === index) {
74
+ this.showBackGroundColor = null;
75
+ }
158
76
  }
77
+ /** when clicking on dynamic menu card */
159
78
  selectMenu(index, link) {
160
79
  this.selectedRowIndex = index;
161
80
  if (link) {
162
- this.router.navigate([link]);
81
+ // ensure forward slash
82
+ const path = link.startsWith("/") ? link : "/" + link;
83
+ this.router.navigate([path]);
84
+ }
85
+ }
86
+ /** open report dashboard-management/dashboard/:id or root */
87
+ goToReport() {
88
+ this.selectedRowIndex = 99;
89
+ const stored = localStorage.getItem("DefaultDashboard");
90
+ const defaultDashboardId = stored ? JSON.parse(stored) : null;
91
+ if (defaultDashboardId) {
92
+ this.router.navigate([`/dashboard-management/dashboard/${defaultDashboardId}`]);
93
+ }
94
+ else {
95
+ this.router.navigate(["/dashboard-management"]);
163
96
  }
164
97
  }
165
98
  }
166
- SideBarComponent.ɵfac = function SideBarComponent_Factory(t) { return new (t || SideBarComponent)(i0.ɵɵdirectiveInject(i1.Store), i0.ɵɵdirectiveInject(i2.Router)); };
167
- SideBarComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SideBarComponent, selectors: [["app-sidebar"]], decls: 11, vars: 5, consts: [[1, "d-flex", "flex-column", "justify-content-center", "align-items-center", 2, "width", "100vw", "height", "calc(100vh - 60px)", "padding", "30px", "overflow", "auto", "background", "linear-gradient(rgba(255,255,255,0.7), rgba(255,255,255,0.7))"], [1, "row", "justify-content-center", "align-items-center", 2, "height", "auto"], [1, "col-6", "col-md-3", "mb-4"], [1, "card", "cursor-pointer", 2, "height", "150px", "border-radius", "12px", "transition", "all 0.3s ease", "background", "#fff", "box-shadow", "0 2px 6px rgba(0,0,0,0.08)", "border", "2px solid transparent", 3, "ngStyle", "mouseenter", "mouseleave", "click"], [1, "card-body", "d-flex", "flex-column", "align-items-center", "justify-content-center"], [2, "font-size", "40px", "margin-bottom", "10px", "width", "48px", "height", "48px", "display", "flex", "align-items", "center", "justify-content", "center", "background", "linear-gradient(135deg,#f79a6b,#f1580c)", "-webkit-background-clip", "text", "-webkit-text-fill-color", "transparent", "background-clip", "text", "text-fill-color", "transparent"], [2, "font-size", "14px", "margin", "0", "color", "#111827", "text-align", "center"], ["class", "col-6 col-md-3 mb-4", 4, "ngFor", "ngForOf"], [4, "ngIf"], ["class", "mt-2", 4, "ngIf"], ["target", "_blank", 1, "w-100", "d-flex", "flex-column", "align-items-center", 3, "href"], [1, "mt-2"], ["class", "badge rounded-pill", 3, "ngStyle", 4, "ngFor", "ngForOf"], [1, "badge", "rounded-pill", 3, "ngStyle"]], template: function SideBarComponent_Template(rf, ctx) { if (rf & 1) {
168
- i0.ɵɵelementStart(0, "div", 0);
169
- i0.ɵɵelementStart(1, "div", 1);
170
- i0.ɵɵelementStart(2, "div", 2);
171
- i0.ɵɵelementStart(3, "div", 3);
172
- i0.ɵɵlistener("mouseenter", function SideBarComponent_Template_div_mouseenter_3_listener() { return ctx.enter(99); })("mouseleave", function SideBarComponent_Template_div_mouseleave_3_listener() { return ctx.leave(99); })("click", function SideBarComponent_Template_div_click_3_listener() { return ctx.selectMenu(99, "/dashboard-management"); });
173
- i0.ɵɵelementStart(4, "div", 4);
174
- i0.ɵɵelementStart(5, "mat-icon", 5);
175
- i0.ɵɵtext(6, " assessment ");
176
- i0.ɵɵelementEnd();
177
- i0.ɵɵelementStart(7, "h6", 6);
178
- i0.ɵɵtext(8, "Report");
179
- i0.ɵɵelementEnd();
180
- i0.ɵɵelementEnd();
181
- i0.ɵɵelementEnd();
182
- i0.ɵɵelementEnd();
183
- i0.ɵɵtemplate(9, SideBarComponent_div_9_Template, 6, 5, "div", 7);
184
- i0.ɵɵpipe(10, "async");
185
- i0.ɵɵelementEnd();
186
- i0.ɵɵelementEnd();
187
- } if (rf & 2) {
188
- i0.ɵɵadvance(3);
189
- i0.ɵɵproperty("ngStyle", (ctx.selectedRowIndex == 99 || ctx.showBackGroundColor == 99) && i0.ɵɵpureFunction0(4, _c1));
190
- i0.ɵɵadvance(6);
191
- i0.ɵɵproperty("ngForOf", i0.ɵɵpipeBind1(10, 2, ctx.menuItems$));
192
- } }, directives: [i3.NgStyle, i4.DefaultStyleDirective, i5.MatIcon, i3.NgForOf, i3.NgIf], pipes: [i3.AsyncPipe, i6.SoftLabelPipe, i7.TranslatePipe], encapsulation: 2 });
193
- (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SideBarComponent, [{
194
- type: Component,
195
- args: [{
196
- selector: "app-sidebar",
197
- templateUrl: "./side-bar.component.html"
198
- }]
199
- }], function () { return [{ type: i1.Store }, { type: i2.Router }]; }, null); })();
200
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZS1iYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc2hlbGwtbW9kdWxlLWNvbXBvbmVudHMvc2hlbGwtY29tcG9uZW50cy9zcmMvbGliL3NoZWxsLWNvbXBvbmVudHMvY29tcG9uZW50cy9zaWRlbmF2L3NpZGUtYmFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NoZWxsLW1vZHVsZS1jb21wb25lbnRzL3NoZWxsLWNvbXBvbmVudHMvc3JjL2xpYi9zaGVsbC1jb21wb25lbnRzL2NvbXBvbmVudHMvc2lkZW5hdi9zaWRlLWJhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFDLE9BQU8sRUFBVSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN4RCxPQUFPLEVBQVMsTUFBTSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRTVDLE9BQU8sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHMUMsT0FBTyxLQUFLLG9CQUFvQixNQUFNLDhCQUE4QixDQUFDO0FBQ3JFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBRWpGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7Ozs7Ozs7OztJQzhCN0MsNkJBQThFO0lBQzFFLG1DQUl5RDtJQUNyRCxZQUNKO0lBQUEsaUJBQVc7SUFDWCw2QkFBd0U7SUFDcEUsWUFDSjs7O0lBQUEsaUJBQUs7SUFDVCwwQkFBZTs7OztJQUxQLGVBQ0o7SUFESSw2Q0FDSjtJQUVJLGVBQ0o7SUFESSwwSUFDSjs7O0lBSUosNkJBQThDO0lBQzFDLDZCQUEyRjtJQUN2RixtQ0FJdUQ7SUFDbkQsWUFDSjtJQUFBLGlCQUFXO0lBQ1gsNkJBQXdFO0lBQ3BFLFlBQ0o7OztJ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RzVFLDhCQUFpQztRQUM3Qiw4QkFNRTtRQUwwRSxvR0FBYyxVQUFNLEVBQUUsQ0FBQyxJQUFDLHVGQUNsRixVQUFNLEVBQUUsQ0FBQyxJQUR5RSw2RUFDOUQsZUFBVyxFQUFFLEVBQUUsdUJBQXVCLENBQUMsSUFEdUI7UUFNaEcsOEJBQW9GO1FBQ2hGLG1DQUkyRDtRQUN2RCw0QkFDSjtRQUFBLGlCQUFXO1FBQ1gsNkJBQXdFO1FBQUEsc0JBQU07UUFBQSxpQkFBSztRQUN2RixpQkFBTTtRQUNWLGlCQUFNO1FBQ1YsaUJBQU07UUFHTixpRUFtRE07O1FBQ1YsaUJBQU07UUFDVixpQkFBTTs7UUF4RXFGLGVBSTlFO1FBSjhFLHFIQUk5RTtRQWU2QyxlQUF5QjtRQUF6QiwrREFBeUI7O3VGRFh0RSxnQkFBZ0I7Y0FKNUIsU0FBUztlQUFDO2dCQUNQLFFBQVEsRUFBRSxhQUFhO2dCQUN2QixXQUFXLEVBQUUsMkJBQTJCO2FBQzNDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgUm91dGVyLCBOYXZpZ2F0aW9uRW5kIH0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xyXG5pbXBvcnQgeyBTdG9yZSwgc2VsZWN0IH0gZnJvbSBcIkBuZ3J4L3N0b3JlXCI7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyB0YXAsIG1hcCB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xyXG5cclxuaW1wb3J0IHsgU3RhdGUgfSBmcm9tIFwiLi8uLi8uLi9zdG9yZS9yZWR1Y2Vycy9pbmRleFwiO1xyXG5pbXBvcnQgKiBhcyBzaGFyZWRNb2R1bGVSZWR1Y2VycyBmcm9tIFwiLi8uLi8uLi9zdG9yZS9yZWR1Y2Vycy9pbmRleFwiO1xyXG5pbXBvcnQgeyBHZXRBbGxNZW51SXRlbXNUcmlnZ2VyZWQgfSBmcm9tIFwiLi4vLi4vc3RvcmUvYWN0aW9ucy9tZW51aXRlbXMuYWN0aW9uc1wiO1xyXG5pbXBvcnQgeyBJTWVudUl0ZW0gfSBmcm9tIFwiLi4vLi4vbW9kZWxzL0lNZW51SXRlbVwiO1xyXG5pbXBvcnQgeyBNZW51Q2F0ZWdvcmllcyB9IGZyb20gXCIuLi8uLi9jb25zdGFudHMvbWVudS1jYXRlZ29yaWVzXCI7XHJcbmltcG9ydCB7IFNvZnRMYWJlbENvbmZpZ3VyYXRpb25Nb2RlbCB9IGZyb20gXCIuLi8uLi9tb2RlbHMvc29mdGxhYmVscy1tb2RlbFwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogXCJhcHAtc2lkZWJhclwiLFxyXG4gICAgdGVtcGxhdGVVcmw6IFwiLi9zaWRlLWJhci5jb21wb25lbnQuaHRtbFwiXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTaWRlQmFyQ29tcG9uZW50IHtcclxuICAgIHB1YmxpYyBtZW51SXRlbXMkOiBPYnNlcnZhYmxlPElNZW51SXRlbVtdPjtcclxuICAgIHB1YmxpYyBzZWxlY3RlZFJvd0luZGV4OiBudW1iZXI7XHJcbiAgICBwdWJsaWMgc2hvd0JhY2tHcm91bmRDb2xvcjogbnVtYmVyIHwgbnVsbCA9IG51bGw7XHJcbiAgICBwdWJsaWMgc29mdExhYmVsczogU29mdExhYmVsQ29uZmlndXJhdGlvbk1vZGVsW107XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBzdG9yZTogU3RvcmU8U3RhdGU+LCBwcml2YXRlIHJvdXRlcjogUm91dGVyKSB7IH1cclxuXHJcbiAgICBuZ09uSW5pdCgpIHtcclxuICAgICAgICAvLyBsb2FkIHNvZnQgbGFiZWxzXHJcbiAgICAgICAgdGhpcy5zb2Z0TGFiZWxzID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcIlNvZnRMYWJlbHNcIikpO1xyXG5cclxuICAgICAgICAvLyBnZXQgbWVudSBpdGVtcyBhbmQgZmlsdGVyIG91dCBIUiwgSFIgbWFuYWdlbWVudCAmIEFjdGl2aXR5IFRyYWNrZXJcclxuICAgICAgICB0aGlzLm1lbnVJdGVtcyQgPSB0aGlzLnN0b3JlLnBpcGUoXHJcbiAgICAgICAgICAgIHNlbGVjdChzaGFyZWRNb2R1bGVSZWR1Y2Vycy5nZXRDdXJyZW50QWN0aXZlTWVudUNhdGVnb3J5TWVudUl0ZW1zKSxcclxuICAgICAgICAgICAgbWFwKG1lbnVMaXN0ID0+XHJcbiAgICAgICAgICAgICAgICBtZW51TGlzdC5maWx0ZXIoaXRlbSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbWVudUxhYmVsID0gKGl0ZW0gYXMgYW55KS5tZW51Py50b0xvd2VyQ2FzZSgpIHx8IFwiXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RhdGUgPSBpdGVtLnN0YXRlPy50b0xvd2VyQ2FzZSgpIHx8IFwiXCI7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIC8vIOKdjCByZW1vdmUgSFIgKGRpcmVjdCBsaW5rKVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChtZW51TGFiZWwgPT09IFwiaHJcIiB8fCBzdGF0ZS5zdGFydHNXaXRoKFwiaHJtYW5hZ21lbnQvZW1wbG95ZWVsaXN0XCIpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIC8vIOKdjCByZW1vdmUgSFIgbWFuYWdlbWVudCBkcm9wZG93biAmIHN1Ym1lbnVzXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG1lbnVMYWJlbC5pbmNsdWRlcyhcImhyIG1hbmFnbWVudFwiKSB8fCBtZW51TGFiZWwuaW5jbHVkZXMoXCJociBtYW5hZ2VtZW50XCIpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXRlLnN0YXJ0c1dpdGgoXCJocm1hbmFnbWVudFwiKSB8fCBzdGF0ZS5zdGFydHNXaXRoKFwiaHJtZGV0YWlsc1wiKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAvLyDinYwgcmVtb3ZlIEFjdGl2aXR5IFRyYWNrZXJcclxuICAgICAgICAgICAgICAgICAgICBpZiAobWVudUxhYmVsLmluY2x1ZGVzKFwiYWN0aXZpdHkgdHJhY2tlclwiKSB8fCBzdGF0ZS5zdGFydHNXaXRoKFwiYWN0aXZpdHl0cmFja2VyXCIpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgdGFwKG1lbnVMaXN0ID0+IHRoaXMucm91dGVyQWN0aXZlKG1lbnVMaXN0KSlcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICAvLyB0cmlnZ2VyIG1lbnUgbG9hZFxyXG4gICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IEdldEFsbE1lbnVJdGVtc1RyaWdnZXJlZChNZW51Q2F0ZWdvcmllcy5NYWluKSk7XHJcblxyXG4gICAgICAgIC8vIGxpc3RlbiB0byByb3V0ZSBjaGFuZ2VzXHJcbiAgICAgICAgdGhpcy5yb3V0ZXIuZXZlbnRzLnN1YnNjcmliZShldmVudCA9PiB7XHJcbiAgICAgICAgICAgIGlmIChldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubWVudUl0ZW1zJC5zdWJzY3JpYmUobGlzdCA9PiB0aGlzLnJvdXRlckFjdGl2ZShsaXN0KSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICByb3V0ZXJBY3RpdmUobWVudUxpc3Q6IElNZW51SXRlbVtdKSB7XHJcbiAgICAgICAgaWYgKG1lbnVMaXN0ICYmIG1lbnVMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgY29uc3QgaW5kZXggPSBtZW51TGlzdC5maW5kSW5kZXgoaSA9PiB0aGlzLnJvdXRlci51cmwgPT0gXCIvXCIgKyBpLnN0YXRlKTtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gaW5kZXg7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnJvdXRlci51cmwuaW5jbHVkZXMoXCIvZGFzaGJvYXJkLW1hbmFnZW1lbnRcIikpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IDk5O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGVudGVyKGk6IG51bWJlcikge1xyXG4gICAgICAgIHRoaXMuc2hvd0JhY2tHcm91bmRDb2xvciA9IGk7XHJcbiAgICB9XHJcblxyXG4gICAgbGVhdmUoaTogbnVtYmVyKSB7XHJcbiAgICAgICAgdGhpcy5zaG93QmFja0dyb3VuZENvbG9yID0gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBzZWxlY3RNZW51KGluZGV4OiBudW1iZXIsIGxpbms/OiBzdHJpbmcpIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSBpbmRleDtcclxuICAgICAgICBpZiAobGluaykge1xyXG4gICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbbGlua10pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCIgc3R5bGU9XCJ3aWR0aDoxMDB2dzsgaGVpZ2h0OmNhbGMoMTAwdmggLSA2MHB4KTsgcGFkZGluZzozMHB4OyBvdmVyZmxvdzphdXRvO1xyXG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQocmdiYSgyNTUsMjU1LDI1NSwwLjcpLCByZ2JhKDI1NSwyNTUsMjU1LDAuNykpO1wiPlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJyb3cganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIiBzdHlsZT1cImhlaWdodDphdXRvO1wiPlxyXG5cclxuICAgICAgICA8IS0tIEZpeGVkIFJlcG9ydCBDYXJkIC0tPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNiBjb2wtbWQtMyBtYi00XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkIGN1cnNvci1wb2ludGVyXCIgc3R5bGU9XCJoZWlnaHQ6MTUwcHg7IGJvcmRlci1yYWRpdXM6MTJweDsgdHJhbnNpdGlvbjphbGwgMC4zcyBlYXNlOyBiYWNrZ3JvdW5kOiNmZmY7XHJcbiAgICAgICAgICAgICAgICAgIGJveC1zaGFkb3c6MCAycHggNnB4IHJnYmEoMCwwLDAsMC4wOCk7IGJvcmRlcjoycHggc29saWQgdHJhbnNwYXJlbnQ7XCIgKG1vdXNlZW50ZXIpPVwiZW50ZXIoOTkpXCJcclxuICAgICAgICAgICAgICAgIChtb3VzZWxlYXZlKT1cImxlYXZlKDk5KVwiIChjbGljayk9XCJzZWxlY3RNZW51KDk5LCAnL2Rhc2hib2FyZC1tYW5hZ2VtZW50JylcIiBbbmdTdHlsZV09XCIoc2VsZWN0ZWRSb3dJbmRleCA9PSA5OSB8fCBzaG93QmFja0dyb3VuZENvbG9yID09IDk5KSAmJiB7XHJcbiAgICAgICAgICAgICAgJ2JhY2tncm91bmQtY29sb3InOicjREJFQUZFJyxcclxuICAgICAgICAgICAgICAnYm9yZGVyLWltYWdlJzonbGluZWFyLWdyYWRpZW50KDEzNWRlZywjZjc5YTZiLCNmMTU4MGMpIDEnLFxyXG4gICAgICAgICAgICAgICdib3gtc2hhZG93JzonMCA0cHggMTVweCByZ2JhKDAsMCwwLDAuMTUpJ1xyXG4gICAgICAgICAgIH1cIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgZC1mbGV4IGZsZXgtY29sdW1uIGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIHN0eWxlPVwiZm9udC1zaXplOjQwcHg7IG1hcmdpbi1ib3R0b206MTBweDsgd2lkdGg6NDhweDsgaGVpZ2h0OjQ4cHg7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6ZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCgxMzVkZWcsI2Y3OWE2YiwjZjE1ODBjKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgLXdlYmtpdC1iYWNrZ3JvdW5kLWNsaXA6dGV4dDsgLXdlYmtpdC10ZXh0LWZpbGwtY29sb3I6dHJhbnNwYXJlbnQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY2xpcDp0ZXh0OyB0ZXh0LWZpbGwtY29sb3I6dHJhbnNwYXJlbnQ7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFzc2Vzc21lbnRcclxuICAgICAgICAgICAgICAgICAgICA8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxoNiBzdHlsZT1cImZvbnQtc2l6ZToxNHB4OyBtYXJnaW46MDsgY29sb3I6IzExMTgyNzsgdGV4dC1hbGlnbjpjZW50ZXI7XCI+UmVwb3J0PC9oNj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPCEtLSBEeW5hbWljIE1lbnUgQ2FyZHMgLS0+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02IGNvbC1tZC0zIG1iLTRcIiAqbmdGb3I9XCJsZXQgaXRlbSBvZiAobWVudUl0ZW1zJCB8IGFzeW5jKTsgbGV0IGkgPSBpbmRleDtcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQgY3Vyc29yLXBvaW50ZXJcIiBzdHlsZT1cImhlaWdodDoxNTBweDsgYm9yZGVyLXJhZGl1czoxMnB4OyB0cmFuc2l0aW9uOmFsbCAwLjNzIGVhc2U7IGJhY2tncm91bmQ6I2ZmZjtcclxuICAgICAgICAgICAgICAgICAgYm94LXNoYWRvdzowIDJweCA2cHggcmdiYSgwLDAsMCwwLjA4KTsgYm9yZGVyOjJweCBzb2xpZCB0cmFuc3BhcmVudDtcIiAobW91c2VlbnRlcik9XCJlbnRlcihpKVwiXHJcbiAgICAgICAgICAgICAgICAobW91c2VsZWF2ZSk9XCJsZWF2ZShpKVwiIChjbGljayk9XCJzZWxlY3RNZW51KGksIGl0ZW0uc3RhdGUpXCIgW25nU3R5bGVdPVwiKHNlbGVjdGVkUm93SW5kZXggPT0gaSB8fCBzaG93QmFja0dyb3VuZENvbG9yID09IGkpICYmIHtcclxuICAgICAgICAgICAgICAnYmFja2dyb3VuZC1jb2xvcic6JyNEQkVBRkUnLFxyXG4gICAgICAgICAgICAgICdib3JkZXItaW1hZ2UnOidsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCNmNzlhNmIsI2YxNTgwYykgMScsXHJcbiAgICAgICAgICAgICAgJ2JveC1zaGFkb3cnOicwIDRweCAxNXB4IHJnYmEoMCwwLDAsMC4xNSknXHJcbiAgICAgICAgICAgfVwiPlxyXG5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgZC1mbGV4IGZsZXgtY29sdW1uIGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gTm9ybWFsIGxpbmsgLyBhcHBsaWNhdGlvbiBsaW5rIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtLnR5cGUgPT09ICdsaW5rJyB8fCBpdGVtLnR5cGUgPT09ICdhcHBsaWNhdGlvbmxpbmsnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBzdHlsZT1cImZvbnQtc2l6ZTo0MHB4OyBtYXJnaW4tYm90dG9tOjEwcHg7IHdpZHRoOjQ4cHg7IGhlaWdodDo0OHB4O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6ZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KDEzNWRlZywjZjc5YTZiLCNmMTU4MGMpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIC13ZWJraXQtYmFja2dyb3VuZC1jbGlwOnRleHQ7IC13ZWJraXQtdGV4dC1maWxsLWNvbG9yOnRyYW5zcGFyZW50O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY2xpcDp0ZXh0OyB0ZXh0LWZpbGwtY29sb3I6dHJhbnNwYXJlbnQ7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtLmljb24gfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGg2IHN0eWxlPVwiZm9udC1zaXplOjE0cHg7IG1hcmdpbjowOyBjb2xvcjojMTExODI3OyB0ZXh0LWFsaWduOmNlbnRlcjtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0ubWVudSA/IChpdGVtLm1lbnUgfCBzb2Z0TGFiZWxzUGlwZSA6IHNvZnRMYWJlbHMpIDogKGl0ZW0ubmFtZSB8IHRyYW5zbGF0ZSkgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9oNj5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSBFeHRlcm5hbCBsaW5rIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtLnR5cGUgPT09ICdleHRMaW5rJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YSBbaHJlZl09XCJpdGVtLnN0YXRlXCIgdGFyZ2V0PVwiX2JsYW5rXCIgY2xhc3M9XCJ3LTEwMCBkLWZsZXggZmxleC1jb2x1bW4gYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gc3R5bGU9XCJmb250LXNpemU6NDBweDsgbWFyZ2luLWJvdHRvbToxMHB4OyB3aWR0aDo0OHB4OyBoZWlnaHQ6NDhweDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6ZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCNmNzlhNmIsI2YxNTgwYyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtd2Via2l0LWJhY2tncm91bmQtY2xpcDp0ZXh0OyAtd2Via2l0LXRleHQtZmlsbC1jb2xvcjp0cmFuc3BhcmVudDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY2xpcDp0ZXh0OyB0ZXh0LWZpbGwtY29sb3I6dHJhbnNwYXJlbnQ7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaXRlbS5pY29uIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg2IHN0eWxlPVwiZm9udC1zaXplOjE0cHg7IG1hcmdpbjowOyBjb2xvcjojMTExODI3OyB0ZXh0LWFsaWduOmNlbnRlcjtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtLm1lbnUgPyAoaXRlbS5tZW51IHwgc29mdExhYmVsc1BpcGUgOiBzb2Z0TGFiZWxzKSA6IChpdGVtLm5hbWUgfCB0cmFuc2xhdGUpIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2g2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gQmFkZ2VzIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpdGVtLmJhZGdlcz8ubGVuZ3RoXCIgY2xhc3M9XCJtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0Zvcj1cImxldCBiYWRnZSBvZiBpdGVtLmJhZGdlc1wiIGNsYXNzPVwiYmFkZ2Ugcm91bmRlZC1waWxsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsgYmFja2dyb3VuZDogYmFkZ2UuY29sb3IgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgYmFkZ2UudmFsdWUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj4iXX0=
99
+ SideBarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.1.1", ngImport: i0, type: SideBarComponent, deps: [{ token: i1.Store }, { token: i2.Router }], target: i0.ɵɵFactoryTarget.Component });
100
+ SideBarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.1.1", type: SideBarComponent, selector: "app-sidebar", ngImport: i0, template: "<div class=\"d-flex flex-column justify-content-center align-items-center\" style=\"width:100vw; height:calc(100vh - 60px); padding:30px; overflow:auto;\r\n background: linear-gradient(rgba(255,255,255,0.7), rgba(255,255,255,0.7));\">\r\n\r\n <div class=\"row justify-content-center align-items-center\" style=\"height:auto;\">\r\n\r\n <!-- Fixed Report Card -->\r\n <div class=\"col-6 col-md-3 mb-4\">\r\n <div class=\"card cursor-pointer\" style=\"height:150px; border-radius:12px; transition:all 0.3s ease;\r\n background:#fff; box-shadow:0 2px 6px rgba(0,0,0,0.08);\r\n border:2px solid rgba(241, 88, 12, 0.25);\" (mouseenter)=\"enter(99)\" (mouseleave)=\"leave(99)\"\r\n (click)=\"goToReport()\" [ngStyle]=\"(selectedRowIndex == 99 || showBackGroundColor == 99) && {\r\n 'background-color':'#fff',\r\n 'border':'2px solid #f1580c',\r\n 'box-shadow':'0 6px 20px rgba(241, 88, 12, 0.35), 0 0 10px rgba(241, 88, 12, 0.25)'\r\n }\">\r\n\r\n <div class=\"card-body d-flex flex-column align-items-center justify-content-center\">\r\n <mat-icon style=\"font-size:40px; margin-bottom:10px; width:48px; height:48px;\r\n display:flex; align-items:center; justify-content:center;\r\n background:linear-gradient(135deg,#f79a6b,#f1580c);\r\n -webkit-background-clip:text; -webkit-text-fill-color:transparent;\r\n background-clip:text; text-fill-color:transparent;\">\r\n assessment\r\n </mat-icon>\r\n <h6 style=\"font-size:14px; margin:0; color:#111827; text-align:center;\">Report</h6>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n <!-- Dynamic Menu Cards -->\r\n <div class=\"col-6 col-md-3 mb-4\" *ngFor=\"let item of (menuItems$ | async); let i = index;\">\r\n <div class=\"card cursor-pointer\" style=\"height:150px; border-radius:12px; transition:all 0.3s ease;\r\n background:#fff; box-shadow:0 2px 6px rgba(0,0,0,0.08);\r\n border:2px solid rgba(241, 88, 12, 0.25);\" (mouseenter)=\"enter(i)\" (mouseleave)=\"leave(i)\"\r\n (click)=\"selectMenu(i, item.state)\" [ngStyle]=\"(selectedRowIndex == i || showBackGroundColor == i) && {\r\n 'background-color':'#fff',\r\n 'border':'2px solid #f1580c',\r\n 'box-shadow':'0 6px 20px rgba(241, 88, 12, 0.35), 0 0 10px rgba(241, 88, 12, 0.25)'\r\n }\">\r\n\r\n <div class=\"card-body d-flex flex-column align-items-center justify-content-center\">\r\n\r\n <!-- Normal link / application link -->\r\n <ng-container *ngIf=\"item.type === 'link' || item.type === 'applicationlink'\">\r\n <mat-icon style=\"font-size:40px; margin-bottom:10px; width:48px; height:48px;\r\n display:flex; align-items:center; justify-content:center;\r\n background:linear-gradient(135deg,#f79a6b,#f1580c);\r\n -webkit-background-clip:text; -webkit-text-fill-color:transparent;\r\n background-clip:text; text-fill-color:transparent;\">\r\n {{ item.icon }}\r\n </mat-icon>\r\n <h6 style=\"font-size:14px; margin:0; color:#111827; text-align:center;\">\r\n {{ item.menu ? (item.menu | softLabelsPipe : softLabels) : (item.name | translate) }}\r\n </h6>\r\n </ng-container>\r\n\r\n <!-- External link -->\r\n <ng-container *ngIf=\"item.type === 'extLink'\">\r\n <a [href]=\"item.state\" target=\"_blank\" class=\"w-100 d-flex flex-column align-items-center\">\r\n <mat-icon style=\"font-size:40px; margin-bottom:10px; width:48px; height:48px;\r\n display:flex; align-items:center; justify-content:center;\r\n background:linear-gradient(135deg,#f79a6b,#f1580c);\r\n -webkit-background-clip:text; -webkit-text-fill-color:transparent;\r\n background-clip:text; text-fill-color:transparent;\">\r\n {{ item.icon }}\r\n </mat-icon>\r\n <h6 style=\"font-size:14px; margin:0; color:#111827; text-align:center;\">\r\n {{ item.menu ? (item.menu | softLabelsPipe : softLabels) : (item.name | translate) }}\r\n </h6>\r\n </a>\r\n </ng-container>\r\n\r\n <!-- Badges -->\r\n <div *ngIf=\"item.badges?.length\" class=\"mt-2\">\r\n <span *ngFor=\"let badge of item.badges\" class=\"badge rounded-pill\"\r\n [ngStyle]=\"{ background: badge.color }\">\r\n {{ badge.value }}\r\n </span>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", components: [{ type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], directives: [{ type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i5.DefaultStyleDirective, selector: " [ngStyle], [ngStyle.xs], [ngStyle.sm], [ngStyle.md], [ngStyle.lg], [ngStyle.xl], [ngStyle.lt-sm], [ngStyle.lt-md], [ngStyle.lt-lg], [ngStyle.lt-xl], [ngStyle.gt-xs], [ngStyle.gt-sm], [ngStyle.gt-md], [ngStyle.gt-lg]", inputs: ["ngStyle", "ngStyle.xs", "ngStyle.sm", "ngStyle.md", "ngStyle.lg", "ngStyle.xl", "ngStyle.lt-sm", "ngStyle.lt-md", "ngStyle.lt-lg", "ngStyle.lt-xl", "ngStyle.gt-xs", "ngStyle.gt-sm", "ngStyle.gt-md", "ngStyle.gt-lg"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "async": i4.AsyncPipe, "softLabelsPipe": i6.SoftLabelPipe, "translate": i7.TranslatePipe } });
101
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.1", ngImport: i0, type: SideBarComponent, decorators: [{
102
+ type: Component,
103
+ args: [{
104
+ selector: "app-sidebar",
105
+ templateUrl: "./side-bar.component.html"
106
+ }]
107
+ }], ctorParameters: function () { return [{ type: i1.Store }, { type: i2.Router }]; } });
108
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZS1iYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc2hlbGwtbW9kdWxlLWNvbXBvbmVudHMvc2hlbGwtY29tcG9uZW50cy9zcmMvbGliL3NoZWxsLWNvbXBvbmVudHMvY29tcG9uZW50cy9zaWRlbmF2L3NpZGUtYmFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NoZWxsLW1vZHVsZS1jb21wb25lbnRzL3NoZWxsLWNvbXBvbmVudHMvc3JjL2xpYi9zaGVsbC1jb21wb25lbnRzL2NvbXBvbmVudHMvc2lkZW5hdi9zaWRlLWJhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBVSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN4RCxPQUFPLEVBQVMsTUFBTSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRTVDLE9BQU8sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHMUMsT0FBTyxLQUFLLGNBQWMsTUFBTSxzQkFBc0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUVqRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUNBQWlDLENBQUM7Ozs7Ozs7OztBQU9qRSxNQUFNLE9BQU8sZ0JBQWdCO0lBVXpCLFlBQW9CLEtBQW1CLEVBQVUsTUFBYztRQUEzQyxVQUFLLEdBQUwsS0FBSyxDQUFjO1FBQVUsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQVAvRCw2QkFBNkI7UUFDN0IscUJBQWdCLEdBQWtCLElBQUksQ0FBQztRQUN2Qyw0QkFBNEI7UUFDNUIsd0JBQW1CLEdBQWtCLElBQUksQ0FBQztRQUMxQyxtQ0FBbUM7UUFDbkMsZUFBVSxHQUFrQyxFQUFFLENBQUM7SUFFb0IsQ0FBQztJQUVwRSxRQUFRO1FBQ0osK0JBQStCO1FBQy9CLE1BQU0sWUFBWSxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDeEQsSUFBSSxDQUFDLFVBQVUsR0FBRyxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUUvRCxnREFBZ0Q7UUFDaEQsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FDN0IsTUFBTSxDQUFDLGNBQWMsQ0FBQyxxQ0FBcUMsQ0FBQyxFQUM1RCxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUNULElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTs7WUFDakIsTUFBTSxTQUFTLEdBQUcsQ0FBQSxNQUFDLElBQVksQ0FBQyxJQUFJLDBDQUFFLFdBQVcsRUFBRSxLQUFJLEVBQUUsQ0FBQztZQUMxRCxNQUFNLEtBQUssR0FBRyxDQUFBLE1BQUEsSUFBSSxDQUFDLEtBQUssMENBQUUsV0FBVyxFQUFFLEtBQUksRUFBRSxDQUFDO1lBRTlDLHdDQUF3QztZQUN4QyxJQUFJLFNBQVMsS0FBSyxJQUFJLElBQUksS0FBSyxDQUFDLFVBQVUsQ0FBQywwQkFBMEIsQ0FBQztnQkFBRSxPQUFPLEtBQUssQ0FBQztZQUNyRixJQUFJLFNBQVMsQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLElBQUksU0FBUyxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUM7Z0JBQUUsT0FBTyxLQUFLLENBQUM7WUFDNUYsSUFBSSxLQUFLLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEtBQUssQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDO2dCQUFFLE9BQU8sS0FBSyxDQUFDO1lBQ3BGLElBQUksU0FBUyxDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLEtBQUssQ0FBQyxVQUFVLENBQUMsaUJBQWlCLENBQUM7Z0JBQUUsT0FBTyxLQUFLLENBQUM7WUFDaEcsT0FBTyxJQUFJLENBQUM7UUFDaEIsQ0FBQyxDQUFDLENBQ0wsRUFDRCxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FDakQsQ0FBQztRQUVGLHNCQUFzQjtRQUN0QixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLHdCQUF3QixDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBRXZFLCtDQUErQztRQUMvQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNuQyxJQUFJLEtBQUssWUFBWSxhQUFhLEVBQUU7Z0JBQ2hDLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7YUFDaEU7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCw0REFBNEQ7SUFDcEQsWUFBWSxDQUFDLFFBQXFCO1FBQ3RDLElBQUksQ0FBQyxDQUFBLFFBQVEsYUFBUixRQUFRLHVCQUFSLFFBQVEsQ0FBRSxNQUFNLENBQUE7WUFBRSxPQUFPO1FBRTlCLE1BQU0sVUFBVSxHQUFHLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxLQUFLLEdBQUcsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEYsSUFBSSxDQUFDLGdCQUFnQixHQUFHLFVBQVUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBRTVELHdEQUF3RDtRQUN4RCxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxpQ0FBaUMsQ0FBQyxFQUFFO1lBQy9ELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxFQUFFLENBQUM7U0FDOUI7SUFDTCxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLEtBQUssQ0FBQyxLQUFhO1FBQ2YsSUFBSSxDQUFDLG1CQUFtQixHQUFHLEtBQUssQ0FBQztJQUNyQyxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLEtBQUssQ0FBQyxLQUFhO1FBQ2YsSUFBSSxJQUFJLENBQUMsbUJBQW1CLEtBQUssS0FBSyxFQUFFO1lBQ3BDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUM7U0FDbkM7SUFDTCxDQUFDO0lBRUQseUNBQXlDO0lBQ3pDLFVBQVUsQ0FBQyxLQUFhLEVBQUUsSUFBYTtRQUNuQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDO1FBQzlCLElBQUksSUFBSSxFQUFFO1lBQ04sdUJBQXVCO1lBQ3ZCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQztZQUN0RCxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7U0FDaEM7SUFDTCxDQUFDO0lBRUQsNkRBQTZEO0lBQzdELFVBQVU7UUFDTixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsRUFBRSxDQUFDO1FBRTNCLE1BQU0sTUFBTSxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUN4RCxNQUFNLGtCQUFrQixHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBRTlELElBQUksa0JBQWtCLEVBQUU7WUFDcEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxtQ0FBbUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDbkY7YUFBTTtZQUNILElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxDQUFDO1NBQ25EO0lBQ0wsQ0FBQzs7NkdBOUZRLGdCQUFnQjtpR0FBaEIsZ0JBQWdCLG1EQ2pCN0IsdzNLQXFGTTsyRkRwRU8sZ0JBQWdCO2tCQUo1QixTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxhQUFhO29CQUN2QixXQUFXLEVBQUUsMkJBQTJCO2lCQUMzQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgUm91dGVyLCBOYXZpZ2F0aW9uRW5kIH0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xyXG5pbXBvcnQgeyBTdG9yZSwgc2VsZWN0IH0gZnJvbSBcIkBuZ3J4L3N0b3JlXCI7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBtYXAsIHRhcCB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xyXG5cclxuaW1wb3J0IHsgU3RhdGUgfSBmcm9tIFwiLi4vLi4vc3RvcmUvcmVkdWNlcnNcIjtcclxuaW1wb3J0ICogYXMgc2hhcmVkUmVkdWNlcnMgZnJvbSBcIi4uLy4uL3N0b3JlL3JlZHVjZXJzXCI7XHJcbmltcG9ydCB7IEdldEFsbE1lbnVJdGVtc1RyaWdnZXJlZCB9IGZyb20gXCIuLi8uLi9zdG9yZS9hY3Rpb25zL21lbnVpdGVtcy5hY3Rpb25zXCI7XHJcbmltcG9ydCB7IElNZW51SXRlbSB9IGZyb20gXCIuLi8uLi9tb2RlbHMvSU1lbnVJdGVtXCI7XHJcbmltcG9ydCB7IE1lbnVDYXRlZ29yaWVzIH0gZnJvbSBcIi4uLy4uL2NvbnN0YW50cy9tZW51LWNhdGVnb3JpZXNcIjtcclxuaW1wb3J0IHsgU29mdExhYmVsQ29uZmlndXJhdGlvbk1vZGVsIH0gZnJvbSBcIi4uLy4uL21vZGVscy9zb2Z0bGFiZWxzLW1vZGVsXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiBcImFwcC1zaWRlYmFyXCIsXHJcbiAgICB0ZW1wbGF0ZVVybDogXCIuL3NpZGUtYmFyLmNvbXBvbmVudC5odG1sXCJcclxufSlcclxuZXhwb3J0IGNsYXNzIFNpZGVCYXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gICAgLyoqIG1lbnUgaXRlbXMgb2JzZXJ2YWJsZSAqL1xyXG4gICAgbWVudUl0ZW1zJDogT2JzZXJ2YWJsZTxJTWVudUl0ZW1bXT47XHJcbiAgICAvKiogaW5kZXggb2Ygc2VsZWN0ZWQgY2FyZCAqL1xyXG4gICAgc2VsZWN0ZWRSb3dJbmRleDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XHJcbiAgICAvKiogaW5kZXggb2YgaG92ZXJlZCBjYXJkICovXHJcbiAgICBzaG93QmFja0dyb3VuZENvbG9yOiBudW1iZXIgfCBudWxsID0gbnVsbDtcclxuICAgIC8qKiBzb2Z0IGxhYmVscyBmb3IgdHJhbnNsYXRpb25zICovXHJcbiAgICBzb2Z0TGFiZWxzOiBTb2Z0TGFiZWxDb25maWd1cmF0aW9uTW9kZWxbXSA9IFtdO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgc3RvcmU6IFN0b3JlPFN0YXRlPiwgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcikgeyB9XHJcblxyXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAgICAgLy8gbG9hZCBzb2Z0IGxhYmVsIHRyYW5zbGF0aW9uc1xyXG4gICAgICAgIGNvbnN0IHN0b3JlZExhYmVscyA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiU29mdExhYmVsc1wiKTtcclxuICAgICAgICB0aGlzLnNvZnRMYWJlbHMgPSBzdG9yZWRMYWJlbHMgPyBKU09OLnBhcnNlKHN0b3JlZExhYmVscykgOiBbXTtcclxuXHJcbiAgICAgICAgLy8gc2VsZWN0ICYgZmlsdGVyIHNpZGViYXIgbWVudSBpdGVtcyBmcm9tIHN0b3JlXHJcbiAgICAgICAgdGhpcy5tZW51SXRlbXMkID0gdGhpcy5zdG9yZS5waXBlKFxyXG4gICAgICAgICAgICBzZWxlY3Qoc2hhcmVkUmVkdWNlcnMuZ2V0Q3VycmVudEFjdGl2ZU1lbnVDYXRlZ29yeU1lbnVJdGVtcyksXHJcbiAgICAgICAgICAgIG1hcCgobGlzdCkgPT5cclxuICAgICAgICAgICAgICAgIGxpc3QuZmlsdGVyKChpdGVtKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbWVudUxhYmVsID0gKGl0ZW0gYXMgYW55KS5tZW51Py50b0xvd2VyQ2FzZSgpIHx8IFwiXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RhdGUgPSBpdGVtLnN0YXRlPy50b0xvd2VyQ2FzZSgpIHx8IFwiXCI7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIC8vIEV4Y2x1ZGUgSFIsIHRyYWNrZXIgb3IgdW53YW50ZWQgaXRlbXNcclxuICAgICAgICAgICAgICAgICAgICBpZiAobWVudUxhYmVsID09PSBcImhyXCIgfHwgc3RhdGUuc3RhcnRzV2l0aChcImhybWFuYWdtZW50L2VtcGxveWVlbGlzdFwiKSkgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChtZW51TGFiZWwuaW5jbHVkZXMoXCJociBtYW5hZ21lbnRcIikgfHwgbWVudUxhYmVsLmluY2x1ZGVzKFwiaHIgbWFuYWdlbWVudFwiKSkgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChzdGF0ZS5zdGFydHNXaXRoKFwiaHJtYW5hZ21lbnRcIikgfHwgc3RhdGUuc3RhcnRzV2l0aChcImhybWRldGFpbHNcIikpIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAobWVudUxhYmVsLmluY2x1ZGVzKFwiYWN0aXZpdHkgdHJhY2tlclwiKSB8fCBzdGF0ZS5zdGFydHNXaXRoKFwiYWN0aXZpdHl0cmFja2VyXCIpKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICApLFxyXG4gICAgICAgICAgICB0YXAoKG1lbnVMaXN0KSA9PiB0aGlzLnJvdXRlckFjdGl2ZShtZW51TGlzdCkpXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgLy8gZGlzcGF0Y2ggbG9hZCBldmVudFxyXG4gICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IEdldEFsbE1lbnVJdGVtc1RyaWdnZXJlZChNZW51Q2F0ZWdvcmllcy5NYWluKSk7XHJcblxyXG4gICAgICAgIC8vIGxpc3RlbiBmb3Igcm91dGUgY2hhbmdlcyB0byB1cGRhdGUgaGlnaGxpZ2h0XHJcbiAgICAgICAgdGhpcy5yb3V0ZXIuZXZlbnRzLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcclxuICAgICAgICAgICAgaWYgKGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5tZW51SXRlbXMkLnN1YnNjcmliZSgobGlzdCkgPT4gdGhpcy5yb3V0ZXJBY3RpdmUobGlzdCkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIGhpZ2hsaWdodHMgdGhlIGFjdGl2ZSBjYXJkIGFjY29yZGluZyB0byBjdXJyZW50IHJvdXRlICovXHJcbiAgICBwcml2YXRlIHJvdXRlckFjdGl2ZShtZW51TGlzdDogSU1lbnVJdGVtW10pOiB2b2lkIHtcclxuICAgICAgICBpZiAoIW1lbnVMaXN0Py5sZW5ndGgpIHJldHVybjtcclxuXHJcbiAgICAgICAgY29uc3QgZm91bmRJbmRleCA9IG1lbnVMaXN0LmZpbmRJbmRleCgoaSkgPT4gdGhpcy5yb3V0ZXIudXJsID09PSBcIi9cIiArIGkuc3RhdGUpO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IGZvdW5kSW5kZXggPj0gMCA/IGZvdW5kSW5kZXggOiBudWxsO1xyXG5cclxuICAgICAgICAvLyBIaWdobGlnaHQgcmVwb3J0IGNhcmQgd2hlbiBpbnNpZGUgYW55IGRhc2hib2FyZCByb3V0ZVxyXG4gICAgICAgIGlmICh0aGlzLnJvdXRlci51cmwuc3RhcnRzV2l0aChcIi9kYXNoYm9hcmQtbWFuYWdlbWVudC9kYXNoYm9hcmRcIikpIHtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gOTk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKiBob3ZlciBlbnRlciAqL1xyXG4gICAgZW50ZXIoaW5kZXg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuc2hvd0JhY2tHcm91bmRDb2xvciA9IGluZGV4O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBob3ZlciBsZWF2ZSAqL1xyXG4gICAgbGVhdmUoaW5kZXg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLnNob3dCYWNrR3JvdW5kQ29sb3IgPT09IGluZGV4KSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2hvd0JhY2tHcm91bmRDb2xvciA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKiB3aGVuIGNsaWNraW5nIG9uIGR5bmFtaWMgbWVudSBjYXJkICovXHJcbiAgICBzZWxlY3RNZW51KGluZGV4OiBudW1iZXIsIGxpbms/OiBzdHJpbmcpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSBpbmRleDtcclxuICAgICAgICBpZiAobGluaykge1xyXG4gICAgICAgICAgICAvLyBlbnN1cmUgZm9yd2FyZCBzbGFzaFxyXG4gICAgICAgICAgICBjb25zdCBwYXRoID0gbGluay5zdGFydHNXaXRoKFwiL1wiKSA/IGxpbmsgOiBcIi9cIiArIGxpbms7XHJcbiAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtwYXRoXSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKiBvcGVuIHJlcG9ydCBkYXNoYm9hcmQtbWFuYWdlbWVudC9kYXNoYm9hcmQvOmlkIG9yIHJvb3QgKi9cclxuICAgIGdvVG9SZXBvcnQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gOTk7XHJcblxyXG4gICAgICAgIGNvbnN0IHN0b3JlZCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiRGVmYXVsdERhc2hib2FyZFwiKTtcclxuICAgICAgICBjb25zdCBkZWZhdWx0RGFzaGJvYXJkSWQgPSBzdG9yZWQgPyBKU09OLnBhcnNlKHN0b3JlZCkgOiBudWxsO1xyXG5cclxuICAgICAgICBpZiAoZGVmYXVsdERhc2hib2FyZElkKSB7XHJcbiAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtgL2Rhc2hib2FyZC1tYW5hZ2VtZW50L2Rhc2hib2FyZC8ke2RlZmF1bHREYXNoYm9hcmRJZH1gXSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW1wiL2Rhc2hib2FyZC1tYW5hZ2VtZW50XCJdKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiIHN0eWxlPVwid2lkdGg6MTAwdnc7IGhlaWdodDpjYWxjKDEwMHZoIC0gNjBweCk7IHBhZGRpbmc6MzBweDsgb3ZlcmZsb3c6YXV0bztcclxuICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHJnYmEoMjU1LDI1NSwyNTUsMC43KSwgcmdiYSgyNTUsMjU1LDI1NSwwLjcpKTtcIj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwicm93IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCIgc3R5bGU9XCJoZWlnaHQ6YXV0bztcIj5cclxuXHJcbiAgICAgICAgPCEtLSBGaXhlZCBSZXBvcnQgQ2FyZCAtLT5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTYgY29sLW1kLTMgbWItNFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZCBjdXJzb3ItcG9pbnRlclwiIHN0eWxlPVwiaGVpZ2h0OjE1MHB4OyBib3JkZXItcmFkaXVzOjEycHg7IHRyYW5zaXRpb246YWxsIDAuM3MgZWFzZTtcclxuICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6I2ZmZjsgYm94LXNoYWRvdzowIDJweCA2cHggcmdiYSgwLDAsMCwwLjA4KTtcclxuICAgICAgICAgICAgICAgICAgICAgIGJvcmRlcjoycHggc29saWQgcmdiYSgyNDEsIDg4LCAxMiwgMC4yNSk7XCIgKG1vdXNlZW50ZXIpPVwiZW50ZXIoOTkpXCIgKG1vdXNlbGVhdmUpPVwibGVhdmUoOTkpXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJnb1RvUmVwb3J0KClcIiBbbmdTdHlsZV09XCIoc2VsZWN0ZWRSb3dJbmRleCA9PSA5OSB8fCBzaG93QmFja0dyb3VuZENvbG9yID09IDk5KSAmJiB7XHJcbiAgICAgICAgICAgICAgICAgJ2JhY2tncm91bmQtY29sb3InOicjZmZmJyxcclxuICAgICAgICAgICAgICAgICAnYm9yZGVyJzonMnB4IHNvbGlkICNmMTU4MGMnLFxyXG4gICAgICAgICAgICAgICAgICdib3gtc2hhZG93JzonMCA2cHggMjBweCByZ2JhKDI0MSwgODgsIDEyLCAwLjM1KSwgMCAwIDEwcHggcmdiYSgyNDEsIDg4LCAxMiwgMC4yNSknXHJcbiAgICAgICAgICAgICAgIH1cIj5cclxuXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IGQtZmxleCBmbGV4LWNvbHVtbiBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBzdHlsZT1cImZvbnQtc2l6ZTo0MHB4OyBtYXJnaW4tYm90dG9tOjEwcHg7IHdpZHRoOjQ4cHg7IGhlaWdodDo0OHB4O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTpmbGV4OyBhbGlnbi1pdGVtczpjZW50ZXI7IGp1c3RpZnktY29udGVudDpjZW50ZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCgxMzVkZWcsI2Y3OWE2YiwjZjE1ODBjKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC13ZWJraXQtYmFja2dyb3VuZC1jbGlwOnRleHQ7IC13ZWJraXQtdGV4dC1maWxsLWNvbG9yOnRyYW5zcGFyZW50O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jbGlwOnRleHQ7IHRleHQtZmlsbC1jb2xvcjp0cmFuc3BhcmVudDtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXNzbWVudFxyXG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgPGg2IHN0eWxlPVwiZm9udC1zaXplOjE0cHg7IG1hcmdpbjowOyBjb2xvcjojMTExODI3OyB0ZXh0LWFsaWduOmNlbnRlcjtcIj5SZXBvcnQ8L2g2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICAgICAgPCEtLSBEeW5hbWljIE1lbnUgQ2FyZHMgLS0+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02IGNvbC1tZC0zIG1iLTRcIiAqbmdGb3I9XCJsZXQgaXRlbSBvZiAobWVudUl0ZW1zJCB8IGFzeW5jKTsgbGV0IGkgPSBpbmRleDtcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQgY3Vyc29yLXBvaW50ZXJcIiBzdHlsZT1cImhlaWdodDoxNTBweDsgYm9yZGVyLXJhZGl1czoxMnB4OyB0cmFuc2l0aW9uOmFsbCAwLjNzIGVhc2U7XHJcbiAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6I2ZmZjsgYm94LXNoYWRvdzowIDJweCA2cHggcmdiYSgwLDAsMCwwLjA4KTtcclxuICAgICAgICAgICAgICAgICAgYm9yZGVyOjJweCBzb2xpZCByZ2JhKDI0MSwgODgsIDEyLCAwLjI1KTtcIiAobW91c2VlbnRlcik9XCJlbnRlcihpKVwiIChtb3VzZWxlYXZlKT1cImxlYXZlKGkpXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RNZW51KGksIGl0ZW0uc3RhdGUpXCIgW25nU3R5bGVdPVwiKHNlbGVjdGVkUm93SW5kZXggPT0gaSB8fCBzaG93QmFja0dyb3VuZENvbG9yID09IGkpICYmIHtcclxuICAgICAgICAgICAgICAnYmFja2dyb3VuZC1jb2xvcic6JyNmZmYnLFxyXG4gICAgICAgICAgICAgICdib3JkZXInOicycHggc29saWQgI2YxNTgwYycsXHJcbiAgICAgICAgICAgICAgJ2JveC1zaGFkb3cnOicwIDZweCAyMHB4IHJnYmEoMjQxLCA4OCwgMTIsIDAuMzUpLCAwIDAgMTBweCByZ2JhKDI0MSwgODgsIDEyLCAwLjI1KSdcclxuICAgICAgICAgICB9XCI+XHJcblxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBkLWZsZXggZmxleC1jb2x1bW4gYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSBOb3JtYWwgbGluayAvIGFwcGxpY2F0aW9uIGxpbmsgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIml0ZW0udHlwZSA9PT0gJ2xpbmsnIHx8IGl0ZW0udHlwZSA9PT0gJ2FwcGxpY2F0aW9ubGluaydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIHN0eWxlPVwiZm9udC1zaXplOjQwcHg7IG1hcmdpbi1ib3R0b206MTBweDsgd2lkdGg6NDhweDsgaGVpZ2h0OjQ4cHg7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTpmbGV4OyBhbGlnbi1pdGVtczpjZW50ZXI7IGp1c3RpZnktY29udGVudDpjZW50ZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCNmNzlhNmIsI2YxNTgwYyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLXdlYmtpdC1iYWNrZ3JvdW5kLWNsaXA6dGV4dDsgLXdlYmtpdC10ZXh0LWZpbGwtY29sb3I6dHJhbnNwYXJlbnQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jbGlwOnRleHQ7IHRleHQtZmlsbC1jb2xvcjp0cmFuc3BhcmVudDtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0uaWNvbiB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aDYgc3R5bGU9XCJmb250LXNpemU6MTRweDsgbWFyZ2luOjA7IGNvbG9yOiMxMTE4Mjc7IHRleHQtYWxpZ246Y2VudGVyO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaXRlbS5tZW51ID8gKGl0ZW0ubWVudSB8IHNvZnRMYWJlbHNQaXBlIDogc29mdExhYmVscykgOiAoaXRlbS5uYW1lIHwgdHJhbnNsYXRlKSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2g2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIEV4dGVybmFsIGxpbmsgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIml0ZW0udHlwZSA9PT0gJ2V4dExpbmsnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxhIFtocmVmXT1cIml0ZW0uc3RhdGVcIiB0YXJnZXQ9XCJfYmxhbmtcIiBjbGFzcz1cInctMTAwIGQtZmxleCBmbGV4LWNvbHVtbiBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBzdHlsZT1cImZvbnQtc2l6ZTo0MHB4OyBtYXJnaW4tYm90dG9tOjEwcHg7IHdpZHRoOjQ4cHg7IGhlaWdodDo0OHB4O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTpmbGV4OyBhbGlnbi1pdGVtczpjZW50ZXI7IGp1c3RpZnktY29udGVudDpjZW50ZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCgxMzVkZWcsI2Y3OWE2YiwjZjE1ODBjKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC13ZWJraXQtYmFja2dyb3VuZC1jbGlwOnRleHQ7IC13ZWJraXQtdGV4dC1maWxsLWNvbG9yOnRyYW5zcGFyZW50O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jbGlwOnRleHQ7IHRleHQtZmlsbC1jb2xvcjp0cmFuc3BhcmVudDtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtLmljb24gfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDYgc3R5bGU9XCJmb250LXNpemU6MTRweDsgbWFyZ2luOjA7IGNvbG9yOiMxMTE4Mjc7IHRleHQtYWxpZ246Y2VudGVyO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0ubWVudSA/IChpdGVtLm1lbnUgfCBzb2Z0TGFiZWxzUGlwZSA6IHNvZnRMYWJlbHMpIDogKGl0ZW0ubmFtZSB8IHRyYW5zbGF0ZSkgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaDY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSBCYWRnZXMgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIml0ZW0uYmFkZ2VzPy5sZW5ndGhcIiBjbGFzcz1cIm10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nRm9yPVwibGV0IGJhZGdlIG9mIGl0ZW0uYmFkZ2VzXCIgY2xhc3M9XCJiYWRnZSByb3VuZGVkLXBpbGxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwieyBiYWNrZ3JvdW5kOiBiYWRnZS5jb2xvciB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBiYWRnZS52YWx1ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PiJdfQ==