@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.
- package/bundles/thetradeengineorg1-snova-shell-module.umd.js +508 -4030
- package/bundles/thetradeengineorg1-snova-shell-module.umd.js.map +1 -1
- package/esm2015/lib/globaldependencies/components/componentbase.js +9 -9
- package/esm2015/lib/globaldependencies/helpers/moment-utc-date-adapter.js +11 -11
- package/esm2015/lib/globaldependencies/intercepter/jwt.interceptor.js +6 -6
- package/esm2015/lib/globaldependencies/pipes/fetchSizedAndCachedImage.pipe.js +11 -11
- package/esm2015/lib/globaldependencies/pipes/highLightText.pipe.js +13 -13
- package/esm2015/lib/globaldependencies/pipes/orderby-pipe.js +11 -11
- package/esm2015/lib/globaldependencies/pipes/removeSpecialCharacters.pipe.js +11 -11
- package/esm2015/lib/globaldependencies/pipes/sanitize.pipe.js +13 -13
- package/esm2015/lib/globaldependencies/pipes/softlabels.pipes.js +13 -13
- package/esm2015/lib/globaldependencies/pipes/utctolocaltime.pipe.js +11 -11
- package/esm2015/lib/globaldependencies/pipes/utctolocaltimewithdate.pipe.js +11 -11
- package/esm2015/lib/globaldependencies/pipes/workflowstatus.pipes.js +11 -11
- package/esm2015/lib/shell-components/components/Payments/account.component.js +20 -91
- package/esm2015/lib/shell-components/components/Payments/company-information.js +26 -322
- package/esm2015/lib/shell-components/components/Payments/company-plans.component.js +11 -509
- package/esm2015/lib/shell-components/components/Payments/document.component.js +18 -90
- package/esm2015/lib/shell-components/components/Payments/payment-method.component.js +18 -76
- package/esm2015/lib/shell-components/components/Payments/product-service.component.js +22 -317
- package/esm2015/lib/shell-components/components/Payments/purchase-more-licenses.js +22 -119
- package/esm2015/lib/shell-components/components/Payments/transactions.component.js +20 -132
- package/esm2015/lib/shell-components/components/admin-layout/admin-layout.component.js +18 -86
- package/esm2015/lib/shell-components/components/all-work-items-dialog/all-work-items-dialog.component.js +16 -29
- package/esm2015/lib/shell-components/components/confirmation-dialog/confirmation-dialog.component.js +19 -55
- package/esm2015/lib/shell-components/components/export-import-configuration/export-configuration.component.js +29 -174
- package/esm2015/lib/shell-components/components/feed-time/feed-time-dialog.component.js +16 -29
- package/esm2015/lib/shell-components/components/feed-time/feed-time.component.js +16 -20
- package/esm2015/lib/shell-components/components/header-side/header-side.component.js +64 -387
- package/esm2015/lib/shell-components/components/header-top/header-top.component.js +19 -142
- package/esm2015/lib/shell-components/components/lives/lives-welcome-page.js +10 -39
- package/esm2015/lib/shell-components/components/menu/menu.component.js +64 -176
- package/esm2015/lib/shell-components/components/notifications/announcement-dialog.component.js +20 -57
- package/esm2015/lib/shell-components/components/notifications/notifications.component.js +14 -99
- package/esm2015/lib/shell-components/components/sidebar-top/sidebar-top.component.js +13 -19
- package/esm2015/lib/shell-components/components/sidenav/side-bar.component.js +67 -159
- package/esm2015/lib/shell-components/components/sidenav/sidenav.component.js +23 -419
- package/esm2015/lib/shell-components/components/submit-feedback/submit-feedback.component.js +13 -17
- package/esm2015/lib/shell-components/services/authentication.service.js +7 -7
- package/esm2015/lib/shell-components/services/chat.service.js +9 -9
- package/esm2015/lib/shell-components/services/common-used.service.js +7 -7
- package/esm2015/lib/shell-components/services/feature.service.js +7 -7
- package/esm2015/lib/shell-components/services/google-analytics.service.js +6 -6
- package/esm2015/lib/shell-components/services/layout.service.js +6 -6
- package/esm2015/lib/shell-components/services/payment.service.js +7 -7
- package/esm2015/lib/shell-components/services/recentSearch.service.js +9 -9
- package/esm2015/lib/shell-components/services/shell.modules.service.js +11 -11
- package/esm2015/lib/shell-components/services/signalr.service.js +9 -9
- package/esm2015/lib/shell-components/services/theme.service.js +6 -6
- package/esm2015/lib/shell-components/shell.module.js +175 -176
- package/esm2015/lib/shell-components/shell.routing.js +3 -3
- package/esm2015/lib/shell-components/store/effects/authentication.effects.js +9 -9
- package/esm2015/lib/shell-components/store/effects/chat.effects.js +6 -6
- package/esm2015/lib/shell-components/store/effects/menuitems.effects.js +6 -6
- package/esm2015/lib/shell-components/store/effects/notification-validator.effects.js +6 -6
- package/esm2015/lib/shell-components/store/effects/notifications.effects.js +6 -6
- package/fesm2015/thetradeengineorg1-snova-shell-module.js +869 -3856
- package/fesm2015/thetradeengineorg1-snova-shell-module.js.map +1 -1
- package/lib/shell-components/components/sidenav/side-bar.component.d.ts +17 -6
- 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 "
|
|
4
|
-
import * as i2 from "
|
|
5
|
-
import * as i3 from "
|
|
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 =
|
|
25
|
-
SidebarTopComponent.ɵcmp =
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
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 {
|
|
5
|
-
import * as
|
|
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/
|
|
12
|
-
import * as i4 from "@angular/
|
|
13
|
-
import * as i5 from "@angular/
|
|
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
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
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
|
-
//
|
|
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
|
-
//
|
|
46
|
+
})), tap((menuList) => this.routerActive(menuList)));
|
|
47
|
+
// dispatch load event
|
|
136
48
|
this.store.dispatch(new GetAllMenuItemsTriggered(MenuCategories.Main));
|
|
137
|
-
// listen
|
|
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
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
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
|
|
154
|
-
|
|
67
|
+
/** hover enter */
|
|
68
|
+
enter(index) {
|
|
69
|
+
this.showBackGroundColor = index;
|
|
155
70
|
}
|
|
156
|
-
leave
|
|
157
|
-
|
|
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
|
-
|
|
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 =
|
|
167
|
-
SideBarComponent.ɵcmp =
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZS1iYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc2hlbGwtbW9kdWxlLWNvbXBvbmVudHMvc2hlbGwtY29tcG9uZW50cy9zcmMvbGliL3NoZWxsLWNvbXBvbmVudHMvY29tcG9uZW50cy9zaWRlbmF2L3NpZGUtYmFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NoZWxsLW1vZHVsZS1jb21wb25lbnRzL3NoZWxsLWNvbXBvbmVudHMvc3JjL2xpYi9zaGVsbC1jb21wb25lbnRzL2NvbXBvbmVudHMvc2lkZW5hdi9zaWRlLWJhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBVSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN4RCxPQUFPLEVBQVMsTUFBTSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRTVDLE9BQU8sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHMUMsT0FBTyxLQUFLLGNBQWMsTUFBTSxzQkFBc0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUVqRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUNBQWlDLENBQUM7Ozs7Ozs7OztBQU9qRSxNQUFNLE9BQU8sZ0JBQWdCO0lBVXpCLFlBQW9CLEtBQW1CLEVBQVUsTUFBYztRQUEzQyxVQUFLLEdBQUwsS0FBSyxDQUFjO1FBQVUsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQVAvRCw2QkFBNkI7UUFDN0IscUJBQWdCLEdBQWtCLElBQUksQ0FBQztRQUN2Qyw0QkFBNEI7UUFDNUIsd0JBQW1CLEdBQWtCLElBQUksQ0FBQztRQUMxQyxtQ0FBbUM7UUFDbkMsZUFBVSxHQUFrQyxFQUFFLENBQUM7SUFFb0Is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QUMsUUFBUSxDQUFDLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxDQUFDO1NBQ25EO0lBQ0wsQ0FBQzs7NkdBOUZRLGdCQUFnQjtpR0FBaEIsZ0JBQWdCLG1EQ2pCN0IsdzNLQXFGTTsyRkRwRU8sZ0JBQWdCO2tCQUo1QixTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxhQUFhO29CQUN2QixXQUFXLEVBQUUsMkJBQTJCO2lCQUMzQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgUm91dGVyLCBOYXZpZ2F0aW9uRW5kIH0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xyXG5pbXBvcnQgeyBTdG9yZSwgc2VsZWN0IH0gZnJvbSBcIkBuZ3J4L3N0b3JlXCI7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBtYXAsIHRhcCB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xyXG5cclxuaW1wb3J0IHsgU3RhdGUgfSBmcm9tIFwiLi4vLi4vc3RvcmUvcmVkdWNlcnNcIjtcclxuaW1wb3J0ICogYXMgc2hhcmVkUmVkdWNlcnMgZnJvbSBcIi4uLy4uL3N0b3JlL3JlZHVjZXJzXCI7XHJcbmltcG9ydCB7IEdldEFsbE1lbnVJdGVtc1RyaWdnZXJlZCB9IGZyb20gXCIuLi8uLi9zdG9yZS9hY3Rpb25zL21lbnVpdGVtcy5hY3Rpb25zXCI7XHJcbmltcG9ydCB7IElNZW51SXRlbSB9IGZyb20gXCIuLi8uLi9tb2RlbHMvSU1lbnVJdGVtXCI7XHJcbmltcG9ydCB7IE1lbnVDYXRlZ29yaWVzIH0gZnJvbSBcIi4uLy4uL2NvbnN0YW50cy9tZW51LWNhdGVnb3JpZXNcIjtcclxuaW1wb3J0IHsgU29mdExhYmVsQ29uZmlndXJhdGlvbk1vZGVsIH0gZnJvbSBcIi4uLy4uL21vZGVscy9zb2Z0bGFiZWxzLW1vZGVsXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiBcImFwcC1zaWRlYmFyXCIsXHJcbiAgICB0ZW1wbGF0ZVVybDogXCIuL3NpZGUtYmFyLmNvbXBvbmVudC5odG1sXCJcclxufSlcclxuZXhwb3J0IGNsYXNzIFNpZGVCYXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gICAgLyoqIG1lbnUgaXRlbXMgb2JzZXJ2YWJsZSAqL1xyXG4gICAgbWVudUl0ZW1zJDogT2JzZXJ2YWJsZTxJTWVudUl0ZW1bXT47XHJcbiAgICAvKiogaW5kZXggb2Ygc2VsZWN0ZWQgY2FyZCAqL1xyXG4gICAgc2VsZWN0ZWRSb3dJbmRleDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XHJcbiAgICAvKiogaW5kZXggb2YgaG92ZXJlZCBjYXJkICovXHJcbiAgICBzaG93QmFja0dyb3VuZENvbG9yOiBudW1iZXIgfCBudWxsID0gbnVsbDtcclxuICAgIC8qKiBzb2Z0IGxhYmVscyBmb3IgdHJhbnNsYXRpb25zICovXHJcbiAgICBzb2Z0TGFiZWxzOiBTb2Z0TGFiZWxDb25maWd1cmF0aW9uTW9kZWxbXSA9IFtdO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgc3RvcmU6IFN0b3JlPFN0YXRlPiwgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcikgeyB9XHJcblxyXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAgICAgLy8gbG9hZCBzb2Z0IGxhYmVsIHRyYW5zbGF0aW9uc1xyXG4gICAgICAgIGNvbnN0IHN0b3JlZExhYmVscyA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiU29mdExhYmVsc1wiKTtcclxuICAgICAgICB0aGlzLnNvZnRMYWJlbHMgPSBzdG9yZWRMYWJlbHMgPyBKU09OLnBhcnNlKHN0b3JlZExhYmVscykgOiBbXTtcclxuXHJcbiAgICAgICAgLy8gc2VsZWN0ICYgZmlsdGVyIHNpZGViYXIgbWVudSBpdGVtcyBmcm9tIHN0b3JlXHJcbiAgICAgICAgdGhpcy5tZW51SXRlbXMkID0gdGhpcy5zdG9yZS5waXBlKFxyXG4gICAgICAgICAgICBzZWxlY3Qoc2hhcmVkUmVkdWNlcnMuZ2V0Q3VycmVudEFjdGl2ZU1lbnVDYXRlZ29yeU1lbnVJdGVtcyksXHJcbiAgICAgICAgICAgIG1hcCgobGlzdCkgPT5cclxuICAgICAgICAgICAgICAgIGxpc3QuZmlsdGVyKChpdGVtKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbWVudUxhYmVsID0gKGl0ZW0gYXMgYW55KS5tZW51Py50b0xvd2VyQ2FzZSgpIHx8IFwiXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RhdGUgPSBpdGVtLnN0YXRlPy50b0xvd2VyQ2FzZSgpIHx8IFwiXCI7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIC8vIEV4Y2x1ZGUgSFIsIHRyYWNrZXIgb3IgdW53YW50ZWQgaXRlbXNcclxuICAgICAgICAgICAgICAgICAgICBpZiAobWVudUxhYmVsID09PSBcImhyXCIgfHwgc3RhdGUuc3RhcnRzV2l0aChcImhybWFuYWdtZW50L2VtcGxveWVlbGlzdFwiKSkgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChtZW51TGFiZWwuaW5jbHVkZXMoXCJociBtYW5hZ21lbnRcIikgfHwgbWVudUxhYmVsLmluY2x1ZGVzKFwiaHIgbWFuYWdlbWVudFwiKSkgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChzdGF0ZS5zdGFydHNXaXRoKFwiaHJtYW5hZ21lbnRcIikgfHwgc3RhdGUuc3RhcnRzV2l0aChcImhybWRldGFpbHNcIikpIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAobWVudUxhYmVsLmluY2x1ZGVzKFwiYWN0aXZpdHkgdHJhY2tlclwiKSB8fCBzdGF0ZS5zdGFydHNXaXRoKFwiYWN0aXZpdHl0cmFja2VyXCIpKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICApLFxyXG4gICAgICAgICAgICB0YXAoKG1lbnVMaXN0KSA9PiB0aGlzLnJvdXRlckFjdGl2ZShtZW51TGlzdCkpXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgLy8gZGlzcGF0Y2ggbG9hZCBldmVudFxyXG4gICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IEdldEFsbE1lbnVJdGVtc1RyaWdnZXJlZChNZW51Q2F0ZWdvcmllcy5NYWluKSk7XHJcblxyXG4gICAgICAgIC8vIGxpc3RlbiBmb3Igcm91dGUgY2hhbmdlcyB0byB1cGRhdGUgaGlnaGxpZ2h0XHJcbiAgICAgICAgdGhpcy5yb3V0ZXIuZXZlbnRzLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcclxuICAgICAgICAgICAgaWYgKGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5tZW51SXRlbXMkLnN1YnNjcmliZSgobGlzdCkgPT4gdGhpcy5yb3V0ZXJBY3RpdmUobGlzdCkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIGhpZ2hsaWdodHMgdGhlIGFjdGl2ZSBjYXJkIGFjY29yZGluZyB0byBjdXJyZW50IHJvdXRlICovXHJcbiAgICBwcml2YXRlIHJvdXRlckFjdGl2ZShtZW51TGlzdDogSU1lbnVJdGVtW10pOiB2b2lkIHtcclxuICAgICAgICBpZiAoIW1lbnVMaXN0Py5sZW5ndGgpIHJldHVybjtcclxuXHJcbiAgICAgICAgY29uc3QgZm91bmRJbmRleCA9IG1lbnVMaXN0LmZpbmRJbmRleCgoaSkgPT4gdGhpcy5yb3V0ZXIudXJsID09PSBcIi9cIiArIGkuc3RhdGUpO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IGZvdW5kSW5kZXggPj0gMCA/IGZvdW5kSW5kZXggOiBudWxsO1xyXG5cclxuICAgICAgICAvLyBIaWdobGlnaHQgcmVwb3J0IGNhcmQgd2hlbiBpbnNpZGUgYW55IGRhc2hib2FyZCByb3V0ZVxyXG4gICAgICAgIGlmICh0aGlzLnJvdXRlci51cmwuc3RhcnRzV2l0aChcIi9kYXNoYm9hcmQtbWFuYWdlbWVudC9kYXNoYm9hcmRcIikpIHtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gOTk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKiBob3ZlciBlbnRlciAqL1xyXG4gICAgZW50ZXIoaW5kZXg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuc2hvd0JhY2tHcm91bmRDb2xvciA9IGluZGV4O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBob3ZlciBsZWF2ZSAqL1xyXG4gICAgbGVhdmUoaW5kZXg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLnNob3dCYWNrR3JvdW5kQ29sb3IgPT09IGluZGV4KSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2hvd0JhY2tHcm91bmRDb2xvciA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKiB3aGVuIGNsaWNraW5nIG9uIGR5bmFtaWMgbWVudSBjYXJkICovXHJcbiAgICBzZWxlY3RNZW51KGluZGV4OiBudW1iZXIsIGxpbms/OiBzdHJpbmcpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSBpbmRleDtcclxuICAgICAgICBpZiAobGluaykge1xyXG4gICAgICAgICAgICAvLyBlbnN1cmUgZm9yd2FyZCBzbGFzaFxyXG4gICAgICAgICAgICBjb25zdCBwYXRoID0gbGluay5zdGFydHNXaXRoKFwiL1wiKSA/IGxpbmsgOiBcIi9cIiArIGxpbms7XHJcbiAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtwYXRoXSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKiBvcGVuIHJlcG9ydCBkYXNoYm9hcmQtbWFuYWdlbWVudC9kYXNoYm9hcmQvOmlkIG9yIHJvb3QgKi9cclxuICAgIGdvVG9SZXBvcnQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gOTk7XHJcblxyXG4gICAgICAgIGNvbnN0IHN0b3JlZCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiRGVmYXVsdERhc2hib2FyZFwiKTtcclxuICAgICAgICBjb25zdCBkZWZhdWx0RGFzaGJvYXJkSWQgPSBzdG9yZWQgPyBKU09OLnBhcnNlKHN0b3JlZCkgOiBudWxsO1xyXG5cclxuICAgICAgICBpZiAoZGVmYXVsdERhc2hib2FyZElkKSB7XHJcbiAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtgL2Rhc2hib2FyZC1tYW5hZ2VtZW50L2Rhc2hib2FyZC8ke2RlZmF1bHREYXNoYm9hcmRJZH1gXSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW1wiL2Rhc2hib2FyZC1tYW5hZ2VtZW50XCJdKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiIHN0eWxlPVwid2lkdGg6MTAwdnc7IGhlaWdodDpjYWxjKDEwMHZoIC0gNjBweCk7IHBhZGRpbmc6MzBweDsgb3ZlcmZsb3c6YXV0bztcclxuICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHJnYmEoMjU1LDI1NSwyNTUsMC43KSwgcmdiYSgyNTUsMjU1LDI1NSwwLjcpKTtcIj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwicm93IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCIgc3R5bGU9XCJoZWlnaHQ6YXV0bztcIj5cclxuXHJcbiAgICAgICAgPCEtLSBGaXhlZCBSZXBvcnQgQ2FyZCAtLT5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTYgY29sLW1kLTMgbWItNFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZCBjdXJzb3ItcG9pbnRlclwiIHN0eWxlPVwiaGVpZ2h0OjE1MHB4OyBib3JkZXItcmFkaXVzOjEycHg7IHRyYW5zaXRpb246YWxsIDAuM3MgZWFzZTtcclxuICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6I2ZmZjsgYm94LXNoYWRvdzowIDJweCA2cHggcmdiYSgwLDAsMCwwLjA4KTtcclxuICAgICAgICAgICAgICAgICAgICAgIGJvcmRlcjoycHggc29saWQgcmdiYSgyNDEsIDg4LCAxMiwgMC4yNSk7XCIgKG1vdXNlZW50ZXIpPVwiZW50ZXIoOTkpXCIgKG1vdXNlbGVhdmUpPVwibGVhdmUoOTkpXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJnb1RvUmVwb3J0KClcIiBbbmdTdHlsZV09XCIoc2VsZWN0ZWRSb3dJbmRleCA9PSA5OSB8fCBzaG93QmFja0dyb3VuZENvbG9yID09IDk5KSAmJiB7XHJcbiAgICAgICAgICAgICAgICAgJ2JhY2tncm91bmQtY29sb3InOicjZmZmJyxcclxuICAgICAgICAgICAgICAgICAnYm9yZGVyJzonMnB4IHNvbGlkICNmMTU4MGMnLFxyXG4gICAgICAgICAgICAgICAgICdib3gtc2hhZG93JzonMCA2cHggMjBweCByZ2JhKDI0MSwgODgsIDEyLCAwLjM1KSwgMCAwIDEwcHggcmdiYSgyNDEsIDg4LCAxMiwgMC4yNSknXHJcbiAgICAgICAgICAgICAgIH1cIj5cclxuXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IGQtZmxleCBmbGV4LWNvbHVtbiBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBzdHlsZT1cImZvbnQtc2l6ZTo0MHB4OyBtYXJnaW4tYm90dG9tOjEwcHg7IHdpZHRoOjQ4cHg7IGhlaWdodDo0OHB4O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTpmbGV4OyBhbGlnbi1pdGVtczpjZW50ZXI7IGp1c3RpZnktY29udGVudDpjZW50ZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCgxMzVkZWcsI2Y3OWE2YiwjZjE1ODBjKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC13ZWJraXQtYmFja2dyb3VuZC1jbGlwOnRleHQ7IC13ZWJraXQtdGV4dC1maWxsLWNvbG9yOnRyYW5zcGFyZW50O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jbGlwOnRleHQ7IHRleHQtZmlsbC1jb2xvcjp0cmFuc3BhcmVudDtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXNzbWVudFxyXG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgPGg2IHN0eWxlPVwiZm9udC1zaXplOjE0cHg7IG1hcmdpbjowOyBjb2xvcjojMTExODI3OyB0ZXh0LWFsaWduOmNlbnRlcjtcIj5SZXBvcnQ8L2g2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICAgICAgPCEtLSBEeW5hbWljIE1lbnUgQ2FyZHMgLS0+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02IGNvbC1tZC0zIG1iLTRcIiAqbmdGb3I9XCJsZXQgaXRlbSBvZiAobWVudUl0ZW1zJCB8IGFzeW5jKTsgbGV0IGkgPSBpbmRleDtcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQgY3Vyc29yLXBvaW50ZXJcIiBzdHlsZT1cImhlaWdodDoxNTBweDsgYm9yZGVyLXJhZGl1czoxMnB4OyB0cmFuc2l0aW9uOmFsbCAwLjNzIGVhc2U7XHJcbiAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6I2ZmZjsgYm94LXNoYWRvdzowIDJweCA2cHggcmdiYSgwLDAsMCwwLjA4KTtcclxuICAgICAgICAgICAgICAgICAgYm9yZGVyOjJweCBzb2xpZCByZ2JhKDI0MSwgODgsIDEyLCAwLjI1KTtcIiAobW91c2VlbnRlcik9XCJlbnRlcihpKVwiIChtb3VzZWxlYXZlKT1cImxlYXZlKGkpXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RNZW51KGksIGl0ZW0uc3RhdGUpXCIgW25nU3R5bGVdPVwiKHNlbGVjdGVkUm93SW5kZXggPT0gaSB8fCBzaG93QmFja0dyb3VuZENvbG9yID09IGkpICYmIHtcclxuICAgICAgICAgICAgICAnYmFja2dyb3VuZC1jb2xvcic6JyNmZmYnLFxyXG4gICAgICAgICAgICAgICdib3JkZXInOicycHggc29saWQgI2YxNTgwYycsXHJcbiAgICAgICAgICAgICAgJ2JveC1zaGFkb3cnOicwIDZweCAyMHB4IHJnYmEoMjQxLCA4OCwgMTIsIDAuMzUpLCAwIDAgMTBweCByZ2JhKDI0MSwgODgsIDEyLCAwLjI1KSdcclxuICAgICAgICAgICB9XCI+XHJcblxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBkLWZsZXggZmxleC1jb2x1bW4gYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSBOb3JtYWwgbGluayAvIGFwcGxpY2F0aW9uIGxpbmsgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIml0ZW0udHlwZSA9PT0gJ2xpbmsnIHx8IGl0ZW0udHlwZSA9PT0gJ2FwcGxpY2F0aW9ubGluaydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIHN0eWxlPVwiZm9udC1zaXplOjQwcHg7IG1hcmdpbi1ib3R0b206MTBweDsgd2lkdGg6NDhweDsgaGVpZ2h0OjQ4cHg7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTpmbGV4OyBhbGlnbi1pdGVtczpjZW50ZXI7IGp1c3RpZnktY29udGVudDpjZW50ZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCNmNzlhNmIsI2YxNTgwYyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLXdlYmtpdC1iYWNrZ3JvdW5kLWNsaXA6dGV4dDsgLXdlYmtpdC10ZXh0LWZpbGwtY29sb3I6dHJhbnNwYXJlbnQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jbGlwOnRleHQ7IHRleHQtZmlsbC1jb2xvcjp0cmFuc3BhcmVudDtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0uaWNvbiB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aDYgc3R5bGU9XCJmb250LXNpemU6MTRweDsgbWFyZ2luOjA7IGNvbG9yOiMxMTE4Mjc7IHRleHQtYWxpZ246Y2VudGVyO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaXRlbS5tZW51ID8gKGl0ZW0ubWVudSB8IHNvZnRMYWJlbHNQaXBlIDogc29mdExhYmVscykgOiAoaXRlbS5uYW1lIHwgdHJhbnNsYXRlKSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2g2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIEV4dGVybmFsIGxpbmsgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIml0ZW0udHlwZSA9PT0gJ2V4dExpbmsnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxhIFtocmVmXT1cIml0ZW0uc3RhdGVcIiB0YXJnZXQ9XCJfYmxhbmtcIiBjbGFzcz1cInctMTAwIGQtZmxleCBmbGV4LWNvbHVtbiBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBzdHlsZT1cImZvbnQtc2l6ZTo0MHB4OyBtYXJnaW4tYm90dG9tOjEwcHg7IHdpZHRoOjQ4cHg7IGhlaWdodDo0OHB4O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTpmbGV4OyBhbGlnbi1pdGVtczpjZW50ZXI7IGp1c3RpZnktY29udGVudDpjZW50ZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCgxMzVkZWcsI2Y3OWE2YiwjZjE1ODBjKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC13ZWJraXQtYmFja2dyb3VuZC1jbGlwOnRleHQ7IC13ZWJraXQtdGV4dC1maWxsLWNvbG9yOnRyYW5zcGFyZW50O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jbGlwOnRleHQ7IHRleHQtZmlsbC1jb2xvcjp0cmFuc3BhcmVudDtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtLmljb24gfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDYgc3R5bGU9XCJmb250LXNpemU6MTRweDsgbWFyZ2luOjA7IGNvbG9yOiMxMTE4Mjc7IHRleHQtYWxpZ246Y2VudGVyO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0ubWVudSA/IChpdGVtLm1lbnUgfCBzb2Z0TGFiZWxzUGlwZSA6IHNvZnRMYWJlbHMpIDogKGl0ZW0ubmFtZSB8IHRyYW5zbGF0ZSkgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaDY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSBCYWRnZXMgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIml0ZW0uYmFkZ2VzPy5sZW5ndGhcIiBjbGFzcz1cIm10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nRm9yPVwibGV0IGJhZGdlIG9mIGl0ZW0uYmFkZ2VzXCIgY2xhc3M9XCJiYWRnZSByb3VuZGVkLXBpbGxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwieyBiYWNrZ3JvdW5kOiBiYWRnZS5jb2xvciB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBiYWRnZS52YWx1ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PiJdfQ==
|